/** * Public package exports — pi-smart-router. * * Exposes the router factory (T022) and pi lifecycle hook registrar (T021). * Full pi integration uses `.pi/extensions/smart-router/`; library embedders * route via `dispatch.dispatch()` after calling `register(hooks)`. */ import type { ModelProfile, RoutingDecision } from './domain/types/index.js'; import { type FleetCatalog } from './config/models-loader.js'; import { loadRoutingClusters, clusterReasonCode, type TextEmbedder } from './config/routing-clusters-loader.js'; import { GatewayDispatch, type GatewayDispatchOptions } from './infrastructure/gateway/gateway-dispatch.js'; import { LifecycleHookState, type PiRouterMiddleware, type PiExtensionHooks } from './api/middleware/pi-router-middleware.js'; /** Package identifier for diagnostics and telemetry. */ export declare const PACKAGE_NAME: "pi-smart-router"; export interface RouterFactoryOptions { readonly modelsPath?: string; } export interface RouterHandle { readonly version: string; readonly middleware: PiRouterMiddleware; readonly dispatch: GatewayDispatch; readonly fleet: readonly ModelProfile[]; readonly register: (hooks: PiExtensionHooks) => void; } /** * Create a router handle from the default fleet catalog (T022). * * Concurrency contract (SP-230, #141): the underlying `RouterPipeline` * serializes concurrent `route()` calls (single-flight) because per-route * transient state lives on instance fields while stages run. A shared handle * is therefore safe under overlapping requests — a concurrent caller queues * behind the in-flight route for at most one routing latency, and routing * policy outcomes are unchanged. Create separate handles for parallel * routing throughput. */ export declare function createRouter(options?: RouterFactoryOptions): RouterHandle; export declare function createRouterFromCatalog(catalog: FleetCatalog): RouterHandle; export interface CreateRouterFromFleetOptions extends GatewayDispatchOptions { readonly lifecycleHookState?: LifecycleHookState; } export declare function createRouterFromFleet(fleet: ModelProfile[], options?: CreateRouterFromFleetOptions): RouterHandle; export type { RoutingDecision, ModelProfile }; export { loadRoutingClusters, clusterReasonCode, }; export type { TextEmbedder }; export type { RoutingClusterCatalog } from './domain/types/index.js'; export type { PiRouterMiddleware, PiRouterMiddlewareOptions, PiExtensionHooks, PiExtensionContext, PiProviderRequestEvent, PiContextEvent, PiModelSelectEvent, PiSessionManager, LifecycleFlags, } from './api/middleware/pi-router-middleware.js'; export { createPiRouterMiddleware, LifecycleHookState } from './api/middleware/pi-router-middleware.js'; export type { GatewayDispatchOptions } from './infrastructure/gateway/gateway-dispatch.js'; export type { PipelineOptions } from './domain/pipeline/router-pipeline.js'; //# sourceMappingURL=index.d.ts.map