@jungjaehoon/mama-core 1.8.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/dist/agent-graph/alias-write.js +3 -0
  2. package/dist/agent-graph/entity-resolve.js +3 -7
  3. package/dist/agent-graph/graph-query.js +5 -4
  4. package/dist/agent-graph/types.d.ts +30 -0
  5. package/dist/cases/store.d.ts +0 -4
  6. package/dist/cases/store.js +0 -66
  7. package/dist/cases/wiki-page-index.d.ts +0 -13
  8. package/dist/cases/wiki-page-index.js +0 -153
  9. package/dist/connectors/event-index.d.ts +1 -22
  10. package/dist/connectors/event-index.js +0 -157
  11. package/dist/context-compile/channel-grant.d.ts +46 -0
  12. package/dist/context-compile/channel-grant.js +66 -0
  13. package/dist/context-compile/compiler.js +5 -2
  14. package/dist/context-compile/index.d.ts +1 -0
  15. package/dist/context-compile/index.js +1 -0
  16. package/dist/context-compile/packet-store.d.ts +0 -1
  17. package/dist/context-compile/packet-store.js +0 -16
  18. package/dist/context-compile/source-readers.d.ts +1 -0
  19. package/dist/context-compile/source-readers.js +156 -23
  20. package/dist/context-compile/types.d.ts +17 -0
  21. package/dist/context-compile/visibility.js +28 -4
  22. package/dist/db-adapter/node-sqlite-adapter.js +4 -0
  23. package/dist/db-manager.d.ts +0 -13
  24. package/dist/db-manager.js +0 -66
  25. package/dist/decision-formatter.d.ts +0 -11
  26. package/dist/decision-formatter.js +0 -122
  27. package/dist/decision-tracker.d.ts +0 -12
  28. package/dist/decision-tracker.js +0 -50
  29. package/dist/edges/ref-validation.d.ts +1 -2
  30. package/dist/edges/ref-validation.js +33 -13
  31. package/dist/edges/store.d.ts +1 -3
  32. package/dist/edges/store.js +0 -214
  33. package/dist/edges/types.d.ts +10 -0
  34. package/dist/embedding-client.d.ts +0 -17
  35. package/dist/embedding-client.js +0 -80
  36. package/dist/embedding-server/mobile/auth.d.ts +1 -10
  37. package/dist/embedding-server/mobile/auth.js +0 -15
  38. package/dist/embeddings.d.ts +0 -12
  39. package/dist/embeddings.js +0 -68
  40. package/dist/entities/audit-metrics.d.ts +0 -5
  41. package/dist/entities/audit-metrics.js +0 -4
  42. package/dist/entities/candidate-generator.d.ts +1 -2
  43. package/dist/entities/candidate-generator.js +0 -412
  44. package/dist/entities/entity-list.d.ts +0 -1
  45. package/dist/entities/entity-list.js +0 -96
  46. package/dist/entities/entity-orphan-list.d.ts +0 -9
  47. package/dist/entities/entity-orphan-list.js +0 -88
  48. package/dist/entities/entity-search.d.ts +0 -1
  49. package/dist/entities/entity-search.js +0 -147
  50. package/dist/entities/errors.d.ts +0 -10
  51. package/dist/entities/errors.js +1 -25
  52. package/dist/entities/lineage-store.d.ts +0 -23
  53. package/dist/entities/lineage-store.js +0 -104
  54. package/dist/entities/policy-store.d.ts +0 -9
  55. package/dist/entities/policy-store.js +0 -188
  56. package/dist/entities/provenance-query.d.ts +0 -1
  57. package/dist/entities/provenance-query.js +0 -164
  58. package/dist/entities/resolution-engine.d.ts +1 -8
  59. package/dist/entities/resolution-engine.js +0 -66
  60. package/dist/entities/rollback-preview.d.ts +0 -4
  61. package/dist/entities/rollback-preview.js +0 -232
  62. package/dist/entities/store.d.ts +1 -10
  63. package/dist/entities/store.js +0 -49
  64. package/dist/index.d.ts +15 -31
  65. package/dist/index.js +4 -46
  66. package/dist/mama-api.d.ts +19 -1
  67. package/dist/mama-api.js +97 -2
  68. package/dist/memory/api.d.ts +9 -0
  69. package/dist/memory/api.js +68 -4
  70. package/dist/memory/event-store.d.ts +0 -1
  71. package/dist/memory/event-store.js +0 -15
  72. package/dist/memory/finding-store.d.ts +0 -1
  73. package/dist/memory/finding-store.js +0 -12
  74. package/dist/memory/scope-backfill.d.ts +0 -3
  75. package/dist/memory/scope-backfill.js +0 -74
  76. package/dist/memory/scope-store.d.ts +0 -1
  77. package/dist/memory/scope-store.js +0 -4
  78. package/dist/memory/truth-store.d.ts +0 -3
  79. package/dist/memory/truth-store.js +0 -22
  80. package/dist/memory/types.d.ts +0 -1
  81. package/dist/memory/types.js +0 -13
  82. package/dist/memory-store.d.ts +0 -16
  83. package/dist/memory-store.js +0 -51
  84. package/dist/ollama-client.d.ts +0 -9
  85. package/dist/ollama-client.js +0 -125
  86. package/dist/outcome-tracker.d.ts +0 -14
  87. package/dist/outcome-tracker.js +0 -44
  88. package/dist/progress-indicator.d.ts +0 -4
  89. package/dist/progress-indicator.js +0 -7
  90. package/dist/provenance/source-ref.d.ts +0 -9
  91. package/dist/provenance/source-ref.js +0 -145
  92. package/dist/query-intent.d.ts +0 -4
  93. package/dist/query-intent.js +0 -30
  94. package/dist/relevance-scorer.d.ts +0 -9
  95. package/dist/relevance-scorer.js +0 -81
  96. package/dist/search/feedback-store.d.ts +0 -1
  97. package/dist/search/feedback-store.js +0 -4
  98. package/dist/search/ranker-rescore.d.ts +0 -3
  99. package/dist/search/ranker-rescore.js +0 -27
  100. package/dist/search/ranker-trainer.d.ts +0 -8
  101. package/dist/search/ranker-trainer.js +0 -376
  102. package/dist/tier-validator.d.ts +0 -12
  103. package/dist/tier-validator.js +0 -56
  104. package/package.json +1 -10
  105. package/dist/cases/case-links.d.ts +0 -116
  106. package/dist/cases/case-links.js +0 -794
  107. package/dist/cases/composition-overrides.d.ts +0 -90
  108. package/dist/cases/composition-overrides.js +0 -724
  109. package/dist/cases/corrections.d.ts +0 -156
  110. package/dist/cases/corrections.js +0 -1045
  111. package/dist/cases/freshness.d.ts +0 -57
  112. package/dist/cases/freshness.js +0 -283
  113. package/dist/cases/live-state.d.ts +0 -48
  114. package/dist/cases/live-state.js +0 -256
  115. package/dist/cases/membership-explain.d.ts +0 -56
  116. package/dist/cases/membership-explain.js +0 -140
  117. package/dist/cases/membership-matcher.d.ts +0 -23
  118. package/dist/cases/membership-matcher.js +0 -193
  119. package/dist/cases/merge-split.d.ts +0 -61
  120. package/dist/cases/merge-split.js +0 -368
  121. package/dist/cases/role-inference.d.ts +0 -10
  122. package/dist/cases/role-inference.js +0 -85
  123. package/dist/cases/sqlite-transaction.d.ts +0 -10
  124. package/dist/cases/sqlite-transaction.js +0 -62
  125. package/dist/cases/target-ref.d.ts +0 -25
  126. package/dist/cases/target-ref.js +0 -22
  127. package/dist/cases/tombstone-sweeper.d.ts +0 -13
  128. package/dist/cases/tombstone-sweeper.js +0 -128
  129. package/dist/entities/entity-impact.d.ts +0 -41
  130. package/dist/entities/entity-impact.js +0 -140
  131. package/dist/entities/exact-merge-backfill.d.ts +0 -11
  132. package/dist/entities/exact-merge-backfill.js +0 -161
  133. package/dist/entities/lineage-backfill.d.ts +0 -12
  134. package/dist/entities/lineage-backfill.js +0 -101
  135. package/dist/memory-inject.d.ts +0 -24
  136. package/dist/memory-inject.js +0 -116
package/dist/index.d.ts CHANGED
@@ -7,12 +7,12 @@
7
7
  * @module mama-core
8
8
  * @version 1.0.0
9
9
  */
10
- export { generateEmbedding, generateEnhancedEmbedding, generateBatchEmbeddings, cosineSimilarity, embeddingCache, EMBEDDING_DIM, MODEL_NAME, EMBEDDING_PREFIX_SCHEME, type EmbeddingRole, } from './embeddings.js';
10
+ export { generateEmbedding, generateEnhancedEmbedding, cosineSimilarity, embeddingCache, EMBEDDING_DIM, MODEL_NAME, EMBEDDING_PREFIX_SCHEME, type EmbeddingRole, } from './embeddings.js';
11
11
  export { EmbeddingCache } from './embedding-cache.js';
12
- export { getEmbeddingFromServer, getServerStatus, isServerRunning, getServerPort, DEFAULT_PORT, HOST, TIMEOUT_MS, type ServerStatus, } from './embedding-client.js';
13
- export { initDB, getDB, getAdapter, closeDB, insertEmbedding, vectorSearch, queryVectorSearch, insertDecisionWithEmbedding, queryDecisionGraph, querySemanticEdges, updateDecisionOutcome, getPreparedStmt, getDbPath, fts5Search, reindexEmbeddings, type DatabaseAdapter as DBManagerAdapter, type PreparedStatement, type DecisionRecord, type OutcomeData, type VectorSearchParams, type SemanticEdges, type SemanticEdgeItem, type DecisionInput, } from './db-manager.js';
12
+ export { getServerPort, DEFAULT_PORT, HOST, TIMEOUT_MS, type ServerStatus, } from './embedding-client.js';
13
+ export { initDB, getDB, getAdapter, closeDB, insertEmbedding, vectorSearch, queryVectorSearch, insertDecisionWithEmbedding, queryDecisionGraph, querySemanticEdges, updateDecisionOutcome, getPreparedStmt, getDbPath, fts5Search, type DatabaseAdapter as DBManagerAdapter, type PreparedStatement, type DecisionRecord, type OutcomeData, type VectorSearchParams, type SemanticEdges, type SemanticEdgeItem, type DecisionInput, } from './db-manager.js';
14
14
  export { createAdapter, DatabaseAdapter, SQLiteAdapter, type AdapterConfig, type Statement, type VectorSearchResult, type RunResult, } from './db-adapter/index.js';
15
- export { getSessionDecisions, incrementUsageSuccess, incrementUsageFailure, getDecisionById, traverseDecisionChain, DB_PATH, DB_DIR, LEGACY_DB_PATH, DEFAULT_DB_PATH, } from './memory-store.js';
15
+ export { traverseDecisionChain, DB_PATH, DB_DIR, LEGACY_DB_PATH, DEFAULT_DB_PATH, } from './memory-store.js';
16
16
  import mama from './mama-api.js';
17
17
  export { mama };
18
18
  export { MEMORY_SCOPE_KINDS, MEMORY_KINDS, MEMORY_STATUSES, MEMORY_EDGE_TYPES, createEmptyRecallBundle, type MemoryScopeKind, type MemoryKind, type MemoryStatus, type MemoryEdgeType, type MemoryScopeRef, type MemorySourceRef, type MemoryRecord, type MemoryWriteProvenance, type MemoryProvenanceRecord, type PublicSaveMemoryInput, type PublicIngestMemoryInput, type PublicIngestConversationInput, type MemorySearchResultHit, type MemoryEdge, type ProfileSnapshot, type RecallBundle, type ConversationMessage, type IngestConversationInput, type ExtractedMemoryUnit, type IngestConversationResult, } from './memory/types.js';
@@ -21,14 +21,14 @@ export { buildExtractionPrompt, parseExtractionResponse } from './memory/extract
21
21
  export { appendMemoryEvent, insertMemoryEventInTransaction, listMemoryEventsForMemory, listRecentMemoryEvents, } from './memory/event-store.js';
22
22
  export { createTrustedProvenanceCapability, assertTrustedProvenanceCapability, type TrustedProvenanceCapability, type TrustedMemoryWriteOptions, } from './memory/provenance.js';
23
23
  export { getMemoryProvenance, listMemoriesByEnvelopeHash, listMemoriesByGatewayCallId, listMemoriesByModelRunId, } from './memory/provenance-query.js';
24
- export { backfillLegacyMemoryProvenance, backfillConnectorEventScopeMetadata, type BackfillResult, type ConnectorEventScopeBackfillInput, } from './memory/scope-backfill.js';
24
+ export { type BackfillResult, type ConnectorEventScopeBackfillInput, } from './memory/scope-backfill.js';
25
25
  export { getMemoryProvenanceAudit, listMemoryProvenanceAudit, type MemoryProvenanceAuditRecord, type MemoryProvenanceAuditListOptions, } from './memory/provenance-audit.js';
26
26
  export { MODEL_RUN_STATUSES, type ModelRunStatus, type BeginModelRunInput, type ModelRunRecord, type AppendToolTraceInput, type ToolTraceRecord, } from './model-runs/types.js';
27
27
  export { beginModelRun, beginModelRunInAdapter, commitModelRun, commitModelRunInAdapter, failModelRun, failModelRunInAdapter, getModelRun, getModelRunInAdapter, } from './model-runs/store.js';
28
28
  export { appendToolTrace, listToolTracesForRun } from './model-runs/tool-trace-store.js';
29
29
  export { TWIN_EDGE_SOURCES, TWIN_EDGE_TYPES, TWIN_REF_KINDS, type InsertTwinEdgeInput, type ListVisibleTwinEdgesOptions, type TwinEdgeRecord, type TwinEdgeSource, type TwinEdgeType, type TwinRef, type TwinRefKind, type TwinScopeRef, } from './edges/types.js';
30
- export { getTwinEdge, insertTwinEdge, listTwinEdgesForRefs, mapTwinEdgeRow, } from './edges/store.js';
31
- export { assertTwinRefsVisibleToScopes, listVisibleTwinEdgesForRefs, } from './edges/ref-validation.js';
30
+ export { getTwinEdge, listTwinEdgesForRefs, mapTwinEdgeRow } from './edges/store.js';
31
+ export { listVisibleTwinEdgesForRefs } from './edges/ref-validation.js';
32
32
  export * from './context-compile/index.js';
33
33
  export * from './provenance/source-ref.js';
34
34
  export * from './agent-situation/index.js';
@@ -43,48 +43,32 @@ export * from './entities/read-identity.js';
43
43
  export * from './entities/audit-metrics.js';
44
44
  export * from './entities/provenance-query.js';
45
45
  export * from './entities/lineage-store.js';
46
- export * from './entities/lineage-backfill.js';
47
- export * from './entities/exact-merge-backfill.js';
48
46
  export * from './entities/entity-search.js';
49
47
  export * from './entities/entity-list.js';
50
48
  export * from './entities/entity-orphan-list.js';
51
- export * from './entities/entity-impact.js';
52
49
  export * from './entities/rollback-preview.js';
53
50
  export * from './entities/source-locator.js';
54
51
  export * from './entities/policy-types.js';
55
52
  export * from './entities/policy-store.js';
56
53
  export { canonicalizeJSON, targetRefHash, CanonicalizeError, type CanonicalizeErrorCode, } from './canonicalize.js';
57
54
  export { loadConfig, getModelName, getEmbeddingDim, getCacheDir, updateConfig, getConfigPath, DEFAULT_CONFIG, type MAMAConfig, type ConfigUpdates, } from './config-loader.js';
58
- export { calculateRelevance, selectTopDecisions, formatTopNContext, testRelevanceScoring, type DecisionWithEmbedding, type QueryContext, type FormattedContext, type TestResult, } from './relevance-scorer.js';
59
- export { learnDecision, generateDecisionId, getPreviousDecision, createEdge, createSupersedesEdge, markSuperseded, calculateCombinedConfidence, detectRefinement, parseReasoningForRelationships, createEdgesFromReasoning, getSupersededChainDepth, updateConfidence, VALID_EDGE_TYPES, type EdgeType, type DecisionDetection, type ToolExecution, type SessionContext, type LearnDecisionResult, type ParsedRelationship, type EvidenceItem, } from './decision-tracker.js';
60
- export { validateTier, checkNodeVersion, checkSQLite, checkEmbeddings, checkDatabase, getTierDescription, getTierBanner, type TierValidation, type CheckResult, type NamedCheckResult, } from './tier-validator.js';
61
- export { logProgress, logComplete, logFailed, logError, logInfo, logLoading, logSearching, } from './progress-indicator.js';
55
+ export { calculateRelevance, selectTopDecisions, formatTopNContext, type DecisionWithEmbedding, type QueryContext, type FormattedContext, type TestResult, } from './relevance-scorer.js';
56
+ export { learnDecision, generateDecisionId, getPreviousDecision, createEdge, createSupersedesEdge, markSuperseded, calculateCombinedConfidence, detectRefinement, parseReasoningForRelationships, createEdgesFromReasoning, updateConfidence, VALID_EDGE_TYPES, type EdgeType, type DecisionDetection, type ToolExecution, type SessionContext, type LearnDecisionResult, type ParsedRelationship, type EvidenceItem, } from './decision-tracker.js';
57
+ export { checkNodeVersion, checkSQLite, checkEmbeddings, checkDatabase, getTierDescription, type TierValidation, type CheckResult, type NamedCheckResult, } from './tier-validator.js';
58
+ export { logProgress, logComplete, logFailed, logError, logLoading, logSearching, } from './progress-indicator.js';
62
59
  export { debug, info, warn, error, DebugLogger } from './debug-logger.js';
63
60
  export { formatTimeAgo } from './time-formatter.js';
64
61
  export { MAMAError, NotFoundError, ValidationError, DatabaseError, EmbeddingError, ConfigurationError, LinkError, RateLimitError, TimeoutError, ErrorCodes, wrapError, isMAMAError, type ErrorDetails, type ErrorResponse, type ErrorJSON, type ErrorCode, } from './errors.js';
65
- export { formatContext, formatLegacyContext, formatRecall, formatList, formatTeaser, formatInstantAnswer, formatTrustContext, ensureTokenBudget, estimateTokens, extractQuickAnswer, extractCodeExample, type DecisionForFormat, type TrustContext, type SemanticEdges as FormatterSemanticEdges, type FormatOptions, } from './decision-formatter.js';
66
- export { analyzeOutcome, matchesFailureIndicators, matchesSuccessIndicators, matchesPartialIndicators, extractFailureReason, getRecentDecision, calculateDurationDays, getEvidenceImpact, markOutcome, onUserPromptSubmit, FAILURE_INDICATORS, SUCCESS_INDICATORS, PARTIAL_INDICATORS, RECENT_WINDOW_MS, type HookContext, type OutcomeType, } from './outcome-tracker.js';
67
- export { injectDecisionContext } from './memory-inject.js';
68
- export { analyzeIntent, extractTopicKeywords, type IntentResult, type AnalyzeOptions, } from './query-intent.js';
69
- export { generate, analyzeDecision, analyzeQueryIntent, isAvailable, listModels, DEFAULT_MODEL, FALLBACK_MODEL, type GenerateOptions, type DecisionAnalysisResult, type QueryIntentResult, } from './ollama-client.js';
62
+ export { formatContext, formatLegacyContext, formatRecall, formatList, formatTrustContext, ensureTokenBudget, estimateTokens, extractQuickAnswer, extractCodeExample, type DecisionForFormat, type TrustContext, type SemanticEdges as FormatterSemanticEdges, type FormatOptions, } from './decision-formatter.js';
63
+ export { analyzeOutcome, matchesFailureIndicators, matchesSuccessIndicators, matchesPartialIndicators, extractFailureReason, getRecentDecision, calculateDurationDays, getEvidenceImpact, markOutcome, FAILURE_INDICATORS, SUCCESS_INDICATORS, PARTIAL_INDICATORS, RECENT_WINDOW_MS, type HookContext, type OutcomeType, } from './outcome-tracker.js';
64
+ export { analyzeIntent, type IntentResult, type AnalyzeOptions } from './query-intent.js';
65
+ export { generate, isAvailable, listModels, DEFAULT_MODEL, FALLBACK_MODEL, type GenerateOptions, type DecisionAnalysisResult, type QueryIntentResult, } from './ollama-client.js';
70
66
  export { notifyInsight } from './notification-manager.js';
71
67
  export * from './cases/types.js';
72
68
  export * from './cases/store.js';
73
- export * from './cases/role-inference.js';
74
- export * from './cases/target-ref.js';
75
- export * from './cases/corrections.js';
76
- export * from './cases/sqlite-transaction.js';
77
- export * from './cases/live-state.js';
78
- export * from './cases/tombstone-sweeper.js';
79
- export * from './cases/merge-split.js';
80
- export * from './cases/membership-matcher.js';
81
69
  export * from './cases/search-rollup.js';
82
70
  export * from './cases/timeline-range.js';
83
71
  export * from './cases/wiki-page-index.js';
84
- export * from './cases/case-links.js';
85
- export * from './cases/composition-overrides.js';
86
- export * from './cases/freshness.js';
87
- export * from './cases/membership-explain.js';
88
72
  export * from './connectors/event-index.js';
89
73
  export * from './connectors/raw-query.js';
90
74
  export * from './connectors/types.js';
package/dist/index.js CHANGED
@@ -26,14 +26,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.saveMemory = exports.createEmptyRecallBundle = exports.MEMORY_EDGE_TYPES = exports.MEMORY_STATUSES = exports.MEMORY_KINDS = exports.MEMORY_SCOPE_KINDS = exports.mama = exports.DEFAULT_DB_PATH = exports.LEGACY_DB_PATH = exports.DB_DIR = exports.DB_PATH = exports.traverseDecisionChain = exports.getDecisionById = exports.incrementUsageFailure = exports.incrementUsageSuccess = exports.getSessionDecisions = exports.SQLiteAdapter = exports.DatabaseAdapter = exports.createAdapter = exports.reindexEmbeddings = exports.fts5Search = exports.getDbPath = exports.getPreparedStmt = exports.updateDecisionOutcome = exports.querySemanticEdges = exports.queryDecisionGraph = exports.insertDecisionWithEmbedding = exports.queryVectorSearch = exports.vectorSearch = exports.insertEmbedding = exports.closeDB = exports.getAdapter = exports.getDB = exports.initDB = exports.TIMEOUT_MS = exports.HOST = exports.DEFAULT_PORT = exports.getServerPort = exports.isServerRunning = exports.getServerStatus = exports.getEmbeddingFromServer = exports.EmbeddingCache = exports.EMBEDDING_PREFIX_SCHEME = exports.MODEL_NAME = exports.EMBEDDING_DIM = exports.embeddingCache = exports.cosineSimilarity = exports.generateBatchEmbeddings = exports.generateEnhancedEmbedding = exports.generateEmbedding = void 0;
30
- exports.assertTwinRefsVisibleToScopes = exports.mapTwinEdgeRow = exports.listTwinEdgesForRefs = exports.insertTwinEdge = exports.getTwinEdge = exports.TWIN_REF_KINDS = exports.TWIN_EDGE_TYPES = exports.TWIN_EDGE_SOURCES = exports.listToolTracesForRun = exports.appendToolTrace = exports.getModelRunInAdapter = exports.getModelRun = exports.failModelRunInAdapter = exports.failModelRun = exports.commitModelRunInAdapter = exports.commitModelRun = exports.beginModelRunInAdapter = exports.beginModelRun = exports.MODEL_RUN_STATUSES = exports.listMemoryProvenanceAudit = exports.getMemoryProvenanceAudit = exports.backfillConnectorEventScopeMetadata = exports.backfillLegacyMemoryProvenance = exports.listMemoriesByModelRunId = exports.listMemoriesByGatewayCallId = exports.listMemoriesByEnvelopeHash = exports.getMemoryProvenance = exports.assertTrustedProvenanceCapability = exports.createTrustedProvenanceCapability = exports.listRecentMemoryEvents = exports.listMemoryEventsForMemory = exports.insertMemoryEventInTransaction = exports.appendMemoryEvent = exports.parseExtractionResponse = exports.buildExtractionPrompt = exports.getChannelSummary = exports.upsertChannelSummary = exports.setExtractionFn = exports.ingestConversationWithTrustedProvenance = exports.ingestConversation = exports.recordMemoryAudit = exports.createAuditAck = exports.buildMemoryBootstrap = exports.evolveMemory = exports.ingestWithTrustedProvenance = exports.ingestMemory = exports.buildProfile = exports.recallMemory = exports.promoteMemoryStatus = exports.saveMemoryWithTrustedProvenance = void 0;
31
- exports.NotFoundError = exports.MAMAError = exports.formatTimeAgo = exports.DebugLogger = exports.error = exports.warn = exports.info = exports.debug = exports.logSearching = exports.logLoading = exports.logInfo = exports.logError = exports.logFailed = exports.logComplete = exports.logProgress = exports.getTierBanner = exports.getTierDescription = exports.checkDatabase = exports.checkEmbeddings = exports.checkSQLite = exports.checkNodeVersion = exports.validateTier = exports.VALID_EDGE_TYPES = exports.updateConfidence = exports.getSupersededChainDepth = exports.createEdgesFromReasoning = exports.parseReasoningForRelationships = exports.detectRefinement = exports.calculateCombinedConfidence = exports.markSuperseded = exports.createSupersedesEdge = exports.createEdge = exports.getPreviousDecision = exports.generateDecisionId = exports.learnDecision = exports.testRelevanceScoring = exports.formatTopNContext = exports.selectTopDecisions = exports.calculateRelevance = exports.DEFAULT_CONFIG = exports.getConfigPath = exports.updateConfig = exports.getCacheDir = exports.getEmbeddingDim = exports.getModelName = exports.loadConfig = exports.CanonicalizeError = exports.targetRefHash = exports.canonicalizeJSON = exports.listVisibleTwinEdgesForRefs = void 0;
32
- exports.notifyInsight = exports.FALLBACK_MODEL = exports.DEFAULT_MODEL = exports.listModels = exports.isAvailable = exports.analyzeQueryIntent = exports.analyzeDecision = exports.generate = exports.extractTopicKeywords = exports.analyzeIntent = exports.injectDecisionContext = exports.RECENT_WINDOW_MS = exports.PARTIAL_INDICATORS = exports.SUCCESS_INDICATORS = exports.FAILURE_INDICATORS = exports.onUserPromptSubmit = exports.markOutcome = exports.getEvidenceImpact = exports.calculateDurationDays = exports.getRecentDecision = exports.extractFailureReason = exports.matchesPartialIndicators = exports.matchesSuccessIndicators = exports.matchesFailureIndicators = exports.analyzeOutcome = exports.extractCodeExample = exports.extractQuickAnswer = exports.estimateTokens = exports.ensureTokenBudget = exports.formatTrustContext = exports.formatInstantAnswer = exports.formatTeaser = exports.formatList = exports.formatRecall = exports.formatLegacyContext = exports.formatContext = exports.isMAMAError = exports.wrapError = exports.ErrorCodes = exports.TimeoutError = exports.RateLimitError = exports.LinkError = exports.ConfigurationError = exports.EmbeddingError = exports.DatabaseError = exports.ValidationError = void 0;
29
+ exports.createAuditAck = exports.buildMemoryBootstrap = exports.evolveMemory = exports.ingestWithTrustedProvenance = exports.ingestMemory = exports.buildProfile = exports.recallMemory = exports.promoteMemoryStatus = exports.saveMemoryWithTrustedProvenance = exports.saveMemory = exports.createEmptyRecallBundle = exports.MEMORY_EDGE_TYPES = exports.MEMORY_STATUSES = exports.MEMORY_KINDS = exports.MEMORY_SCOPE_KINDS = exports.mama = exports.DEFAULT_DB_PATH = exports.LEGACY_DB_PATH = exports.DB_DIR = exports.DB_PATH = exports.traverseDecisionChain = exports.SQLiteAdapter = exports.DatabaseAdapter = exports.createAdapter = exports.fts5Search = exports.getDbPath = exports.getPreparedStmt = exports.updateDecisionOutcome = exports.querySemanticEdges = exports.queryDecisionGraph = exports.insertDecisionWithEmbedding = exports.queryVectorSearch = exports.vectorSearch = exports.insertEmbedding = exports.closeDB = exports.getAdapter = exports.getDB = exports.initDB = exports.TIMEOUT_MS = exports.HOST = exports.DEFAULT_PORT = exports.getServerPort = exports.EmbeddingCache = exports.EMBEDDING_PREFIX_SCHEME = exports.MODEL_NAME = exports.EMBEDDING_DIM = exports.embeddingCache = exports.cosineSimilarity = exports.generateEnhancedEmbedding = exports.generateEmbedding = void 0;
30
+ exports.selectTopDecisions = exports.calculateRelevance = exports.DEFAULT_CONFIG = exports.getConfigPath = exports.updateConfig = exports.getCacheDir = exports.getEmbeddingDim = exports.getModelName = exports.loadConfig = exports.CanonicalizeError = exports.targetRefHash = exports.canonicalizeJSON = exports.listVisibleTwinEdgesForRefs = exports.mapTwinEdgeRow = exports.listTwinEdgesForRefs = exports.getTwinEdge = exports.TWIN_REF_KINDS = exports.TWIN_EDGE_TYPES = exports.TWIN_EDGE_SOURCES = exports.listToolTracesForRun = exports.appendToolTrace = exports.getModelRunInAdapter = exports.getModelRun = exports.failModelRunInAdapter = exports.failModelRun = exports.commitModelRunInAdapter = exports.commitModelRun = exports.beginModelRunInAdapter = exports.beginModelRun = exports.MODEL_RUN_STATUSES = exports.listMemoryProvenanceAudit = exports.getMemoryProvenanceAudit = exports.listMemoriesByModelRunId = exports.listMemoriesByGatewayCallId = exports.listMemoriesByEnvelopeHash = exports.getMemoryProvenance = exports.assertTrustedProvenanceCapability = exports.createTrustedProvenanceCapability = exports.listRecentMemoryEvents = exports.listMemoryEventsForMemory = exports.insertMemoryEventInTransaction = exports.appendMemoryEvent = exports.parseExtractionResponse = exports.buildExtractionPrompt = exports.getChannelSummary = exports.upsertChannelSummary = exports.setExtractionFn = exports.ingestConversationWithTrustedProvenance = exports.ingestConversation = exports.recordMemoryAudit = void 0;
31
+ exports.extractQuickAnswer = exports.estimateTokens = exports.ensureTokenBudget = exports.formatTrustContext = exports.formatList = exports.formatRecall = exports.formatLegacyContext = exports.formatContext = exports.isMAMAError = exports.wrapError = exports.ErrorCodes = exports.TimeoutError = exports.RateLimitError = exports.LinkError = exports.ConfigurationError = exports.EmbeddingError = exports.DatabaseError = exports.ValidationError = exports.NotFoundError = exports.MAMAError = exports.formatTimeAgo = exports.DebugLogger = exports.error = exports.warn = exports.info = exports.debug = exports.logSearching = exports.logLoading = exports.logError = exports.logFailed = exports.logComplete = exports.logProgress = exports.getTierDescription = exports.checkDatabase = exports.checkEmbeddings = exports.checkSQLite = exports.checkNodeVersion = exports.VALID_EDGE_TYPES = exports.updateConfidence = exports.createEdgesFromReasoning = exports.parseReasoningForRelationships = exports.detectRefinement = exports.calculateCombinedConfidence = exports.markSuperseded = exports.createSupersedesEdge = exports.createEdge = exports.getPreviousDecision = exports.generateDecisionId = exports.learnDecision = exports.formatTopNContext = void 0;
32
+ exports.notifyInsight = exports.FALLBACK_MODEL = exports.DEFAULT_MODEL = exports.listModels = exports.isAvailable = exports.generate = exports.analyzeIntent = exports.RECENT_WINDOW_MS = exports.PARTIAL_INDICATORS = exports.SUCCESS_INDICATORS = exports.FAILURE_INDICATORS = exports.markOutcome = exports.getEvidenceImpact = exports.calculateDurationDays = exports.getRecentDecision = exports.extractFailureReason = exports.matchesPartialIndicators = exports.matchesSuccessIndicators = exports.matchesFailureIndicators = exports.analyzeOutcome = exports.extractCodeExample = void 0;
33
33
  var embeddings_js_1 = require("./embeddings.js");
34
34
  Object.defineProperty(exports, "generateEmbedding", { enumerable: true, get: function () { return embeddings_js_1.generateEmbedding; } });
35
35
  Object.defineProperty(exports, "generateEnhancedEmbedding", { enumerable: true, get: function () { return embeddings_js_1.generateEnhancedEmbedding; } });
36
- Object.defineProperty(exports, "generateBatchEmbeddings", { enumerable: true, get: function () { return embeddings_js_1.generateBatchEmbeddings; } });
37
36
  Object.defineProperty(exports, "cosineSimilarity", { enumerable: true, get: function () { return embeddings_js_1.cosineSimilarity; } });
38
37
  Object.defineProperty(exports, "embeddingCache", { enumerable: true, get: function () { return embeddings_js_1.embeddingCache; } });
39
38
  Object.defineProperty(exports, "EMBEDDING_DIM", { enumerable: true, get: function () { return embeddings_js_1.EMBEDDING_DIM; } });
@@ -42,9 +41,6 @@ Object.defineProperty(exports, "EMBEDDING_PREFIX_SCHEME", { enumerable: true, ge
42
41
  var embedding_cache_js_1 = require("./embedding-cache.js");
43
42
  Object.defineProperty(exports, "EmbeddingCache", { enumerable: true, get: function () { return embedding_cache_js_1.EmbeddingCache; } });
44
43
  var embedding_client_js_1 = require("./embedding-client.js");
45
- Object.defineProperty(exports, "getEmbeddingFromServer", { enumerable: true, get: function () { return embedding_client_js_1.getEmbeddingFromServer; } });
46
- Object.defineProperty(exports, "getServerStatus", { enumerable: true, get: function () { return embedding_client_js_1.getServerStatus; } });
47
- Object.defineProperty(exports, "isServerRunning", { enumerable: true, get: function () { return embedding_client_js_1.isServerRunning; } });
48
44
  Object.defineProperty(exports, "getServerPort", { enumerable: true, get: function () { return embedding_client_js_1.getServerPort; } });
49
45
  Object.defineProperty(exports, "DEFAULT_PORT", { enumerable: true, get: function () { return embedding_client_js_1.DEFAULT_PORT; } });
50
46
  Object.defineProperty(exports, "HOST", { enumerable: true, get: function () { return embedding_client_js_1.HOST; } });
@@ -64,16 +60,11 @@ Object.defineProperty(exports, "updateDecisionOutcome", { enumerable: true, get:
64
60
  Object.defineProperty(exports, "getPreparedStmt", { enumerable: true, get: function () { return db_manager_js_1.getPreparedStmt; } });
65
61
  Object.defineProperty(exports, "getDbPath", { enumerable: true, get: function () { return db_manager_js_1.getDbPath; } });
66
62
  Object.defineProperty(exports, "fts5Search", { enumerable: true, get: function () { return db_manager_js_1.fts5Search; } });
67
- Object.defineProperty(exports, "reindexEmbeddings", { enumerable: true, get: function () { return db_manager_js_1.reindexEmbeddings; } });
68
63
  var index_js_1 = require("./db-adapter/index.js");
69
64
  Object.defineProperty(exports, "createAdapter", { enumerable: true, get: function () { return index_js_1.createAdapter; } });
70
65
  Object.defineProperty(exports, "DatabaseAdapter", { enumerable: true, get: function () { return index_js_1.DatabaseAdapter; } });
71
66
  Object.defineProperty(exports, "SQLiteAdapter", { enumerable: true, get: function () { return index_js_1.SQLiteAdapter; } });
72
67
  var memory_store_js_1 = require("./memory-store.js");
73
- Object.defineProperty(exports, "getSessionDecisions", { enumerable: true, get: function () { return memory_store_js_1.getSessionDecisions; } });
74
- Object.defineProperty(exports, "incrementUsageSuccess", { enumerable: true, get: function () { return memory_store_js_1.incrementUsageSuccess; } });
75
- Object.defineProperty(exports, "incrementUsageFailure", { enumerable: true, get: function () { return memory_store_js_1.incrementUsageFailure; } });
76
- Object.defineProperty(exports, "getDecisionById", { enumerable: true, get: function () { return memory_store_js_1.getDecisionById; } });
77
68
  Object.defineProperty(exports, "traverseDecisionChain", { enumerable: true, get: function () { return memory_store_js_1.traverseDecisionChain; } });
78
69
  Object.defineProperty(exports, "DB_PATH", { enumerable: true, get: function () { return memory_store_js_1.DB_PATH; } });
79
70
  Object.defineProperty(exports, "DB_DIR", { enumerable: true, get: function () { return memory_store_js_1.DB_DIR; } });
@@ -120,9 +111,6 @@ Object.defineProperty(exports, "getMemoryProvenance", { enumerable: true, get: f
120
111
  Object.defineProperty(exports, "listMemoriesByEnvelopeHash", { enumerable: true, get: function () { return provenance_query_js_1.listMemoriesByEnvelopeHash; } });
121
112
  Object.defineProperty(exports, "listMemoriesByGatewayCallId", { enumerable: true, get: function () { return provenance_query_js_1.listMemoriesByGatewayCallId; } });
122
113
  Object.defineProperty(exports, "listMemoriesByModelRunId", { enumerable: true, get: function () { return provenance_query_js_1.listMemoriesByModelRunId; } });
123
- var scope_backfill_js_1 = require("./memory/scope-backfill.js");
124
- Object.defineProperty(exports, "backfillLegacyMemoryProvenance", { enumerable: true, get: function () { return scope_backfill_js_1.backfillLegacyMemoryProvenance; } });
125
- Object.defineProperty(exports, "backfillConnectorEventScopeMetadata", { enumerable: true, get: function () { return scope_backfill_js_1.backfillConnectorEventScopeMetadata; } });
126
114
  var provenance_audit_js_1 = require("./memory/provenance-audit.js");
127
115
  Object.defineProperty(exports, "getMemoryProvenanceAudit", { enumerable: true, get: function () { return provenance_audit_js_1.getMemoryProvenanceAudit; } });
128
116
  Object.defineProperty(exports, "listMemoryProvenanceAudit", { enumerable: true, get: function () { return provenance_audit_js_1.listMemoryProvenanceAudit; } });
@@ -146,11 +134,9 @@ Object.defineProperty(exports, "TWIN_EDGE_TYPES", { enumerable: true, get: funct
146
134
  Object.defineProperty(exports, "TWIN_REF_KINDS", { enumerable: true, get: function () { return types_js_3.TWIN_REF_KINDS; } });
147
135
  var store_js_2 = require("./edges/store.js");
148
136
  Object.defineProperty(exports, "getTwinEdge", { enumerable: true, get: function () { return store_js_2.getTwinEdge; } });
149
- Object.defineProperty(exports, "insertTwinEdge", { enumerable: true, get: function () { return store_js_2.insertTwinEdge; } });
150
137
  Object.defineProperty(exports, "listTwinEdgesForRefs", { enumerable: true, get: function () { return store_js_2.listTwinEdgesForRefs; } });
151
138
  Object.defineProperty(exports, "mapTwinEdgeRow", { enumerable: true, get: function () { return store_js_2.mapTwinEdgeRow; } });
152
139
  var ref_validation_js_1 = require("./edges/ref-validation.js");
153
- Object.defineProperty(exports, "assertTwinRefsVisibleToScopes", { enumerable: true, get: function () { return ref_validation_js_1.assertTwinRefsVisibleToScopes; } });
154
140
  Object.defineProperty(exports, "listVisibleTwinEdgesForRefs", { enumerable: true, get: function () { return ref_validation_js_1.listVisibleTwinEdgesForRefs; } });
155
141
  __exportStar(require("./context-compile/index.js"), exports);
156
142
  __exportStar(require("./provenance/source-ref.js"), exports);
@@ -166,12 +152,9 @@ __exportStar(require("./entities/read-identity.js"), exports);
166
152
  __exportStar(require("./entities/audit-metrics.js"), exports);
167
153
  __exportStar(require("./entities/provenance-query.js"), exports);
168
154
  __exportStar(require("./entities/lineage-store.js"), exports);
169
- __exportStar(require("./entities/lineage-backfill.js"), exports);
170
- __exportStar(require("./entities/exact-merge-backfill.js"), exports);
171
155
  __exportStar(require("./entities/entity-search.js"), exports);
172
156
  __exportStar(require("./entities/entity-list.js"), exports);
173
157
  __exportStar(require("./entities/entity-orphan-list.js"), exports);
174
- __exportStar(require("./entities/entity-impact.js"), exports);
175
158
  __exportStar(require("./entities/rollback-preview.js"), exports);
176
159
  __exportStar(require("./entities/source-locator.js"), exports);
177
160
  __exportStar(require("./entities/policy-types.js"), exports);
@@ -192,7 +175,6 @@ var relevance_scorer_js_1 = require("./relevance-scorer.js");
192
175
  Object.defineProperty(exports, "calculateRelevance", { enumerable: true, get: function () { return relevance_scorer_js_1.calculateRelevance; } });
193
176
  Object.defineProperty(exports, "selectTopDecisions", { enumerable: true, get: function () { return relevance_scorer_js_1.selectTopDecisions; } });
194
177
  Object.defineProperty(exports, "formatTopNContext", { enumerable: true, get: function () { return relevance_scorer_js_1.formatTopNContext; } });
195
- Object.defineProperty(exports, "testRelevanceScoring", { enumerable: true, get: function () { return relevance_scorer_js_1.testRelevanceScoring; } });
196
178
  var decision_tracker_js_1 = require("./decision-tracker.js");
197
179
  Object.defineProperty(exports, "learnDecision", { enumerable: true, get: function () { return decision_tracker_js_1.learnDecision; } });
198
180
  Object.defineProperty(exports, "generateDecisionId", { enumerable: true, get: function () { return decision_tracker_js_1.generateDecisionId; } });
@@ -204,23 +186,19 @@ Object.defineProperty(exports, "calculateCombinedConfidence", { enumerable: true
204
186
  Object.defineProperty(exports, "detectRefinement", { enumerable: true, get: function () { return decision_tracker_js_1.detectRefinement; } });
205
187
  Object.defineProperty(exports, "parseReasoningForRelationships", { enumerable: true, get: function () { return decision_tracker_js_1.parseReasoningForRelationships; } });
206
188
  Object.defineProperty(exports, "createEdgesFromReasoning", { enumerable: true, get: function () { return decision_tracker_js_1.createEdgesFromReasoning; } });
207
- Object.defineProperty(exports, "getSupersededChainDepth", { enumerable: true, get: function () { return decision_tracker_js_1.getSupersededChainDepth; } });
208
189
  Object.defineProperty(exports, "updateConfidence", { enumerable: true, get: function () { return decision_tracker_js_1.updateConfidence; } });
209
190
  Object.defineProperty(exports, "VALID_EDGE_TYPES", { enumerable: true, get: function () { return decision_tracker_js_1.VALID_EDGE_TYPES; } });
210
191
  var tier_validator_js_1 = require("./tier-validator.js");
211
- Object.defineProperty(exports, "validateTier", { enumerable: true, get: function () { return tier_validator_js_1.validateTier; } });
212
192
  Object.defineProperty(exports, "checkNodeVersion", { enumerable: true, get: function () { return tier_validator_js_1.checkNodeVersion; } });
213
193
  Object.defineProperty(exports, "checkSQLite", { enumerable: true, get: function () { return tier_validator_js_1.checkSQLite; } });
214
194
  Object.defineProperty(exports, "checkEmbeddings", { enumerable: true, get: function () { return tier_validator_js_1.checkEmbeddings; } });
215
195
  Object.defineProperty(exports, "checkDatabase", { enumerable: true, get: function () { return tier_validator_js_1.checkDatabase; } });
216
196
  Object.defineProperty(exports, "getTierDescription", { enumerable: true, get: function () { return tier_validator_js_1.getTierDescription; } });
217
- Object.defineProperty(exports, "getTierBanner", { enumerable: true, get: function () { return tier_validator_js_1.getTierBanner; } });
218
197
  var progress_indicator_js_1 = require("./progress-indicator.js");
219
198
  Object.defineProperty(exports, "logProgress", { enumerable: true, get: function () { return progress_indicator_js_1.logProgress; } });
220
199
  Object.defineProperty(exports, "logComplete", { enumerable: true, get: function () { return progress_indicator_js_1.logComplete; } });
221
200
  Object.defineProperty(exports, "logFailed", { enumerable: true, get: function () { return progress_indicator_js_1.logFailed; } });
222
201
  Object.defineProperty(exports, "logError", { enumerable: true, get: function () { return progress_indicator_js_1.logError; } });
223
- Object.defineProperty(exports, "logInfo", { enumerable: true, get: function () { return progress_indicator_js_1.logInfo; } });
224
202
  Object.defineProperty(exports, "logLoading", { enumerable: true, get: function () { return progress_indicator_js_1.logLoading; } });
225
203
  Object.defineProperty(exports, "logSearching", { enumerable: true, get: function () { return progress_indicator_js_1.logSearching; } });
226
204
  var debug_logger_js_1 = require("./debug-logger.js");
@@ -249,8 +227,6 @@ Object.defineProperty(exports, "formatContext", { enumerable: true, get: functio
249
227
  Object.defineProperty(exports, "formatLegacyContext", { enumerable: true, get: function () { return decision_formatter_js_1.formatLegacyContext; } });
250
228
  Object.defineProperty(exports, "formatRecall", { enumerable: true, get: function () { return decision_formatter_js_1.formatRecall; } });
251
229
  Object.defineProperty(exports, "formatList", { enumerable: true, get: function () { return decision_formatter_js_1.formatList; } });
252
- Object.defineProperty(exports, "formatTeaser", { enumerable: true, get: function () { return decision_formatter_js_1.formatTeaser; } });
253
- Object.defineProperty(exports, "formatInstantAnswer", { enumerable: true, get: function () { return decision_formatter_js_1.formatInstantAnswer; } });
254
230
  Object.defineProperty(exports, "formatTrustContext", { enumerable: true, get: function () { return decision_formatter_js_1.formatTrustContext; } });
255
231
  Object.defineProperty(exports, "ensureTokenBudget", { enumerable: true, get: function () { return decision_formatter_js_1.ensureTokenBudget; } });
256
232
  Object.defineProperty(exports, "estimateTokens", { enumerable: true, get: function () { return decision_formatter_js_1.estimateTokens; } });
@@ -266,20 +242,14 @@ Object.defineProperty(exports, "getRecentDecision", { enumerable: true, get: fun
266
242
  Object.defineProperty(exports, "calculateDurationDays", { enumerable: true, get: function () { return outcome_tracker_js_1.calculateDurationDays; } });
267
243
  Object.defineProperty(exports, "getEvidenceImpact", { enumerable: true, get: function () { return outcome_tracker_js_1.getEvidenceImpact; } });
268
244
  Object.defineProperty(exports, "markOutcome", { enumerable: true, get: function () { return outcome_tracker_js_1.markOutcome; } });
269
- Object.defineProperty(exports, "onUserPromptSubmit", { enumerable: true, get: function () { return outcome_tracker_js_1.onUserPromptSubmit; } });
270
245
  Object.defineProperty(exports, "FAILURE_INDICATORS", { enumerable: true, get: function () { return outcome_tracker_js_1.FAILURE_INDICATORS; } });
271
246
  Object.defineProperty(exports, "SUCCESS_INDICATORS", { enumerable: true, get: function () { return outcome_tracker_js_1.SUCCESS_INDICATORS; } });
272
247
  Object.defineProperty(exports, "PARTIAL_INDICATORS", { enumerable: true, get: function () { return outcome_tracker_js_1.PARTIAL_INDICATORS; } });
273
248
  Object.defineProperty(exports, "RECENT_WINDOW_MS", { enumerable: true, get: function () { return outcome_tracker_js_1.RECENT_WINDOW_MS; } });
274
- var memory_inject_js_1 = require("./memory-inject.js");
275
- Object.defineProperty(exports, "injectDecisionContext", { enumerable: true, get: function () { return memory_inject_js_1.injectDecisionContext; } });
276
249
  var query_intent_js_1 = require("./query-intent.js");
277
250
  Object.defineProperty(exports, "analyzeIntent", { enumerable: true, get: function () { return query_intent_js_1.analyzeIntent; } });
278
- Object.defineProperty(exports, "extractTopicKeywords", { enumerable: true, get: function () { return query_intent_js_1.extractTopicKeywords; } });
279
251
  var ollama_client_js_1 = require("./ollama-client.js");
280
252
  Object.defineProperty(exports, "generate", { enumerable: true, get: function () { return ollama_client_js_1.generate; } });
281
- Object.defineProperty(exports, "analyzeDecision", { enumerable: true, get: function () { return ollama_client_js_1.analyzeDecision; } });
282
- Object.defineProperty(exports, "analyzeQueryIntent", { enumerable: true, get: function () { return ollama_client_js_1.analyzeQueryIntent; } });
283
253
  Object.defineProperty(exports, "isAvailable", { enumerable: true, get: function () { return ollama_client_js_1.isAvailable; } });
284
254
  Object.defineProperty(exports, "listModels", { enumerable: true, get: function () { return ollama_client_js_1.listModels; } });
285
255
  Object.defineProperty(exports, "DEFAULT_MODEL", { enumerable: true, get: function () { return ollama_client_js_1.DEFAULT_MODEL; } });
@@ -288,21 +258,9 @@ var notification_manager_js_1 = require("./notification-manager.js");
288
258
  Object.defineProperty(exports, "notifyInsight", { enumerable: true, get: function () { return notification_manager_js_1.notifyInsight; } });
289
259
  __exportStar(require("./cases/types.js"), exports);
290
260
  __exportStar(require("./cases/store.js"), exports);
291
- __exportStar(require("./cases/role-inference.js"), exports);
292
- __exportStar(require("./cases/target-ref.js"), exports);
293
- __exportStar(require("./cases/corrections.js"), exports);
294
- __exportStar(require("./cases/sqlite-transaction.js"), exports);
295
- __exportStar(require("./cases/live-state.js"), exports);
296
- __exportStar(require("./cases/tombstone-sweeper.js"), exports);
297
- __exportStar(require("./cases/merge-split.js"), exports);
298
- __exportStar(require("./cases/membership-matcher.js"), exports);
299
261
  __exportStar(require("./cases/search-rollup.js"), exports);
300
262
  __exportStar(require("./cases/timeline-range.js"), exports);
301
263
  __exportStar(require("./cases/wiki-page-index.js"), exports);
302
- __exportStar(require("./cases/case-links.js"), exports);
303
- __exportStar(require("./cases/composition-overrides.js"), exports);
304
- __exportStar(require("./cases/freshness.js"), exports);
305
- __exportStar(require("./cases/membership-explain.js"), exports);
306
264
  __exportStar(require("./connectors/event-index.js"), exports);
307
265
  __exportStar(require("./connectors/raw-query.js"), exports);
308
266
  __exportStar(require("./connectors/types.js"), exports);
@@ -567,6 +567,24 @@ interface SuggestFunctionOptions extends SearchQualityOptions {
567
567
  }
568
568
  declare function save(params: SaveParams): Promise<SaveResult>;
569
569
  declare function saveWithTrustedProvenance(params: SaveParams, options: TrustedMemoryWriteOptions): Promise<SaveResult>;
570
+ /**
571
+ * Annotate suggest results with topic currency. MAMA semantics treat topic
572
+ * reuse as supersession, so a result row is stale when the DB holds a newer
573
+ * decision row for the same topic - even when its status column still says
574
+ * 'active' (historical chains predate status maintenance). Surfacing
575
+ * `superseded_by_newer` lets consumers (and LLMs) tell current truth from
576
+ * superseded history; delta-bench measured 80% -> 92.5% answer accuracy when
577
+ * the current row is explicitly marked.
578
+ */
579
+ declare function annotateTopicCurrency<T extends {
580
+ id?: unknown;
581
+ topic?: unknown;
582
+ }>(rows: T[], scopes?: Array<{
583
+ kind: string;
584
+ id: string;
585
+ }>): Array<T & {
586
+ superseded_by_newer?: boolean;
587
+ }>;
570
588
  declare function suggest(userQuestion: string, options?: SuggestFunctionOptions): Promise<any>;
571
589
  /**
572
590
  * List recent decisions (all topics, chronological)
@@ -1087,6 +1105,6 @@ declare const mama: {
1087
1105
  validateCleanupResult: typeof validateCleanupResult;
1088
1106
  expandWithGraph: typeof expandWithGraph;
1089
1107
  };
1090
- export { save, saveWithTrustedProvenance, suggest, saveMemory, saveMemoryWithTrustedProvenance, recallMemory, listDecisions as list, listCheckpoints, updateOutcome, buildProfile, ingestMemory, ingestWithTrustedProvenance, ingestConversation, ingestConversationWithTrustedProvenance, evolveMemory, buildMemoryBootstrap, createAuditAck, recordMemoryAudit, upsertChannelSummary, getChannelSummary, listOpenAuditFindings, getMemoryProvenance, listMemoriesByEnvelopeHash, listMemoriesByGatewayCallId, listMemoriesByModelRunId, listMemoryEventsForMemory, listRecentMemoryEvents, beginModelRun, beginModelRunInAdapter, commitModelRun, commitModelRunInAdapter, failModelRun, failModelRunInAdapter, getModelRun, getModelRunInAdapter, appendToolTrace, listToolTracesForRun, saveCheckpoint, loadCheckpoint, recall, proposeLink, approveLink, rejectLink, getPendingLinks, deprecateAutoLinks, calculateCoverage, calculateQuality, generateQualityReport, logRestartAttempt, calculateRestartSuccessRate, calculateRestartLatency, getRestartMetrics, scanAutoLinks, createLinkBackup, generatePreCleanupReport, restoreLinkBackup, verifyBackupExists, deleteAutoLinks, validateCleanupResult, expandWithGraph, };
1108
+ export { save, saveWithTrustedProvenance, suggest, annotateTopicCurrency, saveMemory, saveMemoryWithTrustedProvenance, recallMemory, listDecisions as list, listCheckpoints, updateOutcome, buildProfile, ingestMemory, ingestWithTrustedProvenance, ingestConversation, ingestConversationWithTrustedProvenance, evolveMemory, buildMemoryBootstrap, createAuditAck, recordMemoryAudit, upsertChannelSummary, getChannelSummary, listOpenAuditFindings, getMemoryProvenance, listMemoriesByEnvelopeHash, listMemoriesByGatewayCallId, listMemoriesByModelRunId, listMemoryEventsForMemory, listRecentMemoryEvents, beginModelRun, beginModelRunInAdapter, commitModelRun, commitModelRunInAdapter, failModelRun, failModelRunInAdapter, getModelRun, getModelRunInAdapter, appendToolTrace, listToolTracesForRun, saveCheckpoint, loadCheckpoint, recall, proposeLink, approveLink, rejectLink, getPendingLinks, deprecateAutoLinks, calculateCoverage, calculateQuality, generateQualityReport, logRestartAttempt, calculateRestartSuccessRate, calculateRestartLatency, getRestartMetrics, scanAutoLinks, createLinkBackup, generatePreCleanupReport, restoreLinkBackup, verifyBackupExists, deleteAutoLinks, validateCleanupResult, expandWithGraph, };
1091
1109
  export default mama;
1092
1110
  //# sourceMappingURL=mama-api.d.ts.map
package/dist/mama-api.js CHANGED
@@ -26,6 +26,7 @@ exports.listToolTracesForRun = exports.appendToolTrace = exports.getModelRunInAd
26
26
  exports.save = save;
27
27
  exports.saveWithTrustedProvenance = saveWithTrustedProvenance;
28
28
  exports.suggest = suggest;
29
+ exports.annotateTopicCurrency = annotateTopicCurrency;
29
30
  exports.list = listDecisions;
30
31
  exports.listCheckpoints = listCheckpoints;
31
32
  exports.updateOutcome = updateOutcome;
@@ -847,6 +848,100 @@ async function save(params) {
847
848
  async function saveWithTrustedProvenance(params, options) {
848
849
  return saveInternal(params, options);
849
850
  }
851
+ /**
852
+ * Annotate suggest results with topic currency. MAMA semantics treat topic
853
+ * reuse as supersession, so a result row is stale when the DB holds a newer
854
+ * decision row for the same topic - even when its status column still says
855
+ * 'active' (historical chains predate status maintenance). Surfacing
856
+ * `superseded_by_newer` lets consumers (and LLMs) tell current truth from
857
+ * superseded history; delta-bench measured 80% -> 92.5% answer accuracy when
858
+ * the current row is explicitly marked.
859
+ */
860
+ function annotateTopicCurrency(rows, scopes) {
861
+ try {
862
+ const topics = [
863
+ ...new Set(rows.map((r) => r.topic).filter((t) => typeof t === 'string' && t.length > 0)),
864
+ ];
865
+ if (topics.length === 0) {
866
+ return rows;
867
+ }
868
+ const adapter = (0, memory_store_js_1.getAdapter)();
869
+ const placeholders = topics.map(() => '?').join(',');
870
+ // Supersession is scope-isolated (mirrors the save-path same-topic lookup):
871
+ // a newer row for the same topic in ANOTHER project/channel must not mark
872
+ // this scope's current truth as stale. When the search ran scoped, the
873
+ // currency comparison is restricted to the same scopes. Rows with an
874
+ // excluded status (quarantined etc.) never count as "the newer truth".
875
+ const statusFilter = "AND (d.status IS NULL OR d.status NOT IN ('superseded','quarantined','contradicted','stale'))";
876
+ let all;
877
+ if (scopes && scopes.length > 0) {
878
+ const scopePairs = scopes.flatMap((s) => [s.kind, s.id]);
879
+ const scopePlaceholders = scopes
880
+ .map(() => '(ms.kind = ? AND ms.external_id = ?)')
881
+ .join(' OR ');
882
+ all = adapter
883
+ .prepare(`SELECT DISTINCT d.id, d.topic, d.created_at
884
+ FROM decisions d
885
+ JOIN memory_scope_bindings msb ON msb.memory_id = d.id
886
+ JOIN memory_scopes ms ON ms.id = msb.scope_id
887
+ WHERE d.topic IN (${placeholders}) AND (${scopePlaceholders}) ${statusFilter}`)
888
+ .all(...topics, ...scopePairs);
889
+ }
890
+ else {
891
+ all = adapter
892
+ .prepare(`SELECT id, topic, created_at FROM decisions d WHERE topic IN (${placeholders}) ${statusFilter}`)
893
+ .all(...topics);
894
+ }
895
+ // created_at mixes epoch seconds, epoch ms, and TEXT datetimes in live DBs.
896
+ const toMs = (v) => {
897
+ if (typeof v === 'number' && Number.isFinite(v)) {
898
+ return v > 1e12 ? v : v * 1000;
899
+ }
900
+ if (typeof v === 'string') {
901
+ const trimmed = v.trim();
902
+ if (/^\d+$/.test(trimmed)) {
903
+ return toMs(Number(trimmed));
904
+ }
905
+ // Stamp UTC only when the text carries no timezone marker: appending
906
+ // 'Z' to a value that already ends in 'Z' or an offset yields NaN, and
907
+ // a bare T-form datetime would otherwise parse as ambiguous local time.
908
+ const formatted = trimmed.includes('T') ? trimmed : trimmed.replace(' ', 'T');
909
+ const hasTz = formatted.endsWith('Z') || /[+-]\d{2}:?\d{2}$/.test(formatted);
910
+ const parsed = Date.parse(hasTz ? formatted : formatted + 'Z');
911
+ // Unparseable rows are skipped per-row by the caller (NaN), never
912
+ // thrown: one legacy bad timestamp must not blank the whole annotation.
913
+ return Number.isFinite(parsed) ? parsed : NaN;
914
+ }
915
+ return NaN;
916
+ };
917
+ const newestByTopic = new Map();
918
+ for (const row of all) {
919
+ const ms = toMs(row.created_at);
920
+ if (!Number.isFinite(ms)) {
921
+ continue;
922
+ }
923
+ const cur = newestByTopic.get(row.topic);
924
+ // Deterministic tiebreak on equal timestamps: higher id wins (ids embed
925
+ // their creation ms, so lexicographic order is stable and monotonic-ish).
926
+ if (!cur || ms > cur.ms || (ms === cur.ms && row.id > cur.id)) {
927
+ newestByTopic.set(row.topic, { ms, id: row.id });
928
+ }
929
+ }
930
+ return rows.map((r) => {
931
+ const newest = typeof r.topic === 'string' ? newestByTopic.get(r.topic) : undefined;
932
+ if (!newest) {
933
+ return r;
934
+ }
935
+ return { ...r, superseded_by_newer: newest.id !== r.id };
936
+ });
937
+ }
938
+ catch (err) {
939
+ // Annotation is additive - a failure must degrade to unannotated results,
940
+ // never break the search itself. But it is logged loudly, not swallowed.
941
+ (0, debug_logger_js_1.warn)(`[mama.suggest] topic-currency annotation failed: ${String(err)}`);
942
+ return rows;
943
+ }
944
+ }
850
945
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
851
946
  async function suggest(userQuestion, options = {}) {
852
947
  if (!userQuestion || typeof userQuestion !== 'string') {
@@ -1000,7 +1095,7 @@ async function suggest(userQuestion, options = {}) {
1000
1095
  }
1001
1096
  return {
1002
1097
  query: userQuestion,
1003
- results: limitedResults,
1098
+ results: annotateTopicCurrency(limitedResults, options.scopes),
1004
1099
  ...diagnosticsResponse,
1005
1100
  meta: {
1006
1101
  count: limitedResults.length,
@@ -1064,7 +1159,7 @@ async function suggest(userQuestion, options = {}) {
1064
1159
  }
1065
1160
  return {
1066
1161
  query: userQuestion,
1067
- results: limitedRows,
1162
+ results: annotateTopicCurrency(limitedRows, options.scopes),
1068
1163
  ...diagnosticsResponse,
1069
1164
  meta: {
1070
1165
  count: limitedRows.length,
@@ -15,8 +15,17 @@ export interface FusedHit {
15
15
  case_id?: string | null;
16
16
  retrieval_diagnostics?: SearchHitDiagnostics;
17
17
  }
18
+ export declare function buildDecisionId(topic: string): string;
18
19
  export declare const LEXICAL_STOPWORDS: Set<string>;
19
20
  export declare function getLexicalQueryTokens(query: string): string[];
21
+ /**
22
+ * Boost for how strongly a query matches a record's TOPIC (identity field).
23
+ * Scaled to dominate normalized BM25 scores (0-1 range): a query whose every
24
+ * token hits the topic is topic-anchored and must outrank body-text matches
25
+ * (delta-bench: before this, a topic string failed to surface its own rows in
26
+ * top-5 for 42.5% of chains - present in the candidate pool, buried by rank).
27
+ */
28
+ export declare function topicAffinityBoost(topic: string, tokens: string[], normalizedQuery: string): number;
20
29
  export declare function loadEdgesForIds(ids: string[]): Promise<MemoryEdge[]>;
21
30
  type SaveMemoryResult = {
22
31
  success: boolean;
@@ -4,7 +4,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getChannelSummary = exports.upsertChannelSummary = exports.LEXICAL_STOPWORDS = void 0;
7
+ exports.buildDecisionId = buildDecisionId;
7
8
  exports.getLexicalQueryTokens = getLexicalQueryTokens;
9
+ exports.topicAffinityBoost = topicAffinityBoost;
8
10
  exports.loadEdgesForIds = loadEdgesForIds;
9
11
  exports.saveMemory = saveMemory;
10
12
  exports.saveMemoryWithTrustedProvenance = saveMemoryWithTrustedProvenance;
@@ -41,8 +43,18 @@ const search_quality_js_1 = require("../search/search-quality.js");
41
43
  const event_store_js_1 = require("./event-store.js");
42
44
  const provenance_js_1 = require("./provenance.js");
43
45
  function buildDecisionId(topic) {
44
- const safeTopic = topic.replace(/[^a-z0-9_]+/gi, '_').toLowerCase();
45
- return `decision_${safeTopic}_${Date.now()}_${node_crypto_1.default.randomUUID().slice(0, 8)}`;
46
+ // Non-ASCII topics (Korean etc.) used to collapse into bare underscore runs
47
+ // ("decision_______<ts>") - unreadable and near-colliding. Collapse the runs
48
+ // and fall back to a stable topic hash when nothing ASCII survives; the
49
+ // human-readable topic itself is stored verbatim in the topic column.
50
+ const safeTopic = topic
51
+ .replace(/[^a-z0-9_]+/gi, '_')
52
+ .replace(/_+/g, '_')
53
+ .replace(/^_+|_+$/g, '')
54
+ .toLowerCase();
55
+ // sha256 (not sha1) purely to keep SAST scanners quiet - this is an id slug, not crypto.
56
+ const slug = safeTopic || `t${node_crypto_1.default.createHash('sha256').update(topic).digest('hex').slice(0, 8)}`;
57
+ return `decision_${slug}_${Date.now()}_${node_crypto_1.default.randomUUID().slice(0, 8)}`;
46
58
  }
47
59
  function buildSaveEventReason(toolName, gatewayCallId) {
48
60
  const parts = ['saved'];
@@ -334,6 +346,33 @@ function looksMixedKoreanEnglish(query) {
334
346
  function looksEntityLike(query) {
335
347
  return /\b[A-Z][A-Za-z0-9_-]{2,}\b/.test(query) || /[#/][A-Za-z0-9_-]{2,}/.test(query);
336
348
  }
349
+ /**
350
+ * Boost for how strongly a query matches a record's TOPIC (identity field).
351
+ * Scaled to dominate normalized BM25 scores (0-1 range): a query whose every
352
+ * token hits the topic is topic-anchored and must outrank body-text matches
353
+ * (delta-bench: before this, a topic string failed to surface its own rows in
354
+ * top-5 for 42.5% of chains - present in the candidate pool, buried by rank).
355
+ */
356
+ function topicAffinityBoost(topic, tokens, normalizedQuery) {
357
+ if (tokens.length === 0) {
358
+ return 0;
359
+ }
360
+ const topicText = topic.toLowerCase().replace(/_/g, ' ');
361
+ // Word-boundary matching (exact word or stem-prefix), not raw substring:
362
+ // "sent" must not match inside "consent" - a spurious all-tokens match would
363
+ // vault an unrelated topic over the whole BM25 range.
364
+ const topicWords = topicText.split(' ');
365
+ let topicMatches = 0;
366
+ for (const token of tokens) {
367
+ const stem = stemToken(token);
368
+ if (topicWords.some((word) => word === token || word.startsWith(stem))) {
369
+ topicMatches += 1;
370
+ }
371
+ }
372
+ const allTokensInTopic = topicMatches === tokens.length;
373
+ const exact = topicText === normalizedQuery;
374
+ return (exact ? 1 : 0) + (allTokensInTopic ? 2 : 0) + (topicMatches / tokens.length) * 0.5;
375
+ }
337
376
  function buildLexicalCandidates(records, query) {
338
377
  const tokens = getLexicalQueryTokens(query);
339
378
  const normalizedQuery = query.toLowerCase();
@@ -354,7 +393,11 @@ function buildLexicalCandidates(records, query) {
354
393
  return count + 1;
355
394
  }, 0);
356
395
  const phraseBoost = haystack.includes(normalizedQuery) ? 2 : 0;
357
- const score = tokenMatches + phraseBoost;
396
+ // Topic is the identity field: a hit there must outweigh a hit buried in
397
+ // a long decision text. Scale the shared 0-1 affinity boost up to this
398
+ // scorer's integer range so a full topic match dominates.
399
+ const topicBoost = topicAffinityBoost(record.topic, tokens, normalizedQuery) * 5;
400
+ const score = tokenMatches + phraseBoost + topicBoost;
358
401
  return { memory: record, score };
359
402
  })
360
403
  .filter((candidate) => candidate.score > 0)
@@ -1049,6 +1092,19 @@ async function recallMemory(query, options = {}) {
1049
1092
  catch {
1050
1093
  // FTS5 not available — fall through to in-memory lexical
1051
1094
  }
1095
+ // Topic-affinity rescore for FTS5 candidates: the OR-joined FTS query
1096
+ // floods the pool with body-text matches and plain BM25 buries rows whose
1097
+ // TOPIC matches the query (observed: target row present at rank 26/50 in
1098
+ // the pool, cut by the limit-5 slice). RRF consumes this array's ORDER,
1099
+ // so rescoring must happen before fusion.
1100
+ if (lexicalCandidates.length > 0) {
1101
+ const boostTokens = getLexicalQueryTokens(query);
1102
+ const boostQuery = query.toLowerCase();
1103
+ for (const candidate of lexicalCandidates) {
1104
+ candidate.score += topicAffinityBoost(candidate.memory.topic, boostTokens, boostQuery);
1105
+ }
1106
+ lexicalCandidates.sort((left, right) => right.score - left.score);
1107
+ }
1052
1108
  // Fallback: in-memory lexical if FTS5 returned nothing
1053
1109
  if (lexicalCandidates.length === 0) {
1054
1110
  let lexicalRecords = await loadLexical();
@@ -1648,13 +1704,21 @@ async function recallMemory(query, options = {}) {
1648
1704
  ];
1649
1705
  });
1650
1706
  diagnostics.candidate_counts.graph_expanded = bundle.graph_context.expanded.length;
1707
+ // Graph-expanded hits are supporting context for the primary matches -
1708
+ // they must never OUTRANK them. The previous score ((graph_rank)*0.1,
1709
+ // typically 0.05-0.095) sat far above the entire RRF range (<=~0.018),
1710
+ // so expansion hits displaced every primary hit from the fused top-N
1711
+ // (delta-bench root cause: top-5 filled with related-but-wrong topics
1712
+ // while the queried topic's own rows were cut). Scale them into a band
1713
+ // strictly below the weakest primary hit, ordered by graph rank.
1714
+ const minPrimaryScore = fusedHits.length > 0 ? Math.min(...fusedHits.map((hit) => hit.fused_rank_score)) : 0.002;
1651
1715
  fusedHits = [
1652
1716
  ...fusedHits,
1653
1717
  ...bundle.graph_context.expanded.map((record) => ({
1654
1718
  source_type: 'decision',
1655
1719
  source_id: record.id,
1656
1720
  record,
1657
- fused_rank_score: (record.confidence ?? 0.5) * 0.1,
1721
+ fused_rank_score: minPrimaryScore * 0.9 * Math.min(1, Math.max(0.1, record.confidence ?? 0.5)),
1658
1722
  retrieval_diagnostics: record.retrieval_diagnostics,
1659
1723
  })),
1660
1724
  ].sort((left, right) => right.fused_rank_score - left.fused_rank_score);
@@ -2,7 +2,6 @@ import type { DatabaseAdapter } from '../db-manager.js';
2
2
  import type { MemoryEventRecord } from './types.js';
3
3
  export declare function appendMemoryEvent(input: Omit<MemoryEventRecord, 'event_id'>): Promise<string>;
4
4
  export declare function insertMemoryEventInTransaction(adapter: Pick<DatabaseAdapter, 'prepare'>, input: Omit<MemoryEventRecord, 'event_id'>): string;
5
- export declare function listMemoryEventsForTopic(topic: string): Promise<MemoryEventRecord[]>;
6
5
  export declare function listMemoryEventsForMemory(memoryId: string): Promise<MemoryEventRecord[]>;
7
6
  export declare function listRecentMemoryEvents(limit?: number): Promise<MemoryEventRecord[]>;
8
7
  //# sourceMappingURL=event-store.d.ts.map