import { CanvasSession } from "./canvas-session.js"; import type { LocalRuntimeConfig } from "./config.js"; import { createLocalRuntimeApp } from "./local-runtime.js"; import { startLocalRuntime } from "./local-runtime-host.js"; import { LocalRuntimeSessionManager } from "./local-runtime-session.js"; import { createCanvasAgentHttpModule, type CanvasAgentSession, } from "./modules/canvas-agent-http.js"; import { createDreaminaHttpModule, type DreaminaHttpModuleOptions, } from "./modules/dreamina-http.js"; export type CanvasAgentHttpDependencies = Pick; type CanvasAgentHttpOptions = { config: LocalRuntimeConfig; session: CanvasAgentSession; dependencies: CanvasAgentHttpDependencies; }; export function startHttpServer(options?: CanvasAgentHttpOptions) { if (!options) return startLocalRuntime(); return createHttpApp(options.config, options.session, options.dependencies); } export function createHttpApp( config: LocalRuntimeConfig, session: CanvasAgentSession = new CanvasSession(), dependencies: CanvasAgentHttpDependencies = {}, ) { const endpoint = config.url; const manager = new LocalRuntimeSessionManager({ endpoint, trustedOrigins: config.trustedWebOrigins, registrations: config.browserRegistrations, }); return createLocalRuntimeApp({ authority: new URL(endpoint).host, endpoint, version: "0.1.0", sessionManager: manager, modules: [ createCanvasAgentHttpModule(config, session), createDreaminaHttpModule({ ownerId: config.ownerId!, ...dependencies }), ], legacyMasterToken: config.token, legacyOrigins: config.origins ?? [], }); } export { createLocalRuntimeApp, startLocalRuntime };