@farazirfan/costar-server-executor 1.6.1 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/dist/agent/agent.d.ts +14 -0
  2. package/dist/agent/agent.d.ts.map +1 -1
  3. package/dist/agent/agent.js +57 -2
  4. package/dist/agent/agent.js.map +1 -1
  5. package/dist/agent/pi-embedded-runner/system-prompt.d.ts +4 -1
  6. package/dist/agent/pi-embedded-runner/system-prompt.d.ts.map +1 -1
  7. package/dist/agent/pi-embedded-runner/system-prompt.js +102 -33
  8. package/dist/agent/pi-embedded-runner/system-prompt.js.map +1 -1
  9. package/dist/agent/pi-embedded-runner/tools.d.ts +10 -0
  10. package/dist/agent/pi-embedded-runner/tools.d.ts.map +1 -1
  11. package/dist/agent/pi-embedded-runner/tools.js +67 -0
  12. package/dist/agent/pi-embedded-runner/tools.js.map +1 -1
  13. package/dist/config/types.d.ts +13 -0
  14. package/dist/config/types.d.ts.map +1 -1
  15. package/dist/heartbeat/runner.d.ts +10 -8
  16. package/dist/heartbeat/runner.d.ts.map +1 -1
  17. package/dist/heartbeat/runner.js +124 -47
  18. package/dist/heartbeat/runner.js.map +1 -1
  19. package/dist/memory/curation-state.d.ts +51 -0
  20. package/dist/memory/curation-state.d.ts.map +1 -0
  21. package/dist/memory/curation-state.js +82 -0
  22. package/dist/memory/curation-state.js.map +1 -0
  23. package/dist/memory/curator.d.ts +73 -0
  24. package/dist/memory/curator.d.ts.map +1 -0
  25. package/dist/memory/curator.js +198 -0
  26. package/dist/memory/curator.js.map +1 -0
  27. package/dist/memory/daily-log.d.ts +56 -0
  28. package/dist/memory/daily-log.d.ts.map +1 -0
  29. package/dist/memory/daily-log.js +176 -0
  30. package/dist/memory/daily-log.js.map +1 -0
  31. package/dist/memory/index.d.ts +10 -0
  32. package/dist/memory/index.d.ts.map +1 -0
  33. package/dist/memory/index.js +13 -0
  34. package/dist/memory/index.js.map +1 -0
  35. package/dist/supabase/index.d.ts +2 -2
  36. package/dist/supabase/index.d.ts.map +1 -1
  37. package/dist/supabase/index.js +2 -2
  38. package/dist/supabase/index.js.map +1 -1
  39. package/dist/supabase/notifications.d.ts.map +1 -1
  40. package/dist/supabase/notifications.js +10 -1
  41. package/dist/supabase/notifications.js.map +1 -1
  42. package/dist/supabase/requests.d.ts +10 -0
  43. package/dist/supabase/requests.d.ts.map +1 -1
  44. package/dist/supabase/requests.js +34 -0
  45. package/dist/supabase/requests.js.map +1 -1
  46. package/dist/supabase/workspace-storage.d.ts +41 -0
  47. package/dist/supabase/workspace-storage.d.ts.map +1 -1
  48. package/dist/supabase/workspace-storage.js +126 -0
  49. package/dist/supabase/workspace-storage.js.map +1 -1
  50. package/dist/tools/message.d.ts +8 -2
  51. package/dist/tools/message.d.ts.map +1 -1
  52. package/dist/tools/message.js +183 -23
  53. package/dist/tools/message.js.map +1 -1
  54. package/dist/workspace/templates.d.ts +3 -3
  55. package/dist/workspace/templates.d.ts.map +1 -1
  56. package/dist/workspace/templates.js +97 -69
  57. package/dist/workspace/templates.js.map +1 -1
  58. package/dist/workspace/workspace.d.ts +2 -1
  59. package/dist/workspace/workspace.d.ts.map +1 -1
  60. package/dist/workspace/workspace.js +19 -4
  61. package/dist/workspace/workspace.js.map +1 -1
  62. package/package.json +1 -1
@@ -61,10 +61,17 @@ export declare class HeartbeatRunner {
61
61
  */
62
62
  private runHeartbeatCheck;
63
63
  /**
64
- * Sync HEARTBEAT.md from Supabase Storage to local filesystem (before heartbeat)
65
- * Supabase Storage is the source of truth picks up client executor updates
64
+ * Sync ALL workspace files back to Supabase Storage (after heartbeat turn).
65
+ * Agent may have edited MEMORY.md, AGENTS.md, TOOLS.md, etc. during the heartbeat.
66
+ * Central storage must always be up to date for the client executor.
66
67
  */
67
- private syncHeartbeatFromStorage;
68
+ private syncAllWorkspaceToStorage;
69
+ /**
70
+ * Sync ALL workspace files from Supabase Storage to local filesystem (before heartbeat).
71
+ * The client executor can update USER.md, SOUL.md, IDENTITY.md, HEARTBEAT.md at any time.
72
+ * We must pull the latest before building the system prompt for this heartbeat turn.
73
+ */
74
+ private syncAllWorkspaceFromStorage;
68
75
  /**
69
76
  * Sync HEARTBEAT.md from local filesystem back to Supabase Storage (after heartbeat)
70
77
  * Preserves any edits the AI agent made during the heartbeat turn
@@ -74,11 +81,6 @@ export declare class HeartbeatRunner {
74
81
  * Check quiet hours (OpenClaw: isWithinActiveHours inverted)
75
82
  */
76
83
  private isQuietHours;
77
- /**
78
- * Send heartbeat notification
79
- * Pattern: OpenClaw's deliverOutboundPayloads (via Supabase instead of channels)
80
- */
81
- private sendHeartbeatNotification;
82
84
  /**
83
85
  * Log heartbeat result to history (best-effort)
84
86
  * Pattern: OpenClaw's emitHeartbeatEvent
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/heartbeat/runner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AA+JlD,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AA4BF,qBAAa,eAAe;IAC1B,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,KAAK,CAUX;IACF,OAAO,CAAC,SAAS,CAIf;gBAGA,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,YAAY,EACpB,eAAe,GAAE,eAGhB;IASH;;;OAGG;IACH,KAAK,IAAI,IAAI;IAoBb;;OAEG;IACH,IAAI,IAAI,IAAI;IAgBZ;;;OAGG;IACH,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOtC;;;OAGG;IACH,mBAAmB,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IA+B1E;;;OAGG;IACH,IAAI,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,KAAK,GAAG,gBAAgB,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAiBlE;;;OAGG;YACW,OAAO;IAgBrB;;;OAGG;YACW,iBAAiB;IAiL/B;;;OAGG;YACW,wBAAwB;IAiBtC;;;OAGG;YACW,sBAAsB;IAcpC;;OAEG;IACH,OAAO,CAAC,YAAY;IAsBpB;;;OAGG;YACW,yBAAyB;IAiBvC;;;OAGG;YACW,mBAAmB;IAsBjC,SAAS;;;;;;;;;;IAaH,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC;IAK9C,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;CAQnC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,YAAY,EACpB,eAAe,CAAC,EAAE,eAAe,GAChC,eAAe,CAEjB"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/heartbeat/runner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AA4KlD,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AA4BF,qBAAa,eAAe;IAC1B,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,KAAK,CAUX;IACF,OAAO,CAAC,SAAS,CAIf;gBAGA,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,YAAY,EACpB,eAAe,GAAE,eAGhB;IASH;;;OAGG;IACH,KAAK,IAAI,IAAI;IAoBb;;OAEG;IACH,IAAI,IAAI,IAAI;IAgBZ;;;OAGG;IACH,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOtC;;;OAGG;IACH,mBAAmB,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IA+B1E;;;OAGG;IACH,IAAI,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,KAAK,GAAG,gBAAgB,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAiBlE;;;OAGG;YACW,OAAO;IAgBrB;;;OAGG;YACW,iBAAiB;IAoQ/B;;;;OAIG;YACW,yBAAyB;IAcvC;;;;OAIG;YACW,2BAA2B;IAezC;;;OAGG;YACW,sBAAsB;IAcpC;;OAEG;IACH,OAAO,CAAC,YAAY;IA0BpB;;;OAGG;YACW,mBAAmB;IAsBjC,SAAS;;;;;;;;;;IAaH,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC;IAK9C,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;CAQnC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,YAAY,EACpB,eAAe,CAAC,EAAE,eAAe,GAChC,eAAe,CAEjB"}
@@ -6,9 +6,10 @@
6
6
  import cron from "node-cron";
7
7
  import fs from "node:fs";
8
8
  import path from "node:path";
9
- import { sendNotification, createHeartbeatHistory } from "../supabase/notifications.js";
10
- import { downloadWorkspaceFile, syncLocalFileToStorage } from "../supabase/workspace-storage.js";
9
+ import { createHeartbeatHistory } from "../supabase/notifications.js";
10
+ import { syncLocalFileToStorage, syncAllLocalFilesToStorage, syncWorkspaceToLocal } from "../supabase/workspace-storage.js";
11
11
  import { isSupabaseInitialized } from "../supabase/client.js";
12
+ import { loadCurationState, saveCurationState, shouldPrune, fetchUnprocessedData, buildCurationDigest, buildCurationPrompt, updatedCursors, pruneOldDailyLogs, pruneOldDailyLogsFromStorage, ensureMemoryDir, } from "../memory/index.js";
12
13
  // ---------- constants (from OpenClaw auto-reply/heartbeat.ts) ----------
13
14
  /**
14
15
  * OpenClaw heartbeat prompt - keep it tight, avoid the model inventing tasks
@@ -318,23 +319,81 @@ export class HeartbeatRunner {
318
319
  await this.logHeartbeatHistory(result);
319
320
  return result;
320
321
  }
321
- // 2a. Sync HEARTBEAT.md from Supabase Storage (source of truth)
322
- // This picks up client executor updates (dual-executor architecture)
322
+ // 2a. Sync ALL workspace files from Supabase Storage (source of truth).
323
+ // The client executor can update USER.md, SOUL.md, IDENTITY.md, HEARTBEAT.md
324
+ // at any time — we must pull the latest before building the system prompt.
323
325
  const isExecEvent = reason === "exec-event";
324
326
  const heartbeatFilePath = path.join(this.workspaceDir, "HEARTBEAT.md");
325
- await this.syncHeartbeatFromStorage(heartbeatFilePath);
326
- // 2b. Check if HEARTBEAT.md is effectively empty (OpenClaw pattern: save API calls)
327
+ await this.syncAllWorkspaceFromStorage();
328
+ // 2b. Memory curation: load cursors and check for new data
329
+ // This MUST run before the empty-heartbeat skip so we don't miss curation
330
+ // when HEARTBEAT.md is empty but new user activity exists.
331
+ let curationState = null;
332
+ let curationPromptText = "";
333
+ let didCurate = false;
334
+ const userId = this.config.agent?.userId || "default";
335
+ if (isSupabaseInitialized() && !isExecEvent) {
336
+ try {
337
+ // Ensure memory/ dir exists
338
+ ensureMemoryDir(this.workspaceDir);
339
+ curationState = loadCurationState(this.workspaceDir);
340
+ const maxConversations = this.config.memory?.maxConversationsPerDigest ?? 20;
341
+ const delta = await fetchUnprocessedData(userId, this.workspaceDir, curationState, maxConversations);
342
+ if (delta.hasNewData) {
343
+ const maxDigestChars = this.config.memory?.maxDigestChars ?? 3000;
344
+ const digest = buildCurationDigest(delta, maxDigestChars);
345
+ curationPromptText = buildCurationPrompt(digest);
346
+ didCurate = true;
347
+ console.log(`[HEARTBEAT] Curation delta: ${delta.newConversations.length} conversations, ` +
348
+ `${delta.newLogContent.length} bytes of new log content`);
349
+ // Pre-compute updated cursors (saved after heartbeat completes)
350
+ curationState = updatedCursors(curationState, delta, this.workspaceDir);
351
+ }
352
+ else {
353
+ console.log("[HEARTBEAT] No new data for curation — skipping");
354
+ }
355
+ // 2c. Prune old daily logs once per day
356
+ if (shouldPrune(curationState)) {
357
+ const keepDays = this.config.memory?.dailyLogRetentionDays ?? 7;
358
+ try {
359
+ pruneOldDailyLogs(this.workspaceDir, keepDays);
360
+ await pruneOldDailyLogsFromStorage(userId, keepDays);
361
+ curationState = {
362
+ ...curationState,
363
+ lastPrunedAt: new Date().toISOString(),
364
+ };
365
+ console.log("[HEARTBEAT] Daily log pruning completed");
366
+ }
367
+ catch (pruneErr) {
368
+ console.warn("[HEARTBEAT] Daily log pruning failed (non-critical):", pruneErr);
369
+ }
370
+ }
371
+ }
372
+ catch (err) {
373
+ console.warn("[HEARTBEAT] Memory curation setup failed (non-critical):", err);
374
+ }
375
+ }
376
+ // 2d. Check if HEARTBEAT.md is effectively empty (OpenClaw pattern: save API calls)
377
+ // Skip ONLY if: empty heartbeat AND no exec event AND no system events AND no curation data
378
+ // This ensures heartbeats still run for curation/proactive signals even when HEARTBEAT.md is empty.
327
379
  try {
328
380
  if (fs.existsSync(heartbeatFilePath)) {
329
381
  const content = fs.readFileSync(heartbeatFilePath, "utf-8");
330
- if (isHeartbeatContentEffectivelyEmpty(content) && !isExecEvent && this.state.systemEvents.length === 0) {
331
- console.log("[HEARTBEAT] HEARTBEAT.md is effectively empty, skipping");
382
+ if (isHeartbeatContentEffectivelyEmpty(content) && !isExecEvent && this.state.systemEvents.length === 0 && !didCurate) {
383
+ console.log("[HEARTBEAT] HEARTBEAT.md is effectively empty and no new data, skipping");
332
384
  const result = {
333
385
  status: "skipped",
334
386
  reason: "empty-heartbeat-file",
335
387
  duration: Date.now() - startTime,
336
388
  executedAt,
337
389
  };
390
+ // Still save curation state if pruning happened
391
+ if (curationState) {
392
+ try {
393
+ saveCurationState(this.workspaceDir, curationState);
394
+ }
395
+ catch { }
396
+ }
338
397
  await this.logHeartbeatHistory(result);
339
398
  return result;
340
399
  }
@@ -343,7 +402,6 @@ export class HeartbeatRunner {
343
402
  catch {
344
403
  // File doesn't exist or can't be read - proceed with heartbeat
345
404
  }
346
- console.log(`[HEARTBEAT] Running heartbeat check (reason: ${reason || "scheduled"})...`);
347
405
  // 3. Build prompt (OpenClaw pattern: exec event vs standard heartbeat)
348
406
  let heartbeatPrompt;
349
407
  if (isExecEvent) {
@@ -357,6 +415,10 @@ export class HeartbeatRunner {
357
415
  else {
358
416
  heartbeatPrompt = HEARTBEAT_PROMPT;
359
417
  }
418
+ // Append curation instructions if there's new data
419
+ if (curationPromptText) {
420
+ heartbeatPrompt += `\n\n${curationPromptText}`;
421
+ }
360
422
  try {
361
423
  // 4. Execute heartbeat via agent using the constructed prompt
362
424
  const agentResult = isExecEvent
@@ -376,8 +438,20 @@ export class HeartbeatRunner {
376
438
  await this.logHeartbeatHistory(result);
377
439
  return result;
378
440
  }
379
- // 4b. Sync HEARTBEAT.md back to Storage (in case agent edited it during the turn)
441
+ // 4b. Save curation state if curation ran (update cursors for next cycle)
442
+ if (didCurate && curationState) {
443
+ try {
444
+ saveCurationState(this.workspaceDir, curationState);
445
+ }
446
+ catch (saveErr) {
447
+ console.warn("[HEARTBEAT] Failed to save curation state:", saveErr);
448
+ }
449
+ }
450
+ // 4c. Sync ALL workspace files back to Storage (agent may have edited
451
+ // HEARTBEAT.md, MEMORY.md, AGENTS.md, etc. during the heartbeat turn).
452
+ // The per-tool auto-sync handles individual writes, but this is a safety net.
380
453
  await this.syncHeartbeatToStorage(heartbeatFilePath);
454
+ await this.syncAllWorkspaceToStorage();
381
455
  // 5. Process response (OpenClaw pattern: stripHeartbeatToken)
382
456
  const response = agentResult.response?.trim() || "";
383
457
  const stripped = stripHeartbeatToken(response);
@@ -412,20 +486,22 @@ export class HeartbeatRunner {
412
486
  await this.logHeartbeatHistory(result);
413
487
  return result;
414
488
  }
415
- // 7. Send notification (OpenClaw: deliverOutboundPayloads)
416
- console.log("[HEARTBEAT] Important update detected, sending notification");
489
+ // 7. Log response to history (notifications are handled exclusively by the message tool)
490
+ // The agent uses the `message` tool to send user-facing notifications during its turn.
491
+ // We no longer auto-send heartbeat responses as notifications — this prevents
492
+ // self-narration, bad titles ("Heartbeat Alert"), and unstructured content from
493
+ // reaching the user. The response is still logged for debugging/history.
494
+ console.log("[HEARTBEAT] Heartbeat completed with response (logged, not auto-sent)");
417
495
  console.log(`[HEARTBEAT] Response: ${normalizedText.slice(0, 200)}...`);
418
- await this.sendHeartbeatNotification(normalizedText);
419
- this.state.totalNotifications++;
420
- // Record for dedup
496
+ // Record for dedup (still useful to detect repeated agent responses)
421
497
  this.state.lastHeartbeatText = normalizedText;
422
498
  this.state.lastHeartbeatSentAt = startTime;
423
499
  const result = {
424
500
  status: "ran",
425
- reason: "notification-sent",
501
+ reason: "completed",
426
502
  response: normalizedText,
427
503
  duration,
428
- notificationSent: true,
504
+ notificationSent: false,
429
505
  executedAt,
430
506
  };
431
507
  await this.logHeartbeatHistory(result);
@@ -450,24 +526,42 @@ export class HeartbeatRunner {
450
526
  // HELPERS
451
527
  // ═══════════════════════════════════════════════════
452
528
  /**
453
- * Sync HEARTBEAT.md from Supabase Storage to local filesystem (before heartbeat)
454
- * Supabase Storage is the source of truth picks up client executor updates
529
+ * Sync ALL workspace files back to Supabase Storage (after heartbeat turn).
530
+ * Agent may have edited MEMORY.md, AGENTS.md, TOOLS.md, etc. during the heartbeat.
531
+ * Central storage must always be up to date for the client executor.
455
532
  */
456
- async syncHeartbeatFromStorage(localPath) {
533
+ async syncAllWorkspaceToStorage() {
457
534
  if (!isSupabaseInitialized())
458
535
  return;
459
536
  const userId = this.config.agent?.userId || "default";
460
537
  try {
461
- const content = await downloadWorkspaceFile(userId, "HEARTBEAT.md");
462
- if (content !== null) {
463
- fs.writeFileSync(localPath, content, "utf-8");
464
- console.log("[HEARTBEAT] Synced HEARTBEAT.md from Storage (source of truth)");
538
+ const result = await syncAllLocalFilesToStorage(userId, this.workspaceDir);
539
+ if (result.uploaded.length > 0) {
540
+ console.log(`[HEARTBEAT] Post-turn sync: uploaded ${result.uploaded.join(", ")}`);
465
541
  }
466
- // If null (not in Storage), keep existing local copy or let template creation handle it
467
542
  }
468
543
  catch (err) {
469
- console.warn("[HEARTBEAT] Failed to sync HEARTBEAT.md from Storage (non-critical):", err);
470
- // Continue with local copy — best-effort sync
544
+ console.warn("[HEARTBEAT] Post-turn workspace sync failed (non-critical):", err);
545
+ }
546
+ }
547
+ /**
548
+ * Sync ALL workspace files from Supabase Storage to local filesystem (before heartbeat).
549
+ * The client executor can update USER.md, SOUL.md, IDENTITY.md, HEARTBEAT.md at any time.
550
+ * We must pull the latest before building the system prompt for this heartbeat turn.
551
+ */
552
+ async syncAllWorkspaceFromStorage() {
553
+ if (!isSupabaseInitialized())
554
+ return;
555
+ const userId = this.config.agent?.userId || "default";
556
+ try {
557
+ const result = await syncWorkspaceToLocal(userId, this.workspaceDir);
558
+ if (result.synced.length > 0) {
559
+ console.log(`[HEARTBEAT] Pulled latest workspace files: ${result.synced.join(", ")}`);
560
+ }
561
+ }
562
+ catch (err) {
563
+ console.warn("[HEARTBEAT] Failed to pull workspace from Storage (non-critical):", err);
564
+ // Continue with local copies — best-effort
471
565
  }
472
566
  }
473
567
  /**
@@ -508,26 +602,9 @@ export class HeartbeatRunner {
508
602
  }
509
603
  return currentTime >= quietStart && currentTime < quietEnd;
510
604
  }
511
- /**
512
- * Send heartbeat notification
513
- * Pattern: OpenClaw's deliverOutboundPayloads (via Supabase instead of channels)
514
- */
515
- async sendHeartbeatNotification(response) {
516
- const userId = this.config.agent?.userId || "default";
517
- try {
518
- await sendNotification({
519
- user_id: userId,
520
- type: "heartbeat",
521
- title: "Heartbeat Alert",
522
- message: response,
523
- priority: "normal",
524
- });
525
- console.log("[HEARTBEAT] Notification sent successfully");
526
- }
527
- catch (error) {
528
- console.error("[HEARTBEAT] Failed to send notification:", error);
529
- }
530
- }
605
+ // NOTE: sendHeartbeatNotification() removed — all user-facing notifications now go
606
+ // through the `message` tool exclusively. This prevents self-narration, bad titles,
607
+ // and unstructured content from reaching the user.
531
608
  /**
532
609
  * Log heartbeat result to history (best-effort)
533
610
  * Pattern: OpenClaw's emitHeartbeatEvent
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/heartbeat/runner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AACjG,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAG9D,0EAA0E;AAE1E;;GAEG;AACH,MAAM,gBAAgB,GACpB,4KAA4K,CAAC;AAE/K;;;GAGG;AACH,MAAM,iBAAiB,GACrB,oGAAoG;IACpG,qHAAqH;IACrH,wCAAwC,CAAC;AAE3C,MAAM,eAAe,GAAG,cAAc,CAAC;AAEvC;;GAEG;AACH,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAElC;;GAEG;AACH,MAAM,eAAe,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAE5C;;GAEG;AACH,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEhC;;GAEG;AACH,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAE9B,uFAAuF;AAEvF;;;GAGG;AACH,SAAS,kCAAkC,CAAC,OAAkC;IAC5E,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC5D,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE9C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,wBAAwB;QACxB,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,SAAS;QACxC,wBAAwB;QACxB,IAAI,6BAA6B,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,SAAS;QAC1D,2BAA2B;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,uFAAuF;AAEvF;;;GAGG;AACH,SAAS,mBAAmB,CAAC,GAAY;IAKvC,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACjE,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAErE,kDAAkD;IAClD,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,EAAE,CACnC,IAAI;SACD,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC;SACxB,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC;SACxB,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAE7B,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IAE3F,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC/D,CAAC;IAED,6BAA6B;IAC7B,IAAI,IAAI,GAAG,OAAO,CAAC;IACnB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,OAAO,GAAG,IAAI,CAAC;IAEnB,OAAO,OAAO,EAAE,CAAC;QACf,OAAO,GAAG,KAAK,CAAC;QAChB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAEzB,IAAI,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACrC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC;YACtD,QAAQ,GAAG,IAAI,CAAC;YAChB,OAAO,GAAG,IAAI,CAAC;YACf,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YACnC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAClF,QAAQ,GAAG,IAAI,CAAC;YAChB,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IAED,oCAAoC;IACpC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,IAAI,QAAQ,GAAG,UAAU,CAAC;QAC1B,IAAI,WAAW,GAAG,IAAI,CAAC;QACvB,OAAO,WAAW,EAAE,CAAC;YACnB,WAAW,GAAG,KAAK,CAAC;YACpB,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;gBACrC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC;gBAC1D,QAAQ,GAAG,IAAI,CAAC;gBAChB,WAAW,GAAG,IAAI,CAAC;gBACnB,SAAS;YACX,CAAC;YACD,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;gBACnC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;gBACtF,QAAQ,GAAG,IAAI,CAAC;gBAChB,WAAW,GAAG,IAAI,CAAC;YACrB,CAAC;QACH,CAAC;QACD,IAAI,QAAQ;YAAE,IAAI,GAAG,QAAQ,CAAC;IAChC,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC/D,CAAC;IAED,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAExC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACxD,CAAC;IAED,+DAA+D;IAC/D,IAAI,IAAI,CAAC,MAAM,IAAI,qBAAqB,EAAE,CAAC;QACzC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACxD,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACrD,CAAC;AAmCD,8CAA8C;AAE9C,MAAM,OAAO,eAAe;IAClB,KAAK,CAAQ;IACb,MAAM,CAAe;IACrB,eAAe,CAAkB;IACjC,YAAY,CAAS;IACrB,KAAK,GAAyB;QACpC,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,CAAC;QACZ,kBAAkB,EAAE,CAAC;QACrB,iBAAiB,EAAE,EAAE;QACrB,mBAAmB,EAAE,IAAI;QACzB,YAAY,EAAE,EAAE;KACjB,CAAC;IACM,SAAS,GAAc;QAC7B,aAAa,EAAE,IAAI;QACnB,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,IAAI;KACZ,CAAC;IAEF,YACE,KAAY,EACZ,MAAoB,EACpB,kBAAmC;QACjC,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,cAAc;KACzB;QAED,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC;QAC7C,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,SAAS,EAAE,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACjE,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;YAClD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;YAClD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YACxE,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CACT,yCAAyC,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,CAC1E,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QACzB,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YACzB,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;QAC9B,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC5C,CAAC;IAED,sDAAsD;IACtD,mDAAmD;IACnD,sDAAsD;IAEtD;;;OAGG;IACH,kBAAkB,CAAC,IAAY;QAC7B,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAChB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,sCAAsC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,mBAAmB,CAAC,IAA+C;QACjE,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,IAAI,WAAW,CAAC;QAC3F,MAAM,UAAU,GAAG,IAAI,EAAE,UAAU,IAAI,mBAAmB,CAAC;QAE3D,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK;YAAE,OAAO,CAAC,oBAAoB;QAEtD,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE;YAC3C,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,KAAK,CAAC;YAEjC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACvB,kDAAkD;gBAClD,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC;gBAChC,IAAI,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,IAAI,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC,CAAC;gBAC5G,OAAO;YACT,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;YAC5C,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;YAEpC,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC;YACpD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;gBACtD,iBAAiB;gBACjB,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,MAAM,IAAI,OAAO,CAAC;gBACjD,IAAI,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC,CAAC;YAC9E,CAAC;QACH,CAAC,EAAE,UAAU,CAAC,CAAC;IACjB,CAAC;IAED;;;OAGG;IACH,IAAI,CAAC,IAAsD;QACzD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI;YAAE,OAAO;QAElB,0BAA0B;QAC1B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAE9B,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACxB,IAAI,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,yFAAyF;IAC3F,CAAC;IAED,sDAAsD;IACtD,oBAAoB;IACpB,sDAAsD;IAEtD;;;OAGG;IACK,KAAK,CAAC,OAAO;QACnB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;QACzD,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;QAC7B,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,iBAAiB,CAAC,MAAe;QAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAElC,qFAAqF;QACrF,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;YACrE,MAAM,MAAM,GAAoB;gBAC9B,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,oBAAoB;gBAC5B,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBAChC,UAAU;aACX,CAAC;YACF,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACvC,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,wDAAwD;QACxD,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;YACjD,MAAM,MAAM,GAAoB;gBAC9B,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,aAAa;gBACrB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBAChC,UAAU;aACX,CAAC;YACF,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACvC,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,gEAAgE;QAChE,qEAAqE;QACrE,MAAM,WAAW,GAAG,MAAM,KAAK,YAAY,CAAC;QAC5C,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;QACvE,MAAM,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,CAAC;QAEvD,oFAAoF;QACpF,IAAI,CAAC;YACH,IAAI,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACrC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;gBAC5D,IAAI,kCAAkC,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACxG,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;oBACvE,MAAM,MAAM,GAAoB;wBAC9B,MAAM,EAAE,SAAS;wBACjB,MAAM,EAAE,sBAAsB;wBAC9B,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;wBAChC,UAAU;qBACX,CAAC;oBACF,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;oBACvC,OAAO,MAAM,CAAC;gBAChB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,+DAA+D;QACjE,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,gDAAgD,MAAM,IAAI,WAAW,MAAM,CAAC,CAAC;QAEzF,uEAAuE;QACvE,IAAI,eAAuB,CAAC;QAC5B,IAAI,WAAW,EAAE,CAAC;YAChB,eAAe,GAAG,iBAAiB,CAAC;QACtC,CAAC;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,uCAAuC;YACvC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACjD,eAAe,GAAG,GAAG,gBAAgB,wCAAwC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACxH,CAAC;aAAM,CAAC;YACN,eAAe,GAAG,gBAAgB,CAAC;QACrC,CAAC;QAED,IAAI,CAAC;YACH,8DAA8D;YAC9D,MAAM,WAAW,GAAG,WAAW;gBAC7B,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;gBAC9D,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;YAEpE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACxC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YAEvB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;gBACzB,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;gBACxD,MAAM,MAAM,GAAoB;oBAC9B,MAAM,EAAE,SAAS;oBACjB,MAAM,EAAE,OAAO;oBACf,QAAQ,EAAE,WAAW,CAAC,KAAK;oBAC3B,QAAQ;oBACR,UAAU;iBACX,CAAC;gBACF,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;gBACvC,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,kFAAkF;YAClF,MAAM,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;YAErD,8DAA8D;YAC9D,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YACpD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YAE/C,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;gBACnD,MAAM,MAAM,GAAoB;oBAC9B,MAAM,EAAE,KAAK;oBACb,MAAM,EAAE,cAAc;oBACtB,QAAQ,EAAE,cAAc;oBACxB,QAAQ;oBACR,gBAAgB,EAAE,KAAK;oBACvB,UAAU;iBACX,CAAC;gBACF,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;gBACvC,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,qEAAqE;YACrE,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5C,IACE,IAAI,CAAC,KAAK,CAAC,iBAAiB;gBAC5B,cAAc,KAAK,IAAI,CAAC,KAAK,CAAC,iBAAiB;gBAC/C,IAAI,CAAC,KAAK,CAAC,mBAAmB;gBAC9B,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,GAAG,eAAe,EAC5D,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;gBACtE,MAAM,MAAM,GAAoB;oBAC9B,MAAM,EAAE,KAAK;oBACb,MAAM,EAAE,sBAAsB;oBAC9B,QAAQ,EAAE,cAAc;oBACxB,QAAQ;oBACR,gBAAgB,EAAE,KAAK;oBACvB,UAAU;iBACX,CAAC;gBACF,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;gBACvC,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,2DAA2D;YAC3D,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;YAC3E,OAAO,CAAC,GAAG,CAAC,yBAAyB,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YAExE,MAAM,IAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,CAAC;YACrD,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC;YAEhC,mBAAmB;YACnB,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,cAAc,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,mBAAmB,GAAG,SAAS,CAAC;YAE3C,MAAM,MAAM,GAAoB;gBAC9B,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,mBAAmB;gBAC3B,QAAQ,EAAE,cAAc;gBACxB,QAAQ;gBACR,gBAAgB,EAAE,IAAI;gBACtB,UAAU;aACX,CAAC;YACF,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACvC,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACxC,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,YAAY,CAAC,CAAC;YAE7D,MAAM,MAAM,GAAoB;gBAC9B,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,OAAO;gBACf,QAAQ,EAAE,YAAY;gBACtB,QAAQ;gBACR,UAAU;aACX,CAAC;YACF,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACvC,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAED,sDAAsD;IACtD,UAAU;IACV,sDAAsD;IAEtD;;;OAGG;IACK,KAAK,CAAC,wBAAwB,CAAC,SAAiB;QACtD,IAAI,CAAC,qBAAqB,EAAE;YAAE,OAAO;QAErC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,SAAS,CAAC;QACtD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YACpE,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC9C,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;YAChF,CAAC;YACD,wFAAwF;QAC1F,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,sEAAsE,EAAE,GAAG,CAAC,CAAC;YAC1F,8CAA8C;QAChD,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,sBAAsB,CAAC,SAAiB;QACpD,IAAI,CAAC,qBAAqB,EAAE;YAAE,OAAO;QACrC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO;QAEtC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,SAAS,CAAC;QACtD,IAAI,CAAC;YACH,MAAM,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;QACjE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,oEAAoE,EAAE,GAAG,CAAC,CAAC;YACxF,iEAAiE;QACnE,CAAC;IACH,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC;YACjF,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;QAE3D,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7F,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEvF,MAAM,UAAU,GAAG,SAAS,GAAG,EAAE,GAAG,WAAW,CAAC;QAChD,MAAM,QAAQ,GAAG,OAAO,GAAG,EAAE,GAAG,SAAS,CAAC;QAE1C,yCAAyC;QACzC,IAAI,QAAQ,GAAG,UAAU,EAAE,CAAC;YAC1B,OAAO,WAAW,IAAI,UAAU,IAAI,WAAW,GAAG,QAAQ,CAAC;QAC7D,CAAC;QAED,OAAO,WAAW,IAAI,UAAU,IAAI,WAAW,GAAG,QAAQ,CAAC;IAC7D,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,yBAAyB,CAAC,QAAgB;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,SAAS,CAAC;QAEtD,IAAI,CAAC;YACH,MAAM,gBAAgB,CAAC;gBACrB,OAAO,EAAE,MAAM;gBACf,IAAI,EAAE,WAAW;gBACjB,KAAK,EAAE,iBAAiB;gBACxB,OAAO,EAAE,QAAQ;gBACjB,QAAQ,EAAE,QAAQ;aACnB,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,mBAAmB,CAAC,MAAuB;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,SAAS,CAAC;QAEtD,IAAI,CAAC;YACH,MAAM,sBAAsB,CAAC;gBAC3B,MAAM;gBACN,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,KAAK;gBAClD,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,sDAAsD;IACtD,aAAa;IACb,sDAAsD;IAEtD,SAAS;QACP,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI;YACnC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;YAC/B,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;YAC3B,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;YAC/B,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;YAC/B,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB;YACjD,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM;YACnD,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ;SACxC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAClD,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,UAAU,CAAC,OAAgB;QACzB,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QAC7B,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAChC,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;aAAM,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACvC,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAY,EACZ,MAAoB,EACpB,eAAiC;IAEjC,OAAO,IAAI,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;AAC7D,CAAC"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/heartbeat/runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * CoStar Server Executor - Curation State (Cursors)
3
+ *
4
+ * Manages the cursor state for incremental memory curation.
5
+ * Stored as .curation_state.json in the workspace directory.
6
+ * Auto-synced to Supabase Storage by the existing workspace sync infrastructure.
7
+ */
8
+ /**
9
+ * Cursor state for incremental memory curation.
10
+ * Tracks what data has already been processed to avoid re-processing.
11
+ */
12
+ export type CurationState = {
13
+ /** ID of the last processed user_requests row */
14
+ lastProcessedRequestId: string | null;
15
+ /** Timestamp of the last processed user_requests row */
16
+ lastProcessedRequestAt: string | null;
17
+ /** Date of the last processed daily log (YYYY-MM-DD) */
18
+ lastProcessedLogDate: string | null;
19
+ /** Byte size of the daily log file when last processed */
20
+ lastProcessedLogSize: number;
21
+ /** Timestamp of the last prune operation */
22
+ lastPrunedAt: string | null;
23
+ /** Total number of curation entries processed lifetime */
24
+ totalEntriesCurated: number;
25
+ };
26
+ /**
27
+ * Load the curation state from the workspace directory.
28
+ * Returns default state if the file doesn't exist.
29
+ *
30
+ * @param workspaceDir - Workspace root directory
31
+ * @returns Current curation state
32
+ */
33
+ export declare function loadCurationState(workspaceDir: string): CurationState;
34
+ /**
35
+ * Save the curation state to the workspace directory.
36
+ * The file will be auto-synced to Supabase Storage by the existing
37
+ * workspace sync infrastructure.
38
+ *
39
+ * @param workspaceDir - Workspace root directory
40
+ * @param state - Curation state to save
41
+ */
42
+ export declare function saveCurationState(workspaceDir: string, state: CurationState): void;
43
+ /**
44
+ * Check if daily log pruning should run.
45
+ * Returns true if lastPrunedAt is null or more than 24 hours ago.
46
+ *
47
+ * @param state - Current curation state
48
+ * @returns true if pruning should run
49
+ */
50
+ export declare function shouldPrune(state: CurationState): boolean;
51
+ //# sourceMappingURL=curation-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curation-state.d.ts","sourceRoot":"","sources":["../../src/memory/curation-state.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,iDAAiD;IACjD,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,wDAAwD;IACxD,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,wDAAwD;IACxD,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,0DAA0D;IAC1D,oBAAoB,EAAE,MAAM,CAAC;IAC7B,4CAA4C;IAC5C,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,0DAA0D;IAC1D,mBAAmB,EAAE,MAAM,CAAC;CAC7B,CAAC;AAcF;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,CAoBrE;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,aAAa,GACnB,IAAI,CASN;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAQzD"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * CoStar Server Executor - Curation State (Cursors)
3
+ *
4
+ * Manages the cursor state for incremental memory curation.
5
+ * Stored as .curation_state.json in the workspace directory.
6
+ * Auto-synced to Supabase Storage by the existing workspace sync infrastructure.
7
+ */
8
+ import fs from "node:fs";
9
+ import path from "node:path";
10
+ /** File name for curation state */
11
+ const CURATION_STATE_FILE = ".curation_state.json";
12
+ /**
13
+ * Default curation state for first-time initialization.
14
+ */
15
+ const DEFAULT_STATE = {
16
+ lastProcessedRequestId: null,
17
+ lastProcessedRequestAt: null,
18
+ lastProcessedLogDate: null,
19
+ lastProcessedLogSize: 0,
20
+ lastPrunedAt: null,
21
+ totalEntriesCurated: 0,
22
+ };
23
+ /**
24
+ * Load the curation state from the workspace directory.
25
+ * Returns default state if the file doesn't exist.
26
+ *
27
+ * @param workspaceDir - Workspace root directory
28
+ * @returns Current curation state
29
+ */
30
+ export function loadCurationState(workspaceDir) {
31
+ const filePath = path.join(workspaceDir, CURATION_STATE_FILE);
32
+ try {
33
+ if (!fs.existsSync(filePath)) {
34
+ return { ...DEFAULT_STATE };
35
+ }
36
+ const raw = fs.readFileSync(filePath, "utf-8");
37
+ const parsed = JSON.parse(raw);
38
+ // Merge with defaults to handle schema evolution
39
+ return {
40
+ ...DEFAULT_STATE,
41
+ ...parsed,
42
+ };
43
+ }
44
+ catch (err) {
45
+ console.warn(`[MEMORY] Failed to load curation state, using defaults:`, err);
46
+ return { ...DEFAULT_STATE };
47
+ }
48
+ }
49
+ /**
50
+ * Save the curation state to the workspace directory.
51
+ * The file will be auto-synced to Supabase Storage by the existing
52
+ * workspace sync infrastructure.
53
+ *
54
+ * @param workspaceDir - Workspace root directory
55
+ * @param state - Curation state to save
56
+ */
57
+ export function saveCurationState(workspaceDir, state) {
58
+ const filePath = path.join(workspaceDir, CURATION_STATE_FILE);
59
+ try {
60
+ fs.writeFileSync(filePath, JSON.stringify(state, null, 2), "utf-8");
61
+ console.log(`[MEMORY] Curation state saved (curated: ${state.totalEntriesCurated})`);
62
+ }
63
+ catch (err) {
64
+ console.error(`[MEMORY] Failed to save curation state:`, err);
65
+ }
66
+ }
67
+ /**
68
+ * Check if daily log pruning should run.
69
+ * Returns true if lastPrunedAt is null or more than 24 hours ago.
70
+ *
71
+ * @param state - Current curation state
72
+ * @returns true if pruning should run
73
+ */
74
+ export function shouldPrune(state) {
75
+ if (!state.lastPrunedAt)
76
+ return true;
77
+ const lastPruned = new Date(state.lastPrunedAt).getTime();
78
+ const now = Date.now();
79
+ const twentyFourHours = 24 * 60 * 60 * 1000;
80
+ return now - lastPruned >= twentyFourHours;
81
+ }
82
+ //# sourceMappingURL=curation-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curation-state.js","sourceRoot":"","sources":["../../src/memory/curation-state.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,mCAAmC;AACnC,MAAM,mBAAmB,GAAG,sBAAsB,CAAC;AAqBnD;;GAEG;AACH,MAAM,aAAa,GAAkB;IACnC,sBAAsB,EAAE,IAAI;IAC5B,sBAAsB,EAAE,IAAI;IAC5B,oBAAoB,EAAE,IAAI;IAC1B,oBAAoB,EAAE,CAAC;IACvB,YAAY,EAAE,IAAI;IAClB,mBAAmB,EAAE,CAAC;CACvB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,YAAoB;IACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;IAE9D,IAAI,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,GAAG,aAAa,EAAE,CAAC;QAC9B,CAAC;QAED,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE/B,iDAAiD;QACjD,OAAO;YACL,GAAG,aAAa;YAChB,GAAG,MAAM;SACV,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,yDAAyD,EAAE,GAAG,CAAC,CAAC;QAC7E,OAAO,EAAE,GAAG,aAAa,EAAE,CAAC;IAC9B,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAC/B,YAAoB,EACpB,KAAoB;IAEpB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;IAE9D,IAAI,CAAC;QACH,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,2CAA2C,KAAK,CAAC,mBAAmB,GAAG,CAAC,CAAC;IACvF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,GAAG,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,KAAoB;IAC9C,IAAI,CAAC,KAAK,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAErC,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC;IAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,eAAe,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAE5C,OAAO,GAAG,GAAG,UAAU,IAAI,eAAe,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * CoStar Server Executor - Memory Curator
3
+ *
4
+ * Incremental, cursor-based memory curation.
5
+ * Fetches only new/unprocessed data (client conversations + daily logs),
6
+ * builds a compact digest, and produces a curation prompt to append to heartbeats.
7
+ *
8
+ * The LLM then processes the digest and updates MEMORY.md, USER.md,
9
+ * and the daily log in a single heartbeat turn.
10
+ */
11
+ import type { CurationState } from "./curation-state.js";
12
+ /**
13
+ * Represents a single client conversation entry for curation.
14
+ */
15
+ export type ConversationEntry = {
16
+ id: string;
17
+ request: string;
18
+ response: string | null;
19
+ createdAt: string;
20
+ };
21
+ /**
22
+ * Delta of new data to be curated.
23
+ */
24
+ export type CurationDelta = {
25
+ /** New client conversations since last cursor */
26
+ newConversations: ConversationEntry[];
27
+ /** New content appended to daily logs since last offset */
28
+ newLogContent: string;
29
+ /** Whether there is any new data to process */
30
+ hasNewData: boolean;
31
+ };
32
+ /**
33
+ * Fetch unprocessed data since the last curation cursors.
34
+ *
35
+ * 1. Queries user_requests after lastProcessedRequestAt (new client conversations)
36
+ * 2. Reads today's daily log from lastProcessedLogSize offset (new LLM-written entries)
37
+ * Also checks yesterday if lastProcessedLogDate != today (handles midnight rollover)
38
+ * 3. Returns only the delta — if both empty, hasNewData = false
39
+ *
40
+ * @param userId - User ID for querying conversations
41
+ * @param workspaceDir - Workspace root for reading daily logs
42
+ * @param state - Current curation state (cursors)
43
+ * @param maxConversations - Max conversations to fetch per curation cycle
44
+ * @returns The delta of new data
45
+ */
46
+ export declare function fetchUnprocessedData(userId: string, workspaceDir: string, state: CurationState, maxConversations?: number): Promise<CurationDelta>;
47
+ /**
48
+ * Build a compact markdown digest from the curation delta.
49
+ * Caps total content at maxChars to keep the heartbeat prompt small.
50
+ *
51
+ * @param delta - The curation delta
52
+ * @param maxChars - Maximum characters for the digest (default: 3000)
53
+ * @returns Formatted markdown digest string
54
+ */
55
+ export declare function buildCurationDigest(delta: CurationDelta, maxChars?: number): string;
56
+ /**
57
+ * Build the curation prompt to append to the heartbeat message.
58
+ * Only called when new data exists.
59
+ *
60
+ * @param digest - The formatted digest from buildCurationDigest()
61
+ * @returns Full curation instructions + digest
62
+ */
63
+ export declare function buildCurationPrompt(digest: string): string;
64
+ /**
65
+ * Compute updated cursor state after a curation cycle.
66
+ *
67
+ * @param state - Previous curation state
68
+ * @param delta - The delta that was just processed
69
+ * @param workspaceDir - Workspace root for reading current log size
70
+ * @returns New curation state with updated cursors
71
+ */
72
+ export declare function updatedCursors(state: CurationState, delta: CurationDelta, workspaceDir: string): CurationState;
73
+ //# sourceMappingURL=curator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curator.d.ts","sourceRoot":"","sources":["../../src/memory/curator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,iDAAiD;IACjD,gBAAgB,EAAE,iBAAiB,EAAE,CAAC;IACtC,2DAA2D;IAC3D,aAAa,EAAE,MAAM,CAAC;IACtB,+CAA+C;IAC/C,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,aAAa,EACpB,gBAAgB,GAAE,MAAW,GAC5B,OAAO,CAAC,aAAa,CAAC,CA6DxB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,aAAa,EACpB,QAAQ,GAAE,MAAa,GACtB,MAAM,CA8BR;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAwC1D;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,aAAa,EACpB,YAAY,EAAE,MAAM,GACnB,aAAa,CAuBf"}