import { type RequestListener, type Server } from 'node:http'; import { type InitOptions } from '../commands/init.js'; import { type PathEnvironment } from '../config/paths.js'; import type { SqliteDatabase } from '../db/adapter.js'; import { type InstanceLock, type InstanceLockOptions, type PidLiveness } from './instance-lock.js'; import { type CreateRuntimeDescriptorInput, type RuntimeDescriptor, type RuntimeDescriptorView } from './runtime-descriptor.js'; import { type WriteQueueState } from './write-queue.js'; import type { V1RouteHandler } from './router.js'; import { type EmbeddingRuntimeOptions } from '../embedding/runtime.js'; import { type EmbeddingDatabaseOpener } from '../embedding/backend.js'; import { type EmbeddingWorker } from '../embedding/worker.js'; import type { EmbeddingProvider, EmbeddingRuntime, EmbeddingConfig, VectorSearchBackend } from '../embedding/types.js'; export type DatabaseOpener = EmbeddingDatabaseOpener; export type DatabaseInitializer = (options: InitOptions) => unknown | PromiseLike; export type HttpServerFactory = (listener: RequestListener) => Server; export type InstanceLockAcquirer = (databasePath: string, options: InstanceLockOptions) => InstanceLock | PromiseLike; export type RuntimeDescriptorFactory = (input: CreateRuntimeDescriptorInput) => RuntimeDescriptor; export type RuntimeDescriptorReader = (filePath: string) => RuntimeDescriptor | undefined | PromiseLike; export type RuntimeDescriptorWriter = (filePath: string, descriptor: RuntimeDescriptor) => void | PromiseLike; export type RuntimeDescriptorRemover = (filePath: string, expectedInstanceId: string) => boolean | PromiseLike; export interface HttpApplicationContext { readonly database: SqliteDatabase; readonly embeddingRuntime: EmbeddingRuntime; enqueueWrite(operation: () => T | PromiseLike): Promise; createAuthenticatedApp(v1?: V1RouteHandler): RequestListener; } export type HttpApplicationFactory = (context: HttpApplicationContext) => RequestListener; export type EmbeddingRuntimeFactory = (database: SqliteDatabase, config: EmbeddingConfig | undefined, options: EmbeddingRuntimeOptions) => EmbeddingRuntime | PromiseLike; export type EmbeddingWorkerFactory = (runtime: EmbeddingRuntime) => EmbeddingWorker; export interface HttpServerDependencies { readonly initializeDatabase?: DatabaseInitializer; readonly openDatabase?: DatabaseOpener; readonly createServer?: HttpServerFactory; readonly acquireInstanceLock?: InstanceLockAcquirer; readonly isPidAlive?: PidLiveness; readonly createRuntimeDescriptor?: RuntimeDescriptorFactory; readonly readRuntimeDescriptor?: RuntimeDescriptorReader; readonly writeRuntimeDescriptor?: RuntimeDescriptorWriter; readonly removeRuntimeDescriptor?: RuntimeDescriptorRemover; readonly createEmbeddingRuntime?: EmbeddingRuntimeFactory; readonly createEmbeddingWorker?: EmbeddingWorkerFactory; readonly embeddingProvider?: EmbeddingProvider; readonly embeddingBackend?: VectorSearchBackend; } export interface HttpServerOptions extends PathEnvironment { readonly databasePath?: string; readonly migrationsDirectory?: string; readonly descriptorPath?: string; readonly runtimeDirectory?: string; readonly host?: string; readonly port?: number; readonly queueCapacity?: number; readonly pid?: number; readonly instanceId?: string; readonly startedAt?: string; readonly capabilityToken?: string; readonly app?: RequestListener; readonly v1?: V1RouteHandler; readonly applicationFactory?: HttpApplicationFactory; readonly dependencies?: HttpServerDependencies; readonly initializeDatabase?: DatabaseInitializer; readonly openDatabase?: DatabaseOpener; readonly createServer?: HttpServerFactory; readonly acquireInstanceLock?: InstanceLockAcquirer; readonly isPidAlive?: PidLiveness; readonly createRuntimeDescriptor?: RuntimeDescriptorFactory; readonly readRuntimeDescriptor?: RuntimeDescriptorReader; readonly writeRuntimeDescriptor?: RuntimeDescriptorWriter; readonly removeRuntimeDescriptor?: RuntimeDescriptorRemover; readonly embeddingConfig?: EmbeddingConfig; readonly createEmbeddingRuntime?: EmbeddingRuntimeFactory; readonly createEmbeddingWorker?: EmbeddingWorkerFactory; readonly embeddingProvider?: EmbeddingProvider; readonly embeddingBackend?: VectorSearchBackend; } export interface HttpServerHandle { readonly server: Server; readonly url: string; readonly descriptor: RuntimeDescriptorView; readonly runtimeDescriptor: RuntimeDescriptorView; readonly queueState: WriteQueueState; enqueueWrite(operation: () => T | PromiseLike): Promise; close(): Promise; } export declare function startHttpServer(options?: HttpServerOptions): Promise; //# sourceMappingURL=http.d.ts.map