Files
memind/mindspace-local-runtime-services.mjs
2026-07-27 15:34:35 +08:00

170 lines
5.1 KiB
JavaScript

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 { createMindSpaceChatSaveService } from './mindspace-chat-save-service.mjs';
import { createMindSpaceConversationArtifactService } from './mindspace-conversation-package-artifact-service.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 { createMindSpacePublicFinishService } from './mindspace-public-finish-service.mjs';
import { createMindSpaceLocalRuntime } from './mindspace-runtime-config.mjs';
import { createMindSpaceWorkspacePublicationDeliveryService } from './mindspace-workspace-publication-delivery-service.mjs';
import { createMindSpaceWorkspaceToolService } from './mindspace-workspace-tool-service.mjs';
import { createWorkspacePageDeliverService } from './mindspace-workspace-page-deliver.mjs';
import {
ensurePageDataHtmlPagesBound,
} from './page-data-workspace-ensure.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 chatSaveService = createMindSpaceChatSaveService({
pool,
h5Root,
storageRoot: runtime.storageRoot,
});
const conversationArtifactService =
createMindSpaceConversationArtifactService({
conversationPackageRegistry,
h5Root,
env,
});
const publicFinishService =
createMindSpacePublicFinishService({
pool,
h5Root,
storageRoot: runtime.storageRoot,
env,
syncWorkspaceAssets,
conversationArtifactService,
});
const workspacePublicationDeliveryService =
createMindSpaceWorkspacePublicationDeliveryService({
pool,
h5Root,
storageRoot: runtime.storageRoot,
logger,
});
const publicationService = createPublicationService(pool, {
h5Root,
storageRoot: runtime.storageRoot,
publicPageLimit,
conversationPackageRegistry,
});
const workspacePageDeliveryService =
createWorkspacePageDeliverService({
pool,
pageService,
publicationService,
pageSyncService,
pageDataEnsure: {
ensurePageDataHtmlPagesBound,
},
h5Root,
storageRoot: runtime.storageRoot,
findPageByRelativePath:
pageService.findPageByRelativePath.bind(
pageService,
),
logger,
});
const workspaceToolService =
createMindSpaceWorkspaceToolService({
h5Root,
env,
syncWorkspaceAssets,
conversationArtifactService,
workspacePageDeliveryService,
});
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,
chatSaveService,
conversationArtifactService,
publicFinishService,
workspacePublicationDeliveryService,
publicationService,
workspacePageDeliveryService,
workspaceToolService,
cleanupService,
agentJobService,
pageLiveEditService,
assetAgentService,
};
}