import { createAssetService } from './mindspace-assets.mjs'; import { createConversationPackageRegistry } from './mindspace-conversation-package-registry.mjs'; import { createConversationPackageStore } from './mindspace-conversation-package-store.mjs'; import { createCleanupService } from './mindspace-cleanup.mjs'; import { createAgentJobService } from './mindspace-agent-jobs.mjs'; import { createAssetAgentService } from './mindspace-asset-agent.mjs'; import { createPageLiveEditService } from './mindspace-page-live-edit.mjs'; import { createPageService } from './mindspace-pages.mjs'; import { createPageSyncService } from './mindspace-page-sync-service.mjs'; import { createPublicationService } from './mindspace-publications.mjs'; import { createMindSpaceLocalRuntime } from './mindspace-runtime-config.mjs'; export function createMindSpaceLocalRuntimeServices({ pool, h5Root, env = process.env, maxFileBytes, publicPageLimit, resolveUserIdForAgentSession, resolveWorkspaceRoot, conversationPackageBackfill, conversationPackagePublicHtmlHydrator, logger = console, syncWorkspaceAssets = null, } = {}) { let conversationPackageRegistry = null; const runtime = createMindSpaceLocalRuntime({ h5Root, env, logger, conversationPackageBackfill: ({ user, sessionId }) => conversationPackageBackfill?.({ user, sessionId, storageRoot: runtime.storageRoot, registry: conversationPackageRegistry, }), conversationPackagePublicHtmlHydrator, }); conversationPackageRegistry = createConversationPackageRegistry({ store: createConversationPackageStore(pool), service: runtime.serviceFacade, }); const assetService = createAssetService(pool, { h5Root, storageRoot: runtime.storageRoot, maxFileBytes, conversationPackageRegistry, }); const pageService = createPageService(pool, { h5Root, storageRoot: runtime.storageRoot, conversationPackageRegistry, }); const pageSyncService = createPageSyncService({ pool, pageService, assetService, h5Root, syncWorkspaceAssets, logger, }); const publicationService = createPublicationService(pool, { h5Root, storageRoot: runtime.storageRoot, publicPageLimit, conversationPackageRegistry, }); const cleanupService = createCleanupService(pool, { storageRoot: runtime.storageRoot, h5Root, }); const agentJobService = createAgentJobService(pool, { pageService, storageRoot: runtime.storageRoot, maxOutputBytes: maxFileBytes, }); const pageLiveEditService = createPageLiveEditService({ pageService, resolveUserIdForAgentSession, }); const assetAgentService = createAssetAgentService({ assetService, resolveUserIdForAgentSession, resolveWorkspaceRoot, }); return { ...runtime, conversationPackageRegistry, assetService, pageService, pageSyncService, publicationService, cleanupService, agentJobService, pageLiveEditService, assetAgentService, }; }