@anuma/sdk 6.20.0 → 6.21.1

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.
@@ -6912,7 +6912,7 @@ function createMemoryVaultSearchTool(vaultCtx, embeddingOptions, cache, searchOp
6912
6912
  subQueries = decomp.subQueries;
6913
6913
  }
6914
6914
  }
6915
- const { recall: recall2 } = await import("./recall-SCMH2R24.mjs");
6915
+ const { recall: recall2 } = await import("./recall-FQQGE6A2.mjs");
6916
6916
  let recallDegraded = [];
6917
6917
  const result = await recall2(
6918
6918
  query,
@@ -7503,7 +7503,22 @@ async function recall(query, ctx, options = {}) {
7503
7503
  let factLaneRankedOnCosine = false;
7504
7504
  let decryptLastRan;
7505
7505
  let vaultRowsDecrypted;
7506
- const emitDiagnostics = (candidateCount) => {
7506
+ let graphLaneCount = 0;
7507
+ let temporalLaneCount = 0;
7508
+ let graphLaneFailed = false;
7509
+ let temporalLaneFailed = false;
7510
+ let hitLimit = false;
7511
+ let factFloor = -1;
7512
+ let chunkFloor = -1;
7513
+ const emptyReasonFor = (admitted, laneRan) => {
7514
+ if (admitted > 0) return "";
7515
+ if (!query || typeof query !== "string" || query.trim().length === 0) return "empty-query";
7516
+ if (!laneRan) return "no-lanes";
7517
+ const chunkLaneCouldAnswer = types.includes("chunk") && !!ctx.storageCtx;
7518
+ if (vaultSize === 0 && !chunkLaneCouldAnswer) return "vault-empty";
7519
+ return "no-candidates";
7520
+ };
7521
+ const emitDiagnostics = (candidateCount, admitted) => {
7507
7522
  const cb = options.onDiagnostics;
7508
7523
  if (!cb) return;
7509
7524
  const degraded = [];
@@ -7514,6 +7529,11 @@ async function recall(query, ctx, options = {}) {
7514
7529
  degraded.push("decompose-moved");
7515
7530
  }
7516
7531
  if (embeddingsUnavailable) degraded.push("embeddings-unavailable");
7532
+ if (graphLaneFailed) degraded.push("graph-lane-failed");
7533
+ if (temporalLaneFailed) degraded.push("temporal-lane-failed");
7534
+ const laneRan = types.includes("fact") && !!ctx.vaultCtx && !!ctx.vaultCache || types.includes("chunk") && !!ctx.storageCtx;
7535
+ const scores = admitted.map((m) => m.score);
7536
+ const minScoreApplied = factResults.length > 0 ? factFloor : chunkResults.length > 0 ? chunkFloor : factFloor >= 0 ? factFloor : chunkFloor;
7517
7537
  const diagnostics = {
7518
7538
  usedBudget,
7519
7539
  reranked: didRerank,
@@ -7524,6 +7544,14 @@ async function recall(query, ctx, options = {}) {
7524
7544
  ...vaultRowsEmbedded !== void 0 && { vaultRowsEmbedded },
7525
7545
  factCount: factResults.length,
7526
7546
  chunkCount: chunkResults.length,
7547
+ admittedCount: admitted.length,
7548
+ topScore: scores.length > 0 ? Math.max(...scores) : -1,
7549
+ lowestAdmittedScore: scores.length > 0 ? Math.min(...scores) : -1,
7550
+ minScoreApplied,
7551
+ truncated: hitLimit,
7552
+ graphLaneCount,
7553
+ temporalLaneCount,
7554
+ emptyReason: emptyReasonFor(admitted.length, laneRan),
7527
7555
  timings: {
7528
7556
  total: nowMs2() - t0,
7529
7557
  prep: prepMs,
@@ -7541,7 +7569,7 @@ async function recall(query, ctx, options = {}) {
7541
7569
  }
7542
7570
  };
7543
7571
  if (!query || typeof query !== "string" || query.trim().length === 0) {
7544
- emitDiagnostics(0);
7572
+ emitDiagnostics(0, []);
7545
7573
  return { memories: [], usedBudget, reranked: false, candidateCount: 0 };
7546
7574
  }
7547
7575
  const needsChunkEmbedding = types.includes("chunk") && ctx.storageCtx;
@@ -7575,6 +7603,7 @@ async function recall(query, ctx, options = {}) {
7575
7603
  // empty ranking instead (mirrors safeCountVault's fail-soft posture).
7576
7604
  safeLane(
7577
7605
  "graph",
7606
+ () => graphLaneFailed = true,
7578
7607
  () => buildGraphLaneRanking(query, ctx, flags.traverse, {
7579
7608
  ...options.maxHops !== void 0 && { maxHops: options.maxHops },
7580
7609
  ...options.entityFanout !== void 0 && { entityFanout: options.entityFanout },
@@ -7583,12 +7612,19 @@ async function recall(query, ctx, options = {}) {
7583
7612
  ...graphRefiner && { refineNeighbors: graphRefiner }
7584
7613
  })
7585
7614
  ),
7586
- wantsTemporal ? safeLane("temporal", () => buildTemporalLaneRanking(query, ctx.vaultCtx, options.now)) : Promise.resolve([])
7615
+ wantsTemporal ? safeLane(
7616
+ "temporal",
7617
+ () => temporalLaneFailed = true,
7618
+ () => buildTemporalLaneRanking(query, ctx.vaultCtx, options.now)
7619
+ ) : Promise.resolve([])
7587
7620
  ]);
7588
7621
  prepMs = nowMs2() - prepStart;
7622
+ graphLaneCount = entityRanking.length;
7623
+ temporalLaneCount = temporalRanking.length;
7589
7624
  if (types.includes("fact") && ctx.vaultCtx && ctx.vaultCache) {
7590
7625
  const factStart = nowMs2();
7591
7626
  const vaultMinScore = options.minScore ?? DEFAULT_FACT_MIN_SCORE;
7627
+ factFloor = vaultMinScore;
7592
7628
  const {
7593
7629
  results,
7594
7630
  vaultSize: size,
@@ -7668,6 +7704,7 @@ async function recall(query, ctx, options = {}) {
7668
7704
  if (types.includes("chunk") && ctx.storageCtx && queryEmbedding) {
7669
7705
  const chunkStart = nowMs2();
7670
7706
  const chunkMinScore = options.minScore ?? DEFAULT_CHUNK_MIN_SCORE;
7707
+ chunkFloor = chunkMinScore;
7671
7708
  const results = await searchChunksOp(ctx.storageCtx, queryEmbedding, {
7672
7709
  limit: types.includes("fact") ? Math.max(limit * 2, 16) : limit,
7673
7710
  minSimilarity: chunkMinScore,
@@ -7694,9 +7731,11 @@ async function recall(query, ctx, options = {}) {
7694
7731
  memories2.sort((a, b) => b.score - a.score);
7695
7732
  const candidateCount = factResults.length + chunkResults.length;
7696
7733
  fuseMs = nowMs2() - fuseStart;
7697
- emitDiagnostics(candidateCount);
7734
+ const admitted = memories2.slice(0, limit);
7735
+ hitLimit = memories2.length > limit;
7736
+ emitDiagnostics(candidateCount, admitted);
7698
7737
  return {
7699
- memories: memories2.slice(0, limit),
7738
+ memories: admitted,
7700
7739
  usedBudget,
7701
7740
  reranked: didRerank,
7702
7741
  candidateCount,
@@ -7726,12 +7765,16 @@ async function recall(query, ctx, options = {}) {
7726
7765
  const ordered = [...byId.values()].sort((a, b) => b.score - a.score);
7727
7766
  const selectWith = (suppressed2) => {
7728
7767
  const out = [];
7768
+ let cut = false;
7729
7769
  for (const m of ordered) {
7730
- if (out.length >= limit) break;
7731
7770
  if (m.kind === "chunk" && m.messageId && suppressed2.has(m.messageId)) continue;
7771
+ if (out.length >= limit) {
7772
+ cut = true;
7773
+ break;
7774
+ }
7732
7775
  out.push(m);
7733
7776
  }
7734
- return out;
7777
+ return { out, cut };
7735
7778
  };
7736
7779
  const provenanceOf = (selected) => {
7737
7780
  const s = /* @__PURE__ */ new Set();
@@ -7741,15 +7784,18 @@ async function recall(query, ctx, options = {}) {
7741
7784
  return s;
7742
7785
  };
7743
7786
  let suppressed = /* @__PURE__ */ new Set();
7744
- let memories = selectWith(suppressed);
7787
+ let selection = selectWith(suppressed);
7788
+ let memories = selection.out;
7745
7789
  for (let i = 0; i < ordered.length; i++) {
7746
7790
  const next = provenanceOf(memories);
7747
7791
  if (next.size === suppressed.size && [...next].every((id) => suppressed.has(id))) break;
7748
7792
  suppressed = next;
7749
- memories = selectWith(suppressed);
7793
+ selection = selectWith(suppressed);
7794
+ memories = selection.out;
7750
7795
  }
7796
+ hitLimit = selection.cut;
7751
7797
  fuseMs = nowMs2() - fuseStart;
7752
- emitDiagnostics(byId.size);
7798
+ emitDiagnostics(byId.size, memories);
7753
7799
  return {
7754
7800
  memories,
7755
7801
  usedBudget,
@@ -7833,10 +7879,11 @@ async function safeCountVault(ctx) {
7833
7879
  return void 0;
7834
7880
  }
7835
7881
  }
7836
- async function safeLane(label, run) {
7882
+ async function safeLane(label, onFailure, run) {
7837
7883
  try {
7838
7884
  return await run();
7839
7885
  } catch (err) {
7886
+ onFailure();
7840
7887
  getLogger().warn(
7841
7888
  `[memory/recall] ${label} lane failed; continuing without it: ${err instanceof Error ? err.message : String(err)}`
7842
7889
  );
@@ -7678,7 +7678,22 @@ async function recall(query, ctx, options = {}) {
7678
7678
  let factLaneRankedOnCosine = false;
7679
7679
  let decryptLastRan;
7680
7680
  let vaultRowsDecrypted;
7681
- const emitDiagnostics = (candidateCount) => {
7681
+ let graphLaneCount = 0;
7682
+ let temporalLaneCount = 0;
7683
+ let graphLaneFailed = false;
7684
+ let temporalLaneFailed = false;
7685
+ let hitLimit = false;
7686
+ let factFloor = -1;
7687
+ let chunkFloor = -1;
7688
+ const emptyReasonFor = (admitted, laneRan) => {
7689
+ if (admitted > 0) return "";
7690
+ if (!query || typeof query !== "string" || query.trim().length === 0) return "empty-query";
7691
+ if (!laneRan) return "no-lanes";
7692
+ const chunkLaneCouldAnswer = types.includes("chunk") && !!ctx.storageCtx;
7693
+ if (vaultSize === 0 && !chunkLaneCouldAnswer) return "vault-empty";
7694
+ return "no-candidates";
7695
+ };
7696
+ const emitDiagnostics = (candidateCount, admitted) => {
7682
7697
  const cb = options.onDiagnostics;
7683
7698
  if (!cb) return;
7684
7699
  const degraded = [];
@@ -7689,6 +7704,11 @@ async function recall(query, ctx, options = {}) {
7689
7704
  degraded.push("decompose-moved");
7690
7705
  }
7691
7706
  if (embeddingsUnavailable) degraded.push("embeddings-unavailable");
7707
+ if (graphLaneFailed) degraded.push("graph-lane-failed");
7708
+ if (temporalLaneFailed) degraded.push("temporal-lane-failed");
7709
+ const laneRan = types.includes("fact") && !!ctx.vaultCtx && !!ctx.vaultCache || types.includes("chunk") && !!ctx.storageCtx;
7710
+ const scores = admitted.map((m) => m.score);
7711
+ const minScoreApplied = factResults.length > 0 ? factFloor : chunkResults.length > 0 ? chunkFloor : factFloor >= 0 ? factFloor : chunkFloor;
7692
7712
  const diagnostics = {
7693
7713
  usedBudget,
7694
7714
  reranked: didRerank,
@@ -7699,6 +7719,14 @@ async function recall(query, ctx, options = {}) {
7699
7719
  ...vaultRowsEmbedded !== void 0 && { vaultRowsEmbedded },
7700
7720
  factCount: factResults.length,
7701
7721
  chunkCount: chunkResults.length,
7722
+ admittedCount: admitted.length,
7723
+ topScore: scores.length > 0 ? Math.max(...scores) : -1,
7724
+ lowestAdmittedScore: scores.length > 0 ? Math.min(...scores) : -1,
7725
+ minScoreApplied,
7726
+ truncated: hitLimit,
7727
+ graphLaneCount,
7728
+ temporalLaneCount,
7729
+ emptyReason: emptyReasonFor(admitted.length, laneRan),
7702
7730
  timings: {
7703
7731
  total: nowMs() - t0,
7704
7732
  prep: prepMs,
@@ -7716,7 +7744,7 @@ async function recall(query, ctx, options = {}) {
7716
7744
  }
7717
7745
  };
7718
7746
  if (!query || typeof query !== "string" || query.trim().length === 0) {
7719
- emitDiagnostics(0);
7747
+ emitDiagnostics(0, []);
7720
7748
  return { memories: [], usedBudget, reranked: false, candidateCount: 0 };
7721
7749
  }
7722
7750
  const needsChunkEmbedding = types.includes("chunk") && ctx.storageCtx;
@@ -7750,6 +7778,7 @@ async function recall(query, ctx, options = {}) {
7750
7778
  // empty ranking instead (mirrors safeCountVault's fail-soft posture).
7751
7779
  safeLane(
7752
7780
  "graph",
7781
+ () => graphLaneFailed = true,
7753
7782
  () => buildGraphLaneRanking(query, ctx, flags.traverse, {
7754
7783
  ...options.maxHops !== void 0 && { maxHops: options.maxHops },
7755
7784
  ...options.entityFanout !== void 0 && { entityFanout: options.entityFanout },
@@ -7758,12 +7787,19 @@ async function recall(query, ctx, options = {}) {
7758
7787
  ...graphRefiner && { refineNeighbors: graphRefiner }
7759
7788
  })
7760
7789
  ),
7761
- wantsTemporal ? safeLane("temporal", () => buildTemporalLaneRanking(query, ctx.vaultCtx, options.now)) : Promise.resolve([])
7790
+ wantsTemporal ? safeLane(
7791
+ "temporal",
7792
+ () => temporalLaneFailed = true,
7793
+ () => buildTemporalLaneRanking(query, ctx.vaultCtx, options.now)
7794
+ ) : Promise.resolve([])
7762
7795
  ]);
7763
7796
  prepMs = nowMs() - prepStart;
7797
+ graphLaneCount = entityRanking.length;
7798
+ temporalLaneCount = temporalRanking.length;
7764
7799
  if (types.includes("fact") && ctx.vaultCtx && ctx.vaultCache) {
7765
7800
  const factStart = nowMs();
7766
7801
  const vaultMinScore = options.minScore ?? DEFAULT_FACT_MIN_SCORE;
7802
+ factFloor = vaultMinScore;
7767
7803
  const {
7768
7804
  results,
7769
7805
  vaultSize: size,
@@ -7843,6 +7879,7 @@ async function recall(query, ctx, options = {}) {
7843
7879
  if (types.includes("chunk") && ctx.storageCtx && queryEmbedding) {
7844
7880
  const chunkStart = nowMs();
7845
7881
  const chunkMinScore = options.minScore ?? DEFAULT_CHUNK_MIN_SCORE;
7882
+ chunkFloor = chunkMinScore;
7846
7883
  const results = await searchChunksOp(ctx.storageCtx, queryEmbedding, {
7847
7884
  limit: types.includes("fact") ? Math.max(limit * 2, 16) : limit,
7848
7885
  minSimilarity: chunkMinScore,
@@ -7869,9 +7906,11 @@ async function recall(query, ctx, options = {}) {
7869
7906
  memories2.sort((a, b) => b.score - a.score);
7870
7907
  const candidateCount = factResults.length + chunkResults.length;
7871
7908
  fuseMs = nowMs() - fuseStart;
7872
- emitDiagnostics(candidateCount);
7909
+ const admitted = memories2.slice(0, limit);
7910
+ hitLimit = memories2.length > limit;
7911
+ emitDiagnostics(candidateCount, admitted);
7873
7912
  return {
7874
- memories: memories2.slice(0, limit),
7913
+ memories: admitted,
7875
7914
  usedBudget,
7876
7915
  reranked: didRerank,
7877
7916
  candidateCount,
@@ -7901,12 +7940,16 @@ async function recall(query, ctx, options = {}) {
7901
7940
  const ordered = [...byId.values()].sort((a, b) => b.score - a.score);
7902
7941
  const selectWith = (suppressed2) => {
7903
7942
  const out = [];
7943
+ let cut = false;
7904
7944
  for (const m of ordered) {
7905
- if (out.length >= limit) break;
7906
7945
  if (m.kind === "chunk" && m.messageId && suppressed2.has(m.messageId)) continue;
7946
+ if (out.length >= limit) {
7947
+ cut = true;
7948
+ break;
7949
+ }
7907
7950
  out.push(m);
7908
7951
  }
7909
- return out;
7952
+ return { out, cut };
7910
7953
  };
7911
7954
  const provenanceOf = (selected) => {
7912
7955
  const s = /* @__PURE__ */ new Set();
@@ -7916,15 +7959,18 @@ async function recall(query, ctx, options = {}) {
7916
7959
  return s;
7917
7960
  };
7918
7961
  let suppressed = /* @__PURE__ */ new Set();
7919
- let memories = selectWith(suppressed);
7962
+ let selection = selectWith(suppressed);
7963
+ let memories = selection.out;
7920
7964
  for (let i = 0; i < ordered.length; i++) {
7921
7965
  const next = provenanceOf(memories);
7922
7966
  if (next.size === suppressed.size && [...next].every((id) => suppressed.has(id))) break;
7923
7967
  suppressed = next;
7924
- memories = selectWith(suppressed);
7968
+ selection = selectWith(suppressed);
7969
+ memories = selection.out;
7925
7970
  }
7971
+ hitLimit = selection.cut;
7926
7972
  fuseMs = nowMs() - fuseStart;
7927
- emitDiagnostics(byId.size);
7973
+ emitDiagnostics(byId.size, memories);
7928
7974
  return {
7929
7975
  memories,
7930
7976
  usedBudget,
@@ -8008,10 +8054,11 @@ async function safeCountVault(ctx) {
8008
8054
  return void 0;
8009
8055
  }
8010
8056
  }
8011
- async function safeLane(label, run) {
8057
+ async function safeLane(label, onFailure, run) {
8012
8058
  try {
8013
8059
  return await run();
8014
8060
  } catch (err) {
8061
+ onFailure();
8015
8062
  getLogger().warn(
8016
8063
  `[memory/recall] ${label} lane failed; continuing without it: ${err instanceof Error ? err.message : String(err)}`
8017
8064
  );
@@ -18295,13 +18342,25 @@ async function synthesizeProfile(ctx, options = {}) {
18295
18342
  watermark,
18296
18343
  options.reviewedMemoryIds
18297
18344
  );
18345
+ const memoriesById = new Map(memories.map((memory) => [memory.uniqueId, memory]));
18346
+ const fallbackPriors = /* @__PURE__ */ new Map();
18347
+ if (previous) {
18348
+ for (const section of previous.sections) {
18349
+ if (section.sourceMemoryIds.length > 0 && section.sourceMemoryIds.every((id) => {
18350
+ const memory = memoriesById.get(id);
18351
+ return memory && !memory.isDeleted && !memory.supersededBy && scopes.includes(memory.scope) && (options.reviewedMemoryIds === void 0 || options.reviewedMemoryIds.includes(id)) && changeTime(memory) <= previous.vaultWatermark;
18352
+ })) {
18353
+ fallbackPriors.set(section.key, section);
18354
+ }
18355
+ }
18356
+ }
18298
18357
  const settled = await Promise.allSettled(
18299
18358
  facets.map(async (facet) => {
18300
18359
  const prior = previous?.sections.find((s) => s.key === facet.key);
18301
18360
  if (prior && !staleKeys.has(facet.key)) {
18302
18361
  return prior;
18303
18362
  }
18304
- return synthesizeFacet(facet, ctx, options, prior);
18363
+ return synthesizeFacet(facet, ctx, options, fallbackPriors.get(facet.key));
18305
18364
  })
18306
18365
  );
18307
18366
  const sections = settled.map((r, i) => {
@@ -18314,10 +18373,7 @@ async function synthesizeProfile(ctx, options = {}) {
18314
18373
  error: r.reason instanceof Error ? r.reason.message : String(r.reason)
18315
18374
  }
18316
18375
  );
18317
- return fallbackSection(
18318
- facet,
18319
- previous?.sections.find((s) => s.key === facet.key)
18320
- );
18376
+ return fallbackSection(facet, fallbackPriors.get(facet.key));
18321
18377
  });
18322
18378
  return {
18323
18379
  version: PROFILE_DOC_VERSION,
@@ -18505,7 +18561,7 @@ async function synthesizeFacet(facet, ctx, options, prior) {
18505
18561
  const { text: text12, legitimateEmpty } = extractFacetText(result.structuredOutput);
18506
18562
  if (!text12 && !legitimateEmpty && !noEvidence) {
18507
18563
  getLogger().warn(
18508
- "[memory/synthesizeProfile] facet synthesis returned degraded-empty; keeping prior section",
18564
+ "[memory/synthesizeProfile] facet synthesis returned degraded-empty; using fallback section",
18509
18565
  { facet: facet.key, recalledCount: result.basedOn.memoryIds.length }
18510
18566
  );
18511
18567
  return fallbackSection(facet, prior);
@@ -5841,7 +5841,25 @@ type RecallDegradation =
5841
5841
  * failing back to the single-query path, or a row batch failing while other
5842
5842
  * rows keep usable vectors) — those are logged, not reported, so this stays a
5843
5843
  * reliable outage signal rather than a general embedding-error counter. */
5844
- | "embeddings-unavailable";
5844
+ | "embeddings-unavailable"
5845
+ /** The W5 graph (entity) side lane threw and was dropped. Auxiliary, so recall
5846
+ * still returned — but its RRF signal is missing from the ranking, and until
5847
+ * this existed the drop was a log line and nothing else. */
5848
+ | "graph-lane-failed"
5849
+ /** The W6 temporal side lane threw and was dropped. Same posture as the graph
5850
+ * lane: recall still returned, ranked without the temporal signal. */
5851
+ | "temporal-lane-failed";
5852
+ /**
5853
+ * Why a recall returned nothing. `""` when it returned something, so the field
5854
+ * is always present and groupable rather than being absent on the healthy path.
5855
+ *
5856
+ * The four are different problems: an empty query is a caller bug, no-lanes is a
5857
+ * context wiring bug (the requested kinds have no store), vault-empty is a new
5858
+ * user, and no-candidates is the only one that is about retrieval quality. They
5859
+ * were previously indistinguishable from outside — every one reported
5860
+ * `candidateCount: 0`.
5861
+ */
5862
+ type RecallEmptyReason = "" | "empty-query" | "no-lanes" | "vault-empty" | "no-candidates";
5845
5863
  /**
5846
5864
  * Per-call recall observability payload (see {@link RecallOptions.onDiagnostics}).
5847
5865
  * All timings are wall-clock milliseconds. Lane counts are post-dedupe,
@@ -5892,6 +5910,50 @@ interface RecallDiagnostics {
5892
5910
  factCount: number;
5893
5911
  /** Chunks the chunk lane returned (post-dedupe, pre-fusion). */
5894
5912
  chunkCount: number;
5913
+ /**
5914
+ * Memories actually RETURNED — `memories.length` after fusion, cross-lane
5915
+ * dedup and the `limit` slice.
5916
+ *
5917
+ * `candidateCount` is what was considered; this is what the caller got, and
5918
+ * the two are routinely far apart (the fact lane pulls `limit * 2` when fusing).
5919
+ * Every consumer that wanted "how many memories did this turn actually get"
5920
+ * was reading `candidateCount` and overcounting.
5921
+ */
5922
+ admittedCount: number;
5923
+ /** Highest score among the returned memories; -1 when none were returned. */
5924
+ topScore: number;
5925
+ /** Lowest score among the returned memories; -1 when none were returned. */
5926
+ lowestAdmittedScore: number;
5927
+ /**
5928
+ * The similarity floor the lane that produced these scores actually applied:
5929
+ * the fact lane's when it RETURNED results, otherwise the chunk lane's, and
5930
+ * **-1 when neither ran** (empty query, unwired context). Gated on results
5931
+ * rather than on the lane running, because a fact lane that ran and came
5932
+ * back empty filtered none of the scores in the payload — reporting its
5933
+ * 0.1 default against chunks that cleared 0.5 corrupted the telemetry.
5934
+ * When NOTHING was admitted, the floor a lane did apply is still reported:
5935
+ * "searched at this floor, found nothing" is the useful reading.
5936
+ *
5937
+ * Per-lane rather than one constant because the two defaults differ (0.1 fact
5938
+ * / 0.5 chunk), so a single seeded value reported a floor that a chunk-only
5939
+ * recall never applied. Reported next to the scores because the scores alone
5940
+ * cannot say what they cleared.
5941
+ */
5942
+ minScoreApplied: number;
5943
+ /**
5944
+ * Whether the `limit` cut an ELIGIBLE result — recorded at the cut, not
5945
+ * derived from `candidateCount > limit`. In the fused path `candidateCount`
5946
+ * counts before provenance suppression, so a recall whose suppressed chunks
5947
+ * brought it under the limit would otherwise report a truncation that never
5948
+ * happened.
5949
+ */
5950
+ truncated: boolean;
5951
+ /** Memory ids the W5 graph (entity) side lane contributed to the fusion. */
5952
+ graphLaneCount: number;
5953
+ /** Memory ids the W6 temporal side lane contributed to the fusion. */
5954
+ temporalLaneCount: number;
5955
+ /** Why nothing came back — see {@link RecallEmptyReason}. `""` when something did. */
5956
+ emptyReason: RecallEmptyReason;
5895
5957
  /** Wall-clock phase timings (ms). */
5896
5958
  timings: {
5897
5959
  /** Whole `recall()` call. */
@@ -8685,8 +8747,7 @@ interface ProfileSection {
8685
8747
  interests?: string[];
8686
8748
  /** Unix ms this section was generated. */
8687
8749
  generatedAt: number;
8688
- /** True when regeneration failed and a prior section value was carried
8689
- * forward (e.g. LLM returned empty) — the caller may choose to retry. */
8750
+ /** True when regeneration failed (e.g. LLM returned empty) — the caller may choose to retry. */
8690
8751
  stale?: boolean;
8691
8752
  }
8692
8753
  /** Fingerprint of the config that produced a {@link ProfileDoc}. Delta reuse
@@ -10860,4 +10921,4 @@ declare function refreshNotionAccessToken(params: NotionRefreshTokenParams): Pro
10860
10921
  */
10861
10922
  declare function createNotionTools(getAccessToken: () => string | null, requestNotionAccess: () => Promise<string>): ToolConfig[];
10862
10923
 
10863
- export { type AutoExtractMessage, type AutoExtractor, type Budget, CHUNKS_DISCARDED_ORIGIN, type CachedChunkVectors, type CachedServerTools, Conversation as ChatConversation, Message as ChatMessage, type ChatRole, type ChunkVectorCache, type ChunkingOptions, type ConsolidationAction, type ConsolidationFallbackReason, type ConversationMemoryInput, ConversationMemory as ConversationMemoryModel, type ConversationMemoryOperationsContext, type CreateAutoExtractorOptions, type CreateConversationOptions, type CreateDecaySweeperOptions, type CreateMessageOptions, type CreateVaultFolderOptions, type CreateVaultMemoryOptions, type CryptoPriceClassification, type CryptoPricePreProcessorOptions, DEFAULT_CACHE_EXPIRATION_MS, DEFAULT_CHUNK_CACHE_SIZE, DEFAULT_CHUNK_OVERLAP, DEFAULT_CHUNK_SIZE, DEFAULT_DECAY_POLICY, DEFAULT_MAX_CLASSIFIER_CALLS_PER_SWEEP, DEFAULT_MIN_CHUNK_SIZE, DEFAULT_PROFILE_FACETS, DEFAULT_PROFILE_FACT_TYPE_WEIGHTS, DEFAULT_PROFILE_PROOF_ALPHA, DEFAULT_PROFILE_TREND_MULTIPLIERS, DEFAULT_VAULT_CACHE_SIZE, DatabaseManager, type DatabaseManagerLogger, type DatabaseManagerOptions, type DecayCandidateRaw, type DecayClassifier, type DecayInput, type DecayPolicy, type DecaySweepResult, type DecaySweeper, type DecayVerdict, ENTITY_FANOUT, type EmbeddedWalletSignerFn, EncryptionKeyMissingError, type ExtractFactsOptions, type ExtractOutcome, type ExtractedCandidate, type ExtractedEntity, type ExtractionCursorStore, type ExtractionFunnel, type ExtractionTimings, type FactType, type FileMetadata, type FlushResult, type GetConversationsPageOptions, type GetMessagesPageOptions, type GraphTraversalOptions, HARD_DELETE_WINDOW_MS, INFERENCE_ID_HEADER, type InjectionClassifierOptions, type InjectionReason, type LazyStoredConversation, type LlmDecayClassifierOptions, type LlmNeighborRefinerOptions, type Logger, LoggerProvider, type LoggerProviderProps, MAX_HOPS, MEDIUM_TTL_MS, type ManualFactType, type MemoriesNeedingTopicExtraction, type EmbeddingOptions as MemoryEngineEmbeddingOptions, type MemoryEngineResult, type MemoryEngineSearchOptions, type MemoryExtractedEvent, type MemoryKind, type MemoryQuarantinedEvent, type MemoryToVerify, type MemoryVaultSearchOptions, type MemoryVaultToolOptions, type MemoryVerification, type MessageRedactionResult, type MessageSkeleton, NEVER_TTL_MS, NODE_BUDGET, NOTION_OAUTH_CONFIG, type NeighborRefiner, type NotionAuthUrlParams, type NotionClientRegistration, type NotionExchangeCodeParams, type NotionOAuthEndpoints, type NotionPKCEChallenge, type NotionRefreshTokenParams, type NotionTokenResponse, type NowSource, type ObservationTrend, type ObservationTrendInput, PAST_EVENT_GRACE_MS, PII_PATTERNS, PROFILE_DOC_VERSION, type PhotoIngestResult, type PhotoMediaRef, type PiiCategory, type PiiMatch, type PiiPattern, PiiRedactor, type PiiRedactorOptions, type PlatformStorage, type PortalLlmAuth, type PortalLlmFailure, type PortalLlmFailureReason, type ProfileConfigFingerprint, type ProfileDoc, type ProfileFacet, type ProfileFacetKey, type ProfileSalienceInput, type ProfileSection, type PromptPreProcessor, type PromptPreProcessorContext, type PublishedPhotoMemory, type QuantizedEmbedding, type QuarantinedMemoryInfo, QueueManager, type QueueStatus, RECALL_MAX_LIMIT, RECALL_TOOL_NAME, type RankableVaultMemory, type RankedMemory, type RankedProfileCandidate, type RecallContext, type RecallDegradation, type RecallDiagnostics, type RecallOptions, type RecallResult, type RecallToolCallbacks, type RecallToolOptions, type RecencyOptions, type RedactionResult, type ReflectOptions, type ReflectResult, type RequestEncryptionKeyOptions, RerankerUnavailableError, type ResumeStreamOptions, type ResumeStreamResult, type ResumeStreamWithStorageResult, type RetainAction, type RetainContext, type RetainOptions, type RetainResult, type RetainSource, SDK_SCHEMA_VERSION, SHORT_TTL_MS, STREAM_RESUMABLE_HEADER, type ScoreBreakdown, type ScoreProfileSalienceOptions, type ScreenResult, type ScreenedCandidate, type SearchSource, type SendMessageWithStorageArgs, type SendMessageWithStorageDetachedResult, type SendMessageWithStorageResult, type ServerToolsOptions, type ServerToolsResponse, type SignMessageFn, type StockPriceClassification, type StockPricePreProcessorOptions, type ChatCompletionUsage as StoredChatCompletionUsage, type StoredConversation, type StoredConversationMemory, type StoredMessage, type StoredMessageWithSimilarity, type StoredVaultFolder, VaultFolder as StoredVaultFolderModel, type StoredVaultMemory, VaultMemory as StoredVaultMemoryModel, StreamExpiredError, type StreamMetaEvent, type StreamResumeHandle, type SynthesizeProfileOptions, TOOL_RESULT_ORIGIN, TOPICS_EXTRACTION_VERSION, TOPIC_EXTRACTION_BATCH_SIZE, TREND_RECENT_WINDOW_DAYS, TREND_STALE_WINDOW_DAYS, type TextChunk, type TopicExtractOptions, type TopicExtractionInput, type TopicExtractionRunResult, type TopicSkipReason, type TurnCompleteEvent, type TurnSkippedEvent, type UncheckedReason, type UnverifiableReason, type UpdateVaultFolderOptions, type UpdateVaultMemoryOptions, type UseChatStorageOptions, type UseChatStorageResult, type UseCreditsOptions, type UseCreditsResult, type UseModelsOptions, type UseModelsResult, VAULT_SIZE_HOP_CAP, type VaultEmbeddingCache, type VaultFolderOperationsContext, type VaultMemoryOperationsContext, type VaultMemoryVisibility, type VaultMemoryWriter, type VaultSaveOperation, type VaultSearchResult, type VaultWriteAction, type VaultWriteInput, type VaultWriteOutcome, type VerificationSources, type VerifyMemoriesForPublishOptions, WalletPoller, type WeatherClassification, type WeatherPreProcessorOptions, type WebSearchClassification, type WebSearchPreProcessorOptions, addConversationMemoriesOp, archiveVaultMemoryOp, backfillMemoryTopicsOp, buildNotionAuthUrl, capHopsForDensity, chatStorageMigrations, chatStorageSchema, chunkAndEmbedAllMessages, chunkAndEmbedMessage, chunkText, classifyCryptoPrice, classifyCryptoPriceBatch, classifyDecay, classifyInjectionCandidates, classifyObservationTrend, classifyStockPrice, classifyStockPriceBatch, classifyWeather, classifyWeatherBatch, classifyWebSearch, classifyWebSearchBatch, clearAllEncryptionKeys, clearAllEncryptionState, clearConversationMemoriesOp, clearEncryptionKey, clearLazyTitleCache, clearServerToolsCache, consoleLogger, conversationMemoryToStored, cosineInt8, createAutoExtractor, createChunkVectorCache, createCryptoPricePreProcessor, createDecaySweeper, createLlmDecayClassifier, createLlmNeighborRefiner, createMemoryEngineTool, createMemoryVaultSearchTool, createMemoryVaultTool, createMessageSourceResolver, createNotionTools, createPlatformCursorStore, createRecallTool, createStockPricePreProcessor, createStreamingDeAnonymizer, createVaultEmbeddingCache, createVaultFolderOp, createVaultMemoriesBatchOp, createVaultMemoryOp, createWeatherPreProcessor, createWebSearchPreProcessor, decodeChunkVector, decryptConversationTitle, deleteAllVaultMemoriesForUserOp, deleteVaultFolderOp, deleteVaultMemoryOp, dequantizeEmbedding, discoverNotionOAuthEndpoints, eagerEmbedContent, embedAllMessages, embedMessage, encodeChunkVector, ensureDefaultFoldersOp, exchangeNotionCode, extractAndLinkEntitiesForMemoriesOp, extractAndRetain, extractEntitiesForMemories, extractFacts, generateConversationId, generateEmbedding, generateEmbeddings, generateNotionPKCE, getAllVaultFoldersOp, getAllVaultMemoriesOp, getAllVaultMemoryContentsOp, getCachedServerTools, getConversationMemoriesOp, getConversationsByProjectLazyOp, getConversationsLazyOp, getConversationsPageOp, getDecayCandidatesRawOp, getLogger, getMemoriesNeedingTopicExtractionOp, getServerTools, getUnfiledVaultMemoriesOp, getVaultFolderMemoryCountOp, getVaultMemoriesByIdsOp, getVaultMemoryOp, getVaultRankingProjectionsOp, hardDeleteDecayedOp, hasEncryptionKey, ingestPublishedPhotoMemoriesOp, injectionSignatureCatalog, isDegradedTopicSkip, isPiiRedactor, isRerankerAvailable, maskScopedEmbeddingCache, moveMemoriesToFolderOp, noopLogger, onKeyAvailable, parseMedia, preEmbedVaultMemories, quantizeEmbedding, queueManager, rankProfileCandidates, recall, reflect, refreshEncryptionKeyIfMatches, refreshNotionAccessToken, registerNotionClient, relinkMemoryTopicsOp, requestEncryptionKey, resolvePiiRedactor, restoreVaultMemoryOp, resumeStream, retain, scoreProfileSalience, screenCandidatesForInjection, sdkMigrations, sdkModelClasses, sdkSchema, searchVaultMemories, seedEncryptionKeys, setLogger, setMemoryVisibilityOp, shouldChunkMessage, stampTopicsExtractedAtOp, streamCancelPath, streamReplayPath, summarizeObservationTrends, supersedeVaultMemoryOp, synthesizeProfile, traverseGraphLane, ttlForType, updateVaultFolderContextOp, updateVaultFolderOp, updateVaultMemoryEmbeddingOp, updateVaultMemoryOp, upsertMessageOp, useChat, useChatStorage, useCredits, useEncryption, useModels, verifyMemoriesForPublish, xhrTransport };
10924
+ export { type AutoExtractMessage, type AutoExtractor, type Budget, CHUNKS_DISCARDED_ORIGIN, type CachedChunkVectors, type CachedServerTools, Conversation as ChatConversation, Message as ChatMessage, type ChatRole, type ChunkVectorCache, type ChunkingOptions, type ConsolidationAction, type ConsolidationFallbackReason, type ConversationMemoryInput, ConversationMemory as ConversationMemoryModel, type ConversationMemoryOperationsContext, type CreateAutoExtractorOptions, type CreateConversationOptions, type CreateDecaySweeperOptions, type CreateMessageOptions, type CreateVaultFolderOptions, type CreateVaultMemoryOptions, type CryptoPriceClassification, type CryptoPricePreProcessorOptions, DEFAULT_CACHE_EXPIRATION_MS, DEFAULT_CHUNK_CACHE_SIZE, DEFAULT_CHUNK_OVERLAP, DEFAULT_CHUNK_SIZE, DEFAULT_DECAY_POLICY, DEFAULT_MAX_CLASSIFIER_CALLS_PER_SWEEP, DEFAULT_MIN_CHUNK_SIZE, DEFAULT_PROFILE_FACETS, DEFAULT_PROFILE_FACT_TYPE_WEIGHTS, DEFAULT_PROFILE_PROOF_ALPHA, DEFAULT_PROFILE_TREND_MULTIPLIERS, DEFAULT_VAULT_CACHE_SIZE, DatabaseManager, type DatabaseManagerLogger, type DatabaseManagerOptions, type DecayCandidateRaw, type DecayClassifier, type DecayInput, type DecayPolicy, type DecaySweepResult, type DecaySweeper, type DecayVerdict, ENTITY_FANOUT, type EmbeddedWalletSignerFn, EncryptionKeyMissingError, type ExtractFactsOptions, type ExtractOutcome, type ExtractedCandidate, type ExtractedEntity, type ExtractionCursorStore, type ExtractionFunnel, type ExtractionTimings, type FactType, type FileMetadata, type FlushResult, type GetConversationsPageOptions, type GetMessagesPageOptions, type GraphTraversalOptions, HARD_DELETE_WINDOW_MS, INFERENCE_ID_HEADER, type InjectionClassifierOptions, type InjectionReason, type LazyStoredConversation, type LlmDecayClassifierOptions, type LlmNeighborRefinerOptions, type Logger, LoggerProvider, type LoggerProviderProps, MAX_HOPS, MEDIUM_TTL_MS, type ManualFactType, type MemoriesNeedingTopicExtraction, type EmbeddingOptions as MemoryEngineEmbeddingOptions, type MemoryEngineResult, type MemoryEngineSearchOptions, type MemoryExtractedEvent, type MemoryKind, type MemoryQuarantinedEvent, type MemoryToVerify, type MemoryVaultSearchOptions, type MemoryVaultToolOptions, type MemoryVerification, type MessageRedactionResult, type MessageSkeleton, NEVER_TTL_MS, NODE_BUDGET, NOTION_OAUTH_CONFIG, type NeighborRefiner, type NotionAuthUrlParams, type NotionClientRegistration, type NotionExchangeCodeParams, type NotionOAuthEndpoints, type NotionPKCEChallenge, type NotionRefreshTokenParams, type NotionTokenResponse, type NowSource, type ObservationTrend, type ObservationTrendInput, PAST_EVENT_GRACE_MS, PII_PATTERNS, PROFILE_DOC_VERSION, type PhotoIngestResult, type PhotoMediaRef, type PiiCategory, type PiiMatch, type PiiPattern, PiiRedactor, type PiiRedactorOptions, type PlatformStorage, type PortalLlmAuth, type PortalLlmFailure, type PortalLlmFailureReason, type ProfileConfigFingerprint, type ProfileDoc, type ProfileFacet, type ProfileFacetKey, type ProfileSalienceInput, type ProfileSection, type PromptPreProcessor, type PromptPreProcessorContext, type PublishedPhotoMemory, type QuantizedEmbedding, type QuarantinedMemoryInfo, QueueManager, type QueueStatus, RECALL_MAX_LIMIT, RECALL_TOOL_NAME, type RankableVaultMemory, type RankedMemory, type RankedProfileCandidate, type RecallContext, type RecallDegradation, type RecallDiagnostics, type RecallEmptyReason, type RecallOptions, type RecallResult, type RecallToolCallbacks, type RecallToolOptions, type RecencyOptions, type RedactionResult, type ReflectOptions, type ReflectResult, type RequestEncryptionKeyOptions, RerankerUnavailableError, type ResumeStreamOptions, type ResumeStreamResult, type ResumeStreamWithStorageResult, type RetainAction, type RetainContext, type RetainOptions, type RetainResult, type RetainSource, SDK_SCHEMA_VERSION, SHORT_TTL_MS, STREAM_RESUMABLE_HEADER, type ScoreBreakdown, type ScoreProfileSalienceOptions, type ScreenResult, type ScreenedCandidate, type SearchSource, type SendMessageWithStorageArgs, type SendMessageWithStorageDetachedResult, type SendMessageWithStorageResult, type ServerToolsOptions, type ServerToolsResponse, type SignMessageFn, type StockPriceClassification, type StockPricePreProcessorOptions, type ChatCompletionUsage as StoredChatCompletionUsage, type StoredConversation, type StoredConversationMemory, type StoredMessage, type StoredMessageWithSimilarity, type StoredVaultFolder, VaultFolder as StoredVaultFolderModel, type StoredVaultMemory, VaultMemory as StoredVaultMemoryModel, StreamExpiredError, type StreamMetaEvent, type StreamResumeHandle, type SynthesizeProfileOptions, TOOL_RESULT_ORIGIN, TOPICS_EXTRACTION_VERSION, TOPIC_EXTRACTION_BATCH_SIZE, TREND_RECENT_WINDOW_DAYS, TREND_STALE_WINDOW_DAYS, type TextChunk, type TopicExtractOptions, type TopicExtractionInput, type TopicExtractionRunResult, type TopicSkipReason, type TurnCompleteEvent, type TurnSkippedEvent, type UncheckedReason, type UnverifiableReason, type UpdateVaultFolderOptions, type UpdateVaultMemoryOptions, type UseChatStorageOptions, type UseChatStorageResult, type UseCreditsOptions, type UseCreditsResult, type UseModelsOptions, type UseModelsResult, VAULT_SIZE_HOP_CAP, type VaultEmbeddingCache, type VaultFolderOperationsContext, type VaultMemoryOperationsContext, type VaultMemoryVisibility, type VaultMemoryWriter, type VaultSaveOperation, type VaultSearchResult, type VaultWriteAction, type VaultWriteInput, type VaultWriteOutcome, type VerificationSources, type VerifyMemoriesForPublishOptions, WalletPoller, type WeatherClassification, type WeatherPreProcessorOptions, type WebSearchClassification, type WebSearchPreProcessorOptions, addConversationMemoriesOp, archiveVaultMemoryOp, backfillMemoryTopicsOp, buildNotionAuthUrl, capHopsForDensity, chatStorageMigrations, chatStorageSchema, chunkAndEmbedAllMessages, chunkAndEmbedMessage, chunkText, classifyCryptoPrice, classifyCryptoPriceBatch, classifyDecay, classifyInjectionCandidates, classifyObservationTrend, classifyStockPrice, classifyStockPriceBatch, classifyWeather, classifyWeatherBatch, classifyWebSearch, classifyWebSearchBatch, clearAllEncryptionKeys, clearAllEncryptionState, clearConversationMemoriesOp, clearEncryptionKey, clearLazyTitleCache, clearServerToolsCache, consoleLogger, conversationMemoryToStored, cosineInt8, createAutoExtractor, createChunkVectorCache, createCryptoPricePreProcessor, createDecaySweeper, createLlmDecayClassifier, createLlmNeighborRefiner, createMemoryEngineTool, createMemoryVaultSearchTool, createMemoryVaultTool, createMessageSourceResolver, createNotionTools, createPlatformCursorStore, createRecallTool, createStockPricePreProcessor, createStreamingDeAnonymizer, createVaultEmbeddingCache, createVaultFolderOp, createVaultMemoriesBatchOp, createVaultMemoryOp, createWeatherPreProcessor, createWebSearchPreProcessor, decodeChunkVector, decryptConversationTitle, deleteAllVaultMemoriesForUserOp, deleteVaultFolderOp, deleteVaultMemoryOp, dequantizeEmbedding, discoverNotionOAuthEndpoints, eagerEmbedContent, embedAllMessages, embedMessage, encodeChunkVector, ensureDefaultFoldersOp, exchangeNotionCode, extractAndLinkEntitiesForMemoriesOp, extractAndRetain, extractEntitiesForMemories, extractFacts, generateConversationId, generateEmbedding, generateEmbeddings, generateNotionPKCE, getAllVaultFoldersOp, getAllVaultMemoriesOp, getAllVaultMemoryContentsOp, getCachedServerTools, getConversationMemoriesOp, getConversationsByProjectLazyOp, getConversationsLazyOp, getConversationsPageOp, getDecayCandidatesRawOp, getLogger, getMemoriesNeedingTopicExtractionOp, getServerTools, getUnfiledVaultMemoriesOp, getVaultFolderMemoryCountOp, getVaultMemoriesByIdsOp, getVaultMemoryOp, getVaultRankingProjectionsOp, hardDeleteDecayedOp, hasEncryptionKey, ingestPublishedPhotoMemoriesOp, injectionSignatureCatalog, isDegradedTopicSkip, isPiiRedactor, isRerankerAvailable, maskScopedEmbeddingCache, moveMemoriesToFolderOp, noopLogger, onKeyAvailable, parseMedia, preEmbedVaultMemories, quantizeEmbedding, queueManager, rankProfileCandidates, recall, reflect, refreshEncryptionKeyIfMatches, refreshNotionAccessToken, registerNotionClient, relinkMemoryTopicsOp, requestEncryptionKey, resolvePiiRedactor, restoreVaultMemoryOp, resumeStream, retain, scoreProfileSalience, screenCandidatesForInjection, sdkMigrations, sdkModelClasses, sdkSchema, searchVaultMemories, seedEncryptionKeys, setLogger, setMemoryVisibilityOp, shouldChunkMessage, stampTopicsExtractedAtOp, streamCancelPath, streamReplayPath, summarizeObservationTrends, supersedeVaultMemoryOp, synthesizeProfile, traverseGraphLane, ttlForType, updateVaultFolderContextOp, updateVaultFolderOp, updateVaultMemoryEmbeddingOp, updateVaultMemoryOp, upsertMessageOp, useChat, useChatStorage, useCredits, useEncryption, useModels, verifyMemoriesForPublish, xhrTransport };
@@ -5841,7 +5841,25 @@ type RecallDegradation =
5841
5841
  * failing back to the single-query path, or a row batch failing while other
5842
5842
  * rows keep usable vectors) — those are logged, not reported, so this stays a
5843
5843
  * reliable outage signal rather than a general embedding-error counter. */
5844
- | "embeddings-unavailable";
5844
+ | "embeddings-unavailable"
5845
+ /** The W5 graph (entity) side lane threw and was dropped. Auxiliary, so recall
5846
+ * still returned — but its RRF signal is missing from the ranking, and until
5847
+ * this existed the drop was a log line and nothing else. */
5848
+ | "graph-lane-failed"
5849
+ /** The W6 temporal side lane threw and was dropped. Same posture as the graph
5850
+ * lane: recall still returned, ranked without the temporal signal. */
5851
+ | "temporal-lane-failed";
5852
+ /**
5853
+ * Why a recall returned nothing. `""` when it returned something, so the field
5854
+ * is always present and groupable rather than being absent on the healthy path.
5855
+ *
5856
+ * The four are different problems: an empty query is a caller bug, no-lanes is a
5857
+ * context wiring bug (the requested kinds have no store), vault-empty is a new
5858
+ * user, and no-candidates is the only one that is about retrieval quality. They
5859
+ * were previously indistinguishable from outside — every one reported
5860
+ * `candidateCount: 0`.
5861
+ */
5862
+ type RecallEmptyReason = "" | "empty-query" | "no-lanes" | "vault-empty" | "no-candidates";
5845
5863
  /**
5846
5864
  * Per-call recall observability payload (see {@link RecallOptions.onDiagnostics}).
5847
5865
  * All timings are wall-clock milliseconds. Lane counts are post-dedupe,
@@ -5892,6 +5910,50 @@ interface RecallDiagnostics {
5892
5910
  factCount: number;
5893
5911
  /** Chunks the chunk lane returned (post-dedupe, pre-fusion). */
5894
5912
  chunkCount: number;
5913
+ /**
5914
+ * Memories actually RETURNED — `memories.length` after fusion, cross-lane
5915
+ * dedup and the `limit` slice.
5916
+ *
5917
+ * `candidateCount` is what was considered; this is what the caller got, and
5918
+ * the two are routinely far apart (the fact lane pulls `limit * 2` when fusing).
5919
+ * Every consumer that wanted "how many memories did this turn actually get"
5920
+ * was reading `candidateCount` and overcounting.
5921
+ */
5922
+ admittedCount: number;
5923
+ /** Highest score among the returned memories; -1 when none were returned. */
5924
+ topScore: number;
5925
+ /** Lowest score among the returned memories; -1 when none were returned. */
5926
+ lowestAdmittedScore: number;
5927
+ /**
5928
+ * The similarity floor the lane that produced these scores actually applied:
5929
+ * the fact lane's when it RETURNED results, otherwise the chunk lane's, and
5930
+ * **-1 when neither ran** (empty query, unwired context). Gated on results
5931
+ * rather than on the lane running, because a fact lane that ran and came
5932
+ * back empty filtered none of the scores in the payload — reporting its
5933
+ * 0.1 default against chunks that cleared 0.5 corrupted the telemetry.
5934
+ * When NOTHING was admitted, the floor a lane did apply is still reported:
5935
+ * "searched at this floor, found nothing" is the useful reading.
5936
+ *
5937
+ * Per-lane rather than one constant because the two defaults differ (0.1 fact
5938
+ * / 0.5 chunk), so a single seeded value reported a floor that a chunk-only
5939
+ * recall never applied. Reported next to the scores because the scores alone
5940
+ * cannot say what they cleared.
5941
+ */
5942
+ minScoreApplied: number;
5943
+ /**
5944
+ * Whether the `limit` cut an ELIGIBLE result — recorded at the cut, not
5945
+ * derived from `candidateCount > limit`. In the fused path `candidateCount`
5946
+ * counts before provenance suppression, so a recall whose suppressed chunks
5947
+ * brought it under the limit would otherwise report a truncation that never
5948
+ * happened.
5949
+ */
5950
+ truncated: boolean;
5951
+ /** Memory ids the W5 graph (entity) side lane contributed to the fusion. */
5952
+ graphLaneCount: number;
5953
+ /** Memory ids the W6 temporal side lane contributed to the fusion. */
5954
+ temporalLaneCount: number;
5955
+ /** Why nothing came back — see {@link RecallEmptyReason}. `""` when something did. */
5956
+ emptyReason: RecallEmptyReason;
5895
5957
  /** Wall-clock phase timings (ms). */
5896
5958
  timings: {
5897
5959
  /** Whole `recall()` call. */
@@ -8685,8 +8747,7 @@ interface ProfileSection {
8685
8747
  interests?: string[];
8686
8748
  /** Unix ms this section was generated. */
8687
8749
  generatedAt: number;
8688
- /** True when regeneration failed and a prior section value was carried
8689
- * forward (e.g. LLM returned empty) — the caller may choose to retry. */
8750
+ /** True when regeneration failed (e.g. LLM returned empty) — the caller may choose to retry. */
8690
8751
  stale?: boolean;
8691
8752
  }
8692
8753
  /** Fingerprint of the config that produced a {@link ProfileDoc}. Delta reuse
@@ -10860,4 +10921,4 @@ declare function refreshNotionAccessToken(params: NotionRefreshTokenParams): Pro
10860
10921
  */
10861
10922
  declare function createNotionTools(getAccessToken: () => string | null, requestNotionAccess: () => Promise<string>): ToolConfig[];
10862
10923
 
10863
- export { type AutoExtractMessage, type AutoExtractor, type Budget, CHUNKS_DISCARDED_ORIGIN, type CachedChunkVectors, type CachedServerTools, Conversation as ChatConversation, Message as ChatMessage, type ChatRole, type ChunkVectorCache, type ChunkingOptions, type ConsolidationAction, type ConsolidationFallbackReason, type ConversationMemoryInput, ConversationMemory as ConversationMemoryModel, type ConversationMemoryOperationsContext, type CreateAutoExtractorOptions, type CreateConversationOptions, type CreateDecaySweeperOptions, type CreateMessageOptions, type CreateVaultFolderOptions, type CreateVaultMemoryOptions, type CryptoPriceClassification, type CryptoPricePreProcessorOptions, DEFAULT_CACHE_EXPIRATION_MS, DEFAULT_CHUNK_CACHE_SIZE, DEFAULT_CHUNK_OVERLAP, DEFAULT_CHUNK_SIZE, DEFAULT_DECAY_POLICY, DEFAULT_MAX_CLASSIFIER_CALLS_PER_SWEEP, DEFAULT_MIN_CHUNK_SIZE, DEFAULT_PROFILE_FACETS, DEFAULT_PROFILE_FACT_TYPE_WEIGHTS, DEFAULT_PROFILE_PROOF_ALPHA, DEFAULT_PROFILE_TREND_MULTIPLIERS, DEFAULT_VAULT_CACHE_SIZE, DatabaseManager, type DatabaseManagerLogger, type DatabaseManagerOptions, type DecayCandidateRaw, type DecayClassifier, type DecayInput, type DecayPolicy, type DecaySweepResult, type DecaySweeper, type DecayVerdict, ENTITY_FANOUT, type EmbeddedWalletSignerFn, EncryptionKeyMissingError, type ExtractFactsOptions, type ExtractOutcome, type ExtractedCandidate, type ExtractedEntity, type ExtractionCursorStore, type ExtractionFunnel, type ExtractionTimings, type FactType, type FileMetadata, type FlushResult, type GetConversationsPageOptions, type GetMessagesPageOptions, type GraphTraversalOptions, HARD_DELETE_WINDOW_MS, INFERENCE_ID_HEADER, type InjectionClassifierOptions, type InjectionReason, type LazyStoredConversation, type LlmDecayClassifierOptions, type LlmNeighborRefinerOptions, type Logger, LoggerProvider, type LoggerProviderProps, MAX_HOPS, MEDIUM_TTL_MS, type ManualFactType, type MemoriesNeedingTopicExtraction, type EmbeddingOptions as MemoryEngineEmbeddingOptions, type MemoryEngineResult, type MemoryEngineSearchOptions, type MemoryExtractedEvent, type MemoryKind, type MemoryQuarantinedEvent, type MemoryToVerify, type MemoryVaultSearchOptions, type MemoryVaultToolOptions, type MemoryVerification, type MessageRedactionResult, type MessageSkeleton, NEVER_TTL_MS, NODE_BUDGET, NOTION_OAUTH_CONFIG, type NeighborRefiner, type NotionAuthUrlParams, type NotionClientRegistration, type NotionExchangeCodeParams, type NotionOAuthEndpoints, type NotionPKCEChallenge, type NotionRefreshTokenParams, type NotionTokenResponse, type NowSource, type ObservationTrend, type ObservationTrendInput, PAST_EVENT_GRACE_MS, PII_PATTERNS, PROFILE_DOC_VERSION, type PhotoIngestResult, type PhotoMediaRef, type PiiCategory, type PiiMatch, type PiiPattern, PiiRedactor, type PiiRedactorOptions, type PlatformStorage, type PortalLlmAuth, type PortalLlmFailure, type PortalLlmFailureReason, type ProfileConfigFingerprint, type ProfileDoc, type ProfileFacet, type ProfileFacetKey, type ProfileSalienceInput, type ProfileSection, type PromptPreProcessor, type PromptPreProcessorContext, type PublishedPhotoMemory, type QuantizedEmbedding, type QuarantinedMemoryInfo, QueueManager, type QueueStatus, RECALL_MAX_LIMIT, RECALL_TOOL_NAME, type RankableVaultMemory, type RankedMemory, type RankedProfileCandidate, type RecallContext, type RecallDegradation, type RecallDiagnostics, type RecallOptions, type RecallResult, type RecallToolCallbacks, type RecallToolOptions, type RecencyOptions, type RedactionResult, type ReflectOptions, type ReflectResult, type RequestEncryptionKeyOptions, RerankerUnavailableError, type ResumeStreamOptions, type ResumeStreamResult, type ResumeStreamWithStorageResult, type RetainAction, type RetainContext, type RetainOptions, type RetainResult, type RetainSource, SDK_SCHEMA_VERSION, SHORT_TTL_MS, STREAM_RESUMABLE_HEADER, type ScoreBreakdown, type ScoreProfileSalienceOptions, type ScreenResult, type ScreenedCandidate, type SearchSource, type SendMessageWithStorageArgs, type SendMessageWithStorageDetachedResult, type SendMessageWithStorageResult, type ServerToolsOptions, type ServerToolsResponse, type SignMessageFn, type StockPriceClassification, type StockPricePreProcessorOptions, type ChatCompletionUsage as StoredChatCompletionUsage, type StoredConversation, type StoredConversationMemory, type StoredMessage, type StoredMessageWithSimilarity, type StoredVaultFolder, VaultFolder as StoredVaultFolderModel, type StoredVaultMemory, VaultMemory as StoredVaultMemoryModel, StreamExpiredError, type StreamMetaEvent, type StreamResumeHandle, type SynthesizeProfileOptions, TOOL_RESULT_ORIGIN, TOPICS_EXTRACTION_VERSION, TOPIC_EXTRACTION_BATCH_SIZE, TREND_RECENT_WINDOW_DAYS, TREND_STALE_WINDOW_DAYS, type TextChunk, type TopicExtractOptions, type TopicExtractionInput, type TopicExtractionRunResult, type TopicSkipReason, type TurnCompleteEvent, type TurnSkippedEvent, type UncheckedReason, type UnverifiableReason, type UpdateVaultFolderOptions, type UpdateVaultMemoryOptions, type UseChatStorageOptions, type UseChatStorageResult, type UseCreditsOptions, type UseCreditsResult, type UseModelsOptions, type UseModelsResult, VAULT_SIZE_HOP_CAP, type VaultEmbeddingCache, type VaultFolderOperationsContext, type VaultMemoryOperationsContext, type VaultMemoryVisibility, type VaultMemoryWriter, type VaultSaveOperation, type VaultSearchResult, type VaultWriteAction, type VaultWriteInput, type VaultWriteOutcome, type VerificationSources, type VerifyMemoriesForPublishOptions, WalletPoller, type WeatherClassification, type WeatherPreProcessorOptions, type WebSearchClassification, type WebSearchPreProcessorOptions, addConversationMemoriesOp, archiveVaultMemoryOp, backfillMemoryTopicsOp, buildNotionAuthUrl, capHopsForDensity, chatStorageMigrations, chatStorageSchema, chunkAndEmbedAllMessages, chunkAndEmbedMessage, chunkText, classifyCryptoPrice, classifyCryptoPriceBatch, classifyDecay, classifyInjectionCandidates, classifyObservationTrend, classifyStockPrice, classifyStockPriceBatch, classifyWeather, classifyWeatherBatch, classifyWebSearch, classifyWebSearchBatch, clearAllEncryptionKeys, clearAllEncryptionState, clearConversationMemoriesOp, clearEncryptionKey, clearLazyTitleCache, clearServerToolsCache, consoleLogger, conversationMemoryToStored, cosineInt8, createAutoExtractor, createChunkVectorCache, createCryptoPricePreProcessor, createDecaySweeper, createLlmDecayClassifier, createLlmNeighborRefiner, createMemoryEngineTool, createMemoryVaultSearchTool, createMemoryVaultTool, createMessageSourceResolver, createNotionTools, createPlatformCursorStore, createRecallTool, createStockPricePreProcessor, createStreamingDeAnonymizer, createVaultEmbeddingCache, createVaultFolderOp, createVaultMemoriesBatchOp, createVaultMemoryOp, createWeatherPreProcessor, createWebSearchPreProcessor, decodeChunkVector, decryptConversationTitle, deleteAllVaultMemoriesForUserOp, deleteVaultFolderOp, deleteVaultMemoryOp, dequantizeEmbedding, discoverNotionOAuthEndpoints, eagerEmbedContent, embedAllMessages, embedMessage, encodeChunkVector, ensureDefaultFoldersOp, exchangeNotionCode, extractAndLinkEntitiesForMemoriesOp, extractAndRetain, extractEntitiesForMemories, extractFacts, generateConversationId, generateEmbedding, generateEmbeddings, generateNotionPKCE, getAllVaultFoldersOp, getAllVaultMemoriesOp, getAllVaultMemoryContentsOp, getCachedServerTools, getConversationMemoriesOp, getConversationsByProjectLazyOp, getConversationsLazyOp, getConversationsPageOp, getDecayCandidatesRawOp, getLogger, getMemoriesNeedingTopicExtractionOp, getServerTools, getUnfiledVaultMemoriesOp, getVaultFolderMemoryCountOp, getVaultMemoriesByIdsOp, getVaultMemoryOp, getVaultRankingProjectionsOp, hardDeleteDecayedOp, hasEncryptionKey, ingestPublishedPhotoMemoriesOp, injectionSignatureCatalog, isDegradedTopicSkip, isPiiRedactor, isRerankerAvailable, maskScopedEmbeddingCache, moveMemoriesToFolderOp, noopLogger, onKeyAvailable, parseMedia, preEmbedVaultMemories, quantizeEmbedding, queueManager, rankProfileCandidates, recall, reflect, refreshEncryptionKeyIfMatches, refreshNotionAccessToken, registerNotionClient, relinkMemoryTopicsOp, requestEncryptionKey, resolvePiiRedactor, restoreVaultMemoryOp, resumeStream, retain, scoreProfileSalience, screenCandidatesForInjection, sdkMigrations, sdkModelClasses, sdkSchema, searchVaultMemories, seedEncryptionKeys, setLogger, setMemoryVisibilityOp, shouldChunkMessage, stampTopicsExtractedAtOp, streamCancelPath, streamReplayPath, summarizeObservationTrends, supersedeVaultMemoryOp, synthesizeProfile, traverseGraphLane, ttlForType, updateVaultFolderContextOp, updateVaultFolderOp, updateVaultMemoryEmbeddingOp, updateVaultMemoryOp, upsertMessageOp, useChat, useChatStorage, useCredits, useEncryption, useModels, verifyMemoriesForPublish, xhrTransport };
10924
+ export { type AutoExtractMessage, type AutoExtractor, type Budget, CHUNKS_DISCARDED_ORIGIN, type CachedChunkVectors, type CachedServerTools, Conversation as ChatConversation, Message as ChatMessage, type ChatRole, type ChunkVectorCache, type ChunkingOptions, type ConsolidationAction, type ConsolidationFallbackReason, type ConversationMemoryInput, ConversationMemory as ConversationMemoryModel, type ConversationMemoryOperationsContext, type CreateAutoExtractorOptions, type CreateConversationOptions, type CreateDecaySweeperOptions, type CreateMessageOptions, type CreateVaultFolderOptions, type CreateVaultMemoryOptions, type CryptoPriceClassification, type CryptoPricePreProcessorOptions, DEFAULT_CACHE_EXPIRATION_MS, DEFAULT_CHUNK_CACHE_SIZE, DEFAULT_CHUNK_OVERLAP, DEFAULT_CHUNK_SIZE, DEFAULT_DECAY_POLICY, DEFAULT_MAX_CLASSIFIER_CALLS_PER_SWEEP, DEFAULT_MIN_CHUNK_SIZE, DEFAULT_PROFILE_FACETS, DEFAULT_PROFILE_FACT_TYPE_WEIGHTS, DEFAULT_PROFILE_PROOF_ALPHA, DEFAULT_PROFILE_TREND_MULTIPLIERS, DEFAULT_VAULT_CACHE_SIZE, DatabaseManager, type DatabaseManagerLogger, type DatabaseManagerOptions, type DecayCandidateRaw, type DecayClassifier, type DecayInput, type DecayPolicy, type DecaySweepResult, type DecaySweeper, type DecayVerdict, ENTITY_FANOUT, type EmbeddedWalletSignerFn, EncryptionKeyMissingError, type ExtractFactsOptions, type ExtractOutcome, type ExtractedCandidate, type ExtractedEntity, type ExtractionCursorStore, type ExtractionFunnel, type ExtractionTimings, type FactType, type FileMetadata, type FlushResult, type GetConversationsPageOptions, type GetMessagesPageOptions, type GraphTraversalOptions, HARD_DELETE_WINDOW_MS, INFERENCE_ID_HEADER, type InjectionClassifierOptions, type InjectionReason, type LazyStoredConversation, type LlmDecayClassifierOptions, type LlmNeighborRefinerOptions, type Logger, LoggerProvider, type LoggerProviderProps, MAX_HOPS, MEDIUM_TTL_MS, type ManualFactType, type MemoriesNeedingTopicExtraction, type EmbeddingOptions as MemoryEngineEmbeddingOptions, type MemoryEngineResult, type MemoryEngineSearchOptions, type MemoryExtractedEvent, type MemoryKind, type MemoryQuarantinedEvent, type MemoryToVerify, type MemoryVaultSearchOptions, type MemoryVaultToolOptions, type MemoryVerification, type MessageRedactionResult, type MessageSkeleton, NEVER_TTL_MS, NODE_BUDGET, NOTION_OAUTH_CONFIG, type NeighborRefiner, type NotionAuthUrlParams, type NotionClientRegistration, type NotionExchangeCodeParams, type NotionOAuthEndpoints, type NotionPKCEChallenge, type NotionRefreshTokenParams, type NotionTokenResponse, type NowSource, type ObservationTrend, type ObservationTrendInput, PAST_EVENT_GRACE_MS, PII_PATTERNS, PROFILE_DOC_VERSION, type PhotoIngestResult, type PhotoMediaRef, type PiiCategory, type PiiMatch, type PiiPattern, PiiRedactor, type PiiRedactorOptions, type PlatformStorage, type PortalLlmAuth, type PortalLlmFailure, type PortalLlmFailureReason, type ProfileConfigFingerprint, type ProfileDoc, type ProfileFacet, type ProfileFacetKey, type ProfileSalienceInput, type ProfileSection, type PromptPreProcessor, type PromptPreProcessorContext, type PublishedPhotoMemory, type QuantizedEmbedding, type QuarantinedMemoryInfo, QueueManager, type QueueStatus, RECALL_MAX_LIMIT, RECALL_TOOL_NAME, type RankableVaultMemory, type RankedMemory, type RankedProfileCandidate, type RecallContext, type RecallDegradation, type RecallDiagnostics, type RecallEmptyReason, type RecallOptions, type RecallResult, type RecallToolCallbacks, type RecallToolOptions, type RecencyOptions, type RedactionResult, type ReflectOptions, type ReflectResult, type RequestEncryptionKeyOptions, RerankerUnavailableError, type ResumeStreamOptions, type ResumeStreamResult, type ResumeStreamWithStorageResult, type RetainAction, type RetainContext, type RetainOptions, type RetainResult, type RetainSource, SDK_SCHEMA_VERSION, SHORT_TTL_MS, STREAM_RESUMABLE_HEADER, type ScoreBreakdown, type ScoreProfileSalienceOptions, type ScreenResult, type ScreenedCandidate, type SearchSource, type SendMessageWithStorageArgs, type SendMessageWithStorageDetachedResult, type SendMessageWithStorageResult, type ServerToolsOptions, type ServerToolsResponse, type SignMessageFn, type StockPriceClassification, type StockPricePreProcessorOptions, type ChatCompletionUsage as StoredChatCompletionUsage, type StoredConversation, type StoredConversationMemory, type StoredMessage, type StoredMessageWithSimilarity, type StoredVaultFolder, VaultFolder as StoredVaultFolderModel, type StoredVaultMemory, VaultMemory as StoredVaultMemoryModel, StreamExpiredError, type StreamMetaEvent, type StreamResumeHandle, type SynthesizeProfileOptions, TOOL_RESULT_ORIGIN, TOPICS_EXTRACTION_VERSION, TOPIC_EXTRACTION_BATCH_SIZE, TREND_RECENT_WINDOW_DAYS, TREND_STALE_WINDOW_DAYS, type TextChunk, type TopicExtractOptions, type TopicExtractionInput, type TopicExtractionRunResult, type TopicSkipReason, type TurnCompleteEvent, type TurnSkippedEvent, type UncheckedReason, type UnverifiableReason, type UpdateVaultFolderOptions, type UpdateVaultMemoryOptions, type UseChatStorageOptions, type UseChatStorageResult, type UseCreditsOptions, type UseCreditsResult, type UseModelsOptions, type UseModelsResult, VAULT_SIZE_HOP_CAP, type VaultEmbeddingCache, type VaultFolderOperationsContext, type VaultMemoryOperationsContext, type VaultMemoryVisibility, type VaultMemoryWriter, type VaultSaveOperation, type VaultSearchResult, type VaultWriteAction, type VaultWriteInput, type VaultWriteOutcome, type VerificationSources, type VerifyMemoriesForPublishOptions, WalletPoller, type WeatherClassification, type WeatherPreProcessorOptions, type WebSearchClassification, type WebSearchPreProcessorOptions, addConversationMemoriesOp, archiveVaultMemoryOp, backfillMemoryTopicsOp, buildNotionAuthUrl, capHopsForDensity, chatStorageMigrations, chatStorageSchema, chunkAndEmbedAllMessages, chunkAndEmbedMessage, chunkText, classifyCryptoPrice, classifyCryptoPriceBatch, classifyDecay, classifyInjectionCandidates, classifyObservationTrend, classifyStockPrice, classifyStockPriceBatch, classifyWeather, classifyWeatherBatch, classifyWebSearch, classifyWebSearchBatch, clearAllEncryptionKeys, clearAllEncryptionState, clearConversationMemoriesOp, clearEncryptionKey, clearLazyTitleCache, clearServerToolsCache, consoleLogger, conversationMemoryToStored, cosineInt8, createAutoExtractor, createChunkVectorCache, createCryptoPricePreProcessor, createDecaySweeper, createLlmDecayClassifier, createLlmNeighborRefiner, createMemoryEngineTool, createMemoryVaultSearchTool, createMemoryVaultTool, createMessageSourceResolver, createNotionTools, createPlatformCursorStore, createRecallTool, createStockPricePreProcessor, createStreamingDeAnonymizer, createVaultEmbeddingCache, createVaultFolderOp, createVaultMemoriesBatchOp, createVaultMemoryOp, createWeatherPreProcessor, createWebSearchPreProcessor, decodeChunkVector, decryptConversationTitle, deleteAllVaultMemoriesForUserOp, deleteVaultFolderOp, deleteVaultMemoryOp, dequantizeEmbedding, discoverNotionOAuthEndpoints, eagerEmbedContent, embedAllMessages, embedMessage, encodeChunkVector, ensureDefaultFoldersOp, exchangeNotionCode, extractAndLinkEntitiesForMemoriesOp, extractAndRetain, extractEntitiesForMemories, extractFacts, generateConversationId, generateEmbedding, generateEmbeddings, generateNotionPKCE, getAllVaultFoldersOp, getAllVaultMemoriesOp, getAllVaultMemoryContentsOp, getCachedServerTools, getConversationMemoriesOp, getConversationsByProjectLazyOp, getConversationsLazyOp, getConversationsPageOp, getDecayCandidatesRawOp, getLogger, getMemoriesNeedingTopicExtractionOp, getServerTools, getUnfiledVaultMemoriesOp, getVaultFolderMemoryCountOp, getVaultMemoriesByIdsOp, getVaultMemoryOp, getVaultRankingProjectionsOp, hardDeleteDecayedOp, hasEncryptionKey, ingestPublishedPhotoMemoriesOp, injectionSignatureCatalog, isDegradedTopicSkip, isPiiRedactor, isRerankerAvailable, maskScopedEmbeddingCache, moveMemoriesToFolderOp, noopLogger, onKeyAvailable, parseMedia, preEmbedVaultMemories, quantizeEmbedding, queueManager, rankProfileCandidates, recall, reflect, refreshEncryptionKeyIfMatches, refreshNotionAccessToken, registerNotionClient, relinkMemoryTopicsOp, requestEncryptionKey, resolvePiiRedactor, restoreVaultMemoryOp, resumeStream, retain, scoreProfileSalience, screenCandidatesForInjection, sdkMigrations, sdkModelClasses, sdkSchema, searchVaultMemories, seedEncryptionKeys, setLogger, setMemoryVisibilityOp, shouldChunkMessage, stampTopicsExtractedAtOp, streamCancelPath, streamReplayPath, summarizeObservationTrends, supersedeVaultMemoryOp, synthesizeProfile, traverseGraphLane, ttlForType, updateVaultFolderContextOp, updateVaultFolderOp, updateVaultMemoryEmbeddingOp, updateVaultMemoryOp, upsertMessageOp, useChat, useChatStorage, useCredits, useEncryption, useModels, verifyMemoriesForPublish, xhrTransport };