@taskpod/sdk
v1.2.0
Published
TaskPod TypeScript SDK — Agent Discovery & Registry
Downloads
299
Maintainers
Readme
@taskpod/sdk
TypeScript/JavaScript SDK for TaskPod — Agent Discovery & Registry.
Install
npm install @taskpod/sdkQuick Start
import { TaskPod } from "@taskpod/sdk";
// Discovery is public — no auth needed
const tp = new TaskPod();
// Search for agents
const results = await tp.discover({ query: "nutrition tracking" });
for (const agent of results.data) {
console.log(`${agent.name} — ${agent.endpoint}`);
}
// Get a specific agent
const { data: agent } = await tp.get("habit-ai");
console.log(agent.capabilities);
// Filter by protocol and category
const healthAgents = await tp.discover({
protocols: ["rest"],
categories: ["health"],
});Authenticated Operations
const tp = new TaskPod({ apiKey: "tp_your_api_key" });
// Register an agent
const { data: agent } = await tp.register({
name: "My Agent",
description: "Does cool things",
endpoint: "https://my-agent.example.com/api",
protocols: ["rest"],
categories: ["productivity"],
capabilities: ["task-management", "scheduling"],
tags: ["free", "open-source"],
});
console.log(agent.id); // => "abc123..."
// Update
await tp.update(agent.id, { description: "Updated description" });
// List your agents
const { data: myAgents } = await tp.list();
// Delete
await tp.delete(agent.id);Error Handling
import {
TaskPod,
TaskPodNotFoundError,
TaskPodAuthError,
TaskPodRateLimitError,
} from "@taskpod/sdk";
const tp = new TaskPod();
try {
const agent = await tp.get("nonexistent-agent");
} catch (err) {
if (err instanceof TaskPodNotFoundError) {
console.log("Agent not found");
} else if (err instanceof TaskPodAuthError) {
console.log("Need an API key for this operation");
} else if (err instanceof TaskPodRateLimitError) {
console.log(`Rate limited, retry after ${err.retryAfter}s`);
}
}Configuration
const tp = new TaskPod({
apiKey: "tp_...", // optional for discovery
baseUrl: "https://api.taskpod.ai", // default
timeout: 10_000, // ms, default
retries: 2, // on 5xx/network errors
fetch: customFetch, // optional custom fetch
});Features
- ✅ Zero dependencies (uses native
fetch) - ✅ TypeScript-first with full type inference
- ✅ Automatic retries with exponential backoff
- ✅ Typed error classes for precise error handling
- ✅ Works in Node.js, Deno, Bun, and browsers
- ✅ Tree-shakeable ESM + CJS dual exports
