import type { ThinkingLevel } from "@earendil-works/pi-agent-core"; import { type Api, type Model } from "@earendil-works/pi-ai"; import { type TSchema } from "typebox"; import type { MikanModels } from "./models.js"; import type { SessionEntry } from "../sessions/types.js"; import type { MikanHarnessTool, MikanToolContext, SubagentProfile, SubagentRunOutput, SubagentRunRequest, SubagentRunResult, SubagentUsageSink } from "./types.js"; export declare const DEFAULT_SUBAGENT_BUDGET: { readonly maxTurns: 100; readonly maxCostUsd: 10; readonly maxDurationMs: number; }; export declare const SUBAGENT_ABORT_GRACE_MS = 100; interface RunSubagentOptions { request: SubagentRunRequest; defaultModel: Model; thinkingLevel: ThinkingLevel; models: MikanModels; availableTools: MikanHarnessTool[]; profiles?: ReadonlyMap; toolContext?: MikanToolContext; slots?: SubagentSlotPool; parentEntries?: SessionEntry[]; onUsage?: SubagentUsageSink; onActivity?: (activity: string) => void; } export declare function runSubagent(options: RunSubagentOptions): Promise>>; export declare const DEFAULT_GLOBAL_SUBAGENT_SLOTS = 8; export declare class SubagentSlotPool { readonly capacity: number; private held; private waiters; constructor(capacity: number); get inFlight(): number; acquire(signal?: AbortSignal): Promise<() => void>; private releaser; } export declare function unboundedSlotPool(): SubagentSlotPool; export {}; //# sourceMappingURL=subagent.d.ts.map