UNPKG

@deep-assistant/agent

Version:

A minimal, public domain AI CLI agent compatible with OpenCode's JSON interface. Bun-only runtime.

76 lines (69 loc) 1.45 kB
import { Bus } from "../bus" import { Instance } from "../project/instance" import z from "zod" export namespace SessionStatus { export const Info = z .union([ z.object({ type: z.literal("idle"), }), z.object({ type: z.literal("retry"), attempt: z.number(), message: z.string(), next: z.number(), }), z.object({ type: z.literal("busy"), }), ]) .meta({ ref: "SessionStatus", }) export type Info = z.infer<typeof Info> export const Event = { Status: Bus.event( "session.status", z.object({ sessionID: z.string(), status: Info, }), ), // deprecated Idle: Bus.event( "session.idle", z.object({ sessionID: z.string(), }), ), } const state = Instance.state(() => { const data: Record<string, Info> = {} return data }) export function get(sessionID: string) { return ( state()[sessionID] ?? { type: "idle", } ) } export function list() { return Object.values(state()) } export function set(sessionID: string, status: Info) { Bus.publish(Event.Status, { sessionID, status, }) if (status.type === "idle") { // deprecated Bus.publish(Event.Idle, { sessionID, }) delete state()[sessionID] return } state()[sessionID] = status } }