Libraries
Talk to a triage server from your own Effect app.
Triage is built from Effect v4 libraries, published to npm and JSR. They work under Bun and Node. Early development: the API will change before 1.0.
| Package | Use it to |
|---|---|
@timmo001/effect-triage-client |
Talk to a triage server over its HTTP API |
@timmo001/effect-triage |
Use the event, issue and API schemas every part of triage shares |
The CLI uses the same API, so anything it does against a server, your app can do too.
Client
bun add @timmo001/effect-triage-client effect
effect is a peer dependency, so install the Effect v4 version your app already uses.
TriageClient is an Effect service built on effect/http-api. TriageClient.layer({ url, token }) makes a typed client for one server, authenticating with a host, worker or admin token. It retries transient failures a few times.
import { TriageClient } from "@timmo001/effect-triage-client";
import { Console, Effect, Layer, Redacted } from "effect";
import { FetchHttpClient } from "effect/http";
const program = Effect.gen(function* () {
const client = yield* TriageClient;
const issues = yield* client.issues.list({ query: { limit: 10 } });
for (const issue of issues) {
yield* Console.log(`${issue.state} ${issue.count} ${issue.title}`);
}
});
const client = TriageClient.layer({
url: "https://triage.example.com",
token: Redacted.make(process.env.TRIAGE_ADMIN_TOKEN ?? ""),
}).pipe(Layer.provide(FetchHttpClient.layer));
program.pipe(Effect.provide(client), Effect.runPromise);
API
| Group | Token | Endpoints |
|---|---|---|
ingest |
Host | Send events |
issues |
Admin | List issues, get one with its events, and set its state |
work |
Worker | Fetch issues to decide on or suggest for, and send back answers |
tokens |
Admin | List, add and remove host, worker and admin tokens |
system |
None | Health |
The server serves its OpenAPI document at /api/openapi.json.