› cavi-ai/
GitHub ↗

Verified example · TypeScript

Batch collector

examples/batch-collector.ts

@cavi-ai/api-clientv0.21.007f0ee45
TypeScript · complete source
import { ApiClientError, ApiClientErrorCode, ApiClientErrorType, type CapabilityClient, type RuntimeBatchResult } from "@cavi-ai/api-client";

export async function collectBatch(client: CapabilityClient, batchId: string) {
  const status = await client.getBatch(batchId);
  if (!status.ok) return status;
  const batch = status.data;
  if (!status.data.resultsAvailable) {
    const kind = ["completed", "failed", "cancelled", "expired"].includes(batch.status)
      ? "terminal" as const : "pending" as const;
    return { ok: true as const, source: status.source, data: { kind, batch } };
  }
  const results = await client.getBatchResults(batchId);
  if (!results.ok) return results;
  const items = new Map<string, RuntimeBatchResult>();
  for (const item of results.data) {
    if (!item.customId.trim() || items.has(item.customId)) {
      throw new ApiClientError("Batch results have missing or duplicate correlation IDs.", {
        type: ApiClientErrorType.Validation, code: ApiClientErrorCode.ProtocolMismatch,
        cause: { batch, customId: item.customId },
      });
    }
    items.set(item.customId, item);
  }
  return {
    ok: true as const,
    source: results.source,
    data: {
      kind: "results" as const,
      batch,
      items,
    },
  };
}

Package imports

Referenced by

Artifact provenance
Package
@cavi-ai/api-client@0.21.0
Release
v0.21.0
Commit
07f0ee45424c267278f7b0c89a7dcea4e2492cc1
Source
examples/batch-collector.ts
Tarball SHA-256
0924b5d3a7a40869bd44fedc47a9b8eb9844c2af1fd5c7ca77469d8b7c0b8558
Content SHA-256
24eff463c41582eaf5e70c58f42e5ae13bd12d02fa14ae2a886afa3abf5cdf48