@prisme.ai/sdk 1.0.2 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +250 -0
- package/dist/index.d.mts +1129 -0
- package/dist/index.d.ts +1129 -7
- package/dist/index.js +1326 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +1287 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +50 -12
- package/Readme.md +0 -28
- package/dist/_virtual/_tslib.js +0 -116
- package/dist/lib/ApiError.d.ts +0 -8
- package/dist/lib/ApiError.test.d.ts +0 -1
- package/dist/lib/HTTPError.d.ts +0 -6
- package/dist/lib/HTTPError.test.d.ts +0 -1
- package/dist/lib/ImportProcessing.d.ts +0 -19
- package/dist/lib/WorkspacesEndpoint.d.ts +0 -10
- package/dist/lib/api.d.ts +0 -155
- package/dist/lib/api.test.d.ts +0 -1
- package/dist/lib/endpoints/users.d.ts +0 -13
- package/dist/lib/endpoints/workspaces.d.ts +0 -25
- package/dist/lib/endpoints/workspacesVersions.d.ts +0 -10
- package/dist/lib/events.d.ts +0 -40
- package/dist/lib/events.test.d.ts +0 -1
- package/dist/lib/fetch.d.ts +0 -2
- package/dist/lib/fetcher.d.ts +0 -24
- package/dist/lib/fetcher.test.d.ts +0 -1
- package/dist/lib/interpolate.d.ts +0 -2
- package/dist/lib/interpolate.test.d.ts +0 -1
- package/dist/lib/interpolateVars.d.ts +0 -2
- package/dist/lib/types.d.ts +0 -17
- package/dist/lib/utils.d.ts +0 -4
- package/dist/lib/utils.test.d.ts +0 -1
- package/dist/sdk/index.js +0 -19
- package/dist/sdk/lib/ApiError.js +0 -24
- package/dist/sdk/lib/HTTPError.js +0 -21
- package/dist/sdk/lib/ImportProcessing.js +0 -17
- package/dist/sdk/lib/WorkspacesEndpoint.js +0 -19
- package/dist/sdk/lib/api.js +0 -1018
- package/dist/sdk/lib/endpoints/users.js +0 -94
- package/dist/sdk/lib/endpoints/workspaces.js +0 -144
- package/dist/sdk/lib/endpoints/workspacesVersions.js +0 -40
- package/dist/sdk/lib/events.js +0 -169
- package/dist/sdk/lib/fetch.js +0 -12
- package/dist/sdk/lib/fetcher.js +0 -213
- package/dist/sdk/lib/interpolate.js +0 -26
- package/dist/sdk/lib/interpolateVars.js +0 -26
- package/dist/sdk/lib/utils.js +0 -65
- package/index.ts +0 -7
- package/lib/ApiError.test.ts +0 -13
- package/lib/ApiError.ts +0 -21
- package/lib/HTTPError.test.ts +0 -8
- package/lib/HTTPError.ts +0 -13
- package/lib/ImportProcessing.ts +0 -22
- package/lib/api.test.ts +0 -787
- package/lib/api.ts +0 -949
- package/lib/endpoints/users.ts +0 -58
- package/lib/endpoints/workspaces.ts +0 -121
- package/lib/endpoints/workspacesVersions.ts +0 -38
- package/lib/events.test.ts +0 -89
- package/lib/events.ts +0 -222
- package/lib/fetcher.test.ts +0 -246
- package/lib/fetcher.ts +0 -198
- package/lib/types.ts +0 -21
- package/lib/utils.test.ts +0 -38
- package/lib/utils.ts +0 -51
- package/tsconfig.json +0 -21
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/core/errors.ts","../src/core/http-client.ts","../src/core/pagination.ts","../src/core/base-resource.ts","../src/core/streaming.ts","../src/resources/agents/messages.ts","../src/resources/agents/conversations.ts","../src/resources/agents/tools.ts","../src/resources/agents/access.ts","../src/resources/agents/analytics.ts","../src/resources/agents/evaluations.ts","../src/resources/agents/a2a.ts","../src/resources/agents/index.ts","../src/resources/tasks/index.ts","../src/resources/artifacts/index.ts","../src/resources/shares/index.ts","../src/resources/ratings/index.ts","../src/resources/activity/index.ts","../src/resources/profiles/index.ts","../src/resources/orgs/index.ts","../src/core/uploads.ts","../src/resources/storage/files.ts","../src/resources/storage/vector-stores/files.ts","../src/resources/storage/vector-stores/access.ts","../src/resources/storage/vector-stores/index.ts","../src/resources/storage/skills.ts","../src/resources/storage/stats.ts","../src/resources/storage/index.ts","../src/client.ts"],"sourcesContent":["// Main client\nexport { PrismeAI, type PrismeAIOptions } from './client.js';\n\n// Errors\nexport {\n PrismeAIError,\n AuthenticationError,\n PermissionDeniedError,\n NotFoundError,\n ConflictError,\n ValidationError,\n RateLimitError,\n InternalServerError,\n ConnectionError,\n TimeoutError,\n} from './core/errors.js';\n\n// Core utilities\nexport { SSEStream } from './core/streaming.js';\nexport { PageIterator, type PageResponse, type PaginationParams } from './core/pagination.js';\nexport type { FileInput, FileUploadOptions } from './core/uploads.js';\n\n// Agent Factory types\nexport type {\n Agent,\n AgentCreateParams,\n AgentUpdateParams,\n AgentListParams,\n SubAgentConfig,\n GuardrailConfig,\n GuardrailType,\n ToolPermissions,\n ToolRule,\n ToolPolicy,\n Approver,\n AgentTool,\n AgentDiscovery,\n} from './types/agents.js';\n\nexport type {\n MessageSendParams,\n MessagePart,\n MessageResponse,\n StreamEvent,\n StreamEventDelta,\n StreamEventTaskStatus,\n StreamEventTaskCompleted,\n StreamEventToolCall,\n StreamEventToolResult,\n StreamEventError,\n} from './types/messages.js';\n\nexport type {\n Conversation,\n ConversationCreateParams,\n ConversationUpdateParams,\n ConversationListParams,\n ConversationMessage,\n ConversationShareParams,\n} from './types/conversations.js';\n\nexport type { Task, TaskListParams } from './types/tasks.js';\nexport type { Tool, ToolCreateParams, ToolListParams } from './types/tools.js';\n\nexport type {\n AccessEntry,\n AccessGrantParams,\n AccessRequest,\n AccessRequestHandleParams,\n AccessListParams,\n} from './types/access.js';\n\nexport type {\n AnalyticsParams,\n AnalyticsResponse,\n AnalyticsDataPoint,\n} from './types/analytics.js';\n\nexport type {\n A2ASendParams,\n A2AResponse,\n A2ACard,\n A2AExtendedCard,\n A2AStreamEvent,\n} from './types/a2a.js';\n\nexport type {\n Artifact,\n ArtifactUpdateParams,\n ArtifactListParams,\n ArtifactShareParams,\n} from './types/artifacts.js';\n\nexport type { Share, ShareListParams } from './types/shares.js';\n\nexport type { Timestamp, LocalizedText } from './types/common.js';\n\n// Storage types\nexport type {\n FileObject,\n FileUploadParams,\n FileListParams,\n} from './types/storage/files.js';\n\nexport type {\n VectorStore,\n VectorStoreConfig,\n VectorStoreCreateParams,\n VectorStoreUpdateParams,\n VectorStoreListParams,\n VectorStoreSearchParams,\n VectorStoreSearchResult,\n VSFile,\n VSFileAddParams,\n VSFileListParams,\n VSFileChunk,\n VSAccessEntry,\n VSAccessGrantParams,\n VSAccessUpdateParams,\n} from './types/storage/vector-stores.js';\n\nexport type {\n Skill,\n SkillCreateParams,\n SkillUpdateParams,\n SkillListParams,\n} from './types/storage/skills.js';\n\nexport type { StorageStats, StatsParams } from './types/storage/stats.js';\n","export class PrismeAIError extends Error {\n readonly status: number | undefined;\n readonly headers: Headers | undefined;\n readonly body: unknown;\n\n constructor(\n message: string,\n { status, headers, body }: { status?: number; headers?: Headers; body?: unknown } = {},\n ) {\n super(message);\n this.name = 'PrismeAIError';\n this.status = status;\n this.headers = headers;\n this.body = body;\n }\n}\n\nexport class AuthenticationError extends PrismeAIError {\n override readonly status = 401;\n constructor(message: string, opts?: { headers?: Headers; body?: unknown }) {\n super(message, { status: 401, ...opts });\n this.name = 'AuthenticationError';\n }\n}\n\nexport class PermissionDeniedError extends PrismeAIError {\n override readonly status = 403;\n constructor(message: string, opts?: { headers?: Headers; body?: unknown }) {\n super(message, { status: 403, ...opts });\n this.name = 'PermissionDeniedError';\n }\n}\n\nexport class NotFoundError extends PrismeAIError {\n override readonly status = 404;\n constructor(message: string, opts?: { headers?: Headers; body?: unknown }) {\n super(message, { status: 404, ...opts });\n this.name = 'NotFoundError';\n }\n}\n\nexport class ConflictError extends PrismeAIError {\n override readonly status = 409;\n constructor(message: string, opts?: { headers?: Headers; body?: unknown }) {\n super(message, { status: 409, ...opts });\n this.name = 'ConflictError';\n }\n}\n\nexport class ValidationError extends PrismeAIError {\n override readonly status = 422;\n constructor(message: string, opts?: { headers?: Headers; body?: unknown }) {\n super(message, { status: 422, ...opts });\n this.name = 'ValidationError';\n }\n}\n\nexport class RateLimitError extends PrismeAIError {\n override readonly status = 429;\n readonly retryAfter: number | undefined;\n\n constructor(message: string, opts?: { headers?: Headers; body?: unknown }) {\n super(message, { status: 429, ...opts });\n this.name = 'RateLimitError';\n this.retryAfter = opts?.headers\n ? parseRetryAfter(opts.headers.get('retry-after'))\n : undefined;\n }\n}\n\nexport class InternalServerError extends PrismeAIError {\n override readonly status = 500;\n constructor(message: string, opts?: { headers?: Headers; body?: unknown }) {\n super(message, { status: 500, ...opts });\n this.name = 'InternalServerError';\n }\n}\n\nexport class ConnectionError extends PrismeAIError {\n constructor(message: string) {\n super(message);\n this.name = 'ConnectionError';\n }\n}\n\nexport class TimeoutError extends PrismeAIError {\n constructor(message: string) {\n super(message);\n this.name = 'TimeoutError';\n }\n}\n\nfunction parseRetryAfter(value: string | null): number | undefined {\n if (!value) return undefined;\n const seconds = Number(value);\n if (!Number.isNaN(seconds)) return seconds * 1000;\n const date = Date.parse(value);\n if (!Number.isNaN(date)) return date - Date.now();\n return undefined;\n}\n\nexport function errorFromStatus(\n status: number,\n message: string,\n headers: Headers,\n body: unknown,\n): PrismeAIError {\n const opts = { headers, body };\n switch (status) {\n case 401:\n return new AuthenticationError(message, opts);\n case 403:\n return new PermissionDeniedError(message, opts);\n case 404:\n return new NotFoundError(message, opts);\n case 409:\n return new ConflictError(message, opts);\n case 422:\n return new ValidationError(message, opts);\n case 429:\n return new RateLimitError(message, opts);\n default:\n if (status >= 500) return new InternalServerError(message, opts);\n return new PrismeAIError(message, { status, ...opts });\n }\n}\n","import {\n PrismeAIError,\n ConnectionError,\n TimeoutError,\n RateLimitError,\n errorFromStatus,\n} from './errors.js';\n\nexport interface HttpClientOptions {\n baseURL: string;\n headers: Record<string, string>;\n timeout?: number;\n maxRetries?: number;\n}\n\nexport interface RequestOptions {\n method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';\n path: string;\n query?: Record<string, unknown>;\n body?: unknown;\n headers?: Record<string, string>;\n timeout?: number;\n signal?: AbortSignal;\n raw?: boolean;\n}\n\nconst DEFAULT_TIMEOUT = 60_000;\nconst DEFAULT_MAX_RETRIES = 2;\nconst RETRY_STATUS_CODES = new Set([408, 429, 500, 502, 503, 504]);\nconst INITIAL_RETRY_DELAY = 500;\nconst MAX_RETRY_DELAY = 8_000;\n\nexport class HttpClient {\n readonly baseURL: string;\n private readonly defaultHeaders: 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.defaultHeaders = options.headers;\n this.timeout = options.timeout ?? DEFAULT_TIMEOUT;\n this.maxRetries = options.maxRetries ?? DEFAULT_MAX_RETRIES;\n }\n\n async request<T>(options: RequestOptions): Promise<T> {\n const url = this.buildURL(options.path, options.query);\n const headers: Record<string, string> = {\n ...this.defaultHeaders,\n ...options.headers,\n };\n\n if (options.body !== undefined && !headers['content-type']) {\n headers['content-type'] = 'application/json';\n }\n\n const fetchOptions: RequestInit = {\n method: options.method,\n headers,\n signal: options.signal,\n };\n\n if (options.body !== undefined) {\n if (options.body instanceof FormData) {\n delete headers['content-type'];\n fetchOptions.body = options.body;\n } else {\n fetchOptions.body = JSON.stringify(options.body);\n }\n }\n\n const timeout = options.timeout ?? this.timeout;\n let lastError: PrismeAIError | undefined;\n\n for (let attempt = 0; attempt <= this.maxRetries; attempt++) {\n if (attempt > 0) {\n const delay = this.getRetryDelay(attempt, lastError);\n await sleep(delay);\n }\n\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), timeout);\n\n if (options.signal) {\n options.signal.addEventListener('abort', () => controller.abort(), { once: true });\n }\n\n try {\n const response = await fetch(url, {\n ...fetchOptions,\n signal: controller.signal,\n });\n\n clearTimeout(timeoutId);\n\n if (response.ok) {\n if (options.raw) return response as unknown as T;\n const text = await response.text();\n if (!text) return undefined as T;\n try {\n return JSON.parse(text) as T;\n } catch {\n return text as T;\n }\n }\n\n const body = await this.safeParseBody(response);\n const message = extractErrorMessage(body, response.statusText);\n const error = errorFromStatus(response.status, message, response.headers, body);\n\n if (RETRY_STATUS_CODES.has(response.status) && attempt < this.maxRetries) {\n lastError = error;\n continue;\n }\n\n throw error;\n } catch (err) {\n clearTimeout(timeoutId);\n\n if (err instanceof PrismeAIError) throw err;\n\n if (err instanceof DOMException && err.name === 'AbortError') {\n if (options.signal?.aborted) {\n throw new PrismeAIError('Request aborted');\n }\n throw new TimeoutError(`Request timed out after ${timeout}ms`);\n }\n\n if (attempt < this.maxRetries) {\n lastError = new ConnectionError(\n err instanceof Error ? err.message : 'Connection failed',\n );\n continue;\n }\n\n throw new ConnectionError(\n err instanceof Error ? err.message : 'Connection failed',\n );\n }\n }\n\n throw lastError ?? new PrismeAIError('Request failed after retries');\n }\n\n async requestRaw(options: RequestOptions): Promise<Response> {\n return this.request<Response>({ ...options, raw: true });\n }\n\n get<T>(path: string, query?: Record<string, unknown>, options?: Partial<RequestOptions>): Promise<T> {\n return this.request<T>({ method: 'GET', path, query, ...options });\n }\n\n post<T>(path: string, body?: unknown, options?: Partial<RequestOptions>): Promise<T> {\n return this.request<T>({ method: 'POST', path, body, ...options });\n }\n\n put<T>(path: string, body?: unknown, options?: Partial<RequestOptions>): Promise<T> {\n return this.request<T>({ method: 'PUT', path, body, ...options });\n }\n\n patch<T>(path: string, body?: unknown, options?: Partial<RequestOptions>): Promise<T> {\n return this.request<T>({ method: 'PATCH', path, body, ...options });\n }\n\n delete<T>(path: string, query?: Record<string, unknown>, options?: Partial<RequestOptions>): Promise<T> {\n return this.request<T>({ method: 'DELETE', path, query, ...options });\n }\n\n private buildURL(path: string, query?: Record<string, unknown>): string {\n const url = new URL(path, this.baseURL + '/');\n if (query) {\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined && value !== null) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n return url.toString();\n }\n\n private getRetryDelay(attempt: number, lastError?: PrismeAIError): number {\n if (lastError instanceof RateLimitError && lastError.retryAfter) {\n return Math.min(lastError.retryAfter, MAX_RETRY_DELAY);\n }\n const base = INITIAL_RETRY_DELAY * Math.pow(2, attempt - 1);\n const jitter = base * 0.2 * Math.random();\n return Math.min(base + jitter, MAX_RETRY_DELAY);\n }\n\n private async safeParseBody(response: Response): Promise<unknown> {\n try {\n const text = await response.text();\n try {\n return JSON.parse(text);\n } catch {\n return text;\n }\n } catch {\n return undefined;\n }\n }\n}\n\nfunction extractErrorMessage(body: unknown, fallback: string): string {\n if (body && typeof body === 'object') {\n const obj = body as Record<string, unknown>;\n if (typeof obj.message === 'string') return obj.message;\n if (typeof obj.error === 'string') return obj.error;\n if (obj.error && typeof obj.error === 'object') {\n const inner = obj.error as Record<string, unknown>;\n if (typeof inner.message === 'string') return inner.message;\n }\n }\n return fallback;\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","import type { HttpClient, RequestOptions } from './http-client.js';\n\nexport interface PageResponse<T> {\n data: T[];\n total?: number;\n page?: number;\n limit?: number;\n hasMore?: boolean;\n}\n\nexport interface PaginationParams {\n page?: number;\n limit?: number;\n}\n\n/**\n * Async-iterable page iterator.\n * Supports: for await...of (item-by-item), .getPage(), .toArray()\n */\nexport class PageIterator<T> implements AsyncIterable<T> {\n private httpClient: HttpClient;\n private options: RequestOptions;\n private pageSize: number;\n private currentPage: number;\n private extractData: (body: unknown) => PageResponse<T>;\n\n constructor(\n httpClient: HttpClient,\n options: RequestOptions,\n extractData: (body: unknown) => PageResponse<T>,\n pageSize = 20,\n startPage = 1,\n ) {\n this.httpClient = httpClient;\n this.options = options;\n this.extractData = extractData;\n this.pageSize = pageSize;\n this.currentPage = startPage;\n }\n\n /**\n * Fetch a specific page.\n */\n async getPage(page?: number): Promise<PageResponse<T>> {\n const targetPage = page ?? this.currentPage;\n const query = {\n ...this.options.query as Record<string, unknown>,\n page: targetPage,\n limit: this.pageSize,\n };\n\n const raw = await this.httpClient.request<unknown>({\n ...this.options,\n query,\n });\n\n return this.extractData(raw);\n }\n\n /**\n * Collect all items across all pages into a single array.\n */\n async toArray(): Promise<T[]> {\n const items: T[] = [];\n for await (const item of this) {\n items.push(item);\n }\n return items;\n }\n\n async *[Symbol.asyncIterator](): AsyncIterator<T> {\n let page = this.currentPage;\n\n while (true) {\n const result = await this.getPage(page);\n for (const item of result.data) {\n yield item;\n }\n\n if (result.data.length < this.pageSize || result.hasMore === false) {\n break;\n }\n\n page++;\n }\n }\n}\n\n/**\n * Default extractor for standard Prisme.ai list responses.\n * Handles both { results: [...], total, page, limit } and plain array responses.\n */\nexport function defaultExtractor<T>(body: unknown): PageResponse<T> {\n if (Array.isArray(body)) {\n return { data: body as T[], hasMore: false };\n }\n\n const obj = body as Record<string, unknown>;\n\n // Try common response shapes\n const data = (obj.results ?? obj.data ?? obj.items ?? obj.documents ?? []) as T[];\n const total = obj.total as number | undefined;\n const page = obj.page as number | undefined;\n const limit = obj.limit as number | undefined;\n\n let hasMore: boolean | undefined;\n if (total !== undefined && page !== undefined && limit !== undefined) {\n hasMore = page * limit < total;\n } else if (obj.hasMore !== undefined) {\n hasMore = obj.hasMore as boolean;\n }\n\n return { data, total, page, limit, hasMore };\n}\n","import type { HttpClient, RequestOptions } from './http-client.js';\nimport { PageIterator, defaultExtractor, type PageResponse } from './pagination.js';\nimport type { PaginationParams } from './pagination.js';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype QueryParams = Record<string, any>;\n\n/**\n * Abstract base class for all API resource classes.\n * Provides common HTTP methods and pagination helpers.\n */\nexport abstract class BaseResource {\n protected readonly httpClient: HttpClient;\n\n constructor(httpClient: HttpClient) {\n this.httpClient = httpClient;\n }\n\n protected _get<T>(path: string, query?: QueryParams): Promise<T> {\n return this.httpClient.get<T>(path, query);\n }\n\n protected _post<T>(path: string, body?: unknown, options?: Partial<RequestOptions>): Promise<T> {\n return this.httpClient.post<T>(path, body, options);\n }\n\n protected _put<T>(path: string, body?: unknown): Promise<T> {\n return this.httpClient.put<T>(path, body);\n }\n\n protected _patch<T>(path: string, body?: unknown): Promise<T> {\n return this.httpClient.patch<T>(path, body);\n }\n\n protected _del<T>(path: string, query?: QueryParams): Promise<T> {\n return this.httpClient.delete<T>(path, query);\n }\n\n protected _paginate<T>(\n path: string,\n query?: QueryParams,\n pagination?: PaginationParams,\n extractor?: (body: unknown) => PageResponse<T>,\n ): PageIterator<T> {\n return new PageIterator<T>(\n this.httpClient,\n {\n method: 'GET',\n path,\n query: { ...query },\n },\n extractor ?? defaultExtractor<T>,\n pagination?.limit ?? 20,\n pagination?.page ?? 1,\n );\n }\n\n /**\n * Build a path with workspace ID prefix.\n */\n protected buildPath(workspaceId: string, ...segments: string[]): string {\n return `/workspaces/${workspaceId}/webhooks/${segments.join('/')}`;\n }\n}\n","/**\n * SSE (Server-Sent Events) stream parser.\n * Implements AsyncIterable<T> for `for await...of` usage.\n */\nexport class SSEStream<T> implements AsyncIterable<T> {\n private response: Response;\n private controller: AbortController;\n private _done = false;\n\n constructor(response: Response, controller: AbortController) {\n this.response = response;\n this.controller = controller;\n }\n\n get done(): boolean {\n return this._done;\n }\n\n abort(): void {\n this.controller.abort();\n this._done = true;\n }\n\n async *[Symbol.asyncIterator](): AsyncIterator<T> {\n const body = this.response.body;\n if (!body) {\n this._done = true;\n return;\n }\n\n const reader = body.getReader();\n const decoder = new TextDecoder();\n let buffer = '';\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n\n if (done) {\n // Process any remaining data in buffer\n if (buffer.trim()) {\n const event = parseSSEBlock(buffer);\n if (event !== null) {\n yield event as T;\n }\n }\n break;\n }\n\n buffer += decoder.decode(value, { stream: true });\n const events = extractSSEEvents(buffer);\n buffer = events.remaining;\n\n for (const event of events.parsed) {\n if (event !== null) {\n yield event as T;\n }\n }\n }\n } catch (err) {\n if (this.controller.signal.aborted) return;\n throw err;\n } finally {\n this._done = true;\n reader.releaseLock();\n }\n }\n}\n\ninterface SSEParseResult {\n parsed: Array<unknown | null>;\n remaining: string;\n}\n\nfunction extractSSEEvents(buffer: string): SSEParseResult {\n const parsed: Array<unknown | null> = [];\n const blocks = buffer.split(/\\n\\n/);\n const remaining = blocks.pop() ?? '';\n\n for (const block of blocks) {\n const event = parseSSEBlock(block);\n if (event !== null) {\n parsed.push(event);\n }\n }\n\n return { parsed, remaining };\n}\n\nfunction parseSSEBlock(block: string): unknown | null {\n let data = '';\n let eventType = '';\n\n for (const line of block.split('\\n')) {\n if (line.startsWith('data:')) {\n const value = line.slice(5).trimStart();\n data += (data ? '\\n' : '') + value;\n } else if (line.startsWith('event:')) {\n eventType = line.slice(6).trimStart();\n }\n // Ignore id:, retry:, and comments (:)\n }\n\n if (!data) return null;\n if (data === '[DONE]') return null;\n\n try {\n const parsed = JSON.parse(data);\n if (eventType) {\n parsed.__event = eventType;\n }\n return parsed;\n } catch {\n return { data, event: eventType || undefined };\n }\n}\n","import { BaseResource } from '../../core/base-resource.js';\nimport type { HttpClient } from '../../core/http-client.js';\nimport { SSEStream } from '../../core/streaming.js';\nimport type {\n MessageSendParams,\n MessageResponse,\n StreamEvent,\n} from '../../types/messages.js';\n\nexport class Messages extends BaseResource {\n private readonly workspaceId: string;\n\n constructor(httpClient: HttpClient, workspaceId: string) {\n super(httpClient);\n this.workspaceId = workspaceId;\n }\n\n private path(...segments: string[]): string {\n return this.buildPath(this.workspaceId, ...segments);\n }\n\n /** Send a message to an agent and get a complete response. */\n send(agentId: string, params: MessageSendParams): Promise<MessageResponse> {\n return this._post<MessageResponse>(this.path('agents', agentId, 'messages'), params);\n }\n\n /** Send a message and receive the response as an SSE stream. */\n async stream(agentId: string, params: MessageSendParams): Promise<SSEStream<StreamEvent>> {\n const controller = new AbortController();\n const response = await this.httpClient.requestRaw({\n method: 'POST',\n path: this.path('agents', agentId, 'messages', 'stream'),\n body: params,\n headers: {\n accept: 'text/event-stream',\n },\n signal: controller.signal,\n });\n\n return new SSEStream<StreamEvent>(response, controller);\n }\n}\n","import { BaseResource } from '../../core/base-resource.js';\nimport type { HttpClient } from '../../core/http-client.js';\nimport type { PageIterator } from '../../core/pagination.js';\nimport type {\n Conversation,\n ConversationCreateParams,\n ConversationUpdateParams,\n ConversationListParams,\n ConversationMessage,\n ConversationShareParams,\n} from '../../types/conversations.js';\n\nexport class Conversations extends BaseResource {\n private readonly workspaceId: string;\n\n constructor(httpClient: HttpClient, workspaceId: string) {\n super(httpClient);\n this.workspaceId = workspaceId;\n }\n\n private path(...segments: string[]): string {\n return this.buildPath(this.workspaceId, ...segments);\n }\n\n /** List conversations. */\n list(params?: ConversationListParams): PageIterator<Conversation> {\n return this._paginate<Conversation>(this.path('conversations'), params);\n }\n\n /** Create a new conversation. */\n create(params?: ConversationCreateParams): Promise<Conversation> {\n return this._post<Conversation>(this.path('conversations'), params);\n }\n\n /** Get a conversation by ID. */\n get(conversationId: string): Promise<Conversation> {\n return this.httpClient.get<Conversation>(this.path('conversations', conversationId));\n }\n\n /** Update a conversation. */\n update(conversationId: string, params: ConversationUpdateParams): Promise<Conversation> {\n return this._patch<Conversation>(this.path('conversations', conversationId), params);\n }\n\n /** Delete a conversation. */\n delete(conversationId: string): Promise<void> {\n return this._del<void>(this.path('conversations', conversationId));\n }\n\n /** List messages in a conversation. */\n messages(conversationId: string, params?: { page?: number; limit?: number }): PageIterator<ConversationMessage> {\n return this._paginate<ConversationMessage>(\n this.path('conversations', conversationId, 'messages'),\n params,\n );\n }\n\n /** Share a conversation. */\n share(conversationId: string, params: ConversationShareParams): Promise<void> {\n return this._post<void>(this.path('conversations', conversationId, 'share'), params);\n }\n}\n","import { BaseResource } from '../../core/base-resource.js';\nimport type { HttpClient } from '../../core/http-client.js';\nimport type { PageIterator } from '../../core/pagination.js';\nimport type { Tool, ToolCreateParams, ToolListParams } from '../../types/tools.js';\n\nexport class Tools extends BaseResource {\n private readonly workspaceId: string;\n\n constructor(httpClient: HttpClient, workspaceId: string) {\n super(httpClient);\n this.workspaceId = workspaceId;\n }\n\n private path(...segments: string[]): string {\n return this.buildPath(this.workspaceId, ...segments);\n }\n\n /** List tools available for agents. */\n list(params?: ToolListParams): PageIterator<Tool> {\n return this._paginate<Tool>(this.path('tools'), params);\n }\n\n /** Create a new tool. */\n create(params: ToolCreateParams): Promise<Tool> {\n return this._post<Tool>(this.path('tools'), params);\n }\n\n /** Get a tool by ID. */\n get(toolId: string): Promise<Tool> {\n return this.httpClient.get<Tool>(this.path('tools', toolId));\n }\n}\n","import { BaseResource } from '../../core/base-resource.js';\nimport type { HttpClient } from '../../core/http-client.js';\nimport type { PageIterator } from '../../core/pagination.js';\nimport type {\n AccessEntry,\n AccessGrantParams,\n AccessRequest,\n AccessRequestHandleParams,\n AccessListParams,\n} from '../../types/access.js';\n\nexport class Access extends BaseResource {\n private readonly workspaceId: string;\n\n constructor(httpClient: HttpClient, workspaceId: string) {\n super(httpClient);\n this.workspaceId = workspaceId;\n }\n\n private path(...segments: string[]): string {\n return this.buildPath(this.workspaceId, ...segments);\n }\n\n /** List access entries for an agent. */\n list(agentId: string, params?: AccessListParams): PageIterator<AccessEntry> {\n return this._paginate<AccessEntry>(this.path('agents', agentId, 'access'), params);\n }\n\n /** Grant access to an agent. */\n grant(agentId: string, params: AccessGrantParams): Promise<AccessEntry> {\n return this._post<AccessEntry>(this.path('agents', agentId, 'access'), params);\n }\n\n /** Revoke access to an agent. */\n revoke(agentId: string, accessId: string): Promise<void> {\n return this._del<void>(this.path('agents', agentId, 'access', accessId));\n }\n\n /** Request access to an agent. */\n requestAccess(agentId: string): Promise<AccessRequest> {\n return this._post<AccessRequest>(this.path('agents', agentId, 'access-requests'));\n }\n\n /** List access requests for an agent. */\n listRequests(agentId: string, params?: AccessListParams): PageIterator<AccessRequest> {\n return this._paginate<AccessRequest>(this.path('agents', agentId, 'access-requests'), params);\n }\n\n /** Handle an access request (approve/reject). */\n handleRequest(agentId: string, requestId: string, params: AccessRequestHandleParams): Promise<AccessRequest> {\n return this._post<AccessRequest>(\n this.path('agents', agentId, 'access-requests', requestId, params.action),\n );\n }\n}\n","import { BaseResource } from '../../core/base-resource.js';\nimport type { HttpClient } from '../../core/http-client.js';\nimport type { AnalyticsParams, AnalyticsResponse } from '../../types/analytics.js';\n\nexport class Analytics extends BaseResource {\n private readonly workspaceId: string;\n\n constructor(httpClient: HttpClient, workspaceId: string) {\n super(httpClient);\n this.workspaceId = workspaceId;\n }\n\n private path(...segments: string[]): string {\n return this.buildPath(this.workspaceId, ...segments);\n }\n\n /** Get analytics for an agent. */\n get(agentId: string, params?: AnalyticsParams): Promise<AnalyticsResponse> {\n return this.httpClient.get<AnalyticsResponse>(this.path('agents', agentId, 'analytics'), params as Record<string, unknown>);\n }\n}\n","import { BaseResource } from '../../core/base-resource.js';\nimport type { HttpClient } from '../../core/http-client.js';\nimport type { PageIterator } from '../../core/pagination.js';\nimport type { Timestamp } from '../../types/common.js';\n\nexport interface Evaluation {\n id: string;\n agentId: string;\n name?: string;\n status?: string;\n results?: Record<string, unknown>;\n createdAt?: Timestamp;\n [key: string]: unknown;\n}\n\nexport interface EvaluationCreateParams {\n name?: string;\n dataset?: Array<{ input: string; expectedOutput?: string }>;\n config?: Record<string, unknown>;\n}\n\nexport interface EvaluationListParams {\n page?: number;\n limit?: number;\n}\n\nexport class Evaluations extends BaseResource {\n private readonly workspaceId: string;\n\n constructor(httpClient: HttpClient, workspaceId: string) {\n super(httpClient);\n this.workspaceId = workspaceId;\n }\n\n private path(...segments: string[]): string {\n return this.buildPath(this.workspaceId, ...segments);\n }\n\n /** List evaluations for an agent. */\n list(agentId: string, params?: EvaluationListParams): PageIterator<Evaluation> {\n return this._paginate<Evaluation>(this.path('agents', agentId, 'evaluations'), params);\n }\n\n /** Create a new evaluation. */\n create(agentId: string, params: EvaluationCreateParams): Promise<Evaluation> {\n return this._post<Evaluation>(this.path('agents', agentId, 'evaluations'), params);\n }\n}\n","import { BaseResource } from '../../core/base-resource.js';\nimport type { HttpClient } from '../../core/http-client.js';\nimport { SSEStream } from '../../core/streaming.js';\nimport type {\n A2ASendParams,\n A2AResponse,\n A2ACard,\n A2AExtendedCard,\n A2AStreamEvent,\n} from '../../types/a2a.js';\n\nexport class A2A extends BaseResource {\n private readonly workspaceId: string;\n\n constructor(httpClient: HttpClient, workspaceId: string) {\n super(httpClient);\n this.workspaceId = workspaceId;\n }\n\n private path(...segments: string[]): string {\n return this.buildPath(this.workspaceId, ...segments);\n }\n\n /** Send a message via A2A protocol. */\n send(agentId: string, params: A2ASendParams): Promise<A2AResponse> {\n return this._post<A2AResponse>(this.path('agents', agentId, 'a2a', 'send'), params);\n }\n\n /** Send a message and subscribe to SSE events (A2A protocol). */\n async sendSubscribe(agentId: string, params: A2ASendParams): Promise<SSEStream<A2AStreamEvent>> {\n const controller = new AbortController();\n const response = await this.httpClient.requestRaw({\n method: 'POST',\n path: this.path('agents', agentId, 'a2a', 'send-subscribe'),\n body: params,\n headers: {\n accept: 'text/event-stream',\n },\n signal: controller.signal,\n });\n\n return new SSEStream<A2AStreamEvent>(response, controller);\n }\n\n /** Get the A2A agent card. */\n getCard(agentId: string): Promise<A2ACard> {\n return this.httpClient.get<A2ACard>(this.path('agents', agentId, 'a2a', 'card'));\n }\n\n /** Get the extended A2A agent card with tools and sub-agents. */\n getExtendedCard(agentId: string): Promise<A2AExtendedCard> {\n return this.httpClient.get<A2AExtendedCard>(this.path('agents', agentId, 'a2a', 'card', 'extended'));\n }\n}\n","import { BaseResource } from '../../core/base-resource.js';\nimport type { HttpClient } from '../../core/http-client.js';\nimport type { PageIterator } from '../../core/pagination.js';\nimport type {\n Agent,\n AgentCreateParams,\n AgentUpdateParams,\n AgentListParams,\n} from '../../types/agents.js';\nimport { Messages } from './messages.js';\nimport { Conversations } from './conversations.js';\nimport { Tools } from './tools.js';\nimport { Access } from './access.js';\nimport { Analytics } from './analytics.js';\nimport { Evaluations } from './evaluations.js';\nimport { A2A } from './a2a.js';\n\nexport class Agents extends BaseResource {\n readonly messages: Messages;\n readonly conversations: Conversations;\n readonly tools: Tools;\n readonly access: Access;\n readonly analytics: Analytics;\n readonly evaluations: Evaluations;\n readonly a2a: A2A;\n\n private readonly workspaceId: string;\n\n constructor(httpClient: HttpClient, workspaceId: string) {\n super(httpClient);\n this.workspaceId = workspaceId;\n this.messages = new Messages(httpClient, workspaceId);\n this.conversations = new Conversations(httpClient, workspaceId);\n this.tools = new Tools(httpClient, workspaceId);\n this.access = new Access(httpClient, workspaceId);\n this.analytics = new Analytics(httpClient, workspaceId);\n this.evaluations = new Evaluations(httpClient, workspaceId);\n this.a2a = new A2A(httpClient, workspaceId);\n }\n\n private path(...segments: string[]): string {\n return this.buildPath(this.workspaceId, ...segments);\n }\n\n /** List all agents. */\n list(params?: AgentListParams): PageIterator<Agent> {\n return this._paginate<Agent>(this.path('agents'), params);\n }\n\n /** Create a new agent. */\n create(params: AgentCreateParams): Promise<Agent> {\n return this._post<Agent>(this.path('agents'), params);\n }\n\n /** Get an agent by ID. */\n get(agentId: string): Promise<Agent> {\n return this.httpClient.get<Agent>(this.path('agents', agentId));\n }\n\n /** Update an agent. */\n update(agentId: string, params: AgentUpdateParams): Promise<Agent> {\n return this._patch<Agent>(this.path('agents', agentId), params);\n }\n\n /** Delete an agent. */\n delete(agentId: string): Promise<void> {\n return this._del<void>(this.path('agents', agentId));\n }\n\n /** Publish an agent (promote draft to published). */\n publish(agentId: string): Promise<Agent> {\n return this._post<Agent>(this.path('agents', agentId, 'publish'));\n }\n\n /** Discard the current draft. */\n discardDraft(agentId: string): Promise<Agent> {\n return this._post<Agent>(this.path('agents', agentId, 'discard-draft'));\n }\n\n /** Update agent discovery settings. */\n discovery(agentId: string, params: { enabled?: boolean; categories?: string[]; featured?: boolean }): Promise<Agent> {\n return this._patch<Agent>(this.path('agents', agentId, 'discovery'), params);\n }\n\n /** Export an agent configuration. */\n export(agentId: string): Promise<Record<string, unknown>> {\n return this.httpClient.get<Record<string, unknown>>(this.path('agents', agentId, 'export'));\n }\n\n /** Import an agent configuration. */\n import(config: Record<string, unknown>): Promise<Agent> {\n return this._post<Agent>(this.path('agents', 'import'), config);\n }\n}\n","import { BaseResource } from '../../core/base-resource.js';\nimport type { HttpClient } from '../../core/http-client.js';\nimport type { PageIterator } from '../../core/pagination.js';\nimport type { Task, TaskListParams } from '../../types/tasks.js';\n\nexport class Tasks extends BaseResource {\n private readonly workspaceId: string;\n\n constructor(httpClient: HttpClient, workspaceId: string) {\n super(httpClient);\n this.workspaceId = workspaceId;\n }\n\n private path(...segments: string[]): string {\n return this.buildPath(this.workspaceId, ...segments);\n }\n\n /** List tasks. */\n list(params?: TaskListParams): PageIterator<Task> {\n return this._paginate<Task>(this.path('tasks'), params);\n }\n\n /** Get a task by ID. */\n get(taskId: string): Promise<Task> {\n return this.httpClient.get<Task>(this.path('tasks', taskId));\n }\n\n /** Cancel a running task. */\n cancel(taskId: string): Promise<Task> {\n return this._post<Task>(this.path('tasks', taskId, 'cancel'));\n }\n}\n","import { BaseResource } from '../../core/base-resource.js';\nimport type { HttpClient } from '../../core/http-client.js';\nimport type { PageIterator } from '../../core/pagination.js';\nimport type {\n Artifact,\n ArtifactUpdateParams,\n ArtifactListParams,\n ArtifactShareParams,\n} from '../../types/artifacts.js';\n\nexport class Artifacts extends BaseResource {\n private readonly workspaceId: string;\n\n constructor(httpClient: HttpClient, workspaceId: string) {\n super(httpClient);\n this.workspaceId = workspaceId;\n }\n\n private path(...segments: string[]): string {\n return this.buildPath(this.workspaceId, ...segments);\n }\n\n list(params?: ArtifactListParams): PageIterator<Artifact> {\n return this._paginate<Artifact>(this.path('artifacts'), params);\n }\n\n get(artifactId: string): Promise<Artifact> {\n return this.httpClient.get<Artifact>(this.path('artifacts', artifactId));\n }\n\n update(artifactId: string, params: ArtifactUpdateParams): Promise<Artifact> {\n return this._patch<Artifact>(this.path('artifacts', artifactId), params);\n }\n\n delete(artifactId: string): Promise<void> {\n return this._del<void>(this.path('artifacts', artifactId));\n }\n\n share(artifactId: string, params: ArtifactShareParams): Promise<void> {\n return this._post<void>(this.path('artifacts', artifactId, 'share'), params);\n }\n}\n","import { BaseResource } from '../../core/base-resource.js';\nimport type { HttpClient } from '../../core/http-client.js';\nimport type { PageIterator } from '../../core/pagination.js';\nimport type { Share, ShareListParams } from '../../types/shares.js';\n\nexport class Shares extends BaseResource {\n private readonly workspaceId: string;\n\n constructor(httpClient: HttpClient, workspaceId: string) {\n super(httpClient);\n this.workspaceId = workspaceId;\n }\n\n private path(...segments: string[]): string {\n return this.buildPath(this.workspaceId, ...segments);\n }\n\n list(params?: ShareListParams): PageIterator<Share> {\n return this._paginate<Share>(this.path('shares'), params);\n }\n\n get(shareId: string): Promise<Share> {\n return this.httpClient.get<Share>(this.path('shares', shareId));\n }\n}\n","import { BaseResource } from '../../core/base-resource.js';\nimport type { HttpClient } from '../../core/http-client.js';\n\nexport interface RatingCreateParams {\n agentId: string;\n conversationId?: string;\n messageId?: string;\n rating: number;\n feedback?: string;\n}\n\nexport interface Rating {\n id: string;\n rating: number;\n feedback?: string;\n [key: string]: unknown;\n}\n\nexport class Ratings extends BaseResource {\n private readonly workspaceId: string;\n\n constructor(httpClient: HttpClient, workspaceId: string) {\n super(httpClient);\n this.workspaceId = workspaceId;\n }\n\n private path(...segments: string[]): string {\n return this.buildPath(this.workspaceId, ...segments);\n }\n\n /** Submit a rating for an agent response. */\n create(params: RatingCreateParams): Promise<Rating> {\n return this._post<Rating>(this.path('ratings'), params);\n }\n}\n","import { BaseResource } from '../../core/base-resource.js';\nimport type { HttpClient } from '../../core/http-client.js';\nimport type { PageIterator } from '../../core/pagination.js';\nimport type { Timestamp } from '../../types/common.js';\n\nexport interface ActivityEntry {\n id: string;\n type: string;\n agentId?: string;\n userId?: string;\n description?: string;\n createdAt?: Timestamp;\n [key: string]: unknown;\n}\n\nexport interface ActivityListParams {\n page?: number;\n limit?: number;\n agentId?: string;\n type?: string;\n}\n\nexport class Activity extends BaseResource {\n private readonly workspaceId: string;\n\n constructor(httpClient: HttpClient, workspaceId: string) {\n super(httpClient);\n this.workspaceId = workspaceId;\n }\n\n private path(...segments: string[]): string {\n return this.buildPath(this.workspaceId, ...segments);\n }\n\n /** List recent activity. */\n list(params?: ActivityListParams): PageIterator<ActivityEntry> {\n return this._paginate<ActivityEntry>(this.path('activity'), params);\n }\n}\n","import { BaseResource } from '../../core/base-resource.js';\nimport type { HttpClient } from '../../core/http-client.js';\nimport type { PageIterator } from '../../core/pagination.js';\n\nexport interface Profile {\n id: string;\n name?: string;\n email?: string;\n photo?: string;\n [key: string]: unknown;\n}\n\nexport interface ProfileListParams {\n page?: number;\n limit?: number;\n search?: string;\n}\n\nexport class Profiles extends BaseResource {\n private readonly workspaceId: string;\n\n constructor(httpClient: HttpClient, workspaceId: string) {\n super(httpClient);\n this.workspaceId = workspaceId;\n }\n\n private path(...segments: string[]): string {\n return this.buildPath(this.workspaceId, ...segments);\n }\n\n /** List user profiles. */\n list(params?: ProfileListParams): PageIterator<Profile> {\n return this._paginate<Profile>(this.path('profiles'), params);\n }\n}\n","import { BaseResource } from '../../core/base-resource.js';\nimport type { HttpClient } from '../../core/http-client.js';\nimport type { PageIterator } from '../../core/pagination.js';\nimport type { Agent } from '../../types/agents.js';\n\nexport interface OrgAgentListParams {\n page?: number;\n limit?: number;\n search?: string;\n}\n\nexport class Orgs extends BaseResource {\n private readonly workspaceId: string;\n\n constructor(httpClient: HttpClient, workspaceId: string) {\n super(httpClient);\n this.workspaceId = workspaceId;\n }\n\n private path(...segments: string[]): string {\n return this.buildPath(this.workspaceId, ...segments);\n }\n\n /** List agents available in the organization. */\n listAgents(params?: OrgAgentListParams): PageIterator<Agent> {\n return this._paginate<Agent>(this.path('orgs', 'agents'), params);\n }\n}\n","import { readFile } from 'node:fs/promises';\n\n/**\n * Supported input types for file uploads.\n */\nexport type FileInput =\n | Buffer\n | ArrayBuffer\n | Uint8Array\n | ReadableStream\n | Blob\n | string; // file path\n\nexport interface FileUploadOptions {\n filename?: string;\n contentType?: string;\n}\n\n/**\n * Convert various file input types to FormData for upload.\n */\nexport async function toFormData(\n fieldName: string,\n input: FileInput,\n options: FileUploadOptions = {},\n): Promise<FormData> {\n const formData = new FormData();\n const blob = await toBlob(input, options);\n formData.append(fieldName, blob, options.filename ?? 'file');\n return formData;\n}\n\nasync function toBlob(input: FileInput, options: FileUploadOptions): Promise<Blob> {\n const contentType = options.contentType ?? 'application/octet-stream';\n\n if (input instanceof Blob) {\n return input;\n }\n\n if (typeof input === 'string') {\n // Treat as file path\n const data = await readFile(input);\n return new Blob([data], { type: contentType });\n }\n\n if (input instanceof Buffer || input instanceof ArrayBuffer || input instanceof Uint8Array) {\n return new Blob([input], { type: contentType });\n }\n\n if (input instanceof ReadableStream) {\n const chunks: Uint8Array[] = [];\n const reader = input.getReader();\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n chunks.push(value);\n }\n return new Blob(chunks, { type: contentType });\n }\n\n throw new TypeError(`Unsupported file input type: ${typeof input}`);\n}\n\n/**\n * Detect MIME type from filename extension.\n */\nexport function mimeFromFilename(filename: string): string {\n const ext = filename.split('.').pop()?.toLowerCase();\n const mimeTypes: Record<string, string> = {\n pdf: 'application/pdf',\n json: 'application/json',\n csv: 'text/csv',\n txt: 'text/plain',\n md: 'text/markdown',\n html: 'text/html',\n xml: 'application/xml',\n png: 'image/png',\n jpg: 'image/jpeg',\n jpeg: 'image/jpeg',\n gif: 'image/gif',\n svg: 'image/svg+xml',\n webp: 'image/webp',\n mp3: 'audio/mpeg',\n mp4: 'video/mp4',\n zip: 'application/zip',\n doc: 'application/msword',\n docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n xls: 'application/vnd.ms-excel',\n xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n };\n return mimeTypes[ext ?? ''] ?? 'application/octet-stream';\n}\n","import { BaseResource } from '../../core/base-resource.js';\nimport type { HttpClient } from '../../core/http-client.js';\nimport type { PageIterator } from '../../core/pagination.js';\nimport { toFormData, mimeFromFilename, type FileInput, type FileUploadOptions } from '../../core/uploads.js';\nimport type { FileObject, FileUploadParams, FileListParams } from '../../types/storage/files.js';\n\nexport class Files extends BaseResource {\n private readonly workspaceId: string;\n\n constructor(httpClient: HttpClient, workspaceId: string) {\n super(httpClient);\n this.workspaceId = workspaceId;\n }\n\n private path(...segments: string[]): string {\n return this.buildPath(this.workspaceId, ...segments);\n }\n\n /** List files. */\n list(params?: FileListParams): PageIterator<FileObject> {\n return this._paginate<FileObject>(this.path('files'), params);\n }\n\n /** Upload a file. */\n async upload(file: FileInput, params?: FileUploadParams & FileUploadOptions): Promise<FileObject> {\n const filename = params?.filename ?? params?.name ?? 'file';\n const contentType = params?.contentType ?? mimeFromFilename(filename);\n const formData = await toFormData('file', file, { filename, contentType });\n\n if (params?.name) {\n formData.append('name', params.name);\n }\n if (params?.metadata) {\n formData.append('metadata', JSON.stringify(params.metadata));\n }\n\n return this.httpClient.post<FileObject>(this.path('files'), formData);\n }\n\n /** Get file metadata. */\n get(fileId: string): Promise<FileObject> {\n return this.httpClient.get<FileObject>(this.path('files', fileId));\n }\n\n /** Delete a file. */\n delete(fileId: string): Promise<void> {\n return this._del<void>(this.path('files', fileId));\n }\n\n /** Download a file. Returns the raw Response for streaming. */\n async download(fileId: string): Promise<Response> {\n return this.httpClient.requestRaw({\n method: 'GET',\n path: this.path('files', fileId, 'download'),\n });\n }\n}\n","import { BaseResource } from '../../../core/base-resource.js';\nimport type { HttpClient } from '../../../core/http-client.js';\nimport type { PageIterator } from '../../../core/pagination.js';\nimport type {\n VSFile,\n VSFileAddParams,\n VSFileListParams,\n VSFileChunk,\n} from '../../../types/storage/vector-stores.js';\n\nexport class VSFiles extends BaseResource {\n private readonly workspaceId: string;\n\n constructor(httpClient: HttpClient, workspaceId: string) {\n super(httpClient);\n this.workspaceId = workspaceId;\n }\n\n private path(...segments: string[]): string {\n return this.buildPath(this.workspaceId, ...segments);\n }\n\n /** List files in a vector store. */\n list(vectorStoreId: string, params?: VSFileListParams): PageIterator<VSFile> {\n return this._paginate<VSFile>(\n this.path('vector-stores', vectorStoreId, 'files'),\n params,\n );\n }\n\n /** Add a file to a vector store. */\n add(vectorStoreId: string, params: VSFileAddParams): Promise<VSFile> {\n return this._post<VSFile>(\n this.path('vector-stores', vectorStoreId, 'files'),\n params,\n );\n }\n\n /** Update a file in a vector store. */\n update(vectorStoreId: string, fileId: string, params: Partial<VSFileAddParams>): Promise<VSFile> {\n return this._patch<VSFile>(\n this.path('vector-stores', vectorStoreId, 'files', fileId),\n params,\n );\n }\n\n /** Remove a file from a vector store. */\n delete(vectorStoreId: string, fileId: string): Promise<void> {\n return this._del<void>(\n this.path('vector-stores', vectorStoreId, 'files', fileId),\n );\n }\n\n /** Get chunks for a file in a vector store. */\n chunks(vectorStoreId: string, fileId: string): Promise<VSFileChunk[]> {\n return this.httpClient.get<VSFileChunk[]>(\n this.path('vector-stores', vectorStoreId, 'files', fileId, 'chunks'),\n );\n }\n\n /** Reindex a specific file in a vector store. */\n reindex(vectorStoreId: string, fileId: string): Promise<void> {\n return this._post<void>(\n this.path('vector-stores', vectorStoreId, 'files', fileId, 'reindex'),\n );\n }\n}\n","import { BaseResource } from '../../../core/base-resource.js';\nimport type { HttpClient } from '../../../core/http-client.js';\nimport type { PageIterator } from '../../../core/pagination.js';\nimport type {\n VSAccessEntry,\n VSAccessGrantParams,\n VSAccessUpdateParams,\n} from '../../../types/storage/vector-stores.js';\n\nexport class VSAccess extends BaseResource {\n private readonly workspaceId: string;\n\n constructor(httpClient: HttpClient, workspaceId: string) {\n super(httpClient);\n this.workspaceId = workspaceId;\n }\n\n private path(...segments: string[]): string {\n return this.buildPath(this.workspaceId, ...segments);\n }\n\n /** List access entries for a vector store. */\n list(vectorStoreId: string): PageIterator<VSAccessEntry> {\n return this._paginate<VSAccessEntry>(\n this.path('vector-stores', vectorStoreId, 'access'),\n );\n }\n\n /** Grant access to a vector store. */\n grant(vectorStoreId: string, params: VSAccessGrantParams): Promise<VSAccessEntry> {\n return this._post<VSAccessEntry>(\n this.path('vector-stores', vectorStoreId, 'access'),\n params,\n );\n }\n\n /** Update access for a vector store. */\n update(vectorStoreId: string, accessId: string, params: VSAccessUpdateParams): Promise<VSAccessEntry> {\n return this._patch<VSAccessEntry>(\n this.path('vector-stores', vectorStoreId, 'access', accessId),\n params,\n );\n }\n\n /** Revoke access to a vector store. */\n revoke(vectorStoreId: string, accessId: string): Promise<void> {\n return this._del<void>(\n this.path('vector-stores', vectorStoreId, 'access', accessId),\n );\n }\n}\n","import { BaseResource } from '../../../core/base-resource.js';\nimport type { HttpClient } from '../../../core/http-client.js';\nimport type { PageIterator } from '../../../core/pagination.js';\nimport type {\n VectorStore,\n VectorStoreCreateParams,\n VectorStoreUpdateParams,\n VectorStoreListParams,\n VectorStoreSearchParams,\n VectorStoreSearchResult,\n} from '../../../types/storage/vector-stores.js';\nimport { VSFiles } from './files.js';\nimport { VSAccess } from './access.js';\n\nexport class VectorStores extends BaseResource {\n readonly files: VSFiles;\n readonly access: VSAccess;\n\n private readonly workspaceId: string;\n\n constructor(httpClient: HttpClient, workspaceId: string) {\n super(httpClient);\n this.workspaceId = workspaceId;\n this.files = new VSFiles(httpClient, workspaceId);\n this.access = new VSAccess(httpClient, workspaceId);\n }\n\n private path(...segments: string[]): string {\n return this.buildPath(this.workspaceId, ...segments);\n }\n\n /** List vector stores. */\n list(params?: VectorStoreListParams): PageIterator<VectorStore> {\n return this._paginate<VectorStore>(this.path('vector-stores'), params);\n }\n\n /** Create a new vector store. */\n create(params: VectorStoreCreateParams): Promise<VectorStore> {\n return this._post<VectorStore>(this.path('vector-stores'), params);\n }\n\n /** Get a vector store by ID. */\n get(vectorStoreId: string): Promise<VectorStore> {\n return this.httpClient.get<VectorStore>(this.path('vector-stores', vectorStoreId));\n }\n\n /** Update a vector store. */\n update(vectorStoreId: string, params: VectorStoreUpdateParams): Promise<VectorStore> {\n return this._patch<VectorStore>(this.path('vector-stores', vectorStoreId), params);\n }\n\n /** Delete a vector store. */\n delete(vectorStoreId: string): Promise<void> {\n return this._del<void>(this.path('vector-stores', vectorStoreId));\n }\n\n /** Search a vector store. */\n search(vectorStoreId: string, params: VectorStoreSearchParams): Promise<VectorStoreSearchResult[]> {\n return this._post<VectorStoreSearchResult[]>(\n this.path('vector-stores', vectorStoreId, 'search'),\n params,\n );\n }\n\n /** Reindex a vector store. */\n reindex(vectorStoreId: string): Promise<void> {\n return this._post<void>(this.path('vector-stores', vectorStoreId, 'reindex'));\n }\n\n /** Get crawl status for a vector store. */\n crawlStatus(vectorStoreId: string): Promise<Record<string, unknown>> {\n return this.httpClient.get<Record<string, unknown>>(\n this.path('vector-stores', vectorStoreId, 'crawl-status'),\n );\n }\n\n /** Trigger a recrawl for a vector store. */\n recrawl(vectorStoreId: string): Promise<void> {\n return this._post<void>(this.path('vector-stores', vectorStoreId, 'recrawl'));\n }\n}\n","import { BaseResource } from '../../core/base-resource.js';\nimport type { HttpClient } from '../../core/http-client.js';\nimport type { PageIterator } from '../../core/pagination.js';\nimport type {\n Skill,\n SkillCreateParams,\n SkillUpdateParams,\n SkillListParams,\n} from '../../types/storage/skills.js';\n\nexport class Skills extends BaseResource {\n private readonly workspaceId: string;\n\n constructor(httpClient: HttpClient, workspaceId: string) {\n super(httpClient);\n this.workspaceId = workspaceId;\n }\n\n private path(...segments: string[]): string {\n return this.buildPath(this.workspaceId, ...segments);\n }\n\n list(params?: SkillListParams): PageIterator<Skill> {\n return this._paginate<Skill>(this.path('skills'), params);\n }\n\n create(params: SkillCreateParams): Promise<Skill> {\n return this._post<Skill>(this.path('skills'), params);\n }\n\n get(skillId: string): Promise<Skill> {\n return this.httpClient.get<Skill>(this.path('skills', skillId));\n }\n\n update(skillId: string, params: SkillUpdateParams): Promise<Skill> {\n return this._patch<Skill>(this.path('skills', skillId), params);\n }\n\n delete(skillId: string): Promise<void> {\n return this._del<void>(this.path('skills', skillId));\n }\n}\n","import { BaseResource } from '../../core/base-resource.js';\nimport type { HttpClient } from '../../core/http-client.js';\nimport type { StorageStats, StatsParams } from '../../types/storage/stats.js';\n\nexport class Stats extends BaseResource {\n private readonly workspaceId: string;\n\n constructor(httpClient: HttpClient, workspaceId: string) {\n super(httpClient);\n this.workspaceId = workspaceId;\n }\n\n private path(...segments: string[]): string {\n return this.buildPath(this.workspaceId, ...segments);\n }\n\n /** Get storage statistics. */\n get(params?: StatsParams): Promise<StorageStats> {\n return this.httpClient.get<StorageStats>(\n this.path('stats'),\n params as Record<string, unknown>,\n );\n }\n}\n","import type { HttpClient } from '../../core/http-client.js';\nimport { Files } from './files.js';\nimport { VectorStores } from './vector-stores/index.js';\nimport { Skills } from './skills.js';\nimport { Stats } from './stats.js';\n\n/**\n * Storage namespace — groups all storage-related resources.\n */\nexport class Storage {\n readonly files: Files;\n readonly vectorStores: VectorStores;\n readonly skills: Skills;\n readonly stats: Stats;\n\n constructor(httpClient: HttpClient, workspaceId: string) {\n this.files = new Files(httpClient, workspaceId);\n this.vectorStores = new VectorStores(httpClient, workspaceId);\n this.skills = new Skills(httpClient, workspaceId);\n this.stats = new Stats(httpClient, workspaceId);\n }\n}\n","import { HttpClient } from './core/http-client.js';\nimport { Agents } from './resources/agents/index.js';\nimport { Tasks } from './resources/tasks/index.js';\nimport { Artifacts } from './resources/artifacts/index.js';\nimport { Shares } from './resources/shares/index.js';\nimport { Ratings } from './resources/ratings/index.js';\nimport { Activity } from './resources/activity/index.js';\nimport { Profiles } from './resources/profiles/index.js';\nimport { Orgs } from './resources/orgs/index.js';\nimport { Storage } from './resources/storage/index.js';\n\nconst ENVIRONMENTS: Record<string, string> = {\n sandbox: 'https://api.sandbox.prisme.ai/v2',\n production: 'https://api.eda.prisme.ai/v2',\n prod: 'https://api.eda.prisme.ai/v2',\n};\n\nexport interface PrismeAIOptions {\n /** API key for authentication. Uses x-prismeai-api-key header. */\n apiKey?: string;\n /** Bearer token for authentication. Uses Authorization header. */\n bearerToken?: string;\n /** Environment name ('sandbox', 'production') or custom base URL. */\n environment?: string;\n /** Custom base URL. Overrides environment. */\n baseURL?: string;\n /** Agent Factory workspace ID. */\n agentFactoryWorkspaceId: string;\n /** Storage workspace ID. */\n storageWorkspaceId?: string;\n /** Request timeout in milliseconds. Default: 60000. */\n timeout?: number;\n /** Max retry attempts for failed requests. Default: 2. */\n maxRetries?: number;\n}\n\n/**\n * Main Prisme.ai SDK client.\n *\n * @example\n * ```typescript\n * const client = new PrismeAI({\n * apiKey: 'sk-...',\n * environment: 'sandbox',\n * agentFactoryWorkspaceId: '6t5T1iC',\n * storageWorkspaceId: 'hl2Xm8u',\n * });\n *\n * // List agents\n * for await (const agent of client.agents.list()) {\n * console.log(agent.name);\n * }\n *\n * // Stream a message\n * const stream = await client.agents.messages.stream('agent-id', {\n * text: 'Hello!',\n * });\n * for await (const event of stream) {\n * if (event.type === 'delta') console.log(event.text);\n * }\n * ```\n */\nexport class PrismeAI {\n /** Agent Factory resources. */\n readonly agents: Agents;\n readonly tasks: Tasks;\n readonly artifacts: Artifacts;\n readonly shares: Shares;\n readonly ratings: Ratings;\n readonly activity: Activity;\n readonly profiles: Profiles;\n readonly orgs: Orgs;\n\n /** Storage resources (files, vector stores, skills, stats). */\n readonly storage: Storage;\n\n private readonly agentFactoryClient: HttpClient;\n private readonly storageClient: HttpClient | undefined;\n\n constructor(options: PrismeAIOptions) {\n const baseURL = resolveBaseURL(options);\n const headers = buildAuthHeaders(options);\n\n this.agentFactoryClient = new HttpClient({\n baseURL,\n headers,\n timeout: options.timeout,\n maxRetries: options.maxRetries,\n });\n\n // Wire Agent Factory resources\n this.agents = new Agents(this.agentFactoryClient, options.agentFactoryWorkspaceId);\n this.tasks = new Tasks(this.agentFactoryClient, options.agentFactoryWorkspaceId);\n this.artifacts = new Artifacts(this.agentFactoryClient, options.agentFactoryWorkspaceId);\n this.shares = new Shares(this.agentFactoryClient, options.agentFactoryWorkspaceId);\n this.ratings = new Ratings(this.agentFactoryClient, options.agentFactoryWorkspaceId);\n this.activity = new Activity(this.agentFactoryClient, options.agentFactoryWorkspaceId);\n this.profiles = new Profiles(this.agentFactoryClient, options.agentFactoryWorkspaceId);\n this.orgs = new Orgs(this.agentFactoryClient, options.agentFactoryWorkspaceId);\n\n // Wire Storage resources (may use a different workspace)\n if (options.storageWorkspaceId) {\n this.storageClient = new HttpClient({\n baseURL,\n headers,\n timeout: options.timeout,\n maxRetries: options.maxRetries,\n });\n this.storage = new Storage(this.storageClient, options.storageWorkspaceId);\n } else {\n // Fallback: use Agent Factory workspace for storage too\n this.storage = new Storage(this.agentFactoryClient, options.agentFactoryWorkspaceId);\n }\n }\n}\n\nfunction resolveBaseURL(options: PrismeAIOptions): string {\n if (options.baseURL) return options.baseURL;\n if (options.environment) {\n const env = ENVIRONMENTS[options.environment];\n if (env) return env;\n // Treat as custom URL if not a known environment name\n if (options.environment.startsWith('http')) return options.environment;\n throw new Error(\n `Unknown environment: \"${options.environment}\". Use \"sandbox\", \"production\", or provide a baseURL.`,\n );\n }\n return ENVIRONMENTS.production;\n}\n\nfunction buildAuthHeaders(options: PrismeAIOptions): Record<string, string> {\n const headers: Record<string, string> = {};\n\n if (options.apiKey) {\n headers['x-prismeai-api-key'] = options.apiKey;\n }\n if (options.bearerToken) {\n headers['authorization'] = `Bearer ${options.bearerToken}`;\n }\n\n if (!options.apiKey && !options.bearerToken) {\n // Check environment variables\n const envApiKey = process.env.PRISMEAI_API_KEY;\n const envBearerToken = process.env.PRISMEAI_BEARER_TOKEN;\n\n if (envApiKey) {\n headers['x-prismeai-api-key'] = envApiKey;\n } else if (envBearerToken) {\n headers['authorization'] = `Bearer ${envBearerToken}`;\n }\n }\n\n return headers;\n}\n"],"mappings":"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","names":[]}
|