Search assets, operations, jobs, agents, skills, and approvals across every connected venue, or run an action.
A live walkthrough of how the SDK executes work on a venue.
This demo runs a real operation on the connected venue using the @covia/covia-sdk TypeScript SDK, directly from your browser — the same calls a script or backend service would make. Every execution on a venue is recorded as a job, so the demo walks the full lifecycle: resolve an operation, invoke it, watch the job run, and read its result.
The operation is the venue's built-in v/test/ops/delay, told to wait and then run v/test/ops/echo with your message. Echo returns its input unchanged — when your message comes back, it has made the round trip browser → venue → adapter → job record → browser.
Message to echo
Delay
Connect to a venue to run the demo.
The SDK looks the operation up in the venue's public catalogue with a job-free read (venue.workspace.read → GET /api/v1/values/read). Browsing and reading never create jobs — only running things does.
const op = await resolveOperationByAddress(venue, "v/test/ops/delay");
op.invoke(input) posts the invocation to the venue. The venue persists a job record in its lattice — a durable, auditable account of who ran what, with which input — and returns a Job handle straight away while the work continues on the venue.
const job = await op.invoke({
operation: "v/test/ops/echo", // what to run…
delay: 2000, // …after this many ms
input: { message: "Hello, Covia!" },
});The handle polls the venue until the job reaches a terminal state. The demo polls in a loop so you can watch each status transition arrive; if you don't need live updates, await job.wait() or await job.result() does the same with exponential backoff.
while (!job.isFinished) {
await job.refresh(); // GET /api/v1/jobs/{id}
}Once the status is COMPLETE, the output is available on the job — and stays available: the job record persists on the venue, so the run can be revisited on the Jobs page later.
const result = job.output;