@jungjaehoon/mama-core 1.9.0 → 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.
- package/dist/agent-graph/alias-write.js +3 -0
- package/dist/agent-graph/entity-resolve.js +3 -7
- package/dist/agent-graph/graph-query.js +5 -4
- package/dist/agent-graph/types.d.ts +30 -0
- package/dist/cases/store.d.ts +0 -4
- package/dist/cases/store.js +0 -66
- package/dist/cases/wiki-page-index.d.ts +0 -13
- package/dist/cases/wiki-page-index.js +0 -153
- package/dist/connectors/event-index.d.ts +1 -22
- package/dist/connectors/event-index.js +0 -157
- package/dist/context-compile/channel-grant.d.ts +46 -0
- package/dist/context-compile/channel-grant.js +66 -0
- package/dist/context-compile/compiler.js +5 -2
- package/dist/context-compile/index.d.ts +1 -0
- package/dist/context-compile/index.js +1 -0
- package/dist/context-compile/packet-store.d.ts +0 -1
- package/dist/context-compile/packet-store.js +0 -16
- package/dist/context-compile/source-readers.d.ts +1 -0
- package/dist/context-compile/source-readers.js +156 -23
- package/dist/context-compile/types.d.ts +17 -0
- package/dist/context-compile/visibility.js +28 -4
- package/dist/db-adapter/node-sqlite-adapter.js +4 -0
- package/dist/db-manager.d.ts +0 -13
- package/dist/db-manager.js +0 -66
- package/dist/decision-formatter.d.ts +0 -11
- package/dist/decision-formatter.js +0 -122
- package/dist/decision-tracker.d.ts +0 -12
- package/dist/decision-tracker.js +0 -50
- package/dist/edges/ref-validation.d.ts +1 -2
- package/dist/edges/ref-validation.js +33 -13
- package/dist/edges/store.d.ts +1 -3
- package/dist/edges/store.js +0 -214
- package/dist/edges/types.d.ts +10 -0
- package/dist/embedding-client.d.ts +0 -17
- package/dist/embedding-client.js +0 -80
- package/dist/embedding-server/mobile/auth.d.ts +1 -10
- package/dist/embedding-server/mobile/auth.js +0 -15
- package/dist/embeddings.d.ts +0 -12
- package/dist/embeddings.js +0 -68
- package/dist/entities/audit-metrics.d.ts +0 -5
- package/dist/entities/audit-metrics.js +0 -4
- package/dist/entities/candidate-generator.d.ts +1 -2
- package/dist/entities/candidate-generator.js +0 -412
- package/dist/entities/entity-list.d.ts +0 -1
- package/dist/entities/entity-list.js +0 -96
- package/dist/entities/entity-orphan-list.d.ts +0 -9
- package/dist/entities/entity-orphan-list.js +0 -88
- package/dist/entities/entity-search.d.ts +0 -1
- package/dist/entities/entity-search.js +0 -147
- package/dist/entities/errors.d.ts +0 -10
- package/dist/entities/errors.js +1 -25
- package/dist/entities/lineage-store.d.ts +0 -23
- package/dist/entities/lineage-store.js +0 -104
- package/dist/entities/policy-store.d.ts +0 -9
- package/dist/entities/policy-store.js +0 -188
- package/dist/entities/provenance-query.d.ts +0 -1
- package/dist/entities/provenance-query.js +0 -164
- package/dist/entities/resolution-engine.d.ts +1 -8
- package/dist/entities/resolution-engine.js +0 -66
- package/dist/entities/rollback-preview.d.ts +0 -4
- package/dist/entities/rollback-preview.js +0 -232
- package/dist/entities/store.d.ts +1 -10
- package/dist/entities/store.js +0 -49
- package/dist/index.d.ts +15 -31
- package/dist/index.js +4 -46
- package/dist/mama-api.d.ts +19 -1
- package/dist/mama-api.js +97 -2
- package/dist/memory/api.d.ts +8 -0
- package/dist/memory/api.js +55 -2
- package/dist/memory/event-store.d.ts +0 -1
- package/dist/memory/event-store.js +0 -15
- package/dist/memory/finding-store.d.ts +0 -1
- package/dist/memory/finding-store.js +0 -12
- package/dist/memory/scope-backfill.d.ts +0 -3
- package/dist/memory/scope-backfill.js +0 -74
- package/dist/memory/scope-store.d.ts +0 -1
- package/dist/memory/scope-store.js +0 -4
- package/dist/memory/truth-store.d.ts +0 -3
- package/dist/memory/truth-store.js +0 -22
- package/dist/memory/types.d.ts +0 -1
- package/dist/memory/types.js +0 -13
- package/dist/memory-store.d.ts +0 -16
- package/dist/memory-store.js +0 -51
- package/dist/ollama-client.d.ts +0 -9
- package/dist/ollama-client.js +0 -125
- package/dist/outcome-tracker.d.ts +0 -14
- package/dist/outcome-tracker.js +0 -44
- package/dist/progress-indicator.d.ts +0 -4
- package/dist/progress-indicator.js +0 -7
- package/dist/provenance/source-ref.d.ts +0 -9
- package/dist/provenance/source-ref.js +0 -145
- package/dist/query-intent.d.ts +0 -4
- package/dist/query-intent.js +0 -30
- package/dist/relevance-scorer.d.ts +0 -9
- package/dist/relevance-scorer.js +0 -81
- package/dist/search/feedback-store.d.ts +0 -1
- package/dist/search/feedback-store.js +0 -4
- package/dist/search/ranker-rescore.d.ts +0 -3
- package/dist/search/ranker-rescore.js +0 -27
- package/dist/search/ranker-trainer.d.ts +0 -8
- package/dist/search/ranker-trainer.js +0 -376
- package/dist/tier-validator.d.ts +0 -12
- package/dist/tier-validator.js +0 -56
- package/package.json +1 -10
- package/dist/cases/case-links.d.ts +0 -116
- package/dist/cases/case-links.js +0 -794
- package/dist/cases/composition-overrides.d.ts +0 -90
- package/dist/cases/composition-overrides.js +0 -724
- package/dist/cases/corrections.d.ts +0 -156
- package/dist/cases/corrections.js +0 -1045
- package/dist/cases/freshness.d.ts +0 -57
- package/dist/cases/freshness.js +0 -283
- package/dist/cases/live-state.d.ts +0 -48
- package/dist/cases/live-state.js +0 -256
- package/dist/cases/membership-explain.d.ts +0 -56
- package/dist/cases/membership-explain.js +0 -140
- package/dist/cases/membership-matcher.d.ts +0 -23
- package/dist/cases/membership-matcher.js +0 -193
- package/dist/cases/merge-split.d.ts +0 -61
- package/dist/cases/merge-split.js +0 -368
- package/dist/cases/role-inference.d.ts +0 -10
- package/dist/cases/role-inference.js +0 -85
- package/dist/cases/sqlite-transaction.d.ts +0 -10
- package/dist/cases/sqlite-transaction.js +0 -62
- package/dist/cases/target-ref.d.ts +0 -25
- package/dist/cases/target-ref.js +0 -22
- package/dist/cases/tombstone-sweeper.d.ts +0 -13
- package/dist/cases/tombstone-sweeper.js +0 -128
- package/dist/entities/entity-impact.d.ts +0 -41
- package/dist/entities/entity-impact.js +0 -140
- package/dist/entities/exact-merge-backfill.d.ts +0 -11
- package/dist/entities/exact-merge-backfill.js +0 -161
- package/dist/entities/lineage-backfill.d.ts +0 -12
- package/dist/entities/lineage-backfill.js +0 -101
- package/dist/memory-inject.d.ts +0 -24
- 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,
|
|
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 {
|
|
13
|
-
export { initDB, getDB, getAdapter, closeDB, insertEmbedding, vectorSearch, queryVectorSearch, insertDecisionWithEmbedding, queryDecisionGraph, querySemanticEdges, updateDecisionOutcome, getPreparedStmt, getDbPath, fts5Search,
|
|
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 {
|
|
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 {
|
|
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,
|
|
31
|
-
export {
|
|
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,
|
|
59
|
-
export { learnDecision, generateDecisionId, getPreviousDecision, createEdge, createSupersedesEdge, markSuperseded, calculateCombinedConfidence, detectRefinement, parseReasoningForRelationships, createEdgesFromReasoning,
|
|
60
|
-
export {
|
|
61
|
-
export { logProgress, logComplete, logFailed, logError,
|
|
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,
|
|
66
|
-
export { analyzeOutcome, matchesFailureIndicators, matchesSuccessIndicators, matchesPartialIndicators, extractFailureReason, getRecentDecision, calculateDurationDays, getEvidenceImpact, markOutcome,
|
|
67
|
-
export {
|
|
68
|
-
export {
|
|
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.
|
|
30
|
-
exports.
|
|
31
|
-
exports.
|
|
32
|
-
exports.notifyInsight = exports.FALLBACK_MODEL = exports.DEFAULT_MODEL = exports.listModels = exports.isAvailable = exports.
|
|
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);
|
package/dist/mama-api.d.ts
CHANGED
|
@@ -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,
|
package/dist/memory/api.d.ts
CHANGED
|
@@ -18,6 +18,14 @@ export interface FusedHit {
|
|
|
18
18
|
export declare function buildDecisionId(topic: string): string;
|
|
19
19
|
export declare const LEXICAL_STOPWORDS: Set<string>;
|
|
20
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;
|
|
21
29
|
export declare function loadEdgesForIds(ids: string[]): Promise<MemoryEdge[]>;
|
|
22
30
|
type SaveMemoryResult = {
|
|
23
31
|
success: boolean;
|
package/dist/memory/api.js
CHANGED
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.getChannelSummary = exports.upsertChannelSummary = exports.LEXICAL_STOPWORDS = void 0;
|
|
7
7
|
exports.buildDecisionId = buildDecisionId;
|
|
8
8
|
exports.getLexicalQueryTokens = getLexicalQueryTokens;
|
|
9
|
+
exports.topicAffinityBoost = topicAffinityBoost;
|
|
9
10
|
exports.loadEdgesForIds = loadEdgesForIds;
|
|
10
11
|
exports.saveMemory = saveMemory;
|
|
11
12
|
exports.saveMemoryWithTrustedProvenance = saveMemoryWithTrustedProvenance;
|
|
@@ -345,6 +346,33 @@ function looksMixedKoreanEnglish(query) {
|
|
|
345
346
|
function looksEntityLike(query) {
|
|
346
347
|
return /\b[A-Z][A-Za-z0-9_-]{2,}\b/.test(query) || /[#/][A-Za-z0-9_-]{2,}/.test(query);
|
|
347
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
|
+
}
|
|
348
376
|
function buildLexicalCandidates(records, query) {
|
|
349
377
|
const tokens = getLexicalQueryTokens(query);
|
|
350
378
|
const normalizedQuery = query.toLowerCase();
|
|
@@ -365,7 +393,11 @@ function buildLexicalCandidates(records, query) {
|
|
|
365
393
|
return count + 1;
|
|
366
394
|
}, 0);
|
|
367
395
|
const phraseBoost = haystack.includes(normalizedQuery) ? 2 : 0;
|
|
368
|
-
|
|
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;
|
|
369
401
|
return { memory: record, score };
|
|
370
402
|
})
|
|
371
403
|
.filter((candidate) => candidate.score > 0)
|
|
@@ -1060,6 +1092,19 @@ async function recallMemory(query, options = {}) {
|
|
|
1060
1092
|
catch {
|
|
1061
1093
|
// FTS5 not available — fall through to in-memory lexical
|
|
1062
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
|
+
}
|
|
1063
1108
|
// Fallback: in-memory lexical if FTS5 returned nothing
|
|
1064
1109
|
if (lexicalCandidates.length === 0) {
|
|
1065
1110
|
let lexicalRecords = await loadLexical();
|
|
@@ -1659,13 +1704,21 @@ async function recallMemory(query, options = {}) {
|
|
|
1659
1704
|
];
|
|
1660
1705
|
});
|
|
1661
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;
|
|
1662
1715
|
fusedHits = [
|
|
1663
1716
|
...fusedHits,
|
|
1664
1717
|
...bundle.graph_context.expanded.map((record) => ({
|
|
1665
1718
|
source_type: 'decision',
|
|
1666
1719
|
source_id: record.id,
|
|
1667
1720
|
record,
|
|
1668
|
-
fused_rank_score: (record.confidence ?? 0.5)
|
|
1721
|
+
fused_rank_score: minPrimaryScore * 0.9 * Math.min(1, Math.max(0.1, record.confidence ?? 0.5)),
|
|
1669
1722
|
retrieval_diagnostics: record.retrieval_diagnostics,
|
|
1670
1723
|
})),
|
|
1671
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
|
|
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.appendMemoryEvent = appendMemoryEvent;
|
|
7
7
|
exports.insertMemoryEventInTransaction = insertMemoryEventInTransaction;
|
|
8
|
-
exports.listMemoryEventsForTopic = listMemoryEventsForTopic;
|
|
9
8
|
exports.listMemoryEventsForMemory = listMemoryEventsForMemory;
|
|
10
9
|
exports.listRecentMemoryEvents = listRecentMemoryEvents;
|
|
11
10
|
const node_crypto_1 = __importDefault(require("node:crypto"));
|
|
@@ -46,20 +45,6 @@ function insertMemoryEventInTransaction(adapter, input) {
|
|
|
46
45
|
.run(eventId, input.event_type, input.actor, input.source_turn_id ?? null, input.memory_id ?? null, input.topic ?? null, JSON.stringify(input.scope_refs), input.evidence_refs ? JSON.stringify(input.evidence_refs) : null, input.reason ?? null, input.created_at);
|
|
47
46
|
return eventId;
|
|
48
47
|
}
|
|
49
|
-
async function listMemoryEventsForTopic(topic) {
|
|
50
|
-
await (0, db_manager_js_1.initDB)();
|
|
51
|
-
const adapter = (0, db_manager_js_1.getAdapter)();
|
|
52
|
-
const rows = adapter
|
|
53
|
-
.prepare(`
|
|
54
|
-
SELECT event_id, event_type, actor, source_turn_id, memory_id, topic,
|
|
55
|
-
scope_refs, evidence_refs, reason, created_at
|
|
56
|
-
FROM memory_events
|
|
57
|
-
WHERE topic = ?
|
|
58
|
-
ORDER BY created_at DESC, rowid DESC
|
|
59
|
-
`)
|
|
60
|
-
.all(topic);
|
|
61
|
-
return rows.map(deserializeEvent);
|
|
62
|
-
}
|
|
63
48
|
async function listMemoryEventsForMemory(memoryId) {
|
|
64
49
|
await (0, db_manager_js_1.initDB)();
|
|
65
50
|
const adapter = (0, db_manager_js_1.getAdapter)();
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { AuditFindingRecord } from './types.js';
|
|
2
2
|
export declare function createAuditFinding(input: Omit<AuditFindingRecord, 'finding_id' | 'status' | 'created_at' | 'resolved_at'>): Promise<string>;
|
|
3
3
|
export declare function listOpenAuditFindings(): Promise<AuditFindingRecord[]>;
|
|
4
|
-
export declare function resolveAuditFinding(findingId: string, status: 'resolved' | 'dismissed'): Promise<void>;
|
|
5
4
|
//# sourceMappingURL=finding-store.d.ts.map
|