tracia 0.1.0 → 0.1.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/dist/index.d.mts +0 -3
- package/dist/index.d.ts +0 -3
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.d.mts
CHANGED
|
@@ -55,7 +55,6 @@ interface Prompt {
|
|
|
55
55
|
name: string;
|
|
56
56
|
description: string | null;
|
|
57
57
|
model: string | null;
|
|
58
|
-
modelConfigurationId: string | null;
|
|
59
58
|
currentVersion: number;
|
|
60
59
|
content: PromptMessage[];
|
|
61
60
|
variables: string[];
|
|
@@ -78,14 +77,12 @@ interface CreatePromptOptions {
|
|
|
78
77
|
slug?: string;
|
|
79
78
|
description?: string;
|
|
80
79
|
content: PromptMessage[];
|
|
81
|
-
modelConfigurationId?: string;
|
|
82
80
|
}
|
|
83
81
|
interface UpdatePromptOptions {
|
|
84
82
|
name?: string;
|
|
85
83
|
slug?: string;
|
|
86
84
|
description?: string;
|
|
87
85
|
content?: PromptMessage[];
|
|
88
|
-
modelConfigurationId?: string | null;
|
|
89
86
|
}
|
|
90
87
|
type TraceStatus = 'SUCCESS' | 'ERROR';
|
|
91
88
|
interface TraceListItem {
|
package/dist/index.d.ts
CHANGED
|
@@ -55,7 +55,6 @@ interface Prompt {
|
|
|
55
55
|
name: string;
|
|
56
56
|
description: string | null;
|
|
57
57
|
model: string | null;
|
|
58
|
-
modelConfigurationId: string | null;
|
|
59
58
|
currentVersion: number;
|
|
60
59
|
content: PromptMessage[];
|
|
61
60
|
variables: string[];
|
|
@@ -78,14 +77,12 @@ interface CreatePromptOptions {
|
|
|
78
77
|
slug?: string;
|
|
79
78
|
description?: string;
|
|
80
79
|
content: PromptMessage[];
|
|
81
|
-
modelConfigurationId?: string;
|
|
82
80
|
}
|
|
83
81
|
interface UpdatePromptOptions {
|
|
84
82
|
name?: string;
|
|
85
83
|
slug?: string;
|
|
86
84
|
description?: string;
|
|
87
85
|
content?: PromptMessage[];
|
|
88
|
-
modelConfigurationId?: string | null;
|
|
89
86
|
}
|
|
90
87
|
type TraceStatus = 'SUCCESS' | 'ERROR';
|
|
91
88
|
interface TraceListItem {
|
package/dist/index.js
CHANGED
|
@@ -53,7 +53,7 @@ var TraciaErrorCode = /* @__PURE__ */ ((TraciaErrorCode2) => {
|
|
|
53
53
|
})(TraciaErrorCode || {});
|
|
54
54
|
|
|
55
55
|
// src/client.ts
|
|
56
|
-
var SDK_VERSION = "0.1.
|
|
56
|
+
var SDK_VERSION = "0.1.1";
|
|
57
57
|
var DEFAULT_TIMEOUT_MS = 3e4;
|
|
58
58
|
function mapApiErrorCodeToTraciaErrorCode(apiCode) {
|
|
59
59
|
const codeMap = {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/errors.ts","../src/types.ts","../src/client.ts","../src/prompts.ts","../src/traces.ts"],"sourcesContent":["import { HttpClient } from './client'\nimport { Prompts } from './prompts'\nimport { Traces } from './traces'\nimport { TraciaOptions } from './types'\n\nexport { TraciaError } from './errors'\nexport type {\n TraciaOptions,\n RunVariables,\n RunOptions,\n RunResult,\n TokenUsage,\n Prompt,\n PromptListItem,\n PromptMessage,\n MessageRole,\n CreatePromptOptions,\n UpdatePromptOptions,\n Trace,\n TraceListItem,\n TraceStatus,\n ListTracesOptions,\n ListTracesResult,\n} from './types'\nexport { TraciaErrorCode } from './types'\n\nconst DEFAULT_BASE_URL = 'https://app.tracia.io'\n\nexport class Tracia {\n private readonly client: HttpClient\n readonly prompts: Prompts\n readonly traces: Traces\n\n constructor(options: TraciaOptions) {\n if (!options.apiKey) {\n throw new Error('apiKey is required')\n }\n\n this.client = new HttpClient({\n apiKey: options.apiKey,\n baseUrl: DEFAULT_BASE_URL,\n })\n\n this.prompts = new Prompts(this.client)\n this.traces = new Traces(this.client)\n }\n}\n","import { TraciaErrorCode } from './types'\n\nexport class TraciaError extends Error {\n readonly code: TraciaErrorCode\n readonly statusCode?: number\n\n constructor(code: TraciaErrorCode, message: string, statusCode?: number) {\n super(message)\n this.name = 'TraciaError'\n this.code = code\n this.statusCode = statusCode\n\n Object.setPrototypeOf(this, TraciaError.prototype)\n }\n}","export interface TraciaOptions {\n apiKey: string\n}\n\nexport interface RunVariables {\n [key: string]: string\n}\n\nexport interface RunOptions {\n model?: string\n tags?: string[]\n userId?: string\n sessionId?: string\n}\n\nexport interface TokenUsage {\n inputTokens: number\n outputTokens: number\n totalTokens: number\n}\n\nexport interface RunResult {\n text: string\n traceId: string\n promptVersion: number\n latencyMs: number\n usage: TokenUsage\n cost: number\n}\n\nexport enum TraciaErrorCode {\n UNAUTHORIZED = 'UNAUTHORIZED',\n NOT_FOUND = 'NOT_FOUND',\n CONFLICT = 'CONFLICT',\n MISSING_PROVIDER_KEY = 'MISSING_PROVIDER_KEY',\n PROVIDER_ERROR = 'PROVIDER_ERROR',\n MISSING_VARIABLES = 'MISSING_VARIABLES',\n INVALID_REQUEST = 'INVALID_REQUEST',\n NETWORK_ERROR = 'NETWORK_ERROR',\n TIMEOUT = 'TIMEOUT',\n UNKNOWN = 'UNKNOWN',\n}\n\nexport interface ApiErrorResponse {\n error: {\n code: string\n message: string\n }\n}\n\nexport interface ApiSuccessResponse {\n text: string\n traceId: string\n promptVersion: number\n latencyMs: number\n usage: TokenUsage\n cost: number\n}\n\nexport type MessageRole = 'system' | 'user' | 'assistant'\n\nexport interface PromptMessage {\n id: string\n role: MessageRole\n content: string\n}\n\nexport interface Prompt {\n id: string\n slug: string\n name: string\n description: string | null\n model: string | null\n modelConfigurationId: string | null\n currentVersion: number\n content: PromptMessage[]\n variables: string[]\n createdAt: string\n updatedAt: string\n}\n\nexport interface PromptListItem {\n id: string\n slug: string\n name: string\n description: string | null\n model: string | null\n currentVersion: number\n variables: string[]\n createdAt: string\n updatedAt: string\n}\n\nexport interface CreatePromptOptions {\n name: string\n slug?: string\n description?: string\n content: PromptMessage[]\n modelConfigurationId?: string\n}\n\nexport interface UpdatePromptOptions {\n name?: string\n slug?: string\n description?: string\n content?: PromptMessage[]\n modelConfigurationId?: string | null\n}\n\nexport interface ListPromptsResponse {\n prompts: PromptListItem[]\n}\n\nexport interface DeletePromptResponse {\n success: boolean\n}\n\nexport type TraceStatus = 'SUCCESS' | 'ERROR'\n\nexport interface TraceListItem {\n id: string\n traceId: string\n promptSlug: string\n model: string\n status: TraceStatus\n latencyMs: number\n inputTokens: number\n outputTokens: number\n totalTokens: number\n cost: number | null\n createdAt: string\n}\n\nexport interface Trace {\n id: string\n traceId: string\n promptSlug: string\n promptVersion: number\n model: string\n provider: string\n input: { messages: PromptMessage[] }\n variables: Record<string, string> | null\n output: string | null\n status: TraceStatus\n error: string | null\n latencyMs: number\n inputTokens: number\n outputTokens: number\n totalTokens: number\n cost: number | null\n tags: string[]\n userId: string | null\n sessionId: string | null\n createdAt: string\n}\n\nexport interface ListTracesOptions {\n promptSlug?: string\n status?: TraceStatus\n startDate?: Date\n endDate?: Date\n userId?: string\n sessionId?: string\n tags?: string[]\n limit?: number\n cursor?: string\n}\n\nexport interface ListTracesResult {\n traces: TraceListItem[]\n nextCursor?: string\n}","import { TraciaError } from './errors'\nimport {\n TraciaErrorCode,\n ApiErrorResponse,\n ApiSuccessResponse,\n} from './types'\n\nconst SDK_VERSION = process.env.SDK_VERSION || '0.0.0'\nconst DEFAULT_TIMEOUT_MS = 30000\n\ninterface HttpClientOptions {\n apiKey: string\n baseUrl: string\n}\n\ninterface RequestOptions {\n method: 'GET' | 'POST' | 'PUT' | 'DELETE'\n path: string\n body?: unknown\n}\n\nfunction mapApiErrorCodeToTraciaErrorCode(apiCode: string): TraciaErrorCode {\n const codeMap: Record<string, TraciaErrorCode> = {\n UNAUTHORIZED: TraciaErrorCode.UNAUTHORIZED,\n NOT_FOUND: TraciaErrorCode.NOT_FOUND,\n CONFLICT: TraciaErrorCode.CONFLICT,\n MISSING_PROVIDER_KEY: TraciaErrorCode.MISSING_PROVIDER_KEY,\n PROVIDER_ERROR: TraciaErrorCode.PROVIDER_ERROR,\n MISSING_VARIABLES: TraciaErrorCode.MISSING_VARIABLES,\n INVALID_REQUEST: TraciaErrorCode.INVALID_REQUEST,\n }\n return codeMap[apiCode] ?? TraciaErrorCode.UNKNOWN\n}\n\nexport class HttpClient {\n private readonly apiKey: string\n private readonly baseUrl: string\n\n constructor(options: HttpClientOptions) {\n this.apiKey = options.apiKey\n this.baseUrl = options.baseUrl.replace(/\\/$/, '')\n }\n\n async get<T>(path: string): Promise<T> {\n return this.request<T>({ method: 'GET', path })\n }\n\n async post<T = ApiSuccessResponse>(path: string, body: unknown): Promise<T> {\n return this.request<T>({ method: 'POST', path, body })\n }\n\n async put<T>(path: string, body: unknown): Promise<T> {\n return this.request<T>({ method: 'PUT', path, body })\n }\n\n async delete<T>(path: string): Promise<T> {\n return this.request<T>({ method: 'DELETE', path })\n }\n\n private async request<T>(options: RequestOptions): Promise<T> {\n const url = `${this.baseUrl}${options.path}`\n\n const controller = new AbortController()\n const timeoutId = setTimeout(() => controller.abort(), DEFAULT_TIMEOUT_MS)\n\n try {\n const response = await fetch(url, {\n method: options.method,\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${this.apiKey}`,\n 'User-Agent': `tracia-sdk/${SDK_VERSION}`,\n },\n body: options.body ? JSON.stringify(options.body) : undefined,\n signal: controller.signal,\n })\n\n clearTimeout(timeoutId)\n\n if (!response.ok) {\n let errorData: ApiErrorResponse | undefined\n try {\n errorData = (await response.json()) as ApiErrorResponse\n } catch {\n throw new TraciaError(\n TraciaErrorCode.UNKNOWN,\n `HTTP ${response.status}: ${response.statusText}`,\n response.status\n )\n }\n\n if (errorData?.error) {\n const errorCode = mapApiErrorCodeToTraciaErrorCode(errorData.error.code)\n throw new TraciaError(errorCode, errorData.error.message, response.status)\n }\n\n throw new TraciaError(\n TraciaErrorCode.UNKNOWN,\n `HTTP ${response.status}: ${response.statusText}`,\n response.status\n )\n }\n\n return (await response.json()) as T\n } catch (error) {\n clearTimeout(timeoutId)\n\n if (error instanceof TraciaError) {\n throw error\n }\n\n if (error instanceof Error) {\n if (error.name === 'AbortError') {\n throw new TraciaError(\n TraciaErrorCode.TIMEOUT,\n `Request timed out after ${DEFAULT_TIMEOUT_MS}ms`\n )\n }\n\n throw new TraciaError(\n TraciaErrorCode.NETWORK_ERROR,\n `Network error: ${error.message}`\n )\n }\n\n throw new TraciaError(TraciaErrorCode.UNKNOWN, 'An unknown error occurred')\n }\n }\n}","import { HttpClient } from './client'\nimport {\n RunVariables,\n RunOptions,\n RunResult,\n ApiSuccessResponse,\n Prompt,\n PromptListItem,\n CreatePromptOptions,\n UpdatePromptOptions,\n ListPromptsResponse,\n DeletePromptResponse,\n} from './types'\n\ninterface RunRequestBody {\n variables?: RunVariables\n model?: string\n tags?: string[]\n userId?: string\n sessionId?: string\n}\n\nexport class Prompts {\n constructor(private readonly client: HttpClient) {}\n\n async list(): Promise<PromptListItem[]> {\n const response = await this.client.get<ListPromptsResponse>('/api/v1/prompts')\n return response.prompts\n }\n\n async get(slug: string): Promise<Prompt> {\n return this.client.get<Prompt>(`/api/v1/prompts/${encodeURIComponent(slug)}`)\n }\n\n async create(options: CreatePromptOptions): Promise<Prompt> {\n return this.client.post<Prompt>('/api/v1/prompts', options)\n }\n\n async update(slug: string, options: UpdatePromptOptions): Promise<Prompt> {\n return this.client.put<Prompt>(\n `/api/v1/prompts/${encodeURIComponent(slug)}`,\n options\n )\n }\n\n async delete(slug: string): Promise<void> {\n await this.client.delete<DeletePromptResponse>(\n `/api/v1/prompts/${encodeURIComponent(slug)}`\n )\n }\n\n async run(\n slug: string,\n variables?: RunVariables,\n options?: RunOptions\n ): Promise<RunResult> {\n const requestBody: RunRequestBody = {}\n\n if (variables && Object.keys(variables).length > 0) {\n requestBody.variables = variables\n }\n\n if (options?.model) {\n requestBody.model = options.model\n }\n\n if (options?.tags && options.tags.length > 0) {\n requestBody.tags = options.tags\n }\n\n if (options?.userId) {\n requestBody.userId = options.userId\n }\n\n if (options?.sessionId) {\n requestBody.sessionId = options.sessionId\n }\n\n const response = await this.client.post<ApiSuccessResponse>(\n `/api/v1/prompts/${encodeURIComponent(slug)}/run`,\n requestBody\n )\n\n return {\n text: response.text,\n traceId: response.traceId,\n promptVersion: response.promptVersion,\n latencyMs: response.latencyMs,\n usage: response.usage,\n cost: response.cost,\n }\n }\n}\n","import { HttpClient } from './client'\nimport { Trace, ListTracesOptions, ListTracesResult } from './types'\n\nexport class Traces {\n constructor(private readonly client: HttpClient) {}\n\n async get(traceId: string): Promise<Trace> {\n return this.client.get<Trace>(`/api/v1/traces/${encodeURIComponent(traceId)}`)\n }\n\n async list(options?: ListTracesOptions): Promise<ListTracesResult> {\n const params = new URLSearchParams()\n\n if (options?.promptSlug) {\n params.set('promptSlug', options.promptSlug)\n }\n\n if (options?.status) {\n params.set('status', options.status)\n }\n\n if (options?.startDate) {\n params.set('startDate', options.startDate.toISOString())\n }\n\n if (options?.endDate) {\n params.set('endDate', options.endDate.toISOString())\n }\n\n if (options?.userId) {\n params.set('userId', options.userId)\n }\n\n if (options?.sessionId) {\n params.set('sessionId', options.sessionId)\n }\n\n if (options?.tags && options.tags.length > 0) {\n params.set('tags', options.tags.join(','))\n }\n\n if (options?.limit) {\n params.set('limit', String(options.limit))\n }\n\n if (options?.cursor) {\n params.set('cursor', options.cursor)\n }\n\n const query = params.toString()\n const path = query ? `/api/v1/traces?${query}` : '/api/v1/traces'\n\n return this.client.get<ListTracesResult>(path)\n }\n}\n"],"mappings":"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","names":["TraciaErrorCode"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/errors.ts","../src/types.ts","../src/client.ts","../src/prompts.ts","../src/traces.ts"],"sourcesContent":["import { HttpClient } from './client'\nimport { Prompts } from './prompts'\nimport { Traces } from './traces'\nimport { TraciaOptions } from './types'\n\nexport { TraciaError } from './errors'\nexport type {\n TraciaOptions,\n RunVariables,\n RunOptions,\n RunResult,\n TokenUsage,\n Prompt,\n PromptListItem,\n PromptMessage,\n MessageRole,\n CreatePromptOptions,\n UpdatePromptOptions,\n Trace,\n TraceListItem,\n TraceStatus,\n ListTracesOptions,\n ListTracesResult,\n} from './types'\nexport { TraciaErrorCode } from './types'\n\nconst DEFAULT_BASE_URL = 'https://app.tracia.io'\n\nexport class Tracia {\n private readonly client: HttpClient\n readonly prompts: Prompts\n readonly traces: Traces\n\n constructor(options: TraciaOptions) {\n if (!options.apiKey) {\n throw new Error('apiKey is required')\n }\n\n this.client = new HttpClient({\n apiKey: options.apiKey,\n baseUrl: DEFAULT_BASE_URL,\n })\n\n this.prompts = new Prompts(this.client)\n this.traces = new Traces(this.client)\n }\n}\n","import { TraciaErrorCode } from './types'\n\nexport class TraciaError extends Error {\n readonly code: TraciaErrorCode\n readonly statusCode?: number\n\n constructor(code: TraciaErrorCode, message: string, statusCode?: number) {\n super(message)\n this.name = 'TraciaError'\n this.code = code\n this.statusCode = statusCode\n\n Object.setPrototypeOf(this, TraciaError.prototype)\n }\n}","export interface TraciaOptions {\n apiKey: string\n}\n\nexport interface RunVariables {\n [key: string]: string\n}\n\nexport interface RunOptions {\n model?: string\n tags?: string[]\n userId?: string\n sessionId?: string\n}\n\nexport interface TokenUsage {\n inputTokens: number\n outputTokens: number\n totalTokens: number\n}\n\nexport interface RunResult {\n text: string\n traceId: string\n promptVersion: number\n latencyMs: number\n usage: TokenUsage\n cost: number\n}\n\nexport enum TraciaErrorCode {\n UNAUTHORIZED = 'UNAUTHORIZED',\n NOT_FOUND = 'NOT_FOUND',\n CONFLICT = 'CONFLICT',\n MISSING_PROVIDER_KEY = 'MISSING_PROVIDER_KEY',\n PROVIDER_ERROR = 'PROVIDER_ERROR',\n MISSING_VARIABLES = 'MISSING_VARIABLES',\n INVALID_REQUEST = 'INVALID_REQUEST',\n NETWORK_ERROR = 'NETWORK_ERROR',\n TIMEOUT = 'TIMEOUT',\n UNKNOWN = 'UNKNOWN',\n}\n\nexport interface ApiErrorResponse {\n error: {\n code: string\n message: string\n }\n}\n\nexport interface ApiSuccessResponse {\n text: string\n traceId: string\n promptVersion: number\n latencyMs: number\n usage: TokenUsage\n cost: number\n}\n\nexport type MessageRole = 'system' | 'user' | 'assistant'\n\nexport interface PromptMessage {\n id: string\n role: MessageRole\n content: string\n}\n\nexport interface Prompt {\n id: string\n slug: string\n name: string\n description: string | null\n model: string | null\n currentVersion: number\n content: PromptMessage[]\n variables: string[]\n createdAt: string\n updatedAt: string\n}\n\nexport interface PromptListItem {\n id: string\n slug: string\n name: string\n description: string | null\n model: string | null\n currentVersion: number\n variables: string[]\n createdAt: string\n updatedAt: string\n}\n\nexport interface CreatePromptOptions {\n name: string\n slug?: string\n description?: string\n content: PromptMessage[]\n}\n\nexport interface UpdatePromptOptions {\n name?: string\n slug?: string\n description?: string\n content?: PromptMessage[]\n}\n\nexport interface ListPromptsResponse {\n prompts: PromptListItem[]\n}\n\nexport interface DeletePromptResponse {\n success: boolean\n}\n\nexport type TraceStatus = 'SUCCESS' | 'ERROR'\n\nexport interface TraceListItem {\n id: string\n traceId: string\n promptSlug: string\n model: string\n status: TraceStatus\n latencyMs: number\n inputTokens: number\n outputTokens: number\n totalTokens: number\n cost: number | null\n createdAt: string\n}\n\nexport interface Trace {\n id: string\n traceId: string\n promptSlug: string\n promptVersion: number\n model: string\n provider: string\n input: { messages: PromptMessage[] }\n variables: Record<string, string> | null\n output: string | null\n status: TraceStatus\n error: string | null\n latencyMs: number\n inputTokens: number\n outputTokens: number\n totalTokens: number\n cost: number | null\n tags: string[]\n userId: string | null\n sessionId: string | null\n createdAt: string\n}\n\nexport interface ListTracesOptions {\n promptSlug?: string\n status?: TraceStatus\n startDate?: Date\n endDate?: Date\n userId?: string\n sessionId?: string\n tags?: string[]\n limit?: number\n cursor?: string\n}\n\nexport interface ListTracesResult {\n traces: TraceListItem[]\n nextCursor?: string\n}","import { TraciaError } from './errors'\nimport {\n TraciaErrorCode,\n ApiErrorResponse,\n ApiSuccessResponse,\n} from './types'\n\nconst SDK_VERSION = process.env.SDK_VERSION || '0.0.0'\nconst DEFAULT_TIMEOUT_MS = 30000\n\ninterface HttpClientOptions {\n apiKey: string\n baseUrl: string\n}\n\ninterface RequestOptions {\n method: 'GET' | 'POST' | 'PUT' | 'DELETE'\n path: string\n body?: unknown\n}\n\nfunction mapApiErrorCodeToTraciaErrorCode(apiCode: string): TraciaErrorCode {\n const codeMap: Record<string, TraciaErrorCode> = {\n UNAUTHORIZED: TraciaErrorCode.UNAUTHORIZED,\n NOT_FOUND: TraciaErrorCode.NOT_FOUND,\n CONFLICT: TraciaErrorCode.CONFLICT,\n MISSING_PROVIDER_KEY: TraciaErrorCode.MISSING_PROVIDER_KEY,\n PROVIDER_ERROR: TraciaErrorCode.PROVIDER_ERROR,\n MISSING_VARIABLES: TraciaErrorCode.MISSING_VARIABLES,\n INVALID_REQUEST: TraciaErrorCode.INVALID_REQUEST,\n }\n return codeMap[apiCode] ?? TraciaErrorCode.UNKNOWN\n}\n\nexport class HttpClient {\n private readonly apiKey: string\n private readonly baseUrl: string\n\n constructor(options: HttpClientOptions) {\n this.apiKey = options.apiKey\n this.baseUrl = options.baseUrl.replace(/\\/$/, '')\n }\n\n async get<T>(path: string): Promise<T> {\n return this.request<T>({ method: 'GET', path })\n }\n\n async post<T = ApiSuccessResponse>(path: string, body: unknown): Promise<T> {\n return this.request<T>({ method: 'POST', path, body })\n }\n\n async put<T>(path: string, body: unknown): Promise<T> {\n return this.request<T>({ method: 'PUT', path, body })\n }\n\n async delete<T>(path: string): Promise<T> {\n return this.request<T>({ method: 'DELETE', path })\n }\n\n private async request<T>(options: RequestOptions): Promise<T> {\n const url = `${this.baseUrl}${options.path}`\n\n const controller = new AbortController()\n const timeoutId = setTimeout(() => controller.abort(), DEFAULT_TIMEOUT_MS)\n\n try {\n const response = await fetch(url, {\n method: options.method,\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${this.apiKey}`,\n 'User-Agent': `tracia-sdk/${SDK_VERSION}`,\n },\n body: options.body ? JSON.stringify(options.body) : undefined,\n signal: controller.signal,\n })\n\n clearTimeout(timeoutId)\n\n if (!response.ok) {\n let errorData: ApiErrorResponse | undefined\n try {\n errorData = (await response.json()) as ApiErrorResponse\n } catch {\n throw new TraciaError(\n TraciaErrorCode.UNKNOWN,\n `HTTP ${response.status}: ${response.statusText}`,\n response.status\n )\n }\n\n if (errorData?.error) {\n const errorCode = mapApiErrorCodeToTraciaErrorCode(errorData.error.code)\n throw new TraciaError(errorCode, errorData.error.message, response.status)\n }\n\n throw new TraciaError(\n TraciaErrorCode.UNKNOWN,\n `HTTP ${response.status}: ${response.statusText}`,\n response.status\n )\n }\n\n return (await response.json()) as T\n } catch (error) {\n clearTimeout(timeoutId)\n\n if (error instanceof TraciaError) {\n throw error\n }\n\n if (error instanceof Error) {\n if (error.name === 'AbortError') {\n throw new TraciaError(\n TraciaErrorCode.TIMEOUT,\n `Request timed out after ${DEFAULT_TIMEOUT_MS}ms`\n )\n }\n\n throw new TraciaError(\n TraciaErrorCode.NETWORK_ERROR,\n `Network error: ${error.message}`\n )\n }\n\n throw new TraciaError(TraciaErrorCode.UNKNOWN, 'An unknown error occurred')\n }\n }\n}","import { HttpClient } from './client'\nimport {\n RunVariables,\n RunOptions,\n RunResult,\n ApiSuccessResponse,\n Prompt,\n PromptListItem,\n CreatePromptOptions,\n UpdatePromptOptions,\n ListPromptsResponse,\n DeletePromptResponse,\n} from './types'\n\ninterface RunRequestBody {\n variables?: RunVariables\n model?: string\n tags?: string[]\n userId?: string\n sessionId?: string\n}\n\nexport class Prompts {\n constructor(private readonly client: HttpClient) {}\n\n async list(): Promise<PromptListItem[]> {\n const response = await this.client.get<ListPromptsResponse>('/api/v1/prompts')\n return response.prompts\n }\n\n async get(slug: string): Promise<Prompt> {\n return this.client.get<Prompt>(`/api/v1/prompts/${encodeURIComponent(slug)}`)\n }\n\n async create(options: CreatePromptOptions): Promise<Prompt> {\n return this.client.post<Prompt>('/api/v1/prompts', options)\n }\n\n async update(slug: string, options: UpdatePromptOptions): Promise<Prompt> {\n return this.client.put<Prompt>(\n `/api/v1/prompts/${encodeURIComponent(slug)}`,\n options\n )\n }\n\n async delete(slug: string): Promise<void> {\n await this.client.delete<DeletePromptResponse>(\n `/api/v1/prompts/${encodeURIComponent(slug)}`\n )\n }\n\n async run(\n slug: string,\n variables?: RunVariables,\n options?: RunOptions\n ): Promise<RunResult> {\n const requestBody: RunRequestBody = {}\n\n if (variables && Object.keys(variables).length > 0) {\n requestBody.variables = variables\n }\n\n if (options?.model) {\n requestBody.model = options.model\n }\n\n if (options?.tags && options.tags.length > 0) {\n requestBody.tags = options.tags\n }\n\n if (options?.userId) {\n requestBody.userId = options.userId\n }\n\n if (options?.sessionId) {\n requestBody.sessionId = options.sessionId\n }\n\n const response = await this.client.post<ApiSuccessResponse>(\n `/api/v1/prompts/${encodeURIComponent(slug)}/run`,\n requestBody\n )\n\n return {\n text: response.text,\n traceId: response.traceId,\n promptVersion: response.promptVersion,\n latencyMs: response.latencyMs,\n usage: response.usage,\n cost: response.cost,\n }\n }\n}\n","import { HttpClient } from './client'\nimport { Trace, ListTracesOptions, ListTracesResult } from './types'\n\nexport class Traces {\n constructor(private readonly client: HttpClient) {}\n\n async get(traceId: string): Promise<Trace> {\n return this.client.get<Trace>(`/api/v1/traces/${encodeURIComponent(traceId)}`)\n }\n\n async list(options?: ListTracesOptions): Promise<ListTracesResult> {\n const params = new URLSearchParams()\n\n if (options?.promptSlug) {\n params.set('promptSlug', options.promptSlug)\n }\n\n if (options?.status) {\n params.set('status', options.status)\n }\n\n if (options?.startDate) {\n params.set('startDate', options.startDate.toISOString())\n }\n\n if (options?.endDate) {\n params.set('endDate', options.endDate.toISOString())\n }\n\n if (options?.userId) {\n params.set('userId', options.userId)\n }\n\n if (options?.sessionId) {\n params.set('sessionId', options.sessionId)\n }\n\n if (options?.tags && options.tags.length > 0) {\n params.set('tags', options.tags.join(','))\n }\n\n if (options?.limit) {\n params.set('limit', String(options.limit))\n }\n\n if (options?.cursor) {\n params.set('cursor', options.cursor)\n }\n\n const query = params.toString()\n const path = query ? `/api/v1/traces?${query}` : '/api/v1/traces'\n\n return this.client.get<ListTracesResult>(path)\n }\n}\n"],"mappings":"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","names":["TraciaErrorCode"]}
|
package/dist/index.mjs
CHANGED
|
@@ -25,7 +25,7 @@ var TraciaErrorCode = /* @__PURE__ */ ((TraciaErrorCode2) => {
|
|
|
25
25
|
})(TraciaErrorCode || {});
|
|
26
26
|
|
|
27
27
|
// src/client.ts
|
|
28
|
-
var SDK_VERSION = "0.1.
|
|
28
|
+
var SDK_VERSION = "0.1.1";
|
|
29
29
|
var DEFAULT_TIMEOUT_MS = 3e4;
|
|
30
30
|
function mapApiErrorCodeToTraciaErrorCode(apiCode) {
|
|
31
31
|
const codeMap = {
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/errors.ts","../src/types.ts","../src/client.ts","../src/prompts.ts","../src/traces.ts","../src/index.ts"],"sourcesContent":["import { TraciaErrorCode } from './types'\n\nexport class TraciaError extends Error {\n readonly code: TraciaErrorCode\n readonly statusCode?: number\n\n constructor(code: TraciaErrorCode, message: string, statusCode?: number) {\n super(message)\n this.name = 'TraciaError'\n this.code = code\n this.statusCode = statusCode\n\n Object.setPrototypeOf(this, TraciaError.prototype)\n }\n}","export interface TraciaOptions {\n apiKey: string\n}\n\nexport interface RunVariables {\n [key: string]: string\n}\n\nexport interface RunOptions {\n model?: string\n tags?: string[]\n userId?: string\n sessionId?: string\n}\n\nexport interface TokenUsage {\n inputTokens: number\n outputTokens: number\n totalTokens: number\n}\n\nexport interface RunResult {\n text: string\n traceId: string\n promptVersion: number\n latencyMs: number\n usage: TokenUsage\n cost: number\n}\n\nexport enum TraciaErrorCode {\n UNAUTHORIZED = 'UNAUTHORIZED',\n NOT_FOUND = 'NOT_FOUND',\n CONFLICT = 'CONFLICT',\n MISSING_PROVIDER_KEY = 'MISSING_PROVIDER_KEY',\n PROVIDER_ERROR = 'PROVIDER_ERROR',\n MISSING_VARIABLES = 'MISSING_VARIABLES',\n INVALID_REQUEST = 'INVALID_REQUEST',\n NETWORK_ERROR = 'NETWORK_ERROR',\n TIMEOUT = 'TIMEOUT',\n UNKNOWN = 'UNKNOWN',\n}\n\nexport interface ApiErrorResponse {\n error: {\n code: string\n message: string\n }\n}\n\nexport interface ApiSuccessResponse {\n text: string\n traceId: string\n promptVersion: number\n latencyMs: number\n usage: TokenUsage\n cost: number\n}\n\nexport type MessageRole = 'system' | 'user' | 'assistant'\n\nexport interface PromptMessage {\n id: string\n role: MessageRole\n content: string\n}\n\nexport interface Prompt {\n id: string\n slug: string\n name: string\n description: string | null\n model: string | null\n modelConfigurationId: string | null\n currentVersion: number\n content: PromptMessage[]\n variables: string[]\n createdAt: string\n updatedAt: string\n}\n\nexport interface PromptListItem {\n id: string\n slug: string\n name: string\n description: string | null\n model: string | null\n currentVersion: number\n variables: string[]\n createdAt: string\n updatedAt: string\n}\n\nexport interface CreatePromptOptions {\n name: string\n slug?: string\n description?: string\n content: PromptMessage[]\n modelConfigurationId?: string\n}\n\nexport interface UpdatePromptOptions {\n name?: string\n slug?: string\n description?: string\n content?: PromptMessage[]\n modelConfigurationId?: string | null\n}\n\nexport interface ListPromptsResponse {\n prompts: PromptListItem[]\n}\n\nexport interface DeletePromptResponse {\n success: boolean\n}\n\nexport type TraceStatus = 'SUCCESS' | 'ERROR'\n\nexport interface TraceListItem {\n id: string\n traceId: string\n promptSlug: string\n model: string\n status: TraceStatus\n latencyMs: number\n inputTokens: number\n outputTokens: number\n totalTokens: number\n cost: number | null\n createdAt: string\n}\n\nexport interface Trace {\n id: string\n traceId: string\n promptSlug: string\n promptVersion: number\n model: string\n provider: string\n input: { messages: PromptMessage[] }\n variables: Record<string, string> | null\n output: string | null\n status: TraceStatus\n error: string | null\n latencyMs: number\n inputTokens: number\n outputTokens: number\n totalTokens: number\n cost: number | null\n tags: string[]\n userId: string | null\n sessionId: string | null\n createdAt: string\n}\n\nexport interface ListTracesOptions {\n promptSlug?: string\n status?: TraceStatus\n startDate?: Date\n endDate?: Date\n userId?: string\n sessionId?: string\n tags?: string[]\n limit?: number\n cursor?: string\n}\n\nexport interface ListTracesResult {\n traces: TraceListItem[]\n nextCursor?: string\n}","import { TraciaError } from './errors'\nimport {\n TraciaErrorCode,\n ApiErrorResponse,\n ApiSuccessResponse,\n} from './types'\n\nconst SDK_VERSION = process.env.SDK_VERSION || '0.0.0'\nconst DEFAULT_TIMEOUT_MS = 30000\n\ninterface HttpClientOptions {\n apiKey: string\n baseUrl: string\n}\n\ninterface RequestOptions {\n method: 'GET' | 'POST' | 'PUT' | 'DELETE'\n path: string\n body?: unknown\n}\n\nfunction mapApiErrorCodeToTraciaErrorCode(apiCode: string): TraciaErrorCode {\n const codeMap: Record<string, TraciaErrorCode> = {\n UNAUTHORIZED: TraciaErrorCode.UNAUTHORIZED,\n NOT_FOUND: TraciaErrorCode.NOT_FOUND,\n CONFLICT: TraciaErrorCode.CONFLICT,\n MISSING_PROVIDER_KEY: TraciaErrorCode.MISSING_PROVIDER_KEY,\n PROVIDER_ERROR: TraciaErrorCode.PROVIDER_ERROR,\n MISSING_VARIABLES: TraciaErrorCode.MISSING_VARIABLES,\n INVALID_REQUEST: TraciaErrorCode.INVALID_REQUEST,\n }\n return codeMap[apiCode] ?? TraciaErrorCode.UNKNOWN\n}\n\nexport class HttpClient {\n private readonly apiKey: string\n private readonly baseUrl: string\n\n constructor(options: HttpClientOptions) {\n this.apiKey = options.apiKey\n this.baseUrl = options.baseUrl.replace(/\\/$/, '')\n }\n\n async get<T>(path: string): Promise<T> {\n return this.request<T>({ method: 'GET', path })\n }\n\n async post<T = ApiSuccessResponse>(path: string, body: unknown): Promise<T> {\n return this.request<T>({ method: 'POST', path, body })\n }\n\n async put<T>(path: string, body: unknown): Promise<T> {\n return this.request<T>({ method: 'PUT', path, body })\n }\n\n async delete<T>(path: string): Promise<T> {\n return this.request<T>({ method: 'DELETE', path })\n }\n\n private async request<T>(options: RequestOptions): Promise<T> {\n const url = `${this.baseUrl}${options.path}`\n\n const controller = new AbortController()\n const timeoutId = setTimeout(() => controller.abort(), DEFAULT_TIMEOUT_MS)\n\n try {\n const response = await fetch(url, {\n method: options.method,\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${this.apiKey}`,\n 'User-Agent': `tracia-sdk/${SDK_VERSION}`,\n },\n body: options.body ? JSON.stringify(options.body) : undefined,\n signal: controller.signal,\n })\n\n clearTimeout(timeoutId)\n\n if (!response.ok) {\n let errorData: ApiErrorResponse | undefined\n try {\n errorData = (await response.json()) as ApiErrorResponse\n } catch {\n throw new TraciaError(\n TraciaErrorCode.UNKNOWN,\n `HTTP ${response.status}: ${response.statusText}`,\n response.status\n )\n }\n\n if (errorData?.error) {\n const errorCode = mapApiErrorCodeToTraciaErrorCode(errorData.error.code)\n throw new TraciaError(errorCode, errorData.error.message, response.status)\n }\n\n throw new TraciaError(\n TraciaErrorCode.UNKNOWN,\n `HTTP ${response.status}: ${response.statusText}`,\n response.status\n )\n }\n\n return (await response.json()) as T\n } catch (error) {\n clearTimeout(timeoutId)\n\n if (error instanceof TraciaError) {\n throw error\n }\n\n if (error instanceof Error) {\n if (error.name === 'AbortError') {\n throw new TraciaError(\n TraciaErrorCode.TIMEOUT,\n `Request timed out after ${DEFAULT_TIMEOUT_MS}ms`\n )\n }\n\n throw new TraciaError(\n TraciaErrorCode.NETWORK_ERROR,\n `Network error: ${error.message}`\n )\n }\n\n throw new TraciaError(TraciaErrorCode.UNKNOWN, 'An unknown error occurred')\n }\n }\n}","import { HttpClient } from './client'\nimport {\n RunVariables,\n RunOptions,\n RunResult,\n ApiSuccessResponse,\n Prompt,\n PromptListItem,\n CreatePromptOptions,\n UpdatePromptOptions,\n ListPromptsResponse,\n DeletePromptResponse,\n} from './types'\n\ninterface RunRequestBody {\n variables?: RunVariables\n model?: string\n tags?: string[]\n userId?: string\n sessionId?: string\n}\n\nexport class Prompts {\n constructor(private readonly client: HttpClient) {}\n\n async list(): Promise<PromptListItem[]> {\n const response = await this.client.get<ListPromptsResponse>('/api/v1/prompts')\n return response.prompts\n }\n\n async get(slug: string): Promise<Prompt> {\n return this.client.get<Prompt>(`/api/v1/prompts/${encodeURIComponent(slug)}`)\n }\n\n async create(options: CreatePromptOptions): Promise<Prompt> {\n return this.client.post<Prompt>('/api/v1/prompts', options)\n }\n\n async update(slug: string, options: UpdatePromptOptions): Promise<Prompt> {\n return this.client.put<Prompt>(\n `/api/v1/prompts/${encodeURIComponent(slug)}`,\n options\n )\n }\n\n async delete(slug: string): Promise<void> {\n await this.client.delete<DeletePromptResponse>(\n `/api/v1/prompts/${encodeURIComponent(slug)}`\n )\n }\n\n async run(\n slug: string,\n variables?: RunVariables,\n options?: RunOptions\n ): Promise<RunResult> {\n const requestBody: RunRequestBody = {}\n\n if (variables && Object.keys(variables).length > 0) {\n requestBody.variables = variables\n }\n\n if (options?.model) {\n requestBody.model = options.model\n }\n\n if (options?.tags && options.tags.length > 0) {\n requestBody.tags = options.tags\n }\n\n if (options?.userId) {\n requestBody.userId = options.userId\n }\n\n if (options?.sessionId) {\n requestBody.sessionId = options.sessionId\n }\n\n const response = await this.client.post<ApiSuccessResponse>(\n `/api/v1/prompts/${encodeURIComponent(slug)}/run`,\n requestBody\n )\n\n return {\n text: response.text,\n traceId: response.traceId,\n promptVersion: response.promptVersion,\n latencyMs: response.latencyMs,\n usage: response.usage,\n cost: response.cost,\n }\n }\n}\n","import { HttpClient } from './client'\nimport { Trace, ListTracesOptions, ListTracesResult } from './types'\n\nexport class Traces {\n constructor(private readonly client: HttpClient) {}\n\n async get(traceId: string): Promise<Trace> {\n return this.client.get<Trace>(`/api/v1/traces/${encodeURIComponent(traceId)}`)\n }\n\n async list(options?: ListTracesOptions): Promise<ListTracesResult> {\n const params = new URLSearchParams()\n\n if (options?.promptSlug) {\n params.set('promptSlug', options.promptSlug)\n }\n\n if (options?.status) {\n params.set('status', options.status)\n }\n\n if (options?.startDate) {\n params.set('startDate', options.startDate.toISOString())\n }\n\n if (options?.endDate) {\n params.set('endDate', options.endDate.toISOString())\n }\n\n if (options?.userId) {\n params.set('userId', options.userId)\n }\n\n if (options?.sessionId) {\n params.set('sessionId', options.sessionId)\n }\n\n if (options?.tags && options.tags.length > 0) {\n params.set('tags', options.tags.join(','))\n }\n\n if (options?.limit) {\n params.set('limit', String(options.limit))\n }\n\n if (options?.cursor) {\n params.set('cursor', options.cursor)\n }\n\n const query = params.toString()\n const path = query ? `/api/v1/traces?${query}` : '/api/v1/traces'\n\n return this.client.get<ListTracesResult>(path)\n }\n}\n","import { HttpClient } from './client'\nimport { Prompts } from './prompts'\nimport { Traces } from './traces'\nimport { TraciaOptions } from './types'\n\nexport { TraciaError } from './errors'\nexport type {\n TraciaOptions,\n RunVariables,\n RunOptions,\n RunResult,\n TokenUsage,\n Prompt,\n PromptListItem,\n PromptMessage,\n MessageRole,\n CreatePromptOptions,\n UpdatePromptOptions,\n Trace,\n TraceListItem,\n TraceStatus,\n ListTracesOptions,\n ListTracesResult,\n} from './types'\nexport { TraciaErrorCode } from './types'\n\nconst DEFAULT_BASE_URL = 'https://app.tracia.io'\n\nexport class Tracia {\n private readonly client: HttpClient\n readonly prompts: Prompts\n readonly traces: Traces\n\n constructor(options: TraciaOptions) {\n if (!options.apiKey) {\n throw new Error('apiKey is required')\n }\n\n this.client = new HttpClient({\n apiKey: options.apiKey,\n baseUrl: DEFAULT_BASE_URL,\n })\n\n this.prompts = new Prompts(this.client)\n this.traces = new Traces(this.client)\n }\n}\n"],"mappings":"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","names":["TraciaErrorCode"]}
|
|
1
|
+
{"version":3,"sources":["../src/errors.ts","../src/types.ts","../src/client.ts","../src/prompts.ts","../src/traces.ts","../src/index.ts"],"sourcesContent":["import { TraciaErrorCode } from './types'\n\nexport class TraciaError extends Error {\n readonly code: TraciaErrorCode\n readonly statusCode?: number\n\n constructor(code: TraciaErrorCode, message: string, statusCode?: number) {\n super(message)\n this.name = 'TraciaError'\n this.code = code\n this.statusCode = statusCode\n\n Object.setPrototypeOf(this, TraciaError.prototype)\n }\n}","export interface TraciaOptions {\n apiKey: string\n}\n\nexport interface RunVariables {\n [key: string]: string\n}\n\nexport interface RunOptions {\n model?: string\n tags?: string[]\n userId?: string\n sessionId?: string\n}\n\nexport interface TokenUsage {\n inputTokens: number\n outputTokens: number\n totalTokens: number\n}\n\nexport interface RunResult {\n text: string\n traceId: string\n promptVersion: number\n latencyMs: number\n usage: TokenUsage\n cost: number\n}\n\nexport enum TraciaErrorCode {\n UNAUTHORIZED = 'UNAUTHORIZED',\n NOT_FOUND = 'NOT_FOUND',\n CONFLICT = 'CONFLICT',\n MISSING_PROVIDER_KEY = 'MISSING_PROVIDER_KEY',\n PROVIDER_ERROR = 'PROVIDER_ERROR',\n MISSING_VARIABLES = 'MISSING_VARIABLES',\n INVALID_REQUEST = 'INVALID_REQUEST',\n NETWORK_ERROR = 'NETWORK_ERROR',\n TIMEOUT = 'TIMEOUT',\n UNKNOWN = 'UNKNOWN',\n}\n\nexport interface ApiErrorResponse {\n error: {\n code: string\n message: string\n }\n}\n\nexport interface ApiSuccessResponse {\n text: string\n traceId: string\n promptVersion: number\n latencyMs: number\n usage: TokenUsage\n cost: number\n}\n\nexport type MessageRole = 'system' | 'user' | 'assistant'\n\nexport interface PromptMessage {\n id: string\n role: MessageRole\n content: string\n}\n\nexport interface Prompt {\n id: string\n slug: string\n name: string\n description: string | null\n model: string | null\n currentVersion: number\n content: PromptMessage[]\n variables: string[]\n createdAt: string\n updatedAt: string\n}\n\nexport interface PromptListItem {\n id: string\n slug: string\n name: string\n description: string | null\n model: string | null\n currentVersion: number\n variables: string[]\n createdAt: string\n updatedAt: string\n}\n\nexport interface CreatePromptOptions {\n name: string\n slug?: string\n description?: string\n content: PromptMessage[]\n}\n\nexport interface UpdatePromptOptions {\n name?: string\n slug?: string\n description?: string\n content?: PromptMessage[]\n}\n\nexport interface ListPromptsResponse {\n prompts: PromptListItem[]\n}\n\nexport interface DeletePromptResponse {\n success: boolean\n}\n\nexport type TraceStatus = 'SUCCESS' | 'ERROR'\n\nexport interface TraceListItem {\n id: string\n traceId: string\n promptSlug: string\n model: string\n status: TraceStatus\n latencyMs: number\n inputTokens: number\n outputTokens: number\n totalTokens: number\n cost: number | null\n createdAt: string\n}\n\nexport interface Trace {\n id: string\n traceId: string\n promptSlug: string\n promptVersion: number\n model: string\n provider: string\n input: { messages: PromptMessage[] }\n variables: Record<string, string> | null\n output: string | null\n status: TraceStatus\n error: string | null\n latencyMs: number\n inputTokens: number\n outputTokens: number\n totalTokens: number\n cost: number | null\n tags: string[]\n userId: string | null\n sessionId: string | null\n createdAt: string\n}\n\nexport interface ListTracesOptions {\n promptSlug?: string\n status?: TraceStatus\n startDate?: Date\n endDate?: Date\n userId?: string\n sessionId?: string\n tags?: string[]\n limit?: number\n cursor?: string\n}\n\nexport interface ListTracesResult {\n traces: TraceListItem[]\n nextCursor?: string\n}","import { TraciaError } from './errors'\nimport {\n TraciaErrorCode,\n ApiErrorResponse,\n ApiSuccessResponse,\n} from './types'\n\nconst SDK_VERSION = process.env.SDK_VERSION || '0.0.0'\nconst DEFAULT_TIMEOUT_MS = 30000\n\ninterface HttpClientOptions {\n apiKey: string\n baseUrl: string\n}\n\ninterface RequestOptions {\n method: 'GET' | 'POST' | 'PUT' | 'DELETE'\n path: string\n body?: unknown\n}\n\nfunction mapApiErrorCodeToTraciaErrorCode(apiCode: string): TraciaErrorCode {\n const codeMap: Record<string, TraciaErrorCode> = {\n UNAUTHORIZED: TraciaErrorCode.UNAUTHORIZED,\n NOT_FOUND: TraciaErrorCode.NOT_FOUND,\n CONFLICT: TraciaErrorCode.CONFLICT,\n MISSING_PROVIDER_KEY: TraciaErrorCode.MISSING_PROVIDER_KEY,\n PROVIDER_ERROR: TraciaErrorCode.PROVIDER_ERROR,\n MISSING_VARIABLES: TraciaErrorCode.MISSING_VARIABLES,\n INVALID_REQUEST: TraciaErrorCode.INVALID_REQUEST,\n }\n return codeMap[apiCode] ?? TraciaErrorCode.UNKNOWN\n}\n\nexport class HttpClient {\n private readonly apiKey: string\n private readonly baseUrl: string\n\n constructor(options: HttpClientOptions) {\n this.apiKey = options.apiKey\n this.baseUrl = options.baseUrl.replace(/\\/$/, '')\n }\n\n async get<T>(path: string): Promise<T> {\n return this.request<T>({ method: 'GET', path })\n }\n\n async post<T = ApiSuccessResponse>(path: string, body: unknown): Promise<T> {\n return this.request<T>({ method: 'POST', path, body })\n }\n\n async put<T>(path: string, body: unknown): Promise<T> {\n return this.request<T>({ method: 'PUT', path, body })\n }\n\n async delete<T>(path: string): Promise<T> {\n return this.request<T>({ method: 'DELETE', path })\n }\n\n private async request<T>(options: RequestOptions): Promise<T> {\n const url = `${this.baseUrl}${options.path}`\n\n const controller = new AbortController()\n const timeoutId = setTimeout(() => controller.abort(), DEFAULT_TIMEOUT_MS)\n\n try {\n const response = await fetch(url, {\n method: options.method,\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${this.apiKey}`,\n 'User-Agent': `tracia-sdk/${SDK_VERSION}`,\n },\n body: options.body ? JSON.stringify(options.body) : undefined,\n signal: controller.signal,\n })\n\n clearTimeout(timeoutId)\n\n if (!response.ok) {\n let errorData: ApiErrorResponse | undefined\n try {\n errorData = (await response.json()) as ApiErrorResponse\n } catch {\n throw new TraciaError(\n TraciaErrorCode.UNKNOWN,\n `HTTP ${response.status}: ${response.statusText}`,\n response.status\n )\n }\n\n if (errorData?.error) {\n const errorCode = mapApiErrorCodeToTraciaErrorCode(errorData.error.code)\n throw new TraciaError(errorCode, errorData.error.message, response.status)\n }\n\n throw new TraciaError(\n TraciaErrorCode.UNKNOWN,\n `HTTP ${response.status}: ${response.statusText}`,\n response.status\n )\n }\n\n return (await response.json()) as T\n } catch (error) {\n clearTimeout(timeoutId)\n\n if (error instanceof TraciaError) {\n throw error\n }\n\n if (error instanceof Error) {\n if (error.name === 'AbortError') {\n throw new TraciaError(\n TraciaErrorCode.TIMEOUT,\n `Request timed out after ${DEFAULT_TIMEOUT_MS}ms`\n )\n }\n\n throw new TraciaError(\n TraciaErrorCode.NETWORK_ERROR,\n `Network error: ${error.message}`\n )\n }\n\n throw new TraciaError(TraciaErrorCode.UNKNOWN, 'An unknown error occurred')\n }\n }\n}","import { HttpClient } from './client'\nimport {\n RunVariables,\n RunOptions,\n RunResult,\n ApiSuccessResponse,\n Prompt,\n PromptListItem,\n CreatePromptOptions,\n UpdatePromptOptions,\n ListPromptsResponse,\n DeletePromptResponse,\n} from './types'\n\ninterface RunRequestBody {\n variables?: RunVariables\n model?: string\n tags?: string[]\n userId?: string\n sessionId?: string\n}\n\nexport class Prompts {\n constructor(private readonly client: HttpClient) {}\n\n async list(): Promise<PromptListItem[]> {\n const response = await this.client.get<ListPromptsResponse>('/api/v1/prompts')\n return response.prompts\n }\n\n async get(slug: string): Promise<Prompt> {\n return this.client.get<Prompt>(`/api/v1/prompts/${encodeURIComponent(slug)}`)\n }\n\n async create(options: CreatePromptOptions): Promise<Prompt> {\n return this.client.post<Prompt>('/api/v1/prompts', options)\n }\n\n async update(slug: string, options: UpdatePromptOptions): Promise<Prompt> {\n return this.client.put<Prompt>(\n `/api/v1/prompts/${encodeURIComponent(slug)}`,\n options\n )\n }\n\n async delete(slug: string): Promise<void> {\n await this.client.delete<DeletePromptResponse>(\n `/api/v1/prompts/${encodeURIComponent(slug)}`\n )\n }\n\n async run(\n slug: string,\n variables?: RunVariables,\n options?: RunOptions\n ): Promise<RunResult> {\n const requestBody: RunRequestBody = {}\n\n if (variables && Object.keys(variables).length > 0) {\n requestBody.variables = variables\n }\n\n if (options?.model) {\n requestBody.model = options.model\n }\n\n if (options?.tags && options.tags.length > 0) {\n requestBody.tags = options.tags\n }\n\n if (options?.userId) {\n requestBody.userId = options.userId\n }\n\n if (options?.sessionId) {\n requestBody.sessionId = options.sessionId\n }\n\n const response = await this.client.post<ApiSuccessResponse>(\n `/api/v1/prompts/${encodeURIComponent(slug)}/run`,\n requestBody\n )\n\n return {\n text: response.text,\n traceId: response.traceId,\n promptVersion: response.promptVersion,\n latencyMs: response.latencyMs,\n usage: response.usage,\n cost: response.cost,\n }\n }\n}\n","import { HttpClient } from './client'\nimport { Trace, ListTracesOptions, ListTracesResult } from './types'\n\nexport class Traces {\n constructor(private readonly client: HttpClient) {}\n\n async get(traceId: string): Promise<Trace> {\n return this.client.get<Trace>(`/api/v1/traces/${encodeURIComponent(traceId)}`)\n }\n\n async list(options?: ListTracesOptions): Promise<ListTracesResult> {\n const params = new URLSearchParams()\n\n if (options?.promptSlug) {\n params.set('promptSlug', options.promptSlug)\n }\n\n if (options?.status) {\n params.set('status', options.status)\n }\n\n if (options?.startDate) {\n params.set('startDate', options.startDate.toISOString())\n }\n\n if (options?.endDate) {\n params.set('endDate', options.endDate.toISOString())\n }\n\n if (options?.userId) {\n params.set('userId', options.userId)\n }\n\n if (options?.sessionId) {\n params.set('sessionId', options.sessionId)\n }\n\n if (options?.tags && options.tags.length > 0) {\n params.set('tags', options.tags.join(','))\n }\n\n if (options?.limit) {\n params.set('limit', String(options.limit))\n }\n\n if (options?.cursor) {\n params.set('cursor', options.cursor)\n }\n\n const query = params.toString()\n const path = query ? `/api/v1/traces?${query}` : '/api/v1/traces'\n\n return this.client.get<ListTracesResult>(path)\n }\n}\n","import { HttpClient } from './client'\nimport { Prompts } from './prompts'\nimport { Traces } from './traces'\nimport { TraciaOptions } from './types'\n\nexport { TraciaError } from './errors'\nexport type {\n TraciaOptions,\n RunVariables,\n RunOptions,\n RunResult,\n TokenUsage,\n Prompt,\n PromptListItem,\n PromptMessage,\n MessageRole,\n CreatePromptOptions,\n UpdatePromptOptions,\n Trace,\n TraceListItem,\n TraceStatus,\n ListTracesOptions,\n ListTracesResult,\n} from './types'\nexport { TraciaErrorCode } from './types'\n\nconst DEFAULT_BASE_URL = 'https://app.tracia.io'\n\nexport class Tracia {\n private readonly client: HttpClient\n readonly prompts: Prompts\n readonly traces: Traces\n\n constructor(options: TraciaOptions) {\n if (!options.apiKey) {\n throw new Error('apiKey is required')\n }\n\n this.client = new HttpClient({\n apiKey: options.apiKey,\n baseUrl: DEFAULT_BASE_URL,\n })\n\n this.prompts = new Prompts(this.client)\n this.traces = new Traces(this.client)\n }\n}\n"],"mappings":"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","names":["TraciaErrorCode"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tracia",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "TypeScript/JavaScript SDK for Tracia - store, test, and trace LLM prompts",
|
|
5
5
|
"main": "./dist/index.cjs",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -64,4 +64,4 @@
|
|
|
64
64
|
"engines": {
|
|
65
65
|
"node": ">=18.0.0"
|
|
66
66
|
}
|
|
67
|
-
}
|
|
67
|
+
}
|