tracia 0.4.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -64,7 +64,8 @@ declare enum LLMProvider {
64
64
  OPENAI = "openai",
65
65
  ANTHROPIC = "anthropic",
66
66
  GOOGLE = "google",
67
- AMAZON_BEDROCK = "amazon_bedrock"
67
+ AMAZON_BEDROCK = "amazon_bedrock",
68
+ VOYAGE = "voyage"
68
69
  }
69
70
  declare enum SpanKind {
70
71
  ROOT = "ROOT",
package/dist/index.d.ts CHANGED
@@ -64,7 +64,8 @@ declare enum LLMProvider {
64
64
  OPENAI = "openai",
65
65
  ANTHROPIC = "anthropic",
66
66
  GOOGLE = "google",
67
- AMAZON_BEDROCK = "amazon_bedrock"
67
+ AMAZON_BEDROCK = "amazon_bedrock",
68
+ VOYAGE = "voyage"
68
69
  }
69
70
  declare enum SpanKind {
70
71
  ROOT = "ROOT",
package/dist/index.js CHANGED
@@ -74,6 +74,7 @@ var LLMProvider = /* @__PURE__ */ ((LLMProvider2) => {
74
74
  LLMProvider2["ANTHROPIC"] = "anthropic";
75
75
  LLMProvider2["GOOGLE"] = "google";
76
76
  LLMProvider2["AMAZON_BEDROCK"] = "amazon_bedrock";
77
+ LLMProvider2["VOYAGE"] = "voyage";
77
78
  return LLMProvider2;
78
79
  })(LLMProvider || {});
79
80
  var SpanKind = /* @__PURE__ */ ((SpanKind2) => {
@@ -84,7 +85,7 @@ var SpanKind = /* @__PURE__ */ ((SpanKind2) => {
84
85
  })(SpanKind || {});
85
86
 
86
87
  // src/client.ts
87
- var SDK_VERSION = "0.4.0";
88
+ var SDK_VERSION = "0.4.1";
88
89
  var DEFAULT_TIMEOUT_MS = 12e4;
89
90
  function mapApiErrorCodeToTraciaErrorCode(apiCode) {
90
91
  const codeMap = {
@@ -358,7 +359,14 @@ var MODEL_TO_PROVIDER = {
358
359
  "text-embedding-004": "google" /* GOOGLE */,
359
360
  // Amazon Bedrock - Embedding models
360
361
  "amazon.titan-embed-text-v2:0": "amazon_bedrock" /* AMAZON_BEDROCK */,
361
- "cohere.embed-english-v3": "amazon_bedrock" /* AMAZON_BEDROCK */
362
+ "cohere.embed-english-v3": "amazon_bedrock" /* AMAZON_BEDROCK */,
363
+ // Voyage - Embedding models
364
+ "voyage-3": "voyage" /* VOYAGE */,
365
+ "voyage-3-large": "voyage" /* VOYAGE */,
366
+ "voyage-3-lite": "voyage" /* VOYAGE */,
367
+ "voyage-code-3": "voyage" /* VOYAGE */,
368
+ "voyage-finance-2": "voyage" /* VOYAGE */,
369
+ "voyage-law-2": "voyage" /* VOYAGE */
362
370
  };
363
371
  function getProviderForModel(modelId) {
364
372
  return MODEL_TO_PROVIDER[modelId];
@@ -493,6 +501,9 @@ function resolveProvider(model, explicitProvider) {
493
501
  if (model.startsWith("gemini-")) {
494
502
  return "google" /* GOOGLE */;
495
503
  }
504
+ if (model.startsWith("voyage-")) {
505
+ return "voyage" /* VOYAGE */;
506
+ }
496
507
  throw new TraciaError(
497
508
  "UNSUPPORTED_MODEL" /* UNSUPPORTED_MODEL */,
498
509
  `Cannot determine provider for model: ${model}. Specify provider explicitly.`
@@ -521,6 +532,11 @@ async function getLanguageModel(provider, model, apiKey) {
521
532
  const bedrock = createAmazonBedrock({ region });
522
533
  return bedrock(applyBedrockRegionPrefix(model, region));
523
534
  }
535
+ case "voyage" /* VOYAGE */:
536
+ throw new TraciaError(
537
+ "UNSUPPORTED_MODEL" /* UNSUPPORTED_MODEL */,
538
+ "Voyage is an embedding-only provider. Use runEmbedding() instead of runLocal()."
539
+ );
524
540
  default:
525
541
  throw new TraciaError(
526
542
  "UNSUPPORTED_MODEL" /* UNSUPPORTED_MODEL */,
@@ -558,10 +574,44 @@ async function getEmbeddingModel(provider, model, apiKey) {
558
574
  );
559
575
  }
560
576
  }
577
+ async function callVoyageEmbedding(input, model, apiKey, timeoutMs) {
578
+ const response = await fetch("https://api.voyageai.com/v1/embeddings", {
579
+ method: "POST",
580
+ headers: {
581
+ "Content-Type": "application/json",
582
+ Authorization: `Bearer ${apiKey}`
583
+ },
584
+ body: JSON.stringify({ input, model }),
585
+ signal: timeoutMs ? AbortSignal.timeout(timeoutMs) : void 0
586
+ });
587
+ if (!response.ok) {
588
+ const body = await response.text();
589
+ throw new TraciaError(
590
+ "PROVIDER_ERROR" /* PROVIDER_ERROR */,
591
+ `Voyage AI API error ${response.status}: ${sanitizeErrorMessage(body)}`
592
+ );
593
+ }
594
+ const data = await response.json();
595
+ const embeddings = data.data.sort((a, b) => a.index - b.index).map((item) => ({ values: item.embedding, index: item.index }));
596
+ return {
597
+ embeddings,
598
+ totalTokens: data.usage?.total_tokens ?? 0,
599
+ provider: "voyage" /* VOYAGE */
600
+ };
601
+ }
561
602
  async function embedText(options) {
562
603
  const provider = resolveProvider(options.model, options.provider);
563
- const embeddingModel = await getEmbeddingModel(provider, options.model, options.apiKey);
564
604
  const inputs = Array.isArray(options.input) ? options.input : [options.input];
605
+ if (provider === "voyage" /* VOYAGE */) {
606
+ if (options.dimensions) {
607
+ throw new TraciaError(
608
+ "UNSUPPORTED_MODEL" /* UNSUPPORTED_MODEL */,
609
+ "Voyage AI does not support custom embedding dimensions"
610
+ );
611
+ }
612
+ return callVoyageEmbedding(inputs, options.model, options.apiKey, options.timeoutMs);
613
+ }
614
+ const embeddingModel = await getEmbeddingModel(provider, options.model, options.apiKey);
565
615
  try {
566
616
  const { embedMany } = await loadAISdk();
567
617
  const providerOptions = {};
@@ -1175,7 +1225,8 @@ var ENV_VAR_MAP = {
1175
1225
  ["openai" /* OPENAI */]: "OPENAI_API_KEY",
1176
1226
  ["anthropic" /* ANTHROPIC */]: "ANTHROPIC_API_KEY",
1177
1227
  ["google" /* GOOGLE */]: "GOOGLE_API_KEY",
1178
- ["amazon_bedrock" /* AMAZON_BEDROCK */]: "BEDROCK_API_KEY"
1228
+ ["amazon_bedrock" /* AMAZON_BEDROCK */]: "BEDROCK_API_KEY",
1229
+ ["voyage" /* VOYAGE */]: "VOYAGE_API_KEY"
1179
1230
  };
1180
1231
  function convertResponsesItemToMessage(item) {
1181
1232
  if ("role" in item && (item.role === "developer" || item.role === "user")) {