import {
createVaultkitClient,
AuthenticationError,
ConnectionError,
ToolError,
ApprovalError,
} from "@vaultkit/ai-sdk";
export async function runAgent(prompt: string) {
const vaultkit = createVaultkitClient({
apiKey: process.env.VAULTKIT_API_KEY!,
userId: "customer-123",
vaultId: process.env.VAULTKIT_VAULT_ID,
});
try {
await vaultkit.connect();
const response = await agentRunner({ prompt, tools: vaultkit.tools });
return { ok: true, data: response };
} catch (error) {
if (error instanceof AuthenticationError) {
return { ok: false, reason: "invalid-credentials" };
}
if (error instanceof ApprovalError) {
queueApprovalNotification(error);
return { ok: false, reason: "awaiting-approval" };
}
if (error instanceof ConnectionError) {
scheduleRetry({ prompt });
return { ok: false, reason: "retrying" };
}
if (error instanceof ToolError) {
return { ok: false, reason: "tool-failure", details: error.message };
}
throw error; // bubble up unexpected failures
} finally {
await vaultkit.disconnect();
}
}