@remnic/core 9.3.733 → 9.3.734
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.
- package/dist/access-boundary.d.ts +10 -10
- package/dist/access-boundary.js +9 -9
- package/dist/access-cli.js +25 -23
- package/dist/access-cli.js.map +1 -1
- package/dist/access-http.d.ts +10 -10
- package/dist/access-http.js +14 -14
- package/dist/access-mcp.d.ts +10 -10
- package/dist/access-mcp.js +13 -13
- package/dist/access-operations-batch.js +11 -11
- package/dist/access-operations.d.ts +10 -10
- package/dist/access-operations.js +12 -12
- package/dist/{access-service-Byoe3HsT.d.ts → access-service-rjFfmfKB.d.ts} +4 -4
- package/dist/access-service.d.ts +10 -10
- package/dist/access-service.js +8 -8
- package/dist/access-surface-catalog.d.ts +10 -10
- package/dist/action-confidence.d.ts +1 -1
- package/dist/active-memory-bridge.d.ts +1 -1
- package/dist/active-memory-bridge.js +3 -2
- package/dist/active-recall.d.ts +1 -1
- package/dist/behavior-learner.d.ts +1 -1
- package/dist/behavior-signals.d.ts +1 -1
- package/dist/bootstrap.d.ts +9 -9
- package/dist/briefing.d.ts +1 -1
- package/dist/buffer-surprise-report.d.ts +1 -1
- package/dist/buffer.d.ts +1 -1
- package/dist/calibration.d.ts +1 -1
- package/dist/capabilities.d.ts +97 -2
- package/dist/capabilities.js +11 -3
- package/dist/{catalog-DM1nk7cM.d.ts → catalog-DHYXzM4-.d.ts} +2 -2
- package/dist/causal-behavior.d.ts +1 -1
- package/dist/causal-consolidation.d.ts +1 -1
- package/dist/causal-trajectory-graph.d.ts +1 -1
- package/dist/{chunk-24D66MMN.js → chunk-2L5RTVMO.js} +7 -4
- package/dist/chunk-2L5RTVMO.js.map +1 -0
- package/dist/{chunk-KQYGNGON.js → chunk-3QETM5NG.js} +6 -3
- package/dist/chunk-3QETM5NG.js.map +1 -0
- package/dist/{chunk-ZQUAVZNG.js → chunk-54RCE5Z3.js} +7 -4
- package/dist/chunk-54RCE5Z3.js.map +1 -0
- package/dist/{chunk-NOU77OHX.js → chunk-5DIKZKOD.js} +2 -2
- package/dist/{chunk-CGPHMNL4.js → chunk-5OYHJIJN.js} +10 -6
- package/dist/chunk-5OYHJIJN.js.map +1 -0
- package/dist/{chunk-LUCARK4W.js → chunk-6U7TES2M.js} +29 -28
- package/dist/chunk-6U7TES2M.js.map +1 -0
- package/dist/{chunk-FFUCCKPN.js → chunk-7FPJFCXL.js} +10 -7
- package/dist/chunk-7FPJFCXL.js.map +1 -0
- package/dist/{chunk-PMAQRUN4.js → chunk-CILX2XW7.js} +5 -2
- package/dist/chunk-CILX2XW7.js.map +1 -0
- package/dist/{chunk-ZVHRSR2R.js → chunk-ET5HXSQL.js} +6 -3
- package/dist/chunk-ET5HXSQL.js.map +1 -0
- package/dist/{chunk-KSJCXXOU.js → chunk-FAGERSH2.js} +6 -3
- package/dist/chunk-FAGERSH2.js.map +1 -0
- package/dist/{chunk-FYWUNVFZ.js → chunk-IDIXGGDN.js} +6 -6
- package/dist/{chunk-CX77GNMB.js → chunk-IWMGBNXY.js} +6 -3
- package/dist/chunk-IWMGBNXY.js.map +1 -0
- package/dist/{chunk-GGL34GCW.js → chunk-IZLTOS5L.js} +7 -4
- package/dist/chunk-IZLTOS5L.js.map +1 -0
- package/dist/{chunk-HHNSLPX7.js → chunk-K7PAILHO.js} +10 -9
- package/dist/chunk-K7PAILHO.js.map +1 -0
- package/dist/{chunk-UZYLX7M6.js → chunk-LV32K4OP.js} +9 -6
- package/dist/chunk-LV32K4OP.js.map +1 -0
- package/dist/{chunk-HJWQJUKQ.js → chunk-NDYQIN6C.js} +3 -3
- package/dist/{chunk-DKT3X5C3.js → chunk-PEF2XOIV.js} +7 -4
- package/dist/chunk-PEF2XOIV.js.map +1 -0
- package/dist/{chunk-646B5ERJ.js → chunk-PKO5NJ65.js} +51 -48
- package/dist/chunk-PKO5NJ65.js.map +1 -0
- package/dist/{chunk-QZHF4BWN.js → chunk-Q5LGXWNG.js} +6 -6
- package/dist/{chunk-ESF7TRYJ.js → chunk-SHJGBAIW.js} +37 -2
- package/dist/{chunk-ESF7TRYJ.js.map → chunk-SHJGBAIW.js.map} +1 -1
- package/dist/{chunk-O4ZIBPIW.js → chunk-T7CGPTFU.js} +3 -3
- package/dist/{chunk-PLBIPT6I.js → chunk-TJSQHO4Q.js} +7 -4
- package/dist/chunk-TJSQHO4Q.js.map +1 -0
- package/dist/{chunk-6TUWSUUD.js → chunk-UF3N7IRP.js} +26 -24
- package/dist/chunk-UF3N7IRP.js.map +1 -0
- package/dist/{chunk-P3VJCTVE.js → chunk-UH3NYOHN.js} +4 -3
- package/dist/chunk-UH3NYOHN.js.map +1 -0
- package/dist/{chunk-J6BH2OBA.js → chunk-UK6U5C3N.js} +8 -5
- package/dist/chunk-UK6U5C3N.js.map +1 -0
- package/dist/{chunk-OTQE66IX.js → chunk-V5OVSGB6.js} +6 -3
- package/dist/chunk-V5OVSGB6.js.map +1 -0
- package/dist/{chunk-H3MB3F62.js → chunk-WHQ2JB35.js} +4 -3
- package/dist/chunk-WHQ2JB35.js.map +1 -0
- package/dist/{chunk-NIZQH6AU.js → chunk-WTTVFSCO.js} +8 -7
- package/dist/chunk-WTTVFSCO.js.map +1 -0
- package/dist/{chunk-OUITHS6V.js → chunk-Z7J3OAPR.js} +357 -325
- package/dist/chunk-Z7J3OAPR.js.map +1 -0
- package/dist/{cli-Dt-tuiYH.d.ts → cli-XVpmSoQs.d.ts} +3 -3
- package/dist/cli.d.ts +11 -11
- package/dist/cli.js +20 -20
- package/dist/compounding/engine.d.ts +3 -2
- package/dist/compounding/engine.js +2 -1
- package/dist/compounding/preference-consolidator.d.ts +1 -1
- package/dist/compression-optimizer.d.ts +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/connectors/codex-materialize-runner.d.ts +1 -1
- package/dist/connectors/codex-materialize.d.ts +1 -1
- package/dist/connectors/index.d.ts +1 -1
- package/dist/consolidation-provenance-check.d.ts +1 -1
- package/dist/consolidation-undo.d.ts +1 -1
- package/dist/contradiction/index.d.ts +2 -2
- package/dist/contradiction/index.js +2 -1
- package/dist/{contradiction-scan-HWGEOUDS.js → contradiction-scan-OUHMCUBT.js} +3 -2
- package/dist/conversation-index/backend.d.ts +1 -1
- package/dist/conversation-index/chunker.d.ts +1 -1
- package/dist/conversation-index/faiss-adapter.d.ts +1 -1
- package/dist/conversation-index/indexer.d.ts +1 -1
- package/dist/conversation-index/search.d.ts +1 -1
- package/dist/day-summary.d.ts +1 -1
- package/dist/delinearize.d.ts +1 -1
- package/dist/direct-answer-wiring.d.ts +1 -1
- package/dist/direct-answer.d.ts +1 -1
- package/dist/embedding-fallback.d.ts +1 -1
- package/dist/embedding-fallback.js +2 -2
- package/dist/enrichment/index.d.ts +1 -1
- package/dist/entity-retrieval.d.ts +1 -1
- package/dist/entity-retrieval.js +2 -1
- package/dist/entity-schema.d.ts +1 -1
- package/dist/explicit-capture.d.ts +9 -9
- package/dist/explicit-capture.js +2 -1
- package/dist/extraction-faithfulness.d.ts +1 -1
- package/dist/extraction-judge-telemetry.d.ts +1 -1
- package/dist/extraction-judge-training.d.ts +1 -1
- package/dist/extraction-judge.d.ts +1 -1
- package/dist/extraction.d.ts +1 -1
- package/dist/extraction.js +3 -3
- package/dist/fallback-llm.d.ts +1 -1
- package/dist/{first-start-migration-OOR57AYR.js → first-start-migration-W4U6XDKI.js} +7 -6
- package/dist/first-start-migration-W4U6XDKI.js.map +1 -0
- package/dist/graph-dashboard-diff.d.ts +1 -1
- package/dist/graph-dashboard-key.d.ts +1 -1
- package/dist/graph-dashboard-parser.d.ts +1 -1
- package/dist/graph-edge-reinforcement.d.ts +1 -1
- package/dist/graph-snapshot.d.ts +1 -1
- package/dist/graph.d.ts +1 -1
- package/dist/identity-continuity.d.ts +1 -1
- package/dist/importance.d.ts +1 -1
- package/dist/index.d.ts +12 -12
- package/dist/index.js +43 -43
- package/dist/intent.d.ts +1 -1
- package/dist/lcm/engine.d.ts +1 -1
- package/dist/lcm/index.d.ts +1 -1
- package/dist/lcm/tools.d.ts +1 -1
- package/dist/lifecycle.d.ts +1 -1
- package/dist/live-connectors-runner.d.ts +1 -1
- package/dist/local-llm.d.ts +1 -1
- package/dist/local-llm.js +2 -1
- package/dist/local-model-endpoint.d.ts +1 -1
- package/dist/maintenance/memory-governance.d.ts +1 -1
- package/dist/mcp-memory-inspector-app.d.ts +10 -10
- package/dist/memory-action-policy.d.ts +1 -1
- package/dist/memory-cache.d.ts +1 -1
- package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
- package/dist/memory-projection-store.d.ts +1 -1
- package/dist/memory-provenance.d.ts +1 -1
- package/dist/memory-worth-outcomes.d.ts +1 -1
- package/dist/models-json.d.ts +1 -1
- package/dist/namespaces/migrate.d.ts +2 -2
- package/dist/namespaces/migrate.js +6 -6
- package/dist/namespaces/principal.d.ts +1 -1
- package/dist/namespaces/principal.js +2 -1
- package/dist/namespaces/search.d.ts +1 -1
- package/dist/namespaces/search.js +4 -4
- package/dist/namespaces/storage.d.ts +2 -2
- package/dist/namespaces/storage.js +2 -1
- package/dist/native-knowledge.d.ts +1 -1
- package/dist/operator-toolkit.d.ts +1 -1
- package/dist/operator-toolkit.js +11 -11
- package/dist/orchestration/compression-guideline-coordinator.d.ts +1 -1
- package/dist/orchestration/maintenance.d.ts +2 -2
- package/dist/orchestration/maintenance.js +6 -5
- package/dist/{orchestrator-B4KjaOtY.d.ts → orchestrator-BXi-gadS.d.ts} +66 -5
- package/dist/orchestrator.d.ts +5 -5
- package/dist/orchestrator.js +20 -18
- package/dist/patterns-cli.d.ts +1 -1
- package/dist/policy-runtime.d.ts +1 -1
- package/dist/provenance.d.ts +1 -1
- package/dist/qmd-recall-cache.d.ts +1 -1
- package/dist/qmd.d.ts +1 -1
- package/dist/recall-disclosure-escalation.d.ts +1 -1
- package/dist/recall-explain-renderer.d.ts +1 -1
- package/dist/recall-planner-llm.d.ts +1 -1
- package/dist/recall-state.d.ts +1 -1
- package/dist/recall-tag-filter.d.ts +1 -1
- package/dist/recall-xray-cli.d.ts +1 -1
- package/dist/recall-xray-renderer.d.ts +1 -1
- package/dist/recall-xray.d.ts +1 -1
- package/dist/resolve-auth-token.d.ts +1 -1
- package/dist/retrieval-agents.d.ts +1 -1
- package/dist/retrieval-tiers.d.ts +1 -1
- package/dist/routing/engine.d.ts +1 -1
- package/dist/routing/store.d.ts +1 -1
- package/dist/schemas.d.ts +22 -22
- package/dist/search/embed-helper.d.ts +1 -1
- package/dist/search/embed-helper.js +2 -2
- package/dist/search/factory.d.ts +1 -1
- package/dist/search/factory.js +3 -3
- package/dist/search/index.d.ts +1 -1
- package/dist/search/index.js +3 -3
- package/dist/search/lancedb-backend.d.ts +1 -1
- package/dist/search/meilisearch-backend.d.ts +1 -1
- package/dist/search/noop-backend.d.ts +1 -1
- package/dist/search/orama-backend.d.ts +1 -1
- package/dist/search/port.d.ts +1 -1
- package/dist/search/remote-backend.d.ts +1 -1
- package/dist/{semantic-SLAa_prH.d.ts → semantic-DJR8_DMQ.d.ts} +1 -1
- package/dist/{semantic-consolidation-CstTvHPo.d.ts → semantic-consolidation-DeL5grLx.d.ts} +1 -1
- package/dist/semantic-consolidation.d.ts +2 -2
- package/dist/semantic-rule-verifier.d.ts +1 -1
- package/dist/session-observer-bands.d.ts +1 -1
- package/dist/session-observer-state.d.ts +1 -1
- package/dist/shared-context/manager.d.ts +1 -1
- package/dist/signal.d.ts +1 -1
- package/dist/storage.d.ts +1 -1
- package/dist/summarizer.d.ts +1 -1
- package/dist/summarizer.js +3 -2
- package/dist/summary-snapshot.d.ts +1 -1
- package/dist/temporal-supersession.d.ts +1 -1
- package/dist/temporal-validity.d.ts +1 -1
- package/dist/threading.d.ts +1 -1
- package/dist/tier-migration.d.ts +1 -1
- package/dist/tier-routing.d.ts +1 -1
- package/dist/{tier-stats-3LYQ3VV5.js → tier-stats-LSM35HZY.js} +5 -2
- package/dist/tier-stats-LSM35HZY.js.map +1 -0
- package/dist/topics.d.ts +1 -1
- package/dist/transcript.d.ts +1 -1
- package/dist/transfer/types.d.ts +12 -12
- package/dist/trust-score-stage.d.ts +1 -1
- package/dist/trust-score.d.ts +1 -1
- package/dist/{types-VkxElCHR.d.ts → types-CpFz51Pv.d.ts} +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/utility-runtime.d.ts +1 -1
- package/package.json +2 -2
- package/src/access-service.ts +42 -37
- package/src/active-memory-bridge.ts +2 -1
- package/src/admin/admin-surfaces.ts +2 -1
- package/src/capabilities.test.ts +178 -0
- package/src/capabilities.ts +197 -0
- package/src/cli.ts +13 -9
- package/src/compounding/engine.ts +4 -3
- package/src/contradiction/contradiction-scan.ts +4 -3
- package/src/embedding-fallback.ts +5 -2
- package/src/entity-retrieval.ts +3 -2
- package/src/explicit-capture.ts +2 -1
- package/src/extraction.ts +6 -3
- package/src/local-llm.ts +4 -3
- package/src/maintenance/first-start-migration.ts +6 -3
- package/src/maintenance/namespace-maintenance-fanout.ts +2 -1
- package/src/maintenance/namespace-planner.ts +4 -3
- package/src/maintenance/tier-stats.ts +2 -1
- package/src/namespaces/catalog.ts +2 -1
- package/src/namespaces/migrate.ts +2 -1
- package/src/namespaces/principal.ts +6 -5
- package/src/namespaces/scope-profiles.ts +2 -1
- package/src/namespaces/search.ts +2 -1
- package/src/namespaces/storage.ts +4 -3
- package/src/operator-toolkit.ts +19 -18
- package/src/orchestration/maintenance.ts +8 -4
- package/src/orchestration/semantic-consolidation-coordinator.ts +454 -0
- package/src/orchestration/tier-migration-coordinator.ts +5 -4
- package/src/orchestrator.ts +78 -417
- package/src/scopes/scope-plan.ts +3 -2
- package/src/search/embed-helper.ts +5 -2
- package/src/search/factory.ts +9 -6
- package/src/summarizer.ts +3 -2
- package/dist/chunk-24D66MMN.js.map +0 -1
- package/dist/chunk-646B5ERJ.js.map +0 -1
- package/dist/chunk-6TUWSUUD.js.map +0 -1
- package/dist/chunk-CGPHMNL4.js.map +0 -1
- package/dist/chunk-CX77GNMB.js.map +0 -1
- package/dist/chunk-DKT3X5C3.js.map +0 -1
- package/dist/chunk-FFUCCKPN.js.map +0 -1
- package/dist/chunk-GGL34GCW.js.map +0 -1
- package/dist/chunk-H3MB3F62.js.map +0 -1
- package/dist/chunk-HHNSLPX7.js.map +0 -1
- package/dist/chunk-J6BH2OBA.js.map +0 -1
- package/dist/chunk-KQYGNGON.js.map +0 -1
- package/dist/chunk-KSJCXXOU.js.map +0 -1
- package/dist/chunk-LUCARK4W.js.map +0 -1
- package/dist/chunk-NIZQH6AU.js.map +0 -1
- package/dist/chunk-OTQE66IX.js.map +0 -1
- package/dist/chunk-OUITHS6V.js.map +0 -1
- package/dist/chunk-P3VJCTVE.js.map +0 -1
- package/dist/chunk-PLBIPT6I.js.map +0 -1
- package/dist/chunk-PMAQRUN4.js.map +0 -1
- package/dist/chunk-UZYLX7M6.js.map +0 -1
- package/dist/chunk-ZQUAVZNG.js.map +0 -1
- package/dist/chunk-ZVHRSR2R.js.map +0 -1
- package/dist/first-start-migration-OOR57AYR.js.map +0 -1
- package/dist/tier-stats-3LYQ3VV5.js.map +0 -1
- /package/dist/{chunk-NOU77OHX.js.map → chunk-5DIKZKOD.js.map} +0 -0
- /package/dist/{chunk-FYWUNVFZ.js.map → chunk-IDIXGGDN.js.map} +0 -0
- /package/dist/{chunk-HJWQJUKQ.js.map → chunk-NDYQIN6C.js.map} +0 -0
- /package/dist/{chunk-QZHF4BWN.js.map → chunk-Q5LGXWNG.js.map} +0 -0
- /package/dist/{chunk-O4ZIBPIW.js.map → chunk-T7CGPTFU.js.map} +0 -0
- /package/dist/{contradiction-scan-HWGEOUDS.js.map → contradiction-scan-OUHMCUBT.js.map} +0 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { resolveNamespaceCapabilities } from "../capabilities.js";
|
|
1
2
|
import { createHash } from "node:crypto";
|
|
2
3
|
|
|
3
4
|
import { combineNamespaces, type CodingNamespaceOverlay } from "../coding/coding-namespace.js";
|
|
@@ -326,7 +327,7 @@ export function resolveScopeProfilePlan(
|
|
|
326
327
|
options: ResolveScopeProfilePlanOptions,
|
|
327
328
|
): ResolvedScopeProfilePlan | null {
|
|
328
329
|
const active = activeScopeProfile(options.config);
|
|
329
|
-
if (!active || !options.config.
|
|
330
|
+
if (!active || !resolveNamespaceCapabilities(options.config).namespaces) return null;
|
|
330
331
|
|
|
331
332
|
const baseNamespace = scopeProfileSelfNamespace(options.principal, options.config);
|
|
332
333
|
const layerIds = Array.from(
|
package/src/namespaces/search.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { resolveNamespaceCapabilities } from "../capabilities.js";
|
|
1
2
|
import path from "node:path";
|
|
2
3
|
import type { PluginConfig, QmdSearchResult } from "../types.js";
|
|
3
4
|
import type {
|
|
@@ -350,7 +351,7 @@ export class NamespaceSearchRouter {
|
|
|
350
351
|
const useLegacyDefaultCollection =
|
|
351
352
|
key === this.config.defaultNamespace && storage.dir === this.config.memoryDir;
|
|
352
353
|
const filtersNestedNamespaces =
|
|
353
|
-
this.config.
|
|
354
|
+
resolveNamespaceCapabilities(this.config).namespaces === true && useLegacyDefaultCollection;
|
|
354
355
|
const rootHostEmbeddingScope =
|
|
355
356
|
(this.config as NamespaceScopedSearchConfig).hostEmbeddingProviderScope ??
|
|
356
357
|
this.config.memoryDir;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { resolveNamespaceCapabilities } from "../capabilities.js";
|
|
1
2
|
import path from "node:path";
|
|
2
3
|
import { access, lstat, readdir } from "node:fs/promises";
|
|
3
4
|
import { isSafeRouteNamespace } from "../routing/engine.js";
|
|
@@ -139,7 +140,7 @@ export interface NamespaceStorageRouterHooks {
|
|
|
139
140
|
* the default migrate into that tokenized/legacy-named dir.
|
|
140
141
|
*/
|
|
141
142
|
export async function resolveDefaultNamespaceRoot(config: PluginConfig): Promise<string> {
|
|
142
|
-
if (!config.
|
|
143
|
+
if (!resolveNamespaceCapabilities(config).namespaces) {
|
|
143
144
|
return config.memoryDir;
|
|
144
145
|
}
|
|
145
146
|
|
|
@@ -183,7 +184,7 @@ export async function resolveNamespaceStorageRoot(
|
|
|
183
184
|
config: PluginConfig,
|
|
184
185
|
namespace: string,
|
|
185
186
|
): Promise<string> {
|
|
186
|
-
if (!config.
|
|
187
|
+
if (!resolveNamespaceCapabilities(config).namespaces) return config.memoryDir;
|
|
187
188
|
// Compare on NORMALIZED identity so a whitespace-padded configured default name
|
|
188
189
|
// still routes to the default root rather than a tokenized non-default dir
|
|
189
190
|
// (NH-FH). The catalog keys records by the same normalized identity.
|
|
@@ -257,7 +258,7 @@ export class NamespaceStorageRouter {
|
|
|
257
258
|
|
|
258
259
|
private async namespaceRoot(namespace: string): Promise<string> {
|
|
259
260
|
// NOTE: only used after defaultNamespaceRoot() resolution.
|
|
260
|
-
if (!this.config.
|
|
261
|
+
if (!resolveNamespaceCapabilities(this.config).namespaces) return this.config.memoryDir;
|
|
261
262
|
if (normalizeNamespaceIdentity(namespace) === this.defaultNamespaceIdentity) {
|
|
262
263
|
return this.defaultNsRootResolved ?? this.config.memoryDir;
|
|
263
264
|
}
|
package/src/operator-toolkit.ts
CHANGED
|
@@ -28,6 +28,7 @@ import {
|
|
|
28
28
|
resolveAccessSetupCapabilities,
|
|
29
29
|
resolveCapabilities,
|
|
30
30
|
resolveGraphConstructionCapabilities,
|
|
31
|
+
resolveQmdCapabilities,
|
|
31
32
|
} from "./capabilities.js";
|
|
32
33
|
import {
|
|
33
34
|
analyzeSessionIntegrity,
|
|
@@ -742,7 +743,7 @@ export async function runOperatorSetup(options: OperatorSetupOptions): Promise<O
|
|
|
742
743
|
await mkdir(options.orchestrator.config.workspaceDir, { recursive: true });
|
|
743
744
|
|
|
744
745
|
const qmdAvailable = await options.orchestrator.qmd.probe();
|
|
745
|
-
const collectionState = options.orchestrator.config.
|
|
746
|
+
const collectionState = resolveQmdCapabilities(options.orchestrator.config).qmd
|
|
746
747
|
? await options.orchestrator.qmd.ensureCollection(
|
|
747
748
|
options.orchestrator.config.memoryDir,
|
|
748
749
|
options.orchestrator.config.qmdCollection,
|
|
@@ -813,7 +814,7 @@ export async function runOperatorSetup(options: OperatorSetupOptions): Promise<O
|
|
|
813
814
|
workspaceDir: options.orchestrator.config.workspaceDir,
|
|
814
815
|
directories,
|
|
815
816
|
qmd: {
|
|
816
|
-
enabled: options.orchestrator.config.
|
|
817
|
+
enabled: resolveQmdCapabilities(options.orchestrator.config).qmd,
|
|
817
818
|
available: qmdAvailable,
|
|
818
819
|
collectionState,
|
|
819
820
|
debugStatus: options.orchestrator.qmd.debugStatus(),
|
|
@@ -949,12 +950,12 @@ async function buildOperatorConfigReviewReport(input: {
|
|
|
949
950
|
}));
|
|
950
951
|
}
|
|
951
952
|
|
|
952
|
-
if (config.
|
|
953
|
+
if (resolveQmdCapabilities(config).qmd && resolveQmdCapabilities(config).qmdDaemon === false) {
|
|
953
954
|
findings.push(buildConfigReviewFinding({
|
|
954
955
|
key: "qmd_daemon",
|
|
955
956
|
status: "recommend",
|
|
956
957
|
setting: "qmdDaemonEnabled",
|
|
957
|
-
currentValue: config.
|
|
958
|
+
currentValue: resolveQmdCapabilities(config).qmdDaemon,
|
|
958
959
|
defaultValue: true,
|
|
959
960
|
recommendedValue: true,
|
|
960
961
|
summary: "Enable the QMD daemon path when QMD powers recall.",
|
|
@@ -991,12 +992,12 @@ async function buildOperatorConfigReviewReport(input: {
|
|
|
991
992
|
}));
|
|
992
993
|
}
|
|
993
994
|
|
|
994
|
-
if (searchBackend === "qmd" && config.
|
|
995
|
+
if (searchBackend === "qmd" && resolveQmdCapabilities(config).qmd === false) {
|
|
995
996
|
findings.push(buildConfigReviewFinding({
|
|
996
997
|
key: "qmd_search_backend_disabled",
|
|
997
998
|
status: "problem",
|
|
998
999
|
setting: "qmdEnabled",
|
|
999
|
-
currentValue: config.
|
|
1000
|
+
currentValue: resolveQmdCapabilities(config).qmd,
|
|
1000
1001
|
defaultValue: true,
|
|
1001
1002
|
recommendedValue: true,
|
|
1002
1003
|
summary: "QMD search is selected but QMD is disabled.",
|
|
@@ -1005,12 +1006,12 @@ async function buildOperatorConfigReviewReport(input: {
|
|
|
1005
1006
|
}));
|
|
1006
1007
|
}
|
|
1007
1008
|
|
|
1008
|
-
if (config.
|
|
1009
|
+
if (resolveQmdCapabilities(config).qmdColdTier === true && resolveQmdCapabilities(config).qmd === false) {
|
|
1009
1010
|
findings.push(buildConfigReviewFinding({
|
|
1010
1011
|
key: "qmd_cold_tier_requires_qmd",
|
|
1011
1012
|
status: "problem",
|
|
1012
1013
|
setting: "qmdEnabled",
|
|
1013
|
-
currentValue: config.
|
|
1014
|
+
currentValue: resolveQmdCapabilities(config).qmd,
|
|
1014
1015
|
defaultValue: true,
|
|
1015
1016
|
recommendedValue: true,
|
|
1016
1017
|
summary: "Cold-tier QMD recall is enabled while QMD itself is disabled.",
|
|
@@ -1019,12 +1020,12 @@ async function buildOperatorConfigReviewReport(input: {
|
|
|
1019
1020
|
}));
|
|
1020
1021
|
}
|
|
1021
1022
|
|
|
1022
|
-
if (config.
|
|
1023
|
+
if (resolveQmdCapabilities(config).qmdTierMigration && resolveQmdCapabilities(config).qmdColdTier !== true) {
|
|
1023
1024
|
findings.push(buildConfigReviewFinding({
|
|
1024
1025
|
key: "qmd_tier_migration_requires_cold_tier",
|
|
1025
1026
|
status: "problem",
|
|
1026
1027
|
setting: "qmdColdTierEnabled",
|
|
1027
|
-
currentValue: config.
|
|
1028
|
+
currentValue: resolveQmdCapabilities(config).qmdColdTier,
|
|
1028
1029
|
defaultValue: false,
|
|
1029
1030
|
recommendedValue: true,
|
|
1030
1031
|
summary: "Hot/cold tier migration is enabled without the cold tier itself.",
|
|
@@ -1033,12 +1034,12 @@ async function buildOperatorConfigReviewReport(input: {
|
|
|
1033
1034
|
}));
|
|
1034
1035
|
}
|
|
1035
1036
|
|
|
1036
|
-
if (resolveIndexingCapabilities(config).conversationIndex && config.conversationIndexBackend === "qmd" && config.
|
|
1037
|
+
if (resolveIndexingCapabilities(config).conversationIndex && config.conversationIndexBackend === "qmd" && resolveQmdCapabilities(config).qmd === false) {
|
|
1037
1038
|
findings.push(buildConfigReviewFinding({
|
|
1038
1039
|
key: "conversation_index_qmd_requires_qmd",
|
|
1039
1040
|
status: "problem",
|
|
1040
1041
|
setting: "qmdEnabled",
|
|
1041
|
-
currentValue: config.
|
|
1042
|
+
currentValue: resolveQmdCapabilities(config).qmd,
|
|
1042
1043
|
defaultValue: true,
|
|
1043
1044
|
recommendedValue: true,
|
|
1044
1045
|
summary: "The conversation index is configured for QMD while QMD is disabled.",
|
|
@@ -1063,8 +1064,8 @@ async function buildOperatorConfigReviewReport(input: {
|
|
|
1063
1064
|
profile: {
|
|
1064
1065
|
memoryOsPreset: config.memoryOsPreset,
|
|
1065
1066
|
searchBackend,
|
|
1066
|
-
qmdEnabled: config.
|
|
1067
|
-
qmdDaemonEnabled: config.
|
|
1067
|
+
qmdEnabled: resolveQmdCapabilities(config).qmd,
|
|
1068
|
+
qmdDaemonEnabled: resolveQmdCapabilities(config).qmdDaemon,
|
|
1068
1069
|
nativeKnowledgeEnabled: config.nativeKnowledge?.enabled === true,
|
|
1069
1070
|
fileHygieneEnabled: config.fileHygiene?.enabled === true,
|
|
1070
1071
|
conversationIndexEnabled: resolveIndexingCapabilities(config).conversationIndex,
|
|
@@ -1145,12 +1146,12 @@ export async function runOperatorDoctor(options: OperatorDoctorOptions): Promise
|
|
|
1145
1146
|
});
|
|
1146
1147
|
|
|
1147
1148
|
const qmdAvailable = await options.orchestrator.qmd.probe();
|
|
1148
|
-
const collectionState = config.
|
|
1149
|
+
const collectionState = resolveQmdCapabilities(config).qmd
|
|
1149
1150
|
? await options.orchestrator.qmd.ensureCollection(config.memoryDir, config.qmdCollection)
|
|
1150
1151
|
: "skipped";
|
|
1151
1152
|
checks.push({
|
|
1152
1153
|
key: "qmd",
|
|
1153
|
-
status: !config.
|
|
1154
|
+
status: !resolveQmdCapabilities(config).qmd
|
|
1154
1155
|
? "warn"
|
|
1155
1156
|
: !qmdAvailable
|
|
1156
1157
|
? "error"
|
|
@@ -1159,12 +1160,12 @@ export async function runOperatorDoctor(options: OperatorDoctorOptions): Promise
|
|
|
1159
1160
|
: collectionState === "missing"
|
|
1160
1161
|
? "error"
|
|
1161
1162
|
: "warn",
|
|
1162
|
-
summary: !config.
|
|
1163
|
+
summary: !resolveQmdCapabilities(config).qmd
|
|
1163
1164
|
? "QMD is disabled in config."
|
|
1164
1165
|
: qmdAvailable
|
|
1165
1166
|
? `QMD is reachable (${collectionState}).`
|
|
1166
1167
|
: "QMD is not currently reachable.",
|
|
1167
|
-
remediation: !config.
|
|
1168
|
+
remediation: !resolveQmdCapabilities(config).qmd
|
|
1168
1169
|
? "Enable `qmdEnabled` if you expect hybrid search."
|
|
1169
1170
|
: !qmdAvailable
|
|
1170
1171
|
? "Ensure the `qmd` binary is installed and on PATH, or set `qmdPath`."
|
|
@@ -19,6 +19,10 @@
|
|
|
19
19
|
* `orchestrator.requestQmdMaintenance` etc. continue to work.
|
|
20
20
|
*/
|
|
21
21
|
|
|
22
|
+
import {
|
|
23
|
+
resolveNamespaceCapabilities,
|
|
24
|
+
resolveQmdCapabilities,
|
|
25
|
+
} from "../capabilities.js";
|
|
22
26
|
import { existsSync } from "node:fs";
|
|
23
27
|
import path from "node:path";
|
|
24
28
|
|
|
@@ -403,7 +407,7 @@ export class MaintenanceScheduler {
|
|
|
403
407
|
/** Internal: queue a debounced QMD maintenance pass. */
|
|
404
408
|
private requestQmdMaintenance(): void {
|
|
405
409
|
if (!this.deps.getQmd().isAvailable()) return;
|
|
406
|
-
if (!this.deps.config.
|
|
410
|
+
if (!resolveQmdCapabilities(this.deps.config).qmdMaintenance) return;
|
|
407
411
|
|
|
408
412
|
this.qmdMaintenancePending = true;
|
|
409
413
|
if (this.qmdMaintenanceTimer) return;
|
|
@@ -437,7 +441,7 @@ export class MaintenanceScheduler {
|
|
|
437
441
|
this.qmdMaintenancePending = false;
|
|
438
442
|
|
|
439
443
|
try {
|
|
440
|
-
if (this.deps.config.
|
|
444
|
+
if (resolveNamespaceCapabilities(this.deps.config).namespaces) {
|
|
441
445
|
// Include cataloged dynamic namespaces, not just the configured set
|
|
442
446
|
// (NGnei), but run through the namespace-aware maintenance planner so
|
|
443
447
|
// each namespace is budgeted, lock-protected, and status-recorded
|
|
@@ -446,7 +450,7 @@ export class MaintenanceScheduler {
|
|
|
446
450
|
const now = Date.now();
|
|
447
451
|
const lastEmbedAtByNamespace = this.lastQmdEmbedAtMsByNamespace;
|
|
448
452
|
const dueEmbedNamespaces = (namespaces: string[]): string[] => {
|
|
449
|
-
if (!this.deps.config.
|
|
453
|
+
if (!resolveQmdCapabilities(this.deps.config).qmdAutoEmbed) return [];
|
|
450
454
|
return namespaces.filter(
|
|
451
455
|
(namespace) =>
|
|
452
456
|
now - (lastEmbedAtByNamespace.get(namespace) ?? 0) >=
|
|
@@ -514,7 +518,7 @@ export class MaintenanceScheduler {
|
|
|
514
518
|
await this.deps.getQmd().update();
|
|
515
519
|
const now = Date.now();
|
|
516
520
|
if (
|
|
517
|
-
this.deps.config.
|
|
521
|
+
resolveQmdCapabilities(this.deps.config).qmdAutoEmbed &&
|
|
518
522
|
now - this.lastQmdEmbedAtMs >= this.deps.config.qmdEmbedMinIntervalMs
|
|
519
523
|
) {
|
|
520
524
|
await this.deps.getQmd().embed();
|