Verified example · TypeScript
Batch collector
examples/batch-collector.ts
@cavi-ai/api-clientv0.21.007f0ee45
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