Files
memind/mindspace-local-runtime-services.mjs
T
john 7f8d692d16 fix(agent): recover stale runs and improve new-user OA delivery
Fix DEV logout cookie clearing, materialize selected MindSpace OA assets before agent runs, and recover zombie runs from synced workspace pages. Add client run wait timeout, harness retry limits, page-edit asset forwarding, and logout/john2 scenario tests.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-10 20:05:52 +08:00

103 lines
3.0 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,
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,
};
}