UNPKG

@sema-agent/core

Version:

Stateless, task-oriented AI agent core

23 lines (22 loc) • 1.5 kB
import { Type } from "typebox"; import type { PulledInbox } from "./peer-session-drain.js"; export declare const READ_INBOX_TOOL_NAME = "ReadInbox"; /** The most records one call may ask for (a bound on one tool result, not on the box). */ export declare const READ_INBOX_MAX_LIMIT = 50; /** * #1036 — the tool's OWN page bound, in rendered characters. A record settles only when its frame is * present in this result as committed, so a result large enough for a size transformation to replace * with a head/tail preview would hand nothing over (the face declares `offload: false` for the same * reason, belt to this suspender — a deployment may set a global threshold below any default). * Records that do not fit stay in the box and are reported as still waiting, exactly as they are when * the per-pass count budget runs out; one oversized record is always handed over alone rather than * parked forever. Sized well under the smallest first-party offload floor. */ export declare const READ_INBOX_RESULT_BUDGET_CHARS = 20000; export interface ReadInboxToolOptions { /** The bound drain's pull face, read LATE (the drain binds after the roster is minted). Absent ⇒ no box. */ pull: () => ((limit?: number, toolCallId?: string, charBudget?: number) => Promise<PulledInbox>) | undefined; } export declare function createReadInboxTool(opts: ReadInboxToolOptions): import("../internal/harness-types.js").AgentTool<Type.TObject<{ limit: Type.TOptional<Type.TInteger>; }>, unknown>;