UNPKG

@juspay/neurolink

Version:

The pipe layer of an AI nervous system: one interface connecting provider neurons to your application, across three inference types — generate, stream and decide. `decide` returns typed, calibrated judgements from a non-generative model (~400ms, ~$0.00002

86 lines (85 loc) • 3.27 kB
/** * Task-checklist primitive (TodoWrite-style) — types. * * A long-running agent needs a durable, model-visible list of what this run * must finish. The checklist lives on the SESSION, outside the message list, * so summarization/compaction can rewrite the conversation without touching * it, and every tool call returns the whole list so the model re-anchors for * free after a compaction. * * Naming: the scheduler in `task.ts` already owns `Task`, `TaskStatus`, * `TaskDefinition`, `TaskStore`, `TaskRunResult` and `TasksFile`, so every * type here carries the `Checklist` prefix (Critical Rule 9). */ /** Lifecycle of one checklist item. `closed` means "not done, and here is why". */ export type ChecklistItemStatus = "pending" | "in_progress" | "done" | "closed"; export type ChecklistItem = { /** "t1", "t2", … — assigned by the engine, never by the model. */ id: string; title: string; status: ChecklistItemStatus; /** Result note, or the REASON an item was closed unfinished. */ note?: string; createdAt: number; updatedAt: number; }; /** Everything one session's checklist holds. Never stored in messages. */ export type ChecklistState = { sessionId: string; items: ChecklistItem[]; updatedAt: number; }; export type ChecklistCreateInput = { titles: string[]; }; export type ChecklistUpdateInput = { id: string; status: ChecklistItemStatus; note?: string; }; /** * Background delegates outstanding for a session. Populated by the async * delegation primitive; zero while that primitive is unused. */ export type ChecklistDelegateCounts = { pending: number; ready: number; }; /** Supplies {@link ChecklistDelegateCounts} to every checklist tool result. */ export type ChecklistDelegateCountsSource = (sessionId: string) => ChecklistDelegateCounts; /** * Background commands outstanding for a session. Populated by the * background-command primitive; zero while that primitive is unused. */ export type ChecklistCommandCounts = { running: number; finished: number; }; /** Supplies {@link ChecklistCommandCounts} to every checklist tool result. */ export type ChecklistCommandCountsSource = (sessionId: string) => ChecklistCommandCounts; /** * Every `tasks_*` tool returns this — the model re-anchors on the full list * on each call, which is what makes the checklist survive compaction with no * re-injection machinery. */ export type ChecklistToolResult = { items: ChecklistItem[]; counts: Record<ChecklistItemStatus, number>; /** Background delegates not yet collected (0 when delegation is unused). */ delegatesPending: number; delegatesReady: number; /** * Background commands still running (0 when the command primitive is * unused). Carried here for the same reason the delegate counters are: the * model learns "the build finished" from any `tasks_list`, with no polling * and no change to the core loop. */ commandsRunning: number; /** Background commands that have settled and can be read. */ commandsFinished: number; }; /** Refusal shape shared with the agent tool registrar: recovery text included. */ export type ChecklistRefusal = { isError: true; error: string; };