pareta 1.4.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/dist/index.cjs +186 -10
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +87 -5
- package/dist/index.d.ts +87 -5
- package/dist/index.mjs +185 -11
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/errors.ts","../src/streaming.ts","../src/version.ts","../src/money.ts","../src/models.ts","../src/resources/chat.ts","../src/resources/models.ts","../src/resources/tasks.ts","../src/resources/evals.ts","../src/resources/auto.ts","../src/resources/audio.ts","../src/resources/images.ts","../src/resources/retrieval.ts","../src/client.ts"],"names":["PATH","BASE","mime","toBase64"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Typed error hierarchy for the Pareta SDK — a faithful port of the Python\n * `_exceptions.py`. The backend is FastAPI, so error bodies are\n * `{\"detail\": \"<message>\"}` with a standard HTTP status. We map status → a\n * specific class so callers can `catch (e) { if (e instanceof\n * InsufficientCreditsError) … }` instead of sniffing status codes.\n *\n * Status → exception mapping:\n * 400 → BadRequestError\n * 401 → AuthenticationError (\"invalid API key\")\n * 402 → InsufficientCreditsError (\"organization is out of credit…\")\n * 403 → PermissionDeniedError\n * 404 → NotFoundError\n * 409 → ConflictError (resource conflict / not servable)\n * 422 → BadRequestError (FastAPI validation; `detail` is an array)\n * 429 → RateLimitError\n * 503 → EndpointNotReadyError (stopped / cold / provider down)\n * other 5xx → APIStatusError\n */\n\n/** A single FastAPI validation error item (422 `detail` is an array of these). */\nexport interface ValidationErrorItem {\n loc?: (string | number)[];\n msg?: string;\n type?: string;\n}\n\n/** For 422 the server's `detail` is an ARRAY; for every other status a string. */\nexport type ErrorDetail = string | ValidationErrorItem[] | null | undefined;\n\n/** Base class for every error raised by the SDK. */\nexport class ParetaError extends Error {\n constructor(message: string, options?: { cause?: unknown }) {\n super(message);\n this.name = \"ParetaError\";\n // Preserve the underlying cause (network error, abort, …) when given.\n if (options && options.cause !== undefined) (this as { cause?: unknown }).cause = options.cause;\n // Restore the prototype chain so `instanceof` works after transpilation.\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n\n/** The request never reached the server (DNS, TCP, TLS, network). */\nexport class APIConnectionError extends ParetaError {\n constructor(message = \"connection error\", options?: { cause?: unknown }) {\n super(message, options);\n this.name = \"APIConnectionError\";\n }\n}\n\n/** The request timed out before a response was received. */\nexport class APITimeoutError extends APIConnectionError {\n constructor(message = \"request timed out\", options?: { cause?: unknown }) {\n super(message, options);\n this.name = \"APITimeoutError\";\n }\n}\n\nexport interface APIStatusErrorInit {\n status: number;\n detail?: ErrorDetail;\n requestId?: string | null;\n response?: Response;\n}\n\n/** The server returned a non-2xx status. */\nexport class APIStatusError extends ParetaError {\n /** The HTTP status code. */\n readonly status: number;\n /** The server's `detail` (string, or an array of validation items for 422). */\n readonly detail: ErrorDetail;\n /** Value of the `x-request-id` response header, if present. */\n readonly requestId: string | null;\n /** The underlying `Response` (for advanced use). */\n readonly response?: Response;\n\n constructor(message: string, init: APIStatusErrorInit) {\n super(message);\n this.name = \"APIStatusError\";\n this.status = init.status;\n this.detail = init.detail;\n this.requestId = init.requestId ?? null;\n this.response = init.response;\n }\n}\n\nexport class BadRequestError extends APIStatusError {\n constructor(message: string, init: APIStatusErrorInit) {\n super(message, init);\n this.name = \"BadRequestError\";\n }\n}\nexport class AuthenticationError extends APIStatusError {\n constructor(message: string, init: APIStatusErrorInit) {\n super(message, init);\n this.name = \"AuthenticationError\";\n }\n}\nexport class PermissionDeniedError extends APIStatusError {\n constructor(message: string, init: APIStatusErrorInit) {\n super(message, init);\n this.name = \"PermissionDeniedError\";\n }\n}\nexport class NotFoundError extends APIStatusError {\n constructor(message: string, init: APIStatusErrorInit) {\n super(message, init);\n this.name = \"NotFoundError\";\n }\n}\nexport class ConflictError extends APIStatusError {\n constructor(message: string, init: APIStatusErrorInit) {\n super(message, init);\n this.name = \"ConflictError\";\n }\n}\n/** The org is out of credit. Top up in the dashboard (billing is browser-only). */\nexport class InsufficientCreditsError extends APIStatusError {\n constructor(message: string, init: APIStatusErrorInit) {\n super(message, init);\n this.name = \"InsufficientCreditsError\";\n }\n}\nexport class RateLimitError extends APIStatusError {\n constructor(message: string, init: APIStatusErrorInit) {\n super(message, init);\n this.name = \"RateLimitError\";\n }\n}\n/** The target endpoint isn't serving yet (stopped, cold-starting, or provider down). */\nexport class EndpointNotReadyError extends APIStatusError {\n constructor(message: string, init: APIStatusErrorInit) {\n super(message, init);\n this.name = \"EndpointNotReadyError\";\n }\n}\n\ntype StatusErrorCtor = new (message: string, init: APIStatusErrorInit) => APIStatusError;\n\nconst STATUS_MAP: Record<number, StatusErrorCtor> = {\n 400: BadRequestError,\n 401: AuthenticationError,\n 402: InsufficientCreditsError,\n 403: PermissionDeniedError,\n 404: NotFoundError,\n 409: ConflictError,\n 422: BadRequestError,\n 429: RateLimitError,\n 503: EndpointNotReadyError,\n};\n\n/** Construct the most specific `APIStatusError` subclass for a status code. */\nexport function errorFromResponse(\n status: number,\n opts: { detail?: ErrorDetail; requestId?: string | null; response?: Response },\n): APIStatusError {\n const { detail, requestId, response } = opts;\n // Message = `detail` only when it's a non-empty STRING (422's array detail\n // falls through to \"HTTP 422\"); mirrors error_from_response.\n const message = typeof detail === \"string\" && detail ? detail : `HTTP ${status}`;\n let cls = STATUS_MAP[status];\n if (!cls) cls = status === 429 ? RateLimitError : APIStatusError;\n return new cls(message, { status, detail, requestId, response });\n}\n","/**\n * SSE parsing over a `fetch` `ReadableStream` — port of the Python\n * `_iter_sse_json` (data-only) and `_iter_sse_typed` (named-event) parsers.\n *\n * Two modes behind one `events` flag, NEVER one parser for both:\n * - data-only (chat completions): strip `data:`, skip `:`-comments/blanks,\n * stop on `[DONE]`, JSON-parse, skip unparseable lines.\n * - named-event (progress-style backend streams): track the `event:` line\n * (reset to \"message\" on a blank line) and yield `{event, data}` per event.\n *\n * CRITICAL: the backend's named-event streams (sse-starlette) emit CRLF line\n * endings. A naive `split(\"\\n\")` would silently drop every event. `iterLines` normalizes\n * `\\r\\n` and bare `\\r` → `\\n` before framing (the frontend was bitten by this\n * at commit 862fab6 — `normalizeSSEBuffer`). We parse incrementally (yield as\n * bytes arrive), improving on the Python async client which buffered all lines.\n */\n\nfunction normalize(s: string): string {\n return s.replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\");\n}\n\n/** Decode a byte stream and yield complete `\\n`-terminated lines (CRLF-normalized). */\nexport async function* iterLines(\n reader: ReadableStreamDefaultReader<Uint8Array>,\n): AsyncGenerator<string> {\n const decoder = new TextDecoder();\n let buffer = \"\";\n for (;;) {\n const { done, value } = await reader.read();\n if (done) break;\n buffer = normalize(buffer + decoder.decode(value, { stream: true }));\n let idx: number;\n while ((idx = buffer.indexOf(\"\\n\")) >= 0) {\n yield buffer.slice(0, idx);\n buffer = buffer.slice(idx + 1);\n }\n }\n // Flush any trailing text the stream ended without a final newline.\n buffer = normalize(buffer + decoder.decode());\n if (buffer.length > 0) {\n for (const line of buffer.split(\"\\n\")) yield line;\n }\n}\n\n/** Data-only SSE: yield each `data:` JSON object (vLLM chat stream). */\nexport async function* parseDataOnly(lines: AsyncIterable<string>): AsyncGenerator<unknown> {\n for await (const rawLine of lines) {\n let line = rawLine.trim();\n if (!line || line.startsWith(\":\")) continue;\n if (line.startsWith(\"data:\")) line = line.slice(\"data:\".length).trim();\n if (!line || line === \"[DONE]\") {\n if (line === \"[DONE]\") return;\n continue;\n }\n try {\n yield JSON.parse(line);\n } catch {\n continue;\n }\n }\n}\n\n/** One named SSE event: the event type + its parsed (or raw-string) data. */\nexport interface SSEEvent {\n event: string;\n data: unknown;\n}\n\n/** Named-event SSE: track `event:` lines, yield `{event, data}`. */\nexport async function* parseNamedEvent(lines: AsyncIterable<string>): AsyncGenerator<SSEEvent> {\n let event = \"message\";\n for await (const rawLine of lines) {\n const line = rawLine.replace(/\\n+$/, \"\");\n if (!line) {\n event = \"message\"; // blank line terminates one event\n continue;\n }\n if (line.startsWith(\":\")) continue;\n if (line.startsWith(\"event:\")) {\n event = line.slice(\"event:\".length).trim();\n } else if (line.startsWith(\"data:\")) {\n const raw = line.slice(\"data:\".length).trim();\n if (raw === \"[DONE]\") return;\n let data: unknown;\n try {\n data = JSON.parse(raw);\n } catch {\n data = raw;\n }\n yield { event, data };\n }\n }\n}\n\n/**\n * Parse an SSE response body. `events=false` → data-only objects; `events=true`\n * → `{event, data}` named events.\n */\nexport function parseSSE(\n reader: ReadableStreamDefaultReader<Uint8Array>,\n opts: { events: true },\n): AsyncGenerator<SSEEvent>;\nexport function parseSSE(\n reader: ReadableStreamDefaultReader<Uint8Array>,\n opts?: { events?: false },\n): AsyncGenerator<unknown>;\nexport function parseSSE(\n reader: ReadableStreamDefaultReader<Uint8Array>,\n opts?: { events?: boolean },\n): AsyncGenerator<unknown> {\n const lines = iterLines(reader);\n return opts?.events ? parseNamedEvent(lines) : parseDataOnly(lines);\n}\n","// Single source of the SDK version (drives the User-Agent). Keep in sync with\n// package.json \"version\" on every release.\nexport const VERSION = \"1.4.0\";\n","/**\n * Money helpers — port of `_dollars_floored_to_cents` (Python `_models.py` §6).\n *\n * JS has no Decimal, so the billed `run.cost` is surfaced as a formatted\n * fixed-2dp dollar STRING (\"1.23\", \"0.00\") computed in integer cents, plus the\n * raw `run.costMicroUsd` integer. We FLOOR to whole cents (never round up) so\n * the SDK never overstates a charge — a 5 µUSD run reads \"0.00\". Flooring is\n * done in integer (BigInt) math, never float dollars, to avoid fp drift.\n *\n * Only `run.cost` floors. Sub-cent unit rates (EvalResult.meanCostMicroUsd)\n * stay raw integers — flooring them to \"$0.00\" would erase the\n * open-vs-frontier savings comparison.\n */\n\nconst MICRO_PER_CENT = 10_000n;\n\n/**\n * Floor micro-USD to whole cents and format as a fixed-2dp dollar string.\n * `dollarsFlooredToCents(5)` → \"0.00\"; `(1_234_500)` → \"1.23\"; `(20_000)` → \"0.02\".\n */\nexport function dollarsFlooredToCents(microUsd: number | bigint | null | undefined): string {\n const micro = typeof microUsd === \"bigint\" ? microUsd : BigInt(Math.trunc(Number(microUsd ?? 0)));\n // BigInt division truncates toward zero; costs are >= 0 so this is a floor.\n const cents = micro / MICRO_PER_CENT;\n const negative = cents < 0n;\n const abs = negative ? -cents : cents;\n const dollars = abs / 100n;\n const remainder = abs % 100n;\n return `${negative ? \"-\" : \"\"}${dollars.toString()}.${remainder.toString().padStart(2, \"0\")}`;\n}\n","/**\n * Response objects — hand-written wrappers over the raw server JSON, a faithful\n * port of the Python `_models.py`. Each keeps the raw payload on `.raw` and\n * exposes it via `.toDict()`, so nothing the API returns is lost behind the\n * typed layer.\n *\n * Alias / D3 boundary (a BACKEND contract, the SDK adds no alias logic):\n * `EvalResult.modelId` and `run.candidateModels` are per-task PUBLIC aliases —\n * real open-weights ids never cross. Frontier (vendor) ids are in the clear.\n */\n\nimport { dollarsFlooredToCents } from \"./money.js\";\n\ntype Raw = Record<string, any>;\n\n/** Base: holds the raw payload, dict-style escape hatches. */\nexport class BaseModel {\n /** The raw server JSON, untouched. */\n readonly raw: Raw;\n constructor(raw?: Raw) {\n this.raw = raw ?? {};\n }\n /** The raw server JSON (alias of `.raw`, mirrors Python `.to_dict()`). */\n toDict(): Raw {\n return this.raw;\n }\n /** Read an arbitrary key off the raw payload. */\n get<T = unknown>(key: string, fallback?: T): T {\n const v = this.raw[key];\n return (v === undefined ? (fallback as T) : (v as T));\n }\n}\n\n// ── inference ──────────────────────────────────────────────────────────\nexport class Usage extends BaseModel {\n get promptTokens(): number | null { return this.raw.prompt_tokens ?? null; }\n get completionTokens(): number | null { return this.raw.completion_tokens ?? null; }\n get totalTokens(): number | null { return this.raw.total_tokens ?? null; }\n}\n\nexport class Message extends BaseModel {\n get role(): string | null { return this.raw.role ?? null; }\n get content(): string | null { return this.raw.content ?? null; }\n}\n\nexport class Choice extends BaseModel {\n get index(): number | null { return this.raw.index ?? null; }\n get finishReason(): string | null { return this.raw.finish_reason ?? null; }\n get message(): Message { return new Message(this.raw.message ?? {}); }\n /** Streaming chunks carry `delta` instead of `message`. */\n get delta(): Message { return new Message(this.raw.delta ?? {}); }\n}\n\nexport class ChatCompletion extends BaseModel {\n get id(): string | null { return this.raw.id ?? null; }\n get model(): string | null { return this.raw.model ?? null; }\n get created(): number | null { return this.raw.created ?? null; }\n get choices(): Choice[] { return (this.raw.choices ?? []).map((c: Raw) => new Choice(c)); }\n get usage(): Usage { return new Usage(this.raw.usage ?? {}); }\n}\n\n/** One SSE delta. `chunk.choices[0].delta.content` is the incremental text. */\nexport class ChatCompletionChunk extends ChatCompletion {}\n\nexport class Model extends BaseModel {\n get id(): string | null { return this.raw.id ?? null; }\n get ownedBy(): string | null { return this.raw.owned_by ?? null; }\n get created(): number | null { return this.raw.created ?? null; }\n}\n\n/** The OpenAI-compatible `/v1/models` list. Exposes `.data` and is iterable. */\nexport class ModelList extends BaseModel implements Iterable<Model> {\n get data(): Model[] { return (this.raw.data ?? []).map((m: Raw) => new Model(m)); }\n get length(): number { return (this.raw.data ?? []).length; }\n [Symbol.iterator](): Iterator<Model> { return this.data[Symbol.iterator](); }\n}\n\n// ── tasks ──────────────────────────────────────────────────────────────\nexport class Task extends BaseModel {\n get id(): string | null { return this.raw.id ?? null; }\n get defaultScorer(): string | null { return this.raw.default_scorer ?? null; }\n get hasBlobInput(): boolean { return Boolean(this.raw.has_blob_input); }\n}\n\n/** GET /v1/tasks → {\"tasks\": [...]}. */\nexport function taskList(raw: unknown): Task[] {\n return (((raw as Raw)?.tasks as Raw[]) ?? []).map((t) => new Task(t));\n}\n\nexport class TaskMatchCandidate extends BaseModel {\n get taskId(): string | null { return this.raw.task_id ?? null; }\n get score(): number | null { return this.raw.score ?? null; }\n get confidence(): string | null { return this.raw.confidence ?? null; }\n}\n\n/** Result of `tasks.match()`: `.matched`, `.chosen` (best or null), `.candidates`. */\nexport class TaskMatch extends BaseModel {\n get query(): string | null { return this.raw.query ?? null; }\n get matched(): boolean { return Boolean(this.raw.matched); }\n get chosen(): TaskMatchCandidate | null {\n return this.raw.chosen ? new TaskMatchCandidate(this.raw.chosen) : null;\n }\n get candidates(): TaskMatchCandidate[] {\n return (this.raw.candidates ?? []).map((c: Raw) => new TaskMatchCandidate(c));\n }\n get ambiguous(): boolean { return Boolean(this.raw.ambiguous); }\n get matcher(): string | null { return this.raw.matcher ?? null; }\n}\n\n// ── evals ──────────────────────────────────────────────────────────────\nexport class EvalSet extends BaseModel {\n get id(): string | null { return this.raw.id ?? null; }\n get taskId(): string | null { return this.raw.task_id ?? null; }\n get name(): string | null { return this.raw.name ?? null; }\n get itemCount(): number | null { return this.raw.item_count ?? null; }\n get scoringStrategy(): string | null { return this.raw.scoring_strategy ?? null; }\n}\n\n/** POST /v1/eval-sets → {\"eval_set\": {...}}. */\nexport function evalSetFromCreate(raw: unknown): EvalSet {\n return new EvalSet((raw as Raw)?.eval_set ?? {});\n}\n/** GET /v1/eval-sets → {\"eval_sets\": [...]}. */\nexport function evalSetList(raw: unknown): EvalSet[] {\n return (((raw as Raw)?.eval_sets as Raw[]) ?? []).map((e) => new EvalSet(e));\n}\n\n/**\n * One scored item inside `EvalResult.perItem`. `prediction` is the model's raw\n * output, truncated server-side — present only on items that reached scoring\n * (not pool/build errors), there to debug a 0.0 `score` without re-running.\n */\nexport class EvalItemResult extends BaseModel {\n get idx(): number | null { return this.raw.idx ?? null; }\n get score(): number | null { return this.raw.score ?? null; }\n get prediction(): string | null { return this.raw.prediction ?? null; }\n get error(): string | null { return this.raw.error ?? null; }\n}\n\n/**\n * One model's aggregate on an eval run. `modelId` is the per-task public alias;\n * `kind` ('open' | 'frontier') is populated by the Slice-4 result schema.\n */\nexport class EvalResult extends BaseModel {\n get modelId(): string | null { return this.raw.model_id ?? null; }\n get kind(): string | null { return this.raw.kind ?? null; }\n get qualityMean(): number | null { return this.raw.quality_mean ?? null; }\n get qualityCiLow(): number | null { return this.raw.quality_ci_low ?? null; }\n get qualityCiHigh(): number | null { return this.raw.quality_ci_high ?? null; }\n // Raw integer — sub-cent unit rate, NOT floored (see money.ts).\n get meanCostMicroUsd(): number | null { return this.raw.mean_cost_micro_usd ?? null; }\n get nSucceeded(): number | null { return this.raw.n_succeeded ?? null; }\n get errorCount(): number | null { return this.raw.error_count ?? null; }\n /** Per-item rows (idx/score/prediction/error); empty when not persisted. */\n get perItem(): EvalItemResult[] {\n return (this.raw.per_item ?? []).map((it: Raw) => new EvalItemResult(it));\n }\n}\n\n/** A vendor frontier model you can evaluate against (from the eval pool). */\nexport class FrontierModel extends BaseModel {\n get id(): string | null { return this.raw.id ?? null; }\n get vendor(): string | null { return this.raw.vendor ?? null; }\n get vision(): boolean { return Boolean(this.raw.vision); }\n /** Only meaningful when a task was given: it has benchmark results on that task. */\n get benchmarked(): boolean { return Boolean(this.raw.benchmarked); }\n}\n\nexport function frontierModels(raw: unknown): FrontierModel[] {\n return (((raw as Raw)?.frontier_models as Raw[]) ?? []).map((m) => new FrontierModel(m));\n}\n\n/**\n * Wraps the GET /v1/eval-runs/{id} envelope `{\"run\": {...}, \"results\": [...]}`.\n * `cost` is the billed total as a floored fixed-2dp dollar string (§6);\n * `costMicroUsd` is the raw integer.\n */\nexport class EvalRun extends BaseModel {\n private get run(): Raw { return this.raw.run ?? {}; }\n get id(): string | null { return this.run.id ?? null; }\n get evalSetId(): string | null { return this.run.eval_set_id ?? null; }\n get status(): string | null { return this.run.status ?? null; }\n get isTerminal(): boolean {\n return this.run.status === \"completed\" || this.run.status === \"failed\";\n }\n get candidateModels(): string[] { return [...(this.run.candidate_model_ids ?? [])]; }\n get errorDetail(): string | null { return this.run.error_detail ?? null; }\n /** Raw billed micro-USD integer. */\n get costMicroUsd(): number { return Number(this.run.total_cost_micro_usd ?? 0); }\n /** Billed total, floored to whole cents, as a fixed-2dp dollar string (\"1.23\"). */\n get cost(): string { return dollarsFlooredToCents(this.run.total_cost_micro_usd); }\n get results(): EvalResult[] {\n return (this.raw.results ?? []).map((r: Raw) => new EvalResult(r));\n }\n}\n\n// ── retrieval (rerank + embeddings) ────────────────────────────────────\n\n/** One row of `Rerank.results` — a document's position + calibrated score. */\nexport class RerankResult extends BaseModel {\n /** Position of this document in YOUR request's documents array. */\n get index(): number { return Number(this.raw.index ?? -1); }\n /** Calibrated P(relevant) in (0, 1) — thresholdable, not just ordinal. */\n get relevanceScore(): number { return Number(this.raw.relevance_score ?? 0); }\n}\n\n/** Result of `pa.rerank(...)`: `.results` ordered most-relevant-first;\n * `.pairs` is the number of documents scored (the metered unit). */\nexport class Rerank extends BaseModel {\n get results(): RerankResult[] {\n return (this.raw.results ?? []).map((r: Raw) => new RerankResult(r));\n }\n get model(): string | null { return this.raw.model ?? null; }\n get pairs(): number | null { return this.raw.pairs ?? null; }\n /** Map the ranked indices back onto the documents you sent — best first. */\n topDocuments(documents: string[]): string[] {\n return this.results\n .filter((r) => r.index >= 0 && r.index < documents.length)\n .map((r) => documents[r.index]!);\n }\n}\n\n/** Result of `pa.embeddings(...)`: unit-normalized vectors in input order\n * (cosine similarity is a plain dot product); `.promptTokens` is metered. */\nexport class Embeddings extends BaseModel {\n get vectors(): number[][] {\n const rows = [...((this.raw.data ?? []) as Raw[])];\n rows.sort((a, b) => Number(a.index ?? 0) - Number(b.index ?? 0));\n return rows.map((r) => (r.embedding as number[]) ?? []);\n }\n get model(): string | null { return this.raw.model ?? null; }\n get promptTokens(): number | null { return this.raw.usage?.prompt_tokens ?? null; }\n get length(): number { return ((this.raw.data ?? []) as Raw[]).length; }\n}\n\n// ── audio (ASR + TTS) ──────────────────────────────────────────────────\n\n/** Browser-safe base64 → Uint8Array (Buffer in Node, atob elsewhere). */\nfunction base64ToBytes(b64: string): Uint8Array {\n if (typeof Buffer !== \"undefined\") return new Uint8Array(Buffer.from(b64, \"base64\"));\n const bin = atob(b64);\n const bytes = new Uint8Array(bin.length);\n for (let i = 0; i < bin.length; i++) bytes[i] = bin.charCodeAt(i);\n return bytes;\n}\n\n/** Speech-to-text result from `audio.transcriptions(...)`. `.durationS` is\n * the metered input audio length (per minute). */\nexport class Transcription extends BaseModel {\n get text(): string | null { return this.raw.text ?? null; }\n get language(): string | null { return this.raw.language ?? null; }\n get durationS(): number | null { return this.raw.duration_s ?? null; }\n toString(): string { return this.text ?? \"\"; }\n}\n\n/** Text-to-speech result from `audio.speech(...)`. `.audio` is decoded\n * bytes; `.durationS` is the metered output audio length (per minute). */\nexport class Speech extends BaseModel {\n /** The synthesized audio, base64-decoded to raw bytes. */\n get audio(): Uint8Array {\n const b64 = (this.raw.audio_base64 as string) || \"\";\n return b64 ? base64ToBytes(b64) : new Uint8Array(0);\n }\n get audioBase64(): string | null { return this.raw.audio_base64 ?? null; }\n get sampleRate(): number | null { return this.raw.sample_rate ?? null; }\n get durationS(): number | null { return this.raw.duration_s ?? null; }\n /** Container/codec of the returned audio (e.g. \"wav\"). */\n get format(): string | null { return this.raw.format ?? null; }\n /** Write the decoded audio to `path` (Node only — lazy node:fs). */\n async save(path: string): Promise<this> {\n const { writeFile } = await import(\"node:fs/promises\");\n await writeFile(path, this.audio);\n return this;\n }\n}\n\n/** Image result from `images.generate(...)`. `.image` is decoded PNG bytes;\n * `.size` is the ACTUAL delivered size. Billed flat per image (the\n * `X-Pareta-Billed` response header carries the receipt). */\nexport class ImageGeneration extends BaseModel {\n /** The generated image, base64-decoded to raw PNG bytes. */\n get image(): Uint8Array {\n const b64 = this.b64Json ?? \"\";\n return b64 ? base64ToBytes(b64) : new Uint8Array(0);\n }\n get b64Json(): string | null {\n const data = (this.raw.data as Array<Record<string, unknown>>) ?? [];\n return (data[0]?.b64_json as string) ?? null;\n }\n get size(): string | null { return this.raw.size ?? null; }\n get model(): string | null { return this.raw.model ?? null; }\n get created(): number | null { return this.raw.created ?? null; }\n /** Write the decoded PNG to `path` (Node only — lazy node:fs). */\n async save(path: string): Promise<this> {\n const { writeFile } = await import(\"node:fs/promises\");\n await writeFile(path, this.image);\n return this;\n }\n}\n","/**\n * `client.chat.completions` — OpenAI-compatible chat completions.\n *\n * `model` is `\"auto\"` — Pareta plans, routes, and verifies each request. The\n * call is metered: a successful completion debits the org's balance; a zero\n * balance raises `InsufficientCreditsError` (402).\n */\n\nimport type { Transport } from \"../client.js\";\nimport { ParetaError } from \"../errors.js\";\nimport { ChatCompletion, ChatCompletionChunk } from \"../models.js\";\n\nconst PATH = \"/v1/chat/completions\";\n\n/** An OpenAI-style chat message. `content` is a string or content-block array. */\nexport interface ChatMessage {\n role: string;\n content: string | Array<Record<string, unknown>>;\n [key: string]: unknown;\n}\n\n/** Params for `chat.completions.create`. Extra OpenAI params pass through. */\nexport interface ChatCompletionCreateParams {\n /** `\"auto\"` — Pareta routes the request to the right model. */\n model: string;\n messages: ChatMessage[];\n stream?: boolean;\n /** temperature, max_tokens, top_p, … — forwarded verbatim. */\n [key: string]: unknown;\n}\n\nfunction buildBody(params: ChatCompletionCreateParams): Record<string, unknown> {\n const { model, messages, stream, ...extra } = params;\n if (!model) throw new ParetaError('model is required (use \"auto\")');\n if (!messages || messages.length === 0) {\n throw new ParetaError(\"messages is required and must be non-empty\");\n }\n const body: Record<string, unknown> = { model, messages, ...extra };\n if (stream) body.stream = true;\n return body;\n}\n\nexport class Completions {\n constructor(private readonly client: Transport) {}\n\n /**\n * Create a chat completion.\n *\n * `stream: false` (default) → `Promise<ChatCompletion>`.\n * `stream: true` → `AsyncIterable<ChatCompletionChunk>`\n * (`chunk.choices[0].delta.content` is the incremental text).\n */\n create(params: ChatCompletionCreateParams & { stream: true }): AsyncIterable<ChatCompletionChunk>;\n create(params: ChatCompletionCreateParams & { stream?: false }): Promise<ChatCompletion>;\n create(\n params: ChatCompletionCreateParams,\n ): Promise<ChatCompletion> | AsyncIterable<ChatCompletionChunk> {\n const body = buildBody(params);\n if (params.stream) {\n return this.client.stream<ChatCompletionChunk>(\"POST\", PATH, {\n body,\n cast: (raw) => new ChatCompletionChunk(raw as Record<string, unknown>),\n });\n }\n return this.client.request<ChatCompletion>(\"POST\", PATH, {\n body,\n cast: (raw) => new ChatCompletion(raw as Record<string, unknown>),\n });\n }\n}\n\nexport class Chat {\n readonly completions: Completions;\n constructor(client: Transport) {\n this.completions = new Completions(client);\n }\n}\n","/**\n * `client.models` — the OpenAI-compatible `/v1/models` list of model ids your\n * org can call. Each `Model.id` is usable as\n * `chat.completions.create({ model })`.\n */\n\nimport type { Transport } from \"../client.js\";\nimport { ModelList } from \"../models.js\";\n\nconst PATH = \"/v1/models\";\n\nexport class Models {\n constructor(private readonly client: Transport) {}\n\n list(): Promise<ModelList> {\n return this.client.request<ModelList>(\"GET\", PATH, {\n cast: (raw) => new ModelList(raw as Record<string, unknown>),\n });\n }\n}\n","/**\n * `client.tasks` — the grading-contract directory for evals. A task names how\n * a dataset is scored (row shape + scorer); inference never takes one. `match`\n * maps a plain-English description of your dataset to the contract that\n * grades it — feed the matched task id into `evals.runs.create(task=...)`.\n */\n\nimport type { Transport } from \"../client.js\";\nimport { ParetaError } from \"../errors.js\";\nimport { Task, TaskMatch, taskList } from \"../models.js\";\n\nconst BASE = \"/v1/tasks\";\n\nexport class Tasks {\n constructor(private readonly client: Transport) {}\n\n list(): Promise<Task[]> {\n return this.client.request<Task[]>(\"GET\", BASE, { cast: taskList });\n }\n\n retrieve(taskId: string, opts: { examplesN?: number } = {}): Promise<Task> {\n const params = opts.examplesN !== undefined ? { examples_n: opts.examplesN } : undefined;\n return this.client.request<Task>(\"GET\", `${BASE}/${taskId}`, {\n params,\n cast: (raw) => new Task(raw as Record<string, unknown>),\n });\n }\n\n /** Free-text intent → ranked candidate tasks (the Step-0 backend matcher). */\n match(query: string, opts: { topK?: number } = {}): Promise<TaskMatch> {\n if (!query || !query.trim()) throw new ParetaError(\"query is required\");\n return this.client.request<TaskMatch>(\"POST\", `${BASE}/match`, {\n body: { query, top_k: opts.topK ?? 5 },\n cast: (raw) => new TaskMatch(raw as Record<string, unknown>),\n });\n }\n}\n","/**\n * `client.evals` — eval sets + runs (bring-your-own-data evaluation).\n *\n * const set = await pa.evals.sets.create({ task, items: [...] });\n * await pa.evals.sets.uploadDocument(set.id, file, { idx, fieldName }); // blob tasks\n * const run = await pa.evals.runs.create({ evalSet: set.id, models: [...], wait: true });\n * // or, in one call: runs.create({ task, items, models, wait: true })\n *\n * Runs are metered (the org balance is debited for compute); `run.cost` is the\n * billed total in dollars (floored to cents). `frontier` accepts an explicit\n * list of ids, or the \"all\"/\"benchmarked\"/\"none\" roster keywords (resolved via\n * `frontierModels()`).\n */\n\nimport type { Transport } from \"../client.js\";\nimport { ParetaError } from \"../errors.js\";\nimport {\n EvalRun,\n EvalSet,\n FrontierModel,\n evalSetFromCreate,\n evalSetList,\n frontierModels as castFrontierModels,\n} from \"../models.js\";\n\nconst BASE = \"/v1/eval-sets\";\nconst RUNS = \"/v1/eval-runs\";\nconst FRONTIER = \"/v1/eval/frontier-models\";\nconst INLINE_MAX = 5 * 1024 * 1024; // matches backend _ATTACH_BLOB_INLINE_MAX\n\n/** \"all\" | \"benchmarked\" | \"none\" | an explicit list of frontier ids. */\nexport type FrontierSpec = \"all\" | \"benchmarked\" | \"none\" | string[] | null;\n\n/** A document for `uploadDocument`: a filesystem path (Node), Blob, or bytes. */\nexport type FileInput = string | Blob | ArrayBuffer | Uint8Array;\n\nconst MIME_BY_EXT: Record<string, string> = {\n pdf: \"application/pdf\",\n png: \"image/png\",\n jpg: \"image/jpeg\",\n jpeg: \"image/jpeg\",\n gif: \"image/gif\",\n webp: \"image/webp\",\n tiff: \"image/tiff\",\n tif: \"image/tiff\",\n bmp: \"image/bmp\",\n txt: \"text/plain\",\n json: \"application/json\",\n jsonl: \"application/jsonl\",\n csv: \"text/csv\",\n};\n\nfunction guessMime(filename: string, override?: string): string {\n if (override) return override;\n const ext = filename.split(\".\").pop()?.toLowerCase();\n return (ext && MIME_BY_EXT[ext]) || \"application/octet-stream\";\n}\n\n/** Normalize any FileInput → a Blob + filename + size (path read is Node-only). */\nasync function toBlob(\n file: FileInput,\n mimeOverride?: string,\n): Promise<{ blob: Blob; filename: string; size: number; mime: string }> {\n if (typeof file === \"string\") {\n // Path → lazy node:fs so the browser/edge bundle stays clean.\n const [{ readFile }, { basename }] = await Promise.all([\n import(\"node:fs/promises\"),\n import(\"node:path\"),\n ]);\n const buf = await readFile(file);\n const filename = basename(file);\n const mime = guessMime(filename, mimeOverride);\n return { blob: new Blob([buf as BlobPart], { type: mime }), filename, size: buf.byteLength, mime };\n }\n if (file instanceof Blob) {\n const mime = mimeOverride || file.type || \"application/octet-stream\";\n const blob = mimeOverride ? new Blob([file], { type: mime }) : file;\n return { blob, filename: \"upload\", size: file.size, mime };\n }\n const bytes = file instanceof Uint8Array ? file : new Uint8Array(file);\n const mime = mimeOverride || \"application/octet-stream\";\n return { blob: new Blob([bytes as BlobPart], { type: mime }), filename: \"upload\", size: bytes.byteLength, mime };\n}\n\nfunction itemsJsonl(\n task: string,\n items: Array<Record<string, unknown>>,\n name?: string,\n): { files: Record<string, { filename: string; content: string; contentType: string }>; data: Record<string, string> } {\n if (!items || items.length === 0) throw new ParetaError(\"items is required and must be non-empty\");\n const jsonl = items.map((it) => JSON.stringify(it)).join(\"\\n\");\n return {\n files: { items: { filename: `items.${task}.jsonl`, content: jsonl, contentType: \"application/jsonl\" } },\n data: { task_id: task, name: name || `sdk eval set (${items.length} items)` },\n };\n}\n\nfunction mergeCandidates(models: string[], frontierIds: string[]): string[] {\n // Order matters: open models first, then frontier ids; no sort/dedupe.\n const cands = [...(models ?? []), ...(frontierIds ?? [])];\n if (cands.length === 0) throw new ParetaError(\"models is required (the open candidates to evaluate)\");\n return cands;\n}\n\nfunction resolveFrontierFromRoster(frontier: string, roster: FrontierModel[]): string[] {\n if (frontier === \"all\") return roster.map((m) => m.id!).filter((x): x is string => x != null);\n if (frontier === \"benchmarked\") {\n return roster.filter((m) => m.benchmarked).map((m) => m.id!).filter((x): x is string => x != null);\n }\n throw new ParetaError(\n `unknown frontier keyword '${frontier}' (use 'all'/'benchmarked'/'none' or a list)`,\n );\n}\n\nconst sleep = (seconds: number): Promise<void> => new Promise((r) => setTimeout(r, seconds * 1000));\n\nexport class EvalSets {\n constructor(private readonly client: Transport) {}\n\n create(params: { task: string; items: Array<Record<string, unknown>>; name?: string }): Promise<EvalSet> {\n const { files, data } = itemsJsonl(params.task, params.items, params.name);\n return this.client.request<EvalSet>(\"POST\", BASE, { files, data, cast: evalSetFromCreate });\n }\n\n list(): Promise<EvalSet[]> {\n return this.client.request<EvalSet[]>(\"GET\", BASE, { cast: evalSetList });\n }\n\n async retrieve(evalSetId: string): Promise<EvalSet> {\n const raw = await this.client.request<Record<string, unknown>>(\"GET\", `${BASE}/${evalSetId}`);\n return new EvalSet(((raw ?? {}).eval_set as Record<string, unknown>) ?? {});\n }\n\n async delete(evalSetId: string): Promise<void> {\n await this.client.request(\"DELETE\", `${BASE}/${evalSetId}`);\n }\n\n /**\n * Attach a binary doc (PDF/image) to one row's blob field. Collapses the\n * 3-call signed-URL flow (or the inline path for small files) into one call.\n * `idx` is the 0-based row, `fieldName` the blob input field.\n */\n async uploadDocument(\n evalSetId: string,\n file: FileInput,\n opts: { idx: number; fieldName: string; mime?: string },\n ): Promise<unknown> {\n const { blob, filename, size, mime } = await toBlob(file, opts.mime);\n if (size < INLINE_MAX) {\n return this.client.request(\"POST\", `${BASE}/${evalSetId}/attach-blob`, {\n files: { file: { filename, content: blob, contentType: mime } },\n data: { idx: String(opts.idx), field_name: opts.fieldName, mime },\n });\n }\n // Large file → signed-URL direct-to-storage (raw PUT to GCS, no Pareta auth).\n const minted = await this.client.request<{ upload_url: string; storage_uri: string }>(\n \"POST\",\n `${BASE}/${evalSetId}/blob-upload-url`,\n { body: { idx: opts.idx, field_name: opts.fieldName, mime, file_size: size } },\n );\n const put = await globalThis.fetch(minted.upload_url, {\n method: \"PUT\",\n body: blob,\n headers: { \"Content-Type\": mime },\n signal: AbortSignal.timeout(600_000),\n });\n if (put.status !== 200 && put.status !== 201) {\n throw new ParetaError(`blob upload PUT failed: ${put.status}`);\n }\n return this.client.request(\"POST\", `${BASE}/${evalSetId}/blob-upload-complete`, {\n body: { idx: opts.idx, field_name: opts.fieldName, storage_uri: minted.storage_uri, mime },\n });\n }\n}\n\nexport interface EvalRunCreateParams {\n evalSet?: string;\n task?: string;\n items?: Array<Record<string, unknown>>;\n models: string[];\n frontier?: FrontierSpec;\n name?: string;\n wait?: boolean;\n pollInterval?: number;\n timeout?: number;\n}\n\nexport class EvalRuns {\n constructor(\n private readonly client: Transport,\n private readonly sets: EvalSets,\n ) {}\n\n private async frontierIds(frontier: FrontierSpec | undefined, evalSet: string | undefined, task?: string): Promise<string[]> {\n if (frontier == null || frontier === \"none\") return [];\n if (Array.isArray(frontier)) return [...frontier];\n if (typeof frontier !== \"string\") {\n throw new TypeError(\"frontier must be null, a list of ids, or 'all'/'benchmarked'/'none'\");\n }\n let resolveTask = task;\n if (!resolveTask && evalSet) resolveTask = (await this.sets.retrieve(evalSet)).taskId ?? undefined;\n if (!resolveTask) throw new ParetaError(\"cannot resolve a frontier keyword without a task\");\n const roster = await this.client.request<FrontierModel[]>(\"GET\", FRONTIER, {\n params: { task: resolveTask },\n cast: castFrontierModels,\n });\n return resolveFrontierFromRoster(frontier, roster);\n }\n\n async create(params: EvalRunCreateParams): Promise<EvalRun> {\n let evalSet = params.evalSet;\n if (evalSet == null) {\n if (!(params.task && params.items)) {\n throw new ParetaError(\"pass evalSet: <id>, or task + items to create one\");\n }\n evalSet = (await this.sets.create({ task: params.task, items: params.items, name: params.name })).id ?? undefined;\n }\n const frontierIds = await this.frontierIds(params.frontier, evalSet, params.task);\n const candidateModelIds = mergeCandidates(params.models, frontierIds);\n const started = await this.client.request<{ run_id: string; status?: string }>(\"POST\", RUNS, {\n body: { eval_set_id: evalSet, candidate_model_ids: candidateModelIds },\n });\n if (params.wait) {\n return this.wait(started.run_id, { pollInterval: params.pollInterval, timeout: params.timeout });\n }\n // Thin stub (not a fetch) — cost reads \"0.00\" until you retrieve().\n return new EvalRun({ run: { id: started.run_id, status: started.status } });\n }\n\n retrieve(runId: string): Promise<EvalRun> {\n return this.client.request<EvalRun>(\"GET\", `${RUNS}/${runId}`, {\n cast: (raw) => new EvalRun(raw as Record<string, unknown>),\n });\n }\n\n async wait(runId: string, opts: { pollInterval?: number; timeout?: number } = {}): Promise<EvalRun> {\n const pollInterval = opts.pollInterval ?? 3;\n const timeout = opts.timeout ?? 900;\n const deadline = Date.now() + timeout * 1000;\n for (;;) {\n const run = await this.retrieve(runId);\n if (run.isTerminal) return run;\n if (Date.now() >= deadline) {\n throw new ParetaError(`eval run ${runId} did not finish within ${Math.round(timeout)}s`);\n }\n await sleep(pollInterval);\n }\n }\n}\n\nexport class Evals {\n readonly sets: EvalSets;\n readonly runs: EvalRuns;\n\n constructor(client: Transport) {\n this.sets = new EvalSets(client);\n this.runs = new EvalRuns(client, this.sets);\n this.client = client;\n }\n private readonly client: Transport;\n\n /**\n * The frontier (vendor) roster you can evaluate against. With `task`, each is\n * annotated `benchmarked` + the roster is vision-filtered for document tasks.\n */\n frontierModels(task?: string): Promise<FrontierModel[]> {\n const params = task ? { task } : undefined;\n return this.client.request<FrontierModel[]>(\"GET\", FRONTIER, { params, cast: castFrontierModels });\n }\n}\n","/**\n * `client.auto` — the routing brain's surrounding surfaces.\n *\n * Calling the brain itself is plain chat with `model: \"auto\"`:\n *\n * client.chat.completions.create({\n * model: \"auto\",\n * messages: [{ role: \"user\", content: \"…\" }],\n * })\n *\n * This resource carries the org-level metrics rollup (requests, success,\n * spend, PROJECTED savings vs frontier) and the metered frontier comparison\n * the Playground uses.\n */\n\nimport type { Transport } from \"../client.js\";\n\nexport interface AutoMetrics {\n requests_30d: number;\n requests_today: number;\n success_rate_30d: number | null;\n billed_micro_usd_30d: number;\n billed_micro_usd_today: number;\n cost_to_serve_micro_usd_30d: number;\n /** PROJECTED (frontier list-priced counterfactual) — labeled so until\n * dual-run calibration lands. */\n savings_vs_frontier_micro_usd_30d: number | null;\n savings_multiple_30d: number | null;\n performance_hourly_7d: Array<{\n hour: string; requests: number; error_rate: number;\n p50_ms: number | null; p95_ms: number | null;\n }>;\n days_30d: Array<{ day: string; n: number; ok: number; success_rate: number }>;\n last_request: {\n created_at: string; status_code: number; duration_ms: number;\n billed_micro_usd: number | null; cost_to_serve_micro_usd: number | null;\n } | null;\n}\n\nexport interface FrontierComparison {\n model: string;\n content: string;\n cost_micro_usd: number;\n latency_ms: number;\n}\n\nexport class Auto {\n constructor(private readonly client: Transport) {}\n\n /** Your org's `model: \"auto\"` traffic, rolled up. Read-only, free. */\n metrics(): Promise<AutoMetrics> {\n return this.client.request<AutoMetrics>(\"GET\", \"/v1/auto/metrics\");\n }\n\n /**\n * One prompt against a frontier vendor for a side-by-side with\n * `model: \"auto\"` — METERED at the vendor's actual token cost (a failed\n * vendor call bills $0). Allowed models: gpt-5.5, gemini-3-5-flash,\n * gemini-3-1-pro, claude-sonnet-4-6.\n */\n compareFrontier(params: {\n model: string;\n messages: Array<{ role: string; content: string }>;\n }): Promise<FrontierComparison> {\n return this.client.request<FrontierComparison>(\n \"POST\", \"/v1/playground/frontier\", { body: params },\n );\n }\n}\n","/**\n * `pa.audio` — the Speech capability lanes (ASR + TTS), TS parity with the\n * Python SDK's `client.audio`.\n *\n * Dedicated routes, not `chat.completions`:\n * POST /v1/audio/transcriptions {audio_base64, language?} -> {text, language, duration_s}\n * POST /v1/audio/speech {text, voice?} -> {audio_base64, sample_rate, duration_s, format}\n *\n * Both are metered PER MINUTE of audio (input duration for ASR, output\n * duration for TTS). You never pick a serving model — Pareta resolves the\n * lane, exactly as `model:\"auto\"` does for chat.\n *\n * Audio input follows the evals FileInput convention: a string is a FILE\n * PATH (read via lazy node:fs — browser/edge bundles stay clean);\n * Blob/ArrayBuffer/Uint8Array are raw bytes; `{ base64 }` passes\n * pre-encoded audio through untouched.\n */\n\nimport type { Transport } from \"../client.js\";\nimport { ParetaError } from \"../errors.js\";\nimport { Speech, Transcription } from \"../models.js\";\n\nconst BASE = \"/v1/audio\";\n\nexport type AudioInput = string | Blob | ArrayBuffer | Uint8Array | { base64: string };\n\n/** Browser-safe Uint8Array → base64 (Buffer in Node, chunked btoa elsewhere). */\nexport function bytesToBase64(bytes: Uint8Array): string {\n if (typeof Buffer !== \"undefined\") return Buffer.from(bytes).toString(\"base64\");\n let bin = \"\";\n const CHUNK = 0x8000;\n for (let i = 0; i < bytes.length; i += CHUNK) {\n bin += String.fromCharCode(...bytes.subarray(i, i + CHUNK));\n }\n return btoa(bin);\n}\n\nasync function toBase64(audio: AudioInput): Promise<string> {\n if (typeof audio === \"string\") {\n // Path → lazy node:fs so the browser/edge bundle stays clean.\n const { readFile } = await import(\"node:fs/promises\");\n return bytesToBase64(new Uint8Array(await readFile(audio)));\n }\n if (typeof audio === \"object\" && audio !== null && \"base64\" in audio) {\n if (!audio.base64 || !audio.base64.trim()) throw new ParetaError(\"audio.base64 is empty\");\n return audio.base64;\n }\n if (audio instanceof Blob) return bytesToBase64(new Uint8Array(await audio.arrayBuffer()));\n const bytes = audio instanceof Uint8Array ? audio : new Uint8Array(audio);\n if (bytes.byteLength === 0) throw new ParetaError(\"audio is empty\");\n return bytesToBase64(bytes);\n}\n\nexport interface TranscriptionOptions {\n /** Optional ISO language hint (omit to auto-detect). */\n language?: string;\n}\n\nexport interface SpeechOptions {\n /** Optional voice id (omit for the default voice). */\n voice?: string;\n}\n\nexport class Audio {\n constructor(private readonly client: Transport) {}\n\n /** Speech-to-text (the `asr` lane). `audio` is a file path, raw bytes, a\n * Blob, or `{ base64 }`. Metered per minute of input audio. */\n async transcriptions(audio: AudioInput, opts: TranscriptionOptions = {}): Promise<Transcription> {\n const body: Record<string, unknown> = { audio_base64: await toBase64(audio) };\n if (opts.language) body.language = opts.language;\n return this.client.request<Transcription>(\"POST\", `${BASE}/transcriptions`, {\n body,\n cast: (raw) => new Transcription(raw as Record<string, unknown>),\n });\n }\n\n /** Text-to-speech (the `tts` lane). Returns a `Speech` whose `.audio` is\n * decoded bytes (`.save(path)` writes a file in Node). Metered per minute\n * of output audio. */\n speech(text: string, opts: SpeechOptions = {}): Promise<Speech> {\n if (!text || !text.trim()) throw new ParetaError(\"text is required\");\n const body: Record<string, unknown> = { text };\n if (opts.voice) body.voice = opts.voice;\n return this.client.request<Speech>(\"POST\", `${BASE}/speech`, {\n body,\n cast: (raw) => new Speech(raw as Record<string, unknown>),\n });\n }\n}\n","/**\n * `pa.images` — the image capability lanes (generate + edit), TS parity with\n * the Python SDK's `client.images`.\n *\n * Dedicated routes, not `chat.completions`:\n * POST /v1/images/generations {prompt, size?, seed?} -> {created, model,\n * data: [{b64_json}], size}\n * POST /v1/images/edits {prompt, image (b64), seed?} -> same shape\n *\n * Both run on Pareta's open image model (`hidream-1`) and are metered at a\n * FLAT price per call — generation by image (every size costs the same;\n * the model renders at full 2K internally), editing by edit (the output\n * keeps the reference's aspect ratio). The `X-Pareta-Billed` response\n * header carries the per-request receipt in micro-USD. Delivery sizes for\n * generation (server-authoritative): 1024x1024 (default), 2048x2048,\n * 2304x1728, 1728x2304, 2560x1440, 1440x2560.\n *\n * Edit input follows the audio FileInput convention: a string is a FILE\n * PATH (read via lazy node:fs — browser/edge bundles stay clean);\n * Blob/ArrayBuffer/Uint8Array are raw bytes; `{ base64 }` passes\n * pre-encoded image data through untouched.\n */\n\nimport type { Transport } from \"../client.js\";\nimport { ParetaError } from \"../errors.js\";\nimport { ImageGeneration } from \"../models.js\";\nimport { bytesToBase64 } from \"./audio.js\";\n\nconst PATH = \"/v1/images/generations\";\nconst EDIT_PATH = \"/v1/images/edits\";\n\nexport type ImageInput = string | Blob | ArrayBuffer | Uint8Array | { base64: string };\n\nasync function toBase64(image: ImageInput): Promise<string> {\n if (typeof image === \"string\") {\n const { readFile } = await import(\"node:fs/promises\");\n return bytesToBase64(new Uint8Array(await readFile(image)));\n }\n if (typeof image === \"object\" && image !== null && \"base64\" in image) {\n if (!image.base64 || !image.base64.trim()) throw new ParetaError(\"image.base64 is empty\");\n return image.base64;\n }\n if (image instanceof Blob) return bytesToBase64(new Uint8Array(await image.arrayBuffer()));\n const bytes = image instanceof Uint8Array ? image : new Uint8Array(image);\n if (bytes.byteLength === 0) throw new ParetaError(\"image is empty\");\n return bytesToBase64(bytes);\n}\n\nexport interface ImageGenerateOptions {\n /** Delivery size, e.g. \"2560x1440\" (omit for 1024x1024). Flat price. */\n size?: string;\n /** Pin the noise seed for reproducibility. */\n seed?: number;\n}\n\nexport interface ImageEditOptions {\n /** Pin the noise seed for reproducibility. */\n seed?: number;\n}\n\nexport class Images {\n constructor(private readonly client: Transport) {}\n\n /** Generate one image from a text prompt. Returns an `ImageGeneration`\n * whose `.image` is decoded PNG bytes (`.save(path)` writes a file in\n * Node). Billed flat per image. */\n generate(prompt: string, opts: ImageGenerateOptions = {}): Promise<ImageGeneration> {\n if (!prompt || !prompt.trim()) throw new ParetaError(\"prompt is required\");\n const body: Record<string, unknown> = { prompt };\n if (opts.size) body.size = opts.size;\n if (opts.seed !== undefined) body.seed = opts.seed;\n return this.client.request<ImageGeneration>(\"POST\", PATH, {\n body,\n cast: (raw) => new ImageGeneration(raw as Record<string, unknown>),\n });\n }\n\n /** Edit one reference image with a plain-language instruction (no mask).\n * `image` is a file path, raw bytes, a Blob, or `{ base64 }` (≤25MB\n * decoded). The output keeps the reference's aspect ratio. Billed flat\n * per edit. */\n async edit(image: ImageInput, prompt: string, opts: ImageEditOptions = {}): Promise<ImageGeneration> {\n if (!prompt || !prompt.trim()) throw new ParetaError(\"prompt is required\");\n const body: Record<string, unknown> = { prompt, image: await toBase64(image) };\n if (opts.seed !== undefined) body.seed = opts.seed;\n return this.client.request<ImageGeneration>(\"POST\", EDIT_PATH, {\n body,\n cast: (raw) => new ImageGeneration(raw as Record<string, unknown>),\n });\n }\n}\n","/**\n * `pa.rerank(...)` + `pa.embeddings(...)` — the Retrieval capability lanes\n * (the RAG stack: embeddings for recall, reranking for precision).\n *\n * Both are dedicated routes, not `chat.completions`:\n * POST /v1/rerank {query, documents[], top_n?} -> ordered\n * {index, relevance_score} rows (calibrated P(relevant))\n * POST /v1/embeddings {input[], input_type?} -> unit-normalized vectors\n *\n * Rerank is metered per document scored; embeddings per input token. You never\n * pick a serving model — Pareta resolves the lane (`pareta-rerank-1` / `qwen-embed-1`),\n * exactly as `model:\"auto\"` does for chat.\n *\n * Exposed as callable client fields (`pa.rerank(...)`) rather than resource\n * objects — call-parity with the Python SDK, and neither lane has sub-methods.\n */\n\nimport type { Transport } from \"../client.js\";\nimport { ParetaError } from \"../errors.js\";\nimport { Embeddings, Rerank } from \"../models.js\";\n\nexport interface RerankOptions {\n /** Truncate the response to the best N (all documents are still scored and metered). */\n topN?: number;\n}\n\nexport type RerankFn = (query: string, documents: string[], opts?: RerankOptions) => Promise<Rerank>;\n\nexport interface EmbeddingsOptions {\n /** `\"query\"` embeds a retrieval QUERY (asymmetric); default embeds documents raw. */\n inputType?: \"query\" | \"document\";\n}\n\nexport type EmbeddingsFn = (input: string | string[], opts?: EmbeddingsOptions) => Promise<Embeddings>;\n\nexport function makeRerank(client: Transport): RerankFn {\n return (query, documents, opts = {}) => {\n if (!query || !query.trim()) throw new ParetaError(\"query is required\");\n if (!Array.isArray(documents) || documents.length === 0) {\n throw new ParetaError(\"documents must be a non-empty array of strings\");\n }\n const body: Record<string, unknown> = { query, documents };\n if (opts.topN !== undefined) body.top_n = opts.topN;\n return client.request<Rerank>(\"POST\", \"/v1/rerank\", {\n body,\n cast: (raw) => new Rerank(raw as Record<string, unknown>),\n });\n };\n}\n\nexport function makeEmbeddings(client: Transport): EmbeddingsFn {\n return (input, opts = {}) => {\n const texts = typeof input === \"string\" ? [input] : input;\n if (!Array.isArray(texts) || texts.length === 0 || texts.some((t) => typeof t !== \"string\" || !t.trim())) {\n throw new ParetaError(\"input must be a non-empty string or array of non-empty strings\");\n }\n if (opts.inputType !== undefined && opts.inputType !== \"query\" && opts.inputType !== \"document\") {\n throw new ParetaError('inputType must be \"query\" or \"document\"');\n }\n const body: Record<string, unknown> = { input: texts };\n if (opts.inputType !== undefined) body.input_type = opts.inputType;\n return client.request<Embeddings>(\"POST\", \"/v1/embeddings\", {\n body,\n cast: (raw) => new Embeddings(raw as Record<string, unknown>),\n });\n };\n}\n","/**\n * The `Pareta` client — one class (no sync/async split; JS is Promise-only).\n * A faithful port of the Python `_client.py` transport: header construction,\n * the retry policy, error mapping, and the `started`-flag streaming rule.\n */\n\nimport {\n APIConnectionError,\n APITimeoutError,\n APIStatusError,\n ParetaError,\n errorFromResponse,\n type ErrorDetail,\n} from \"./errors.js\";\nimport { parseSSE, type SSEEvent } from \"./streaming.js\";\nimport { VERSION } from \"./version.js\";\nimport { Chat } from \"./resources/chat.js\";\nimport { Models } from \"./resources/models.js\";\nimport { Tasks } from \"./resources/tasks.js\";\nimport { Evals } from \"./resources/evals.js\";\nimport { Auto } from \"./resources/auto.js\";\nimport { Audio } from \"./resources/audio.js\";\nimport { Images } from \"./resources/images.js\";\nimport { makeEmbeddings, makeRerank } from \"./resources/retrieval.js\";\nimport type { EmbeddingsFn, RerankFn } from \"./resources/retrieval.js\";\n\nexport const DEFAULT_BASE_URL = \"https://api.pareta.ai\";\n/** #174: uuid-ish token for Idempotency-Key (crypto.randomUUID when available). */\nfunction randomKey(): string {\n try {\n return (globalThis.crypto as { randomUUID?: () => string })?.randomUUID?.().replace(/-/g, \"\")\n ?? Math.random().toString(36).slice(2) + Date.now().toString(36);\n } catch {\n return Math.random().toString(36).slice(2) + Date.now().toString(36);\n }\n}\n\n// #174: long-doc auto requests legitimately run 60-180s server-side. A 60s\n// timeout made the SDK kill + retry them mid-flight; 600s matches the OpenAI\n// SDK default and the proxy's own upstream client.\nexport const DEFAULT_TIMEOUT_MS = 600_000;\nexport const DEFAULT_MAX_RETRIES = 2;\n\n// 409 here is the transient lock/contention class; Pareta's own stable-4xx 409\n// (resource conflict) just exhausts retries and still raises ConflictError, so\n// callers see the right error either way.\nconst RETRY_STATUSES = new Set([408, 409, 429, 500, 502, 503, 504]);\n\ntype FetchFn = typeof globalThis.fetch;\n\n/** A multipart file part (used by eval-set + blob uploads). */\nexport interface FilePart {\n filename: string;\n content: Blob | ArrayBuffer | ArrayBufferView | string;\n contentType?: string;\n}\n\nexport interface RequestOptions {\n body?: unknown;\n params?: Record<string, unknown> | undefined;\n files?: Record<string, FilePart>;\n data?: Record<string, string>;\n cast?: (raw: unknown) => unknown;\n}\n\nexport interface StreamOptions {\n body?: unknown;\n params?: Record<string, unknown> | undefined;\n cast?: (raw: unknown) => unknown;\n events?: boolean;\n}\n\n/** What resource namespaces depend on (lets them avoid importing the class). */\nexport interface Transport {\n request<T = unknown>(method: string, path: string, opts?: RequestOptions): Promise<T>;\n stream<T = unknown>(method: string, path: string, opts?: StreamOptions): AsyncGenerator<T>;\n}\n\nexport interface ParetaOptions {\n /** `pareta_sk_` secret key. Falls back to PARETA_API_KEY via `fromEnv`. */\n apiKey?: string;\n /** API base URL. Default https://api.pareta.ai (trailing slashes stripped). */\n baseURL?: string;\n /** Overall per-request timeout in ms. Default 60000. */\n timeout?: number;\n /** Max retries for transient failures. Default 2. */\n maxRetries?: number;\n /** Injected fetch implementation (for tests / Node-without-global-fetch). */\n fetch?: FetchFn;\n}\n\nfunction normalizeBaseURL(url: string): string {\n return url.replace(/\\/+$/, \"\");\n}\n\nexport class Pareta implements Transport {\n readonly apiKey: string;\n readonly baseURL: string;\n readonly timeout: number;\n readonly maxRetries: number;\n private readonly fetchImpl: FetchFn;\n\n // Resource namespaces (assigned in the constructor; filled in slice by slice).\n readonly chat: Chat;\n readonly models: Models;\n readonly tasks: Tasks;\n readonly evals: Evals;\n readonly auto: Auto;\n /** The Speech lanes — `pa.audio.transcriptions(...)` (ASR) + `pa.audio.speech(...)` (TTS). */\n readonly audio: Audio;\n /** Document reranking (the Retrieval precision lane) — `pa.rerank(query, docs, {topN})`. */\n readonly rerank: RerankFn;\n /** Text embeddings (the Retrieval recall lane) — `pa.embeddings(input, {inputType})`. */\n readonly embeddings: EmbeddingsFn;\n /** Image generation — `pa.images.generate(prompt, {size, seed})`, flat price per image. */\n readonly images: Images;\n\n constructor(options: ParetaOptions = {}) {\n if (!options.apiKey) {\n throw new ParetaError(\n \"missing API key. Pass apiKey: … or use Pareta.fromEnv() with PARETA_API_KEY \" +\n \"(mint a pareta_sk_ key in the dashboard).\",\n );\n }\n this.apiKey = options.apiKey;\n this.baseURL = normalizeBaseURL(options.baseURL || DEFAULT_BASE_URL);\n this.timeout = options.timeout ?? DEFAULT_TIMEOUT_MS;\n this.maxRetries = Math.max(0, Math.trunc(options.maxRetries ?? DEFAULT_MAX_RETRIES));\n const f = options.fetch ?? globalThis.fetch;\n if (typeof f !== \"function\") {\n throw new ParetaError(\"no fetch implementation found — pass fetch: … (Node < 18 needs a polyfill).\");\n }\n this.fetchImpl = options.fetch ? f : f.bind(globalThis);\n\n // Resources import only the Transport *type* from this module (erased at\n // runtime), so these static imports create no runtime circular dependency.\n this.chat = new Chat(this);\n this.models = new Models(this);\n this.tasks = new Tasks(this);\n this.evals = new Evals(this);\n this.auto = new Auto(this);\n this.audio = new Audio(this);\n this.rerank = makeRerank(this);\n this.embeddings = makeEmbeddings(this);\n this.images = new Images(this);\n }\n\n /** Build from PARETA_API_KEY (+ optional PARETA_BASE_URL); explicit opts win. */\n static fromEnv(options: ParetaOptions = {}): Pareta {\n const env: Record<string, string | undefined> =\n typeof process !== \"undefined\" && process.env ? process.env : {};\n return new Pareta({\n ...options,\n apiKey: options.apiKey || env.PARETA_API_KEY,\n baseURL: options.baseURL || env.PARETA_BASE_URL,\n });\n }\n\n // ── header / url / retry helpers ─────────────────────────────────────\n private headers(opts: { stream?: boolean; jsonBody?: boolean }): Record<string, string> {\n const h: Record<string, string> = {\n Authorization: `Bearer ${this.apiKey}`,\n Accept: opts.stream ? \"text/event-stream\" : \"application/json\",\n \"User-Agent\": `pareta-typescript/${VERSION}`,\n };\n // Multipart sets its own Content-Type (with boundary) — never set JSON there.\n if (opts.jsonBody) h[\"Content-Type\"] = \"application/json\";\n return h;\n }\n\n private shouldRetry(status: number): boolean {\n return RETRY_STATUSES.has(status);\n }\n\n /** Seconds to wait before retry `attempt` (0-indexed). Overridable in tests. */\n protected _backoff(attempt: number, retryAfter: number | null): number {\n if (retryAfter !== null && retryAfter >= 0) return Math.min(retryAfter, 30);\n return Math.min(0.5 * 2 ** attempt, 8) + Math.random() * 0.25;\n }\n\n /** Sleep `seconds`. Overridable in tests to skip real waits. */\n protected _sleep(seconds: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, seconds * 1000));\n }\n\n private retryAfterSeconds(res: Response): number | null {\n const val = res.headers.get(\"retry-after\");\n if (!val) return null;\n const n = Number.parseFloat(val);\n return Number.isNaN(n) ? null : n;\n }\n\n private buildURL(path: string, params?: Record<string, unknown>): string {\n let url = `${this.baseURL}${path}`;\n if (params) {\n const qs = new URLSearchParams();\n for (const [k, v] of Object.entries(params)) {\n if (v !== undefined && v !== null) qs.append(k, String(v));\n }\n const s = qs.toString();\n if (s) url += `?${s}`;\n }\n return url;\n }\n\n private buildFormData(files?: Record<string, FilePart>, data?: Record<string, string>): FormData {\n const fd = new FormData();\n if (data) for (const [k, v] of Object.entries(data)) fd.append(k, v);\n if (files) {\n for (const [k, f] of Object.entries(files)) {\n const blob =\n f.content instanceof Blob\n ? f.content\n : new Blob([f.content as BlobPart], f.contentType ? { type: f.contentType } : undefined);\n fd.append(k, blob, f.filename);\n }\n }\n return fd;\n }\n\n private wrapFetchError(e: unknown): APIConnectionError {\n const name = (e as { name?: string })?.name;\n if (name === \"TimeoutError\" || name === \"AbortError\") {\n return new APITimeoutError(undefined, { cause: e });\n }\n const msg = (e as { message?: string })?.message || \"connection error\";\n return new APIConnectionError(msg, { cause: e });\n }\n\n private async parseError(res: Response): Promise<APIStatusError> {\n const requestId = res.headers.get(\"x-request-id\");\n let detail: ErrorDetail;\n try {\n const body = (await res.json()) as unknown;\n detail =\n body && typeof body === \"object\" && !Array.isArray(body)\n ? ((body as Record<string, unknown>).detail as ErrorDetail)\n : (body as ErrorDetail);\n } catch {\n detail = undefined;\n }\n return errorFromResponse(res.status, { detail, requestId, response: res });\n }\n\n // ── transport ────────────────────────────────────────────────────────\n async request<T = unknown>(method: string, path: string, opts: RequestOptions = {}): Promise<T> {\n const { body, params, files, data, cast } = opts;\n const url = this.buildURL(path, params);\n const isMultipart = files != null || data != null;\n const headers = this.headers({ jsonBody: body != null && !isMultipart });\n // #174: ONE idempotency key per logical call, resent verbatim on every\n // auto-retry — the server collapses all attempts onto a single ledger\n // debit (a long-doc request can outlive a client timeout yet complete).\n if (method.toUpperCase() === \"POST\" && !headers[\"Idempotency-Key\"]) {\n headers[\"Idempotency-Key\"] = `pareta-js-${randomKey()}`;\n }\n let payload: BodyInit | undefined;\n if (isMultipart) {\n payload = this.buildFormData(files, data);\n } else if (body != null) {\n payload = JSON.stringify(body);\n }\n\n let lastExc: ParetaError | undefined;\n for (let attempt = 0; attempt <= this.maxRetries; attempt++) {\n let res: Response;\n try {\n res = await this.fetchImpl(url, {\n method,\n headers,\n body: payload,\n signal: AbortSignal.timeout(this.timeout),\n });\n } catch (e) {\n lastExc = this.wrapFetchError(e);\n if (attempt < this.maxRetries) {\n await this._sleep(this._backoff(attempt, null));\n continue;\n }\n break;\n }\n if (res.ok) {\n const text = await res.text();\n const raw = text ? JSON.parse(text) : {};\n return (cast ? cast(raw) : raw) as T;\n }\n if (attempt < this.maxRetries && this.shouldRetry(res.status)) {\n await res.text().catch(() => undefined); // drain before retry\n await this._sleep(this._backoff(attempt, this.retryAfterSeconds(res)));\n continue;\n }\n throw await this.parseError(res);\n }\n throw lastExc as ParetaError;\n }\n\n /**\n * Yield parsed SSE objects. Retries ONLY the initial connect/handshake — once\n * bytes are flowing a mid-stream drop raises (re-issuing would re-run a\n * metered generation). `events:true` → `{event,data}`.\n */\n async *stream<T = unknown>(method: string, path: string, opts: StreamOptions = {}): AsyncGenerator<T> {\n const { body, params, cast, events } = opts;\n const url = this.buildURL(path, params);\n const headers = this.headers({ stream: true, jsonBody: body != null });\n // #174: stable key across handshake retries (see request()).\n if (method.toUpperCase() === \"POST\" && !headers[\"Idempotency-Key\"]) {\n headers[\"Idempotency-Key\"] = `pareta-js-${randomKey()}`;\n }\n const payload = body != null ? JSON.stringify(body) : undefined;\n\n for (let attempt = 0; attempt <= this.maxRetries; attempt++) {\n let started = false; // flips true once a 2xx body is flowing — no safe retry past here\n try {\n const res = await this.fetchImpl(url, {\n method,\n headers,\n body: payload,\n signal: AbortSignal.timeout(this.timeout),\n });\n if (!res.ok) {\n if (attempt < this.maxRetries && this.shouldRetry(res.status)) {\n await res.text().catch(() => undefined);\n await this._sleep(this._backoff(attempt, this.retryAfterSeconds(res)));\n continue;\n }\n throw await this.parseError(res);\n }\n if (!res.body) throw new APIConnectionError(\"response had no body to stream\");\n started = true;\n const reader = res.body.getReader();\n if (events) {\n for await (const ev of parseSSE(reader, { events: true })) {\n yield ev as unknown as T;\n }\n } else {\n for await (const obj of parseSSE(reader)) {\n yield (cast ? cast(obj) : obj) as T;\n }\n }\n return;\n } catch (e) {\n // A deliberate non-2xx (parseError) must propagate, not be wrapped/retried.\n if (e instanceof ParetaError && (e as APIStatusError).status !== undefined) throw e;\n const wrapped = this.wrapFetchError(e);\n // Mid-stream drop ALWAYS throws; only connect/handshake errors retry.\n if (started || attempt >= this.maxRetries) throw wrapped;\n await this._sleep(this._backoff(attempt, null));\n }\n }\n }\n}\n\nexport type { SSEEvent };\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/errors.ts","../src/streaming.ts","../src/version.ts","../src/money.ts","../src/models.ts","../src/resources/chat.ts","../src/resources/models.ts","../src/resources/tasks.ts","../src/resources/evals.ts","../src/resources/auto.ts","../src/resources/audio.ts","../src/resources/images.ts","../src/resources/retrieval.ts","../src/client.ts"],"names":["PATH","BASE","mime","toBase64"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Typed error hierarchy for the Pareta SDK — a faithful port of the Python\n * `_exceptions.py`. The backend is FastAPI, so error bodies are\n * `{\"detail\": \"<message>\"}` with a standard HTTP status. We map status → a\n * specific class so callers can `catch (e) { if (e instanceof\n * InsufficientCreditsError) … }` instead of sniffing status codes.\n *\n * Status → exception mapping:\n * 400 → BadRequestError\n * 401 → AuthenticationError (\"invalid API key\")\n * 402 → InsufficientCreditsError (\"organization is out of credit…\")\n * 403 → PermissionDeniedError\n * 404 → NotFoundError\n * 409 → ConflictError (resource conflict / not servable)\n * 422 → BadRequestError (FastAPI validation; `detail` is an array)\n * 429 → RateLimitError\n * 503 → EndpointNotReadyError (stopped / cold / provider down)\n * other 5xx → APIStatusError\n */\n\n/** A single FastAPI validation error item (422 `detail` is an array of these). */\nexport interface ValidationErrorItem {\n loc?: (string | number)[];\n msg?: string;\n type?: string;\n}\n\n/** For 422 the server's `detail` is an ARRAY; for every other status a string. */\nexport type ErrorDetail = string | ValidationErrorItem[] | null | undefined;\n\n/** Base class for every error raised by the SDK. */\nexport class ParetaError extends Error {\n constructor(message: string, options?: { cause?: unknown }) {\n super(message);\n this.name = \"ParetaError\";\n // Preserve the underlying cause (network error, abort, …) when given.\n if (options && options.cause !== undefined) (this as { cause?: unknown }).cause = options.cause;\n // Restore the prototype chain so `instanceof` works after transpilation.\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n\n/** The request never reached the server (DNS, TCP, TLS, network). */\nexport class APIConnectionError extends ParetaError {\n constructor(message = \"connection error\", options?: { cause?: unknown }) {\n super(message, options);\n this.name = \"APIConnectionError\";\n }\n}\n\n/** The request timed out before a response was received. */\nexport class APITimeoutError extends APIConnectionError {\n constructor(message = \"request timed out\", options?: { cause?: unknown }) {\n super(message, options);\n this.name = \"APITimeoutError\";\n }\n}\n\nexport interface APIStatusErrorInit {\n status: number;\n detail?: ErrorDetail;\n requestId?: string | null;\n response?: Response;\n}\n\n/** The server returned a non-2xx status. */\nexport class APIStatusError extends ParetaError {\n /** The HTTP status code. */\n readonly status: number;\n /** The server's `detail` (string, or an array of validation items for 422). */\n readonly detail: ErrorDetail;\n /** Value of the `x-request-id` response header, if present. */\n readonly requestId: string | null;\n /** The underlying `Response` (for advanced use). */\n readonly response?: Response;\n\n constructor(message: string, init: APIStatusErrorInit) {\n super(message);\n this.name = \"APIStatusError\";\n this.status = init.status;\n this.detail = init.detail;\n this.requestId = init.requestId ?? null;\n this.response = init.response;\n }\n}\n\nexport class BadRequestError extends APIStatusError {\n constructor(message: string, init: APIStatusErrorInit) {\n super(message, init);\n this.name = \"BadRequestError\";\n }\n}\nexport class AuthenticationError extends APIStatusError {\n constructor(message: string, init: APIStatusErrorInit) {\n super(message, init);\n this.name = \"AuthenticationError\";\n }\n}\nexport class PermissionDeniedError extends APIStatusError {\n constructor(message: string, init: APIStatusErrorInit) {\n super(message, init);\n this.name = \"PermissionDeniedError\";\n }\n}\nexport class NotFoundError extends APIStatusError {\n constructor(message: string, init: APIStatusErrorInit) {\n super(message, init);\n this.name = \"NotFoundError\";\n }\n}\nexport class ConflictError extends APIStatusError {\n constructor(message: string, init: APIStatusErrorInit) {\n super(message, init);\n this.name = \"ConflictError\";\n }\n}\n/** The org is out of credit. Top up in the dashboard (billing is browser-only). */\nexport class InsufficientCreditsError extends APIStatusError {\n constructor(message: string, init: APIStatusErrorInit) {\n super(message, init);\n this.name = \"InsufficientCreditsError\";\n }\n}\nexport class RateLimitError extends APIStatusError {\n constructor(message: string, init: APIStatusErrorInit) {\n super(message, init);\n this.name = \"RateLimitError\";\n }\n}\n/** The target endpoint isn't serving yet (stopped, cold-starting, or provider down). */\nexport class EndpointNotReadyError extends APIStatusError {\n constructor(message: string, init: APIStatusErrorInit) {\n super(message, init);\n this.name = \"EndpointNotReadyError\";\n }\n}\n\ntype StatusErrorCtor = new (message: string, init: APIStatusErrorInit) => APIStatusError;\n\nconst STATUS_MAP: Record<number, StatusErrorCtor> = {\n 400: BadRequestError,\n 401: AuthenticationError,\n 402: InsufficientCreditsError,\n 403: PermissionDeniedError,\n 404: NotFoundError,\n 409: ConflictError,\n 422: BadRequestError,\n 429: RateLimitError,\n 503: EndpointNotReadyError,\n};\n\n/** Construct the most specific `APIStatusError` subclass for a status code. */\nexport function errorFromResponse(\n status: number,\n opts: { detail?: ErrorDetail; requestId?: string | null; response?: Response },\n): APIStatusError {\n const { detail, requestId, response } = opts;\n // Message = `detail` only when it's a non-empty STRING (422's array detail\n // falls through to \"HTTP 422\"); mirrors error_from_response.\n const message = typeof detail === \"string\" && detail ? detail : `HTTP ${status}`;\n let cls = STATUS_MAP[status];\n if (!cls) cls = status === 429 ? RateLimitError : APIStatusError;\n return new cls(message, { status, detail, requestId, response });\n}\n","/**\n * SSE parsing over a `fetch` `ReadableStream` — port of the Python\n * `_iter_sse_json` (data-only) and `_iter_sse_typed` (named-event) parsers.\n *\n * Two modes behind one `events` flag, NEVER one parser for both:\n * - data-only (chat completions): strip `data:`, skip `:`-comments/blanks,\n * stop on `[DONE]`, JSON-parse, skip unparseable lines.\n * - named-event (progress-style backend streams): track the `event:` line\n * (reset to \"message\" on a blank line) and yield `{event, data}` per event.\n *\n * CRITICAL: the backend's named-event streams (sse-starlette) emit CRLF line\n * endings. A naive `split(\"\\n\")` would silently drop every event. `iterLines` normalizes\n * `\\r\\n` and bare `\\r` → `\\n` before framing (the frontend was bitten by this\n * at commit 862fab6 — `normalizeSSEBuffer`). We parse incrementally (yield as\n * bytes arrive), improving on the Python async client which buffered all lines.\n */\n\nfunction normalize(s: string): string {\n return s.replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\");\n}\n\n/** Decode a byte stream and yield complete `\\n`-terminated lines (CRLF-normalized). */\nexport async function* iterLines(\n reader: ReadableStreamDefaultReader<Uint8Array>,\n): AsyncGenerator<string> {\n const decoder = new TextDecoder();\n let buffer = \"\";\n for (;;) {\n const { done, value } = await reader.read();\n if (done) break;\n buffer = normalize(buffer + decoder.decode(value, { stream: true }));\n let idx: number;\n while ((idx = buffer.indexOf(\"\\n\")) >= 0) {\n yield buffer.slice(0, idx);\n buffer = buffer.slice(idx + 1);\n }\n }\n // Flush any trailing text the stream ended without a final newline.\n buffer = normalize(buffer + decoder.decode());\n if (buffer.length > 0) {\n for (const line of buffer.split(\"\\n\")) yield line;\n }\n}\n\n/** Data-only SSE: yield each `data:` JSON object (vLLM chat stream). */\nexport async function* parseDataOnly(lines: AsyncIterable<string>): AsyncGenerator<unknown> {\n for await (const rawLine of lines) {\n let line = rawLine.trim();\n if (!line || line.startsWith(\":\")) continue;\n if (line.startsWith(\"data:\")) line = line.slice(\"data:\".length).trim();\n if (!line || line === \"[DONE]\") {\n if (line === \"[DONE]\") return;\n continue;\n }\n try {\n yield JSON.parse(line);\n } catch {\n continue;\n }\n }\n}\n\n/** One named SSE event: the event type + its parsed (or raw-string) data. */\nexport interface SSEEvent {\n event: string;\n data: unknown;\n}\n\n/** Named-event SSE: track `event:` lines, yield `{event, data}`. */\nexport async function* parseNamedEvent(lines: AsyncIterable<string>): AsyncGenerator<SSEEvent> {\n let event = \"message\";\n for await (const rawLine of lines) {\n const line = rawLine.replace(/\\n+$/, \"\");\n if (!line) {\n event = \"message\"; // blank line terminates one event\n continue;\n }\n if (line.startsWith(\":\")) continue;\n if (line.startsWith(\"event:\")) {\n event = line.slice(\"event:\".length).trim();\n } else if (line.startsWith(\"data:\")) {\n const raw = line.slice(\"data:\".length).trim();\n if (raw === \"[DONE]\") return;\n let data: unknown;\n try {\n data = JSON.parse(raw);\n } catch {\n data = raw;\n }\n yield { event, data };\n }\n }\n}\n\n/**\n * Parse an SSE response body. `events=false` → data-only objects; `events=true`\n * → `{event, data}` named events.\n */\nexport function parseSSE(\n reader: ReadableStreamDefaultReader<Uint8Array>,\n opts: { events: true },\n): AsyncGenerator<SSEEvent>;\nexport function parseSSE(\n reader: ReadableStreamDefaultReader<Uint8Array>,\n opts?: { events?: false },\n): AsyncGenerator<unknown>;\nexport function parseSSE(\n reader: ReadableStreamDefaultReader<Uint8Array>,\n opts?: { events?: boolean },\n): AsyncGenerator<unknown> {\n const lines = iterLines(reader);\n return opts?.events ? parseNamedEvent(lines) : parseDataOnly(lines);\n}\n","// Single source of the SDK version (drives the User-Agent). Keep in sync with\n// package.json \"version\" on every release.\nexport const VERSION = \"2.1.0\";\n","/**\n * Money helpers — port of `_dollars_floored_to_cents` (Python `_models.py` §6).\n *\n * JS has no Decimal, so the billed `run.cost` is surfaced as a formatted\n * fixed-2dp dollar STRING (\"1.23\", \"0.00\") computed in integer cents, plus the\n * raw `run.costMicroUsd` integer. We FLOOR to whole cents (never round up) so\n * the SDK never overstates a charge — a 5 µUSD run reads \"0.00\". Flooring is\n * done in integer (BigInt) math, never float dollars, to avoid fp drift.\n *\n * Only `run.cost` floors. Sub-cent unit rates (EvalResult.meanCostMicroUsd)\n * stay raw integers — flooring them to \"$0.00\" would erase the\n * open-vs-frontier savings comparison.\n */\n\nconst MICRO_PER_CENT = 10_000n;\n\n/**\n * Floor micro-USD to whole cents and format as a fixed-2dp dollar string.\n * `dollarsFlooredToCents(5)` → \"0.00\"; `(1_234_500)` → \"1.23\"; `(20_000)` → \"0.02\".\n */\nexport function dollarsFlooredToCents(microUsd: number | bigint | null | undefined): string {\n const micro = typeof microUsd === \"bigint\" ? microUsd : BigInt(Math.trunc(Number(microUsd ?? 0)));\n // BigInt division truncates toward zero; costs are >= 0 so this is a floor.\n const cents = micro / MICRO_PER_CENT;\n const negative = cents < 0n;\n const abs = negative ? -cents : cents;\n const dollars = abs / 100n;\n const remainder = abs % 100n;\n return `${negative ? \"-\" : \"\"}${dollars.toString()}.${remainder.toString().padStart(2, \"0\")}`;\n}\n","/**\n * Response objects — hand-written wrappers over the raw server JSON, a faithful\n * port of the Python `_models.py`. Each keeps the raw payload on `.raw` and\n * exposes it via `.toDict()`, so nothing the API returns is lost behind the\n * typed layer.\n *\n * Alias / D3 boundary (a BACKEND contract, the SDK adds no alias logic):\n * `EvalResult.modelId` and `run.candidateModels` are per-task PUBLIC aliases —\n * real open-weights ids never cross. Frontier (vendor) ids are in the clear.\n */\n\nimport { dollarsFlooredToCents } from \"./money.js\";\n\ntype Raw = Record<string, any>;\n\n/** Base: holds the raw payload, dict-style escape hatches. */\nexport class BaseModel {\n /** The raw server JSON, untouched. */\n readonly raw: Raw;\n constructor(raw?: Raw) {\n this.raw = raw ?? {};\n }\n /** The raw server JSON (alias of `.raw`, mirrors Python `.to_dict()`). */\n toDict(): Raw {\n return this.raw;\n }\n /** Read an arbitrary key off the raw payload. */\n get<T = unknown>(key: string, fallback?: T): T {\n const v = this.raw[key];\n return (v === undefined ? (fallback as T) : (v as T));\n }\n}\n\n// ── inference ──────────────────────────────────────────────────────────\nexport class Usage extends BaseModel {\n get promptTokens(): number | null { return this.raw.prompt_tokens ?? null; }\n get completionTokens(): number | null { return this.raw.completion_tokens ?? null; }\n get totalTokens(): number | null { return this.raw.total_tokens ?? null; }\n}\n\nexport class Message extends BaseModel {\n get role(): string | null { return this.raw.role ?? null; }\n get content(): string | null { return this.raw.content ?? null; }\n}\n\nexport class Choice extends BaseModel {\n get index(): number | null { return this.raw.index ?? null; }\n get finishReason(): string | null { return this.raw.finish_reason ?? null; }\n get message(): Message { return new Message(this.raw.message ?? {}); }\n /** Streaming chunks carry `delta` instead of `message`. */\n get delta(): Message { return new Message(this.raw.delta ?? {}); }\n}\n\nexport class ChatCompletion extends BaseModel {\n get id(): string | null { return this.raw.id ?? null; }\n get model(): string | null { return this.raw.model ?? null; }\n get created(): number | null { return this.raw.created ?? null; }\n get choices(): Choice[] { return (this.raw.choices ?? []).map((c: Raw) => new Choice(c)); }\n get usage(): Usage { return new Usage(this.raw.usage ?? {}); }\n\n /** #164 receipt, held OFF `.raw` so `toDict()` stays the raw server JSON. */\n private _cost?: { billed: number | null; frontier: number | null };\n\n /** #164: attach the per-call receipt from the response headers (billed +\n * the frontier counterfactual, micro-USD ints). Chainable. */\n withCost(headers?: Headers): ChatCompletion {\n const int = (name: string): number | null => {\n const v = headers?.get(name);\n if (v == null) return null;\n const n = parseInt(v, 10);\n return Number.isNaN(n) ? null : n;\n };\n this._cost = {\n billed: int(\"X-Pareta-Billed\"),\n frontier: int(\"X-Pareta-Frontier-Would-Have-Cost\"),\n };\n return this;\n }\n /** What Pareta charged, micro-USD (0 on an idempotent replay); null if absent. */\n get billedMicroUsd(): number | null { return this._cost?.billed ?? null; }\n /** What one list-priced frontier call would have cost, micro-USD. */\n get frontierWouldHaveCostMicroUsd(): number | null {\n return this._cost?.frontier ?? null;\n }\n /** frontier / billed — e.g. 17 = 17× cheaper; null if either is missing or billed is 0. */\n get savingsFactor(): number | null {\n const b = this.billedMicroUsd, f = this.frontierWouldHaveCostMicroUsd;\n return b && f && b > 0 ? Math.round((f / b) * 10) / 10 : null;\n }\n}\n\n/** One SSE delta. `chunk.choices[0].delta.content` is the incremental text. */\nexport class ChatCompletionChunk extends ChatCompletion {}\n\nexport class Model extends BaseModel {\n get id(): string | null { return this.raw.id ?? null; }\n get ownedBy(): string | null { return this.raw.owned_by ?? null; }\n get created(): number | null { return this.raw.created ?? null; }\n}\n\n/** The OpenAI-compatible `/v1/models` list. Exposes `.data` and is iterable. */\nexport class ModelList extends BaseModel implements Iterable<Model> {\n get data(): Model[] { return (this.raw.data ?? []).map((m: Raw) => new Model(m)); }\n get length(): number { return (this.raw.data ?? []).length; }\n [Symbol.iterator](): Iterator<Model> { return this.data[Symbol.iterator](); }\n}\n\n// ── tasks ──────────────────────────────────────────────────────────────\nexport class Task extends BaseModel {\n get id(): string | null { return this.raw.id ?? null; }\n get defaultScorer(): string | null { return this.raw.default_scorer ?? null; }\n get hasBlobInput(): boolean { return Boolean(this.raw.has_blob_input); }\n}\n\n/** GET /v1/tasks → {\"tasks\": [...]}. */\nexport function taskList(raw: unknown): Task[] {\n return (((raw as Raw)?.tasks as Raw[]) ?? []).map((t) => new Task(t));\n}\n\nexport class TaskMatchCandidate extends BaseModel {\n get taskId(): string | null { return this.raw.task_id ?? null; }\n get score(): number | null { return this.raw.score ?? null; }\n get confidence(): string | null { return this.raw.confidence ?? null; }\n}\n\n/** Result of `tasks.match()`: `.matched`, `.chosen` (best or null), `.candidates`. */\nexport class TaskMatch extends BaseModel {\n get query(): string | null { return this.raw.query ?? null; }\n get matched(): boolean { return Boolean(this.raw.matched); }\n get chosen(): TaskMatchCandidate | null {\n return this.raw.chosen ? new TaskMatchCandidate(this.raw.chosen) : null;\n }\n get candidates(): TaskMatchCandidate[] {\n return (this.raw.candidates ?? []).map((c: Raw) => new TaskMatchCandidate(c));\n }\n get ambiguous(): boolean { return Boolean(this.raw.ambiguous); }\n get matcher(): string | null { return this.raw.matcher ?? null; }\n}\n\n// ── evals ──────────────────────────────────────────────────────────────\nexport class EvalSet extends BaseModel {\n get id(): string | null { return this.raw.id ?? null; }\n get taskId(): string | null { return this.raw.task_id ?? null; }\n get name(): string | null { return this.raw.name ?? null; }\n get itemCount(): number | null { return this.raw.item_count ?? null; }\n get scoringStrategy(): string | null { return this.raw.scoring_strategy ?? null; }\n /** The one-sentence success criterion this set was created with (CB1:\n * DATA + INTENT). Required at create. */\n get intent(): string | null { return this.raw.intent ?? null; }\n}\n\n/** POST /v1/eval-sets → {\"eval_set\": {...}}. */\nexport function evalSetFromCreate(raw: unknown): EvalSet {\n return new EvalSet((raw as Raw)?.eval_set ?? {});\n}\n/** GET /v1/eval-sets → {\"eval_sets\": [...]}. */\nexport function evalSetList(raw: unknown): EvalSet[] {\n return (((raw as Raw)?.eval_sets as Raw[]) ?? []).map((e) => new EvalSet(e));\n}\n\n/**\n * One proposed grading contract for an uploaded dataset (a row of\n * `ProposalResult.proposals`). `warning` is set on the custom-eval floor when\n * the data looks extraction-shaped (judge grading is weaker there).\n */\nexport class ContractProposal extends BaseModel {\n get taskId(): string | null { return this.raw.task_id ?? null; }\n get confidence(): string | null { return this.raw.confidence ?? null; }\n get evidence(): Raw { return this.raw.evidence ?? {}; }\n get warning(): string | null { return this.raw.warning ?? null; }\n}\n\n/**\n * The binder's answer for `evals.proposeContract` (POST\n * /v1/eval-sets/propose-contract): which grading contract(s) fit your data\n * under your stated intent. Nothing is persisted — confirm by passing the\n * chosen `taskId` (or letting `create` auto-bind a clean single proposal).\n */\nexport class ProposalResult extends BaseModel {\n get proposals(): ContractProposal[] {\n return (this.raw.proposals ?? []).map((p: Raw) => new ContractProposal(p));\n }\n get homogeneous(): boolean { return Boolean(this.raw.homogeneous); }\n get split(): Raw | null { return this.raw.split ?? null; }\n get conflict(): Raw | null { return this.raw.conflict ?? null; }\n get closestTask(): string | null { return this.raw.closest_task ?? null; }\n get intent(): string | null { return this.raw.intent ?? null; }\n get message(): string | null { return this.raw.message ?? null; }\n /** True when the binder matched exactly ONE homogeneous SPECIFIC contract at\n * high/medium confidence and no conflict/split — the case `create` auto-binds\n * without a human confirming. The `custom-eval` universal FLOOR is EXCLUDED:\n * the binder offers it only when no specific contract fits, and per the\n * precision ladder the floor is a CHOICE — the user opts in with\n * `task: \"custom-eval\"`, never a silent auto-bind. */\n get isClean(): boolean {\n const props = this.proposals;\n return (this.homogeneous && this.conflict == null && this.split == null\n && props.length === 1\n && (props[0].confidence === \"high\" || props[0].confidence === \"medium\")\n && Boolean(props[0].taskId)\n && props[0].taskId !== \"custom-eval\");\n }\n /** The task `create` would auto-bind, or null if the result isn't clean. */\n get boundTask(): string | null {\n return this.isClean ? this.proposals[0].taskId : null;\n }\n}\n\n/** POST /v1/eval-sets/propose-contract → the proposal object (flat). */\nexport function proposalResult(raw: unknown): ProposalResult {\n return new ProposalResult((raw as Raw) ?? {});\n}\n\n/**\n * One scored item inside `EvalResult.perItem`. `prediction` is the model's raw\n * output, truncated server-side — present only on items that reached scoring\n * (not pool/build errors), there to debug a 0.0 `score` without re-running.\n */\nexport class EvalItemResult extends BaseModel {\n get idx(): number | null { return this.raw.idx ?? null; }\n get score(): number | null { return this.raw.score ?? null; }\n get prediction(): string | null { return this.raw.prediction ?? null; }\n get error(): string | null { return this.raw.error ?? null; }\n}\n\n/**\n * One model's aggregate on an eval run. `modelId` is the per-task public alias;\n * `kind` ('open' | 'frontier') is populated by the Slice-4 result schema.\n */\nexport class EvalResult extends BaseModel {\n get modelId(): string | null { return this.raw.model_id ?? null; }\n get kind(): string | null { return this.raw.kind ?? null; }\n get qualityMean(): number | null { return this.raw.quality_mean ?? null; }\n get qualityCiLow(): number | null { return this.raw.quality_ci_low ?? null; }\n get qualityCiHigh(): number | null { return this.raw.quality_ci_high ?? null; }\n // Raw integer — sub-cent unit rate, NOT floored (see money.ts).\n get meanCostMicroUsd(): number | null { return this.raw.mean_cost_micro_usd ?? null; }\n get nSucceeded(): number | null { return this.raw.n_succeeded ?? null; }\n get errorCount(): number | null { return this.raw.error_count ?? null; }\n /** Per-item rows (idx/score/prediction/error); empty when not persisted. */\n get perItem(): EvalItemResult[] {\n return (this.raw.per_item ?? []).map((it: Raw) => new EvalItemResult(it));\n }\n}\n\n/** A vendor frontier model you can evaluate against (from the eval pool). */\nexport class FrontierModel extends BaseModel {\n get id(): string | null { return this.raw.id ?? null; }\n get vendor(): string | null { return this.raw.vendor ?? null; }\n get vision(): boolean { return Boolean(this.raw.vision); }\n /** Only meaningful when a task was given: it has benchmark results on that task. */\n get benchmarked(): boolean { return Boolean(this.raw.benchmarked); }\n}\n\nexport function frontierModels(raw: unknown): FrontierModel[] {\n return (((raw as Raw)?.frontier_models as Raw[]) ?? []).map((m) => new FrontierModel(m));\n}\n\n/**\n * Wraps the GET /v1/eval-runs/{id} envelope `{\"run\": {...}, \"results\": [...]}`.\n * `cost` is the billed total as a floored fixed-2dp dollar string (§6);\n * `costMicroUsd` is the raw integer.\n */\nexport class EvalRun extends BaseModel {\n private get run(): Raw { return this.raw.run ?? {}; }\n get id(): string | null { return this.run.id ?? null; }\n get evalSetId(): string | null { return this.run.eval_set_id ?? null; }\n get status(): string | null { return this.run.status ?? null; }\n get isTerminal(): boolean {\n return this.run.status === \"completed\" || this.run.status === \"failed\";\n }\n get candidateModels(): string[] { return [...(this.run.candidate_model_ids ?? [])]; }\n get errorDetail(): string | null { return this.run.error_detail ?? null; }\n /** Raw billed micro-USD integer. */\n get costMicroUsd(): number { return Number(this.run.total_cost_micro_usd ?? 0); }\n /** Billed total, floored to whole cents, as a fixed-2dp dollar string (\"1.23\"). */\n get cost(): string { return dollarsFlooredToCents(this.run.total_cost_micro_usd); }\n get results(): EvalResult[] {\n return (this.raw.results ?? []).map((r: Raw) => new EvalResult(r));\n }\n}\n\n// ── retrieval (rerank + embeddings) ────────────────────────────────────\n\n/** One row of `Rerank.results` — a document's position + calibrated score. */\nexport class RerankResult extends BaseModel {\n /** Position of this document in YOUR request's documents array. */\n get index(): number { return Number(this.raw.index ?? -1); }\n /** Calibrated P(relevant) in (0, 1) — thresholdable, not just ordinal. */\n get relevanceScore(): number { return Number(this.raw.relevance_score ?? 0); }\n}\n\n/** Result of `pa.rerank(...)`: `.results` ordered most-relevant-first;\n * `.pairs` is the number of documents scored (the metered unit). */\nexport class Rerank extends BaseModel {\n get results(): RerankResult[] {\n return (this.raw.results ?? []).map((r: Raw) => new RerankResult(r));\n }\n get model(): string | null { return this.raw.model ?? null; }\n get pairs(): number | null { return this.raw.pairs ?? null; }\n /** Map the ranked indices back onto the documents you sent — best first. */\n topDocuments(documents: string[]): string[] {\n return this.results\n .filter((r) => r.index >= 0 && r.index < documents.length)\n .map((r) => documents[r.index]!);\n }\n}\n\n/** Result of `pa.embeddings(...)`: unit-normalized vectors in input order\n * (cosine similarity is a plain dot product); `.promptTokens` is metered. */\nexport class Embeddings extends BaseModel {\n get vectors(): number[][] {\n const rows = [...((this.raw.data ?? []) as Raw[])];\n rows.sort((a, b) => Number(a.index ?? 0) - Number(b.index ?? 0));\n return rows.map((r) => (r.embedding as number[]) ?? []);\n }\n get model(): string | null { return this.raw.model ?? null; }\n get promptTokens(): number | null { return this.raw.usage?.prompt_tokens ?? null; }\n get length(): number { return ((this.raw.data ?? []) as Raw[]).length; }\n}\n\n// ── audio (ASR + TTS) ──────────────────────────────────────────────────\n\n/** Browser-safe base64 → Uint8Array (Buffer in Node, atob elsewhere). */\nfunction base64ToBytes(b64: string): Uint8Array {\n if (typeof Buffer !== \"undefined\") return new Uint8Array(Buffer.from(b64, \"base64\"));\n const bin = atob(b64);\n const bytes = new Uint8Array(bin.length);\n for (let i = 0; i < bin.length; i++) bytes[i] = bin.charCodeAt(i);\n return bytes;\n}\n\n/** Speech-to-text result from `audio.transcriptions(...)`. `.durationS` is\n * the metered input audio length (per minute). */\nexport class Transcription extends BaseModel {\n get text(): string | null { return this.raw.text ?? null; }\n get language(): string | null { return this.raw.language ?? null; }\n get durationS(): number | null { return this.raw.duration_s ?? null; }\n toString(): string { return this.text ?? \"\"; }\n}\n\n/** Text-to-speech result from `audio.speech(...)`. `.audio` is decoded\n * bytes; `.durationS` is the metered output audio length (per minute). */\nexport class Speech extends BaseModel {\n /** The synthesized audio, base64-decoded to raw bytes. */\n get audio(): Uint8Array {\n const b64 = (this.raw.audio_base64 as string) || \"\";\n return b64 ? base64ToBytes(b64) : new Uint8Array(0);\n }\n get audioBase64(): string | null { return this.raw.audio_base64 ?? null; }\n get sampleRate(): number | null { return this.raw.sample_rate ?? null; }\n get durationS(): number | null { return this.raw.duration_s ?? null; }\n /** Container/codec of the returned audio (e.g. \"wav\"). */\n get format(): string | null { return this.raw.format ?? null; }\n /** Write the decoded audio to `path` (Node only — lazy node:fs). */\n async save(path: string): Promise<this> {\n const { writeFile } = await import(\"node:fs/promises\");\n await writeFile(path, this.audio);\n return this;\n }\n}\n\n/** Image result from `images.generate(...)`. `.image` is decoded PNG bytes;\n * `.size` is the ACTUAL delivered size. Billed flat per image (the\n * `X-Pareta-Billed` response header carries the receipt). */\nexport class ImageGeneration extends BaseModel {\n /** The generated image, base64-decoded to raw PNG bytes. */\n get image(): Uint8Array {\n const b64 = this.b64Json ?? \"\";\n return b64 ? base64ToBytes(b64) : new Uint8Array(0);\n }\n get b64Json(): string | null {\n const data = (this.raw.data as Array<Record<string, unknown>>) ?? [];\n return (data[0]?.b64_json as string) ?? null;\n }\n get size(): string | null { return this.raw.size ?? null; }\n get model(): string | null { return this.raw.model ?? null; }\n get created(): number | null { return this.raw.created ?? null; }\n /** Write the decoded PNG to `path` (Node only — lazy node:fs). */\n async save(path: string): Promise<this> {\n const { writeFile } = await import(\"node:fs/promises\");\n await writeFile(path, this.image);\n return this;\n }\n}\n","/**\n * `client.chat.completions` — OpenAI-compatible chat completions.\n *\n * `model` is `\"auto\"` — Pareta plans, routes, and verifies each request. The\n * call is metered: a successful completion debits the org's balance; a zero\n * balance raises `InsufficientCreditsError` (402).\n */\n\nimport type { Transport } from \"../client.js\";\nimport { ParetaError } from \"../errors.js\";\nimport { ChatCompletion, ChatCompletionChunk } from \"../models.js\";\n\nconst PATH = \"/v1/chat/completions\";\n\n/** An OpenAI-style chat message. `content` is a string or content-block array. */\nexport interface ChatMessage {\n role: string;\n content: string | Array<Record<string, unknown>>;\n [key: string]: unknown;\n}\n\n/** Params for `chat.completions.create`. Extra OpenAI params pass through. */\nexport interface ChatCompletionCreateParams {\n /** `\"auto\"` — Pareta routes the request to the right model. */\n model: string;\n messages: ChatMessage[];\n stream?: boolean;\n /** temperature, max_tokens, top_p, … — forwarded verbatim. */\n [key: string]: unknown;\n}\n\nfunction buildBody(params: ChatCompletionCreateParams): Record<string, unknown> {\n const { model, messages, stream, ...extra } = params;\n if (!model) throw new ParetaError('model is required (use \"auto\")');\n if (!messages || messages.length === 0) {\n throw new ParetaError(\"messages is required and must be non-empty\");\n }\n const body: Record<string, unknown> = { model, messages, ...extra };\n if (stream) body.stream = true;\n return body;\n}\n\nexport class Completions {\n constructor(private readonly client: Transport) {}\n\n /**\n * Create a chat completion.\n *\n * `stream: false` (default) → `Promise<ChatCompletion>`.\n * `stream: true` → `AsyncIterable<ChatCompletionChunk>`\n * (`chunk.choices[0].delta.content` is the incremental text).\n */\n create(params: ChatCompletionCreateParams & { stream: true }): AsyncIterable<ChatCompletionChunk>;\n create(params: ChatCompletionCreateParams & { stream?: false }): Promise<ChatCompletion>;\n create(\n params: ChatCompletionCreateParams,\n ): Promise<ChatCompletion> | AsyncIterable<ChatCompletionChunk> {\n const body = buildBody(params);\n if (params.stream) {\n return this.client.stream<ChatCompletionChunk>(\"POST\", PATH, {\n body,\n cast: (raw) => new ChatCompletionChunk(raw as Record<string, unknown>),\n });\n }\n // #164: capture the receipt headers and attach the cost to the completion.\n let headers: Headers | undefined;\n return this.client\n .request<ChatCompletion>(\"POST\", PATH, {\n body,\n cast: (raw) => new ChatCompletion(raw as Record<string, unknown>),\n onHeaders: (h) => { headers = h; },\n })\n .then((completion) => completion.withCost(headers));\n }\n}\n\nexport class Chat {\n readonly completions: Completions;\n constructor(client: Transport) {\n this.completions = new Completions(client);\n }\n}\n","/**\n * `client.models` — the OpenAI-compatible `/v1/models` list of model ids your\n * org can call. Each `Model.id` is usable as\n * `chat.completions.create({ model })`.\n */\n\nimport type { Transport } from \"../client.js\";\nimport { ModelList } from \"../models.js\";\n\nconst PATH = \"/v1/models\";\n\nexport class Models {\n constructor(private readonly client: Transport) {}\n\n list(): Promise<ModelList> {\n return this.client.request<ModelList>(\"GET\", PATH, {\n cast: (raw) => new ModelList(raw as Record<string, unknown>),\n });\n }\n}\n","/**\n * `client.tasks` — the grading-contract directory for evals. A task names how\n * a dataset is scored (row shape + scorer); inference never takes one. `match`\n * maps a plain-English description of your dataset to the contract that\n * grades it — feed the matched task id into `evals.runs.create(task=...)`.\n */\n\nimport type { Transport } from \"../client.js\";\nimport { ParetaError } from \"../errors.js\";\nimport { Task, TaskMatch, taskList } from \"../models.js\";\n\nconst BASE = \"/v1/tasks\";\n\nexport class Tasks {\n constructor(private readonly client: Transport) {}\n\n list(): Promise<Task[]> {\n return this.client.request<Task[]>(\"GET\", BASE, { cast: taskList });\n }\n\n retrieve(taskId: string, opts: { examplesN?: number } = {}): Promise<Task> {\n const params = opts.examplesN !== undefined ? { examples_n: opts.examplesN } : undefined;\n return this.client.request<Task>(\"GET\", `${BASE}/${taskId}`, {\n params,\n cast: (raw) => new Task(raw as Record<string, unknown>),\n });\n }\n\n /** Free-text intent → ranked candidate tasks (the Step-0 backend matcher). */\n match(query: string, opts: { topK?: number } = {}): Promise<TaskMatch> {\n if (!query || !query.trim()) throw new ParetaError(\"query is required\");\n return this.client.request<TaskMatch>(\"POST\", `${BASE}/match`, {\n body: { query, top_k: opts.topK ?? 5 },\n cast: (raw) => new TaskMatch(raw as Record<string, unknown>),\n });\n }\n}\n","/**\n * `client.evals` — eval sets + runs (bring-your-own-data evaluation).\n *\n * // An eval set is DATA + INTENT (v2, breaking): intent REQUIRED, task\n * // OPTIONAL — the binder resolves your intent + the data's shape.\n * await pa.evals.proposeContract({ items: [...], intent: \"…\" }); // preview\n * const set = await pa.evals.sets.create({ items: [...], intent: \"…\" }); // auto-binds\n * await pa.evals.sets.uploadDocument(set.id, file, { idx, fieldName }); // blob tasks\n * const run = await pa.evals.runs.create({ evalSet: set.id, models: [...], wait: true });\n * // or, in one call: runs.create({ items, intent: \"…\", models, wait: true })\n *\n * `create` (and the inline `runs.create` sugar) require `intent`; with no\n * `task` they call `proposeContract` and auto-bind ONLY a clean single\n * high/medium match — a conflict, split, or ambiguity throws with the\n * proposals so you pin `task`.\n *\n * Runs are metered (the org balance is debited for compute); `run.cost` is the\n * billed total in dollars (floored to cents). `frontier` accepts an explicit\n * list of ids, or the \"all\"/\"benchmarked\"/\"none\" roster keywords (resolved via\n * `frontierModels()`).\n */\n\nimport type { Transport } from \"../client.js\";\nimport { ParetaError } from \"../errors.js\";\nimport {\n EvalRun,\n EvalSet,\n FrontierModel,\n ProposalResult,\n evalSetFromCreate,\n evalSetList,\n frontierModels as castFrontierModels,\n proposalResult,\n} from \"../models.js\";\n\nconst BASE = \"/v1/eval-sets\";\nconst PROPOSE = \"/v1/eval-sets/propose-contract\";\nconst RUNS = \"/v1/eval-runs\";\nconst FRONTIER = \"/v1/eval/frontier-models\";\nconst INLINE_MAX = 5 * 1024 * 1024; // matches backend _ATTACH_BLOB_INLINE_MAX\n\n/** \"all\" | \"benchmarked\" | \"none\" | an explicit list of frontier ids. */\nexport type FrontierSpec = \"all\" | \"benchmarked\" | \"none\" | string[] | null;\n\n/** A document for `uploadDocument`: a filesystem path (Node), Blob, or bytes. */\nexport type FileInput = string | Blob | ArrayBuffer | Uint8Array;\n\nconst MIME_BY_EXT: Record<string, string> = {\n pdf: \"application/pdf\",\n png: \"image/png\",\n jpg: \"image/jpeg\",\n jpeg: \"image/jpeg\",\n gif: \"image/gif\",\n webp: \"image/webp\",\n tiff: \"image/tiff\",\n tif: \"image/tiff\",\n bmp: \"image/bmp\",\n txt: \"text/plain\",\n json: \"application/json\",\n jsonl: \"application/jsonl\",\n csv: \"text/csv\",\n};\n\nfunction guessMime(filename: string, override?: string): string {\n if (override) return override;\n const ext = filename.split(\".\").pop()?.toLowerCase();\n return (ext && MIME_BY_EXT[ext]) || \"application/octet-stream\";\n}\n\n/** Normalize any FileInput → a Blob + filename + size (path read is Node-only). */\nasync function toBlob(\n file: FileInput,\n mimeOverride?: string,\n): Promise<{ blob: Blob; filename: string; size: number; mime: string }> {\n if (typeof file === \"string\") {\n // Path → lazy node:fs so the browser/edge bundle stays clean.\n const [{ readFile }, { basename }] = await Promise.all([\n import(\"node:fs/promises\"),\n import(\"node:path\"),\n ]);\n const buf = await readFile(file);\n const filename = basename(file);\n const mime = guessMime(filename, mimeOverride);\n return { blob: new Blob([buf as BlobPart], { type: mime }), filename, size: buf.byteLength, mime };\n }\n if (file instanceof Blob) {\n const mime = mimeOverride || file.type || \"application/octet-stream\";\n const blob = mimeOverride ? new Blob([file], { type: mime }) : file;\n return { blob, filename: \"upload\", size: file.size, mime };\n }\n const bytes = file instanceof Uint8Array ? file : new Uint8Array(file);\n const mime = mimeOverride || \"application/octet-stream\";\n return { blob: new Blob([bytes as BlobPart], { type: mime }), filename: \"upload\", size: bytes.byteLength, mime };\n}\n\n/**\n * CB1 (v2 breaking): an eval set is DATA + INTENT — the same rows can mean\n * different tasks, and only the caller knows which. Enforced client-side so the\n * error is actionable before the request (the server also 400s an intent-less\n * create, which is how pre-v2 SDKs surface the change).\n */\nfunction requireIntent(intent: string | undefined): string {\n const s = (intent ?? \"\").trim();\n if (!s) {\n throw new ParetaError(\n 'intent is required: one sentence describing what the model should do ' +\n 'with each item (e.g. \"extract vendor, total and date from each ' +\n 'invoice\"). Pass intent to evals.create / proposeContract.');\n }\n return s.slice(0, 500);\n}\n\nfunction itemsJsonl(\n task: string,\n items: Array<Record<string, unknown>>,\n intent: string,\n name?: string,\n): { files: Record<string, { filename: string; content: string; contentType: string }>; data: Record<string, string> } {\n if (!items || items.length === 0) throw new ParetaError(\"items is required and must be non-empty\");\n const jsonl = items.map((it) => JSON.stringify(it)).join(\"\\n\");\n return {\n files: { items: { filename: `items.${task}.jsonl`, content: jsonl, contentType: \"application/jsonl\" } },\n data: { task_id: task, intent, name: name || `sdk eval set (${items.length} items)` },\n };\n}\n\nfunction proposeMultipart(\n items: Array<Record<string, unknown>>,\n intent: string,\n): { files: Record<string, { filename: string; content: string; contentType: string }>; data: Record<string, string> } {\n if (!items || items.length === 0) throw new ParetaError(\"items is required and must be non-empty\");\n const jsonl = items.map((it) => JSON.stringify(it)).join(\"\\n\");\n return {\n files: { items: { filename: \"items.jsonl\", content: jsonl, contentType: \"application/jsonl\" } },\n data: { intent },\n };\n}\n\n/** Turn a non-clean propose result into an actionable create-time error. */\nfunction bindError(result: ProposalResult): ParetaError {\n const intent = result.intent ?? \"\";\n if (result.conflict) {\n const c = result.conflict;\n return new ParetaError(\n `intent '${intent}' describes a different job than the data's shape ` +\n `supports (reads as '${c.intended_task}': ${c.reasoning}). Pass a task ` +\n \"to pin a contract, or revise the intent.\");\n }\n if (result.split) {\n const s = result.split;\n return new ParetaError(\n `the dataset looks MIXED — ${s.validated_n}/${s.total_n} items fit ` +\n `'${s.closest_task}', the rest a different shape. Split the set or pass a task.`);\n }\n // Zero-fit: the binder offers the custom-eval universal FLOOR (judged\n // win-rate vs the anchor). Per the precision ladder that's the user's\n // CHOICE — surface it explicitly rather than silently binding it.\n const props = result.proposals;\n if (props.length === 1 && props[0].taskId === \"custom-eval\") {\n const warn = props[0].warning ? ` (${props[0].warning})` : \"\";\n return new ParetaError(\n `no specific grading contract fits this data for intent '${intent}'. The ` +\n \"custom-eval universal floor is available — it grades by judged win-rate \" +\n `vs the frontier anchor.${warn} Pass task: \"custom-eval\" to use it, or ` +\n \"revise the data/intent for a specific contract.\");\n }\n const options = props.map((p) => p.taskId).filter(Boolean);\n if (options.length === 0 && result.closestTask) options.push(result.closestTask);\n const hint = options.length ? ` Candidates: ${options.join(\", \")}.` : \"\";\n return new ParetaError(\n `could not confidently bind a grading contract for intent '${intent}'.${hint} ` +\n \"Pass a task to pin one, or inspect evals.proposeContract({ items, intent }).\");\n}\n\nfunction mergeCandidates(models: string[], frontierIds: string[]): string[] {\n // Order matters: open models first, then frontier ids; no sort/dedupe.\n const cands = [...(models ?? []), ...(frontierIds ?? [])];\n if (cands.length === 0) throw new ParetaError(\"models is required (the open candidates to evaluate)\");\n return cands;\n}\n\nfunction resolveFrontierFromRoster(frontier: string, roster: FrontierModel[]): string[] {\n if (frontier === \"all\") return roster.map((m) => m.id!).filter((x): x is string => x != null);\n if (frontier === \"benchmarked\") {\n return roster.filter((m) => m.benchmarked).map((m) => m.id!).filter((x): x is string => x != null);\n }\n throw new ParetaError(\n `unknown frontier keyword '${frontier}' (use 'all'/'benchmarked'/'none' or a list)`,\n );\n}\n\nconst sleep = (seconds: number): Promise<void> => new Promise((r) => setTimeout(r, seconds * 1000));\n\nexport class EvalSets {\n constructor(private readonly client: Transport) {}\n\n /**\n * Persist an eval set from your rows. `intent` is REQUIRED (v2): one sentence\n * on what the model should do with each item. `task` is OPTIONAL — omit it and\n * the binder resolves your intent + the data's shape to a grading contract\n * (auto-binds a clean single match; throws with the proposals otherwise). Pass\n * `task` to pin one explicitly.\n */\n async create(params: {\n items: Array<Record<string, unknown>>;\n intent: string;\n task?: string;\n name?: string;\n }): Promise<EvalSet> {\n const intent = requireIntent(params.intent);\n let task = params.task;\n if (task == null) {\n const proposal = await this.proposeContract(params.items, intent);\n task = proposal.boundTask ?? undefined;\n if (task == null) throw bindError(proposal);\n }\n const { files, data } = itemsJsonl(task, params.items, intent, params.name);\n return this.client.request<EvalSet>(\"POST\", BASE, { files, data, cast: evalSetFromCreate });\n }\n\n /** Internal: the binder call `create` uses when no task is pinned. Public on\n * `Evals` as `proposeContract`; kept here so `sets.create` can reach it. */\n proposeContract(items: Array<Record<string, unknown>>, intent: string): Promise<ProposalResult> {\n const { files, data } = proposeMultipart(items, requireIntent(intent));\n return this.client.request<ProposalResult>(\"POST\", PROPOSE, { files, data, cast: proposalResult });\n }\n\n list(): Promise<EvalSet[]> {\n return this.client.request<EvalSet[]>(\"GET\", BASE, { cast: evalSetList });\n }\n\n async retrieve(evalSetId: string): Promise<EvalSet> {\n const raw = await this.client.request<Record<string, unknown>>(\"GET\", `${BASE}/${evalSetId}`);\n return new EvalSet(((raw ?? {}).eval_set as Record<string, unknown>) ?? {});\n }\n\n async delete(evalSetId: string): Promise<void> {\n await this.client.request(\"DELETE\", `${BASE}/${evalSetId}`);\n }\n\n /**\n * Attach a binary doc (PDF/image) to one row's blob field. Collapses the\n * 3-call signed-URL flow (or the inline path for small files) into one call.\n * `idx` is the 0-based row, `fieldName` the blob input field.\n */\n async uploadDocument(\n evalSetId: string,\n file: FileInput,\n opts: { idx: number; fieldName: string; mime?: string },\n ): Promise<unknown> {\n const { blob, filename, size, mime } = await toBlob(file, opts.mime);\n if (size < INLINE_MAX) {\n return this.client.request(\"POST\", `${BASE}/${evalSetId}/attach-blob`, {\n files: { file: { filename, content: blob, contentType: mime } },\n data: { idx: String(opts.idx), field_name: opts.fieldName, mime },\n });\n }\n // Large file → signed-URL direct-to-storage (raw PUT to GCS, no Pareta auth).\n const minted = await this.client.request<{ upload_url: string; storage_uri: string }>(\n \"POST\",\n `${BASE}/${evalSetId}/blob-upload-url`,\n { body: { idx: opts.idx, field_name: opts.fieldName, mime, file_size: size } },\n );\n const put = await globalThis.fetch(minted.upload_url, {\n method: \"PUT\",\n body: blob,\n headers: { \"Content-Type\": mime },\n signal: AbortSignal.timeout(600_000),\n });\n if (put.status !== 200 && put.status !== 201) {\n throw new ParetaError(`blob upload PUT failed: ${put.status}`);\n }\n return this.client.request(\"POST\", `${BASE}/${evalSetId}/blob-upload-complete`, {\n body: { idx: opts.idx, field_name: opts.fieldName, storage_uri: minted.storage_uri, mime },\n });\n }\n}\n\nexport interface EvalRunCreateParams {\n evalSet?: string;\n task?: string;\n items?: Array<Record<string, unknown>>;\n intent?: string;\n models: string[];\n frontier?: FrontierSpec;\n name?: string;\n wait?: boolean;\n pollInterval?: number;\n timeout?: number;\n}\n\nexport class EvalRuns {\n constructor(\n private readonly client: Transport,\n private readonly sets: EvalSets,\n ) {}\n\n private async frontierIds(frontier: FrontierSpec | undefined, evalSet: string | undefined, task?: string): Promise<string[]> {\n if (frontier == null || frontier === \"none\") return [];\n if (Array.isArray(frontier)) return [...frontier];\n if (typeof frontier !== \"string\") {\n throw new TypeError(\"frontier must be null, a list of ids, or 'all'/'benchmarked'/'none'\");\n }\n let resolveTask = task;\n if (!resolveTask && evalSet) resolveTask = (await this.sets.retrieve(evalSet)).taskId ?? undefined;\n if (!resolveTask) throw new ParetaError(\"cannot resolve a frontier keyword without a task\");\n const roster = await this.client.request<FrontierModel[]>(\"GET\", FRONTIER, {\n params: { task: resolveTask },\n cast: castFrontierModels,\n });\n return resolveFrontierFromRoster(frontier, roster);\n }\n\n async create(params: EvalRunCreateParams): Promise<EvalRun> {\n let evalSet = params.evalSet;\n if (evalSet == null) {\n if (!params.items) {\n throw new ParetaError(\"pass evalSet: <id>, or items (+ intent) to create one\");\n }\n evalSet = (await this.sets.create({\n items: params.items, intent: params.intent as string,\n task: params.task, name: params.name,\n })).id ?? undefined;\n }\n const frontierIds = await this.frontierIds(params.frontier, evalSet, params.task);\n const candidateModelIds = mergeCandidates(params.models, frontierIds);\n const started = await this.client.request<{ run_id: string; status?: string }>(\"POST\", RUNS, {\n body: { eval_set_id: evalSet, candidate_model_ids: candidateModelIds },\n });\n if (params.wait) {\n return this.wait(started.run_id, { pollInterval: params.pollInterval, timeout: params.timeout });\n }\n // Thin stub (not a fetch) — cost reads \"0.00\" until you retrieve().\n return new EvalRun({ run: { id: started.run_id, status: started.status } });\n }\n\n retrieve(runId: string): Promise<EvalRun> {\n return this.client.request<EvalRun>(\"GET\", `${RUNS}/${runId}`, {\n cast: (raw) => new EvalRun(raw as Record<string, unknown>),\n });\n }\n\n async wait(runId: string, opts: { pollInterval?: number; timeout?: number } = {}): Promise<EvalRun> {\n const pollInterval = opts.pollInterval ?? 3;\n const timeout = opts.timeout ?? 900;\n const deadline = Date.now() + timeout * 1000;\n for (;;) {\n const run = await this.retrieve(runId);\n if (run.isTerminal) return run;\n if (Date.now() >= deadline) {\n throw new ParetaError(`eval run ${runId} did not finish within ${Math.round(timeout)}s`);\n }\n await sleep(pollInterval);\n }\n }\n}\n\nexport class Evals {\n readonly sets: EvalSets;\n readonly runs: EvalRuns;\n\n constructor(client: Transport) {\n this.sets = new EvalSets(client);\n this.runs = new EvalRuns(client, this.sets);\n this.client = client;\n }\n private readonly client: Transport;\n\n /**\n * Which grading contract fits your data under your stated `intent`? Stateless\n * discovery — nothing is persisted. Returns a ProposalResult (ranked\n * proposals, the auto-bind decision, conflict/split reporting). `sets.create`\n * calls this under the hood; use it directly to preview the binding first.\n */\n proposeContract(params: { items: Array<Record<string, unknown>>; intent: string }): Promise<ProposalResult> {\n return this.sets.proposeContract(params.items, params.intent);\n }\n\n /**\n * The frontier (vendor) roster you can evaluate against. With `task`, each is\n * annotated `benchmarked` + the roster is vision-filtered for document tasks.\n */\n frontierModels(task?: string): Promise<FrontierModel[]> {\n const params = task ? { task } : undefined;\n return this.client.request<FrontierModel[]>(\"GET\", FRONTIER, { params, cast: castFrontierModels });\n }\n}\n","/**\n * `client.auto` — the routing brain's surrounding surfaces.\n *\n * Calling the brain itself is plain chat with `model: \"auto\"`:\n *\n * client.chat.completions.create({\n * model: \"auto\",\n * messages: [{ role: \"user\", content: \"…\" }],\n * })\n *\n * This resource carries the org-level metrics rollup (requests, success,\n * spend, PROJECTED savings vs frontier) and the metered frontier comparison\n * the Playground uses.\n */\n\nimport type { Transport } from \"../client.js\";\n\nexport interface AutoMetrics {\n requests_30d: number;\n requests_today: number;\n success_rate_30d: number | null;\n billed_micro_usd_30d: number;\n billed_micro_usd_today: number;\n cost_to_serve_micro_usd_30d: number;\n /** PROJECTED (frontier list-priced counterfactual) — labeled so until\n * dual-run calibration lands. */\n savings_vs_frontier_micro_usd_30d: number | null;\n savings_multiple_30d: number | null;\n performance_hourly_7d: Array<{\n hour: string; requests: number; error_rate: number;\n p50_ms: number | null; p95_ms: number | null;\n }>;\n days_30d: Array<{ day: string; n: number; ok: number; success_rate: number }>;\n last_request: {\n created_at: string; status_code: number; duration_ms: number;\n billed_micro_usd: number | null; cost_to_serve_micro_usd: number | null;\n } | null;\n}\n\nexport interface FrontierComparison {\n model: string;\n content: string;\n cost_micro_usd: number;\n latency_ms: number;\n}\n\nexport class Auto {\n constructor(private readonly client: Transport) {}\n\n /** Your org's `model: \"auto\"` traffic, rolled up. Read-only, free. */\n metrics(): Promise<AutoMetrics> {\n return this.client.request<AutoMetrics>(\"GET\", \"/v1/auto/metrics\");\n }\n\n /**\n * One prompt against a frontier vendor for a side-by-side with\n * `model: \"auto\"` — METERED at the vendor's actual token cost (a failed\n * vendor call bills $0). Allowed models: gpt-5.5, gemini-3-5-flash,\n * gemini-3-1-pro, claude-sonnet-4-6.\n */\n compareFrontier(params: {\n model: string;\n messages: Array<{ role: string; content: string }>;\n }): Promise<FrontierComparison> {\n return this.client.request<FrontierComparison>(\n \"POST\", \"/v1/playground/frontier\", { body: params },\n );\n }\n}\n","/**\n * `pa.audio` — the Speech capability lanes (ASR + TTS), TS parity with the\n * Python SDK's `client.audio`.\n *\n * Dedicated routes, not `chat.completions`:\n * POST /v1/audio/transcriptions {audio_base64, language?} -> {text, language, duration_s}\n * POST /v1/audio/speech {text, voice?} -> {audio_base64, sample_rate, duration_s, format}\n *\n * Both are metered PER MINUTE of audio (input duration for ASR, output\n * duration for TTS). You never pick a serving model — Pareta resolves the\n * lane, exactly as `model:\"auto\"` does for chat.\n *\n * Audio input follows the evals FileInput convention: a string is a FILE\n * PATH (read via lazy node:fs — browser/edge bundles stay clean);\n * Blob/ArrayBuffer/Uint8Array are raw bytes; `{ base64 }` passes\n * pre-encoded audio through untouched.\n */\n\nimport type { Transport } from \"../client.js\";\nimport { ParetaError } from \"../errors.js\";\nimport { Speech, Transcription } from \"../models.js\";\n\nconst BASE = \"/v1/audio\";\n\nexport type AudioInput = string | Blob | ArrayBuffer | Uint8Array | { base64: string };\n\n/** Browser-safe Uint8Array → base64 (Buffer in Node, chunked btoa elsewhere). */\nexport function bytesToBase64(bytes: Uint8Array): string {\n if (typeof Buffer !== \"undefined\") return Buffer.from(bytes).toString(\"base64\");\n let bin = \"\";\n const CHUNK = 0x8000;\n for (let i = 0; i < bytes.length; i += CHUNK) {\n bin += String.fromCharCode(...bytes.subarray(i, i + CHUNK));\n }\n return btoa(bin);\n}\n\nasync function toBase64(audio: AudioInput): Promise<string> {\n if (typeof audio === \"string\") {\n // Path → lazy node:fs so the browser/edge bundle stays clean.\n const { readFile } = await import(\"node:fs/promises\");\n return bytesToBase64(new Uint8Array(await readFile(audio)));\n }\n if (typeof audio === \"object\" && audio !== null && \"base64\" in audio) {\n if (!audio.base64 || !audio.base64.trim()) throw new ParetaError(\"audio.base64 is empty\");\n return audio.base64;\n }\n if (audio instanceof Blob) return bytesToBase64(new Uint8Array(await audio.arrayBuffer()));\n const bytes = audio instanceof Uint8Array ? audio : new Uint8Array(audio);\n if (bytes.byteLength === 0) throw new ParetaError(\"audio is empty\");\n return bytesToBase64(bytes);\n}\n\nexport interface TranscriptionOptions {\n /** Optional ISO language hint (omit to auto-detect). */\n language?: string;\n}\n\nexport interface SpeechOptions {\n /** Optional voice id (omit for the default voice). */\n voice?: string;\n}\n\nexport class Audio {\n constructor(private readonly client: Transport) {}\n\n /** Speech-to-text (the `asr` lane). `audio` is a file path, raw bytes, a\n * Blob, or `{ base64 }`. Metered per minute of input audio. */\n async transcriptions(audio: AudioInput, opts: TranscriptionOptions = {}): Promise<Transcription> {\n const body: Record<string, unknown> = { audio_base64: await toBase64(audio) };\n if (opts.language) body.language = opts.language;\n return this.client.request<Transcription>(\"POST\", `${BASE}/transcriptions`, {\n body,\n cast: (raw) => new Transcription(raw as Record<string, unknown>),\n });\n }\n\n /** Text-to-speech (the `tts` lane). Returns a `Speech` whose `.audio` is\n * decoded bytes (`.save(path)` writes a file in Node). Metered per minute\n * of output audio. */\n speech(text: string, opts: SpeechOptions = {}): Promise<Speech> {\n if (!text || !text.trim()) throw new ParetaError(\"text is required\");\n const body: Record<string, unknown> = { text };\n if (opts.voice) body.voice = opts.voice;\n return this.client.request<Speech>(\"POST\", `${BASE}/speech`, {\n body,\n cast: (raw) => new Speech(raw as Record<string, unknown>),\n });\n }\n}\n","/**\n * `pa.images` — the image capability lanes (generate + edit), TS parity with\n * the Python SDK's `client.images`.\n *\n * Dedicated routes, not `chat.completions`:\n * POST /v1/images/generations {prompt, size?, seed?} -> {created, model,\n * data: [{b64_json}], size}\n * POST /v1/images/edits {prompt, image (b64), seed?} -> same shape\n *\n * Both run on Pareta's open image model (`hidream-1`) and are metered at a\n * FLAT price per call — generation by image (every size costs the same;\n * the model renders at full 2K internally), editing by edit (the output\n * keeps the reference's aspect ratio). The `X-Pareta-Billed` response\n * header carries the per-request receipt in micro-USD. Delivery sizes for\n * generation (server-authoritative): 1024x1024 (default), 2048x2048,\n * 2304x1728, 1728x2304, 2560x1440, 1440x2560.\n *\n * Edit input follows the audio FileInput convention: a string is a FILE\n * PATH (read via lazy node:fs — browser/edge bundles stay clean);\n * Blob/ArrayBuffer/Uint8Array are raw bytes; `{ base64 }` passes\n * pre-encoded image data through untouched.\n */\n\nimport type { Transport } from \"../client.js\";\nimport { ParetaError } from \"../errors.js\";\nimport { ImageGeneration } from \"../models.js\";\nimport { bytesToBase64 } from \"./audio.js\";\n\nconst PATH = \"/v1/images/generations\";\nconst EDIT_PATH = \"/v1/images/edits\";\n\nexport type ImageInput = string | Blob | ArrayBuffer | Uint8Array | { base64: string };\n\nasync function toBase64(image: ImageInput): Promise<string> {\n if (typeof image === \"string\") {\n const { readFile } = await import(\"node:fs/promises\");\n return bytesToBase64(new Uint8Array(await readFile(image)));\n }\n if (typeof image === \"object\" && image !== null && \"base64\" in image) {\n if (!image.base64 || !image.base64.trim()) throw new ParetaError(\"image.base64 is empty\");\n return image.base64;\n }\n if (image instanceof Blob) return bytesToBase64(new Uint8Array(await image.arrayBuffer()));\n const bytes = image instanceof Uint8Array ? image : new Uint8Array(image);\n if (bytes.byteLength === 0) throw new ParetaError(\"image is empty\");\n return bytesToBase64(bytes);\n}\n\nexport interface ImageGenerateOptions {\n /** Delivery size, e.g. \"2560x1440\" (omit for 1024x1024). Flat price. */\n size?: string;\n /** Pin the noise seed for reproducibility. */\n seed?: number;\n}\n\nexport interface ImageEditOptions {\n /** Pin the noise seed for reproducibility. */\n seed?: number;\n}\n\nexport class Images {\n constructor(private readonly client: Transport) {}\n\n /** Generate one image from a text prompt. Returns an `ImageGeneration`\n * whose `.image` is decoded PNG bytes (`.save(path)` writes a file in\n * Node). Billed flat per image. */\n generate(prompt: string, opts: ImageGenerateOptions = {}): Promise<ImageGeneration> {\n if (!prompt || !prompt.trim()) throw new ParetaError(\"prompt is required\");\n const body: Record<string, unknown> = { prompt };\n if (opts.size) body.size = opts.size;\n if (opts.seed !== undefined) body.seed = opts.seed;\n return this.client.request<ImageGeneration>(\"POST\", PATH, {\n body,\n cast: (raw) => new ImageGeneration(raw as Record<string, unknown>),\n });\n }\n\n /** Edit one reference image with a plain-language instruction (no mask).\n * `image` is a file path, raw bytes, a Blob, or `{ base64 }` (≤25MB\n * decoded). The output keeps the reference's aspect ratio. Billed flat\n * per edit. */\n async edit(image: ImageInput, prompt: string, opts: ImageEditOptions = {}): Promise<ImageGeneration> {\n if (!prompt || !prompt.trim()) throw new ParetaError(\"prompt is required\");\n const body: Record<string, unknown> = { prompt, image: await toBase64(image) };\n if (opts.seed !== undefined) body.seed = opts.seed;\n return this.client.request<ImageGeneration>(\"POST\", EDIT_PATH, {\n body,\n cast: (raw) => new ImageGeneration(raw as Record<string, unknown>),\n });\n }\n}\n","/**\n * `pa.rerank(...)` + `pa.embeddings(...)` — the Retrieval capability lanes\n * (the RAG stack: embeddings for recall, reranking for precision).\n *\n * Both are dedicated routes, not `chat.completions`:\n * POST /v1/rerank {query, documents[], top_n?} -> ordered\n * {index, relevance_score} rows (calibrated P(relevant))\n * POST /v1/embeddings {input[], input_type?} -> unit-normalized vectors\n *\n * Rerank is metered per document scored; embeddings per input token. You never\n * pick a serving model — Pareta resolves the lane (`pareta-rerank-1` / `qwen-embed-1`),\n * exactly as `model:\"auto\"` does for chat.\n *\n * Exposed as callable client fields (`pa.rerank(...)`) rather than resource\n * objects — call-parity with the Python SDK, and neither lane has sub-methods.\n */\n\nimport type { Transport } from \"../client.js\";\nimport { ParetaError } from \"../errors.js\";\nimport { Embeddings, Rerank } from \"../models.js\";\n\nexport interface RerankOptions {\n /** Truncate the response to the best N (all documents are still scored and metered). */\n topN?: number;\n}\n\nexport type RerankFn = (query: string, documents: string[], opts?: RerankOptions) => Promise<Rerank>;\n\nexport interface EmbeddingsOptions {\n /** `\"query\"` embeds a retrieval QUERY (asymmetric); default embeds documents raw. */\n inputType?: \"query\" | \"document\";\n}\n\nexport type EmbeddingsFn = (input: string | string[], opts?: EmbeddingsOptions) => Promise<Embeddings>;\n\nexport function makeRerank(client: Transport): RerankFn {\n return (query, documents, opts = {}) => {\n if (!query || !query.trim()) throw new ParetaError(\"query is required\");\n if (!Array.isArray(documents) || documents.length === 0) {\n throw new ParetaError(\"documents must be a non-empty array of strings\");\n }\n const body: Record<string, unknown> = { query, documents };\n if (opts.topN !== undefined) body.top_n = opts.topN;\n return client.request<Rerank>(\"POST\", \"/v1/rerank\", {\n body,\n cast: (raw) => new Rerank(raw as Record<string, unknown>),\n });\n };\n}\n\nexport function makeEmbeddings(client: Transport): EmbeddingsFn {\n return (input, opts = {}) => {\n const texts = typeof input === \"string\" ? [input] : input;\n if (!Array.isArray(texts) || texts.length === 0 || texts.some((t) => typeof t !== \"string\" || !t.trim())) {\n throw new ParetaError(\"input must be a non-empty string or array of non-empty strings\");\n }\n if (opts.inputType !== undefined && opts.inputType !== \"query\" && opts.inputType !== \"document\") {\n throw new ParetaError('inputType must be \"query\" or \"document\"');\n }\n const body: Record<string, unknown> = { input: texts };\n if (opts.inputType !== undefined) body.input_type = opts.inputType;\n return client.request<Embeddings>(\"POST\", \"/v1/embeddings\", {\n body,\n cast: (raw) => new Embeddings(raw as Record<string, unknown>),\n });\n };\n}\n","/**\n * The `Pareta` client — one class (no sync/async split; JS is Promise-only).\n * A faithful port of the Python `_client.py` transport: header construction,\n * the retry policy, error mapping, and the `started`-flag streaming rule.\n */\n\nimport {\n APIConnectionError,\n APITimeoutError,\n APIStatusError,\n ParetaError,\n errorFromResponse,\n type ErrorDetail,\n} from \"./errors.js\";\nimport { parseSSE, type SSEEvent } from \"./streaming.js\";\nimport { VERSION } from \"./version.js\";\nimport { Chat } from \"./resources/chat.js\";\nimport { Models } from \"./resources/models.js\";\nimport { Tasks } from \"./resources/tasks.js\";\nimport { Evals } from \"./resources/evals.js\";\nimport { Auto } from \"./resources/auto.js\";\nimport { Audio } from \"./resources/audio.js\";\nimport { Images } from \"./resources/images.js\";\nimport { makeEmbeddings, makeRerank } from \"./resources/retrieval.js\";\nimport type { EmbeddingsFn, RerankFn } from \"./resources/retrieval.js\";\n\nexport const DEFAULT_BASE_URL = \"https://api.pareta.ai\";\n/** #174: uuid-ish token for Idempotency-Key (crypto.randomUUID when available). */\nfunction randomKey(): string {\n try {\n return (globalThis.crypto as { randomUUID?: () => string })?.randomUUID?.().replace(/-/g, \"\")\n ?? Math.random().toString(36).slice(2) + Date.now().toString(36);\n } catch {\n return Math.random().toString(36).slice(2) + Date.now().toString(36);\n }\n}\n\n// #174: long-doc auto requests legitimately run 60-180s server-side. A 60s\n// timeout made the SDK kill + retry them mid-flight; 600s matches the OpenAI\n// SDK default and the proxy's own upstream client.\nexport const DEFAULT_TIMEOUT_MS = 600_000;\nexport const DEFAULT_MAX_RETRIES = 2;\n\n// 409 here is the transient lock/contention class; Pareta's own stable-4xx 409\n// (resource conflict) just exhausts retries and still raises ConflictError, so\n// callers see the right error either way.\nconst RETRY_STATUSES = new Set([408, 409, 429, 500, 502, 503, 504]);\n\ntype FetchFn = typeof globalThis.fetch;\n\n/** A multipart file part (used by eval-set + blob uploads). */\nexport interface FilePart {\n filename: string;\n content: Blob | ArrayBuffer | ArrayBufferView | string;\n contentType?: string;\n}\n\nexport interface RequestOptions {\n body?: unknown;\n params?: Record<string, unknown> | undefined;\n files?: Record<string, FilePart>;\n data?: Record<string, string>;\n cast?: (raw: unknown) => unknown;\n /** Invoked with the response headers on success (before the body is cast) —\n * lets a caller read receipt headers (#164: X-Pareta-Billed + counterfactual). */\n onHeaders?: (headers: Headers) => void;\n}\n\nexport interface StreamOptions {\n body?: unknown;\n params?: Record<string, unknown> | undefined;\n cast?: (raw: unknown) => unknown;\n events?: boolean;\n}\n\n/** What resource namespaces depend on (lets them avoid importing the class). */\nexport interface Transport {\n request<T = unknown>(method: string, path: string, opts?: RequestOptions): Promise<T>;\n stream<T = unknown>(method: string, path: string, opts?: StreamOptions): AsyncGenerator<T>;\n}\n\nexport interface ParetaOptions {\n /** `pareta_sk_` secret key. Falls back to PARETA_API_KEY via `fromEnv`. */\n apiKey?: string;\n /** API base URL. Default https://api.pareta.ai (trailing slashes stripped). */\n baseURL?: string;\n /** Overall per-request timeout in ms. Default 60000. */\n timeout?: number;\n /** Max retries for transient failures. Default 2. */\n maxRetries?: number;\n /** Injected fetch implementation (for tests / Node-without-global-fetch). */\n fetch?: FetchFn;\n}\n\nfunction normalizeBaseURL(url: string): string {\n return url.replace(/\\/+$/, \"\");\n}\n\nexport class Pareta implements Transport {\n readonly apiKey: string;\n readonly baseURL: string;\n readonly timeout: number;\n readonly maxRetries: number;\n private readonly fetchImpl: FetchFn;\n\n // Resource namespaces (assigned in the constructor; filled in slice by slice).\n readonly chat: Chat;\n readonly models: Models;\n readonly tasks: Tasks;\n readonly evals: Evals;\n readonly auto: Auto;\n /** The Speech lanes — `pa.audio.transcriptions(...)` (ASR) + `pa.audio.speech(...)` (TTS). */\n readonly audio: Audio;\n /** Document reranking (the Retrieval precision lane) — `pa.rerank(query, docs, {topN})`. */\n readonly rerank: RerankFn;\n /** Text embeddings (the Retrieval recall lane) — `pa.embeddings(input, {inputType})`. */\n readonly embeddings: EmbeddingsFn;\n /** Image generation — `pa.images.generate(prompt, {size, seed})`, flat price per image. */\n readonly images: Images;\n\n constructor(options: ParetaOptions = {}) {\n if (!options.apiKey) {\n throw new ParetaError(\n \"missing API key. Pass apiKey: … or use Pareta.fromEnv() with PARETA_API_KEY \" +\n \"(mint a pareta_sk_ key in the dashboard).\",\n );\n }\n this.apiKey = options.apiKey;\n this.baseURL = normalizeBaseURL(options.baseURL || DEFAULT_BASE_URL);\n this.timeout = options.timeout ?? DEFAULT_TIMEOUT_MS;\n this.maxRetries = Math.max(0, Math.trunc(options.maxRetries ?? DEFAULT_MAX_RETRIES));\n const f = options.fetch ?? globalThis.fetch;\n if (typeof f !== \"function\") {\n throw new ParetaError(\"no fetch implementation found — pass fetch: … (Node < 18 needs a polyfill).\");\n }\n this.fetchImpl = options.fetch ? f : f.bind(globalThis);\n\n // Resources import only the Transport *type* from this module (erased at\n // runtime), so these static imports create no runtime circular dependency.\n this.chat = new Chat(this);\n this.models = new Models(this);\n this.tasks = new Tasks(this);\n this.evals = new Evals(this);\n this.auto = new Auto(this);\n this.audio = new Audio(this);\n this.rerank = makeRerank(this);\n this.embeddings = makeEmbeddings(this);\n this.images = new Images(this);\n }\n\n /** Build from PARETA_API_KEY (+ optional PARETA_BASE_URL); explicit opts win. */\n static fromEnv(options: ParetaOptions = {}): Pareta {\n const env: Record<string, string | undefined> =\n typeof process !== \"undefined\" && process.env ? process.env : {};\n return new Pareta({\n ...options,\n apiKey: options.apiKey || env.PARETA_API_KEY,\n baseURL: options.baseURL || env.PARETA_BASE_URL,\n });\n }\n\n // ── header / url / retry helpers ─────────────────────────────────────\n private headers(opts: { stream?: boolean; jsonBody?: boolean }): Record<string, string> {\n const h: Record<string, string> = {\n Authorization: `Bearer ${this.apiKey}`,\n Accept: opts.stream ? \"text/event-stream\" : \"application/json\",\n \"User-Agent\": `pareta-typescript/${VERSION}`,\n };\n // Multipart sets its own Content-Type (with boundary) — never set JSON there.\n if (opts.jsonBody) h[\"Content-Type\"] = \"application/json\";\n return h;\n }\n\n private shouldRetry(status: number): boolean {\n return RETRY_STATUSES.has(status);\n }\n\n /** Seconds to wait before retry `attempt` (0-indexed). Overridable in tests. */\n protected _backoff(attempt: number, retryAfter: number | null): number {\n if (retryAfter !== null && retryAfter >= 0) return Math.min(retryAfter, 30);\n return Math.min(0.5 * 2 ** attempt, 8) + Math.random() * 0.25;\n }\n\n /** Sleep `seconds`. Overridable in tests to skip real waits. */\n protected _sleep(seconds: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, seconds * 1000));\n }\n\n private retryAfterSeconds(res: Response): number | null {\n const val = res.headers.get(\"retry-after\");\n if (!val) return null;\n const n = Number.parseFloat(val);\n return Number.isNaN(n) ? null : n;\n }\n\n private buildURL(path: string, params?: Record<string, unknown>): string {\n let url = `${this.baseURL}${path}`;\n if (params) {\n const qs = new URLSearchParams();\n for (const [k, v] of Object.entries(params)) {\n if (v !== undefined && v !== null) qs.append(k, String(v));\n }\n const s = qs.toString();\n if (s) url += `?${s}`;\n }\n return url;\n }\n\n private buildFormData(files?: Record<string, FilePart>, data?: Record<string, string>): FormData {\n const fd = new FormData();\n if (data) for (const [k, v] of Object.entries(data)) fd.append(k, v);\n if (files) {\n for (const [k, f] of Object.entries(files)) {\n const blob =\n f.content instanceof Blob\n ? f.content\n : new Blob([f.content as BlobPart], f.contentType ? { type: f.contentType } : undefined);\n fd.append(k, blob, f.filename);\n }\n }\n return fd;\n }\n\n private wrapFetchError(e: unknown): APIConnectionError {\n const name = (e as { name?: string })?.name;\n if (name === \"TimeoutError\" || name === \"AbortError\") {\n return new APITimeoutError(undefined, { cause: e });\n }\n const msg = (e as { message?: string })?.message || \"connection error\";\n return new APIConnectionError(msg, { cause: e });\n }\n\n private async parseError(res: Response): Promise<APIStatusError> {\n const requestId = res.headers.get(\"x-request-id\");\n let detail: ErrorDetail;\n try {\n const body = (await res.json()) as unknown;\n detail =\n body && typeof body === \"object\" && !Array.isArray(body)\n ? ((body as Record<string, unknown>).detail as ErrorDetail)\n : (body as ErrorDetail);\n } catch {\n detail = undefined;\n }\n return errorFromResponse(res.status, { detail, requestId, response: res });\n }\n\n // ── transport ────────────────────────────────────────────────────────\n async request<T = unknown>(method: string, path: string, opts: RequestOptions = {}): Promise<T> {\n const { body, params, files, data, cast } = opts;\n const url = this.buildURL(path, params);\n const isMultipart = files != null || data != null;\n const headers = this.headers({ jsonBody: body != null && !isMultipart });\n // #174: ONE idempotency key per logical call, resent verbatim on every\n // auto-retry — the server collapses all attempts onto a single ledger\n // debit (a long-doc request can outlive a client timeout yet complete).\n if (method.toUpperCase() === \"POST\" && !headers[\"Idempotency-Key\"]) {\n headers[\"Idempotency-Key\"] = `pareta-js-${randomKey()}`;\n }\n let payload: BodyInit | undefined;\n if (isMultipart) {\n payload = this.buildFormData(files, data);\n } else if (body != null) {\n payload = JSON.stringify(body);\n }\n\n let lastExc: ParetaError | undefined;\n for (let attempt = 0; attempt <= this.maxRetries; attempt++) {\n let res: Response;\n try {\n res = await this.fetchImpl(url, {\n method,\n headers,\n body: payload,\n signal: AbortSignal.timeout(this.timeout),\n });\n } catch (e) {\n lastExc = this.wrapFetchError(e);\n if (attempt < this.maxRetries) {\n await this._sleep(this._backoff(attempt, null));\n continue;\n }\n break;\n }\n if (res.ok) {\n if (opts.onHeaders) opts.onHeaders(res.headers);\n const text = await res.text();\n const raw = text ? JSON.parse(text) : {};\n return (cast ? cast(raw) : raw) as T;\n }\n if (attempt < this.maxRetries && this.shouldRetry(res.status)) {\n await res.text().catch(() => undefined); // drain before retry\n await this._sleep(this._backoff(attempt, this.retryAfterSeconds(res)));\n continue;\n }\n throw await this.parseError(res);\n }\n throw lastExc as ParetaError;\n }\n\n /**\n * Yield parsed SSE objects. Retries ONLY the initial connect/handshake — once\n * bytes are flowing a mid-stream drop raises (re-issuing would re-run a\n * metered generation). `events:true` → `{event,data}`.\n */\n async *stream<T = unknown>(method: string, path: string, opts: StreamOptions = {}): AsyncGenerator<T> {\n const { body, params, cast, events } = opts;\n const url = this.buildURL(path, params);\n const headers = this.headers({ stream: true, jsonBody: body != null });\n // #174: stable key across handshake retries (see request()).\n if (method.toUpperCase() === \"POST\" && !headers[\"Idempotency-Key\"]) {\n headers[\"Idempotency-Key\"] = `pareta-js-${randomKey()}`;\n }\n const payload = body != null ? JSON.stringify(body) : undefined;\n\n for (let attempt = 0; attempt <= this.maxRetries; attempt++) {\n let started = false; // flips true once a 2xx body is flowing — no safe retry past here\n try {\n const res = await this.fetchImpl(url, {\n method,\n headers,\n body: payload,\n signal: AbortSignal.timeout(this.timeout),\n });\n if (!res.ok) {\n if (attempt < this.maxRetries && this.shouldRetry(res.status)) {\n await res.text().catch(() => undefined);\n await this._sleep(this._backoff(attempt, this.retryAfterSeconds(res)));\n continue;\n }\n throw await this.parseError(res);\n }\n if (!res.body) throw new APIConnectionError(\"response had no body to stream\");\n started = true;\n const reader = res.body.getReader();\n if (events) {\n for await (const ev of parseSSE(reader, { events: true })) {\n yield ev as unknown as T;\n }\n } else {\n for await (const obj of parseSSE(reader)) {\n yield (cast ? cast(obj) : obj) as T;\n }\n }\n return;\n } catch (e) {\n // A deliberate non-2xx (parseError) must propagate, not be wrapped/retried.\n if (e instanceof ParetaError && (e as APIStatusError).status !== undefined) throw e;\n const wrapped = this.wrapFetchError(e);\n // Mid-stream drop ALWAYS throws; only connect/handshake errors retry.\n if (started || attempt >= this.maxRetries) throw wrapped;\n await this._sleep(this._backoff(attempt, null));\n }\n }\n }\n}\n\nexport type { SSEEvent };\n"]}
|