@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.
@@ -7110,7 +7110,25 @@ type RecallDegradation =
7110
7110
  * failing back to the single-query path, or a row batch failing while other
7111
7111
  * rows keep usable vectors) — those are logged, not reported, so this stays a
7112
7112
  * reliable outage signal rather than a general embedding-error counter. */
7113
- | "embeddings-unavailable";
7113
+ | "embeddings-unavailable"
7114
+ /** The W5 graph (entity) side lane threw and was dropped. Auxiliary, so recall
7115
+ * still returned — but its RRF signal is missing from the ranking, and until
7116
+ * this existed the drop was a log line and nothing else. */
7117
+ | "graph-lane-failed"
7118
+ /** The W6 temporal side lane threw and was dropped. Same posture as the graph
7119
+ * lane: recall still returned, ranked without the temporal signal. */
7120
+ | "temporal-lane-failed";
7121
+ /**
7122
+ * Why a recall returned nothing. `""` when it returned something, so the field
7123
+ * is always present and groupable rather than being absent on the healthy path.
7124
+ *
7125
+ * The four are different problems: an empty query is a caller bug, no-lanes is a
7126
+ * context wiring bug (the requested kinds have no store), vault-empty is a new
7127
+ * user, and no-candidates is the only one that is about retrieval quality. They
7128
+ * were previously indistinguishable from outside — every one reported
7129
+ * `candidateCount: 0`.
7130
+ */
7131
+ type RecallEmptyReason = "" | "empty-query" | "no-lanes" | "vault-empty" | "no-candidates";
7114
7132
  /**
7115
7133
  * Per-call recall observability payload (see {@link RecallOptions.onDiagnostics}).
7116
7134
  * All timings are wall-clock milliseconds. Lane counts are post-dedupe,
@@ -7161,6 +7179,50 @@ interface RecallDiagnostics {
7161
7179
  factCount: number;
7162
7180
  /** Chunks the chunk lane returned (post-dedupe, pre-fusion). */
7163
7181
  chunkCount: number;
7182
+ /**
7183
+ * Memories actually RETURNED — `memories.length` after fusion, cross-lane
7184
+ * dedup and the `limit` slice.
7185
+ *
7186
+ * `candidateCount` is what was considered; this is what the caller got, and
7187
+ * the two are routinely far apart (the fact lane pulls `limit * 2` when fusing).
7188
+ * Every consumer that wanted "how many memories did this turn actually get"
7189
+ * was reading `candidateCount` and overcounting.
7190
+ */
7191
+ admittedCount: number;
7192
+ /** Highest score among the returned memories; -1 when none were returned. */
7193
+ topScore: number;
7194
+ /** Lowest score among the returned memories; -1 when none were returned. */
7195
+ lowestAdmittedScore: number;
7196
+ /**
7197
+ * The similarity floor the lane that produced these scores actually applied:
7198
+ * the fact lane's when it RETURNED results, otherwise the chunk lane's, and
7199
+ * **-1 when neither ran** (empty query, unwired context). Gated on results
7200
+ * rather than on the lane running, because a fact lane that ran and came
7201
+ * back empty filtered none of the scores in the payload — reporting its
7202
+ * 0.1 default against chunks that cleared 0.5 corrupted the telemetry.
7203
+ * When NOTHING was admitted, the floor a lane did apply is still reported:
7204
+ * "searched at this floor, found nothing" is the useful reading.
7205
+ *
7206
+ * Per-lane rather than one constant because the two defaults differ (0.1 fact
7207
+ * / 0.5 chunk), so a single seeded value reported a floor that a chunk-only
7208
+ * recall never applied. Reported next to the scores because the scores alone
7209
+ * cannot say what they cleared.
7210
+ */
7211
+ minScoreApplied: number;
7212
+ /**
7213
+ * Whether the `limit` cut an ELIGIBLE result — recorded at the cut, not
7214
+ * derived from `candidateCount > limit`. In the fused path `candidateCount`
7215
+ * counts before provenance suppression, so a recall whose suppressed chunks
7216
+ * brought it under the limit would otherwise report a truncation that never
7217
+ * happened.
7218
+ */
7219
+ truncated: boolean;
7220
+ /** Memory ids the W5 graph (entity) side lane contributed to the fusion. */
7221
+ graphLaneCount: number;
7222
+ /** Memory ids the W6 temporal side lane contributed to the fusion. */
7223
+ temporalLaneCount: number;
7224
+ /** Why nothing came back — see {@link RecallEmptyReason}. `""` when something did. */
7225
+ emptyReason: RecallEmptyReason;
7164
7226
  /** Wall-clock phase timings (ms). */
7165
7227
  timings: {
7166
7228
  /** Whole `recall()` call. */
@@ -9862,8 +9924,7 @@ interface ProfileSection {
9862
9924
  interests?: string[];
9863
9925
  /** Unix ms this section was generated. */
9864
9926
  generatedAt: number;
9865
- /** True when regeneration failed and a prior section value was carried
9866
- * forward (e.g. LLM returned empty) — the caller may choose to retry. */
9927
+ /** True when regeneration failed (e.g. LLM returned empty) — the caller may choose to retry. */
9867
9928
  stale?: boolean;
9868
9929
  }
9869
9930
  /** Fingerprint of the config that produced a {@link ProfileDoc}. Delta reuse
@@ -16039,4 +16100,4 @@ declare function renderAnumaTree(node: AnumaNode): React.ReactElement | null;
16039
16100
  */
16040
16101
  declare function renderAnumaJsx(jsx: string): React.ReactElement | null;
16041
16102
 
16042
- export { Anuma, type AnumaChild, AnumaJsxError, type AnumaNode, AnumaShadowIsolationProvider, type AnumaShadowIsolationProviderProps, type AnumaTheme, AnumaThemeProvider, type AnumaThemeProviderProps, AppFile as AppFileModel, type AppFileOperationsContext, type AttrValue, type AutoExtractMessage, type AutoExtractor, DEFAULT_CONVERSATIONS_FOLDER as BACKUP_DRIVE_CONVERSATIONS_FOLDER, DEFAULT_ROOT_FOLDER as BACKUP_DRIVE_ROOT_FOLDER, DEFAULT_BACKUP_FOLDER as BACKUP_ICLOUD_FOLDER, BUILT_IN_TOOL_SETS, type BackupAuthContextValue, BackupAuthProvider, type BackupAuthProviderProps, type BackupOperationOptions, BlobUrlManager, type Budget, CHUNKS_DISCARDED_ORIGIN, type CachedChunkVectors, type CachedServerTools, ChartCard, type ChartCardProps, type ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Conversation as ChatConversation, Message as ChatMessage, type ChatRole, type ChatStorageAdapter, type ChatStorageObservable, type ChunkSearchResult, type ChunkVectorCache, type ChunkingOptions, type CircleProps, type ClientToolsFilterFn, type ConsolidationAction, type ConsolidationFallbackReason, type ConversationMemoryInput, ConversationMemory as ConversationMemoryModel, type ConversationMemoryOperationsContext, type ConversationQueryOptions, type CreateAutoExtractorOptions, type CreateConversationOptions, type CreateDecaySweeperOptions, type CreateEntityOptions, type CreateMediaOptions, type CreateMessageOptions, type CreateModelPreferenceOptions, type CreateProjectOptions, type CreateSavedToolOptions, type CreateServerToolsFilterOptions, type CreateUserPreferenceOptions, type CreateVaultFolderOptions, type CreateVaultMemoryOptions, type CryptoPriceClassification, type CryptoPricePreProcessorOptions, DEFAULT_BACKUP_FOLDER$1 as DEFAULT_BACKUP_FOLDER, DEFAULT_CACHE_EXPIRATION_MS, DEFAULT_CHUNK_CACHE_SIZE, DEFAULT_CHUNK_OVERLAP, DEFAULT_CHUNK_SIZE, DEFAULT_DECAY_POLICY, DEFAULT_CONVERSATIONS_FOLDER as DEFAULT_DRIVE_CONVERSATIONS_FOLDER, DEFAULT_ROOT_FOLDER as DEFAULT_DRIVE_ROOT_FOLDER, DEFAULT_BACKUP_FOLDER$1 as DEFAULT_DROPBOX_FOLDER, DEFAULT_EXCLUDED_SERVER_TOOLS, DEFAULT_BACKUP_FOLDER as DEFAULT_ICLOUD_BACKUP_FOLDER, DEFAULT_MAX_CLASSIFIER_CALLS_PER_SWEEP, DEFAULT_MIN_CHUNK_SIZE, DEFAULT_PERSONALITY_SETTINGS, DEFAULT_PROFILE_FACETS, DEFAULT_PROFILE_FACT_TYPE_WEIGHTS, DEFAULT_PROFILE_PROOF_ALPHA, DEFAULT_PROFILE_TREND_MULTIPLIERS, DEFAULT_SERVER_TOOLS_MATCH_OPTIONS, DEFAULT_VAULT_CACHE_SIZE, DatabaseManager, type DatabaseManagerLogger, type DatabaseManagerOptions, type DecayCandidateRaw, type DecayClassifier, type DecayInput, type DecayPolicy, type DecaySweepResult, type DecaySweeper, type DecayVerdict, type DeckProps, type DisplayToolMigrations, type DropboxAuthContextValue, DropboxAuthProvider, type DropboxAuthProviderProps, type DropboxExportResult, type DropboxImportResult, ENTITY_FANOUT, ENTITY_KINDS, type EmbeddedWalletSignerFn, EncryptionKeyMissingError, type EncryptionKeyVersion, type EntityInput, type EntityKind, Entity as EntityModel, type EntityOperationsContext, ExcelProcessor, type ExtractFactsOptions, type ExtractOutcome, type ExtractedCandidate, type ExtractedEntity, type ExtractionCursorStore, type ExtractionFunnel, type ExtractionTimings, FILE_PLACEHOLDER_PREFIX, FILE_PLACEHOLDER_REGEX, type FactType, type FileMetadata, type FileProcessor, type FileTypeQuery, type FileWithData, type FlushResult, type GetConversationsPageOptions, type GetMessagesPageOptions, type GoogleDriveAuthContextValue, GoogleDriveAuthProvider, type GoogleDriveAuthProviderProps, type GoogleDriveExportResult, type GoogleDriveImportResult, type GraphTraversalOptions, type GroupProps, HARD_DELETE_WINDOW_MS, type ICloudAuthContextValue, ICloudAuthProvider, type ICloudAuthProviderProps, type ICloudExportResult, type ICloudImportResult, INFERENCE_ID_HEADER, type IconProps, type ImageProps, type InjectionClassifierOptions, type InjectionReason, type InteractionType, type KnownTag, type LazyStoredConversation, type LineProps, type LlmDecayClassifierOptions, type LlmNeighborRefinerOptions, type Logger, LoggerProvider, type LoggerProviderProps, MAX_HOPS, MEDIUM_TTL_MS, type ManualFactType, type MediaDimensions, type MediaFilterOptions, type MediaMetadata, type MediaOperationsContext, type MediaRole, type MediaType, type MemoriesNeedingTopicExtraction, type EmbeddingOptions as MemoryEngineEmbeddingOptions, type MemoryEngineResult, type MemoryEngineSearchOptions, MemoryEntity as MemoryEntityModel, type MemoryExtractedEvent, type MemoryKind, type MemoryQuarantinedEvent, type MemoryToVerify, type MemoryVaultSearchOptions, type MemoryVaultToolOptions, type MemoryVerification, type MessageChunk, type MessageFeedback, type MessageOrigin, type MessageSkeleton, type ModelLoadProgress, NEVER_TTL_MS, NODE_BUDGET, type NeighborRefiner, type NowSource, type OCRFile, type ObservationTrend, type ObservationTrendInput, type OperationExecutor, PAST_EVENT_GRACE_MS, PROFILE_DOC_VERSION, type ParsedServerToolsResponse, type PdfExportOptions, type PdfExportProgress, type PdfExportStage, type PdfFile, PdfProcessor, type PendingInteraction, type PersonalitySettings, type PersonalitySliders, type PersonalityStyle, type PhoneCallPollingOptions, type PhotoIngestResult, type PhotoMediaRef, type PlatformStorage, type PortalLlmAuth, type PortalLlmFailure, type PortalLlmFailureReason, type PreprocessingOptions, type PreprocessingResult, type ProcessedFileResult, ProcessorRegistry, type ProfileConfigFingerprint, type ProfileDoc, type ProfileFacet, type ProfileFacetKey, type ProfileSalienceInput, type ProfileSection, type ProfileUpdate, type ProgressCallback, Project, type ProjectOperationsContext, type PromptPreProcessor, type PromptPreProcessorContext, type ProviderAuthState, type ProviderBackupState, ProviderStreamError, type PublishedPhotoMemory, type QuantizedEmbedding, type QuarantinedMemoryInfo, type QueueEncryptionContext, QueueManager, type QueueStatus, type QueuedOperation, type QueuedOperationType, R2_DEFAULT_TTL_MS, 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 RectProps, type ReflectOptions, type ReflectResult, type RequestEncryptionKeyOptions, RerankerUnavailableError, type ResumeStreamOptions, type ResumeStreamResult, type RetainAction, type RetainContext, type RetainOptions, type RetainResult, type RetainSource, SDK_SCHEMA_VERSION, SERVER_TOOL_DEPENDENCY_SETS, SHORT_TTL_MS, SLIDER_CONFIG, SLIDES_FILE_PATH, SLIDE_CANVAS_HEIGHT, SLIDE_CANVAS_WIDTH, STREAM_RESUMABLE_HEADER, SavedTool as SavedToolModel, type SavedToolOperationsContext, type SavedToolParameter, type ScoreBreakdown, type ScoreProfileSalienceOptions, type ScreenProps, type ScreenResult, type ScreenedCandidate, type SearchMessagesOptions, type SearchSource, type SelectServerToolsForPromptOptions, type SendMessageWithStorageArgs, type SendMessageWithStorageResult, type ServerTool, type ServerToolsFilter, type ServerToolsFilterFn, type ServerToolsFilterFunction, type ServerToolsOptions, type ServerToolsResponse, type SignMessageFn, type SignMessageOptions, type SlideProps, type StepFinishEvent, type StockPriceClassification, type StockPricePreProcessorOptions, type StorageOperationsContext, type StoredAppFile, type ChatCompletionUsage as StoredChatCompletionUsage, type StoredConversation, type StoredConversationMemory, type StoredEntity, type StoredFileWithContext, type StoredMedia, Media as StoredMediaModel, type StoredMessage, type StoredMessageWithSimilarity, type StoredModelPreference, ModelPreference as StoredModelPreferenceModel, type StoredProject, type StoredSavedTool, type StoredTopic, type StoredUserPreference, UserPreference as StoredUserPreferenceModel, type StoredVaultFolder, VaultFolder as StoredVaultFolderModel, type StoredVaultMemory, VaultMemory as StoredVaultMemoryModel, StreamExpiredError, type StreamMetaEvent, type StreamResumeHandle, type SynthesizeProfileOptions, THEME_ATTRS, TOOL_RESULT_ORIGIN, TOPICS_EXTRACTION_VERSION, TOPIC_EXTRACTION_BATCH_SIZE, TREND_RECENT_WINDOW_DAYS, TREND_STALE_WINDOW_DAYS, type TextChunk, TextProcessor, type TextProps, type ThemeAttr, type ToolCallArgumentsDeltaEvent, type ToolMatchOptions, type ToolMatchResult, type ToolSet, type TopicExtractOptions, type TopicExtractionInput, type TopicExtractionRunResult, type TopicSkipReason, type TopicSource, type TranscriptionResult, type TurnCompleteEvent, type TurnSkippedEvent, type UIInteractionContextValue, UIInteractionProvider, type UIInteractionProviderProps, type UncheckedReason, type UnverifiableReason, type UpdateMediaOptions, type UpdateModelPreferenceOptions, type UpdateProjectOptions, type UpdateSavedToolOptions, type UpdateUserPreferenceOptions, type UpdateVaultFolderOptions, type UpdateVaultMemoryOptions, type UseBackupOptions, type UseBackupResult, type UseChatStorageOptions, type UseChatStorageResult, type UseCreditsOptions, type UseCreditsResult, type UseDropboxBackupOptions, type UseDropboxBackupResult, type UseEncryptionResult, type UseExportPdfResult, type UseFilesOptions, type UseFilesResult, type UseGoogleDriveBackupOptions, type UseGoogleDriveBackupResult, type UseICloudBackupOptions, type UseICloudBackupResult, type UseModelsResult, type UseOCRResult, type UsePdfResult, type UsePhoneCallsOptions, type UsePhoneCallsResult, type UseProjectsOptions, type UseProjectsResult, type UseSettingsOptions, type UseSettingsResult, type UseSubscriptionOptions, type UseSubscriptionResult, type UseToolsOptions, type UseToolsResult, type UseVoiceOptions, type UseVoiceResult, type UseWalletBindingOptions, type UseWalletBindingResult, VAULT_SIZE_HOP_CAP, type VaultCandidateKey, type VaultEmbeddingCache, type VaultFolderOperationsContext, type VaultMemoryOperationsContext, type VaultMemoryVisibility, type VaultMemoryWriter, type VaultSaveOperation, type VaultSearchResult, type VaultWriteAction, type VaultWriteInput, type VaultWriteOutcome, type VerificationSources, type VerifyMemoriesForPublishOptions, type VoiceRecording, WalletPoller, WatermelonChatStorageAdapter, type WatermelonChatStorageAdapterOptions, type WeatherClassification, type WeatherPreProcessorOptions, type WebSearchClassification, type WebSearchPreProcessorOptions, type WhisperModel, WordProcessor, ZipProcessor, type ZipProcessorOptions, addConversationMemoriesOp, appFileToStored, archiveVaultMemoryOp, backfillMemoryEntityUserIdsOp, backfillMemoryTopicsOp, capHopsForDensity, chatStorageMigrations, chatStorageSchema, chunkAndEmbedAllMessages, chunkAndEmbedMessage, chunkText, classifyCryptoPrice, classifyCryptoPriceBatch, classifyDecay, classifyInjectionCandidates, classifyObservationTrend, classifyStockPrice, classifyStockPriceBatch, classifyWeather, classifyWeatherBatch, classifyWebSearch, classifyWebSearchBatch, clearAllEncryptionKeys, clearAllEncryptionState, clearAllKeyPairs, clearCalendarToken, clearConversationMemoriesOp, clearDriveToken, clearToken as clearDropboxToken, clearEncryptionKey, clearGithubToken, clearGoogleDriveToken, clearICloudAuth, clearKeyPair, clearLazyTitleCache, clearMemoryTopicsOverrideOp, clearNotionToken, clearServerToolsCache, consoleLogger, conversationMemoryToStored, cosineInt8, createAutoExtractor, createChunkVectorCache, createCryptoPricePreProcessor, createDecaySweeper, createGitHubTools, createLlmDecayClassifier, createLlmNeighborRefiner, createMediaBatchOp, createMediaOp, createMemoryEngineTool, createMemoryVaultSearchTool, createMemoryVaultTool, createMessageSourceResolver, createPlatformCursorStore, createProjectOp, createRecallTool, createSavedToolOp, createServerToolsFilter, createStockPricePreProcessor, createVaultEmbeddingCache, createVaultFolderOp, createVaultMemoriesBatchOp, createVaultMemoryOp, createWeatherPreProcessor, createWebSearchPreProcessor, decodeChunkVector, decryptConversationTitle, decryptData, decryptDataBatch, decryptDataBytes, decryptDataBytesFromBytes, decryptDataWithKey, defaultServerToolsFilter, deleteAllAppFilesOp, deleteAllVaultMemoriesForUserOp, deleteAppFileOp, deleteEncryptedFile, deleteMediaByConversationOp, deleteMediaByMessageOp, deleteMediaOp, deleteProjectOp, deleteSavedToolOp, deleteVaultFolderOp, deleteVaultMemoryOp, dequantizeEmbedding, eagerEmbedContent, embedAllMessages, embedMessage, encodeChunkVector, encryptData, encryptDataBatch, encryptDataBytes, encryptDataWithKey, ensureDefaultFoldersOp, expandToolSetsAdditive, exportElementToPdf, exportMarkdownToPdf, exportPublicKey, extractAndLinkEntitiesForMemoriesOp, extractAndRetain, extractEntitiesForMemories, extractFacts, extractFileIds, fileExists, findById, findMatchingTools, findParentOfId, generateConversationId, generateEmbedding, generateEmbeddings, generateMediaId, generateProjectId, getAIGeneratedMediaOp, getAllSavedToolsOp, getAllVaultFoldersOp, getAllVaultMemoriesOp, getAllVaultMemoryContentsOp, getAndClearCalendarPendingMessage, getAndClearCalendarReturnUrl, getAndClearDrivePendingMessage, getAndClearDriveReturnUrl, getAndClearGithubPendingMessage, getAndClearGithubReturnUrl, getAndClearNotionPendingMessage, getAndClearNotionReturnUrl, getAppFileMapOp, getAppFileOp, getAppFilesOp, getAudioOp, getCachedServerTools, getCalendarAccessToken, getConversationMemoriesOp, getConversationsByProjectLazyOp, getConversationsByProjectOp, getConversationsLazyOp, getConversationsPageOp, getDecayCandidatesRawOp, getDocumentsOp, getDriveAccessToken, getEncryptionKey, getEntitiesByMemoryIdsOp, getGithubAccessToken, getGoogleDriveStoredToken, getId, getImagesOp, getLogger, getMediaByConversationOp, getMediaByIdOp, getMediaByIdsOp, getMediaByMessageOp, getMediaByModelOp, getMediaByRoleOp, getMediaBySourceUrlOp, getMediaByTypeOp, getMediaCountOp, getMediaCountsByTypeOp, getMediaOp, getMediaTypeFromMime, getMemoriesByEntityNamesOp, getMemoriesNeedingTopicExtractionOp, getNotionAccessToken, getNotionMCPUrl, getNumberAttr, getProjectConversationCountOp, getProjectConversationsOp, getProjectOp, getProjectsOp, getRecentMediaOp, getSavedToolByIdOp, getServerTools, getStringAttr, getSupportedFileTypes, getToolsChecksum, getUnfiledVaultMemoriesOp, getUserUploadedMediaOp, getValidCalendarToken, getValidDriveToken, getValidGithubToken, getValidNotionToken, getVaultCandidateKeysOp, getVaultEmbeddingsByIdsOp, getVaultFolderMemoryCountOp, getVaultMemoriesByIdsOp, getVaultMemoryOp, getVaultRankingProjectionsOp, getVideosOp, handleCalendarCallback, handleDriveCallback, handleGithubCallback, handleNotionCallback, hardDeleteDecayedOp, hardDeleteMediaOp, hasCalendarCredentials, hasDriveCredentials, hasDropboxCredentials, hasEncryptionKey, hasGithubCredentials, hasGoogleDriveCredentials, hasICloudCredentials, hasKeyPair, hasNotionCredentials, ingestPublishedPhotoMemoriesOp, injectionSignatureCatalog, insertAfterId, insertChild, isAnumaTag, isCalendarCallback, isDegradedTopicSkip, isDriveCallback, isGithubCallback, isHtmlTag, isNotionCallback, isOPFSSupported, isR2UrlExpired, isRerankerAvailable, isSupportedFile, isSupportedMediaType, linkMemoryEntitiesOp, maskScopedEmbeddingCache, mediaToStored, migrateCalendarToken, migrateDisplayResult, migrateDriveToken, migrateGithubToken, migrateNotionClientRegistration, migrateNotionToken, moveMemoriesToFolderOp, noopLogger, onKeyAvailable, parseJsx, parseMedia, preEmbedVaultMemories, preprocessFiles, previewToolSelection, projectToStored, putAppFileOp, quantizeEmbedding, queueManager, rankProfileCandidates, readEncryptedFile, recall, reflect, refreshCalendarToken, refreshDriveToken, refreshEncryptionKeyIfMatches, refreshGithubToken, refreshNotionToken, relinkMemoryTopicsOp, relinkMisclassifiedVideosOp, removeById, renderAnumaJsx, renderAnumaTree, renderElementToCanvas, replaceById, replaceMemoryEntitiesGuardedOp, requestEncryptionKey, requestKeyPair, resolveFilePlaceholders, resolveThemeColor, restoreVaultMemoryOp, resumeStream, retain, revokeCalendarToken, revokeDriveToken, revokeGithubToken, revokeNotionAccess, savedToolToStored, scoreProfileSalience, screenCandidatesForInjection, sdkMigrations, sdkModelClasses, sdkSchema, searchChunksOp, searchMediaOp, searchMessagesOp, searchVaultMemories, seedEncryptionKeys, selectServerToolsForPrompt, serializeJsx, setLogger, setMemoryEntitiesOp, setMemoryVisibilityOp, settingsStorageSchema, shouldChunkMessage, shouldRefreshTools, stampTopicsExtractedAtOp, startGithubAuth, startNotionAuth, storeCalendarPendingMessage, storeCalendarReturnUrl, storeCalendarToken, storeDrivePendingMessage, storeDriveReturnUrl, storeDriveToken, storeGithubPendingMessage, storeGithubReturnUrl, storeGithubToken, storeNotionPendingMessage, storeNotionReturnUrl, streamCancelPath, streamReplayPath, summarizeObservationTrends, supersedeVaultMemoryOp, synthesizeProfile, traverseGraphLane, ttlForType, updateAttrs, updateConversationProjectOp, updateMediaMessageIdBatchOp, updateMediaOp, updateMessageFeedbackOp, updateProjectNameOp, updateProjectOp, updateSavedToolOp, updateVaultFolderContextOp, updateVaultFolderOp, updateVaultMemoryEmbeddingOp, updateVaultMemoryOp, useAnumaTheme, useBackup, useBackupAuth, useChat, useChatStorage, useCredits, useDatabaseManager, useDropboxAuth, useDropboxBackup, useEncryption, useExportPdf, useFiles, useGoogleDriveAuth, useGoogleDriveBackup, useICloudAuth, useICloudBackup, useModels, useOCR, usePdf, usePhoneCalls, useProjects, useSettings, useSubscription, useTools, useUIInteraction, useVoice, useWalletBinding, userPreferencesStorageSchema, verifyMemoriesForPublish, walk, webPlatformStorage, writeEncryptedFile };
16103
+ export { Anuma, type AnumaChild, AnumaJsxError, type AnumaNode, AnumaShadowIsolationProvider, type AnumaShadowIsolationProviderProps, type AnumaTheme, AnumaThemeProvider, type AnumaThemeProviderProps, AppFile as AppFileModel, type AppFileOperationsContext, type AttrValue, type AutoExtractMessage, type AutoExtractor, DEFAULT_CONVERSATIONS_FOLDER as BACKUP_DRIVE_CONVERSATIONS_FOLDER, DEFAULT_ROOT_FOLDER as BACKUP_DRIVE_ROOT_FOLDER, DEFAULT_BACKUP_FOLDER as BACKUP_ICLOUD_FOLDER, BUILT_IN_TOOL_SETS, type BackupAuthContextValue, BackupAuthProvider, type BackupAuthProviderProps, type BackupOperationOptions, BlobUrlManager, type Budget, CHUNKS_DISCARDED_ORIGIN, type CachedChunkVectors, type CachedServerTools, ChartCard, type ChartCardProps, type ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Conversation as ChatConversation, Message as ChatMessage, type ChatRole, type ChatStorageAdapter, type ChatStorageObservable, type ChunkSearchResult, type ChunkVectorCache, type ChunkingOptions, type CircleProps, type ClientToolsFilterFn, type ConsolidationAction, type ConsolidationFallbackReason, type ConversationMemoryInput, ConversationMemory as ConversationMemoryModel, type ConversationMemoryOperationsContext, type ConversationQueryOptions, type CreateAutoExtractorOptions, type CreateConversationOptions, type CreateDecaySweeperOptions, type CreateEntityOptions, type CreateMediaOptions, type CreateMessageOptions, type CreateModelPreferenceOptions, type CreateProjectOptions, type CreateSavedToolOptions, type CreateServerToolsFilterOptions, type CreateUserPreferenceOptions, type CreateVaultFolderOptions, type CreateVaultMemoryOptions, type CryptoPriceClassification, type CryptoPricePreProcessorOptions, DEFAULT_BACKUP_FOLDER$1 as DEFAULT_BACKUP_FOLDER, DEFAULT_CACHE_EXPIRATION_MS, DEFAULT_CHUNK_CACHE_SIZE, DEFAULT_CHUNK_OVERLAP, DEFAULT_CHUNK_SIZE, DEFAULT_DECAY_POLICY, DEFAULT_CONVERSATIONS_FOLDER as DEFAULT_DRIVE_CONVERSATIONS_FOLDER, DEFAULT_ROOT_FOLDER as DEFAULT_DRIVE_ROOT_FOLDER, DEFAULT_BACKUP_FOLDER$1 as DEFAULT_DROPBOX_FOLDER, DEFAULT_EXCLUDED_SERVER_TOOLS, DEFAULT_BACKUP_FOLDER as DEFAULT_ICLOUD_BACKUP_FOLDER, DEFAULT_MAX_CLASSIFIER_CALLS_PER_SWEEP, DEFAULT_MIN_CHUNK_SIZE, DEFAULT_PERSONALITY_SETTINGS, DEFAULT_PROFILE_FACETS, DEFAULT_PROFILE_FACT_TYPE_WEIGHTS, DEFAULT_PROFILE_PROOF_ALPHA, DEFAULT_PROFILE_TREND_MULTIPLIERS, DEFAULT_SERVER_TOOLS_MATCH_OPTIONS, DEFAULT_VAULT_CACHE_SIZE, DatabaseManager, type DatabaseManagerLogger, type DatabaseManagerOptions, type DecayCandidateRaw, type DecayClassifier, type DecayInput, type DecayPolicy, type DecaySweepResult, type DecaySweeper, type DecayVerdict, type DeckProps, type DisplayToolMigrations, type DropboxAuthContextValue, DropboxAuthProvider, type DropboxAuthProviderProps, type DropboxExportResult, type DropboxImportResult, ENTITY_FANOUT, ENTITY_KINDS, type EmbeddedWalletSignerFn, EncryptionKeyMissingError, type EncryptionKeyVersion, type EntityInput, type EntityKind, Entity as EntityModel, type EntityOperationsContext, ExcelProcessor, type ExtractFactsOptions, type ExtractOutcome, type ExtractedCandidate, type ExtractedEntity, type ExtractionCursorStore, type ExtractionFunnel, type ExtractionTimings, FILE_PLACEHOLDER_PREFIX, FILE_PLACEHOLDER_REGEX, type FactType, type FileMetadata, type FileProcessor, type FileTypeQuery, type FileWithData, type FlushResult, type GetConversationsPageOptions, type GetMessagesPageOptions, type GoogleDriveAuthContextValue, GoogleDriveAuthProvider, type GoogleDriveAuthProviderProps, type GoogleDriveExportResult, type GoogleDriveImportResult, type GraphTraversalOptions, type GroupProps, HARD_DELETE_WINDOW_MS, type ICloudAuthContextValue, ICloudAuthProvider, type ICloudAuthProviderProps, type ICloudExportResult, type ICloudImportResult, INFERENCE_ID_HEADER, type IconProps, type ImageProps, type InjectionClassifierOptions, type InjectionReason, type InteractionType, type KnownTag, type LazyStoredConversation, type LineProps, type LlmDecayClassifierOptions, type LlmNeighborRefinerOptions, type Logger, LoggerProvider, type LoggerProviderProps, MAX_HOPS, MEDIUM_TTL_MS, type ManualFactType, type MediaDimensions, type MediaFilterOptions, type MediaMetadata, type MediaOperationsContext, type MediaRole, type MediaType, type MemoriesNeedingTopicExtraction, type EmbeddingOptions as MemoryEngineEmbeddingOptions, type MemoryEngineResult, type MemoryEngineSearchOptions, MemoryEntity as MemoryEntityModel, type MemoryExtractedEvent, type MemoryKind, type MemoryQuarantinedEvent, type MemoryToVerify, type MemoryVaultSearchOptions, type MemoryVaultToolOptions, type MemoryVerification, type MessageChunk, type MessageFeedback, type MessageOrigin, type MessageSkeleton, type ModelLoadProgress, NEVER_TTL_MS, NODE_BUDGET, type NeighborRefiner, type NowSource, type OCRFile, type ObservationTrend, type ObservationTrendInput, type OperationExecutor, PAST_EVENT_GRACE_MS, PROFILE_DOC_VERSION, type ParsedServerToolsResponse, type PdfExportOptions, type PdfExportProgress, type PdfExportStage, type PdfFile, PdfProcessor, type PendingInteraction, type PersonalitySettings, type PersonalitySliders, type PersonalityStyle, type PhoneCallPollingOptions, type PhotoIngestResult, type PhotoMediaRef, type PlatformStorage, type PortalLlmAuth, type PortalLlmFailure, type PortalLlmFailureReason, type PreprocessingOptions, type PreprocessingResult, type ProcessedFileResult, ProcessorRegistry, type ProfileConfigFingerprint, type ProfileDoc, type ProfileFacet, type ProfileFacetKey, type ProfileSalienceInput, type ProfileSection, type ProfileUpdate, type ProgressCallback, Project, type ProjectOperationsContext, type PromptPreProcessor, type PromptPreProcessorContext, type ProviderAuthState, type ProviderBackupState, ProviderStreamError, type PublishedPhotoMemory, type QuantizedEmbedding, type QuarantinedMemoryInfo, type QueueEncryptionContext, QueueManager, type QueueStatus, type QueuedOperation, type QueuedOperationType, R2_DEFAULT_TTL_MS, 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 RectProps, type ReflectOptions, type ReflectResult, type RequestEncryptionKeyOptions, RerankerUnavailableError, type ResumeStreamOptions, type ResumeStreamResult, type RetainAction, type RetainContext, type RetainOptions, type RetainResult, type RetainSource, SDK_SCHEMA_VERSION, SERVER_TOOL_DEPENDENCY_SETS, SHORT_TTL_MS, SLIDER_CONFIG, SLIDES_FILE_PATH, SLIDE_CANVAS_HEIGHT, SLIDE_CANVAS_WIDTH, STREAM_RESUMABLE_HEADER, SavedTool as SavedToolModel, type SavedToolOperationsContext, type SavedToolParameter, type ScoreBreakdown, type ScoreProfileSalienceOptions, type ScreenProps, type ScreenResult, type ScreenedCandidate, type SearchMessagesOptions, type SearchSource, type SelectServerToolsForPromptOptions, type SendMessageWithStorageArgs, type SendMessageWithStorageResult, type ServerTool, type ServerToolsFilter, type ServerToolsFilterFn, type ServerToolsFilterFunction, type ServerToolsOptions, type ServerToolsResponse, type SignMessageFn, type SignMessageOptions, type SlideProps, type StepFinishEvent, type StockPriceClassification, type StockPricePreProcessorOptions, type StorageOperationsContext, type StoredAppFile, type ChatCompletionUsage as StoredChatCompletionUsage, type StoredConversation, type StoredConversationMemory, type StoredEntity, type StoredFileWithContext, type StoredMedia, Media as StoredMediaModel, type StoredMessage, type StoredMessageWithSimilarity, type StoredModelPreference, ModelPreference as StoredModelPreferenceModel, type StoredProject, type StoredSavedTool, type StoredTopic, type StoredUserPreference, UserPreference as StoredUserPreferenceModel, type StoredVaultFolder, VaultFolder as StoredVaultFolderModel, type StoredVaultMemory, VaultMemory as StoredVaultMemoryModel, StreamExpiredError, type StreamMetaEvent, type StreamResumeHandle, type SynthesizeProfileOptions, THEME_ATTRS, TOOL_RESULT_ORIGIN, TOPICS_EXTRACTION_VERSION, TOPIC_EXTRACTION_BATCH_SIZE, TREND_RECENT_WINDOW_DAYS, TREND_STALE_WINDOW_DAYS, type TextChunk, TextProcessor, type TextProps, type ThemeAttr, type ToolCallArgumentsDeltaEvent, type ToolMatchOptions, type ToolMatchResult, type ToolSet, type TopicExtractOptions, type TopicExtractionInput, type TopicExtractionRunResult, type TopicSkipReason, type TopicSource, type TranscriptionResult, type TurnCompleteEvent, type TurnSkippedEvent, type UIInteractionContextValue, UIInteractionProvider, type UIInteractionProviderProps, type UncheckedReason, type UnverifiableReason, type UpdateMediaOptions, type UpdateModelPreferenceOptions, type UpdateProjectOptions, type UpdateSavedToolOptions, type UpdateUserPreferenceOptions, type UpdateVaultFolderOptions, type UpdateVaultMemoryOptions, type UseBackupOptions, type UseBackupResult, type UseChatStorageOptions, type UseChatStorageResult, type UseCreditsOptions, type UseCreditsResult, type UseDropboxBackupOptions, type UseDropboxBackupResult, type UseEncryptionResult, type UseExportPdfResult, type UseFilesOptions, type UseFilesResult, type UseGoogleDriveBackupOptions, type UseGoogleDriveBackupResult, type UseICloudBackupOptions, type UseICloudBackupResult, type UseModelsResult, type UseOCRResult, type UsePdfResult, type UsePhoneCallsOptions, type UsePhoneCallsResult, type UseProjectsOptions, type UseProjectsResult, type UseSettingsOptions, type UseSettingsResult, type UseSubscriptionOptions, type UseSubscriptionResult, type UseToolsOptions, type UseToolsResult, type UseVoiceOptions, type UseVoiceResult, type UseWalletBindingOptions, type UseWalletBindingResult, VAULT_SIZE_HOP_CAP, type VaultCandidateKey, type VaultEmbeddingCache, type VaultFolderOperationsContext, type VaultMemoryOperationsContext, type VaultMemoryVisibility, type VaultMemoryWriter, type VaultSaveOperation, type VaultSearchResult, type VaultWriteAction, type VaultWriteInput, type VaultWriteOutcome, type VerificationSources, type VerifyMemoriesForPublishOptions, type VoiceRecording, WalletPoller, WatermelonChatStorageAdapter, type WatermelonChatStorageAdapterOptions, type WeatherClassification, type WeatherPreProcessorOptions, type WebSearchClassification, type WebSearchPreProcessorOptions, type WhisperModel, WordProcessor, ZipProcessor, type ZipProcessorOptions, addConversationMemoriesOp, appFileToStored, archiveVaultMemoryOp, backfillMemoryEntityUserIdsOp, backfillMemoryTopicsOp, capHopsForDensity, chatStorageMigrations, chatStorageSchema, chunkAndEmbedAllMessages, chunkAndEmbedMessage, chunkText, classifyCryptoPrice, classifyCryptoPriceBatch, classifyDecay, classifyInjectionCandidates, classifyObservationTrend, classifyStockPrice, classifyStockPriceBatch, classifyWeather, classifyWeatherBatch, classifyWebSearch, classifyWebSearchBatch, clearAllEncryptionKeys, clearAllEncryptionState, clearAllKeyPairs, clearCalendarToken, clearConversationMemoriesOp, clearDriveToken, clearToken as clearDropboxToken, clearEncryptionKey, clearGithubToken, clearGoogleDriveToken, clearICloudAuth, clearKeyPair, clearLazyTitleCache, clearMemoryTopicsOverrideOp, clearNotionToken, clearServerToolsCache, consoleLogger, conversationMemoryToStored, cosineInt8, createAutoExtractor, createChunkVectorCache, createCryptoPricePreProcessor, createDecaySweeper, createGitHubTools, createLlmDecayClassifier, createLlmNeighborRefiner, createMediaBatchOp, createMediaOp, createMemoryEngineTool, createMemoryVaultSearchTool, createMemoryVaultTool, createMessageSourceResolver, createPlatformCursorStore, createProjectOp, createRecallTool, createSavedToolOp, createServerToolsFilter, createStockPricePreProcessor, createVaultEmbeddingCache, createVaultFolderOp, createVaultMemoriesBatchOp, createVaultMemoryOp, createWeatherPreProcessor, createWebSearchPreProcessor, decodeChunkVector, decryptConversationTitle, decryptData, decryptDataBatch, decryptDataBytes, decryptDataBytesFromBytes, decryptDataWithKey, defaultServerToolsFilter, deleteAllAppFilesOp, deleteAllVaultMemoriesForUserOp, deleteAppFileOp, deleteEncryptedFile, deleteMediaByConversationOp, deleteMediaByMessageOp, deleteMediaOp, deleteProjectOp, deleteSavedToolOp, deleteVaultFolderOp, deleteVaultMemoryOp, dequantizeEmbedding, eagerEmbedContent, embedAllMessages, embedMessage, encodeChunkVector, encryptData, encryptDataBatch, encryptDataBytes, encryptDataWithKey, ensureDefaultFoldersOp, expandToolSetsAdditive, exportElementToPdf, exportMarkdownToPdf, exportPublicKey, extractAndLinkEntitiesForMemoriesOp, extractAndRetain, extractEntitiesForMemories, extractFacts, extractFileIds, fileExists, findById, findMatchingTools, findParentOfId, generateConversationId, generateEmbedding, generateEmbeddings, generateMediaId, generateProjectId, getAIGeneratedMediaOp, getAllSavedToolsOp, getAllVaultFoldersOp, getAllVaultMemoriesOp, getAllVaultMemoryContentsOp, getAndClearCalendarPendingMessage, getAndClearCalendarReturnUrl, getAndClearDrivePendingMessage, getAndClearDriveReturnUrl, getAndClearGithubPendingMessage, getAndClearGithubReturnUrl, getAndClearNotionPendingMessage, getAndClearNotionReturnUrl, getAppFileMapOp, getAppFileOp, getAppFilesOp, getAudioOp, getCachedServerTools, getCalendarAccessToken, getConversationMemoriesOp, getConversationsByProjectLazyOp, getConversationsByProjectOp, getConversationsLazyOp, getConversationsPageOp, getDecayCandidatesRawOp, getDocumentsOp, getDriveAccessToken, getEncryptionKey, getEntitiesByMemoryIdsOp, getGithubAccessToken, getGoogleDriveStoredToken, getId, getImagesOp, getLogger, getMediaByConversationOp, getMediaByIdOp, getMediaByIdsOp, getMediaByMessageOp, getMediaByModelOp, getMediaByRoleOp, getMediaBySourceUrlOp, getMediaByTypeOp, getMediaCountOp, getMediaCountsByTypeOp, getMediaOp, getMediaTypeFromMime, getMemoriesByEntityNamesOp, getMemoriesNeedingTopicExtractionOp, getNotionAccessToken, getNotionMCPUrl, getNumberAttr, getProjectConversationCountOp, getProjectConversationsOp, getProjectOp, getProjectsOp, getRecentMediaOp, getSavedToolByIdOp, getServerTools, getStringAttr, getSupportedFileTypes, getToolsChecksum, getUnfiledVaultMemoriesOp, getUserUploadedMediaOp, getValidCalendarToken, getValidDriveToken, getValidGithubToken, getValidNotionToken, getVaultCandidateKeysOp, getVaultEmbeddingsByIdsOp, getVaultFolderMemoryCountOp, getVaultMemoriesByIdsOp, getVaultMemoryOp, getVaultRankingProjectionsOp, getVideosOp, handleCalendarCallback, handleDriveCallback, handleGithubCallback, handleNotionCallback, hardDeleteDecayedOp, hardDeleteMediaOp, hasCalendarCredentials, hasDriveCredentials, hasDropboxCredentials, hasEncryptionKey, hasGithubCredentials, hasGoogleDriveCredentials, hasICloudCredentials, hasKeyPair, hasNotionCredentials, ingestPublishedPhotoMemoriesOp, injectionSignatureCatalog, insertAfterId, insertChild, isAnumaTag, isCalendarCallback, isDegradedTopicSkip, isDriveCallback, isGithubCallback, isHtmlTag, isNotionCallback, isOPFSSupported, isR2UrlExpired, isRerankerAvailable, isSupportedFile, isSupportedMediaType, linkMemoryEntitiesOp, maskScopedEmbeddingCache, mediaToStored, migrateCalendarToken, migrateDisplayResult, migrateDriveToken, migrateGithubToken, migrateNotionClientRegistration, migrateNotionToken, moveMemoriesToFolderOp, noopLogger, onKeyAvailable, parseJsx, parseMedia, preEmbedVaultMemories, preprocessFiles, previewToolSelection, projectToStored, putAppFileOp, quantizeEmbedding, queueManager, rankProfileCandidates, readEncryptedFile, recall, reflect, refreshCalendarToken, refreshDriveToken, refreshEncryptionKeyIfMatches, refreshGithubToken, refreshNotionToken, relinkMemoryTopicsOp, relinkMisclassifiedVideosOp, removeById, renderAnumaJsx, renderAnumaTree, renderElementToCanvas, replaceById, replaceMemoryEntitiesGuardedOp, requestEncryptionKey, requestKeyPair, resolveFilePlaceholders, resolveThemeColor, restoreVaultMemoryOp, resumeStream, retain, revokeCalendarToken, revokeDriveToken, revokeGithubToken, revokeNotionAccess, savedToolToStored, scoreProfileSalience, screenCandidatesForInjection, sdkMigrations, sdkModelClasses, sdkSchema, searchChunksOp, searchMediaOp, searchMessagesOp, searchVaultMemories, seedEncryptionKeys, selectServerToolsForPrompt, serializeJsx, setLogger, setMemoryEntitiesOp, setMemoryVisibilityOp, settingsStorageSchema, shouldChunkMessage, shouldRefreshTools, stampTopicsExtractedAtOp, startGithubAuth, startNotionAuth, storeCalendarPendingMessage, storeCalendarReturnUrl, storeCalendarToken, storeDrivePendingMessage, storeDriveReturnUrl, storeDriveToken, storeGithubPendingMessage, storeGithubReturnUrl, storeGithubToken, storeNotionPendingMessage, storeNotionReturnUrl, streamCancelPath, streamReplayPath, summarizeObservationTrends, supersedeVaultMemoryOp, synthesizeProfile, traverseGraphLane, ttlForType, updateAttrs, updateConversationProjectOp, updateMediaMessageIdBatchOp, updateMediaOp, updateMessageFeedbackOp, updateProjectNameOp, updateProjectOp, updateSavedToolOp, updateVaultFolderContextOp, updateVaultFolderOp, updateVaultMemoryEmbeddingOp, updateVaultMemoryOp, useAnumaTheme, useBackup, useBackupAuth, useChat, useChatStorage, useCredits, useDatabaseManager, useDropboxAuth, useDropboxBackup, useEncryption, useExportPdf, useFiles, useGoogleDriveAuth, useGoogleDriveBackup, useICloudAuth, useICloudBackup, useModels, useOCR, usePdf, usePhoneCalls, useProjects, useSettings, useSubscription, useTools, useUIInteraction, useVoice, useWalletBinding, userPreferencesStorageSchema, verifyMemoriesForPublish, walk, webPlatformStorage, writeEncryptedFile };
@@ -179,7 +179,7 @@ import {
179
179
  updateVaultMemoryOp,
180
180
  useEncryption,
181
181
  vaultMemoryToStored
182
- } from "./chunk-M53NXLZS.mjs";
182
+ } from "./chunk-JRVAUZHM.mjs";
183
183
  import {
184
184
  PiiRedactor,
185
185
  createStreamingDeAnonymizer,
@@ -9338,13 +9338,25 @@ async function synthesizeProfile(ctx, options = {}) {
9338
9338
  watermark,
9339
9339
  options.reviewedMemoryIds
9340
9340
  );
9341
+ const memoriesById = new Map(memories.map((memory) => [memory.uniqueId, memory]));
9342
+ const fallbackPriors = /* @__PURE__ */ new Map();
9343
+ if (previous) {
9344
+ for (const section of previous.sections) {
9345
+ if (section.sourceMemoryIds.length > 0 && section.sourceMemoryIds.every((id) => {
9346
+ const memory = memoriesById.get(id);
9347
+ return memory && !memory.isDeleted && !memory.supersededBy && scopes.includes(memory.scope) && (options.reviewedMemoryIds === void 0 || options.reviewedMemoryIds.includes(id)) && changeTime(memory) <= previous.vaultWatermark;
9348
+ })) {
9349
+ fallbackPriors.set(section.key, section);
9350
+ }
9351
+ }
9352
+ }
9341
9353
  const settled = await Promise.allSettled(
9342
9354
  facets.map(async (facet) => {
9343
9355
  const prior = previous?.sections.find((s) => s.key === facet.key);
9344
9356
  if (prior && !staleKeys.has(facet.key)) {
9345
9357
  return prior;
9346
9358
  }
9347
- return synthesizeFacet(facet, ctx, options, prior);
9359
+ return synthesizeFacet(facet, ctx, options, fallbackPriors.get(facet.key));
9348
9360
  })
9349
9361
  );
9350
9362
  const sections = settled.map((r, i) => {
@@ -9357,10 +9369,7 @@ async function synthesizeProfile(ctx, options = {}) {
9357
9369
  error: r.reason instanceof Error ? r.reason.message : String(r.reason)
9358
9370
  }
9359
9371
  );
9360
- return fallbackSection(
9361
- facet,
9362
- previous?.sections.find((s) => s.key === facet.key)
9363
- );
9372
+ return fallbackSection(facet, fallbackPriors.get(facet.key));
9364
9373
  });
9365
9374
  return {
9366
9375
  version: PROFILE_DOC_VERSION,
@@ -9548,7 +9557,7 @@ async function synthesizeFacet(facet, ctx, options, prior) {
9548
9557
  const { text: text12, legitimateEmpty } = extractFacetText(result.structuredOutput);
9549
9558
  if (!text12 && !legitimateEmpty && !noEvidence) {
9550
9559
  getLogger().warn(
9551
- "[memory/synthesizeProfile] facet synthesis returned degraded-empty; keeping prior section",
9560
+ "[memory/synthesizeProfile] facet synthesis returned degraded-empty; using fallback section",
9552
9561
  { facet: facet.key, recalledCount: result.basedOn.memoryIds.length }
9553
9562
  );
9554
9563
  return fallbackSection(facet, prior);
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  recall
3
- } from "./chunk-M53NXLZS.mjs";
3
+ } from "./chunk-JRVAUZHM.mjs";
4
4
  import "./chunk-WUG6GTHO.mjs";
5
5
  import "./chunk-GYKJOWEO.mjs";
6
6
  export {
@@ -20927,7 +20927,7 @@ function createMemoryVaultSearchTool(vaultCtx, embeddingOptions, cache, searchOp
20927
20927
  subQueries = decomp.subQueries;
20928
20928
  }
20929
20929
  }
20930
- const { recall: recall2 } = await import("./recall-M3KBKU74.mjs");
20930
+ const { recall: recall2 } = await import("./recall-HA4UX4BB.mjs");
20931
20931
  let recallDegraded = [];
20932
20932
  const result = await recall2(
20933
20933
  query,
@@ -21518,7 +21518,22 @@ async function recall(query, ctx, options = {}) {
21518
21518
  let factLaneRankedOnCosine = false;
21519
21519
  let decryptLastRan;
21520
21520
  let vaultRowsDecrypted;
21521
- const emitDiagnostics = (candidateCount) => {
21521
+ let graphLaneCount = 0;
21522
+ let temporalLaneCount = 0;
21523
+ let graphLaneFailed = false;
21524
+ let temporalLaneFailed = false;
21525
+ let hitLimit = false;
21526
+ let factFloor = -1;
21527
+ let chunkFloor = -1;
21528
+ const emptyReasonFor = (admitted, laneRan) => {
21529
+ if (admitted > 0) return "";
21530
+ if (!query || typeof query !== "string" || query.trim().length === 0) return "empty-query";
21531
+ if (!laneRan) return "no-lanes";
21532
+ const chunkLaneCouldAnswer = types.includes("chunk") && !!ctx.storageCtx;
21533
+ if (vaultSize === 0 && !chunkLaneCouldAnswer) return "vault-empty";
21534
+ return "no-candidates";
21535
+ };
21536
+ const emitDiagnostics = (candidateCount, admitted) => {
21522
21537
  const cb = options.onDiagnostics;
21523
21538
  if (!cb) return;
21524
21539
  const degraded = [];
@@ -21529,6 +21544,11 @@ async function recall(query, ctx, options = {}) {
21529
21544
  degraded.push("decompose-moved");
21530
21545
  }
21531
21546
  if (embeddingsUnavailable) degraded.push("embeddings-unavailable");
21547
+ if (graphLaneFailed) degraded.push("graph-lane-failed");
21548
+ if (temporalLaneFailed) degraded.push("temporal-lane-failed");
21549
+ const laneRan = types.includes("fact") && !!ctx.vaultCtx && !!ctx.vaultCache || types.includes("chunk") && !!ctx.storageCtx;
21550
+ const scores = admitted.map((m) => m.score);
21551
+ const minScoreApplied = factResults.length > 0 ? factFloor : chunkResults.length > 0 ? chunkFloor : factFloor >= 0 ? factFloor : chunkFloor;
21532
21552
  const diagnostics = {
21533
21553
  usedBudget,
21534
21554
  reranked: didRerank,
@@ -21539,6 +21559,14 @@ async function recall(query, ctx, options = {}) {
21539
21559
  ...vaultRowsEmbedded !== void 0 && { vaultRowsEmbedded },
21540
21560
  factCount: factResults.length,
21541
21561
  chunkCount: chunkResults.length,
21562
+ admittedCount: admitted.length,
21563
+ topScore: scores.length > 0 ? Math.max(...scores) : -1,
21564
+ lowestAdmittedScore: scores.length > 0 ? Math.min(...scores) : -1,
21565
+ minScoreApplied,
21566
+ truncated: hitLimit,
21567
+ graphLaneCount,
21568
+ temporalLaneCount,
21569
+ emptyReason: emptyReasonFor(admitted.length, laneRan),
21542
21570
  timings: {
21543
21571
  total: nowMs2() - t0,
21544
21572
  prep: prepMs,
@@ -21556,7 +21584,7 @@ async function recall(query, ctx, options = {}) {
21556
21584
  }
21557
21585
  };
21558
21586
  if (!query || typeof query !== "string" || query.trim().length === 0) {
21559
- emitDiagnostics(0);
21587
+ emitDiagnostics(0, []);
21560
21588
  return { memories: [], usedBudget, reranked: false, candidateCount: 0 };
21561
21589
  }
21562
21590
  const needsChunkEmbedding = types.includes("chunk") && ctx.storageCtx;
@@ -21590,6 +21618,7 @@ async function recall(query, ctx, options = {}) {
21590
21618
  // empty ranking instead (mirrors safeCountVault's fail-soft posture).
21591
21619
  safeLane(
21592
21620
  "graph",
21621
+ () => graphLaneFailed = true,
21593
21622
  () => buildGraphLaneRanking(query, ctx, flags.traverse, {
21594
21623
  ...options.maxHops !== void 0 && { maxHops: options.maxHops },
21595
21624
  ...options.entityFanout !== void 0 && { entityFanout: options.entityFanout },
@@ -21598,12 +21627,19 @@ async function recall(query, ctx, options = {}) {
21598
21627
  ...graphRefiner && { refineNeighbors: graphRefiner }
21599
21628
  })
21600
21629
  ),
21601
- wantsTemporal ? safeLane("temporal", () => buildTemporalLaneRanking(query, ctx.vaultCtx, options.now)) : Promise.resolve([])
21630
+ wantsTemporal ? safeLane(
21631
+ "temporal",
21632
+ () => temporalLaneFailed = true,
21633
+ () => buildTemporalLaneRanking(query, ctx.vaultCtx, options.now)
21634
+ ) : Promise.resolve([])
21602
21635
  ]);
21603
21636
  prepMs = nowMs2() - prepStart;
21637
+ graphLaneCount = entityRanking.length;
21638
+ temporalLaneCount = temporalRanking.length;
21604
21639
  if (types.includes("fact") && ctx.vaultCtx && ctx.vaultCache) {
21605
21640
  const factStart = nowMs2();
21606
21641
  const vaultMinScore = options.minScore ?? DEFAULT_FACT_MIN_SCORE;
21642
+ factFloor = vaultMinScore;
21607
21643
  const {
21608
21644
  results,
21609
21645
  vaultSize: size,
@@ -21683,6 +21719,7 @@ async function recall(query, ctx, options = {}) {
21683
21719
  if (types.includes("chunk") && ctx.storageCtx && queryEmbedding) {
21684
21720
  const chunkStart = nowMs2();
21685
21721
  const chunkMinScore = options.minScore ?? DEFAULT_CHUNK_MIN_SCORE;
21722
+ chunkFloor = chunkMinScore;
21686
21723
  const results = await searchChunksOp(ctx.storageCtx, queryEmbedding, {
21687
21724
  limit: types.includes("fact") ? Math.max(limit * 2, 16) : limit,
21688
21725
  minSimilarity: chunkMinScore,
@@ -21709,9 +21746,11 @@ async function recall(query, ctx, options = {}) {
21709
21746
  memories2.sort((a, b) => b.score - a.score);
21710
21747
  const candidateCount = factResults.length + chunkResults.length;
21711
21748
  fuseMs = nowMs2() - fuseStart;
21712
- emitDiagnostics(candidateCount);
21749
+ const admitted = memories2.slice(0, limit);
21750
+ hitLimit = memories2.length > limit;
21751
+ emitDiagnostics(candidateCount, admitted);
21713
21752
  return {
21714
- memories: memories2.slice(0, limit),
21753
+ memories: admitted,
21715
21754
  usedBudget,
21716
21755
  reranked: didRerank,
21717
21756
  candidateCount,
@@ -21741,12 +21780,16 @@ async function recall(query, ctx, options = {}) {
21741
21780
  const ordered = [...byId.values()].sort((a, b) => b.score - a.score);
21742
21781
  const selectWith = (suppressed2) => {
21743
21782
  const out = [];
21783
+ let cut = false;
21744
21784
  for (const m of ordered) {
21745
- if (out.length >= limit) break;
21746
21785
  if (m.kind === "chunk" && m.messageId && suppressed2.has(m.messageId)) continue;
21786
+ if (out.length >= limit) {
21787
+ cut = true;
21788
+ break;
21789
+ }
21747
21790
  out.push(m);
21748
21791
  }
21749
- return out;
21792
+ return { out, cut };
21750
21793
  };
21751
21794
  const provenanceOf = (selected) => {
21752
21795
  const s = /* @__PURE__ */ new Set();
@@ -21756,15 +21799,18 @@ async function recall(query, ctx, options = {}) {
21756
21799
  return s;
21757
21800
  };
21758
21801
  let suppressed = /* @__PURE__ */ new Set();
21759
- let memories = selectWith(suppressed);
21802
+ let selection = selectWith(suppressed);
21803
+ let memories = selection.out;
21760
21804
  for (let i = 0; i < ordered.length; i++) {
21761
21805
  const next = provenanceOf(memories);
21762
21806
  if (next.size === suppressed.size && [...next].every((id) => suppressed.has(id))) break;
21763
21807
  suppressed = next;
21764
- memories = selectWith(suppressed);
21808
+ selection = selectWith(suppressed);
21809
+ memories = selection.out;
21765
21810
  }
21811
+ hitLimit = selection.cut;
21766
21812
  fuseMs = nowMs2() - fuseStart;
21767
- emitDiagnostics(byId.size);
21813
+ emitDiagnostics(byId.size, memories);
21768
21814
  return {
21769
21815
  memories,
21770
21816
  usedBudget,
@@ -21848,10 +21894,11 @@ async function safeCountVault(ctx) {
21848
21894
  return void 0;
21849
21895
  }
21850
21896
  }
21851
- async function safeLane(label, run) {
21897
+ async function safeLane(label, onFailure, run) {
21852
21898
  try {
21853
21899
  return await run();
21854
21900
  } catch (err) {
21901
+ onFailure();
21855
21902
  getLogger().warn(
21856
21903
  `[memory/recall] ${label} lane failed; continuing without it: ${err instanceof Error ? err.message : String(err)}`
21857
21904
  );
@@ -21668,7 +21668,22 @@ async function recall(query, ctx, options = {}) {
21668
21668
  let factLaneRankedOnCosine = false;
21669
21669
  let decryptLastRan;
21670
21670
  let vaultRowsDecrypted;
21671
- const emitDiagnostics = (candidateCount) => {
21671
+ let graphLaneCount = 0;
21672
+ let temporalLaneCount = 0;
21673
+ let graphLaneFailed = false;
21674
+ let temporalLaneFailed = false;
21675
+ let hitLimit = false;
21676
+ let factFloor = -1;
21677
+ let chunkFloor = -1;
21678
+ const emptyReasonFor = (admitted, laneRan) => {
21679
+ if (admitted > 0) return "";
21680
+ if (!query || typeof query !== "string" || query.trim().length === 0) return "empty-query";
21681
+ if (!laneRan) return "no-lanes";
21682
+ const chunkLaneCouldAnswer = types.includes("chunk") && !!ctx.storageCtx;
21683
+ if (vaultSize === 0 && !chunkLaneCouldAnswer) return "vault-empty";
21684
+ return "no-candidates";
21685
+ };
21686
+ const emitDiagnostics = (candidateCount, admitted) => {
21672
21687
  const cb = options.onDiagnostics;
21673
21688
  if (!cb) return;
21674
21689
  const degraded = [];
@@ -21679,6 +21694,11 @@ async function recall(query, ctx, options = {}) {
21679
21694
  degraded.push("decompose-moved");
21680
21695
  }
21681
21696
  if (embeddingsUnavailable) degraded.push("embeddings-unavailable");
21697
+ if (graphLaneFailed) degraded.push("graph-lane-failed");
21698
+ if (temporalLaneFailed) degraded.push("temporal-lane-failed");
21699
+ const laneRan = types.includes("fact") && !!ctx.vaultCtx && !!ctx.vaultCache || types.includes("chunk") && !!ctx.storageCtx;
21700
+ const scores = admitted.map((m) => m.score);
21701
+ const minScoreApplied = factResults.length > 0 ? factFloor : chunkResults.length > 0 ? chunkFloor : factFloor >= 0 ? factFloor : chunkFloor;
21682
21702
  const diagnostics = {
21683
21703
  usedBudget,
21684
21704
  reranked: didRerank,
@@ -21689,6 +21709,14 @@ async function recall(query, ctx, options = {}) {
21689
21709
  ...vaultRowsEmbedded !== void 0 && { vaultRowsEmbedded },
21690
21710
  factCount: factResults.length,
21691
21711
  chunkCount: chunkResults.length,
21712
+ admittedCount: admitted.length,
21713
+ topScore: scores.length > 0 ? Math.max(...scores) : -1,
21714
+ lowestAdmittedScore: scores.length > 0 ? Math.min(...scores) : -1,
21715
+ minScoreApplied,
21716
+ truncated: hitLimit,
21717
+ graphLaneCount,
21718
+ temporalLaneCount,
21719
+ emptyReason: emptyReasonFor(admitted.length, laneRan),
21692
21720
  timings: {
21693
21721
  total: nowMs() - t0,
21694
21722
  prep: prepMs,
@@ -21706,7 +21734,7 @@ async function recall(query, ctx, options = {}) {
21706
21734
  }
21707
21735
  };
21708
21736
  if (!query || typeof query !== "string" || query.trim().length === 0) {
21709
- emitDiagnostics(0);
21737
+ emitDiagnostics(0, []);
21710
21738
  return { memories: [], usedBudget, reranked: false, candidateCount: 0 };
21711
21739
  }
21712
21740
  const needsChunkEmbedding = types.includes("chunk") && ctx.storageCtx;
@@ -21740,6 +21768,7 @@ async function recall(query, ctx, options = {}) {
21740
21768
  // empty ranking instead (mirrors safeCountVault's fail-soft posture).
21741
21769
  safeLane(
21742
21770
  "graph",
21771
+ () => graphLaneFailed = true,
21743
21772
  () => buildGraphLaneRanking(query, ctx, flags.traverse, {
21744
21773
  ...options.maxHops !== void 0 && { maxHops: options.maxHops },
21745
21774
  ...options.entityFanout !== void 0 && { entityFanout: options.entityFanout },
@@ -21748,12 +21777,19 @@ async function recall(query, ctx, options = {}) {
21748
21777
  ...graphRefiner && { refineNeighbors: graphRefiner }
21749
21778
  })
21750
21779
  ),
21751
- wantsTemporal ? safeLane("temporal", () => buildTemporalLaneRanking(query, ctx.vaultCtx, options.now)) : Promise.resolve([])
21780
+ wantsTemporal ? safeLane(
21781
+ "temporal",
21782
+ () => temporalLaneFailed = true,
21783
+ () => buildTemporalLaneRanking(query, ctx.vaultCtx, options.now)
21784
+ ) : Promise.resolve([])
21752
21785
  ]);
21753
21786
  prepMs = nowMs() - prepStart;
21787
+ graphLaneCount = entityRanking.length;
21788
+ temporalLaneCount = temporalRanking.length;
21754
21789
  if (types.includes("fact") && ctx.vaultCtx && ctx.vaultCache) {
21755
21790
  const factStart = nowMs();
21756
21791
  const vaultMinScore = options.minScore ?? DEFAULT_FACT_MIN_SCORE;
21792
+ factFloor = vaultMinScore;
21757
21793
  const {
21758
21794
  results,
21759
21795
  vaultSize: size,
@@ -21833,6 +21869,7 @@ async function recall(query, ctx, options = {}) {
21833
21869
  if (types.includes("chunk") && ctx.storageCtx && queryEmbedding) {
21834
21870
  const chunkStart = nowMs();
21835
21871
  const chunkMinScore = options.minScore ?? DEFAULT_CHUNK_MIN_SCORE;
21872
+ chunkFloor = chunkMinScore;
21836
21873
  const results = await searchChunksOp(ctx.storageCtx, queryEmbedding, {
21837
21874
  limit: types.includes("fact") ? Math.max(limit * 2, 16) : limit,
21838
21875
  minSimilarity: chunkMinScore,
@@ -21859,9 +21896,11 @@ async function recall(query, ctx, options = {}) {
21859
21896
  memories2.sort((a, b) => b.score - a.score);
21860
21897
  const candidateCount = factResults.length + chunkResults.length;
21861
21898
  fuseMs = nowMs() - fuseStart;
21862
- emitDiagnostics(candidateCount);
21899
+ const admitted = memories2.slice(0, limit);
21900
+ hitLimit = memories2.length > limit;
21901
+ emitDiagnostics(candidateCount, admitted);
21863
21902
  return {
21864
- memories: memories2.slice(0, limit),
21903
+ memories: admitted,
21865
21904
  usedBudget,
21866
21905
  reranked: didRerank,
21867
21906
  candidateCount,
@@ -21891,12 +21930,16 @@ async function recall(query, ctx, options = {}) {
21891
21930
  const ordered = [...byId.values()].sort((a, b) => b.score - a.score);
21892
21931
  const selectWith = (suppressed2) => {
21893
21932
  const out = [];
21933
+ let cut = false;
21894
21934
  for (const m of ordered) {
21895
- if (out.length >= limit) break;
21896
21935
  if (m.kind === "chunk" && m.messageId && suppressed2.has(m.messageId)) continue;
21936
+ if (out.length >= limit) {
21937
+ cut = true;
21938
+ break;
21939
+ }
21897
21940
  out.push(m);
21898
21941
  }
21899
- return out;
21942
+ return { out, cut };
21900
21943
  };
21901
21944
  const provenanceOf = (selected) => {
21902
21945
  const s = /* @__PURE__ */ new Set();
@@ -21906,15 +21949,18 @@ async function recall(query, ctx, options = {}) {
21906
21949
  return s;
21907
21950
  };
21908
21951
  let suppressed = /* @__PURE__ */ new Set();
21909
- let memories = selectWith(suppressed);
21952
+ let selection = selectWith(suppressed);
21953
+ let memories = selection.out;
21910
21954
  for (let i = 0; i < ordered.length; i++) {
21911
21955
  const next = provenanceOf(memories);
21912
21956
  if (next.size === suppressed.size && [...next].every((id) => suppressed.has(id))) break;
21913
21957
  suppressed = next;
21914
- memories = selectWith(suppressed);
21958
+ selection = selectWith(suppressed);
21959
+ memories = selection.out;
21915
21960
  }
21961
+ hitLimit = selection.cut;
21916
21962
  fuseMs = nowMs() - fuseStart;
21917
- emitDiagnostics(byId.size);
21963
+ emitDiagnostics(byId.size, memories);
21918
21964
  return {
21919
21965
  memories,
21920
21966
  usedBudget,
@@ -21998,10 +22044,11 @@ async function safeCountVault(ctx) {
21998
22044
  return void 0;
21999
22045
  }
22000
22046
  }
22001
- async function safeLane(label, run) {
22047
+ async function safeLane(label, onFailure, run) {
22002
22048
  try {
22003
22049
  return await run();
22004
22050
  } catch (err) {
22051
+ onFailure();
22005
22052
  getLogger().warn(
22006
22053
  `[memory/recall] ${label} lane failed; continuing without it: ${err instanceof Error ? err.message : String(err)}`
22007
22054
  );
@@ -31206,13 +31253,25 @@ async function synthesizeProfile(ctx, options = {}) {
31206
31253
  watermark,
31207
31254
  options.reviewedMemoryIds
31208
31255
  );
31256
+ const memoriesById = new Map(memories.map((memory) => [memory.uniqueId, memory]));
31257
+ const fallbackPriors = /* @__PURE__ */ new Map();
31258
+ if (previous) {
31259
+ for (const section of previous.sections) {
31260
+ if (section.sourceMemoryIds.length > 0 && section.sourceMemoryIds.every((id) => {
31261
+ const memory = memoriesById.get(id);
31262
+ return memory && !memory.isDeleted && !memory.supersededBy && scopes.includes(memory.scope) && (options.reviewedMemoryIds === void 0 || options.reviewedMemoryIds.includes(id)) && changeTime(memory) <= previous.vaultWatermark;
31263
+ })) {
31264
+ fallbackPriors.set(section.key, section);
31265
+ }
31266
+ }
31267
+ }
31209
31268
  const settled = await Promise.allSettled(
31210
31269
  facets.map(async (facet) => {
31211
31270
  const prior = previous?.sections.find((s) => s.key === facet.key);
31212
31271
  if (prior && !staleKeys.has(facet.key)) {
31213
31272
  return prior;
31214
31273
  }
31215
- return synthesizeFacet(facet, ctx, options, prior);
31274
+ return synthesizeFacet(facet, ctx, options, fallbackPriors.get(facet.key));
31216
31275
  })
31217
31276
  );
31218
31277
  const sections = settled.map((r, i) => {
@@ -31225,10 +31284,7 @@ async function synthesizeProfile(ctx, options = {}) {
31225
31284
  error: r.reason instanceof Error ? r.reason.message : String(r.reason)
31226
31285
  }
31227
31286
  );
31228
- return fallbackSection(
31229
- facet,
31230
- previous?.sections.find((s) => s.key === facet.key)
31231
- );
31287
+ return fallbackSection(facet, fallbackPriors.get(facet.key));
31232
31288
  });
31233
31289
  return {
31234
31290
  version: PROFILE_DOC_VERSION,
@@ -31416,7 +31472,7 @@ async function synthesizeFacet(facet, ctx, options, prior) {
31416
31472
  const { text: text12, legitimateEmpty } = extractFacetText(result.structuredOutput);
31417
31473
  if (!text12 && !legitimateEmpty && !noEvidence) {
31418
31474
  getLogger().warn(
31419
- "[memory/synthesizeProfile] facet synthesis returned degraded-empty; keeping prior section",
31475
+ "[memory/synthesizeProfile] facet synthesis returned degraded-empty; using fallback section",
31420
31476
  { facet: facet.key, recalledCount: result.basedOn.memoryIds.length }
31421
31477
  );
31422
31478
  return fallbackSection(facet, prior);