@remnic/core 9.3.691 → 9.3.693

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 (113) hide show
  1. package/dist/access-boundary.d.ts +6 -5
  2. package/dist/access-boundary.js +12 -12
  3. package/dist/access-cli.js +71 -18
  4. package/dist/access-cli.js.map +1 -1
  5. package/dist/access-http.d.ts +5 -4
  6. package/dist/access-http.js +16 -16
  7. package/dist/access-mcp.d.ts +7 -4
  8. package/dist/access-mcp.js +15 -15
  9. package/dist/access-operations.d.ts +12 -6
  10. package/dist/access-operations.js +16 -14
  11. package/dist/access-schema.js +3 -3
  12. package/dist/{access-service-CKnFdxH-.d.ts → access-service-DxCpgyVW.d.ts} +96 -2
  13. package/dist/access-service.d.ts +5 -4
  14. package/dist/access-service.js +11 -11
  15. package/dist/access-surface-catalog.d.ts +5 -4
  16. package/dist/access-surface-catalog.js +2 -0
  17. package/dist/access-surface-catalog.js.map +1 -1
  18. package/dist/bootstrap.d.ts +4 -3
  19. package/dist/{chunk-QNG35H27.js → chunk-4IQNAOP3.js} +5 -141
  20. package/dist/chunk-4IQNAOP3.js.map +1 -0
  21. package/dist/{chunk-VH2DHBHG.js → chunk-5HGPDRQZ.js} +2 -2
  22. package/dist/chunk-5HGPDRQZ.js.map +1 -0
  23. package/dist/chunk-6C2BMUZA.js +444 -0
  24. package/dist/chunk-6C2BMUZA.js.map +1 -0
  25. package/dist/{chunk-UUMYB3FR.js → chunk-6ZNIUGXB.js} +10 -10
  26. package/dist/{chunk-IPJD7WJH.js → chunk-E6BOD3UJ.js} +2 -2
  27. package/dist/{chunk-TJ5IIQIR.js → chunk-F7BVJ3IE.js} +40 -369
  28. package/dist/chunk-F7BVJ3IE.js.map +1 -0
  29. package/dist/{chunk-D3DNGQNQ.js → chunk-FM7KLRKN.js} +2 -2
  30. package/dist/{chunk-7MOTEVAA.js → chunk-HRUULBBV.js} +3 -1
  31. package/dist/chunk-HRUULBBV.js.map +1 -0
  32. package/dist/chunk-HXNMDPHN.js +149 -0
  33. package/dist/chunk-HXNMDPHN.js.map +1 -0
  34. package/dist/{chunk-7UVDIWLL.js → chunk-JNKH2XWQ.js} +36 -6
  35. package/dist/chunk-JNKH2XWQ.js.map +1 -0
  36. package/dist/{chunk-IPLYGWQF.js → chunk-KQAFEZQX.js} +5 -5
  37. package/dist/{chunk-OOO7ZKOD.js → chunk-KYH53EFD.js} +3 -3
  38. package/dist/{chunk-LQ6JI4VH.js → chunk-LD53WPMU.js} +4 -4
  39. package/dist/{chunk-KO6OL4I7.js → chunk-MQTPUPLP.js} +297 -17
  40. package/dist/chunk-MQTPUPLP.js.map +1 -0
  41. package/dist/{chunk-TSGREOYY.js → chunk-RHWFMBO5.js} +33 -6
  42. package/dist/chunk-RHWFMBO5.js.map +1 -0
  43. package/dist/{chunk-5CEJH5ZN.js → chunk-TAPSNIMA.js} +4 -4
  44. package/dist/{chunk-K7I24ZO2.js → chunk-THKNO6OX.js} +22 -21
  45. package/dist/{chunk-K7I24ZO2.js.map → chunk-THKNO6OX.js.map} +1 -1
  46. package/dist/{chunk-QLRYXOAD.js → chunk-UDJLF3BO.js} +2 -2
  47. package/dist/{chunk-NCRDCTEJ.js → chunk-WYB44HHV.js} +21 -7
  48. package/dist/chunk-WYB44HHV.js.map +1 -0
  49. package/dist/{chunk-WRFKZEO6.js → chunk-YQGHW5ML.js} +4 -4
  50. package/dist/{cli-CrSW_KRq.d.ts → cli-DoQsv4ut.d.ts} +2 -2
  51. package/dist/cli.d.ts +6 -5
  52. package/dist/cli.js +26 -25
  53. package/dist/contradiction/index.js +4 -4
  54. package/dist/explicit-capture.d.ts +4 -3
  55. package/dist/index.d.ts +6 -5
  56. package/dist/index.js +33 -31
  57. package/dist/index.js.map +1 -1
  58. package/dist/mcp-memory-inspector-app.d.ts +5 -4
  59. package/dist/namespaces/migrate.js +8 -8
  60. package/dist/namespaces/search.js +7 -7
  61. package/dist/operator-toolkit.js +11 -10
  62. package/dist/orchestration/maintenance.d.ts +112 -0
  63. package/dist/orchestration/maintenance.js +39 -0
  64. package/dist/orchestration/maintenance.js.map +1 -0
  65. package/dist/{orchestrator-DvswGK76.d.ts → orchestrator-CNJCYjZ1.d.ts} +9 -33
  66. package/dist/orchestrator.d.ts +2 -1
  67. package/dist/orchestrator.js +13 -11
  68. package/dist/schemas.d.ts +28 -28
  69. package/dist/search/factory.js +6 -6
  70. package/dist/search/index.js +11 -11
  71. package/dist/search/lancedb-backend.js +2 -2
  72. package/dist/search/meilisearch-backend.js +2 -2
  73. package/dist/search/orama-backend.js +2 -2
  74. package/dist/transfer/autodetect.js +1 -1
  75. package/dist/transfer/backup.js +1 -1
  76. package/dist/transfer/capsule-export.js +2 -2
  77. package/dist/transfer/types.d.ts +12 -12
  78. package/package.json +12 -2
  79. package/src/access-boundary.ts +2 -1
  80. package/src/access-cli.ts +65 -2
  81. package/src/access-http.ts +20 -0
  82. package/src/access-mcp.ts +29 -0
  83. package/src/access-operations.ts +46 -0
  84. package/src/access-service.ts +55 -0
  85. package/src/access-surface-catalog.test.ts +1 -1
  86. package/src/access-surface-catalog.ts +2 -0
  87. package/src/cli.ts +1 -0
  88. package/src/coding/coding-namespace.ts +1 -1
  89. package/src/coding/session-delta-surfaces.test.ts +383 -0
  90. package/src/coding/session-delta-surfaces.ts +325 -0
  91. package/src/coding/session-delta.test.ts +411 -0
  92. package/src/coding/session-delta.ts +442 -0
  93. package/src/orchestration/maintenance.test.ts +738 -0
  94. package/src/orchestration/maintenance.ts +557 -0
  95. package/src/orchestrator-flush.test.ts +0 -599
  96. package/src/orchestrator.ts +33 -419
  97. package/dist/chunk-7MOTEVAA.js.map +0 -1
  98. package/dist/chunk-7UVDIWLL.js.map +0 -1
  99. package/dist/chunk-KO6OL4I7.js.map +0 -1
  100. package/dist/chunk-NCRDCTEJ.js.map +0 -1
  101. package/dist/chunk-QNG35H27.js.map +0 -1
  102. package/dist/chunk-TJ5IIQIR.js.map +0 -1
  103. package/dist/chunk-TSGREOYY.js.map +0 -1
  104. package/dist/chunk-VH2DHBHG.js.map +0 -1
  105. /package/dist/{chunk-UUMYB3FR.js.map → chunk-6ZNIUGXB.js.map} +0 -0
  106. /package/dist/{chunk-IPJD7WJH.js.map → chunk-E6BOD3UJ.js.map} +0 -0
  107. /package/dist/{chunk-D3DNGQNQ.js.map → chunk-FM7KLRKN.js.map} +0 -0
  108. /package/dist/{chunk-IPLYGWQF.js.map → chunk-KQAFEZQX.js.map} +0 -0
  109. /package/dist/{chunk-OOO7ZKOD.js.map → chunk-KYH53EFD.js.map} +0 -0
  110. /package/dist/{chunk-LQ6JI4VH.js.map → chunk-LD53WPMU.js.map} +0 -0
  111. /package/dist/{chunk-5CEJH5ZN.js.map → chunk-TAPSNIMA.js.map} +0 -0
  112. /package/dist/{chunk-QLRYXOAD.js.map → chunk-UDJLF3BO.js.map} +0 -0
  113. /package/dist/{chunk-WRFKZEO6.js.map → chunk-YQGHW5ML.js.map} +0 -0
@@ -1,4 +1,4 @@
1
- import { e as EngramAccessRecallResponse } from './access-service-CKnFdxH-.js';
1
+ import { g as EngramAccessRecallResponse } from './access-service-DxCpgyVW.js';
2
2
  import { ActionConfidenceRequest } from './access-schema.js';
3
3
  import { RecallXraySnapshot } from './recall-xray.js';
4
4
  import { ActionConfidenceResult } from './action-confidence.js';
@@ -22,7 +22,7 @@ import './user-model.js';
22
22
  import './recall-audit-anomaly.js';
23
23
  import './recall-audit.js';
24
24
  import './explicit-capture.js';
25
- import './orchestrator-DvswGK76.js';
25
+ import './orchestrator-CNJCYjZ1.js';
26
26
  import './briefing.js';
27
27
  import './buffer.js';
28
28
  import './transcript.js';
@@ -32,6 +32,9 @@ import './model-registry.js';
32
32
  import './local-llm.js';
33
33
  import './fallback-llm.js';
34
34
  import './resolve-provider-secret.js';
35
+ import './orchestration/maintenance.js';
36
+ import './namespaces/search.js';
37
+ import './catalog-BEWLjdOr.js';
35
38
  import './live-connectors-runner.js';
36
39
  import './framework-CNDn2164.js';
37
40
  import './relevance.js';
@@ -54,8 +57,6 @@ import './conversation-index/backend.js';
54
57
  import './conversation-index/chunker.js';
55
58
  import './faiss-adapter-BHecI1fF.js';
56
59
  import './runtime/child-process.js';
57
- import './catalog-BEWLjdOr.js';
58
- import './namespaces/search.js';
59
60
  import './shared-context/manager.js';
60
61
  import 'zod';
61
62
  import './compounding/engine.js';
@@ -2,18 +2,18 @@ import {
2
2
  listNamespaces,
3
3
  runNamespaceMigration,
4
4
  verifyNamespaces
5
- } from "../chunk-D3DNGQNQ.js";
5
+ } from "../chunk-FM7KLRKN.js";
6
6
  import "../chunk-W4ELOUNX.js";
7
- import "../chunk-IPJD7WJH.js";
8
- import "../chunk-UUMYB3FR.js";
9
- import "../chunk-5CEJH5ZN.js";
10
- import "../chunk-WRFKZEO6.js";
11
- import "../chunk-CYEPCZN5.js";
12
- import "../chunk-LQ6JI4VH.js";
7
+ import "../chunk-E6BOD3UJ.js";
8
+ import "../chunk-6ZNIUGXB.js";
13
9
  import "../chunk-SANZHXY2.js";
14
- import "../chunk-AER6MT24.js";
15
10
  import "../chunk-EHISUJFN.js";
11
+ import "../chunk-TAPSNIMA.js";
12
+ import "../chunk-YQGHW5ML.js";
13
+ import "../chunk-CYEPCZN5.js";
14
+ import "../chunk-LD53WPMU.js";
16
15
  import "../chunk-CINZGPSJ.js";
16
+ import "../chunk-AER6MT24.js";
17
17
  import "../chunk-ZFXCQPNO.js";
18
18
  import "../chunk-DCWIQFNA.js";
19
19
  import "../chunk-XBZQRZ6G.js";
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  NamespaceSearchRouter,
3
3
  namespaceCollectionName
4
- } from "../chunk-IPJD7WJH.js";
5
- import "../chunk-UUMYB3FR.js";
6
- import "../chunk-5CEJH5ZN.js";
7
- import "../chunk-WRFKZEO6.js";
8
- import "../chunk-CYEPCZN5.js";
9
- import "../chunk-LQ6JI4VH.js";
4
+ } from "../chunk-E6BOD3UJ.js";
5
+ import "../chunk-6ZNIUGXB.js";
10
6
  import "../chunk-SANZHXY2.js";
11
- import "../chunk-AER6MT24.js";
12
7
  import "../chunk-EHISUJFN.js";
8
+ import "../chunk-TAPSNIMA.js";
9
+ import "../chunk-YQGHW5ML.js";
10
+ import "../chunk-CYEPCZN5.js";
11
+ import "../chunk-LD53WPMU.js";
13
12
  import "../chunk-CINZGPSJ.js";
13
+ import "../chunk-AER6MT24.js";
14
14
  import "../chunk-ZFXCQPNO.js";
15
15
  import "../chunk-DCWIQFNA.js";
16
16
  import "../chunk-XBZQRZ6G.js";
@@ -11,11 +11,12 @@ import {
11
11
  summarizeMemoryWorthLegacyCounters,
12
12
  summarizeObservationThroughput,
13
13
  summarizeTierDistribution
14
- } from "./chunk-OOO7ZKOD.js";
15
- import "./chunk-D3DNGQNQ.js";
14
+ } from "./chunk-KYH53EFD.js";
15
+ import "./chunk-FM7KLRKN.js";
16
16
  import "./chunk-7XH7VJN4.js";
17
17
  import "./chunk-YBPYIAA5.js";
18
- import "./chunk-QNG35H27.js";
18
+ import "./chunk-HXNMDPHN.js";
19
+ import "./chunk-4IQNAOP3.js";
19
20
  import "./chunk-W4ELOUNX.js";
20
21
  import "./chunk-KFY3SGN7.js";
21
22
  import "./chunk-CMTINOFS.js";
@@ -28,16 +29,16 @@ import "./chunk-Z5LAYHGJ.js";
28
29
  import "./chunk-OO42R444.js";
29
30
  import "./chunk-K6MV3TRQ.js";
30
31
  import "./chunk-SAC5V6JT.js";
31
- import "./chunk-IPJD7WJH.js";
32
- import "./chunk-UUMYB3FR.js";
33
- import "./chunk-5CEJH5ZN.js";
34
- import "./chunk-WRFKZEO6.js";
35
- import "./chunk-CYEPCZN5.js";
36
- import "./chunk-LQ6JI4VH.js";
32
+ import "./chunk-E6BOD3UJ.js";
33
+ import "./chunk-6ZNIUGXB.js";
37
34
  import "./chunk-SANZHXY2.js";
38
- import "./chunk-AER6MT24.js";
39
35
  import "./chunk-EHISUJFN.js";
36
+ import "./chunk-TAPSNIMA.js";
37
+ import "./chunk-YQGHW5ML.js";
38
+ import "./chunk-CYEPCZN5.js";
39
+ import "./chunk-LD53WPMU.js";
40
40
  import "./chunk-CINZGPSJ.js";
41
+ import "./chunk-AER6MT24.js";
41
42
  import "./chunk-ZFXCQPNO.js";
42
43
  import "./chunk-DCWIQFNA.js";
43
44
  import "./chunk-XBZQRZ6G.js";
@@ -0,0 +1,112 @@
1
+ import { P as PluginConfig } from '../types-2NoBoRBM.js';
2
+ import { SearchBackend } from '../search/port.js';
3
+ import { NamespaceSearchRouter } from '../namespaces/search.js';
4
+ import { N as NamespaceCatalog } from '../catalog-BEWLjdOr.js';
5
+ import '../types-ByK7T3L6.js';
6
+ import '../index-DJ9QWMw-.js';
7
+
8
+ /**
9
+ * Maintenance scheduler — extracted from the orchestrator (issue #1526 PR1).
10
+ *
11
+ * Owns the WHEN of memory maintenance:
12
+ * - cron auto-registration (writes jobs.json entries the OpenClaw cron
13
+ * daemon picks up)
14
+ * - debounced + singleflight QMD index maintenance (re-index + embed
15
+ * after writes)
16
+ * - consolidation scheduling trigger (count + interval gated)
17
+ *
18
+ * Does NOT own the WHAT — the actual job runners (runSemanticConsolidation,
19
+ * runPatternReinforcement, runDeepSleepGovernanceNow, runConsolidation)
20
+ * remain on the orchestrator because they need the full LLM + extraction
21
+ * dependency surface. The scheduler invokes consolidation through a
22
+ * callback so the orchestrator stays the source of truth for that work.
23
+ *
24
+ * Behavior-preserving move from orchestrator.ts. No logic changes — the
25
+ * orchestrator keeps thin delegating methods so existing tests that stub
26
+ * `orchestrator.requestQmdMaintenance` etc. continue to work.
27
+ */
28
+
29
+ /** Dependencies injected by the orchestrator. All stable references. */
30
+ interface MaintenanceSchedulerDeps {
31
+ config: PluginConfig;
32
+ /** Live accessor — the orchestrator can reassign its qmd backend after
33
+ * construction (e.g. swap to NoopSearchBackend when the collection is
34
+ * missing), and the scheduler must always observe the current backend. */
35
+ getQmd: () => SearchBackend;
36
+ namespaceSearchRouter: NamespaceSearchRouter;
37
+ namespaceCatalog: NamespaceCatalog;
38
+ }
39
+ /**
40
+ * Schedules and debounces memory maintenance work. Owns the cadence +
41
+ * singleflight state that previously lived as private orchestrator fields.
42
+ *
43
+ * The orchestrator constructs one instance in its constructor and delegates
44
+ * the public scheduling entrypoints to it. Job execution stays on the
45
+ * orchestrator (LLM-heavy) and is invoked through callbacks.
46
+ */
47
+ declare class MaintenanceScheduler {
48
+ private readonly deps;
49
+ private nonZeroExtractionsSinceConsolidation;
50
+ private lastConsolidationRunAtMs;
51
+ private consolidationInFlight;
52
+ private qmdMaintenanceTimer;
53
+ private qmdMaintenancePending;
54
+ private qmdMaintenanceInFlight;
55
+ private lastQmdEmbedAtMs;
56
+ private lastQmdEmbedAtMsByNamespace;
57
+ constructor(deps: MaintenanceSchedulerDeps);
58
+ /**
59
+ * Register every cron job the daemon should run, gated by its config flag.
60
+ * Each registration is independent and non-fatal — a failure in one does
61
+ * not block the others (mirrors the orchestrator's prior sequential try/
62
+ * catch behavior exactly).
63
+ *
64
+ * Returns when all eligible registrations have completed so callers that
65
+ * `await deferredReady` can rely on jobs.json being current.
66
+ */
67
+ autoRegisterCrons(_signal: AbortSignal): Promise<void>;
68
+ autoRegisterDaySummaryCron(): Promise<void>;
69
+ autoRegisterNightlyGovernanceCron(): Promise<void>;
70
+ autoRegisterProceduralMiningCron(): Promise<void>;
71
+ autoRegisterContradictionScanCron(): Promise<void>;
72
+ autoRegisterPatternReinforcementCron(): Promise<void>;
73
+ autoRegisterGraphEdgeDecayCron(): Promise<void>;
74
+ /**
75
+ * Maybe trigger a background consolidation pass after an extraction.
76
+ * Counted + interval gated so a burst of extractions does not fan into a
77
+ * burst of consolidation passes. The consolidation runner itself is
78
+ * passed in as a callback because it lives on the orchestrator (LLM +
79
+ * storage dependency surface) and is not owned by this module.
80
+ */
81
+ maybeScheduleConsolidation(nonZeroExtraction: boolean, runConsolidation: () => Promise<unknown>): void;
82
+ /** Whether a background consolidation pass is currently running. Exposed so
83
+ * the orchestrator's waitForConsolidationIdle can poll idle state without
84
+ * owning the cadence state (issue #1526 PR1). */
85
+ isConsolidationInFlight(): boolean;
86
+ /** Whether a debounced QMD maintenance pass is armed and waiting for the
87
+ * debounce timer. Exposed so drain/teardown diagnostics (e.g. the bench
88
+ * adapter) can observe scheduler idle state after the #1526 PR1 extraction
89
+ * moved this flag off the orchestrator. */
90
+ isQmdMaintenancePending(): boolean;
91
+ /** Whether a QMD maintenance pass is currently running (singleflight guard).
92
+ * Exposed for drain/teardown diagnostics (see isQmdMaintenancePending). */
93
+ isQmdMaintenanceInFlight(): boolean;
94
+ /** Internal: queue a debounced QMD maintenance pass. */
95
+ private requestQmdMaintenance;
96
+ /**
97
+ * Public entrypoint for tool-driven QMD maintenance requests.
98
+ * Routes through existing debounced/singleflight maintenance controls.
99
+ */
100
+ requestQmdMaintenanceForTool(reason: string): void;
101
+ /** Internal: run a single QMD maintenance pass under singleflight guard. */
102
+ runQmdMaintenance(): Promise<void>;
103
+ /** Build the namespace-aware maintenance plan for one job. */
104
+ private namespaceMaintenancePlan;
105
+ /**
106
+ * Clear any pending debounce timer. Called from the orchestrator's
107
+ * destroy() so a late tick does not fire on a torn-down instance.
108
+ */
109
+ dispose(): void;
110
+ }
111
+
112
+ export { MaintenanceScheduler, type MaintenanceSchedulerDeps };
@@ -0,0 +1,39 @@
1
+ import {
2
+ MaintenanceScheduler
3
+ } from "../chunk-6C2BMUZA.js";
4
+ import "../chunk-666A3MOW.js";
5
+ import "../chunk-4IQNAOP3.js";
6
+ import "../chunk-W4ELOUNX.js";
7
+ import "../chunk-ZFXCQPNO.js";
8
+ import "../chunk-VFVG4NS2.js";
9
+ import "../chunk-M7XQSUBB.js";
10
+ import "../chunk-5UZXUTVO.js";
11
+ import "../chunk-5GPPACXK.js";
12
+ import "../chunk-SVOZFLIQ.js";
13
+ import "../chunk-J6A3CX5N.js";
14
+ import "../chunk-DQHZA7Y3.js";
15
+ import "../chunk-SCU65EZI.js";
16
+ import "../chunk-MB5RSUW6.js";
17
+ import "../chunk-6KYMPV2O.js";
18
+ import "../chunk-AWJ2FHCF.js";
19
+ import "../chunk-42JKGUFJ.js";
20
+ import "../chunk-RULE4VG5.js";
21
+ import "../chunk-LDXUBPMO.js";
22
+ import "../chunk-DM2T26WE.js";
23
+ import "../chunk-FVQJYWH7.js";
24
+ import "../chunk-G7D6GZ5J.js";
25
+ import "../chunk-VF4XKTX3.js";
26
+ import "../chunk-J2HSAU72.js";
27
+ import "../chunk-A6XUJE5D.js";
28
+ import "../chunk-P7FMDTKL.js";
29
+ import "../chunk-VS2IYZRU.js";
30
+ import "../chunk-U3PN77QT.js";
31
+ import "../chunk-ZPQVJEVQ.js";
32
+ import "../chunk-4DJQYKMN.js";
33
+ import "../chunk-JUC24CTX.js";
34
+ import "../chunk-NU3CSQ4H.js";
35
+ import "../chunk-PZ5AY32C.js";
36
+ export {
37
+ MaintenanceScheduler
38
+ };
39
+ //# sourceMappingURL=maintenance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -6,6 +6,7 @@ import { TranscriptManager } from './transcript.js';
6
6
  import { HourlySummarizer } from './summarizer.js';
7
7
  import { LocalLlmClient } from './local-llm.js';
8
8
  import { FallbackLlmClient } from './fallback-llm.js';
9
+ import { MaintenanceScheduler } from './orchestration/maintenance.js';
9
10
  import { LiveConnectorsRunSummary } from './live-connectors-runner.js';
10
11
  import { ModelRegistry } from './model-registry.js';
11
12
  import { RelevanceStore } from './relevance.js';
@@ -929,6 +930,12 @@ declare class Orchestrator {
929
930
  private namespaceStorageDirHintsLoaded;
930
931
  private readonly namespaceSearchRouter;
931
932
  qmd: SearchBackend;
933
+ /**
934
+ * Maintenance scheduler (issue #1526 PR1). Owns cron auto-registration,
935
+ * debounced QMD index maintenance, and consolidation scheduling. Job
936
+ * runners (consolidation/pattern-reinforcement/governance) stay here.
937
+ */
938
+ readonly maintenanceScheduler: MaintenanceScheduler;
932
939
  private readonly conversationQmd?;
933
940
  private readonly conversationFaiss?;
934
941
  private readonly conversationIndexBackend?;
@@ -1031,17 +1038,9 @@ declare class Orchestrator {
1031
1038
  private queueProcessing;
1032
1039
  private heartbeatObserverChains;
1033
1040
  private recentExtractionFingerprints;
1034
- private nonZeroExtractionsSinceConsolidation;
1035
- private lastConsolidationRunAtMs;
1036
- private consolidationInFlight;
1037
1041
  private readonly consolidationObservers;
1038
- private qmdMaintenanceTimer;
1039
1042
  private wearablesServiceInstance;
1040
1043
  private wearablesAutoSyncHandle;
1041
- private qmdMaintenancePending;
1042
- private qmdMaintenanceInFlight;
1043
- private lastQmdEmbedAtMs;
1044
- private lastQmdEmbedAtMsByNamespace;
1045
1044
  private lastQmdReprobeAtMs;
1046
1045
  private tierMigrationInFlight;
1047
1046
  private lastTierMigrationRunAtMs;
@@ -1233,16 +1232,6 @@ declare class Orchestrator {
1233
1232
  private namespaceStorageDirHintOwnershipRank;
1234
1233
  private preferNamespaceStorageDirHintOwner;
1235
1234
  private loadNamespaceStorageDirHintsFromCatalog;
1236
- /**
1237
- * Shared namespace maintenance planner (issue #1500). This extends the
1238
- * #1499 catalog-union QMD helper into a reusable contract: configured
1239
- * namespaces are always considered, dynamic catalog namespaces are admitted
1240
- * only when their live router root still matches real memory data, and branch
1241
- * namespaces are opt-in. Recurring jobs use the per-cycle budget; startup and
1242
- * recovery discovery paths use the same safety filters without that cycle
1243
- * budget so every live namespace is ensured/synced.
1244
- */
1245
- private namespaceMaintenancePlan;
1246
1235
  private maintenanceNamespaces;
1247
1236
  /**
1248
1237
  * Fan out a maintenance job across all maintained namespaces (issue #1500).
@@ -1345,17 +1334,6 @@ declare class Orchestrator {
1345
1334
  * Returns true if the sync succeeded (QMD now available), false otherwise.
1346
1335
  */
1347
1336
  startupSearchSync(signal?: AbortSignal): Promise<boolean>;
1348
- /**
1349
- * Auto-register the engram-day-summary cron job in OpenClaw.
1350
- * Reconciles model and timezone on every startup so config changes propagate.
1351
- * Fire-and-forget — never blocks init or crashes on failure.
1352
- * Issues #1474, #1475.
1353
- */
1354
- private autoRegisterDaySummaryCron;
1355
- private autoRegisterNightlyGovernanceCron;
1356
- private autoRegisterProceduralMiningCron;
1357
- private autoRegisterContradictionScanCron;
1358
- private autoRegisterPatternReinforcementCron;
1359
1337
  /**
1360
1338
  * Run the pattern-reinforcement maintenance job (issue #687 PR 2/4).
1361
1339
  *
@@ -1418,7 +1396,6 @@ declare class Orchestrator {
1418
1396
  runDeepSleepGovernanceFanout(options?: {
1419
1397
  dryRun?: boolean;
1420
1398
  }): Promise<NamespaceMaintenanceSummary>;
1421
- private autoRegisterGraphEdgeDecayCron;
1422
1399
  runLiveConnectors(options?: {
1423
1400
  force?: boolean;
1424
1401
  abortSignal?: AbortSignal;
@@ -1755,13 +1732,12 @@ declare class Orchestrator {
1755
1732
  limit?: number;
1756
1733
  }): Promise<TierMigrationCycleSummary>;
1757
1734
  private maybeScheduleConsolidation;
1758
- private requestQmdMaintenance;
1735
+ requestQmdMaintenance(): void;
1759
1736
  /**
1760
1737
  * Public entrypoint for tool-driven QMD maintenance requests.
1761
- * Routes through existing debounced/singleflight maintenance controls.
1738
+ * Delegates to the maintenance scheduler (issue #1526 PR1).
1762
1739
  */
1763
1740
  requestQmdMaintenanceForTool(reason: string): void;
1764
- private runQmdMaintenance;
1765
1741
  private persistExtraction;
1766
1742
  private indexPersistedMemory;
1767
1743
  /**
@@ -6,8 +6,9 @@ import './transcript.js';
6
6
  import './summarizer.js';
7
7
  import './local-llm.js';
8
8
  import './fallback-llm.js';
9
+ import './orchestration/maintenance.js';
9
10
  import './live-connectors-runner.js';
10
- export { L as BulkImportBatchIngestResult, M as BulkImportBatchPartialFailureError, N as GraphRecallRankedResult, Q as GraphRecallShadowComparison, G as GraphRecallSnapshot, I as IntentDebugSnapshot, O as Orchestrator, T as QmdRecallSnapshot, U as RecallInvocationOptions, V as RecallModeDecision, X as appendMemoryToGraphContext, Y as blendGraphExpandedRecallScore, Z as buildCompressionGuidelinesMarkdown, _ as buildMemoryPathById, $ as computeArtifactCandidateFetchLimit, a0 as computeArtifactRecallLimit, a1 as computeQmdHybridFetchLimit, a2 as dedupeEntitySynthesisEvidenceEntries, q as defaultWorkspaceDir, a3 as deriveTopicsFromExtraction, a4 as filterRecallCandidates, a5 as formatCompressionGuidelinesForRecall, a6 as graphPathRelativeToStorage, a7 as hasIdentityRecoveryIntent, a8 as isArtifactMemoryPath, a9 as lifecycleRecallScoreAdjustment, aa as mergeArtifactRecallCandidates, ab as mergeGraphExpandedResults, ac as resolveEffectiveIdentityInjectionMode, ad as resolveEffectiveRecallMode, ae as resolvePersistedMemoryRelativePath, af as resolveRecallModeDecision, ag as resolveRecallModeDecisionAsync, ah as resolveRecentThreadMemoryPaths, A as sanitizeSessionKeyForFilename, ai as shouldFilterLifecycleRecallCandidate, aj as summarizeGraphShadowComparison } from './orchestrator-DvswGK76.js';
11
+ export { L as BulkImportBatchIngestResult, M as BulkImportBatchPartialFailureError, N as GraphRecallRankedResult, Q as GraphRecallShadowComparison, G as GraphRecallSnapshot, I as IntentDebugSnapshot, O as Orchestrator, T as QmdRecallSnapshot, U as RecallInvocationOptions, V as RecallModeDecision, X as appendMemoryToGraphContext, Y as blendGraphExpandedRecallScore, Z as buildCompressionGuidelinesMarkdown, _ as buildMemoryPathById, $ as computeArtifactCandidateFetchLimit, a0 as computeArtifactRecallLimit, a1 as computeQmdHybridFetchLimit, a2 as dedupeEntitySynthesisEvidenceEntries, q as defaultWorkspaceDir, a3 as deriveTopicsFromExtraction, a4 as filterRecallCandidates, a5 as formatCompressionGuidelinesForRecall, a6 as graphPathRelativeToStorage, a7 as hasIdentityRecoveryIntent, a8 as isArtifactMemoryPath, a9 as lifecycleRecallScoreAdjustment, aa as mergeArtifactRecallCandidates, ab as mergeGraphExpandedResults, ac as resolveEffectiveIdentityInjectionMode, ad as resolveEffectiveRecallMode, ae as resolvePersistedMemoryRelativePath, af as resolveRecallModeDecision, ag as resolveRecallModeDecisionAsync, ah as resolveRecentThreadMemoryPaths, A as sanitizeSessionKeyForFilename, ai as shouldFilterLifecycleRecallCandidate, aj as summarizeGraphShadowComparison } from './orchestrator-CNJCYjZ1.js';
11
12
  import './model-registry.js';
12
13
  import './relevance.js';
13
14
  import './negative.js';
@@ -28,8 +28,9 @@ import {
28
28
  sanitizeSessionKeyForFilename,
29
29
  shouldFilterLifecycleRecallCandidate,
30
30
  summarizeGraphShadowComparison
31
- } from "./chunk-TJ5IIQIR.js";
31
+ } from "./chunk-F7BVJ3IE.js";
32
32
  import "./chunk-5KBNNUXS.js";
33
+ import "./chunk-6C2BMUZA.js";
33
34
  import "./chunk-666A3MOW.js";
34
35
  import "./chunk-7HYPN2GC.js";
35
36
  import "./chunk-HHLLAQGZ.js";
@@ -93,8 +94,8 @@ import "./chunk-6HEM6HTQ.js";
93
94
  import "./chunk-ZA2S2VLL.js";
94
95
  import "./chunk-U2OBZSGG.js";
95
96
  import "./chunk-EO5QWINU.js";
96
- import "./chunk-WIWPSQYU.js";
97
97
  import "./chunk-2PRQG7PV.js";
98
+ import "./chunk-WIWPSQYU.js";
98
99
  import "./chunk-2F6NP3NT.js";
99
100
  import "./chunk-TERNBNJB.js";
100
101
  import "./chunk-3VVH6ZQW.js";
@@ -105,7 +106,8 @@ import "./chunk-PONNZ54D.js";
105
106
  import "./chunk-S4DDLTPX.js";
106
107
  import "./chunk-SFQ6QNL7.js";
107
108
  import "./chunk-33JBK2XP.js";
108
- import "./chunk-QNG35H27.js";
109
+ import "./chunk-HXNMDPHN.js";
110
+ import "./chunk-4IQNAOP3.js";
109
111
  import "./chunk-W4ELOUNX.js";
110
112
  import "./chunk-KFY3SGN7.js";
111
113
  import "./chunk-TQNRI55H.js";
@@ -143,23 +145,23 @@ import "./chunk-Z5LAYHGJ.js";
143
145
  import "./chunk-LBJBNWS2.js";
144
146
  import "./chunk-OADWQ5CR.js";
145
147
  import "./chunk-7WV3F5DQ.js";
146
- import "./chunk-7MOTEVAA.js";
148
+ import "./chunk-HRUULBBV.js";
147
149
  import "./chunk-RS25QOKZ.js";
148
150
  import "./chunk-JGSKJHF7.js";
149
151
  import "./chunk-FF4KLI5W.js";
150
152
  import "./chunk-AFWEUTMS.js";
151
153
  import "./chunk-CI7RKSRE.js";
152
154
  import "./chunk-6HMYUWXR.js";
153
- import "./chunk-IPJD7WJH.js";
154
- import "./chunk-UUMYB3FR.js";
155
- import "./chunk-5CEJH5ZN.js";
156
- import "./chunk-WRFKZEO6.js";
157
- import "./chunk-CYEPCZN5.js";
158
- import "./chunk-LQ6JI4VH.js";
155
+ import "./chunk-E6BOD3UJ.js";
156
+ import "./chunk-6ZNIUGXB.js";
159
157
  import "./chunk-SANZHXY2.js";
160
- import "./chunk-AER6MT24.js";
161
158
  import "./chunk-EHISUJFN.js";
159
+ import "./chunk-TAPSNIMA.js";
160
+ import "./chunk-YQGHW5ML.js";
161
+ import "./chunk-CYEPCZN5.js";
162
+ import "./chunk-LD53WPMU.js";
162
163
  import "./chunk-CINZGPSJ.js";
164
+ import "./chunk-AER6MT24.js";
163
165
  import "./chunk-ZFXCQPNO.js";
164
166
  import "./chunk-DCWIQFNA.js";
165
167
  import "./chunk-XBZQRZ6G.js";