archive-labs-sdk
v1.0.0
Published
Public TypeScript SDK for the Archive API
Maintainers
Readme
Archive Labs TypeScript SDK
TypeScript client for the Archive v1 API.
Install
npm install archive-labs-sdkUse
import { ArchiveClient } from "archive-labs-sdk";
const archive = new ArchiveClient({
apiKey: process.env.ARCHIVE_API_KEY!,
});
const result = await archive.impact.diff({
repositoryFullName: "acme/repo",
pullNumber: 42,
});
console.log(result.decision, result.riskLevel, result.summary);The client uses https://api.archivelabs.dev by default.
For local development:
const archive = new ArchiveClient({
apiKey: "al_pat_local_example",
baseUrl: "http://localhost:4000",
});Common Calls
await archive.checks.pr({
repositoryFullName: "acme/repo",
pullNumber: 42,
branch: "main",
});
await archive.owners.resolve({
repositoryFullName: "acme/repo",
paths: ["src/billing/invoices.ts"],
});
await archive.releases.risk({
repositoryFullName: "acme/repo",
tag: "v1.4.0",
previousTag: "v1.3.0",
});
await archive.context.search({
repositoryFullName: "acme/repo",
query: "What owns billing-api?",
});Errors
API errors are returned as ArchiveError and related subclasses.
import { ArchiveError } from "archive-labs-sdk";
try {
await archive.checks.pr({
repositoryFullName: "acme/repo",
pullNumber: 42,
});
} catch (error) {
if (error instanceof ArchiveError) {
console.error(error.status, error.code, error.requestId, error.message);
}
}Request Options
Per-call options support idempotency, timeouts, and retry overrides.
await archive.releases.summary(
{
repositoryFullName: "acme/repo",
tag: "v1.4.0",
},
{
idempotencyKey: "release-summary-v1.4.0",
timeoutMs: 45_000,
retry: { maxRetries: 3, initialDelayMs: 500 },
},
);