/** * Scheduled inference stream function (3.0.0 foundation). * * The provider integration seam. The agent loop already calls a `streamFn` * before touching the provider. This wrapper keeps scheduling/admission * separate from provider protocol handling: * * request model inference * ↓ * shared scheduler admission (durable queue + slot lease) * ↓ * existing provider stream (streamSimple) — untouched * ↓ * llama.cpp * * Non-shared providers are passed through unchanged. The scheduler is * capability/resource driven; OpenRouter/cloud providers are not forced through * local-Qwen slot semantics. */ import type { StreamFn } from "@apholdings/jensen-agent-core"; import { type Context, type Model, streamSimple } from "@apholdings/jensen-ai"; import type { GovernanceService } from "../governance/service.js"; import { type SharedInferenceAdmissionPort } from "./admission-port.js"; import type { LocalSubagentRuntime } from "./runtime.js"; import type { SharedInferenceScheduler } from "./scheduler.js"; import type { InferencePriority, InferenceRequestDependency } from "./types.js"; export interface ScheduledStreamCorrelation { logicalAgentId: string; missionId?: string; assignmentId?: string; executionId?: string; priority?: InferencePriority; dependency?: InferenceRequestDependency; } export interface ScheduledStreamFnOptions { /** Admission authority (local or remote). When omitted, a local scheduler is wrapped. */ admission?: SharedInferenceAdmissionPort; /** Backward-compatible local scheduler (wrapped into a local admission client). */ scheduler?: SharedInferenceScheduler; runtime?: LocalSubagentRuntime; /** Provider delegate (default streamSimple). */ delegate?: typeof streamSimple; /** Resolve logical-agent + mission/assignment/execution correlation. */ getCorrelation?: (model: Model, context: Context, options: Record) => ScheduledStreamCorrelation; /** Metadata-only input-token estimate (never the prompt). */ estimateInputTokens?: (context: Context) => number | undefined; /** Optional host/resource-pressure check used to park before admission. */ resourcePressure?: (model: Model, context: Context) => boolean | Promise; /** Wait for a pressure change; the default yields to the event loop. */ waitForResourcePressure?: () => Promise; /** Optional Governance admission/accounting authority. */ governance?: GovernanceService; } export declare function createScheduledStreamFn(options: ScheduledStreamFnOptions): StreamFn; //# sourceMappingURL=stream-fn.d.ts.map