@prudra/vault
v0.2.2
Published
Prudra vault SDK — Async Agent Workspaces: create, write, seal, subscribe
Readme
@prudra/vault
Prudra vault SDK — Async Agent Workspaces. create vaults, upload files and documents, emit events, seal, persist, and subscribe over SSE.
Installation
npm install @prudra/vaultPrerequisites
initialise() from @prudra/core is required for Vault.create() and Vault.resume(). Vault.open() does not require initialise() — it uses a short-lived access token only.
1 — Creating and writing (server-side)
import { initialise } from '@prudra/core';
import { Vault } from '@prudra/vault';
initialise({ apiKey: process.env.PRUDRA_API_KEY! });
const vault = await Vault.create({ description: 'Analysis job', ttl: '24h' });
// Return 202 to the client immediately, then run background work:
await vault.addDocument({ score: 0.95 }, 'Result');
await vault.emit('step.complete', { step: 1 });
await vault.seal('Finished');2 — Resuming a background job
const vault = await Vault.resume('vlt_abc123');
await vault.getManifest();3 — Reading (calling agent)
import { Vault } from '@prudra/vault';
const vault = await Vault.open('vlt_abc', { accessToken: token });
vault.on('vault.sealed', (data) => {
console.log(data);
});
for await (const ev of vault.stream()) {
if (ev.type === 'vault.sealed') break;
}
const manifest = await vault.getManifest();4 — Persisting and quota
import { PROBLEM_TYPES, PrudraConflictError } from '@prudra/core';
import { Vault } from '@prudra/vault';
try {
await vault.persist();
} catch (e) {
if (e instanceof PrudraConflictError && e.type === PROBLEM_TYPES.VAULT_QUOTA_EXCEEDED) {
// handle at-plan limit
}
}vaultMiddleware() lives in @prudra/express (Step 4). For background jobs use Vault.create() / Vault.resume() directly.
File and document URLs returned by the API are always under https://assets.prudra.dev/....
Further documentation: docs.prudra.dev/docs/vault
