d3239ff292
Ensure page sync runs via pageSyncService in remote mode, fall back to workspace HTML when storage assets are missing, and prevent production Portal from linking to loopback Plaza URLs baked in at build time. Co-authored-by: Cursor <cursoragent@cursor.com>
101 lines
2.9 KiB
JavaScript
101 lines
2.9 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 { 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,
|
|
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,
|
|
});
|
|
|
|
return {
|
|
...runtime,
|
|
conversationPackageRegistry,
|
|
assetService,
|
|
pageService,
|
|
pageSyncService,
|
|
publicationService,
|
|
cleanupService,
|
|
agentJobService,
|
|
pageLiveEditService,
|
|
assetAgentService,
|
|
};
|
|
}
|