Files
ttstd-infinite-canvas/canvas-agent/src/http-server.ts

54 lines
1.8 KiB
TypeScript

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<DreaminaHttpModuleOptions, "dreamina">;
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 };