Add Experience reflect background worker with env-gated scheduling.
Start a periodic reflect loop from portal and MindSpace service bootstraps when EXPERIENCE_REFLECT_ENABLED=1, aggregating repeated task outcomes on a configurable interval. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -59,6 +59,7 @@ async function loadMemindModules(memindRoot) {
|
||||
userAuth,
|
||||
agentRunner,
|
||||
experienceService,
|
||||
experienceReflectWorker,
|
||||
workspaceThumbnails,
|
||||
workspaceSync,
|
||||
] = await Promise.all([
|
||||
@@ -71,6 +72,7 @@ async function loadMemindModules(memindRoot) {
|
||||
importFromMemindRoot(memindRoot, 'user-auth.mjs'),
|
||||
importFromMemindRoot(memindRoot, 'mindspace-agent-runner.mjs'),
|
||||
importFromMemindRoot(memindRoot, 'experience-service.mjs'),
|
||||
importFromMemindRoot(memindRoot, 'experience-reflect-worker.mjs'),
|
||||
importFromMemindRoot(memindRoot, 'mindspace-workspace-thumbnails.mjs'),
|
||||
importFromMemindRoot(memindRoot, 'mindspace-workspace-sync.mjs'),
|
||||
]);
|
||||
@@ -84,6 +86,7 @@ async function loadMemindModules(memindRoot) {
|
||||
...userAuth,
|
||||
...agentRunner,
|
||||
...experienceService,
|
||||
...experienceReflectWorker,
|
||||
...workspaceThumbnails,
|
||||
...workspaceSync,
|
||||
};
|
||||
@@ -134,6 +137,7 @@ export async function bootstrapMindSpaceService({
|
||||
createSessionSnapshotService,
|
||||
createUserAuth,
|
||||
createExperienceService,
|
||||
startExperienceReflectWorker,
|
||||
resolveMindSpaceServerRuntimeOptions,
|
||||
startWorkspaceAssetSyncWatcher,
|
||||
startWorkspaceThumbnailWatcher,
|
||||
@@ -178,6 +182,13 @@ export async function bootstrapMindSpaceService({
|
||||
if (runtime.experienceEnabled) {
|
||||
experienceService = createExperienceService(pool, { productEventsPool: pool });
|
||||
}
|
||||
const experienceReflectWorker = experienceService
|
||||
? startExperienceReflectWorker({
|
||||
experienceService,
|
||||
env,
|
||||
logger,
|
||||
})
|
||||
: { stop() {}, policy: { enabled: false } };
|
||||
const agentRunner = createMindSpaceAgentRunner({
|
||||
apiTarget,
|
||||
apiSecret,
|
||||
@@ -218,9 +229,11 @@ export async function bootstrapMindSpaceService({
|
||||
sessionSnapshotService,
|
||||
userAuth,
|
||||
agentRunner,
|
||||
experienceReflectWorker,
|
||||
adapter,
|
||||
backgroundJobs,
|
||||
async close() {
|
||||
experienceReflectWorker.stop?.();
|
||||
await pool.end();
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user