@sonzai-labs/agents 1.0.3 → 1.0.7

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/errors.ts","../src/http.ts","../src/resources/custom-states.ts","../src/resources/generation.ts","../src/resources/instances.ts","../src/resources/memory.ts","../src/resources/notifications.ts","../src/resources/personality.ts","../src/resources/sessions.ts","../src/resources/inventory.ts","../src/resources/priming.ts","../src/resources/voice.ts","../src/resources/agents.ts","../src/resources/custom-llm.ts","../src/resources/eval-runs.ts","../src/resources/eval-templates.ts","../src/resources/knowledge.ts","../src/resources/project-config.ts","../src/resources/project-notifications.ts","../src/resources/webhooks.ts","../src/client.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["export class SonzaiError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"SonzaiError\";\n }\n}\n\nexport class AuthenticationError extends SonzaiError {\n constructor(message = \"Invalid or missing API key\") {\n super(message);\n this.name = \"AuthenticationError\";\n }\n}\n\nexport class NotFoundError extends SonzaiError {\n constructor(message: string) {\n super(message);\n this.name = \"NotFoundError\";\n }\n}\n\nexport class BadRequestError extends SonzaiError {\n constructor(message: string) {\n super(message);\n this.name = \"BadRequestError\";\n }\n}\n\nexport class PermissionDeniedError extends SonzaiError {\n constructor(message: string) {\n super(message);\n this.name = \"PermissionDeniedError\";\n }\n}\n\nexport class RateLimitError extends SonzaiError {\n retryAfter?: number;\n\n constructor(message: string, retryAfter?: number) {\n super(message);\n this.name = \"RateLimitError\";\n this.retryAfter = retryAfter;\n }\n}\n\nexport class InternalServerError extends SonzaiError {\n constructor(message: string) {\n super(message);\n this.name = \"InternalServerError\";\n }\n}\n\nexport class APIError extends SonzaiError {\n statusCode: number;\n\n constructor(statusCode: number, message: string) {\n super(`[${statusCode}] ${message}`);\n this.name = \"APIError\";\n this.statusCode = statusCode;\n }\n}\n\nexport class StreamError extends SonzaiError {\n constructor(message: string) {\n super(message);\n this.name = \"StreamError\";\n }\n}\n","import {\n APIError,\n AuthenticationError,\n BadRequestError,\n InternalServerError,\n NotFoundError,\n PermissionDeniedError,\n RateLimitError,\n SonzaiError,\n} from \"./errors.js\";\n\nexport interface HTTPClientOptions {\n baseUrl: string;\n apiKey: string;\n timeout: number;\n maxRetries: number;\n}\n\nexport class HTTPClient {\n private readonly baseUrl: string;\n private readonly headers: Record<string, string>;\n private readonly timeout: number;\n private readonly maxRetries: number;\n\n constructor(options: HTTPClientOptions) {\n this.baseUrl = options.baseUrl.replace(/\\/$/, \"\");\n this.headers = {\n Authorization: `Bearer ${options.apiKey}`,\n \"Content-Type\": \"application/json\",\n \"User-Agent\": \"sonzai-typescript/1.13.0\",\n };\n this.timeout = options.timeout;\n this.maxRetries = options.maxRetries;\n }\n\n async request<T = unknown>(\n method: string,\n path: string,\n options?: {\n body?: Record<string, unknown>;\n params?: Record<string, string | number | boolean | undefined>;\n },\n ): Promise<T> {\n const url = this.buildUrl(path, options?.params);\n const isIdempotent = method === \"GET\" || method === \"DELETE\";\n const maxAttempts = isIdempotent ? this.maxRetries + 1 : 1;\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), this.timeout);\n\n try {\n const response = await fetch(url, {\n method,\n headers: this.headers,\n body: options?.body ? JSON.stringify(options.body) : undefined,\n signal: controller.signal,\n });\n\n // Retry on 5xx for idempotent methods\n if (response.status >= 500 && isIdempotent && attempt < maxAttempts - 1) {\n clearTimeout(timer);\n await this.backoff(attempt);\n continue;\n }\n\n await this.throwOnError(response);\n\n const contentType = response.headers.get(\"content-type\") ?? \"\";\n if (contentType.includes(\"application/json\")) {\n return (await response.json()) as T;\n }\n return (await response.text()) as T;\n } catch (error) {\n clearTimeout(timer);\n // Retry on network errors for idempotent methods\n if (isIdempotent && attempt < maxAttempts - 1 && this.isNetworkError(error)) {\n await this.backoff(attempt);\n continue;\n }\n throw error;\n } finally {\n clearTimeout(timer);\n }\n }\n\n // Unreachable, but satisfies TypeScript\n throw new InternalServerError(\"Max retries exceeded\");\n }\n\n private async backoff(attempt: number): Promise<void> {\n const delay = Math.min(1000 * 2 ** attempt, 10000) + Math.random() * 500;\n await new Promise((resolve) => setTimeout(resolve, delay));\n }\n\n private isNetworkError(error: unknown): boolean {\n if (error instanceof SonzaiError) return false;\n return (\n error instanceof TypeError ||\n (error instanceof DOMException && error.name === \"AbortError\")\n );\n }\n\n async get<T = unknown>(\n path: string,\n params?: Record<string, string | number | boolean | undefined>,\n ): Promise<T> {\n return this.request<T>(\"GET\", path, { params });\n }\n\n async post<T = unknown>(\n path: string,\n body?: Record<string, unknown>,\n params?: Record<string, string | number | boolean | undefined>,\n ): Promise<T> {\n return this.request<T>(\"POST\", path, { body, params });\n }\n\n async put<T = unknown>(\n path: string,\n body?: Record<string, unknown>,\n ): Promise<T> {\n return this.request<T>(\"PUT\", path, { body });\n }\n\n async patch<T = unknown>(\n path: string,\n body?: Record<string, unknown>,\n ): Promise<T> {\n return this.request<T>(\"PATCH\", path, { body });\n }\n\n async delete<T = unknown>(\n path: string,\n params?: Record<string, string | number | boolean | undefined>,\n ): Promise<T> {\n return this.request<T>(\"DELETE\", path, { params });\n }\n\n async *streamSSE(\n method: string,\n path: string,\n body?: Record<string, unknown>,\n ): AsyncGenerator<Record<string, unknown>> {\n const url = this.buildUrl(path);\n\n const controller = new AbortController();\n // Longer timeout for streaming\n const timer = setTimeout(() => controller.abort(), this.timeout * 10);\n\n try {\n const response = await fetch(url, {\n method,\n headers: {\n ...this.headers,\n Accept: \"text/event-stream\",\n },\n body: body ? JSON.stringify(body) : undefined,\n signal: controller.signal,\n });\n\n await this.throwOnError(response);\n\n if (!response.body) {\n return;\n }\n\n const reader = response.body.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split(\"\\n\");\n // Keep the last incomplete line in the buffer\n buffer = lines.pop() ?? \"\";\n\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed) continue;\n if (trimmed === \"data: [DONE]\") return;\n if (trimmed.startsWith(\"data: \")) {\n try {\n yield JSON.parse(trimmed.slice(6));\n } catch (e) {\n console.warn(\n \"[sonzai-sdk] Malformed SSE JSON event skipped:\",\n trimmed.slice(6),\n e,\n );\n }\n }\n }\n }\n\n // Process remaining buffer\n if (buffer.trim()) {\n const trimmed = buffer.trim();\n if (trimmed === \"data: [DONE]\") return;\n if (trimmed.startsWith(\"data: \")) {\n try {\n yield JSON.parse(trimmed.slice(6));\n } catch (e) {\n console.warn(\n \"[sonzai-sdk] Malformed SSE JSON event skipped:\",\n trimmed.slice(6),\n e,\n );\n }\n }\n }\n } finally {\n await reader.cancel();\n }\n } finally {\n clearTimeout(timer);\n }\n }\n\n private buildUrl(\n path: string,\n params?: Record<string, string | number | boolean | undefined>,\n ): string {\n const url = new URL(path, this.baseUrl);\n if (params) {\n for (const [key, value] of Object.entries(params)) {\n if (value !== undefined) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n return url.toString();\n }\n\n private async throwOnError(response: Response): Promise<void> {\n if (response.ok) return;\n\n let message: string;\n try {\n const body = (await response.json()) as { error?: string };\n message = body.error ?? response.statusText;\n } catch {\n try {\n message = await response.text();\n } catch {\n message = response.statusText;\n }\n }\n\n const status = response.status;\n switch (status) {\n case 401:\n throw new AuthenticationError(message);\n case 403:\n throw new PermissionDeniedError(message);\n case 404:\n throw new NotFoundError(message);\n case 400:\n throw new BadRequestError(message);\n case 429: {\n const retryAfterRaw = response.headers.get(\"Retry-After\");\n const retryAfter = retryAfterRaw ? Number(retryAfterRaw) : undefined;\n throw new RateLimitError(\n message,\n retryAfter && !Number.isNaN(retryAfter) ? retryAfter : undefined,\n );\n }\n default:\n if (status >= 500) throw new InternalServerError(message);\n throw new APIError(status, message);\n }\n }\n}\n","import type { HTTPClient } from \"../http.js\";\nimport type {\n CustomState,\n CustomStateCreateOptions,\n CustomStateDeleteByKeyOptions,\n CustomStateGetByKeyOptions,\n CustomStateListOptions,\n CustomStateListResponse,\n CustomStateUpdateOptions,\n CustomStateUpsertOptions,\n} from \"../types.js\";\n\n/** Custom state operations for agents. */\nexport class CustomStates {\n constructor(private readonly http: HTTPClient) {}\n\n /** List custom states for an agent. */\n async list(\n agentId: string,\n options: CustomStateListOptions = {},\n ): Promise<CustomStateListResponse> {\n return this.http.get<CustomStateListResponse>(\n `/api/v1/agents/${agentId}/custom-states`,\n {\n scope: options.scope,\n user_id: options.userId,\n instance_id: options.instanceId,\n },\n );\n }\n\n /** Create a new custom state. */\n async create(\n agentId: string,\n options: CustomStateCreateOptions,\n ): Promise<CustomState> {\n const body: Record<string, unknown> = {\n key: options.key,\n value: options.value,\n };\n if (options.scope) body.scope = options.scope;\n if (options.contentType) body.content_type = options.contentType;\n if (options.userId) body.user_id = options.userId;\n if (options.instanceId) body.instance_id = options.instanceId;\n\n return this.http.post<CustomState>(\n `/api/v1/agents/${agentId}/custom-states`,\n body,\n );\n }\n\n /** Update a custom state. */\n async update(\n agentId: string,\n stateId: string,\n options: CustomStateUpdateOptions,\n ): Promise<CustomState> {\n const body: Record<string, unknown> = { value: options.value };\n if (options.contentType) body.content_type = options.contentType;\n\n return this.http.put<CustomState>(\n `/api/v1/agents/${agentId}/custom-states/${stateId}`,\n body,\n );\n }\n\n /** Delete a custom state. */\n async delete(agentId: string, stateId: string): Promise<void> {\n await this.http.delete(\n `/api/v1/agents/${agentId}/custom-states/${stateId}`,\n );\n }\n\n /** Create or update a custom state by composite key (key + scope + userId + instanceId). */\n async upsert(\n agentId: string,\n options: CustomStateUpsertOptions,\n ): Promise<CustomState> {\n const body: Record<string, unknown> = {\n key: options.key,\n value: options.value,\n };\n if (options.scope) body.scope = options.scope;\n if (options.contentType) body.content_type = options.contentType;\n if (options.userId) body.user_id = options.userId;\n if (options.instanceId) body.instance_id = options.instanceId;\n\n return this.http.put<CustomState>(\n `/api/v1/agents/${agentId}/custom-states/by-key`,\n body,\n );\n }\n\n /** Get a custom state by its composite key. */\n async getByKey(\n agentId: string,\n options: CustomStateGetByKeyOptions,\n ): Promise<CustomState> {\n return this.http.get<CustomState>(\n `/api/v1/agents/${agentId}/custom-states/by-key`,\n {\n key: options.key,\n scope: options.scope,\n user_id: options.userId,\n instance_id: options.instanceId,\n },\n );\n }\n\n /** Delete a custom state by its composite key. */\n async deleteByKey(\n agentId: string,\n options: CustomStateDeleteByKeyOptions,\n ): Promise<void> {\n await this.http.delete(\n `/api/v1/agents/${agentId}/custom-states/by-key`,\n {\n key: options.key,\n scope: options.scope,\n user_id: options.userId,\n instance_id: options.instanceId,\n },\n );\n }\n}\n","import type { HTTPClient } from \"../http.js\";\nimport type {\n GenerateAndCreateOptions,\n GenerateAndCreateResponse,\n GenerateBioOptions,\n GenerateBioResponse,\n GenerateCharacterOptions,\n GenerateCharacterResponse,\n GenerateSeedMemoriesOptions,\n GenerateSeedMemoriesResponse,\n ImageGenerateOptions,\n ImageGenerateResponse,\n} from \"../types.js\";\n\n/** AI content generation operations for agents. */\nexport class Generation {\n constructor(private readonly http: HTTPClient) {}\n\n /** Generate a bio for an agent using AI. */\n async generateBio(\n agentId: string,\n options: GenerateBioOptions = {},\n ): Promise<GenerateBioResponse> {\n const body: Record<string, unknown> = {};\n if (options.name) body.name = options.name;\n if (options.gender) body.gender = options.gender;\n if (options.description) body.description = options.description;\n if (options.userId) body.user_id = options.userId;\n if (options.enrichedContextJson)\n body.enriched_context_json = options.enrichedContextJson;\n if (options.currentBio) body.current_bio = options.currentBio;\n if (options.style) body.style = options.style;\n if (options.instanceId) body.instance_id = options.instanceId;\n\n return this.http.post<GenerateBioResponse>(\n `/api/v1/agents/${agentId}/bio/generate`,\n body,\n );\n }\n\n /** Generate a full character profile from a description.\n * If an agent with the resolved ID already exists, the LLM is skipped and the existing profile is returned.\n */\n async generateCharacter(\n options: GenerateCharacterOptions,\n ): Promise<GenerateCharacterResponse> {\n const body: Record<string, unknown> = { name: options.name };\n if (options.agentId) body.agent_id = options.agentId;\n if (options.gender) body.gender = options.gender;\n if (options.description) body.description = options.description;\n if (options.fields) body.fields = options.fields;\n\n return this.http.post<GenerateCharacterResponse>(\n \"/api/v1/agents/generate-character\",\n body,\n );\n }\n\n /** Generate a character and create the agent in one idempotent call.\n * If the agent already exists, the LLM is skipped and the existing agent is returned.\n * Safe to call on every app startup.\n */\n async generateAndCreate(\n options: GenerateAndCreateOptions,\n ): Promise<GenerateAndCreateResponse> {\n const body: Record<string, unknown> = { name: options.name };\n if (options.agentId) body.agent_id = options.agentId;\n if (options.gender) body.gender = options.gender;\n if (options.description) body.description = options.description;\n if (options.fields) body.fields = options.fields;\n if (options.projectId) body.project_id = options.projectId;\n if (options.language) body.language = options.language;\n\n return this.http.post<GenerateAndCreateResponse>(\n \"/api/v1/agents/generate-and-create\",\n body,\n );\n }\n\n /** Generate seed memories for an agent using AI. */\n async generateSeedMemories(\n agentId: string,\n options: GenerateSeedMemoriesOptions = {},\n ): Promise<GenerateSeedMemoriesResponse> {\n const body: Record<string, unknown> = {};\n if (options.userId) body.user_id = options.userId;\n if (options.agentName) body.agentName = options.agentName;\n if (options.big5) body.big5 = options.big5;\n if (options.personalityPrompt)\n body.personalityPrompt = options.personalityPrompt;\n if (options.guideSummary) body.guide_summary = options.guideSummary;\n if (options.trueInterests) body.trueInterests = options.trueInterests;\n if (options.trueDislikes) body.trueDislikes = options.trueDislikes;\n if (options.speechPatterns) body.speechPatterns = options.speechPatterns;\n if (options.creatorDisplayName)\n body.creatorDisplayName = options.creatorDisplayName;\n if (options.staticLoreMemories)\n body.staticLoreMemories = options.staticLoreMemories;\n if (options.loreGenerationContext)\n body.loreGenerationContext = options.loreGenerationContext;\n if (options.identityMemoryTemplates)\n body.identityMemoryTemplates = options.identityMemoryTemplates;\n if (options.generateOriginStory != null)\n body.generateOriginStory = options.generateOriginStory;\n if (options.generatePersonalizedMemories != null)\n body.generatePersonalizedMemories = options.generatePersonalizedMemories;\n if (options.storeMemories != null)\n body.store_memories = options.storeMemories;\n\n return this.http.post<GenerateSeedMemoriesResponse>(\n `/api/v1/agents/${agentId}/memory/seed`,\n body,\n );\n }\n\n /** Generate an image using the agent's context. */\n async generateImage(\n agentId: string,\n options: ImageGenerateOptions,\n ): Promise<ImageGenerateResponse> {\n const body: Record<string, unknown> = { prompt: options.prompt };\n if (options.negativePrompt) body.negative_prompt = options.negativePrompt;\n if (options.model) body.model = options.model;\n if (options.provider) body.provider = options.provider;\n\n return this.http.post<ImageGenerateResponse>(\n `/api/v1/agents/${agentId}/image/generate`,\n body,\n );\n }\n}\n","import type { HTTPClient } from \"../http.js\";\nimport type {\n AgentInstance,\n InstanceCreateOptions,\n InstanceListResponse,\n SessionResponse,\n UpdateInstanceOptions,\n} from \"../types.js\";\n\nexport class Instances {\n constructor(private readonly http: HTTPClient) {}\n\n /** List all instances for an agent. */\n async list(agentId: string): Promise<InstanceListResponse> {\n return this.http.get<InstanceListResponse>(\n `/api/v1/agents/${agentId}/instances`,\n );\n }\n\n /** Create a new agent instance. */\n async create(\n agentId: string,\n options: InstanceCreateOptions,\n ): Promise<AgentInstance> {\n const body: Record<string, unknown> = { name: options.name };\n if (options.description) body.description = options.description;\n\n return this.http.post<AgentInstance>(\n `/api/v1/agents/${agentId}/instances`,\n body,\n );\n }\n\n /** Get a specific instance. */\n async get(agentId: string, instanceId: string): Promise<AgentInstance> {\n return this.http.get<AgentInstance>(\n `/api/v1/agents/${agentId}/instances/${instanceId}`,\n );\n }\n\n /** Delete an instance. */\n async delete(agentId: string, instanceId: string): Promise<SessionResponse> {\n return this.http.delete<SessionResponse>(\n `/api/v1/agents/${agentId}/instances/${instanceId}`,\n );\n }\n\n /** Reset an instance (clears all context data). */\n async reset(agentId: string, instanceId: string): Promise<AgentInstance> {\n return this.http.post<AgentInstance>(\n `/api/v1/agents/${agentId}/instances/${instanceId}/reset`,\n );\n }\n\n /** Update an instance's name, description, or status. */\n async update(agentId: string, instanceId: string, options: UpdateInstanceOptions): Promise<AgentInstance> {\n return this.http.patch<AgentInstance>(`/api/v1/agents/${agentId}/instances/${instanceId}`, options as unknown as Record<string, unknown>);\n }\n}\n","import type { HTTPClient } from \"../http.js\";\nimport type {\n FactHistoryResponse,\n FactListOptions,\n FactListResponse,\n MemoryListOptions,\n MemoryResetOptions,\n MemoryResetResponse,\n MemoryResponse,\n MemorySearchOptions,\n MemorySearchResponse,\n MemoryTimelineOptions,\n MemoryTimelineResponse,\n SeedMemoriesOptions,\n SeedMemoriesResponse,\n} from \"../types.js\";\n\nexport class Memory {\n constructor(private readonly http: HTTPClient) {}\n\n /** Get the memory tree for an agent. */\n async list(\n agentId: string,\n options: MemoryListOptions = {},\n ): Promise<MemoryResponse> {\n return this.http.get<MemoryResponse>(\n `/api/v1/agents/${agentId}/memory`,\n {\n user_id: options.userId,\n instance_id: options.instanceId,\n parent_id: options.parentId,\n include_contents: options.includeContents ? \"true\" : undefined,\n limit: options.limit,\n },\n );\n }\n\n /** Search agent memories. */\n async search(\n agentId: string,\n options: MemorySearchOptions,\n ): Promise<MemorySearchResponse> {\n return this.http.get<MemorySearchResponse>(\n `/api/v1/agents/${agentId}/memory/search`,\n {\n q: options.query,\n instance_id: options.instanceId,\n limit: options.limit,\n },\n );\n }\n\n /** Get memory timeline for an agent. */\n async timeline(\n agentId: string,\n options: MemoryTimelineOptions = {},\n ): Promise<MemoryTimelineResponse> {\n return this.http.get<MemoryTimelineResponse>(\n `/api/v1/agents/${agentId}/memory/timeline`,\n {\n user_id: options.userId,\n instance_id: options.instanceId,\n start: options.start,\n end: options.end,\n },\n );\n }\n\n /** Seed bulk memories for an agent. */\n async seed(\n agentId: string,\n options: SeedMemoriesOptions,\n ): Promise<SeedMemoriesResponse> {\n const body: Record<string, unknown> = {\n user_id: options.userId,\n memories: options.memories,\n };\n if (options.instanceId) body.instance_id = options.instanceId;\n\n return this.http.post<SeedMemoriesResponse>(\n `/api/v1/agents/${agentId}/memory/seed`,\n body,\n );\n }\n\n /** List extracted facts for an agent. */\n async listFacts(\n agentId: string,\n options: FactListOptions = {},\n ): Promise<FactListResponse> {\n return this.http.get<FactListResponse>(\n `/api/v1/agents/${agentId}/memory/facts`,\n {\n user_id: options.userId,\n category: options.category,\n limit: options.limit,\n offset: options.offset,\n },\n );\n }\n\n /** Reset (delete) all memory for an agent, optionally scoped to a user. */\n async reset(\n agentId: string,\n options: MemoryResetOptions = {},\n ): Promise<MemoryResetResponse> {\n return this.http.delete<MemoryResetResponse>(\n `/api/v1/agents/${agentId}/memory`,\n {\n user_id: options.userId,\n instance_id: options.instanceId,\n },\n );\n }\n\n /** Get the version history of a specific fact. */\n async getFactHistory(agentId: string, factId: string): Promise<FactHistoryResponse> {\n return this.http.get<FactHistoryResponse>(`/api/v1/agents/${agentId}/memory/fact/${factId}/history`);\n }\n}\n","import type { HTTPClient } from \"../http.js\";\nimport type {\n NotificationListOptions,\n NotificationListResponse,\n SessionResponse,\n} from \"../types.js\";\n\nexport class Notifications {\n constructor(private readonly http: HTTPClient) {}\n\n /** List notifications for an agent. */\n async list(\n agentId: string,\n options: NotificationListOptions = {},\n ): Promise<NotificationListResponse> {\n return this.http.get<NotificationListResponse>(\n `/api/v1/agents/${agentId}/notifications`,\n {\n status: options.status,\n user_id: options.userId,\n limit: options.limit,\n },\n );\n }\n\n /** Mark a notification as consumed. */\n async consume(\n agentId: string,\n messageId: string,\n ): Promise<SessionResponse> {\n return this.http.post<SessionResponse>(\n `/api/v1/agents/${agentId}/notifications/${messageId}/consume`,\n );\n }\n\n /** List notification history. */\n async history(\n agentId: string,\n options: { limit?: number } = {},\n ): Promise<NotificationListResponse> {\n return this.http.get<NotificationListResponse>(\n `/api/v1/agents/${agentId}/notifications/history`,\n { limit: options.limit },\n );\n }\n}\n","import type { HTTPClient } from \"../http.js\";\nimport type {\n BatchPersonalityResponse,\n PersonalityGetOptions,\n PersonalityResponse,\n PersonalityUpdateOptions,\n PersonalityUpdateResponse,\n RecentShiftsResponse,\n SignificantMomentsResponse,\n UserOverlayDetailResponse,\n UserOverlayOptions,\n UserOverlaysListResponse,\n} from \"../types.js\";\n\nexport class Personality {\n constructor(private readonly http: HTTPClient) {}\n\n /** Get personality profile and evolution history. */\n async get(\n agentId: string,\n options: PersonalityGetOptions = {},\n ): Promise<PersonalityResponse> {\n return this.http.get<PersonalityResponse>(\n `/api/v1/agents/${agentId}/personality`,\n {\n history_limit: options.historyLimit,\n since: options.since,\n },\n );\n }\n\n /** Update an agent's Big5 personality scores. */\n async update(\n agentId: string,\n options: PersonalityUpdateOptions,\n ): Promise<PersonalityUpdateResponse> {\n const body: Record<string, unknown> = { big5: options.big5 };\n if (options.assessmentMethod)\n body.assessment_method = options.assessmentMethod;\n if (options.totalExchanges)\n body.total_exchanges = options.totalExchanges;\n\n return this.http.put<PersonalityUpdateResponse>(\n `/api/v1/agents/${agentId}/personality`,\n body,\n );\n }\n\n /** Get personality profiles for multiple agents in a single request. */\n async batchGet(agentIds: string[]): Promise<BatchPersonalityResponse> {\n return this.http.post<BatchPersonalityResponse>(\"/api/v1/agents/personalities/batch\", { agent_ids: agentIds });\n }\n\n /** Get significant moments for an agent's personality evolution. */\n async getSignificantMoments(agentId: string, options?: { limit?: number }): Promise<SignificantMomentsResponse> {\n const params: Record<string, string> = {};\n if (options?.limit) params.limit = String(options.limit);\n return this.http.get<SignificantMomentsResponse>(`/api/v1/agents/${agentId}/personality/significant-moments`, params);\n }\n\n /** Get recent personality shifts for an agent. */\n async getRecentShifts(agentId: string): Promise<RecentShiftsResponse> {\n return this.http.get<RecentShiftsResponse>(`/api/v1/agents/${agentId}/personality/recent-shifts`);\n }\n\n /** List all user-specific personality overlays for an agent. */\n async listUserOverlays(agentId: string): Promise<UserOverlaysListResponse> {\n return this.http.get<UserOverlaysListResponse>(`/api/v1/agents/${agentId}/personality/users`);\n }\n\n /** Get a specific user's personality overlay for an agent. */\n async getUserOverlay(agentId: string, userId: string, options?: UserOverlayOptions): Promise<UserOverlayDetailResponse> {\n const params: Record<string, string> = {};\n if (options?.instanceId) params.instance_id = options.instanceId;\n if (options?.since) params.since = options.since;\n return this.http.get<UserOverlayDetailResponse>(`/api/v1/agents/${agentId}/personality/users/${userId}`, params);\n }\n}\n","import type { HTTPClient } from \"../http.js\";\nimport type {\n SessionEndOptions,\n SessionResponse,\n SessionStartOptions,\n ToolDefinition,\n} from \"../types.js\";\n\nexport class Sessions {\n constructor(private readonly http: HTTPClient) {}\n\n /** Start a chat session. */\n async start(\n agentId: string,\n options: SessionStartOptions,\n ): Promise<SessionResponse> {\n const body: Record<string, unknown> = {\n user_id: options.userId,\n session_id: options.sessionId,\n };\n if (options.instanceId) body.instance_id = options.instanceId;\n\n return this.http.post<SessionResponse>(\n `/api/v1/agents/${agentId}/sessions/start`,\n body,\n );\n }\n\n /** End a chat session. */\n async end(\n agentId: string,\n options: SessionEndOptions,\n ): Promise<SessionResponse> {\n const body: Record<string, unknown> = {\n user_id: options.userId,\n session_id: options.sessionId,\n total_messages: options.totalMessages ?? 0,\n duration_seconds: options.durationSeconds ?? 0,\n };\n if (options.instanceId) body.instance_id = options.instanceId;\n if (options.messages) body.messages = options.messages;\n\n return this.http.post<SessionResponse>(\n `/api/v1/agents/${agentId}/sessions/end`,\n body,\n );\n }\n\n /** Set the tools available for a specific session. */\n async setTools(agentId: string, sessionId: string, tools: ToolDefinition[]): Promise<SessionResponse> {\n return this.http.put<SessionResponse>(`/api/v1/agents/${agentId}/sessions/${sessionId}/tools`, tools as unknown as Record<string, unknown>);\n }\n}\n","import type { HTTPClient } from \"../http.js\";\nimport type {\n InventoryUpdateOptions,\n InventoryUpdateResponse,\n InventoryQueryOptions,\n InventoryQueryResponse,\n InventoryBatchImportOptions,\n InventoryBatchImportResponse,\n InventoryDirectUpdateOptions,\n InventoryDirectUpdateResponse,\n ListAllFactsOptions,\n ListAllFactsResponse,\n} from \"../types.js\";\n\n/** Inventory/asset tracking operations scoped to an agent + user. */\nexport class Inventory {\n constructor(private readonly http: HTTPClient) {}\n\n /**\n * Add, update, or remove an inventory item (agent tool flow).\n * When action is \"add\" and the KB description is ambiguous, returns\n * `status: \"disambiguation_needed\"` with candidate KB nodes.\n */\n async update(\n agentId: string,\n userId: string,\n options: InventoryUpdateOptions,\n instanceId?: string,\n ): Promise<InventoryUpdateResponse> {\n const params = instanceId ? { instance_id: instanceId } : undefined;\n return this.http.post<InventoryUpdateResponse>(\n `/api/v1/agents/${agentId}/users/${encodeURIComponent(userId)}/inventory`,\n options as unknown as Record<string, unknown>,\n params,\n );\n }\n\n /**\n * Query a user's inventory with optional KB-joined valuations and aggregation.\n * Modes: \"list\" (items only), \"value\" (items + market prices), \"aggregate\" (totals).\n */\n async query(\n agentId: string,\n userId: string,\n options: InventoryQueryOptions = {},\n ): Promise<InventoryQueryResponse> {\n const params: Record<string, string> = {};\n if (options.mode) params.mode = options.mode;\n if (options.item_type) params.item_type = options.item_type;\n if (options.query) params.query = options.query;\n if (options.project_id) params.project_id = options.project_id;\n if (options.aggregations) params.aggregations = options.aggregations;\n if (options.group_by) params.group_by = options.group_by;\n if (options.limit) params.limit = String(options.limit);\n if (options.instanceId) params.instance_id = options.instanceId;\n\n return this.http.get<InventoryQueryResponse>(\n `/api/v1/agents/${agentId}/users/${encodeURIComponent(userId)}/inventory`,\n params,\n );\n }\n\n /**\n * Batch-import inventory items (developer API).\n * Up to 1000 items per request.\n */\n async batchImport(\n agentId: string,\n userId: string,\n options: InventoryBatchImportOptions,\n instanceId?: string,\n ): Promise<InventoryBatchImportResponse> {\n const params = instanceId ? { instance_id: instanceId } : undefined;\n return this.http.post<InventoryBatchImportResponse>(\n `/api/v1/agents/${agentId}/users/${encodeURIComponent(userId)}/inventory/batch`,\n options as unknown as Record<string, unknown>,\n params,\n );\n }\n\n /**\n * Directly update an inventory fact's properties by fact ID (developer API).\n * Creates a superseding fact with merged properties.\n */\n async directUpdate(\n agentId: string,\n userId: string,\n factId: string,\n options: InventoryDirectUpdateOptions,\n instanceId?: string,\n ): Promise<InventoryDirectUpdateResponse> {\n let path = `/api/v1/agents/${agentId}/users/${encodeURIComponent(userId)}/inventory/${encodeURIComponent(factId)}`;\n if (instanceId) path += `?instance_id=${encodeURIComponent(instanceId)}`;\n return this.http.put<InventoryDirectUpdateResponse>(\n path,\n options as unknown as Record<string, unknown>,\n );\n }\n\n /**\n * Directly delete an inventory item by fact ID (developer API).\n * Creates a superseding fact with `removed: true`.\n */\n async directDelete(\n agentId: string,\n userId: string,\n factId: string,\n instanceId?: string,\n ): Promise<InventoryDirectUpdateResponse> {\n const params = instanceId ? { instance_id: instanceId } : undefined;\n return this.http.delete<InventoryDirectUpdateResponse>(\n `/api/v1/agents/${agentId}/users/${encodeURIComponent(userId)}/inventory/${encodeURIComponent(factId)}`,\n params,\n );\n }\n\n /**\n * List all active facts for an agent+user pair.\n * Supports filtering by metadata presence and item_type.\n * Bypasses the token-budgeted predictor — returns up to `limit` facts.\n */\n async listAllFacts(\n agentId: string,\n userId: string,\n options: ListAllFactsOptions = {},\n ): Promise<ListAllFactsResponse> {\n const params: Record<string, string> = {};\n if (options.has_metadata) params.has_metadata = \"true\";\n if (options.item_type) params[\"metadata.item_type\"] = options.item_type;\n if (options.limit) params.limit = String(options.limit);\n if (options.instanceId) params.instance_id = options.instanceId;\n\n return this.http.get<ListAllFactsResponse>(\n `/api/v1/agents/${agentId}/users/${encodeURIComponent(userId)}/facts`,\n params,\n );\n }\n}\n","import type { HTTPClient } from \"../http.js\";\nimport type {\n PrimeUserOptions,\n PrimeUserResponse,\n AddContentOptions,\n AddContentResponse,\n UserPrimingMetadata,\n UpdateMetadataOptions,\n UpdateMetadataResponse,\n BatchImportOptions,\n BatchImportResponse,\n ImportJob,\n ImportJobListResponse,\n} from \"../types.js\";\n\n/** User priming operations for agents. */\nexport class Priming {\n constructor(private readonly http: HTTPClient) {}\n\n /** Prime a user with metadata and content. Returns a job ID for async processing. */\n async primeUser(\n agentId: string,\n userId: string,\n options: PrimeUserOptions,\n ): Promise<PrimeUserResponse> {\n return this.http.post<PrimeUserResponse>(\n `/api/v1/agents/${agentId}/users/${encodeURIComponent(userId)}/prime`,\n options as unknown as Record<string, unknown>,\n );\n }\n\n /** Get the status of a priming job. */\n async getPrimeStatus(\n agentId: string,\n userId: string,\n jobId: string,\n ): Promise<ImportJob> {\n return this.http.get<ImportJob>(\n `/api/v1/agents/${agentId}/users/${encodeURIComponent(userId)}/prime/${jobId}`,\n );\n }\n\n /** Add content blocks for async LLM extraction. */\n async addContent(\n agentId: string,\n userId: string,\n options: AddContentOptions,\n ): Promise<AddContentResponse> {\n return this.http.post<AddContentResponse>(\n `/api/v1/agents/${agentId}/users/${encodeURIComponent(userId)}/content`,\n options as unknown as Record<string, unknown>,\n );\n }\n\n /** Get priming metadata for a user. */\n async getMetadata(\n agentId: string,\n userId: string,\n ): Promise<UserPrimingMetadata> {\n return this.http.get<UserPrimingMetadata>(\n `/api/v1/agents/${agentId}/users/${encodeURIComponent(userId)}/metadata`,\n );\n }\n\n /** Partially update priming metadata. */\n async updateMetadata(\n agentId: string,\n userId: string,\n options: UpdateMetadataOptions,\n ): Promise<UpdateMetadataResponse> {\n return this.http.patch<UpdateMetadataResponse>(\n `/api/v1/agents/${agentId}/users/${encodeURIComponent(userId)}/metadata`,\n options as unknown as Record<string, unknown>,\n );\n }\n\n /** Batch import multiple users with metadata and content. */\n async batchImport(\n agentId: string,\n options: BatchImportOptions,\n ): Promise<BatchImportResponse> {\n return this.http.post<BatchImportResponse>(\n `/api/v1/agents/${agentId}/users/import`,\n options as unknown as Record<string, unknown>,\n );\n }\n\n /** Get the status of a batch import job. */\n async getImportStatus(\n agentId: string,\n jobId: string,\n ): Promise<ImportJob> {\n return this.http.get<ImportJob>(\n `/api/v1/agents/${agentId}/users/import/${jobId}`,\n );\n }\n\n /** List recent import jobs for an agent. */\n async listImportJobs(\n agentId: string,\n limit?: number,\n ): Promise<ImportJobListResponse> {\n const params: Record<string, string> = {};\n if (limit) params.limit = String(limit);\n return this.http.get<ImportJobListResponse>(\n `/api/v1/agents/${agentId}/users/imports`,\n params,\n );\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\n// Minimal WebSocket type declarations for environments that provide a global\n// WebSocket (Node.js >=21, browsers, Bun, Deno). This avoids pulling in DOM\n// lib types for the entire project.\ndeclare class WebSocket {\n constructor(url: string);\n binaryType: string;\n send(data: string | ArrayBuffer | Uint8Array): void;\n close(): void;\n addEventListener(type: \"open\", listener: () => void): void;\n addEventListener(type: \"message\", listener: (evt: { data: any }) => void): void;\n addEventListener(type: \"close\", listener: () => void): void;\n addEventListener(type: \"error\", listener: (evt: any) => void): void;\n removeEventListener(type: string, listener: (...args: any[]) => void): void;\n}\n\nimport type { HTTPClient } from \"../http.js\";\nimport type {\n VoiceListOptions,\n VoiceListResponse,\n VoiceStreamEvent,\n VoiceStreamToken,\n VoiceTokenOptions,\n} from \"../types.js\";\n\n/** Agent-scoped voice live operations (duplex WebSocket streaming via Gemini Live). */\nexport class Voice {\n constructor(private readonly http: HTTPClient) {}\n\n /**\n * Get a short-lived token for voice live WebSocket streaming.\n * The token expires in 60 seconds and is single-use.\n */\n async getToken(\n agentId: string,\n options: VoiceTokenOptions = {},\n ): Promise<VoiceStreamToken> {\n const body: Record<string, unknown> = {};\n if (options.voiceName) body.voiceName = options.voiceName;\n if (options.language) body.language = options.language;\n if (options.userId) body.userId = options.userId;\n if (options.compiledSystemPrompt)\n body.compiledSystemPrompt = options.compiledSystemPrompt;\n\n return this.http.post<VoiceStreamToken>(\n `/api/v1/agents/${agentId}/voice/live-ws-token`,\n body,\n );\n }\n\n /**\n * Open a bidirectional WebSocket for real-time voice chat via Gemini Live.\n *\n * @example\n * ```ts\n * const token = await client.agents.voice.getToken(agentId);\n * const stream = await client.agents.voice.stream(token);\n *\n * // Send PCM audio chunks (16kHz, 16-bit, mono)\n * stream.sendAudio(audioChunk);\n *\n * // Or send text input instead of audio\n * stream.sendText(\"Hello!\");\n *\n * for await (const event of stream) {\n * if (event.type === \"input_transcript\") console.log(\"User:\", event.text);\n * if (event.type === \"output_transcript\") console.log(\"Agent:\", event.text);\n * if (event.type === \"audio\") playPCMAudio(event.audio); // 24kHz PCM\n * if (event.type === \"turn_complete\") console.log(\"Turn done\");\n * if (event.type === \"session_ended\") break;\n * }\n *\n * stream.close();\n * ```\n */\n async stream(token: VoiceStreamToken): Promise<VoiceStreamInstance> {\n return VoiceStreamInstance.connect(token);\n }\n}\n\n/**\n * Bidirectional WebSocket connection for real-time voice chat.\n *\n * Works in Node.js (>=21 with global WebSocket, or >=18 with `undici`/`ws`)\n * and modern browsers/Bun/Deno which have global WebSocket.\n */\nexport class VoiceStreamInstance {\n private ws: WebSocket;\n private closed = false;\n private eventQueue: VoiceStreamEvent[] = [];\n private waitResolve: ((value: IteratorResult<VoiceStreamEvent>) => void) | null = null;\n\n private constructor(ws: WebSocket) {\n this.ws = ws;\n\n ws.binaryType = \"arraybuffer\";\n\n ws.addEventListener(\"message\", (evt) => {\n let event: VoiceStreamEvent;\n if (evt.data instanceof ArrayBuffer) {\n event = { type: \"audio\", audio: new Uint8Array(evt.data) };\n } else {\n const parsed = JSON.parse(evt.data as string);\n event = {\n type: parsed.type ?? \"\",\n sessionId: parsed.sessionId ?? parsed.session_id,\n text: parsed.text,\n isFinal: parsed.isFinal,\n speaking: parsed.speaking,\n turnIndex: parsed.turnIndex,\n name: parsed.name,\n status: parsed.status,\n facts: parsed.facts,\n emotions: parsed.emotions,\n relationshipDelta: parsed.relationshipDelta,\n promptTokens: parsed.promptTokens,\n completionTokens: parsed.completionTokens,\n totalTokens: parsed.totalTokens,\n reason: parsed.reason,\n totalUsage: parsed.totalUsage,\n turnCount: parsed.turnCount,\n voiceName: parsed.voiceName,\n error: parsed.error,\n errorCode: parsed.errorCode ?? parsed.error_code ?? parsed.code,\n };\n }\n\n if (this.waitResolve) {\n const resolve = this.waitResolve;\n this.waitResolve = null;\n resolve({ value: event, done: false });\n } else {\n this.eventQueue.push(event);\n }\n });\n\n ws.addEventListener(\"close\", () => {\n this.closed = true;\n if (this.waitResolve) {\n const resolve = this.waitResolve;\n this.waitResolve = null;\n resolve({ value: undefined as unknown as VoiceStreamEvent, done: true });\n }\n });\n\n ws.addEventListener(\"error\", () => {\n this.closed = true;\n if (this.waitResolve) {\n const resolve = this.waitResolve;\n this.waitResolve = null;\n resolve({ value: undefined as unknown as VoiceStreamEvent, done: true });\n }\n });\n }\n\n /** Establish the WebSocket connection and authenticate. */\n static connect(token: VoiceStreamToken): Promise<VoiceStreamInstance> {\n return new Promise((resolve, reject) => {\n const ws = new WebSocket(token.wsUrl);\n ws.binaryType = \"arraybuffer\";\n\n const onOpen = () => {\n cleanup();\n // Send auth token as first text message\n ws.send(token.authToken);\n resolve(new VoiceStreamInstance(ws));\n };\n\n const onError = () => {\n cleanup();\n reject(new Error(\"Failed to connect voice WebSocket\"));\n };\n\n const cleanup = () => {\n ws.removeEventListener(\"open\", onOpen);\n ws.removeEventListener(\"error\", onError);\n };\n\n ws.addEventListener(\"open\", onOpen);\n ws.addEventListener(\"error\", onError);\n });\n }\n\n /** Send a binary audio chunk to the server. */\n sendAudio(audio: Uint8Array | ArrayBuffer): void {\n this.ws.send(audio);\n }\n\n /** Send a text message to the agent instead of audio. */\n sendText(text: string): void {\n this.ws.send(JSON.stringify({ type: \"text_input\", text }));\n }\n\n /** Gracefully end the voice session. */\n endSession(): void {\n this.ws.send(JSON.stringify({ type: \"end_session\" }));\n }\n\n /** Change audio format or sample rate mid-session. */\n configure(options: {\n audioFormat?: string;\n sampleRate?: number;\n }): void {\n const msg: Record<string, unknown> = { type: \"config\" };\n if (options.audioFormat) msg.audioFormat = options.audioFormat;\n if (options.sampleRate) msg.sampleRate = options.sampleRate;\n this.ws.send(JSON.stringify(msg));\n }\n\n /** Close the voice stream. */\n close(): void {\n if (!this.closed) {\n this.closed = true;\n this.ws.close();\n }\n }\n\n /** Async iterator for incoming events. */\n [Symbol.asyncIterator](): AsyncIterator<VoiceStreamEvent> {\n return {\n next: (): Promise<IteratorResult<VoiceStreamEvent>> => {\n if (this.eventQueue.length > 0) {\n return Promise.resolve({\n value: this.eventQueue.shift()!,\n done: false,\n });\n }\n if (this.closed) {\n return Promise.resolve({\n value: undefined as unknown as VoiceStreamEvent,\n done: true,\n });\n }\n return new Promise((resolve) => {\n this.waitResolve = resolve;\n });\n },\n };\n }\n}\n\n/** Global voice catalog operations. */\nexport class Voices {\n constructor(private readonly http: HTTPClient) {}\n\n /** List available voices from the catalog. */\n async list(options: VoiceListOptions = {}): Promise<VoiceListResponse> {\n return this.http.get<VoiceListResponse>(\"/api/v1/voices\", {\n tier: options.tier,\n gender: options.gender,\n language: options.language,\n limit: options.limit,\n offset: options.offset,\n });\n }\n}\n","import type { HTTPClient } from \"../http.js\";\n\nfunction requireNonEmpty(value: string, name: string): void {\n if (!value || typeof value !== \"string\" || value.trim() === \"\") {\n throw new Error(`${name} must be a non-empty string`);\n }\n}\n\nimport type {\n Agent,\n AgentCapabilities,\n AgentListOptions,\n AgentListResponse,\n BreakthroughsResponse,\n ChatOptions,\n ChatResponse,\n ChatStreamEvent,\n ChatUsage,\n ConsolidateOptions,\n ConsolidateResponse,\n ConstellationResponse,\n ContextDataOptions,\n CreateAgentOptions,\n CreateCustomToolOptions,\n CreateGoalOptions,\n CustomToolDefinition,\n CustomToolListResponse,\n DeleteGoalOptions,\n DialogueOptions,\n DialogueResponse,\n DiaryResponse,\n EvalOnlyOptions,\n EvaluateOptions,\n EvaluationResult,\n RunRef,\n Goal,\n GoalsResponse,\n HabitsResponse,\n InterestsResponse,\n EnrichedContextResponse,\n GetContextOptions,\n MoodAggregateResponse,\n ModelsResponse,\n MoodResponse,\n ProcessOptions,\n ProcessResponse,\n RelationshipResponse,\n RunEvalOptions,\n ScheduleWakeupOptions,\n ScheduledWakeup,\n SetStatusOptions,\n SetStatusResponse,\n SimulateOptions,\n SimulationEvent,\n SummariesOptions,\n SummariesResponse,\n TimeMachineOptions,\n TimeMachineResponse,\n TriggerEventOptions,\n TriggerEventResponse,\n UpdateAgentOptions,\n UpdateCapabilitiesOptions,\n UpdateCustomToolOptions,\n UpdateGoalOptions,\n UpdateProjectOptions,\n UpdateProjectResponse,\n UsersResponse,\n WakeupsResponse,\n} from \"../types.js\";\nimport { CustomStates } from \"./custom-states.js\";\nimport { Generation } from \"./generation.js\";\nimport { Instances } from \"./instances.js\";\nimport { Memory } from \"./memory.js\";\nimport { Notifications } from \"./notifications.js\";\nimport { Personality } from \"./personality.js\";\nimport { Sessions } from \"./sessions.js\";\nimport { Inventory } from \"./inventory.js\";\nimport { Priming } from \"./priming.js\";\nimport { Voice } from \"./voice.js\";\n\nexport class Agents {\n readonly memory: Memory;\n readonly personality: Personality;\n readonly sessions: Sessions;\n readonly instances: Instances;\n readonly notifications: Notifications;\n readonly customStates: CustomStates;\n readonly voice: Voice;\n readonly generation: Generation;\n readonly priming: Priming;\n readonly inventory: Inventory;\n\n constructor(private readonly http: HTTPClient) {\n this.memory = new Memory(http);\n this.personality = new Personality(http);\n this.sessions = new Sessions(http);\n this.instances = new Instances(http);\n this.notifications = new Notifications(http);\n this.customStates = new CustomStates(http);\n this.voice = new Voice(http);\n this.generation = new Generation(http);\n this.priming = new Priming(http);\n this.inventory = new Inventory(http);\n }\n\n // -- Agent CRUD --\n\n /** Create a new agent. */\n async create(options: CreateAgentOptions): Promise<Agent> {\n const body: Record<string, unknown> = { name: options.name };\n if (options.agentId) body.agent_id = options.agentId;\n if (options.userId) body.user_id = options.userId;\n if (options.userDisplayName)\n body.user_display_name = options.userDisplayName;\n if (options.gender) body.gender = options.gender;\n if (options.bio) body.bio = options.bio;\n if (options.avatarUrl) body.avatar_url = options.avatarUrl;\n if (options.projectId) body.project_id = options.projectId;\n if (options.personalityPrompt)\n body.personality_prompt = options.personalityPrompt;\n if (options.speechPatterns) body.speech_patterns = options.speechPatterns;\n if (options.trueInterests) body.true_interests = options.trueInterests;\n if (options.trueDislikes) body.true_dislikes = options.trueDislikes;\n if (options.primaryTraits) body.primary_traits = options.primaryTraits;\n if (options.big5) body.big5 = options.big5;\n if (options.dimensions) body.dimensions = options.dimensions;\n if (options.preferences) body.preferences = options.preferences;\n if (options.behaviors) body.behaviors = options.behaviors;\n if (options.toolCapabilities)\n body.tool_capabilities = options.toolCapabilities;\n if (options.language) body.language = options.language;\n if (options.seedMemories) body.seed_memories = options.seedMemories;\n if (options.loreContext)\n body.lore_generation_context = options.loreContext;\n if (options.generateOriginStory != null)\n body.generate_origin_story = options.generateOriginStory;\n if (options.generatePersonalizedMemories != null)\n body.generate_personalized_memories =\n options.generatePersonalizedMemories;\n if (options.initialGoals) {\n body.initial_goals = options.initialGoals.map((g) => ({\n type: g.type,\n title: g.title,\n description: g.description,\n priority: g.priority,\n related_traits: g.relatedTraits,\n }));\n }\n\n return this.http.post<Agent>(\"/api/v1/agents\", body);\n }\n\n /** Get an agent by ID. */\n async get(agentId: string): Promise<Agent> {\n requireNonEmpty(agentId, \"agentId\");\n return this.http.get<Agent>(`/api/v1/agents/${agentId}`);\n }\n\n /** Update an agent's profile. */\n async update(agentId: string, options: UpdateAgentOptions): Promise<Agent> {\n requireNonEmpty(agentId, \"agentId\");\n const body: Record<string, unknown> = {};\n if (options.name) body.name = options.name;\n if (options.bio) body.bio = options.bio;\n if (options.avatarUrl) body.avatar_url = options.avatarUrl;\n if (options.personalityPrompt)\n body.personality_prompt = options.personalityPrompt;\n if (options.speechPatterns) body.speech_patterns = options.speechPatterns;\n if (options.trueInterests) body.true_interests = options.trueInterests;\n if (options.trueDislikes) body.true_dislikes = options.trueDislikes;\n if (options.big5) body.big5 = options.big5;\n if (options.dimensions) body.dimensions = options.dimensions;\n if (options.toolCapabilities)\n body.tool_capabilities = options.toolCapabilities;\n\n return this.http.patch<Agent>(`/api/v1/agents/${agentId}/profile`, body);\n }\n\n /** Delete an agent. */\n async delete(agentId: string): Promise<void> {\n requireNonEmpty(agentId, \"agentId\");\n await this.http.delete(`/api/v1/agents/${agentId}`);\n }\n\n // -- Chat --\n\n /** Send a chat message (non-streaming). Consumes the SSE stream and returns aggregated content. */\n async chat(options: ChatOptions): Promise<ChatResponse> {\n const body = this.buildChatBody(options);\n const parts: string[] = [];\n let usage: ChatUsage | undefined;\n\n for await (const event of this.http.streamSSE(\n \"POST\",\n `/api/v1/agents/${options.agent}/chat`,\n body,\n )) {\n const parsed = event as ChatStreamEvent;\n const content = parsed.choices?.[0]?.delta?.content;\n if (content) parts.push(content);\n if (parsed.usage) usage = parsed.usage;\n }\n\n return { content: parts.join(\"\"), sessionId: \"\", usage };\n }\n\n /** Send a chat message and stream events as an async iterator. */\n async *chatStream(\n options: ChatOptions,\n ): AsyncGenerator<ChatStreamEvent> {\n requireNonEmpty(options.agent, \"agentId\");\n const body = this.buildChatBody(options);\n for await (const event of this.http.streamSSE(\n \"POST\",\n `/api/v1/agents/${options.agent}/chat`,\n body,\n )) {\n yield event as ChatStreamEvent;\n }\n }\n\n // -- Dialogue --\n\n /** Initiate a dialogue with an agent. */\n async dialogue(\n agentId: string,\n options: DialogueOptions,\n ): Promise<DialogueResponse> {\n const body: Record<string, unknown> = {};\n if (options.userId) body.user_id = options.userId;\n if (options.messages) body.messages = options.messages;\n if (options.requestType) body.request_type = options.requestType;\n if (options.sceneGuidance) body.scene_guidance = options.sceneGuidance;\n if (options.toolConfig) body.tool_config = options.toolConfig;\n if (options.instanceId) body.instance_id = options.instanceId;\n\n return this.http.post<DialogueResponse>(\n `/api/v1/agents/${agentId}/dialogue`,\n body,\n );\n }\n\n // -- Events --\n\n /** Trigger a game event / activity for an agent. */\n async triggerGameEvent(\n agentId: string,\n options: TriggerEventOptions,\n ): Promise<TriggerEventResponse> {\n const body: Record<string, unknown> = {\n user_id: options.userId,\n event_type: options.eventType,\n };\n if (options.eventDescription)\n body.event_description = options.eventDescription;\n if (options.metadata) body.metadata = options.metadata;\n if (options.language) body.language = options.language;\n if (options.instanceId) body.instance_id = options.instanceId;\n\n return this.http.post<TriggerEventResponse>(\n `/api/v1/agents/${agentId}/events`,\n body,\n );\n }\n\n // -- Wakeups --\n\n /** Schedule a wakeup for an agent. */\n async scheduleWakeup(\n agentId: string,\n options: ScheduleWakeupOptions,\n ): Promise<ScheduledWakeup> {\n const body: Record<string, unknown> = {\n user_id: options.userId,\n scheduled_at: options.scheduledAt,\n check_type: options.checkType,\n };\n if (options.intent) body.intent = options.intent;\n if (options.occasion) body.occasion = options.occasion;\n if (options.interestTopic) body.interest_topic = options.interestTopic;\n if (options.eventDescription)\n body.event_description = options.eventDescription;\n\n return this.http.post<ScheduledWakeup>(\n `/api/v1/agents/${agentId}/wakeups`,\n body,\n );\n }\n\n /** Get wakeups for an agent. */\n async getWakeups(\n agentId: string,\n options: ContextDataOptions = {},\n ): Promise<WakeupsResponse> {\n return this.http.get(`/api/v1/agents/${agentId}/wakeups`, {\n user_id: options.userId,\n instance_id: options.instanceId,\n });\n }\n\n // -- Evaluation --\n\n /** Evaluate an agent against a template. */\n async evaluate(\n agentId: string,\n options: EvaluateOptions,\n ): Promise<EvaluationResult> {\n const body: Record<string, unknown> = {\n messages: options.messages,\n template_id: options.templateId,\n };\n if (options.configOverride) body.config_override = options.configOverride;\n\n return this.http.post<EvaluationResult>(\n `/api/v1/agents/${agentId}/evaluate`,\n body,\n );\n }\n\n /** Run a simulation and stream events (two-step: POST to start, then stream SSE). */\n async *simulate(\n agentId: string,\n options: SimulateOptions = {},\n ): AsyncGenerator<SimulationEvent> {\n const ref = await this.simulateAsync(agentId, options);\n for await (const event of this.http.streamSSE(\n \"GET\",\n `/api/v1/eval-runs/${ref.run_id}/events?from=0`,\n )) {\n yield event as SimulationEvent;\n }\n }\n\n /** Start a simulation without waiting for results. Returns a RunRef for later streaming. */\n async simulateAsync(\n agentId: string,\n options: SimulateOptions = {},\n ): Promise<RunRef> {\n const body: Record<string, unknown> = {};\n if (options.sessions) body.sessions = options.sessions;\n if (options.userPersona) body.user_persona = options.userPersona;\n if (options.config) body.config = options.config;\n if (options.model) body.model = options.model;\n if (options.configOverride) body.config_override = options.configOverride;\n\n return this.http.post<RunRef>(\n `/api/v1/agents/${agentId}/simulate`,\n body,\n );\n }\n\n /** Run simulation + evaluation combined (two-step: POST to start, then stream SSE). */\n async *runEval(\n agentId: string,\n options: RunEvalOptions,\n ): AsyncGenerator<SimulationEvent> {\n const ref = await this.runEvalAsync(agentId, options);\n for await (const event of this.http.streamSSE(\n \"GET\",\n `/api/v1/eval-runs/${ref.run_id}/events?from=0`,\n )) {\n yield event as SimulationEvent;\n }\n }\n\n /** Start simulation + evaluation without waiting for results. Returns a RunRef for later streaming. */\n async runEvalAsync(\n agentId: string,\n options: RunEvalOptions,\n ): Promise<RunRef> {\n const body: Record<string, unknown> = {\n template_id: options.templateId,\n };\n if (options.sessions) body.sessions = options.sessions;\n if (options.userPersona) body.user_persona = options.userPersona;\n if (options.simulationConfig)\n body.simulation_config = options.simulationConfig;\n if (options.model) body.model = options.model;\n if (options.configOverride) body.config_override = options.configOverride;\n if (options.adaptationTemplateId)\n body.adaptation_template_id = options.adaptationTemplateId;\n if (options.qualityOnly != null) body.quality_only = options.qualityOnly;\n\n return this.http.post<RunRef>(\n `/api/v1/agents/${agentId}/run-eval`,\n body,\n );\n }\n\n /** Re-evaluate an existing run (two-step: POST to start, then stream SSE). */\n async *evalOnly(\n agentId: string,\n options: EvalOnlyOptions,\n ): AsyncGenerator<SimulationEvent> {\n const ref = await this.evalOnlyAsync(agentId, options);\n for await (const event of this.http.streamSSE(\n \"GET\",\n `/api/v1/eval-runs/${ref.run_id}/events?from=0`,\n )) {\n yield event as SimulationEvent;\n }\n }\n\n /** Re-evaluate an existing run without waiting for results. Returns a RunRef for later streaming. */\n async evalOnlyAsync(\n agentId: string,\n options: EvalOnlyOptions,\n ): Promise<RunRef> {\n const body: Record<string, unknown> = {\n template_id: options.templateId,\n source_run_id: options.sourceRunId,\n };\n if (options.adaptationTemplateId)\n body.adaptation_template_id = options.adaptationTemplateId;\n if (options.qualityOnly != null) body.quality_only = options.qualityOnly;\n\n return this.http.post<RunRef>(\n `/api/v1/agents/${agentId}/eval-only`,\n body,\n );\n }\n\n // -- Context Engine convenience accessors --\n\n async getMood(\n agentId: string,\n options: ContextDataOptions = {},\n ): Promise<MoodResponse> {\n return this.http.get(`/api/v1/agents/${agentId}/mood`, {\n user_id: options.userId,\n instance_id: options.instanceId,\n });\n }\n\n async getMoodHistory(\n agentId: string,\n options: ContextDataOptions = {},\n ): Promise<MoodResponse> {\n return this.http.get(`/api/v1/agents/${agentId}/mood-history`, {\n user_id: options.userId,\n instance_id: options.instanceId,\n });\n }\n\n /** Get aggregated mood statistics for an agent. */\n async getMoodAggregate(\n agentId: string,\n options: ContextDataOptions = {},\n ): Promise<MoodAggregateResponse> {\n return this.http.get(`/api/v1/agents/${agentId}/mood/aggregate`, {\n user_id: options.userId,\n instance_id: options.instanceId,\n });\n }\n\n async getRelationships(\n agentId: string,\n options: ContextDataOptions = {},\n ): Promise<RelationshipResponse> {\n return this.http.get(`/api/v1/agents/${agentId}/relationships`, {\n user_id: options.userId,\n instance_id: options.instanceId,\n });\n }\n\n async getHabits(\n agentId: string,\n options: ContextDataOptions = {},\n ): Promise<HabitsResponse> {\n return this.http.get(`/api/v1/agents/${agentId}/habits`, {\n user_id: options.userId,\n instance_id: options.instanceId,\n });\n }\n\n async getGoals(\n agentId: string,\n options: ContextDataOptions = {},\n ): Promise<GoalsResponse> {\n return this.http.get(`/api/v1/agents/${agentId}/goals`, {\n user_id: options.userId,\n instance_id: options.instanceId,\n });\n }\n\n /** Create a goal for an agent. Set userId to create a per-user goal. */\n async createGoal(\n agentId: string,\n options: CreateGoalOptions,\n ): Promise<Goal> {\n const body: Record<string, unknown> = {\n title: options.title,\n description: options.description,\n };\n if (options.userId) body.user_id = options.userId;\n if (options.type) body.type = options.type;\n if (options.priority != null) body.priority = options.priority;\n if (options.relatedTraits) body.related_traits = options.relatedTraits;\n\n return this.http.post<Goal>(\n `/api/v1/agents/${agentId}/goals`,\n body,\n );\n }\n\n /** Update an existing goal. Set userId for per-user goals. */\n async updateGoal(\n agentId: string,\n goalId: string,\n options: UpdateGoalOptions,\n ): Promise<Goal> {\n const body: Record<string, unknown> = {};\n if (options.userId) body.user_id = options.userId;\n if (options.title) body.title = options.title;\n if (options.description) body.description = options.description;\n if (options.priority != null) body.priority = options.priority;\n if (options.status) body.status = options.status;\n if (options.relatedTraits) body.related_traits = options.relatedTraits;\n\n return this.http.put<Goal>(\n `/api/v1/agents/${agentId}/goals/${goalId}`,\n body,\n );\n }\n\n /** Delete (soft-abandon) a goal. Set userId for per-user goals. */\n async deleteGoal(\n agentId: string,\n goalId: string,\n options: DeleteGoalOptions = {},\n ): Promise<void> {\n const params: Record<string, string> = {};\n if (options.userId) params.user_id = options.userId;\n\n await this.http.delete(\n `/api/v1/agents/${agentId}/goals/${goalId}`,\n params,\n );\n }\n\n async getInterests(\n agentId: string,\n options: ContextDataOptions = {},\n ): Promise<InterestsResponse> {\n return this.http.get(`/api/v1/agents/${agentId}/interests`, {\n user_id: options.userId,\n instance_id: options.instanceId,\n });\n }\n\n async getDiary(\n agentId: string,\n options: ContextDataOptions = {},\n ): Promise<DiaryResponse> {\n return this.http.get(`/api/v1/agents/${agentId}/diary`, {\n user_id: options.userId,\n instance_id: options.instanceId,\n });\n }\n\n async getUsers(agentId: string): Promise<UsersResponse> {\n return this.http.get(`/api/v1/agents/${agentId}/users`);\n }\n\n /** Get constellation data for an agent. */\n async getConstellation(\n agentId: string,\n options: ContextDataOptions = {},\n ): Promise<ConstellationResponse> {\n return this.http.get(`/api/v1/agents/${agentId}/constellation`, {\n user_id: options.userId,\n instance_id: options.instanceId,\n });\n }\n\n /** Get breakthroughs for an agent. */\n async getBreakthroughs(\n agentId: string,\n options: ContextDataOptions = {},\n ): Promise<BreakthroughsResponse> {\n return this.http.get(`/api/v1/agents/${agentId}/breakthroughs`, {\n user_id: options.userId,\n instance_id: options.instanceId,\n });\n }\n\n // -- Agent List --\n\n /** List agents with optional pagination, search, and project filtering. */\n async list(options?: AgentListOptions): Promise<AgentListResponse> {\n const params: Record<string, string> = {};\n if (options?.pageSize) params.page_size = String(options.pageSize);\n if (options?.cursor) params.cursor = options.cursor;\n if (options?.search) params.search = options.search;\n if (options?.projectId) params.project_id = options.projectId;\n return this.http.get<AgentListResponse>(\"/api/v1/agents\", params);\n }\n\n // -- Agent Status --\n\n /** Set the active status of an agent. */\n async setStatus(agentId: string, options: SetStatusOptions): Promise<SetStatusResponse> {\n return this.http.patch<SetStatusResponse>(`/api/v1/agents/${agentId}/status`, options as unknown as Record<string, unknown>);\n }\n\n // -- Project Association --\n\n /** Update an agent's project association. */\n async updateProject(agentId: string, options: UpdateProjectOptions): Promise<UpdateProjectResponse> {\n return this.http.patch<UpdateProjectResponse>(`/api/v1/agents/${agentId}/project`, options as unknown as Record<string, unknown>);\n }\n\n // -- Capabilities --\n\n /** Get an agent's capabilities. */\n async getCapabilities(agentId: string): Promise<AgentCapabilities> {\n return this.http.get<AgentCapabilities>(`/api/v1/agents/${agentId}/capabilities`);\n }\n\n /** Update an agent's capabilities. */\n async updateCapabilities(agentId: string, options: UpdateCapabilitiesOptions): Promise<AgentCapabilities> {\n return this.http.patch<AgentCapabilities>(`/api/v1/agents/${agentId}/capabilities`, options as unknown as Record<string, unknown>);\n }\n\n // -- Custom Tools --\n\n /** List custom tools for an agent. */\n async listCustomTools(agentId: string): Promise<CustomToolListResponse> {\n return this.http.get<CustomToolListResponse>(`/api/v1/agents/${agentId}/tools`);\n }\n\n /** Create a custom tool for an agent. */\n async createCustomTool(agentId: string, options: CreateCustomToolOptions): Promise<CustomToolDefinition> {\n return this.http.post<CustomToolDefinition>(`/api/v1/agents/${agentId}/tools`, options as unknown as Record<string, unknown>);\n }\n\n /** Update a custom tool for an agent. */\n async updateCustomTool(agentId: string, toolName: string, options: UpdateCustomToolOptions): Promise<{ success: boolean }> {\n return this.http.put<{ success: boolean }>(`/api/v1/agents/${agentId}/tools/${toolName}`, options as unknown as Record<string, unknown>);\n }\n\n /** Delete a custom tool from an agent. */\n async deleteCustomTool(agentId: string, toolName: string): Promise<void> {\n return this.http.delete<void>(`/api/v1/agents/${agentId}/tools/${toolName}`);\n }\n\n // -- Process (full pipeline) --\n\n /**\n * Run the full Context Engine pipeline on conversation messages without\n * generating a chat response. Extracts side effects via LLM, processes\n * behavioral updates (mood, personality, habits, interests, relationships),\n * stores memories, and runs session-end analysis.\n */\n async process(agentId: string, options: ProcessOptions): Promise<ProcessResponse> {\n requireNonEmpty(agentId, \"agentId\");\n requireNonEmpty(options.userId, \"options.userId\");\n const body: Record<string, unknown> = {\n userId: options.userId,\n messages: options.messages,\n };\n if (options.sessionId) body.sessionId = options.sessionId;\n if (options.instanceId) body.instanceId = options.instanceId;\n if (options.provider) body.provider = options.provider;\n if (options.model) body.model = options.model;\n return this.http.post<ProcessResponse>(`/api/v1/agents/${agentId}/process`, body);\n }\n\n /** Get available LLM providers and models for the /process endpoint. */\n async getModels(agentId: string): Promise<ModelsResponse> {\n return this.http.get<ModelsResponse>(`/api/v1/agents/${agentId}/models`);\n }\n\n // -- Context (single-call enriched context) --\n\n /**\n * Get the full enriched agent context in a single call.\n * Returns all 7 layers (personality, mood, memory, relationships, goals, etc.)\n * This replaces multiple individual API calls with one round-trip.\n */\n async getContext(\n agentId: string,\n options: GetContextOptions,\n ): Promise<EnrichedContextResponse> {\n requireNonEmpty(agentId, \"agentId\");\n requireNonEmpty(options.userId, \"options.userId\");\n const params: Record<string, string> = { userId: options.userId };\n if (options.sessionId) params.sessionId = options.sessionId;\n if (options.instanceId) params.instanceId = options.instanceId;\n if (options.query) params.query = options.query;\n if (options.language) params.language = options.language;\n if (options.timezone) params.timezone = options.timezone;\n return this.http.get<EnrichedContextResponse>(\n `/api/v1/agents/${agentId}/context`,\n params,\n );\n }\n\n // -- Consolidation --\n\n /** Trigger memory consolidation for an agent. */\n async consolidate(agentId: string, options?: ConsolidateOptions): Promise<ConsolidateResponse> {\n return this.http.post<ConsolidateResponse>(`/api/v1/agents/${agentId}/consolidate`, (options ?? {}) as Record<string, unknown>);\n }\n\n /** Get memory summaries for an agent. */\n async getSummaries(agentId: string, options?: SummariesOptions): Promise<SummariesResponse> {\n const params: Record<string, string> = {};\n if (options?.period) params.period = options.period;\n if (options?.limit) params.limit = String(options.limit);\n return this.http.get<SummariesResponse>(`/api/v1/agents/${agentId}/summaries`, params);\n }\n\n // -- Time Machine --\n\n /** Get a point-in-time snapshot of an agent's personality and mood. */\n async getTimeMachine(agentId: string, options: TimeMachineOptions): Promise<TimeMachineResponse> {\n const params: Record<string, string> = { at: options.at };\n if (options.userId) params.user_id = options.userId;\n if (options.instanceId) params.instance_id = options.instanceId;\n return this.http.get<TimeMachineResponse>(`/api/v1/agents/${agentId}/timemachine`, params);\n }\n\n private buildChatBody(options: ChatOptions): Record<string, unknown> {\n const body: Record<string, unknown> = { messages: options.messages };\n if (options.userId) body.user_id = options.userId;\n if (options.userDisplayName)\n body.user_display_name = options.userDisplayName;\n if (options.sessionId) body.session_id = options.sessionId;\n if (options.instanceId) body.instance_id = options.instanceId;\n if (options.provider) body.provider = options.provider;\n if (options.model) body.model = options.model;\n if (options.continuationToken)\n body.continuation_token = options.continuationToken;\n if (options.requestType) body.request_type = options.requestType;\n if (options.language) body.language = options.language;\n if (options.compiledSystemPrompt)\n body.compiled_system_prompt = options.compiledSystemPrompt;\n if (options.interactionRole)\n body.interaction_role = options.interactionRole;\n if (options.timezone) body.timezone = options.timezone;\n if (options.toolCapabilities)\n body.tool_capabilities = options.toolCapabilities;\n if (options.toolDefinitions)\n body.tool_definitions = options.toolDefinitions;\n return body;\n }\n}\n","import type { HTTPClient } from \"../http.js\";\nimport type {\n CustomLLMConfigResponse,\n SetCustomLLMOptions,\n} from \"../types.js\";\n\n/** Project-scoped custom LLM provider configuration. */\nexport class CustomLLM {\n constructor(private readonly http: HTTPClient) {}\n\n /** Get the custom LLM config for a project. */\n async get(projectId: string): Promise<CustomLLMConfigResponse> {\n return this.http.get<CustomLLMConfigResponse>(\n `/api/v1/projects/${projectId}/custom-llm`,\n );\n }\n\n /** Set or update the custom LLM config. */\n async set(\n projectId: string,\n options: SetCustomLLMOptions,\n ): Promise<CustomLLMConfigResponse> {\n return this.http.put<CustomLLMConfigResponse>(\n `/api/v1/projects/${projectId}/custom-llm`,\n options as unknown as Record<string, unknown>,\n );\n }\n\n /** Delete the custom LLM config. */\n async delete(projectId: string): Promise<void> {\n await this.http.delete(`/api/v1/projects/${projectId}/custom-llm`);\n }\n}\n","import type { HTTPClient } from \"../http.js\";\nimport type {\n EvalRun,\n EvalRunListOptions,\n EvalRunListResponse,\n SessionResponse,\n SimulationEvent,\n} from \"../types.js\";\n\nexport class EvalRuns {\n constructor(private readonly http: HTTPClient) {}\n\n /** List eval runs. */\n async list(options: EvalRunListOptions = {}): Promise<EvalRunListResponse> {\n return this.http.get<EvalRunListResponse>(\"/api/v1/eval-runs\", {\n agent_id: options.agentId,\n limit: options.limit,\n offset: options.offset,\n });\n }\n\n /** Get a specific eval run. */\n async get(runId: string): Promise<EvalRun> {\n return this.http.get<EvalRun>(`/api/v1/eval-runs/${runId}`);\n }\n\n /** Delete an eval run. */\n async delete(runId: string): Promise<SessionResponse> {\n return this.http.delete<SessionResponse>(`/api/v1/eval-runs/${runId}`);\n }\n\n /** Stream SSE events from a running eval. Supports reconnection via fromIndex. */\n async *streamEvents(\n runId: string,\n fromIndex = 0,\n ): AsyncGenerator<SimulationEvent> {\n for await (const event of this.http.streamSSE(\n \"GET\",\n `/api/v1/eval-runs/${runId}/events?from=${fromIndex}`,\n )) {\n yield event as SimulationEvent;\n }\n }\n}\n","import type { HTTPClient } from \"../http.js\";\nimport type {\n EvalTemplate,\n EvalTemplateCreateOptions,\n EvalTemplateListResponse,\n EvalTemplateUpdateOptions,\n SessionResponse,\n} from \"../types.js\";\n\nexport class EvalTemplates {\n constructor(private readonly http: HTTPClient) {}\n\n /** List all eval templates. */\n async list(options: { templateType?: string } = {}): Promise<EvalTemplateListResponse> {\n return this.http.get<EvalTemplateListResponse>(\"/api/v1/eval-templates\", {\n type: options.templateType,\n });\n }\n\n /** Get a specific eval template. */\n async get(templateId: string): Promise<EvalTemplate> {\n return this.http.get<EvalTemplate>(`/api/v1/eval-templates/${templateId}`);\n }\n\n /** Create a new eval template. */\n async create(options: EvalTemplateCreateOptions): Promise<EvalTemplate> {\n const body: Record<string, unknown> = {\n name: options.name,\n description: options.description ?? \"\",\n template_type: options.templateType ?? \"\",\n judge_model: options.judgeModel ?? \"gemini-3.1-pro-preview\",\n temperature: options.temperature ?? 0.3,\n max_tokens: options.maxTokens ?? 8192,\n scoring_rubric: options.scoringRubric ?? \"\",\n };\n if (options.categories) body.categories = options.categories;\n\n return this.http.post<EvalTemplate>(\"/api/v1/eval-templates\", body);\n }\n\n /** Update an eval template. */\n async update(\n templateId: string,\n options: EvalTemplateUpdateOptions,\n ): Promise<EvalTemplate> {\n const body: Record<string, unknown> = {};\n if (options.name !== undefined) body.name = options.name;\n if (options.description !== undefined) body.description = options.description;\n if (options.templateType !== undefined) body.template_type = options.templateType;\n if (options.judgeModel !== undefined) body.judge_model = options.judgeModel;\n if (options.temperature !== undefined) body.temperature = options.temperature;\n if (options.maxTokens !== undefined) body.max_tokens = options.maxTokens;\n if (options.scoringRubric !== undefined) body.scoring_rubric = options.scoringRubric;\n if (options.categories !== undefined) body.categories = options.categories;\n\n return this.http.put<EvalTemplate>(\n `/api/v1/eval-templates/${templateId}`,\n body,\n );\n }\n\n /** Delete an eval template. */\n async delete(templateId: string): Promise<SessionResponse> {\n return this.http.delete<SessionResponse>(\n `/api/v1/eval-templates/${templateId}`,\n );\n }\n}\n","import type { HTTPClient } from \"../http.js\";\nimport type {\n KBDocument,\n KBDocumentListResponse,\n KBNodeListResponse,\n KBNodeDetailResponse,\n KBNodeHistoryResponse,\n KBSearchResponse,\n KBSearchOptions,\n KBEntitySchema,\n KBSchemaListResponse,\n KBStats,\n InsertFactsOptions,\n InsertFactsResponse,\n CreateSchemaOptions,\n KBAnalyticsRule,\n KBAnalyticsRuleListResponse,\n CreateAnalyticsRuleOptions,\n UpdateAnalyticsRuleOptions,\n KBRecommendationsResponse,\n KBTrendsResponse,\n KBTrendRankingsResponse,\n KBConversionsResponse,\n RecordFeedbackOptions,\n KBBulkUpdateOptions,\n KBBulkUpdateResponse,\n} from \"../types.js\";\n\n/** Project-scoped knowledge base operations. */\nexport class Knowledge {\n constructor(private readonly http: HTTPClient) {}\n\n // -- Documents --\n\n /** List documents for a project. */\n async listDocuments(\n projectId: string,\n limit?: number,\n ): Promise<KBDocumentListResponse> {\n const params: Record<string, string> = {};\n if (limit) params.limit = String(limit);\n return this.http.get<KBDocumentListResponse>(\n `/api/v1/projects/${projectId}/knowledge/documents`,\n params,\n );\n }\n\n /** Get a single document. */\n async getDocument(\n projectId: string,\n docId: string,\n ): Promise<KBDocument> {\n return this.http.get<KBDocument>(\n `/api/v1/projects/${projectId}/knowledge/documents/${docId}`,\n );\n }\n\n /** Delete a document. */\n async deleteDocument(\n projectId: string,\n docId: string,\n ): Promise<void> {\n await this.http.delete(\n `/api/v1/projects/${projectId}/knowledge/documents/${docId}`,\n );\n }\n\n // -- Facts / Graph --\n\n /** Insert entities and relationships into the knowledge graph. */\n async insertFacts(\n projectId: string,\n options: InsertFactsOptions,\n ): Promise<InsertFactsResponse> {\n return this.http.post<InsertFactsResponse>(\n `/api/v1/projects/${projectId}/knowledge/facts`,\n options as unknown as Record<string, unknown>,\n );\n }\n\n /** List knowledge graph nodes. */\n async listNodes(\n projectId: string,\n options: { type?: string; limit?: number } = {},\n ): Promise<KBNodeListResponse> {\n const params: Record<string, string> = {};\n if (options.type) params.type = options.type;\n if (options.limit) params.limit = String(options.limit);\n return this.http.get<KBNodeListResponse>(\n `/api/v1/projects/${projectId}/knowledge/nodes`,\n params,\n );\n }\n\n /** Get a node with connected edges. */\n async getNode(\n projectId: string,\n nodeId: string,\n includeHistory = false,\n ): Promise<KBNodeDetailResponse> {\n const params: Record<string, string> = {};\n if (includeHistory) params.history = \"true\";\n return this.http.get<KBNodeDetailResponse>(\n `/api/v1/projects/${projectId}/knowledge/nodes/${nodeId}`,\n params,\n );\n }\n\n /** Soft-delete a node. */\n async deleteNode(\n projectId: string,\n nodeId: string,\n ): Promise<void> {\n await this.http.delete(\n `/api/v1/projects/${projectId}/knowledge/nodes/${nodeId}`,\n );\n }\n\n /** Get version history for a node. */\n async getNodeHistory(\n projectId: string,\n nodeId: string,\n limit?: number,\n ): Promise<KBNodeHistoryResponse> {\n const params: Record<string, string> = {};\n if (limit) params.limit = String(limit);\n return this.http.get<KBNodeHistoryResponse>(\n `/api/v1/projects/${projectId}/knowledge/nodes/${nodeId}/history`,\n params,\n );\n }\n\n // -- Search --\n\n /** BM25 search with 1-hop graph traversal. */\n async search(\n projectId: string,\n options: KBSearchOptions,\n ): Promise<KBSearchResponse> {\n const params: Record<string, string> = { q: options.query };\n if (options.limit) params.limit = String(options.limit);\n if (options.includeHistory) params.history = \"true\";\n if (options.entityTypes) params.type = options.entityTypes;\n if (options.filters) params.filters = options.filters;\n return this.http.get<KBSearchResponse>(\n `/api/v1/projects/${projectId}/knowledge/search`,\n params,\n );\n }\n\n // -- Schemas --\n\n /** Create an entity schema. */\n async createSchema(\n projectId: string,\n options: CreateSchemaOptions,\n ): Promise<KBEntitySchema> {\n return this.http.post<KBEntitySchema>(\n `/api/v1/projects/${projectId}/knowledge/schemas`,\n options as unknown as Record<string, unknown>,\n );\n }\n\n /** List entity schemas. */\n async listSchemas(projectId: string): Promise<KBSchemaListResponse> {\n return this.http.get<KBSchemaListResponse>(\n `/api/v1/projects/${projectId}/knowledge/schemas`,\n );\n }\n\n /** Update an entity schema. */\n async updateSchema(\n projectId: string,\n schemaId: string,\n options: CreateSchemaOptions,\n ): Promise<KBEntitySchema> {\n return this.http.put<KBEntitySchema>(\n `/api/v1/projects/${projectId}/knowledge/schemas/${schemaId}`,\n options as unknown as Record<string, unknown>,\n );\n }\n\n /** Delete an entity schema. */\n async deleteSchema(\n projectId: string,\n schemaId: string,\n ): Promise<void> {\n await this.http.delete(\n `/api/v1/projects/${projectId}/knowledge/schemas/${schemaId}`,\n );\n }\n\n // -- Stats --\n\n /** Get knowledge base statistics. */\n async getStats(projectId: string): Promise<KBStats> {\n return this.http.get<KBStats>(\n `/api/v1/projects/${projectId}/knowledge/stats`,\n );\n }\n\n // -- Analytics Rules --\n\n /** Create an analytics rule. */\n async createAnalyticsRule(\n projectId: string,\n options: CreateAnalyticsRuleOptions,\n ): Promise<KBAnalyticsRule> {\n return this.http.post<KBAnalyticsRule>(\n `/api/v1/projects/${projectId}/knowledge/analytics/rules`,\n options as unknown as Record<string, unknown>,\n );\n }\n\n /** List analytics rules. */\n async listAnalyticsRules(\n projectId: string,\n ): Promise<KBAnalyticsRuleListResponse> {\n return this.http.get<KBAnalyticsRuleListResponse>(\n `/api/v1/projects/${projectId}/knowledge/analytics/rules`,\n );\n }\n\n /** Get a single analytics rule. */\n async getAnalyticsRule(\n projectId: string,\n ruleId: string,\n ): Promise<KBAnalyticsRule> {\n return this.http.get<KBAnalyticsRule>(\n `/api/v1/projects/${projectId}/knowledge/analytics/rules/${ruleId}`,\n );\n }\n\n /** Update an analytics rule. */\n async updateAnalyticsRule(\n projectId: string,\n ruleId: string,\n options: UpdateAnalyticsRuleOptions,\n ): Promise<KBAnalyticsRule> {\n return this.http.put<KBAnalyticsRule>(\n `/api/v1/projects/${projectId}/knowledge/analytics/rules/${ruleId}`,\n options as unknown as Record<string, unknown>,\n );\n }\n\n /** Delete an analytics rule. */\n async deleteAnalyticsRule(\n projectId: string,\n ruleId: string,\n ): Promise<void> {\n await this.http.delete(\n `/api/v1/projects/${projectId}/knowledge/analytics/rules/${ruleId}`,\n );\n }\n\n /** Trigger a manual run of an analytics rule. */\n async runAnalyticsRule(\n projectId: string,\n ruleId: string,\n ): Promise<void> {\n await this.http.post(\n `/api/v1/projects/${projectId}/knowledge/analytics/rules/${ruleId}/run`,\n {},\n );\n }\n\n // -- Analytics Queries --\n\n /** Get recommendations for a source node. */\n async getRecommendations(\n projectId: string,\n ruleId: string,\n sourceId: string,\n limit?: number,\n ): Promise<KBRecommendationsResponse> {\n const params: Record<string, string> = {\n rule_id: ruleId,\n source_id: sourceId,\n };\n if (limit) params.limit = String(limit);\n return this.http.get<KBRecommendationsResponse>(\n `/api/v1/projects/${projectId}/knowledge/analytics/recommendations`,\n params,\n );\n }\n\n /** Get trend aggregations for a node. */\n async getTrends(\n projectId: string,\n nodeId: string,\n ): Promise<KBTrendsResponse> {\n return this.http.get<KBTrendsResponse>(\n `/api/v1/projects/${projectId}/knowledge/analytics/trends`,\n { node_id: nodeId },\n );\n }\n\n /** Get trend rankings. */\n async getTrendRankings(\n projectId: string,\n ruleId: string,\n type: string,\n window: string,\n limit?: number,\n ): Promise<KBTrendRankingsResponse> {\n const params: Record<string, string> = {\n rule_id: ruleId,\n type,\n window,\n };\n if (limit) params.limit = String(limit);\n return this.http.get<KBTrendRankingsResponse>(\n `/api/v1/projects/${projectId}/knowledge/analytics/rankings`,\n params,\n );\n }\n\n /** Get conversion statistics. */\n async getConversions(\n projectId: string,\n ruleId: string,\n segment?: string,\n ): Promise<KBConversionsResponse> {\n const params: Record<string, string> = { rule_id: ruleId };\n if (segment) params.segment = segment;\n return this.http.get<KBConversionsResponse>(\n `/api/v1/projects/${projectId}/knowledge/analytics/conversions`,\n params,\n );\n }\n\n /** Record recommendation feedback. */\n async recordFeedback(\n projectId: string,\n options: RecordFeedbackOptions,\n ): Promise<void> {\n await this.http.post(\n `/api/v1/projects/${projectId}/knowledge/analytics/feedback`,\n options as unknown as Record<string, unknown>,\n );\n }\n\n // -- Bulk Update --\n\n /**\n * Batch-update KB node properties. Merges properties into existing nodes\n * matched by label + entity_type. Creates nodes that don't exist yet.\n * Sync for <=100 items; async via NATS for larger batches.\n */\n async bulkUpdate(\n projectId: string,\n options: KBBulkUpdateOptions,\n ): Promise<KBBulkUpdateResponse> {\n return this.http.patch<KBBulkUpdateResponse>(\n `/api/v1/projects/${projectId}/knowledge/bulk-update`,\n options as unknown as Record<string, unknown>,\n );\n }\n}\n","import type { HTTPClient } from \"../http.js\";\nimport type {\n ProjectConfigEntry,\n ProjectConfigListResponse,\n} from \"../types.js\";\n\n/** Project-scoped configuration (key-value store). */\nexport class ProjectConfig {\n constructor(private readonly http: HTTPClient) {}\n\n /** List all config entries for a project. */\n async list(projectId: string): Promise<ProjectConfigListResponse> {\n return this.http.get<ProjectConfigListResponse>(\n `/api/v1/projects/${projectId}/config`,\n );\n }\n\n /** Get a config value by key. Returns the raw JSON value. */\n async get(projectId: string, key: string): Promise<ProjectConfigEntry> {\n return this.http.get<ProjectConfigEntry>(\n `/api/v1/projects/${projectId}/config/${key}`,\n );\n }\n\n /** Set a config value. Body must be valid JSON. */\n async set(\n projectId: string,\n key: string,\n value: unknown,\n ): Promise<{ success: boolean }> {\n return this.http.put<{ success: boolean }>(\n `/api/v1/projects/${projectId}/config/${key}`,\n value as Record<string, unknown>,\n );\n }\n\n /** Delete a config entry. */\n async delete(projectId: string, key: string): Promise<void> {\n await this.http.delete(`/api/v1/projects/${projectId}/config/${key}`);\n }\n}\n","import type { HTTPClient } from \"../http.js\";\nimport type {\n ProjectNotificationListOptions,\n ProjectNotificationListResponse,\n AcknowledgeNotificationsOptions,\n AcknowledgeResponse,\n AcknowledgeAllOptions,\n} from \"../types.js\";\n\n/** Project-scoped notification polling for game backends. */\nexport class ProjectNotifications {\n constructor(private readonly http: HTTPClient) {}\n\n /** List pending notifications for a project. */\n async list(\n projectId: string,\n options: ProjectNotificationListOptions = {},\n ): Promise<ProjectNotificationListResponse> {\n const params: Record<string, string> = {};\n if (options.agentId) params.agent_id = options.agentId;\n if (options.eventType) params.event_type = options.eventType;\n if (options.limit) params.limit = String(options.limit);\n return this.http.get<ProjectNotificationListResponse>(\n `/api/v1/projects/${projectId}/notifications`,\n params,\n );\n }\n\n /** Acknowledge specific notifications by ID. */\n async acknowledge(\n projectId: string,\n options: AcknowledgeNotificationsOptions,\n ): Promise<AcknowledgeResponse> {\n return this.http.post<AcknowledgeResponse>(\n `/api/v1/projects/${projectId}/notifications/acknowledge`,\n { notification_ids: options.notificationIds } as unknown as Record<string, unknown>,\n );\n }\n\n /** Acknowledge all pending notifications for a project. */\n async acknowledgeAll(\n projectId: string,\n options: AcknowledgeAllOptions = {},\n ): Promise<AcknowledgeResponse> {\n const params: Record<string, string> = {};\n if (options.agentId) params.agent_id = options.agentId;\n if (options.eventType) params.event_type = options.eventType;\n return this.http.post<AcknowledgeResponse>(\n `/api/v1/projects/${projectId}/notifications/acknowledge-all`,\n {},\n params,\n );\n }\n}\n","import type { HTTPClient } from \"../http.js\";\nimport type {\n DeliveryAttemptsResponse,\n WebhookListResponse,\n WebhookRegisterOptions,\n WebhookRegisterResponse,\n} from \"../types.js\";\n\n/** Webhook management operations. */\nexport class Webhooks {\n constructor(private readonly http: HTTPClient) {}\n\n /** Register (or update) a webhook URL for an event type. */\n async register(\n eventType: string,\n options: WebhookRegisterOptions,\n ): Promise<WebhookRegisterResponse> {\n const body: Record<string, unknown> = {\n webhook_url: options.webhookUrl,\n };\n if (options.authHeader) body.auth_header = options.authHeader;\n\n return this.http.put<WebhookRegisterResponse>(\n `/api/v1/webhooks/${eventType}`,\n body,\n );\n }\n\n /** List all registered webhooks. */\n async list(): Promise<WebhookListResponse> {\n return this.http.get<WebhookListResponse>(\"/api/v1/webhooks\");\n }\n\n /** Delete a webhook for an event type. */\n async delete(eventType: string): Promise<void> {\n await this.http.delete(`/api/v1/webhooks/${eventType}`);\n }\n\n /** List recent delivery attempts for an event type. */\n async listDeliveryAttempts(\n eventType: string,\n ): Promise<DeliveryAttemptsResponse> {\n return this.http.get<DeliveryAttemptsResponse>(\n `/api/v1/webhooks/${eventType}/attempts`,\n );\n }\n\n /** Rotate the signing secret for a webhook event type. */\n async rotateSecret(\n eventType: string,\n ): Promise<WebhookRegisterResponse> {\n return this.http.post<WebhookRegisterResponse>(\n `/api/v1/webhooks/${eventType}/rotate-secret`,\n );\n }\n\n // -- Project-scoped webhooks --\n\n /** Register (or update) a webhook for a specific project and event type. */\n async registerForProject(\n projectId: string,\n eventType: string,\n options: WebhookRegisterOptions,\n ): Promise<WebhookRegisterResponse> {\n const body: Record<string, unknown> = {\n webhook_url: options.webhookUrl,\n };\n if (options.authHeader) body.auth_header = options.authHeader;\n\n return this.http.put<WebhookRegisterResponse>(\n `/api/v1/projects/${projectId}/webhooks/${eventType}`,\n body,\n );\n }\n\n /** List all webhooks for a project. */\n async listForProject(projectId: string): Promise<WebhookListResponse> {\n return this.http.get<WebhookListResponse>(\n `/api/v1/projects/${projectId}/webhooks`,\n );\n }\n\n /** Delete a webhook for a project event type. */\n async deleteForProject(\n projectId: string,\n eventType: string,\n ): Promise<void> {\n await this.http.delete(\n `/api/v1/projects/${projectId}/webhooks/${eventType}`,\n );\n }\n\n /** List delivery attempts for a project webhook event type. */\n async listDeliveryAttemptsForProject(\n projectId: string,\n eventType: string,\n ): Promise<DeliveryAttemptsResponse> {\n return this.http.get<DeliveryAttemptsResponse>(\n `/api/v1/projects/${projectId}/webhooks/${eventType}/attempts`,\n );\n }\n\n /** Rotate the signing secret for a project webhook event type. */\n async rotateSecretForProject(\n projectId: string,\n eventType: string,\n ): Promise<WebhookRegisterResponse> {\n return this.http.post<WebhookRegisterResponse>(\n `/api/v1/projects/${projectId}/webhooks/${eventType}/rotate-secret`,\n );\n }\n}\n","import { HTTPClient } from \"./http.js\";\nimport { Agents } from \"./resources/agents.js\";\nimport { CustomLLM } from \"./resources/custom-llm.js\";\nimport { EvalRuns } from \"./resources/eval-runs.js\";\nimport { EvalTemplates } from \"./resources/eval-templates.js\";\nimport { Knowledge } from \"./resources/knowledge.js\";\nimport { ProjectConfig } from \"./resources/project-config.js\";\nimport { ProjectNotifications } from \"./resources/project-notifications.js\";\nimport { Voices } from \"./resources/voice.js\";\nimport { Webhooks } from \"./resources/webhooks.js\";\nimport type { SonzaiConfig } from \"./types.js\";\n\nconst DEFAULT_BASE_URL = \"https://api.sonz.ai\";\nconst DEFAULT_TIMEOUT = 30_000;\nconst DEFAULT_MAX_RETRIES = 2;\n\n/**\n * Resolve the API key from config or environment variables.\n * Works with Node.js, Bun, and Deno.\n */\nfunction resolveApiKey(config?: SonzaiConfig): string {\n if (config?.apiKey) return config.apiKey;\n\n // Node.js / Bun\n if (typeof process !== \"undefined\" && process.env) {\n const key = process.env.SONZAI_API_KEY;\n if (key) return key;\n }\n\n // Deno\n if (typeof Deno !== \"undefined\") {\n try {\n const key = Deno.env.get(\"SONZAI_API_KEY\");\n if (key) return key;\n } catch {\n // Permission denied\n }\n }\n\n throw new Error(\n \"apiKey must be provided or set via the SONZAI_API_KEY environment variable\",\n );\n}\n\nfunction resolveBaseUrl(config?: SonzaiConfig): string {\n if (config?.baseUrl) return config.baseUrl;\n\n if (typeof process !== \"undefined\" && process.env) {\n const url = process.env.SONZAI_BASE_URL;\n if (url) return url;\n }\n\n if (typeof Deno !== \"undefined\") {\n try {\n const url = Deno.env.get(\"SONZAI_BASE_URL\");\n if (url) return url;\n } catch {\n // Permission denied\n }\n }\n\n return DEFAULT_BASE_URL;\n}\n\n// Deno type shim for TypeScript compilation\ndeclare const Deno: {\n env: { get(key: string): string | undefined };\n} | undefined;\n\n/**\n * Sonzai Mind Layer API client.\n *\n * Works with Node.js (>=18), Bun, and Deno. Uses the native `fetch` API\n * with zero runtime dependencies.\n *\n * @example\n * ```ts\n * import { Sonzai } from \"sonzai\";\n *\n * const client = new Sonzai({ apiKey: \"your-api-key\" });\n *\n * // Chat with an agent\n * const response = await client.agents.chat({\n * agent: \"agent-id\",\n * messages: [{ role: \"user\", content: \"Hello!\" }],\n * });\n * console.log(response.content);\n *\n * // Stream chat\n * for await (const event of client.agents.chatStream({\n * agent: \"agent-id\",\n * messages: [{ role: \"user\", content: \"Tell me a story\" }],\n * })) {\n * process.stdout.write(event.choices?.[0]?.delta?.content ?? \"\");\n * }\n * ```\n */\nexport class Sonzai {\n readonly agents: Agents;\n /** Project-scoped knowledge base (documents, graph, schemas, search, analytics). */\n readonly knowledge: Knowledge;\n readonly evalTemplates: EvalTemplates;\n readonly evalRuns: EvalRuns;\n readonly voices: Voices;\n readonly webhooks: Webhooks;\n /** Project-scoped configuration (key-value store). */\n readonly projectConfig: ProjectConfig;\n /** Project-scoped custom LLM provider configuration. */\n readonly customLLM: CustomLLM;\n /** Project-scoped notification polling for game backends. */\n readonly projectNotifications: ProjectNotifications;\n\n private readonly http: HTTPClient;\n\n constructor(config?: SonzaiConfig) {\n const apiKey = resolveApiKey(config);\n const baseUrl = resolveBaseUrl(config);\n\n this.http = new HTTPClient({\n baseUrl,\n apiKey,\n timeout: config?.timeout ?? DEFAULT_TIMEOUT,\n maxRetries: config?.maxRetries ?? DEFAULT_MAX_RETRIES,\n });\n\n this.agents = new Agents(this.http);\n this.knowledge = new Knowledge(this.http);\n this.evalTemplates = new EvalTemplates(this.http);\n this.evalRuns = new EvalRuns(this.http);\n this.voices = new Voices(this.http);\n this.webhooks = new Webhooks(this.http);\n this.projectConfig = new ProjectConfig(this.http);\n this.customLLM = new CustomLLM(this.http);\n this.projectNotifications = new ProjectNotifications(this.http);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/errors.ts","../src/http.ts","../src/resources/custom-states.ts","../src/resources/generation.ts","../src/resources/instances.ts","../src/resources/memory.ts","../src/resources/notifications.ts","../src/resources/personality.ts","../src/resources/sessions.ts","../src/resources/inventory.ts","../src/resources/priming.ts","../src/resources/voice.ts","../src/resources/agents.ts","../src/resources/custom-llm.ts","../src/resources/eval-runs.ts","../src/resources/eval-templates.ts","../src/resources/knowledge.ts","../src/resources/project-config.ts","../src/resources/project-notifications.ts","../src/resources/webhooks.ts","../src/client.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["export class SonzaiError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"SonzaiError\";\n }\n}\n\nexport class AuthenticationError extends SonzaiError {\n constructor(message = \"Invalid or missing API key\") {\n super(message);\n this.name = \"AuthenticationError\";\n }\n}\n\nexport class NotFoundError extends SonzaiError {\n constructor(message: string) {\n super(message);\n this.name = \"NotFoundError\";\n }\n}\n\nexport class BadRequestError extends SonzaiError {\n constructor(message: string) {\n super(message);\n this.name = \"BadRequestError\";\n }\n}\n\nexport class PermissionDeniedError extends SonzaiError {\n constructor(message: string) {\n super(message);\n this.name = \"PermissionDeniedError\";\n }\n}\n\nexport class RateLimitError extends SonzaiError {\n retryAfter?: number;\n\n constructor(message: string, retryAfter?: number) {\n super(message);\n this.name = \"RateLimitError\";\n this.retryAfter = retryAfter;\n }\n}\n\nexport class InternalServerError extends SonzaiError {\n constructor(message: string) {\n super(message);\n this.name = \"InternalServerError\";\n }\n}\n\nexport class APIError extends SonzaiError {\n statusCode: number;\n\n constructor(statusCode: number, message: string) {\n super(`[${statusCode}] ${message}`);\n this.name = \"APIError\";\n this.statusCode = statusCode;\n }\n}\n\nexport class StreamError extends SonzaiError {\n constructor(message: string) {\n super(message);\n this.name = \"StreamError\";\n }\n}\n","import {\n APIError,\n AuthenticationError,\n BadRequestError,\n InternalServerError,\n NotFoundError,\n PermissionDeniedError,\n RateLimitError,\n SonzaiError,\n} from \"./errors.js\";\n\nexport interface HTTPClientOptions {\n baseUrl: string;\n apiKey: string;\n timeout: number;\n maxRetries: number;\n}\n\nexport class HTTPClient {\n private readonly baseUrl: string;\n private readonly headers: Record<string, string>;\n private readonly timeout: number;\n private readonly maxRetries: number;\n\n constructor(options: HTTPClientOptions) {\n this.baseUrl = options.baseUrl.replace(/\\/$/, \"\");\n this.headers = {\n Authorization: `Bearer ${options.apiKey}`,\n \"Content-Type\": \"application/json\",\n \"User-Agent\": \"sonzai-typescript/1.0.3\",\n };\n this.timeout = options.timeout;\n this.maxRetries = options.maxRetries;\n }\n\n async request<T = unknown>(\n method: string,\n path: string,\n options?: {\n body?: Record<string, unknown>;\n params?: Record<string, string | number | boolean | undefined>;\n },\n ): Promise<T> {\n const url = this.buildUrl(path, options?.params);\n const isIdempotent = method === \"GET\" || method === \"DELETE\";\n const maxAttempts = isIdempotent ? this.maxRetries + 1 : 1;\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), this.timeout);\n\n try {\n const response = await fetch(url, {\n method,\n headers: this.headers,\n body: options?.body ? JSON.stringify(options.body) : undefined,\n signal: controller.signal,\n });\n\n // Retry on 5xx for idempotent methods\n if (response.status >= 500 && isIdempotent && attempt < maxAttempts - 1) {\n clearTimeout(timer);\n await this.backoff(attempt);\n continue;\n }\n\n await this.throwOnError(response);\n\n const contentType = response.headers.get(\"content-type\") ?? \"\";\n if (contentType.includes(\"application/json\")) {\n return (await response.json()) as T;\n }\n return (await response.text()) as T;\n } catch (error) {\n clearTimeout(timer);\n // Retry on network errors for idempotent methods\n if (isIdempotent && attempt < maxAttempts - 1 && this.isNetworkError(error)) {\n await this.backoff(attempt);\n continue;\n }\n throw error;\n } finally {\n clearTimeout(timer);\n }\n }\n\n // Unreachable, but satisfies TypeScript\n throw new InternalServerError(\"Max retries exceeded\");\n }\n\n private async backoff(attempt: number): Promise<void> {\n // Exponential backoff: 100ms * 2^attempt, capped at 5s, plus jitter\n const base = Math.min(100 * 2 ** attempt, 5000);\n const jitter = Math.random() * base;\n await new Promise((resolve) => setTimeout(resolve, base + jitter));\n }\n\n private isNetworkError(error: unknown): boolean {\n if (error instanceof SonzaiError) return false;\n return (\n error instanceof TypeError ||\n (error instanceof DOMException && error.name === \"AbortError\")\n );\n }\n\n async get<T = unknown>(\n path: string,\n params?: Record<string, string | number | boolean | undefined>,\n ): Promise<T> {\n return this.request<T>(\"GET\", path, { params });\n }\n\n async post<T = unknown>(\n path: string,\n body?: Record<string, unknown>,\n params?: Record<string, string | number | boolean | undefined>,\n ): Promise<T> {\n return this.request<T>(\"POST\", path, { body, params });\n }\n\n async put<T = unknown>(\n path: string,\n body?: Record<string, unknown>,\n ): Promise<T> {\n return this.request<T>(\"PUT\", path, { body });\n }\n\n async patch<T = unknown>(\n path: string,\n body?: Record<string, unknown>,\n ): Promise<T> {\n return this.request<T>(\"PATCH\", path, { body });\n }\n\n async delete<T = unknown>(\n path: string,\n params?: Record<string, string | number | boolean | undefined>,\n ): Promise<T> {\n return this.request<T>(\"DELETE\", path, { params });\n }\n\n async *streamSSE(\n method: string,\n path: string,\n body?: Record<string, unknown>,\n ): AsyncGenerator<Record<string, unknown>> {\n const url = this.buildUrl(path);\n\n const controller = new AbortController();\n // Longer timeout for streaming\n const timer = setTimeout(() => controller.abort(), this.timeout * 10);\n\n try {\n const response = await fetch(url, {\n method,\n headers: {\n ...this.headers,\n Accept: \"text/event-stream\",\n },\n body: body ? JSON.stringify(body) : undefined,\n signal: controller.signal,\n });\n\n await this.throwOnError(response);\n\n if (!response.body) {\n return;\n }\n\n const reader = response.body.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split(\"\\n\");\n // Keep the last incomplete line in the buffer\n buffer = lines.pop() ?? \"\";\n\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed) continue;\n if (trimmed === \"data: [DONE]\") return;\n if (trimmed.startsWith(\"data: \")) {\n try {\n yield JSON.parse(trimmed.slice(6));\n } catch (e) {\n console.warn(\n \"[sonzai-sdk] Malformed SSE JSON event skipped:\",\n trimmed.slice(6),\n e,\n );\n }\n }\n }\n }\n\n // Process remaining buffer\n if (buffer.trim()) {\n const trimmed = buffer.trim();\n if (trimmed === \"data: [DONE]\") return;\n if (trimmed.startsWith(\"data: \")) {\n try {\n yield JSON.parse(trimmed.slice(6));\n } catch (e) {\n console.warn(\n \"[sonzai-sdk] Malformed SSE JSON event skipped:\",\n trimmed.slice(6),\n e,\n );\n }\n }\n }\n } finally {\n await reader.cancel();\n }\n } finally {\n clearTimeout(timer);\n }\n }\n\n private buildUrl(\n path: string,\n params?: Record<string, string | number | boolean | undefined>,\n ): string {\n const url = new URL(path, this.baseUrl);\n if (params) {\n for (const [key, value] of Object.entries(params)) {\n if (value !== undefined) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n return url.toString();\n }\n\n private async throwOnError(response: Response): Promise<void> {\n if (response.ok) return;\n\n let message: string;\n try {\n const body = (await response.json()) as { error?: string };\n message = body.error ?? response.statusText;\n } catch {\n try {\n message = await response.text();\n } catch {\n message = response.statusText;\n }\n }\n\n const status = response.status;\n switch (status) {\n case 401:\n throw new AuthenticationError(message);\n case 403:\n throw new PermissionDeniedError(message);\n case 404:\n throw new NotFoundError(message);\n case 400:\n throw new BadRequestError(message);\n case 429: {\n const retryAfterRaw = response.headers.get(\"Retry-After\");\n const retryAfter = retryAfterRaw ? Number(retryAfterRaw) : undefined;\n throw new RateLimitError(\n message,\n retryAfter && !Number.isNaN(retryAfter) ? retryAfter : undefined,\n );\n }\n default:\n if (status >= 500) throw new InternalServerError(message);\n throw new APIError(status, message);\n }\n }\n}\n","import type { HTTPClient } from \"../http.js\";\nimport type {\n CustomState,\n CustomStateCreateOptions,\n CustomStateDeleteByKeyOptions,\n CustomStateGetByKeyOptions,\n CustomStateListOptions,\n CustomStateListResponse,\n CustomStateUpdateOptions,\n CustomStateUpsertOptions,\n} from \"../types.js\";\n\n/** Custom state operations for agents. */\nexport class CustomStates {\n constructor(private readonly http: HTTPClient) {}\n\n /** List custom states for an agent. */\n async list(\n agentId: string,\n options: CustomStateListOptions = {},\n ): Promise<CustomStateListResponse> {\n return this.http.get<CustomStateListResponse>(\n `/api/v1/agents/${agentId}/custom-states`,\n {\n scope: options.scope,\n user_id: options.userId,\n instance_id: options.instanceId,\n },\n );\n }\n\n /** Create a new custom state. */\n async create(\n agentId: string,\n options: CustomStateCreateOptions,\n ): Promise<CustomState> {\n const body: Record<string, unknown> = {\n key: options.key,\n value: options.value,\n };\n if (options.scope) body.scope = options.scope;\n if (options.contentType) body.content_type = options.contentType;\n if (options.userId) body.user_id = options.userId;\n if (options.instanceId) body.instance_id = options.instanceId;\n\n return this.http.post<CustomState>(\n `/api/v1/agents/${agentId}/custom-states`,\n body,\n );\n }\n\n /** Update a custom state. */\n async update(\n agentId: string,\n stateId: string,\n options: CustomStateUpdateOptions,\n ): Promise<CustomState> {\n const body: Record<string, unknown> = { value: options.value };\n if (options.contentType) body.content_type = options.contentType;\n\n return this.http.put<CustomState>(\n `/api/v1/agents/${agentId}/custom-states/${stateId}`,\n body,\n );\n }\n\n /** Delete a custom state. */\n async delete(agentId: string, stateId: string): Promise<void> {\n await this.http.delete(\n `/api/v1/agents/${agentId}/custom-states/${stateId}`,\n );\n }\n\n /** Create or update a custom state by composite key (key + scope + userId + instanceId). */\n async upsert(\n agentId: string,\n options: CustomStateUpsertOptions,\n ): Promise<CustomState> {\n const body: Record<string, unknown> = {\n key: options.key,\n value: options.value,\n };\n if (options.scope) body.scope = options.scope;\n if (options.contentType) body.content_type = options.contentType;\n if (options.userId) body.user_id = options.userId;\n if (options.instanceId) body.instance_id = options.instanceId;\n\n return this.http.put<CustomState>(\n `/api/v1/agents/${agentId}/custom-states/by-key`,\n body,\n );\n }\n\n /** Get a custom state by its composite key. */\n async getByKey(\n agentId: string,\n options: CustomStateGetByKeyOptions,\n ): Promise<CustomState> {\n return this.http.get<CustomState>(\n `/api/v1/agents/${agentId}/custom-states/by-key`,\n {\n key: options.key,\n scope: options.scope,\n user_id: options.userId,\n instance_id: options.instanceId,\n },\n );\n }\n\n /** Delete a custom state by its composite key. */\n async deleteByKey(\n agentId: string,\n options: CustomStateDeleteByKeyOptions,\n ): Promise<void> {\n await this.http.delete(\n `/api/v1/agents/${agentId}/custom-states/by-key`,\n {\n key: options.key,\n scope: options.scope,\n user_id: options.userId,\n instance_id: options.instanceId,\n },\n );\n }\n}\n","import type { HTTPClient } from \"../http.js\";\nimport type {\n GenerateAndCreateOptions,\n GenerateAndCreateResponse,\n GenerateBioOptions,\n GenerateBioResponse,\n GenerateCharacterOptions,\n GenerateCharacterResponse,\n GenerateSeedMemoriesOptions,\n GenerateSeedMemoriesResponse,\n ImageGenerateOptions,\n ImageGenerateResponse,\n} from \"../types.js\";\n\n/** AI content generation operations for agents. */\nexport class Generation {\n constructor(private readonly http: HTTPClient) {}\n\n /** Generate a bio for an agent using AI. */\n async generateBio(\n agentId: string,\n options: GenerateBioOptions = {},\n ): Promise<GenerateBioResponse> {\n const body: Record<string, unknown> = {};\n if (options.name) body.name = options.name;\n if (options.gender) body.gender = options.gender;\n if (options.description) body.description = options.description;\n if (options.userId) body.user_id = options.userId;\n if (options.enrichedContextJson)\n body.enriched_context_json = options.enrichedContextJson;\n if (options.currentBio) body.current_bio = options.currentBio;\n if (options.style) body.style = options.style;\n if (options.instanceId) body.instance_id = options.instanceId;\n\n return this.http.post<GenerateBioResponse>(\n `/api/v1/agents/${agentId}/bio/generate`,\n body,\n );\n }\n\n /** Generate a full character profile from a description.\n * If an agent with the resolved ID already exists, the LLM is skipped and the existing profile is returned.\n */\n async generateCharacter(\n options: GenerateCharacterOptions,\n ): Promise<GenerateCharacterResponse> {\n const body: Record<string, unknown> = { name: options.name };\n if (options.agentId) body.agent_id = options.agentId;\n if (options.gender) body.gender = options.gender;\n if (options.description) body.description = options.description;\n if (options.fields) body.fields = options.fields;\n\n return this.http.post<GenerateCharacterResponse>(\n \"/api/v1/agents/generate-character\",\n body,\n );\n }\n\n /** Generate a character and create the agent in one idempotent call.\n * If the agent already exists, the LLM is skipped and the existing agent is returned.\n * Safe to call on every app startup.\n */\n async generateAndCreate(\n options: GenerateAndCreateOptions,\n ): Promise<GenerateAndCreateResponse> {\n const body: Record<string, unknown> = { name: options.name };\n if (options.agentId) body.agent_id = options.agentId;\n if (options.gender) body.gender = options.gender;\n if (options.description) body.description = options.description;\n if (options.fields) body.fields = options.fields;\n if (options.projectId) body.project_id = options.projectId;\n if (options.language) body.language = options.language;\n\n return this.http.post<GenerateAndCreateResponse>(\n \"/api/v1/agents/generate-and-create\",\n body,\n );\n }\n\n /** Generate seed memories for an agent using AI. */\n async generateSeedMemories(\n agentId: string,\n options: GenerateSeedMemoriesOptions = {},\n ): Promise<GenerateSeedMemoriesResponse> {\n const body: Record<string, unknown> = {};\n if (options.userId) body.user_id = options.userId;\n if (options.agentName) body.agentName = options.agentName;\n if (options.big5) body.big5 = options.big5;\n if (options.personalityPrompt)\n body.personalityPrompt = options.personalityPrompt;\n if (options.guideSummary) body.guide_summary = options.guideSummary;\n if (options.trueInterests) body.trueInterests = options.trueInterests;\n if (options.trueDislikes) body.trueDislikes = options.trueDislikes;\n if (options.speechPatterns) body.speechPatterns = options.speechPatterns;\n if (options.creatorDisplayName)\n body.creatorDisplayName = options.creatorDisplayName;\n if (options.staticLoreMemories)\n body.staticLoreMemories = options.staticLoreMemories;\n if (options.loreGenerationContext)\n body.loreGenerationContext = options.loreGenerationContext;\n if (options.identityMemoryTemplates)\n body.identityMemoryTemplates = options.identityMemoryTemplates;\n if (options.generateOriginStory != null)\n body.generateOriginStory = options.generateOriginStory;\n if (options.generatePersonalizedMemories != null)\n body.generatePersonalizedMemories = options.generatePersonalizedMemories;\n if (options.storeMemories != null)\n body.store_memories = options.storeMemories;\n\n return this.http.post<GenerateSeedMemoriesResponse>(\n `/api/v1/agents/${agentId}/memory/seed`,\n body,\n );\n }\n\n /** Generate an image using the agent's context. */\n async generateImage(\n agentId: string,\n options: ImageGenerateOptions,\n ): Promise<ImageGenerateResponse> {\n const body: Record<string, unknown> = { prompt: options.prompt };\n if (options.negativePrompt) body.negative_prompt = options.negativePrompt;\n if (options.model) body.model = options.model;\n if (options.provider) body.provider = options.provider;\n\n return this.http.post<ImageGenerateResponse>(\n `/api/v1/agents/${agentId}/image/generate`,\n body,\n );\n }\n}\n","import type { HTTPClient } from \"../http.js\";\nimport type {\n AgentInstance,\n InstanceCreateOptions,\n InstanceListResponse,\n SessionResponse,\n UpdateInstanceOptions,\n} from \"../types.js\";\n\nexport class Instances {\n constructor(private readonly http: HTTPClient) {}\n\n /** List all instances for an agent. */\n async list(agentId: string): Promise<InstanceListResponse> {\n return this.http.get<InstanceListResponse>(\n `/api/v1/agents/${agentId}/instances`,\n );\n }\n\n /** Create a new agent instance. */\n async create(\n agentId: string,\n options: InstanceCreateOptions,\n ): Promise<AgentInstance> {\n const body: Record<string, unknown> = { name: options.name };\n if (options.description) body.description = options.description;\n\n return this.http.post<AgentInstance>(\n `/api/v1/agents/${agentId}/instances`,\n body,\n );\n }\n\n /** Get a specific instance. */\n async get(agentId: string, instanceId: string): Promise<AgentInstance> {\n return this.http.get<AgentInstance>(\n `/api/v1/agents/${agentId}/instances/${instanceId}`,\n );\n }\n\n /** Delete an instance. */\n async delete(agentId: string, instanceId: string): Promise<SessionResponse> {\n return this.http.delete<SessionResponse>(\n `/api/v1/agents/${agentId}/instances/${instanceId}`,\n );\n }\n\n /** Reset an instance (clears all context data). */\n async reset(agentId: string, instanceId: string): Promise<AgentInstance> {\n return this.http.post<AgentInstance>(\n `/api/v1/agents/${agentId}/instances/${instanceId}/reset`,\n );\n }\n\n /** Update an instance's name, description, or status. */\n async update(agentId: string, instanceId: string, options: UpdateInstanceOptions): Promise<AgentInstance> {\n return this.http.patch<AgentInstance>(`/api/v1/agents/${agentId}/instances/${instanceId}`, options as unknown as Record<string, unknown>);\n }\n}\n","import type { HTTPClient } from \"../http.js\";\nimport type {\n FactHistoryResponse,\n FactListOptions,\n FactListResponse,\n MemoryListOptions,\n MemoryResetOptions,\n MemoryResetResponse,\n MemoryResponse,\n MemorySearchOptions,\n MemorySearchResponse,\n MemoryTimelineOptions,\n MemoryTimelineResponse,\n SeedMemoriesOptions,\n SeedMemoriesResponse,\n} from \"../types.js\";\n\nexport class Memory {\n constructor(private readonly http: HTTPClient) {}\n\n /** Get the memory tree for an agent. */\n async list(\n agentId: string,\n options: MemoryListOptions = {},\n ): Promise<MemoryResponse> {\n return this.http.get<MemoryResponse>(\n `/api/v1/agents/${agentId}/memory`,\n {\n user_id: options.userId,\n instance_id: options.instanceId,\n parent_id: options.parentId,\n include_contents: options.includeContents ? \"true\" : undefined,\n limit: options.limit,\n },\n );\n }\n\n /** Search agent memories. */\n async search(\n agentId: string,\n options: MemorySearchOptions,\n ): Promise<MemorySearchResponse> {\n return this.http.get<MemorySearchResponse>(\n `/api/v1/agents/${agentId}/memory/search`,\n {\n q: options.query,\n instance_id: options.instanceId,\n limit: options.limit,\n },\n );\n }\n\n /** Get memory timeline for an agent. */\n async timeline(\n agentId: string,\n options: MemoryTimelineOptions = {},\n ): Promise<MemoryTimelineResponse> {\n return this.http.get<MemoryTimelineResponse>(\n `/api/v1/agents/${agentId}/memory/timeline`,\n {\n user_id: options.userId,\n instance_id: options.instanceId,\n start: options.start,\n end: options.end,\n },\n );\n }\n\n /** Seed bulk memories for an agent. */\n async seed(\n agentId: string,\n options: SeedMemoriesOptions,\n ): Promise<SeedMemoriesResponse> {\n const body: Record<string, unknown> = {\n user_id: options.userId,\n memories: options.memories,\n };\n if (options.instanceId) body.instance_id = options.instanceId;\n\n return this.http.post<SeedMemoriesResponse>(\n `/api/v1/agents/${agentId}/memory/seed`,\n body,\n );\n }\n\n /** List extracted facts for an agent. */\n async listFacts(\n agentId: string,\n options: FactListOptions = {},\n ): Promise<FactListResponse> {\n return this.http.get<FactListResponse>(\n `/api/v1/agents/${agentId}/memory/facts`,\n {\n user_id: options.userId,\n category: options.category,\n limit: options.limit,\n offset: options.offset,\n },\n );\n }\n\n /** Reset (delete) all memory for an agent, optionally scoped to a user. */\n async reset(\n agentId: string,\n options: MemoryResetOptions = {},\n ): Promise<MemoryResetResponse> {\n return this.http.delete<MemoryResetResponse>(\n `/api/v1/agents/${agentId}/memory`,\n {\n user_id: options.userId,\n instance_id: options.instanceId,\n },\n );\n }\n\n /** Get the version history of a specific fact. */\n async getFactHistory(agentId: string, factId: string): Promise<FactHistoryResponse> {\n return this.http.get<FactHistoryResponse>(`/api/v1/agents/${agentId}/memory/fact/${factId}/history`);\n }\n}\n","import type { HTTPClient } from \"../http.js\";\nimport type {\n NotificationListOptions,\n NotificationListResponse,\n SessionResponse,\n} from \"../types.js\";\n\nexport class Notifications {\n constructor(private readonly http: HTTPClient) {}\n\n /** List notifications for an agent. */\n async list(\n agentId: string,\n options: NotificationListOptions = {},\n ): Promise<NotificationListResponse> {\n return this.http.get<NotificationListResponse>(\n `/api/v1/agents/${agentId}/notifications`,\n {\n status: options.status,\n user_id: options.userId,\n limit: options.limit,\n },\n );\n }\n\n /** Mark a notification as consumed. */\n async consume(\n agentId: string,\n messageId: string,\n ): Promise<SessionResponse> {\n return this.http.post<SessionResponse>(\n `/api/v1/agents/${agentId}/notifications/${messageId}/consume`,\n );\n }\n\n /** List notification history. */\n async history(\n agentId: string,\n options: { limit?: number } = {},\n ): Promise<NotificationListResponse> {\n return this.http.get<NotificationListResponse>(\n `/api/v1/agents/${agentId}/notifications/history`,\n { limit: options.limit },\n );\n }\n}\n","import type { HTTPClient } from \"../http.js\";\nimport type {\n BatchPersonalityResponse,\n PersonalityGetOptions,\n PersonalityResponse,\n PersonalityUpdateOptions,\n PersonalityUpdateResponse,\n RecentShiftsResponse,\n SignificantMomentsResponse,\n UserOverlayDetailResponse,\n UserOverlayOptions,\n UserOverlaysListResponse,\n} from \"../types.js\";\n\nexport class Personality {\n constructor(private readonly http: HTTPClient) {}\n\n /** Get personality profile and evolution history. */\n async get(\n agentId: string,\n options: PersonalityGetOptions = {},\n ): Promise<PersonalityResponse> {\n return this.http.get<PersonalityResponse>(\n `/api/v1/agents/${agentId}/personality`,\n {\n history_limit: options.historyLimit,\n since: options.since,\n },\n );\n }\n\n /** Update an agent's Big5 personality scores. */\n async update(\n agentId: string,\n options: PersonalityUpdateOptions,\n ): Promise<PersonalityUpdateResponse> {\n const body: Record<string, unknown> = { big5: options.big5 };\n if (options.assessmentMethod)\n body.assessment_method = options.assessmentMethod;\n if (options.totalExchanges)\n body.total_exchanges = options.totalExchanges;\n\n return this.http.put<PersonalityUpdateResponse>(\n `/api/v1/agents/${agentId}/personality`,\n body,\n );\n }\n\n /** Get personality profiles for multiple agents in a single request. */\n async batchGet(agentIds: string[]): Promise<BatchPersonalityResponse> {\n return this.http.post<BatchPersonalityResponse>(\"/api/v1/agents/personalities/batch\", { agent_ids: agentIds });\n }\n\n /** Get significant moments for an agent's personality evolution. */\n async getSignificantMoments(agentId: string, options?: { limit?: number }): Promise<SignificantMomentsResponse> {\n const params: Record<string, string> = {};\n if (options?.limit) params.limit = String(options.limit);\n return this.http.get<SignificantMomentsResponse>(`/api/v1/agents/${agentId}/personality/significant-moments`, params);\n }\n\n /** Get recent personality shifts for an agent. */\n async getRecentShifts(agentId: string): Promise<RecentShiftsResponse> {\n return this.http.get<RecentShiftsResponse>(`/api/v1/agents/${agentId}/personality/recent-shifts`);\n }\n\n /** List all user-specific personality overlays for an agent. */\n async listUserOverlays(agentId: string): Promise<UserOverlaysListResponse> {\n return this.http.get<UserOverlaysListResponse>(`/api/v1/agents/${agentId}/personality/users`);\n }\n\n /** Get a specific user's personality overlay for an agent. */\n async getUserOverlay(agentId: string, userId: string, options?: UserOverlayOptions): Promise<UserOverlayDetailResponse> {\n const params: Record<string, string> = {};\n if (options?.instanceId) params.instance_id = options.instanceId;\n if (options?.since) params.since = options.since;\n return this.http.get<UserOverlayDetailResponse>(`/api/v1/agents/${agentId}/personality/users/${userId}`, params);\n }\n}\n","import type { HTTPClient } from \"../http.js\";\nimport type {\n SessionEndOptions,\n SessionResponse,\n SessionStartOptions,\n ToolDefinition,\n} from \"../types.js\";\n\nexport class Sessions {\n constructor(private readonly http: HTTPClient) {}\n\n /** Start a chat session. */\n async start(\n agentId: string,\n options: SessionStartOptions,\n ): Promise<SessionResponse> {\n const body: Record<string, unknown> = {\n user_id: options.userId,\n session_id: options.sessionId,\n };\n if (options.instanceId) body.instance_id = options.instanceId;\n\n return this.http.post<SessionResponse>(\n `/api/v1/agents/${agentId}/sessions/start`,\n body,\n );\n }\n\n /** End a chat session. */\n async end(\n agentId: string,\n options: SessionEndOptions,\n ): Promise<SessionResponse> {\n const body: Record<string, unknown> = {\n user_id: options.userId,\n session_id: options.sessionId,\n total_messages: options.totalMessages ?? 0,\n duration_seconds: options.durationSeconds ?? 0,\n };\n if (options.instanceId) body.instance_id = options.instanceId;\n if (options.messages) body.messages = options.messages;\n\n return this.http.post<SessionResponse>(\n `/api/v1/agents/${agentId}/sessions/end`,\n body,\n );\n }\n\n /** Set the tools available for a specific session. */\n async setTools(agentId: string, sessionId: string, tools: ToolDefinition[]): Promise<SessionResponse> {\n return this.http.put<SessionResponse>(`/api/v1/agents/${agentId}/sessions/${sessionId}/tools`, tools as unknown as Record<string, unknown>);\n }\n}\n","import type { HTTPClient } from \"../http.js\";\nimport type {\n InventoryUpdateOptions,\n InventoryUpdateResponse,\n InventoryQueryOptions,\n InventoryQueryResponse,\n InventoryBatchImportOptions,\n InventoryBatchImportResponse,\n InventoryDirectUpdateOptions,\n InventoryDirectUpdateResponse,\n ListAllFactsOptions,\n ListAllFactsResponse,\n} from \"../types.js\";\n\n/** Inventory/asset tracking operations scoped to an agent + user. */\nexport class Inventory {\n constructor(private readonly http: HTTPClient) {}\n\n /**\n * Add, update, or remove an inventory item (agent tool flow).\n * When action is \"add\" and the KB description is ambiguous, returns\n * `status: \"disambiguation_needed\"` with candidate KB nodes.\n */\n async update(\n agentId: string,\n userId: string,\n options: InventoryUpdateOptions,\n instanceId?: string,\n ): Promise<InventoryUpdateResponse> {\n const params = instanceId ? { instance_id: instanceId } : undefined;\n return this.http.post<InventoryUpdateResponse>(\n `/api/v1/agents/${agentId}/users/${encodeURIComponent(userId)}/inventory`,\n options as unknown as Record<string, unknown>,\n params,\n );\n }\n\n /**\n * Query a user's inventory with optional KB-joined valuations and aggregation.\n * Modes: \"list\" (items only), \"value\" (items + market prices), \"aggregate\" (totals).\n */\n async query(\n agentId: string,\n userId: string,\n options: InventoryQueryOptions = {},\n ): Promise<InventoryQueryResponse> {\n const params: Record<string, string> = {};\n if (options.mode) params.mode = options.mode;\n if (options.item_type) params.item_type = options.item_type;\n if (options.query) params.query = options.query;\n if (options.project_id) params.project_id = options.project_id;\n if (options.aggregations) params.aggregations = options.aggregations;\n if (options.group_by) params.group_by = options.group_by;\n if (options.limit) params.limit = String(options.limit);\n if (options.instanceId) params.instance_id = options.instanceId;\n\n return this.http.get<InventoryQueryResponse>(\n `/api/v1/agents/${agentId}/users/${encodeURIComponent(userId)}/inventory`,\n params,\n );\n }\n\n /**\n * Batch-import inventory items (developer API).\n * Up to 1000 items per request.\n */\n async batchImport(\n agentId: string,\n userId: string,\n options: InventoryBatchImportOptions,\n instanceId?: string,\n ): Promise<InventoryBatchImportResponse> {\n const params = instanceId ? { instance_id: instanceId } : undefined;\n return this.http.post<InventoryBatchImportResponse>(\n `/api/v1/agents/${agentId}/users/${encodeURIComponent(userId)}/inventory/batch`,\n options as unknown as Record<string, unknown>,\n params,\n );\n }\n\n /**\n * Directly update an inventory fact's properties by fact ID (developer API).\n * Creates a superseding fact with merged properties.\n */\n async directUpdate(\n agentId: string,\n userId: string,\n factId: string,\n options: InventoryDirectUpdateOptions,\n instanceId?: string,\n ): Promise<InventoryDirectUpdateResponse> {\n let path = `/api/v1/agents/${agentId}/users/${encodeURIComponent(userId)}/inventory/${encodeURIComponent(factId)}`;\n if (instanceId) path += `?instance_id=${encodeURIComponent(instanceId)}`;\n return this.http.put<InventoryDirectUpdateResponse>(\n path,\n options as unknown as Record<string, unknown>,\n );\n }\n\n /**\n * Directly delete an inventory item by fact ID (developer API).\n * Creates a superseding fact with `removed: true`.\n */\n async directDelete(\n agentId: string,\n userId: string,\n factId: string,\n instanceId?: string,\n ): Promise<InventoryDirectUpdateResponse> {\n const params = instanceId ? { instance_id: instanceId } : undefined;\n return this.http.delete<InventoryDirectUpdateResponse>(\n `/api/v1/agents/${agentId}/users/${encodeURIComponent(userId)}/inventory/${encodeURIComponent(factId)}`,\n params,\n );\n }\n\n /**\n * List all active facts for an agent+user pair.\n * Supports filtering by metadata presence and item_type.\n * Bypasses the token-budgeted predictor — returns up to `limit` facts.\n */\n async listAllFacts(\n agentId: string,\n userId: string,\n options: ListAllFactsOptions = {},\n ): Promise<ListAllFactsResponse> {\n const params: Record<string, string> = {};\n if (options.has_metadata) params.has_metadata = \"true\";\n if (options.item_type) params[\"metadata.item_type\"] = options.item_type;\n if (options.limit) params.limit = String(options.limit);\n if (options.instanceId) params.instance_id = options.instanceId;\n\n return this.http.get<ListAllFactsResponse>(\n `/api/v1/agents/${agentId}/users/${encodeURIComponent(userId)}/facts`,\n params,\n );\n }\n}\n","import type { HTTPClient } from \"../http.js\";\nimport type {\n PrimeUserOptions,\n PrimeUserResponse,\n AddContentOptions,\n AddContentResponse,\n UserPrimingMetadata,\n UpdateMetadataOptions,\n UpdateMetadataResponse,\n BatchImportOptions,\n BatchImportResponse,\n ImportJob,\n ImportJobListResponse,\n} from \"../types.js\";\n\n/** User priming operations for agents. */\nexport class Priming {\n constructor(private readonly http: HTTPClient) {}\n\n /** Prime a user with metadata and content. Returns a job ID for async processing. */\n async primeUser(\n agentId: string,\n userId: string,\n options: PrimeUserOptions,\n ): Promise<PrimeUserResponse> {\n return this.http.post<PrimeUserResponse>(\n `/api/v1/agents/${agentId}/users/${encodeURIComponent(userId)}/prime`,\n options as unknown as Record<string, unknown>,\n );\n }\n\n /** Get the status of a priming job. */\n async getPrimeStatus(\n agentId: string,\n userId: string,\n jobId: string,\n ): Promise<ImportJob> {\n return this.http.get<ImportJob>(\n `/api/v1/agents/${agentId}/users/${encodeURIComponent(userId)}/prime/${jobId}`,\n );\n }\n\n /** Add content blocks for async LLM extraction. */\n async addContent(\n agentId: string,\n userId: string,\n options: AddContentOptions,\n ): Promise<AddContentResponse> {\n return this.http.post<AddContentResponse>(\n `/api/v1/agents/${agentId}/users/${encodeURIComponent(userId)}/content`,\n options as unknown as Record<string, unknown>,\n );\n }\n\n /** Get priming metadata for a user. */\n async getMetadata(\n agentId: string,\n userId: string,\n ): Promise<UserPrimingMetadata> {\n return this.http.get<UserPrimingMetadata>(\n `/api/v1/agents/${agentId}/users/${encodeURIComponent(userId)}/metadata`,\n );\n }\n\n /** Partially update priming metadata. */\n async updateMetadata(\n agentId: string,\n userId: string,\n options: UpdateMetadataOptions,\n ): Promise<UpdateMetadataResponse> {\n return this.http.patch<UpdateMetadataResponse>(\n `/api/v1/agents/${agentId}/users/${encodeURIComponent(userId)}/metadata`,\n options as unknown as Record<string, unknown>,\n );\n }\n\n /** Batch import multiple users with metadata and content. */\n async batchImport(\n agentId: string,\n options: BatchImportOptions,\n ): Promise<BatchImportResponse> {\n return this.http.post<BatchImportResponse>(\n `/api/v1/agents/${agentId}/users/import`,\n options as unknown as Record<string, unknown>,\n );\n }\n\n /** Get the status of a batch import job. */\n async getImportStatus(\n agentId: string,\n jobId: string,\n ): Promise<ImportJob> {\n return this.http.get<ImportJob>(\n `/api/v1/agents/${agentId}/users/import/${jobId}`,\n );\n }\n\n /** List recent import jobs for an agent. */\n async listImportJobs(\n agentId: string,\n limit?: number,\n ): Promise<ImportJobListResponse> {\n const params: Record<string, string> = {};\n if (limit) params.limit = String(limit);\n return this.http.get<ImportJobListResponse>(\n `/api/v1/agents/${agentId}/users/imports`,\n params,\n );\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\n// Minimal WebSocket type declarations for environments that provide a global\n// WebSocket (Node.js >=21, browsers, Bun, Deno). This avoids pulling in DOM\n// lib types for the entire project.\ndeclare class WebSocket {\n constructor(url: string);\n binaryType: string;\n send(data: string | ArrayBuffer | Uint8Array): void;\n close(): void;\n addEventListener(type: \"open\", listener: () => void): void;\n addEventListener(type: \"message\", listener: (evt: { data: any }) => void): void;\n addEventListener(type: \"close\", listener: () => void): void;\n addEventListener(type: \"error\", listener: (evt: any) => void): void;\n removeEventListener(type: string, listener: (...args: any[]) => void): void;\n}\n\nimport type { HTTPClient } from \"../http.js\";\nimport type {\n VoiceListOptions,\n VoiceListResponse,\n VoiceStreamEvent,\n VoiceStreamToken,\n VoiceTokenOptions,\n TTSOptions,\n TTSResponse,\n STTOptions,\n STTResponse,\n} from \"../types.js\";\n\n/** Agent-scoped voice live operations (duplex WebSocket streaming via Gemini Live). */\nexport class Voice {\n constructor(private readonly http: HTTPClient) {}\n\n /**\n * Get a short-lived token for voice live WebSocket streaming.\n * The token expires in 60 seconds and is single-use.\n */\n async getToken(\n agentId: string,\n options: VoiceTokenOptions = {},\n ): Promise<VoiceStreamToken> {\n const body: Record<string, unknown> = {};\n if (options.voiceName) body.voiceName = options.voiceName;\n if (options.language) body.language = options.language;\n if (options.userId) body.userId = options.userId;\n if (options.compiledSystemPrompt)\n body.compiledSystemPrompt = options.compiledSystemPrompt;\n\n return this.http.post<VoiceStreamToken>(\n `/api/v1/agents/${agentId}/voice/live-ws-token`,\n body,\n );\n }\n\n /**\n * Open a bidirectional WebSocket for real-time voice chat via Gemini Live.\n *\n * @example\n * ```ts\n * const token = await client.agents.voice.getToken(agentId);\n * const stream = await client.agents.voice.stream(token);\n *\n * // Send PCM audio chunks (16kHz, 16-bit, mono)\n * stream.sendAudio(audioChunk);\n *\n * // Or send text input instead of audio\n * stream.sendText(\"Hello!\");\n *\n * for await (const event of stream) {\n * if (event.type === \"input_transcript\") console.log(\"User:\", event.text);\n * if (event.type === \"output_transcript\") console.log(\"Agent:\", event.text);\n * if (event.type === \"audio\") playPCMAudio(event.audio); // 24kHz PCM\n * if (event.type === \"turn_complete\") console.log(\"Turn done\");\n * if (event.type === \"session_ended\") break;\n * }\n *\n * stream.close();\n * ```\n */\n async stream(token: VoiceStreamToken): Promise<VoiceStreamInstance> {\n return VoiceStreamInstance.connect(token);\n }\n\n /**\n * Convert text to speech audio.\n *\n * @example\n * ```ts\n * const result = await client.agents.voice.tts(agentId, {\n * text: \"Hello, how are you?\",\n * voiceName: \"Kore\",\n * outputFormat: \"wav\",\n * });\n * // result.audio is base64-encoded WAV\n * ```\n */\n async tts(agentId: string, options: TTSOptions): Promise<TTSResponse> {\n const body: Record<string, unknown> = { text: options.text };\n if (options.voiceName) body.voiceName = options.voiceName;\n if (options.language) body.language = options.language;\n if (options.outputFormat) body.outputFormat = options.outputFormat;\n\n return this.http.post<TTSResponse>(\n `/api/v1/agents/${agentId}/voice/tts`,\n body,\n );\n }\n\n /**\n * Transcribe audio to text.\n *\n * @example\n * ```ts\n * const result = await client.agents.voice.stt(agentId, {\n * audio: base64Audio,\n * audioFormat: \"audio/wav\",\n * language: \"en-US\",\n * });\n * console.log(result.transcript);\n * ```\n */\n async stt(agentId: string, options: STTOptions): Promise<STTResponse> {\n const body: Record<string, unknown> = {\n audio: options.audio,\n audioFormat: options.audioFormat,\n };\n if (options.language) body.language = options.language;\n\n return this.http.post<STTResponse>(\n `/api/v1/agents/${agentId}/voice/stt`,\n body,\n );\n }\n}\n\n/**\n * Bidirectional WebSocket connection for real-time voice chat.\n *\n * Works in Node.js (>=21 with global WebSocket, or >=18 with `undici`/`ws`)\n * and modern browsers/Bun/Deno which have global WebSocket.\n */\nexport class VoiceStreamInstance {\n private ws: WebSocket;\n private closed = false;\n private eventQueue: VoiceStreamEvent[] = [];\n private waitResolve: ((value: IteratorResult<VoiceStreamEvent>) => void) | null = null;\n\n private constructor(ws: WebSocket) {\n this.ws = ws;\n\n ws.binaryType = \"arraybuffer\";\n\n ws.addEventListener(\"message\", (evt) => {\n let event: VoiceStreamEvent;\n if (evt.data instanceof ArrayBuffer) {\n event = { type: \"audio\", audio: new Uint8Array(evt.data) };\n } else {\n const parsed = JSON.parse(evt.data as string);\n event = {\n type: parsed.type ?? \"\",\n sessionId: parsed.sessionId ?? parsed.session_id,\n text: parsed.text,\n isFinal: parsed.isFinal,\n speaking: parsed.speaking,\n turnIndex: parsed.turnIndex,\n name: parsed.name,\n status: parsed.status,\n facts: parsed.facts,\n emotions: parsed.emotions,\n relationshipDelta: parsed.relationshipDelta,\n promptTokens: parsed.promptTokens,\n completionTokens: parsed.completionTokens,\n totalTokens: parsed.totalTokens,\n reason: parsed.reason,\n totalUsage: parsed.totalUsage,\n turnCount: parsed.turnCount,\n voiceName: parsed.voiceName,\n error: parsed.error,\n errorCode: parsed.errorCode ?? parsed.error_code ?? parsed.code,\n };\n }\n\n if (this.waitResolve) {\n const resolve = this.waitResolve;\n this.waitResolve = null;\n resolve({ value: event, done: false });\n } else {\n this.eventQueue.push(event);\n }\n });\n\n ws.addEventListener(\"close\", () => {\n this.closed = true;\n if (this.waitResolve) {\n const resolve = this.waitResolve;\n this.waitResolve = null;\n resolve({ value: undefined as unknown as VoiceStreamEvent, done: true });\n }\n });\n\n ws.addEventListener(\"error\", () => {\n this.closed = true;\n if (this.waitResolve) {\n const resolve = this.waitResolve;\n this.waitResolve = null;\n resolve({ value: undefined as unknown as VoiceStreamEvent, done: true });\n }\n });\n }\n\n /** Establish the WebSocket connection and authenticate. */\n static connect(token: VoiceStreamToken): Promise<VoiceStreamInstance> {\n return new Promise((resolve, reject) => {\n const ws = new WebSocket(token.wsUrl);\n ws.binaryType = \"arraybuffer\";\n\n const onOpen = () => {\n cleanup();\n // Send auth token as first text message\n ws.send(token.authToken);\n resolve(new VoiceStreamInstance(ws));\n };\n\n const onError = () => {\n cleanup();\n reject(new Error(\"Failed to connect voice WebSocket\"));\n };\n\n const cleanup = () => {\n ws.removeEventListener(\"open\", onOpen);\n ws.removeEventListener(\"error\", onError);\n };\n\n ws.addEventListener(\"open\", onOpen);\n ws.addEventListener(\"error\", onError);\n });\n }\n\n /** Send a binary audio chunk to the server. */\n sendAudio(audio: Uint8Array | ArrayBuffer): void {\n this.ws.send(audio);\n }\n\n /** Send a text message to the agent instead of audio. */\n sendText(text: string): void {\n this.ws.send(JSON.stringify({ type: \"text_input\", text }));\n }\n\n /** Gracefully end the voice session. */\n endSession(): void {\n this.ws.send(JSON.stringify({ type: \"end_session\" }));\n }\n\n /** Change audio format or sample rate mid-session. */\n configure(options: {\n audioFormat?: string;\n sampleRate?: number;\n }): void {\n const msg: Record<string, unknown> = { type: \"config\" };\n if (options.audioFormat) msg.audioFormat = options.audioFormat;\n if (options.sampleRate) msg.sampleRate = options.sampleRate;\n this.ws.send(JSON.stringify(msg));\n }\n\n /** Close the voice stream. */\n close(): void {\n if (!this.closed) {\n this.closed = true;\n this.ws.close();\n }\n }\n\n /** Async iterator for incoming events. */\n [Symbol.asyncIterator](): AsyncIterator<VoiceStreamEvent> {\n return {\n next: (): Promise<IteratorResult<VoiceStreamEvent>> => {\n if (this.eventQueue.length > 0) {\n return Promise.resolve({\n value: this.eventQueue.shift()!,\n done: false,\n });\n }\n if (this.closed) {\n return Promise.resolve({\n value: undefined as unknown as VoiceStreamEvent,\n done: true,\n });\n }\n return new Promise((resolve) => {\n this.waitResolve = resolve;\n });\n },\n };\n }\n}\n\n/** Global voice catalog operations. */\nexport class Voices {\n constructor(private readonly http: HTTPClient) {}\n\n /** List available voices from the catalog. */\n async list(options: VoiceListOptions = {}): Promise<VoiceListResponse> {\n return this.http.get<VoiceListResponse>(\"/api/v1/voices\", {\n tier: options.tier,\n gender: options.gender,\n language: options.language,\n limit: options.limit,\n offset: options.offset,\n });\n }\n}\n","import type { HTTPClient } from \"../http.js\";\n\nfunction requireNonEmpty(value: string, name: string): void {\n if (!value || typeof value !== \"string\" || value.trim() === \"\") {\n throw new Error(`${name} must be a non-empty string`);\n }\n}\n\nimport type {\n Agent,\n AgentCapabilities,\n AgentKBSearchOptions,\n AgentKBSearchResponse,\n AgentListOptions,\n AgentListResponse,\n BreakthroughsResponse,\n ChatOptions,\n ChatResponse,\n ChatStreamEvent,\n ChatUsage,\n ConsolidateOptions,\n ConsolidateResponse,\n ConstellationResponse,\n ContextDataOptions,\n CreateAgentOptions,\n CreateCustomToolOptions,\n CreateGoalOptions,\n CustomToolDefinition,\n CustomToolListResponse,\n DeleteGoalOptions,\n DialogueOptions,\n GenerateAvatarOptions,\n GenerateAvatarResponse,\n DialogueResponse,\n DiaryResponse,\n EvalOnlyOptions,\n EvaluateOptions,\n EvaluationResult,\n RunRef,\n Goal,\n GoalsResponse,\n HabitsResponse,\n InterestsResponse,\n EnrichedContextResponse,\n GetContextOptions,\n MoodAggregateResponse,\n ModelsResponse,\n MoodResponse,\n ProcessOptions,\n ProcessResponse,\n RelationshipResponse,\n RunEvalOptions,\n ScheduleWakeupOptions,\n ScheduledWakeup,\n SetStatusOptions,\n SetStatusResponse,\n SimulateOptions,\n SimulationEvent,\n SummariesOptions,\n SummariesResponse,\n TimeMachineOptions,\n TimeMachineResponse,\n ToolSchemasResponse,\n TriggerEventOptions,\n TriggerEventResponse,\n UpdateAgentOptions,\n UpdateCapabilitiesOptions,\n UpdateCustomToolOptions,\n UpdateGoalOptions,\n UpdateProjectOptions,\n UpdateProjectResponse,\n UsersResponse,\n WakeupsResponse,\n} from \"../types.js\";\nimport { CustomStates } from \"./custom-states.js\";\nimport { Generation } from \"./generation.js\";\nimport { Instances } from \"./instances.js\";\nimport { Memory } from \"./memory.js\";\nimport { Notifications } from \"./notifications.js\";\nimport { Personality } from \"./personality.js\";\nimport { Sessions } from \"./sessions.js\";\nimport { Inventory } from \"./inventory.js\";\nimport { Priming } from \"./priming.js\";\nimport { Voice } from \"./voice.js\";\n\nexport class Agents {\n readonly memory: Memory;\n readonly personality: Personality;\n readonly sessions: Sessions;\n readonly instances: Instances;\n readonly notifications: Notifications;\n readonly customStates: CustomStates;\n readonly voice: Voice;\n readonly generation: Generation;\n readonly priming: Priming;\n readonly inventory: Inventory;\n\n constructor(private readonly http: HTTPClient) {\n this.memory = new Memory(http);\n this.personality = new Personality(http);\n this.sessions = new Sessions(http);\n this.instances = new Instances(http);\n this.notifications = new Notifications(http);\n this.customStates = new CustomStates(http);\n this.voice = new Voice(http);\n this.generation = new Generation(http);\n this.priming = new Priming(http);\n this.inventory = new Inventory(http);\n }\n\n // -- Agent CRUD --\n\n /** Create a new agent. */\n async create(options: CreateAgentOptions): Promise<Agent> {\n const body: Record<string, unknown> = { name: options.name };\n if (options.agentId) body.agent_id = options.agentId;\n if (options.userId) body.user_id = options.userId;\n if (options.userDisplayName)\n body.user_display_name = options.userDisplayName;\n if (options.gender) body.gender = options.gender;\n if (options.bio) body.bio = options.bio;\n if (options.avatarUrl) body.avatar_url = options.avatarUrl;\n if (options.projectId) body.project_id = options.projectId;\n if (options.personalityPrompt)\n body.personality_prompt = options.personalityPrompt;\n if (options.speechPatterns) body.speech_patterns = options.speechPatterns;\n if (options.trueInterests) body.true_interests = options.trueInterests;\n if (options.trueDislikes) body.true_dislikes = options.trueDislikes;\n if (options.primaryTraits) body.primary_traits = options.primaryTraits;\n if (options.big5) body.big5 = options.big5;\n if (options.dimensions) body.dimensions = options.dimensions;\n if (options.preferences) body.preferences = options.preferences;\n if (options.behaviors) body.behaviors = options.behaviors;\n if (options.toolCapabilities)\n body.tool_capabilities = options.toolCapabilities;\n if (options.language) body.language = options.language;\n if (options.seedMemories) body.seed_memories = options.seedMemories;\n if (options.loreContext)\n body.lore_generation_context = options.loreContext;\n if (options.generateOriginStory != null)\n body.generate_origin_story = options.generateOriginStory;\n if (options.generatePersonalizedMemories != null)\n body.generate_personalized_memories =\n options.generatePersonalizedMemories;\n if (options.initialGoals) {\n body.initial_goals = options.initialGoals.map((g) => ({\n type: g.type,\n title: g.title,\n description: g.description,\n priority: g.priority,\n related_traits: g.relatedTraits,\n }));\n }\n\n return this.http.post<Agent>(\"/api/v1/agents\", body);\n }\n\n /** Get an agent by ID. */\n async get(agentId: string): Promise<Agent> {\n requireNonEmpty(agentId, \"agentId\");\n return this.http.get<Agent>(`/api/v1/agents/${agentId}`);\n }\n\n /** Update an agent's profile. */\n async update(agentId: string, options: UpdateAgentOptions): Promise<Agent> {\n requireNonEmpty(agentId, \"agentId\");\n const body: Record<string, unknown> = {};\n if (options.name) body.name = options.name;\n if (options.bio) body.bio = options.bio;\n if (options.avatarUrl) body.avatar_url = options.avatarUrl;\n if (options.personalityPrompt)\n body.personality_prompt = options.personalityPrompt;\n if (options.speechPatterns) body.speech_patterns = options.speechPatterns;\n if (options.trueInterests) body.true_interests = options.trueInterests;\n if (options.trueDislikes) body.true_dislikes = options.trueDislikes;\n if (options.big5) body.big5 = options.big5;\n if (options.dimensions) body.dimensions = options.dimensions;\n if (options.toolCapabilities)\n body.tool_capabilities = options.toolCapabilities;\n\n return this.http.patch<Agent>(`/api/v1/agents/${agentId}/profile`, body);\n }\n\n /** Delete an agent. */\n async delete(agentId: string): Promise<void> {\n requireNonEmpty(agentId, \"agentId\");\n await this.http.delete(`/api/v1/agents/${agentId}`);\n }\n\n // -- Chat --\n\n /** Send a chat message (non-streaming). Consumes the SSE stream and returns aggregated content. */\n async chat(options: ChatOptions): Promise<ChatResponse> {\n const body = this.buildChatBody(options);\n const parts: string[] = [];\n let usage: ChatUsage | undefined;\n\n for await (const event of this.http.streamSSE(\n \"POST\",\n `/api/v1/agents/${options.agent}/chat`,\n body,\n )) {\n const parsed = event as ChatStreamEvent;\n const content = parsed.choices?.[0]?.delta?.content;\n if (content) parts.push(content);\n if (parsed.usage) usage = parsed.usage;\n }\n\n return { content: parts.join(\"\"), sessionId: \"\", usage };\n }\n\n /** Send a chat message and stream events as an async iterator. */\n async *chatStream(\n options: ChatOptions,\n ): AsyncGenerator<ChatStreamEvent> {\n requireNonEmpty(options.agent, \"agentId\");\n const body = this.buildChatBody(options);\n for await (const event of this.http.streamSSE(\n \"POST\",\n `/api/v1/agents/${options.agent}/chat`,\n body,\n )) {\n yield event as ChatStreamEvent;\n }\n }\n\n // -- Dialogue --\n\n /** Initiate a dialogue with an agent. */\n async dialogue(\n agentId: string,\n options: DialogueOptions,\n ): Promise<DialogueResponse> {\n const body: Record<string, unknown> = {};\n if (options.userId) body.user_id = options.userId;\n if (options.messages) body.messages = options.messages;\n if (options.requestType) body.request_type = options.requestType;\n if (options.sceneGuidance) body.scene_guidance = options.sceneGuidance;\n if (options.toolConfig) body.tool_config = options.toolConfig;\n if (options.instanceId) body.instance_id = options.instanceId;\n\n return this.http.post<DialogueResponse>(\n `/api/v1/agents/${agentId}/dialogue`,\n body,\n );\n }\n\n // -- Events --\n\n /** Trigger a game event / activity for an agent. */\n async triggerGameEvent(\n agentId: string,\n options: TriggerEventOptions,\n ): Promise<TriggerEventResponse> {\n const body: Record<string, unknown> = {\n user_id: options.userId,\n event_type: options.eventType,\n };\n if (options.eventDescription)\n body.event_description = options.eventDescription;\n if (options.metadata) body.metadata = options.metadata;\n if (options.language) body.language = options.language;\n if (options.instanceId) body.instance_id = options.instanceId;\n\n return this.http.post<TriggerEventResponse>(\n `/api/v1/agents/${agentId}/events`,\n body,\n );\n }\n\n // -- Wakeups --\n\n /** Schedule a wakeup for an agent. */\n async scheduleWakeup(\n agentId: string,\n options: ScheduleWakeupOptions,\n ): Promise<ScheduledWakeup> {\n const body: Record<string, unknown> = {\n user_id: options.userId,\n scheduled_at: options.scheduledAt,\n check_type: options.checkType,\n };\n if (options.intent) body.intent = options.intent;\n if (options.occasion) body.occasion = options.occasion;\n if (options.interestTopic) body.interest_topic = options.interestTopic;\n if (options.eventDescription)\n body.event_description = options.eventDescription;\n\n return this.http.post<ScheduledWakeup>(\n `/api/v1/agents/${agentId}/wakeups`,\n body,\n );\n }\n\n /** Get wakeups for an agent. */\n async getWakeups(\n agentId: string,\n options: ContextDataOptions = {},\n ): Promise<WakeupsResponse> {\n return this.http.get(`/api/v1/agents/${agentId}/wakeups`, {\n user_id: options.userId,\n instance_id: options.instanceId,\n });\n }\n\n // -- Evaluation --\n\n /** Evaluate an agent against a template. */\n async evaluate(\n agentId: string,\n options: EvaluateOptions,\n ): Promise<EvaluationResult> {\n const body: Record<string, unknown> = {\n messages: options.messages,\n template_id: options.templateId,\n };\n if (options.configOverride) body.config_override = options.configOverride;\n\n return this.http.post<EvaluationResult>(\n `/api/v1/agents/${agentId}/evaluate`,\n body,\n );\n }\n\n /** Run a simulation and stream events (two-step: POST to start, then stream SSE). */\n async *simulate(\n agentId: string,\n options: SimulateOptions = {},\n ): AsyncGenerator<SimulationEvent> {\n const ref = await this.simulateAsync(agentId, options);\n for await (const event of this.http.streamSSE(\n \"GET\",\n `/api/v1/eval-runs/${ref.run_id}/events?from=0`,\n )) {\n yield event as SimulationEvent;\n }\n }\n\n /** Start a simulation without waiting for results. Returns a RunRef for later streaming. */\n async simulateAsync(\n agentId: string,\n options: SimulateOptions = {},\n ): Promise<RunRef> {\n const body: Record<string, unknown> = {};\n if (options.sessions) body.sessions = options.sessions;\n if (options.userPersona) body.user_persona = options.userPersona;\n if (options.config) body.config = options.config;\n if (options.model) body.model = options.model;\n if (options.configOverride) body.config_override = options.configOverride;\n\n return this.http.post<RunRef>(\n `/api/v1/agents/${agentId}/simulate`,\n body,\n );\n }\n\n /** Run simulation + evaluation combined (two-step: POST to start, then stream SSE). */\n async *runEval(\n agentId: string,\n options: RunEvalOptions,\n ): AsyncGenerator<SimulationEvent> {\n const ref = await this.runEvalAsync(agentId, options);\n for await (const event of this.http.streamSSE(\n \"GET\",\n `/api/v1/eval-runs/${ref.run_id}/events?from=0`,\n )) {\n yield event as SimulationEvent;\n }\n }\n\n /** Start simulation + evaluation without waiting for results. Returns a RunRef for later streaming. */\n async runEvalAsync(\n agentId: string,\n options: RunEvalOptions,\n ): Promise<RunRef> {\n const body: Record<string, unknown> = {\n template_id: options.templateId,\n };\n if (options.sessions) body.sessions = options.sessions;\n if (options.userPersona) body.user_persona = options.userPersona;\n if (options.simulationConfig)\n body.simulation_config = options.simulationConfig;\n if (options.model) body.model = options.model;\n if (options.configOverride) body.config_override = options.configOverride;\n if (options.adaptationTemplateId)\n body.adaptation_template_id = options.adaptationTemplateId;\n if (options.qualityOnly != null) body.quality_only = options.qualityOnly;\n\n return this.http.post<RunRef>(\n `/api/v1/agents/${agentId}/run-eval`,\n body,\n );\n }\n\n /** Re-evaluate an existing run (two-step: POST to start, then stream SSE). */\n async *evalOnly(\n agentId: string,\n options: EvalOnlyOptions,\n ): AsyncGenerator<SimulationEvent> {\n const ref = await this.evalOnlyAsync(agentId, options);\n for await (const event of this.http.streamSSE(\n \"GET\",\n `/api/v1/eval-runs/${ref.run_id}/events?from=0`,\n )) {\n yield event as SimulationEvent;\n }\n }\n\n /** Re-evaluate an existing run without waiting for results. Returns a RunRef for later streaming. */\n async evalOnlyAsync(\n agentId: string,\n options: EvalOnlyOptions,\n ): Promise<RunRef> {\n const body: Record<string, unknown> = {\n template_id: options.templateId,\n source_run_id: options.sourceRunId,\n };\n if (options.adaptationTemplateId)\n body.adaptation_template_id = options.adaptationTemplateId;\n if (options.qualityOnly != null) body.quality_only = options.qualityOnly;\n\n return this.http.post<RunRef>(\n `/api/v1/agents/${agentId}/eval-only`,\n body,\n );\n }\n\n // -- Context Engine convenience accessors --\n\n async getMood(\n agentId: string,\n options: ContextDataOptions = {},\n ): Promise<MoodResponse> {\n return this.http.get(`/api/v1/agents/${agentId}/mood`, {\n user_id: options.userId,\n instance_id: options.instanceId,\n });\n }\n\n async getMoodHistory(\n agentId: string,\n options: ContextDataOptions = {},\n ): Promise<MoodResponse> {\n return this.http.get(`/api/v1/agents/${agentId}/mood-history`, {\n user_id: options.userId,\n instance_id: options.instanceId,\n });\n }\n\n /** Get aggregated mood statistics for an agent. */\n async getMoodAggregate(\n agentId: string,\n options: ContextDataOptions = {},\n ): Promise<MoodAggregateResponse> {\n return this.http.get(`/api/v1/agents/${agentId}/mood/aggregate`, {\n user_id: options.userId,\n instance_id: options.instanceId,\n });\n }\n\n async getRelationships(\n agentId: string,\n options: ContextDataOptions = {},\n ): Promise<RelationshipResponse> {\n return this.http.get(`/api/v1/agents/${agentId}/relationships`, {\n user_id: options.userId,\n instance_id: options.instanceId,\n });\n }\n\n async getHabits(\n agentId: string,\n options: ContextDataOptions = {},\n ): Promise<HabitsResponse> {\n return this.http.get(`/api/v1/agents/${agentId}/habits`, {\n user_id: options.userId,\n instance_id: options.instanceId,\n });\n }\n\n async getGoals(\n agentId: string,\n options: ContextDataOptions = {},\n ): Promise<GoalsResponse> {\n return this.http.get(`/api/v1/agents/${agentId}/goals`, {\n user_id: options.userId,\n instance_id: options.instanceId,\n });\n }\n\n /** Create a goal for an agent. Set userId to create a per-user goal. */\n async createGoal(\n agentId: string,\n options: CreateGoalOptions,\n ): Promise<Goal> {\n const body: Record<string, unknown> = {\n title: options.title,\n description: options.description,\n };\n if (options.userId) body.user_id = options.userId;\n if (options.type) body.type = options.type;\n if (options.priority != null) body.priority = options.priority;\n if (options.relatedTraits) body.related_traits = options.relatedTraits;\n\n return this.http.post<Goal>(\n `/api/v1/agents/${agentId}/goals`,\n body,\n );\n }\n\n /** Update an existing goal. Set userId for per-user goals. */\n async updateGoal(\n agentId: string,\n goalId: string,\n options: UpdateGoalOptions,\n ): Promise<Goal> {\n const body: Record<string, unknown> = {};\n if (options.userId) body.user_id = options.userId;\n if (options.title) body.title = options.title;\n if (options.description) body.description = options.description;\n if (options.priority != null) body.priority = options.priority;\n if (options.status) body.status = options.status;\n if (options.relatedTraits) body.related_traits = options.relatedTraits;\n\n return this.http.put<Goal>(\n `/api/v1/agents/${agentId}/goals/${goalId}`,\n body,\n );\n }\n\n /** Delete (soft-abandon) a goal. Set userId for per-user goals. */\n async deleteGoal(\n agentId: string,\n goalId: string,\n options: DeleteGoalOptions = {},\n ): Promise<void> {\n const params: Record<string, string> = {};\n if (options.userId) params.user_id = options.userId;\n\n await this.http.delete(\n `/api/v1/agents/${agentId}/goals/${goalId}`,\n params,\n );\n }\n\n async getInterests(\n agentId: string,\n options: ContextDataOptions = {},\n ): Promise<InterestsResponse> {\n return this.http.get(`/api/v1/agents/${agentId}/interests`, {\n user_id: options.userId,\n instance_id: options.instanceId,\n });\n }\n\n async getDiary(\n agentId: string,\n options: ContextDataOptions = {},\n ): Promise<DiaryResponse> {\n return this.http.get(`/api/v1/agents/${agentId}/diary`, {\n user_id: options.userId,\n instance_id: options.instanceId,\n });\n }\n\n async getUsers(agentId: string): Promise<UsersResponse> {\n return this.http.get(`/api/v1/agents/${agentId}/users`);\n }\n\n /** Get constellation data for an agent. */\n async getConstellation(\n agentId: string,\n options: ContextDataOptions = {},\n ): Promise<ConstellationResponse> {\n return this.http.get(`/api/v1/agents/${agentId}/constellation`, {\n user_id: options.userId,\n instance_id: options.instanceId,\n });\n }\n\n /** Get breakthroughs for an agent. */\n async getBreakthroughs(\n agentId: string,\n options: ContextDataOptions = {},\n ): Promise<BreakthroughsResponse> {\n return this.http.get(`/api/v1/agents/${agentId}/breakthroughs`, {\n user_id: options.userId,\n instance_id: options.instanceId,\n });\n }\n\n // -- Agent List --\n\n /** List agents with optional pagination, search, and project filtering. */\n async list(options?: AgentListOptions): Promise<AgentListResponse> {\n const params: Record<string, string> = {};\n if (options?.pageSize) params.page_size = String(options.pageSize);\n if (options?.cursor) params.cursor = options.cursor;\n if (options?.search) params.search = options.search;\n if (options?.projectId) params.project_id = options.projectId;\n return this.http.get<AgentListResponse>(\"/api/v1/agents\", params);\n }\n\n // -- Agent Status --\n\n /** Set the active status of an agent. */\n async setStatus(agentId: string, options: SetStatusOptions): Promise<SetStatusResponse> {\n return this.http.patch<SetStatusResponse>(`/api/v1/agents/${agentId}/status`, options as unknown as Record<string, unknown>);\n }\n\n // -- Project Association --\n\n /** Update an agent's project association. */\n async updateProject(agentId: string, options: UpdateProjectOptions): Promise<UpdateProjectResponse> {\n return this.http.patch<UpdateProjectResponse>(`/api/v1/agents/${agentId}/project`, options as unknown as Record<string, unknown>);\n }\n\n // -- Capabilities --\n\n /** Get an agent's capabilities. */\n async getCapabilities(agentId: string): Promise<AgentCapabilities> {\n return this.http.get<AgentCapabilities>(`/api/v1/agents/${agentId}/capabilities`);\n }\n\n /** Update an agent's capabilities. */\n async updateCapabilities(agentId: string, options: UpdateCapabilitiesOptions): Promise<AgentCapabilities> {\n return this.http.patch<AgentCapabilities>(`/api/v1/agents/${agentId}/capabilities`, options as unknown as Record<string, unknown>);\n }\n\n // -- Custom Tools --\n\n /** List custom tools for an agent. */\n async listCustomTools(agentId: string): Promise<CustomToolListResponse> {\n return this.http.get<CustomToolListResponse>(`/api/v1/agents/${agentId}/tools`);\n }\n\n /** Create a custom tool for an agent. */\n async createCustomTool(agentId: string, options: CreateCustomToolOptions): Promise<CustomToolDefinition> {\n return this.http.post<CustomToolDefinition>(`/api/v1/agents/${agentId}/tools`, options as unknown as Record<string, unknown>);\n }\n\n /** Update a custom tool for an agent. */\n async updateCustomTool(agentId: string, toolName: string, options: UpdateCustomToolOptions): Promise<{ success: boolean }> {\n return this.http.put<{ success: boolean }>(`/api/v1/agents/${agentId}/tools/${toolName}`, options as unknown as Record<string, unknown>);\n }\n\n /** Delete a custom tool from an agent. */\n async deleteCustomTool(agentId: string, toolName: string): Promise<void> {\n return this.http.delete<void>(`/api/v1/agents/${agentId}/tools/${toolName}`);\n }\n\n // -- Avatar Generation --\n\n /** Trigger avatar generation for an agent. */\n async generateAvatar(agentId: string, options?: GenerateAvatarOptions): Promise<GenerateAvatarResponse> {\n return this.http.post<GenerateAvatarResponse>(\n `/api/v1/agents/${agentId}/avatar/generate`,\n (options ?? {}) as Record<string, unknown>,\n );\n }\n\n // -- Process (full pipeline) --\n\n /**\n * Run the full Context Engine pipeline on conversation messages without\n * generating a chat response. Extracts side effects via LLM, processes\n * behavioral updates (mood, personality, habits, interests, relationships),\n * stores memories, and runs session-end analysis.\n */\n async process(agentId: string, options: ProcessOptions): Promise<ProcessResponse> {\n requireNonEmpty(agentId, \"agentId\");\n requireNonEmpty(options.userId, \"options.userId\");\n const body: Record<string, unknown> = {\n userId: options.userId,\n messages: options.messages,\n };\n if (options.sessionId) body.sessionId = options.sessionId;\n if (options.instanceId) body.instanceId = options.instanceId;\n if (options.provider) body.provider = options.provider;\n if (options.model) body.model = options.model;\n if (options.includeExtractions) body.include_extractions = options.includeExtractions;\n return this.http.post<ProcessResponse>(`/api/v1/agents/${agentId}/process`, body);\n }\n\n /** Get available LLM providers and models for the /process endpoint. */\n async getModels(agentId: string): Promise<ModelsResponse> {\n return this.http.get<ModelsResponse>(`/api/v1/agents/${agentId}/models`);\n }\n\n // -- Context (single-call enriched context) --\n\n /**\n * Get the full enriched agent context in a single call.\n * Returns all 7 layers (personality, mood, memory, relationships, goals, etc.)\n * This replaces multiple individual API calls with one round-trip.\n */\n async getContext(\n agentId: string,\n options: GetContextOptions,\n ): Promise<EnrichedContextResponse> {\n requireNonEmpty(agentId, \"agentId\");\n requireNonEmpty(options.userId, \"options.userId\");\n const params: Record<string, string> = { userId: options.userId };\n if (options.sessionId) params.sessionId = options.sessionId;\n if (options.instanceId) params.instanceId = options.instanceId;\n if (options.query) params.query = options.query;\n if (options.language) params.language = options.language;\n if (options.timezone) params.timezone = options.timezone;\n return this.http.get<EnrichedContextResponse>(\n `/api/v1/agents/${agentId}/context`,\n params,\n );\n }\n\n // -- Consolidation --\n\n /** Trigger memory consolidation for an agent. */\n async consolidate(agentId: string, options?: ConsolidateOptions): Promise<ConsolidateResponse> {\n return this.http.post<ConsolidateResponse>(`/api/v1/agents/${agentId}/consolidate`, (options ?? {}) as Record<string, unknown>);\n }\n\n /** Get memory summaries for an agent. */\n async getSummaries(agentId: string, options?: SummariesOptions): Promise<SummariesResponse> {\n const params: Record<string, string> = {};\n if (options?.period) params.period = options.period;\n if (options?.limit) params.limit = String(options.limit);\n return this.http.get<SummariesResponse>(`/api/v1/agents/${agentId}/summaries`, params);\n }\n\n // -- Time Machine --\n\n /** Get a point-in-time snapshot of an agent's personality and mood. */\n async getTimeMachine(agentId: string, options: TimeMachineOptions): Promise<TimeMachineResponse> {\n const params: Record<string, string> = { at: options.at };\n if (options.userId) params.user_id = options.userId;\n if (options.instanceId) params.instance_id = options.instanceId;\n return this.http.get<TimeMachineResponse>(`/api/v1/agents/${agentId}/timemachine`, params);\n }\n\n // -- Knowledge Search (tool endpoint) --\n\n /** Search the knowledge base for an agent. */\n async knowledgeSearch(\n agentId: string,\n options: AgentKBSearchOptions,\n ): Promise<AgentKBSearchResponse> {\n requireNonEmpty(agentId, \"agentId\");\n const body: Record<string, unknown> = { query: options.query };\n if (options.limit != null) body.limit = options.limit;\n return this.http.post<AgentKBSearchResponse>(\n `/api/v1/agents/${agentId}/tools/knowledge-search`,\n body,\n );\n }\n\n // -- Tool Schemas (BYO-LLM) --\n\n /** Get tool schemas available for an agent (for BYO-LLM integrations). */\n async getTools(agentId: string): Promise<ToolSchemasResponse> {\n requireNonEmpty(agentId, \"agentId\");\n return this.http.get<ToolSchemasResponse>(\n `/api/v1/agents/${agentId}/tools`,\n );\n }\n\n private buildChatBody(options: ChatOptions): Record<string, unknown> {\n const body: Record<string, unknown> = { messages: options.messages };\n if (options.userId) body.user_id = options.userId;\n if (options.userDisplayName)\n body.user_display_name = options.userDisplayName;\n if (options.sessionId) body.session_id = options.sessionId;\n if (options.instanceId) body.instance_id = options.instanceId;\n if (options.provider) body.provider = options.provider;\n if (options.model) body.model = options.model;\n if (options.continuationToken)\n body.continuation_token = options.continuationToken;\n if (options.requestType) body.request_type = options.requestType;\n if (options.language) body.language = options.language;\n if (options.compiledSystemPrompt)\n body.compiled_system_prompt = options.compiledSystemPrompt;\n if (options.interactionRole)\n body.interaction_role = options.interactionRole;\n if (options.timezone) body.timezone = options.timezone;\n if (options.toolCapabilities)\n body.tool_capabilities = options.toolCapabilities;\n if (options.toolDefinitions)\n body.tool_definitions = options.toolDefinitions;\n return body;\n }\n}\n","import type { HTTPClient } from \"../http.js\";\nimport type {\n CustomLLMConfigResponse,\n SetCustomLLMOptions,\n} from \"../types.js\";\n\n/** Project-scoped custom LLM provider configuration. */\nexport class CustomLLM {\n constructor(private readonly http: HTTPClient) {}\n\n /** Get the custom LLM config for a project. */\n async get(projectId: string): Promise<CustomLLMConfigResponse> {\n return this.http.get<CustomLLMConfigResponse>(\n `/api/v1/projects/${projectId}/custom-llm`,\n );\n }\n\n /** Set or update the custom LLM config. */\n async set(\n projectId: string,\n options: SetCustomLLMOptions,\n ): Promise<CustomLLMConfigResponse> {\n return this.http.put<CustomLLMConfigResponse>(\n `/api/v1/projects/${projectId}/custom-llm`,\n options as unknown as Record<string, unknown>,\n );\n }\n\n /** Delete the custom LLM config. */\n async delete(projectId: string): Promise<void> {\n await this.http.delete(`/api/v1/projects/${projectId}/custom-llm`);\n }\n}\n","import type { HTTPClient } from \"../http.js\";\nimport type {\n EvalRun,\n EvalRunListOptions,\n EvalRunListResponse,\n SessionResponse,\n SimulationEvent,\n} from \"../types.js\";\n\nexport class EvalRuns {\n constructor(private readonly http: HTTPClient) {}\n\n /** List eval runs. */\n async list(options: EvalRunListOptions = {}): Promise<EvalRunListResponse> {\n return this.http.get<EvalRunListResponse>(\"/api/v1/eval-runs\", {\n agent_id: options.agentId,\n limit: options.limit,\n offset: options.offset,\n });\n }\n\n /** Get a specific eval run. */\n async get(runId: string): Promise<EvalRun> {\n return this.http.get<EvalRun>(`/api/v1/eval-runs/${runId}`);\n }\n\n /** Delete an eval run. */\n async delete(runId: string): Promise<SessionResponse> {\n return this.http.delete<SessionResponse>(`/api/v1/eval-runs/${runId}`);\n }\n\n /** Stream SSE events from a running eval. Supports reconnection via fromIndex. */\n async *streamEvents(\n runId: string,\n fromIndex = 0,\n ): AsyncGenerator<SimulationEvent> {\n for await (const event of this.http.streamSSE(\n \"GET\",\n `/api/v1/eval-runs/${runId}/events?from=${fromIndex}`,\n )) {\n yield event as SimulationEvent;\n }\n }\n}\n","import type { HTTPClient } from \"../http.js\";\nimport type {\n EvalTemplate,\n EvalTemplateCreateOptions,\n EvalTemplateListResponse,\n EvalTemplateUpdateOptions,\n SessionResponse,\n} from \"../types.js\";\n\nexport class EvalTemplates {\n constructor(private readonly http: HTTPClient) {}\n\n /** List all eval templates. */\n async list(options: { templateType?: string } = {}): Promise<EvalTemplateListResponse> {\n return this.http.get<EvalTemplateListResponse>(\"/api/v1/eval-templates\", {\n type: options.templateType,\n });\n }\n\n /** Get a specific eval template. */\n async get(templateId: string): Promise<EvalTemplate> {\n return this.http.get<EvalTemplate>(`/api/v1/eval-templates/${templateId}`);\n }\n\n /** Create a new eval template. */\n async create(options: EvalTemplateCreateOptions): Promise<EvalTemplate> {\n const body: Record<string, unknown> = {\n name: options.name,\n description: options.description ?? \"\",\n template_type: options.templateType ?? \"\",\n judge_model: options.judgeModel ?? \"gemini-3.1-pro-preview\",\n temperature: options.temperature ?? 0.3,\n max_tokens: options.maxTokens ?? 8192,\n scoring_rubric: options.scoringRubric ?? \"\",\n };\n if (options.categories) body.categories = options.categories;\n\n return this.http.post<EvalTemplate>(\"/api/v1/eval-templates\", body);\n }\n\n /** Update an eval template. */\n async update(\n templateId: string,\n options: EvalTemplateUpdateOptions,\n ): Promise<EvalTemplate> {\n const body: Record<string, unknown> = {};\n if (options.name !== undefined) body.name = options.name;\n if (options.description !== undefined) body.description = options.description;\n if (options.templateType !== undefined) body.template_type = options.templateType;\n if (options.judgeModel !== undefined) body.judge_model = options.judgeModel;\n if (options.temperature !== undefined) body.temperature = options.temperature;\n if (options.maxTokens !== undefined) body.max_tokens = options.maxTokens;\n if (options.scoringRubric !== undefined) body.scoring_rubric = options.scoringRubric;\n if (options.categories !== undefined) body.categories = options.categories;\n\n return this.http.put<EvalTemplate>(\n `/api/v1/eval-templates/${templateId}`,\n body,\n );\n }\n\n /** Delete an eval template. */\n async delete(templateId: string): Promise<SessionResponse> {\n return this.http.delete<SessionResponse>(\n `/api/v1/eval-templates/${templateId}`,\n );\n }\n}\n","import type { HTTPClient } from \"../http.js\";\nimport type {\n KBDocument,\n KBDocumentListResponse,\n KBNodeListResponse,\n KBNodeDetailResponse,\n KBNodeHistoryResponse,\n KBSearchResponse,\n KBSearchOptions,\n KBEntitySchema,\n KBSchemaListResponse,\n KBStats,\n InsertFactsOptions,\n InsertFactsResponse,\n CreateSchemaOptions,\n KBAnalyticsRule,\n KBAnalyticsRuleListResponse,\n CreateAnalyticsRuleOptions,\n UpdateAnalyticsRuleOptions,\n KBRecommendationsResponse,\n KBTrendsResponse,\n KBTrendRankingsResponse,\n KBConversionsResponse,\n RecordFeedbackOptions,\n KBBulkUpdateOptions,\n KBBulkUpdateResponse,\n} from \"../types.js\";\n\n/** Project-scoped knowledge base operations. */\nexport class Knowledge {\n constructor(private readonly http: HTTPClient) {}\n\n // -- Documents --\n\n /** List documents for a project. */\n async listDocuments(\n projectId: string,\n limit?: number,\n ): Promise<KBDocumentListResponse> {\n const params: Record<string, string> = {};\n if (limit) params.limit = String(limit);\n return this.http.get<KBDocumentListResponse>(\n `/api/v1/projects/${projectId}/knowledge/documents`,\n params,\n );\n }\n\n /** Get a single document. */\n async getDocument(\n projectId: string,\n docId: string,\n ): Promise<KBDocument> {\n return this.http.get<KBDocument>(\n `/api/v1/projects/${projectId}/knowledge/documents/${docId}`,\n );\n }\n\n /** Delete a document. */\n async deleteDocument(\n projectId: string,\n docId: string,\n ): Promise<void> {\n await this.http.delete(\n `/api/v1/projects/${projectId}/knowledge/documents/${docId}`,\n );\n }\n\n // -- Facts / Graph --\n\n /** Insert entities and relationships into the knowledge graph. */\n async insertFacts(\n projectId: string,\n options: InsertFactsOptions,\n ): Promise<InsertFactsResponse> {\n return this.http.post<InsertFactsResponse>(\n `/api/v1/projects/${projectId}/knowledge/facts`,\n options as unknown as Record<string, unknown>,\n );\n }\n\n /** List knowledge graph nodes. */\n async listNodes(\n projectId: string,\n options: { type?: string; limit?: number } = {},\n ): Promise<KBNodeListResponse> {\n const params: Record<string, string> = {};\n if (options.type) params.type = options.type;\n if (options.limit) params.limit = String(options.limit);\n return this.http.get<KBNodeListResponse>(\n `/api/v1/projects/${projectId}/knowledge/nodes`,\n params,\n );\n }\n\n /** Get a node with connected edges. */\n async getNode(\n projectId: string,\n nodeId: string,\n includeHistory = false,\n ): Promise<KBNodeDetailResponse> {\n const params: Record<string, string> = {};\n if (includeHistory) params.history = \"true\";\n return this.http.get<KBNodeDetailResponse>(\n `/api/v1/projects/${projectId}/knowledge/nodes/${nodeId}`,\n params,\n );\n }\n\n /** Soft-delete a node. */\n async deleteNode(\n projectId: string,\n nodeId: string,\n ): Promise<void> {\n await this.http.delete(\n `/api/v1/projects/${projectId}/knowledge/nodes/${nodeId}`,\n );\n }\n\n /** Get version history for a node. */\n async getNodeHistory(\n projectId: string,\n nodeId: string,\n limit?: number,\n ): Promise<KBNodeHistoryResponse> {\n const params: Record<string, string> = {};\n if (limit) params.limit = String(limit);\n return this.http.get<KBNodeHistoryResponse>(\n `/api/v1/projects/${projectId}/knowledge/nodes/${nodeId}/history`,\n params,\n );\n }\n\n // -- Search --\n\n /** BM25 search with 1-hop graph traversal. */\n async search(\n projectId: string,\n options: KBSearchOptions,\n ): Promise<KBSearchResponse> {\n const params: Record<string, string> = { q: options.query };\n if (options.limit) params.limit = String(options.limit);\n if (options.includeHistory) params.history = \"true\";\n if (options.entityTypes) params.type = options.entityTypes;\n if (options.filters) params.filters = options.filters;\n return this.http.get<KBSearchResponse>(\n `/api/v1/projects/${projectId}/knowledge/search`,\n params,\n );\n }\n\n // -- Schemas --\n\n /** Create an entity schema. */\n async createSchema(\n projectId: string,\n options: CreateSchemaOptions,\n ): Promise<KBEntitySchema> {\n return this.http.post<KBEntitySchema>(\n `/api/v1/projects/${projectId}/knowledge/schemas`,\n options as unknown as Record<string, unknown>,\n );\n }\n\n /** List entity schemas. */\n async listSchemas(projectId: string): Promise<KBSchemaListResponse> {\n return this.http.get<KBSchemaListResponse>(\n `/api/v1/projects/${projectId}/knowledge/schemas`,\n );\n }\n\n /** Update an entity schema. */\n async updateSchema(\n projectId: string,\n schemaId: string,\n options: CreateSchemaOptions,\n ): Promise<KBEntitySchema> {\n return this.http.put<KBEntitySchema>(\n `/api/v1/projects/${projectId}/knowledge/schemas/${schemaId}`,\n options as unknown as Record<string, unknown>,\n );\n }\n\n /** Delete an entity schema. */\n async deleteSchema(\n projectId: string,\n schemaId: string,\n ): Promise<void> {\n await this.http.delete(\n `/api/v1/projects/${projectId}/knowledge/schemas/${schemaId}`,\n );\n }\n\n // -- Stats --\n\n /** Get knowledge base statistics. */\n async getStats(projectId: string): Promise<KBStats> {\n return this.http.get<KBStats>(\n `/api/v1/projects/${projectId}/knowledge/stats`,\n );\n }\n\n // -- Analytics Rules --\n\n /** Create an analytics rule. */\n async createAnalyticsRule(\n projectId: string,\n options: CreateAnalyticsRuleOptions,\n ): Promise<KBAnalyticsRule> {\n return this.http.post<KBAnalyticsRule>(\n `/api/v1/projects/${projectId}/knowledge/analytics/rules`,\n options as unknown as Record<string, unknown>,\n );\n }\n\n /** List analytics rules. */\n async listAnalyticsRules(\n projectId: string,\n ): Promise<KBAnalyticsRuleListResponse> {\n return this.http.get<KBAnalyticsRuleListResponse>(\n `/api/v1/projects/${projectId}/knowledge/analytics/rules`,\n );\n }\n\n /** Get a single analytics rule. */\n async getAnalyticsRule(\n projectId: string,\n ruleId: string,\n ): Promise<KBAnalyticsRule> {\n return this.http.get<KBAnalyticsRule>(\n `/api/v1/projects/${projectId}/knowledge/analytics/rules/${ruleId}`,\n );\n }\n\n /** Update an analytics rule. */\n async updateAnalyticsRule(\n projectId: string,\n ruleId: string,\n options: UpdateAnalyticsRuleOptions,\n ): Promise<KBAnalyticsRule> {\n return this.http.put<KBAnalyticsRule>(\n `/api/v1/projects/${projectId}/knowledge/analytics/rules/${ruleId}`,\n options as unknown as Record<string, unknown>,\n );\n }\n\n /** Delete an analytics rule. */\n async deleteAnalyticsRule(\n projectId: string,\n ruleId: string,\n ): Promise<void> {\n await this.http.delete(\n `/api/v1/projects/${projectId}/knowledge/analytics/rules/${ruleId}`,\n );\n }\n\n /** Trigger a manual run of an analytics rule. */\n async runAnalyticsRule(\n projectId: string,\n ruleId: string,\n ): Promise<void> {\n await this.http.post(\n `/api/v1/projects/${projectId}/knowledge/analytics/rules/${ruleId}/run`,\n {},\n );\n }\n\n // -- Analytics Queries --\n\n /** Get recommendations for a source node. */\n async getRecommendations(\n projectId: string,\n ruleId: string,\n sourceId: string,\n limit?: number,\n ): Promise<KBRecommendationsResponse> {\n const params: Record<string, string> = {\n rule_id: ruleId,\n source_id: sourceId,\n };\n if (limit) params.limit = String(limit);\n return this.http.get<KBRecommendationsResponse>(\n `/api/v1/projects/${projectId}/knowledge/analytics/recommendations`,\n params,\n );\n }\n\n /** Get trend aggregations for a node. */\n async getTrends(\n projectId: string,\n nodeId: string,\n ): Promise<KBTrendsResponse> {\n return this.http.get<KBTrendsResponse>(\n `/api/v1/projects/${projectId}/knowledge/analytics/trends`,\n { node_id: nodeId },\n );\n }\n\n /** Get trend rankings. */\n async getTrendRankings(\n projectId: string,\n ruleId: string,\n type: string,\n window: string,\n limit?: number,\n ): Promise<KBTrendRankingsResponse> {\n const params: Record<string, string> = {\n rule_id: ruleId,\n type,\n window,\n };\n if (limit) params.limit = String(limit);\n return this.http.get<KBTrendRankingsResponse>(\n `/api/v1/projects/${projectId}/knowledge/analytics/rankings`,\n params,\n );\n }\n\n /** Get conversion statistics. */\n async getConversions(\n projectId: string,\n ruleId: string,\n segment?: string,\n ): Promise<KBConversionsResponse> {\n const params: Record<string, string> = { rule_id: ruleId };\n if (segment) params.segment = segment;\n return this.http.get<KBConversionsResponse>(\n `/api/v1/projects/${projectId}/knowledge/analytics/conversions`,\n params,\n );\n }\n\n /** Record recommendation feedback. */\n async recordFeedback(\n projectId: string,\n options: RecordFeedbackOptions,\n ): Promise<void> {\n await this.http.post(\n `/api/v1/projects/${projectId}/knowledge/analytics/feedback`,\n options as unknown as Record<string, unknown>,\n );\n }\n\n // -- Bulk Update --\n\n /**\n * Batch-update KB node properties. Merges properties into existing nodes\n * matched by label + entity_type. Creates nodes that don't exist yet.\n * Sync for <=100 items; async via NATS for larger batches.\n */\n async bulkUpdate(\n projectId: string,\n options: KBBulkUpdateOptions,\n ): Promise<KBBulkUpdateResponse> {\n return this.http.patch<KBBulkUpdateResponse>(\n `/api/v1/projects/${projectId}/knowledge/bulk-update`,\n options as unknown as Record<string, unknown>,\n );\n }\n}\n","import type { HTTPClient } from \"../http.js\";\nimport type {\n ProjectConfigEntry,\n ProjectConfigListResponse,\n} from \"../types.js\";\n\n/** Project-scoped configuration (key-value store). */\nexport class ProjectConfig {\n constructor(private readonly http: HTTPClient) {}\n\n /** List all config entries for a project. */\n async list(projectId: string): Promise<ProjectConfigListResponse> {\n return this.http.get<ProjectConfigListResponse>(\n `/api/v1/projects/${projectId}/config`,\n );\n }\n\n /** Get a config value by key. Returns the raw JSON value. */\n async get(projectId: string, key: string): Promise<ProjectConfigEntry> {\n return this.http.get<ProjectConfigEntry>(\n `/api/v1/projects/${projectId}/config/${key}`,\n );\n }\n\n /** Set a config value. Body must be valid JSON. */\n async set(\n projectId: string,\n key: string,\n value: unknown,\n ): Promise<{ success: boolean }> {\n return this.http.put<{ success: boolean }>(\n `/api/v1/projects/${projectId}/config/${key}`,\n value as Record<string, unknown>,\n );\n }\n\n /** Delete a config entry. */\n async delete(projectId: string, key: string): Promise<void> {\n await this.http.delete(`/api/v1/projects/${projectId}/config/${key}`);\n }\n}\n","import type { HTTPClient } from \"../http.js\";\nimport type {\n ProjectNotificationListOptions,\n ProjectNotificationListResponse,\n AcknowledgeNotificationsOptions,\n AcknowledgeResponse,\n AcknowledgeAllOptions,\n} from \"../types.js\";\n\n/** Project-scoped notification polling for game backends. */\nexport class ProjectNotifications {\n constructor(private readonly http: HTTPClient) {}\n\n /** List pending notifications for a project. */\n async list(\n projectId: string,\n options: ProjectNotificationListOptions = {},\n ): Promise<ProjectNotificationListResponse> {\n const params: Record<string, string> = {};\n if (options.agentId) params.agent_id = options.agentId;\n if (options.eventType) params.event_type = options.eventType;\n if (options.limit) params.limit = String(options.limit);\n return this.http.get<ProjectNotificationListResponse>(\n `/api/v1/projects/${projectId}/notifications`,\n params,\n );\n }\n\n /** Acknowledge specific notifications by ID. */\n async acknowledge(\n projectId: string,\n options: AcknowledgeNotificationsOptions,\n ): Promise<AcknowledgeResponse> {\n return this.http.post<AcknowledgeResponse>(\n `/api/v1/projects/${projectId}/notifications/acknowledge`,\n { notification_ids: options.notificationIds } as unknown as Record<string, unknown>,\n );\n }\n\n /** Acknowledge all pending notifications for a project. */\n async acknowledgeAll(\n projectId: string,\n options: AcknowledgeAllOptions = {},\n ): Promise<AcknowledgeResponse> {\n const params: Record<string, string> = {};\n if (options.agentId) params.agent_id = options.agentId;\n if (options.eventType) params.event_type = options.eventType;\n return this.http.post<AcknowledgeResponse>(\n `/api/v1/projects/${projectId}/notifications/acknowledge-all`,\n {},\n params,\n );\n }\n}\n","import type { HTTPClient } from \"../http.js\";\nimport type {\n DeliveryAttemptsResponse,\n WebhookListResponse,\n WebhookRegisterOptions,\n WebhookRegisterResponse,\n} from \"../types.js\";\n\n/** Webhook management operations. */\nexport class Webhooks {\n constructor(private readonly http: HTTPClient) {}\n\n /** Register (or update) a webhook URL for an event type. */\n async register(\n eventType: string,\n options: WebhookRegisterOptions,\n ): Promise<WebhookRegisterResponse> {\n const body: Record<string, unknown> = {\n webhook_url: options.webhookUrl,\n };\n if (options.authHeader) body.auth_header = options.authHeader;\n\n return this.http.put<WebhookRegisterResponse>(\n `/api/v1/webhooks/${eventType}`,\n body,\n );\n }\n\n /** List all registered webhooks. */\n async list(): Promise<WebhookListResponse> {\n return this.http.get<WebhookListResponse>(\"/api/v1/webhooks\");\n }\n\n /** Delete a webhook for an event type. */\n async delete(eventType: string): Promise<void> {\n await this.http.delete(`/api/v1/webhooks/${eventType}`);\n }\n\n /** List recent delivery attempts for an event type. */\n async listDeliveryAttempts(\n eventType: string,\n ): Promise<DeliveryAttemptsResponse> {\n return this.http.get<DeliveryAttemptsResponse>(\n `/api/v1/webhooks/${eventType}/attempts`,\n );\n }\n\n /** Rotate the signing secret for a webhook event type. */\n async rotateSecret(\n eventType: string,\n ): Promise<WebhookRegisterResponse> {\n return this.http.post<WebhookRegisterResponse>(\n `/api/v1/webhooks/${eventType}/rotate-secret`,\n );\n }\n\n // -- Project-scoped webhooks --\n\n /** Register (or update) a webhook for a specific project and event type. */\n async registerForProject(\n projectId: string,\n eventType: string,\n options: WebhookRegisterOptions,\n ): Promise<WebhookRegisterResponse> {\n const body: Record<string, unknown> = {\n webhook_url: options.webhookUrl,\n };\n if (options.authHeader) body.auth_header = options.authHeader;\n\n return this.http.put<WebhookRegisterResponse>(\n `/api/v1/projects/${projectId}/webhooks/${eventType}`,\n body,\n );\n }\n\n /** List all webhooks for a project. */\n async listForProject(projectId: string): Promise<WebhookListResponse> {\n return this.http.get<WebhookListResponse>(\n `/api/v1/projects/${projectId}/webhooks`,\n );\n }\n\n /** Delete a webhook for a project event type. */\n async deleteForProject(\n projectId: string,\n eventType: string,\n ): Promise<void> {\n await this.http.delete(\n `/api/v1/projects/${projectId}/webhooks/${eventType}`,\n );\n }\n\n /** List delivery attempts for a project webhook event type. */\n async listDeliveryAttemptsForProject(\n projectId: string,\n eventType: string,\n ): Promise<DeliveryAttemptsResponse> {\n return this.http.get<DeliveryAttemptsResponse>(\n `/api/v1/projects/${projectId}/webhooks/${eventType}/attempts`,\n );\n }\n\n /** Rotate the signing secret for a project webhook event type. */\n async rotateSecretForProject(\n projectId: string,\n eventType: string,\n ): Promise<WebhookRegisterResponse> {\n return this.http.post<WebhookRegisterResponse>(\n `/api/v1/projects/${projectId}/webhooks/${eventType}/rotate-secret`,\n );\n }\n}\n","import { HTTPClient } from \"./http.js\";\nimport { Agents } from \"./resources/agents.js\";\nimport { CustomLLM } from \"./resources/custom-llm.js\";\nimport { EvalRuns } from \"./resources/eval-runs.js\";\nimport { EvalTemplates } from \"./resources/eval-templates.js\";\nimport { Knowledge } from \"./resources/knowledge.js\";\nimport { ProjectConfig } from \"./resources/project-config.js\";\nimport { ProjectNotifications } from \"./resources/project-notifications.js\";\nimport { Voices } from \"./resources/voice.js\";\nimport { Webhooks } from \"./resources/webhooks.js\";\nimport type { SonzaiConfig } from \"./types.js\";\n\nconst DEFAULT_BASE_URL = \"https://api.sonz.ai\";\nconst DEFAULT_TIMEOUT = 30_000;\nconst DEFAULT_MAX_RETRIES = 2;\n\n/**\n * Resolve the API key from config or environment variables.\n * Works with Node.js, Bun, and Deno.\n */\nfunction resolveApiKey(config?: SonzaiConfig): string {\n if (config?.apiKey) return config.apiKey;\n\n // Node.js / Bun\n if (typeof process !== \"undefined\" && process.env) {\n const key = process.env.SONZAI_API_KEY;\n if (key) return key;\n }\n\n // Deno\n if (typeof Deno !== \"undefined\") {\n try {\n const key = Deno.env.get(\"SONZAI_API_KEY\");\n if (key) return key;\n } catch {\n // Permission denied\n }\n }\n\n throw new Error(\n \"apiKey must be provided or set via the SONZAI_API_KEY environment variable\",\n );\n}\n\nfunction resolveBaseUrl(config?: SonzaiConfig): string {\n if (config?.baseUrl) return config.baseUrl;\n\n if (typeof process !== \"undefined\" && process.env) {\n const url = process.env.SONZAI_BASE_URL;\n if (url) return url;\n }\n\n if (typeof Deno !== \"undefined\") {\n try {\n const url = Deno.env.get(\"SONZAI_BASE_URL\");\n if (url) return url;\n } catch {\n // Permission denied\n }\n }\n\n return DEFAULT_BASE_URL;\n}\n\n// Deno type shim for TypeScript compilation\ndeclare const Deno: {\n env: { get(key: string): string | undefined };\n} | undefined;\n\n/**\n * Sonzai Mind Layer API client.\n *\n * Works with Node.js (>=18), Bun, and Deno. Uses the native `fetch` API\n * with zero runtime dependencies.\n *\n * @example\n * ```ts\n * import { Sonzai } from \"sonzai\";\n *\n * const client = new Sonzai({ apiKey: \"your-api-key\" });\n *\n * // Chat with an agent\n * const response = await client.agents.chat({\n * agent: \"agent-id\",\n * messages: [{ role: \"user\", content: \"Hello!\" }],\n * });\n * console.log(response.content);\n *\n * // Stream chat\n * for await (const event of client.agents.chatStream({\n * agent: \"agent-id\",\n * messages: [{ role: \"user\", content: \"Tell me a story\" }],\n * })) {\n * process.stdout.write(event.choices?.[0]?.delta?.content ?? \"\");\n * }\n * ```\n */\nexport class Sonzai {\n readonly agents: Agents;\n /** Project-scoped knowledge base (documents, graph, schemas, search, analytics). */\n readonly knowledge: Knowledge;\n readonly evalTemplates: EvalTemplates;\n readonly evalRuns: EvalRuns;\n readonly voices: Voices;\n readonly webhooks: Webhooks;\n /** Project-scoped configuration (key-value store). */\n readonly projectConfig: ProjectConfig;\n /** Project-scoped custom LLM provider configuration. */\n readonly customLLM: CustomLLM;\n /** Project-scoped notification polling for game backends. */\n readonly projectNotifications: ProjectNotifications;\n\n private readonly http: HTTPClient;\n\n constructor(config?: SonzaiConfig) {\n const apiKey = resolveApiKey(config);\n const baseUrl = resolveBaseUrl(config);\n\n this.http = new HTTPClient({\n baseUrl,\n apiKey,\n timeout: config?.timeout ?? DEFAULT_TIMEOUT,\n maxRetries: config?.maxRetries ?? DEFAULT_MAX_RETRIES,\n });\n\n this.agents = new Agents(this.http);\n this.knowledge = new Knowledge(this.http);\n this.evalTemplates = new EvalTemplates(this.http);\n this.evalRuns = new EvalRuns(this.http);\n this.voices = new Voices(this.http);\n this.webhooks = new Webhooks(this.http);\n this.projectConfig = new ProjectConfig(this.http);\n this.customLLM = new CustomLLM(this.http);\n this.projectNotifications = new ProjectNotifications(this.http);\n }\n}\n"]}