@jungjaehoon/mama-core 2.2.1 → 2.2.3

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/index.d.ts CHANGED
@@ -15,9 +15,11 @@ export { createAdapter, DatabaseAdapter, SQLiteAdapter, type AdapterConfig, type
15
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
- 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';
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, type AuditFindingRecord, } from './memory/types.js';
19
19
  export { saveMemory, saveMemoryWithTrustedProvenance, promoteMemoryStatus, recallMemory, buildProfile, ingestMemory, ingestWithTrustedProvenance, evolveMemory, buildMemoryBootstrap, createAuditAck, recordMemoryAudit, ingestConversation, ingestConversationWithTrustedProvenance, setExtractionFn, upsertChannelSummary, getChannelSummary, } from './memory/api.js';
20
20
  export { buildExtractionPrompt, parseExtractionResponse } from './memory/extraction-prompt.js';
21
+ export { queryRelevantTruth } from './memory/truth-store.js';
22
+ export { createAuditFinding, listOpenAuditFindings } from './memory/finding-store.js';
21
23
  export { appendMemoryEvent, insertMemoryEventInTransaction, listMemoryEventsForMemory, listRecentMemoryEvents, } from './memory/event-store.js';
22
24
  export { createTrustedProvenanceCapability, assertTrustedProvenanceCapability, type TrustedProvenanceCapability, type TrustedMemoryWriteOptions, } from './memory/provenance.js';
23
25
  export { getMemoryProvenance, listMemoriesByEnvelopeHash, listMemoriesByGatewayCallId, listMemoriesByModelRunId, } from './memory/provenance-query.js';
package/dist/index.js CHANGED
@@ -27,9 +27,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
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;
30
+ 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.listOpenAuditFindings = exports.createAuditFinding = exports.queryRelevantTruth = exports.parseExtractionResponse = exports.buildExtractionPrompt = exports.getChannelSummary = exports.upsertChannelSummary = exports.setExtractionFn = exports.ingestConversationWithTrustedProvenance = exports.ingestConversation = exports.recordMemoryAudit = void 0;
31
+ 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 = exports.selectTopDecisions = exports.calculateRelevance = exports.DEFAULT_CONFIG = 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 = exports.extractQuickAnswer = exports.estimateTokens = exports.ensureTokenBudget = 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; } });
@@ -98,6 +98,11 @@ Object.defineProperty(exports, "getChannelSummary", { enumerable: true, get: fun
98
98
  var extraction_prompt_js_1 = require("./memory/extraction-prompt.js");
99
99
  Object.defineProperty(exports, "buildExtractionPrompt", { enumerable: true, get: function () { return extraction_prompt_js_1.buildExtractionPrompt; } });
100
100
  Object.defineProperty(exports, "parseExtractionResponse", { enumerable: true, get: function () { return extraction_prompt_js_1.parseExtractionResponse; } });
101
+ var truth_store_js_1 = require("./memory/truth-store.js");
102
+ Object.defineProperty(exports, "queryRelevantTruth", { enumerable: true, get: function () { return truth_store_js_1.queryRelevantTruth; } });
103
+ var finding_store_js_1 = require("./memory/finding-store.js");
104
+ Object.defineProperty(exports, "createAuditFinding", { enumerable: true, get: function () { return finding_store_js_1.createAuditFinding; } });
105
+ Object.defineProperty(exports, "listOpenAuditFindings", { enumerable: true, get: function () { return finding_store_js_1.listOpenAuditFindings; } });
101
106
  var event_store_js_1 = require("./memory/event-store.js");
102
107
  Object.defineProperty(exports, "appendMemoryEvent", { enumerable: true, get: function () { return event_store_js_1.appendMemoryEvent; } });
103
108
  Object.defineProperty(exports, "insertMemoryEventInTransaction", { enumerable: true, get: function () { return event_store_js_1.insertMemoryEventInTransaction; } });
@@ -20,7 +20,7 @@
20
20
  import { DecisionRecord } from './db-manager.js';
21
21
  import { SemanticEdges } from './decision-formatter.js';
22
22
  import { saveMemory, saveMemoryWithTrustedProvenance, recallMemory, buildProfile, ingestMemory, ingestWithTrustedProvenance, ingestConversation, ingestConversationWithTrustedProvenance, evolveMemory, buildMemoryBootstrap, createAuditAck, recordMemoryAudit, upsertChannelSummary, getChannelSummary } from './memory/api.js';
23
- import { listOpenAuditFindings } from './memory/finding-store.js';
23
+ import { createAuditFinding, listOpenAuditFindings } from './memory/finding-store.js';
24
24
  import { listMemoryEventsForMemory, listRecentMemoryEvents } from './memory/event-store.js';
25
25
  import type { TrustedMemoryWriteOptions } from './memory/provenance.js';
26
26
  import { getMemoryProvenance, listMemoriesByEnvelopeHash, listMemoriesByGatewayCallId, listMemoriesByModelRunId } from './memory/provenance-query.js';
@@ -1065,6 +1065,8 @@ declare const mama: {
1065
1065
  upsertChannelSummary: typeof upsertChannelSummary;
1066
1066
  getChannelSummary: typeof getChannelSummary;
1067
1067
  listAuditFindings: typeof listOpenAuditFindings;
1068
+ listOpenAuditFindings: typeof listOpenAuditFindings;
1069
+ createAuditFinding: typeof createAuditFinding;
1068
1070
  getMemoryProvenance: typeof getMemoryProvenance;
1069
1071
  listMemoriesByEnvelopeHash: typeof listMemoriesByEnvelopeHash;
1070
1072
  listMemoriesByGatewayCallId: typeof listMemoriesByGatewayCallId;
@@ -1105,6 +1107,6 @@ declare const mama: {
1105
1107
  validateCleanupResult: typeof validateCleanupResult;
1106
1108
  expandWithGraph: typeof expandWithGraph;
1107
1109
  };
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, };
1110
+ 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, createAuditFinding, 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, };
1109
1111
  export default mama;
1110
1112
  //# sourceMappingURL=mama-api.d.ts.map
package/dist/mama-api.js CHANGED
@@ -22,7 +22,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
22
22
  return (mod && mod.__esModule) ? mod : { "default": mod };
23
23
  };
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
- exports.listToolTracesForRun = exports.appendToolTrace = exports.getModelRunInAdapter = exports.getModelRun = exports.failModelRunInAdapter = exports.failModelRun = exports.commitModelRunInAdapter = exports.commitModelRun = exports.beginModelRunInAdapter = exports.beginModelRun = exports.listRecentMemoryEvents = exports.listMemoryEventsForMemory = exports.listMemoriesByModelRunId = exports.listMemoriesByGatewayCallId = exports.listMemoriesByEnvelopeHash = exports.getMemoryProvenance = exports.listOpenAuditFindings = exports.getChannelSummary = exports.upsertChannelSummary = exports.recordMemoryAudit = exports.createAuditAck = exports.buildMemoryBootstrap = exports.evolveMemory = exports.ingestConversationWithTrustedProvenance = exports.ingestConversation = exports.ingestWithTrustedProvenance = exports.ingestMemory = exports.buildProfile = exports.recallMemory = exports.saveMemoryWithTrustedProvenance = exports.saveMemory = void 0;
25
+ exports.listToolTracesForRun = exports.appendToolTrace = exports.getModelRunInAdapter = exports.getModelRun = exports.failModelRunInAdapter = exports.failModelRun = exports.commitModelRunInAdapter = exports.commitModelRun = exports.beginModelRunInAdapter = exports.beginModelRun = exports.listRecentMemoryEvents = exports.listMemoryEventsForMemory = exports.listMemoriesByModelRunId = exports.listMemoriesByGatewayCallId = exports.listMemoriesByEnvelopeHash = exports.getMemoryProvenance = exports.createAuditFinding = exports.listOpenAuditFindings = exports.getChannelSummary = exports.upsertChannelSummary = exports.recordMemoryAudit = exports.createAuditAck = exports.buildMemoryBootstrap = exports.evolveMemory = exports.ingestConversationWithTrustedProvenance = exports.ingestConversation = exports.ingestWithTrustedProvenance = exports.ingestMemory = exports.buildProfile = exports.recallMemory = exports.saveMemoryWithTrustedProvenance = exports.saveMemory = void 0;
26
26
  exports.save = save;
27
27
  exports.saveWithTrustedProvenance = saveWithTrustedProvenance;
28
28
  exports.suggest = suggest;
@@ -84,6 +84,7 @@ Object.defineProperty(exports, "recordMemoryAudit", { enumerable: true, get: fun
84
84
  Object.defineProperty(exports, "upsertChannelSummary", { enumerable: true, get: function () { return api_js_1.upsertChannelSummary; } });
85
85
  Object.defineProperty(exports, "getChannelSummary", { enumerable: true, get: function () { return api_js_1.getChannelSummary; } });
86
86
  const finding_store_js_1 = require("./memory/finding-store.js");
87
+ Object.defineProperty(exports, "createAuditFinding", { enumerable: true, get: function () { return finding_store_js_1.createAuditFinding; } });
87
88
  Object.defineProperty(exports, "listOpenAuditFindings", { enumerable: true, get: function () { return finding_store_js_1.listOpenAuditFindings; } });
88
89
  const event_store_js_1 = require("./memory/event-store.js");
89
90
  Object.defineProperty(exports, "listMemoryEventsForMemory", { enumerable: true, get: function () { return event_store_js_1.listMemoryEventsForMemory; } });
@@ -2813,6 +2814,8 @@ const mama = {
2813
2814
  upsertChannelSummary: api_js_1.upsertChannelSummary,
2814
2815
  getChannelSummary: api_js_1.getChannelSummary,
2815
2816
  listAuditFindings: finding_store_js_1.listOpenAuditFindings,
2817
+ listOpenAuditFindings: finding_store_js_1.listOpenAuditFindings,
2818
+ createAuditFinding: finding_store_js_1.createAuditFinding,
2816
2819
  getMemoryProvenance: provenance_query_js_1.getMemoryProvenance,
2817
2820
  listMemoriesByEnvelopeHash: provenance_query_js_1.listMemoriesByEnvelopeHash,
2818
2821
  listMemoriesByGatewayCallId: provenance_query_js_1.listMemoriesByGatewayCallId,
@@ -31,7 +31,6 @@ const bootstrap_builder_js_1 = require("./bootstrap-builder.js");
31
31
  const evolution_engine_js_1 = require("./evolution-engine.js");
32
32
  const channel_summary_state_store_js_1 = require("./channel-summary-state-store.js");
33
33
  const debug_logger_js_1 = require("../debug-logger.js");
34
- const truth_store_js_1 = require("./truth-store.js");
35
34
  const extraction_prompt_js_1 = require("./extraction-prompt.js");
36
35
  const types_js_1 = require("./types.js");
37
36
  const channel_summary_store_js_1 = require("./channel-summary-store.js");
@@ -680,25 +679,6 @@ async function saveMemoryInternal(input, options) {
680
679
  }
681
680
  }
682
681
  }
683
- if (options?.projectTruth !== false) {
684
- // Project to memory_truth table (best-effort; failure should not break save)
685
- try {
686
- await (0, truth_store_js_1.projectMemoryTruth)({
687
- memory_id: id,
688
- topic: input.topic,
689
- truth_status: targetStatus,
690
- effective_summary: input.summary,
691
- effective_details: input.details,
692
- trust_score: input.confidence ?? 0.5,
693
- scope_refs: input.scopes,
694
- supporting_event_ids: [],
695
- superseded_by: undefined,
696
- });
697
- }
698
- catch {
699
- // Truth projection is best-effort; do not fail the save
700
- }
701
- }
702
682
  return {
703
683
  success: true,
704
684
  id,
@@ -721,7 +701,7 @@ async function promoteMemoryStatus(input) {
721
701
  const targetStatus = input.status;
722
702
  const row = adapter
723
703
  .prepare(`
724
- SELECT id, topic, decision, reasoning, confidence, kind, summary, supersedes
704
+ SELECT id, topic, decision, confidence, kind, summary, supersedes
725
705
  FROM decisions
726
706
  WHERE id = ?
727
707
  `)
@@ -731,7 +711,6 @@ async function promoteMemoryStatus(input) {
731
711
  }
732
712
  const topic = String(row.topic);
733
713
  const summary = String(row.summary ?? row.decision ?? '');
734
- const details = String(row.reasoning ?? row.decision ?? '');
735
714
  const kind = (row.kind ?? 'fact') || 'fact';
736
715
  const scopes = batchLoadScopes(adapter, [memoryId]).get(memoryId) ?? [];
737
716
  let evolution = { edges: [] };
@@ -820,23 +799,11 @@ async function promoteMemoryStatus(input) {
820
799
  if (updated.changes !== 1) {
821
800
  throw new Error(`Cannot promote missing memory ${memoryId}`);
822
801
  }
823
- adapter
824
- .prepare(`
825
- INSERT OR REPLACE INTO memory_truth (
826
- memory_id, topic, truth_status, effective_summary, effective_details, trust_score,
827
- scope_refs, supporting_event_ids, superseded_by, contradicted_by, created_at, updated_at
828
- )
829
- VALUES (?, ?, ?, ?, ?, ?, ?, COALESCE((SELECT supporting_event_ids FROM memory_truth WHERE memory_id = ?), '[]'), NULL, NULL, COALESCE((SELECT created_at FROM memory_truth WHERE memory_id = ?), ?), ?)
830
- `)
831
- .run(memoryId, topic, targetStatus, summary, details, row.confidence ?? 0.5, JSON.stringify(scopes), memoryId, memoryId, now, now);
832
802
  for (const edge of evolution.edges) {
833
803
  if (edge.type === 'supersedes') {
834
804
  adapter
835
805
  .prepare(`UPDATE decisions SET superseded_by = ?, status = 'superseded', updated_at = ? WHERE id = ?`)
836
806
  .run(memoryId, now, edge.to_id);
837
- adapter
838
- .prepare(`UPDATE memory_truth SET truth_status = 'superseded', superseded_by = ?, updated_at = ? WHERE memory_id = ?`)
839
- .run(memoryId, now, edge.to_id);
840
807
  }
841
808
  adapter
842
809
  .prepare(`
@@ -11,7 +11,7 @@ async function buildMemoryAgentBootstrap(params) {
11
11
  (0, truth_store_js_1.queryRelevantTruth)({
12
12
  query: '',
13
13
  scopes: params.scopes,
14
- includeHistory: true,
14
+ includeHistory: false,
15
15
  }),
16
16
  (0, finding_store_js_1.listOpenAuditFindings)(),
17
17
  (0, event_store_js_1.listRecentMemoryEvents)(10),
@@ -25,11 +25,11 @@ async function buildMemoryAgentBootstrap(params) {
25
25
  summary: row.effective_summary,
26
26
  details: row.effective_details,
27
27
  confidence: row.trust_score,
28
- status: row.truth_status === 'quarantined' ? 'stale' : row.truth_status,
28
+ status: row.truth_status,
29
29
  scopes: row.scope_refs,
30
30
  source: {
31
31
  package: 'mama-core',
32
- source_type: 'truth_projection',
32
+ source_type: 'decisions_current',
33
33
  },
34
34
  created_at: 0,
35
35
  updated_at: 0,
@@ -5,7 +5,6 @@ export interface TrustedProvenanceCapability {
5
5
  export interface TrustedMemoryWriteOptions {
6
6
  provenance: MemoryWriteProvenance;
7
7
  capability: TrustedProvenanceCapability;
8
- projectTruth?: boolean;
9
8
  }
10
9
  export interface NormalizedMemoryProvenance {
11
10
  actor: MemoryEventRecord['actor'];
@@ -92,7 +92,6 @@ function appendProvenanceSourceRefs(options, refs) {
92
92
  assertTrustedProvenanceCapability(options.capability);
93
93
  return {
94
94
  capability: options.capability,
95
- projectTruth: options.projectTruth,
96
95
  provenance: {
97
96
  ...options.provenance,
98
97
  source_refs: [...(options.provenance.source_refs ?? []), ...refs],
@@ -1,5 +1,4 @@
1
1
  import type { MemoryScopeRef, MemoryTruthRow } from './types.js';
2
- export declare function projectMemoryTruth(row: MemoryTruthRow): Promise<void>;
3
2
  export declare function queryRelevantTruth(params: {
4
3
  query: string;
5
4
  scopes: MemoryScopeRef[];
@@ -1,33 +1,23 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.projectMemoryTruth = projectMemoryTruth;
4
3
  exports.queryRelevantTruth = queryRelevantTruth;
5
4
  const db_manager_js_1 = require("../db-manager.js");
6
- function deserializeTruthRow(row) {
5
+ function decisionToTruthRow(row) {
7
6
  return {
8
- memory_id: String(row.memory_id),
9
- topic: String(row.topic),
10
- truth_status: row.truth_status,
11
- effective_summary: String(row.effective_summary),
12
- effective_details: String(row.effective_details),
13
- trust_score: Number(row.trust_score),
14
- scope_refs: JSON.parse(String(row.scope_refs)),
15
- supporting_event_ids: JSON.parse(String(row.supporting_event_ids)),
16
- superseded_by: typeof row.superseded_by === 'string' ? row.superseded_by : undefined,
17
- contradicted_by: typeof row.contradicted_by === 'string'
18
- ? JSON.parse(row.contradicted_by)
19
- : undefined,
20
- created_at: typeof row.created_at === 'number' ? row.created_at : undefined,
21
- updated_at: typeof row.updated_at === 'number' ? row.updated_at : undefined,
22
- kind: typeof row.kind === 'string' ? row.kind : undefined,
7
+ memory_id: row.id,
8
+ topic: row.topic,
9
+ truth_status: row.status,
10
+ effective_summary: row.summary ?? row.decision,
11
+ effective_details: row.reasoning ?? '',
12
+ trust_score: row.confidence,
13
+ scope_refs: JSON.parse(row.scope_refs),
14
+ supporting_event_ids: [],
15
+ superseded_by: row.superseded_by ?? undefined,
16
+ created_at: row.created_at,
17
+ updated_at: row.updated_at ?? undefined,
18
+ kind: row.kind ?? undefined,
23
19
  };
24
20
  }
25
- function matchesScopes(row, scopes) {
26
- if (scopes.length === 0) {
27
- return true;
28
- }
29
- return row.scope_refs.some((scopeRef) => scopes.some((scope) => scope.kind === scopeRef.kind && scope.id === scopeRef.id));
30
- }
31
21
  function matchesQuery(row, query) {
32
22
  const tokens = query
33
23
  .toLowerCase()
@@ -40,41 +30,43 @@ function matchesQuery(row, query) {
40
30
  ? haystack.includes(query.toLowerCase())
41
31
  : tokens.some((token) => haystack.includes(token));
42
32
  }
43
- async function projectMemoryTruth(row) {
44
- await (0, db_manager_js_1.initDB)();
45
- const adapter = (0, db_manager_js_1.getAdapter)();
46
- const now = Date.now();
47
- adapter
48
- .prepare(`
49
- INSERT OR REPLACE INTO memory_truth (
50
- memory_id, topic, truth_status, effective_summary, effective_details, trust_score,
51
- scope_refs, supporting_event_ids, superseded_by, contradicted_by, created_at, updated_at
52
- )
53
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, COALESCE((SELECT created_at FROM memory_truth WHERE memory_id = ?), ?), ?)
54
- `)
55
- .run(row.memory_id, row.topic, row.truth_status, row.effective_summary, row.effective_details, row.trust_score, JSON.stringify(row.scope_refs), JSON.stringify(row.supporting_event_ids), row.superseded_by ?? null, row.contradicted_by ? JSON.stringify(row.contradicted_by) : null, row.memory_id, now, now);
56
- }
57
33
  async function queryRelevantTruth(params) {
58
34
  await (0, db_manager_js_1.initDB)();
59
35
  const adapter = (0, db_manager_js_1.getAdapter)();
36
+ const scopeMatch = params.scopes
37
+ .map(() => '(scope_filter.kind = ? AND scope_filter.external_id = ?)')
38
+ .join(' OR ');
39
+ const scopeFilter = params.scopes.length > 0
40
+ ? `
41
+ AND EXISTS (
42
+ SELECT 1
43
+ FROM memory_scope_bindings binding_filter
44
+ JOIN memory_scopes scope_filter ON scope_filter.id = binding_filter.scope_id
45
+ WHERE binding_filter.memory_id = d.id
46
+ AND (${scopeMatch})
47
+ )
48
+ `
49
+ : 'AND 1 = 0';
50
+ const currentFilter = params.includeHistory === true ? '' : "AND d.status = 'active'";
51
+ const scopeParams = params.scopes.flatMap((scope) => [scope.kind, scope.id]);
60
52
  const rows = adapter
61
53
  .prepare(`
62
- SELECT mt.memory_id, mt.topic, mt.truth_status, mt.effective_summary, mt.effective_details, mt.trust_score,
63
- mt.scope_refs, mt.supporting_event_ids, mt.superseded_by, mt.contradicted_by, mt.created_at, mt.updated_at,
64
- d.kind
65
- FROM memory_truth mt
66
- LEFT JOIN decisions d ON d.id = mt.memory_id
67
- ORDER BY mt.updated_at DESC
54
+ SELECT d.id, d.topic, d.status, d.summary, d.decision, d.reasoning, d.confidence,
55
+ d.superseded_by, d.created_at, d.updated_at, d.kind,
56
+ json_group_array(json_object('kind', scope.kind, 'id', scope.external_id)) AS scope_refs
57
+ FROM decisions d
58
+ JOIN memory_scope_bindings binding ON binding.memory_id = d.id
59
+ JOIN memory_scopes scope ON scope.id = binding.scope_id
60
+ WHERE 1 = 1
61
+ ${currentFilter}
62
+ ${scopeFilter}
63
+ GROUP BY d.id
64
+ ORDER BY d.updated_at DESC, d.created_at DESC
68
65
  `)
69
- .all();
66
+ .all(...scopeParams);
70
67
  return rows
71
- .map(deserializeTruthRow)
72
- .filter((row) => matchesScopes(row, params.scopes))
68
+ .map(decisionToTruthRow)
73
69
  .filter((row) => matchesQuery(row, params.query))
74
- .filter((row) => params.includeHistory === true ||
75
- (row.truth_status !== 'quarantined' &&
76
- row.truth_status !== 'superseded' &&
77
- row.truth_status !== 'contradicted'))
78
70
  .sort((left, right) => right.trust_score - left.trust_score);
79
71
  }
80
72
  //# sourceMappingURL=truth-store.js.map
@@ -170,8 +170,8 @@ export interface PublicIngestMemoryInput {
170
170
  export type PublicIngestConversationInput = IngestConversationInput;
171
171
  export interface AuditFindingRecord {
172
172
  finding_id: string;
173
- kind: 'wrong_direction' | 'memory_conflict' | 'stale_memory' | 'unsupported_claim';
174
- severity: 'low' | 'medium' | 'high';
173
+ kind: 'wrong_direction' | 'memory_conflict' | 'stale_memory' | 'unsupported_claim' | 'memory_injection_suspect';
174
+ severity: 'low' | 'medium' | 'high' | 'warn';
175
175
  summary: string;
176
176
  evidence_refs: string[];
177
177
  affected_memory_ids: string[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jungjaehoon/mama-core",
3
- "version": "2.2.1",
3
+ "version": "2.2.3",
4
4
  "description": "MAMA Core - Shared modules for Memory-Augmented MCP Assistant",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",