@jungjaehoon/mama-core 1.8.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/dist/agent-graph/alias-write.js +3 -0
  2. package/dist/agent-graph/entity-resolve.js +3 -7
  3. package/dist/agent-graph/graph-query.js +5 -4
  4. package/dist/agent-graph/types.d.ts +30 -0
  5. package/dist/cases/store.d.ts +0 -4
  6. package/dist/cases/store.js +0 -66
  7. package/dist/cases/wiki-page-index.d.ts +0 -13
  8. package/dist/cases/wiki-page-index.js +0 -153
  9. package/dist/connectors/event-index.d.ts +1 -22
  10. package/dist/connectors/event-index.js +0 -157
  11. package/dist/context-compile/channel-grant.d.ts +46 -0
  12. package/dist/context-compile/channel-grant.js +66 -0
  13. package/dist/context-compile/compiler.js +5 -2
  14. package/dist/context-compile/index.d.ts +1 -0
  15. package/dist/context-compile/index.js +1 -0
  16. package/dist/context-compile/packet-store.d.ts +0 -1
  17. package/dist/context-compile/packet-store.js +0 -16
  18. package/dist/context-compile/source-readers.d.ts +1 -0
  19. package/dist/context-compile/source-readers.js +156 -23
  20. package/dist/context-compile/types.d.ts +17 -0
  21. package/dist/context-compile/visibility.js +28 -4
  22. package/dist/db-adapter/node-sqlite-adapter.js +4 -0
  23. package/dist/db-manager.d.ts +0 -13
  24. package/dist/db-manager.js +0 -66
  25. package/dist/decision-formatter.d.ts +0 -11
  26. package/dist/decision-formatter.js +0 -122
  27. package/dist/decision-tracker.d.ts +0 -12
  28. package/dist/decision-tracker.js +0 -50
  29. package/dist/edges/ref-validation.d.ts +1 -2
  30. package/dist/edges/ref-validation.js +33 -13
  31. package/dist/edges/store.d.ts +1 -3
  32. package/dist/edges/store.js +0 -214
  33. package/dist/edges/types.d.ts +10 -0
  34. package/dist/embedding-client.d.ts +0 -17
  35. package/dist/embedding-client.js +0 -80
  36. package/dist/embedding-server/mobile/auth.d.ts +1 -10
  37. package/dist/embedding-server/mobile/auth.js +0 -15
  38. package/dist/embeddings.d.ts +0 -12
  39. package/dist/embeddings.js +0 -68
  40. package/dist/entities/audit-metrics.d.ts +0 -5
  41. package/dist/entities/audit-metrics.js +0 -4
  42. package/dist/entities/candidate-generator.d.ts +1 -2
  43. package/dist/entities/candidate-generator.js +0 -412
  44. package/dist/entities/entity-list.d.ts +0 -1
  45. package/dist/entities/entity-list.js +0 -96
  46. package/dist/entities/entity-orphan-list.d.ts +0 -9
  47. package/dist/entities/entity-orphan-list.js +0 -88
  48. package/dist/entities/entity-search.d.ts +0 -1
  49. package/dist/entities/entity-search.js +0 -147
  50. package/dist/entities/errors.d.ts +0 -10
  51. package/dist/entities/errors.js +1 -25
  52. package/dist/entities/lineage-store.d.ts +0 -23
  53. package/dist/entities/lineage-store.js +0 -104
  54. package/dist/entities/policy-store.d.ts +0 -9
  55. package/dist/entities/policy-store.js +0 -188
  56. package/dist/entities/provenance-query.d.ts +0 -1
  57. package/dist/entities/provenance-query.js +0 -164
  58. package/dist/entities/resolution-engine.d.ts +1 -8
  59. package/dist/entities/resolution-engine.js +0 -66
  60. package/dist/entities/rollback-preview.d.ts +0 -4
  61. package/dist/entities/rollback-preview.js +0 -232
  62. package/dist/entities/store.d.ts +1 -10
  63. package/dist/entities/store.js +0 -49
  64. package/dist/index.d.ts +15 -31
  65. package/dist/index.js +4 -46
  66. package/dist/mama-api.d.ts +19 -1
  67. package/dist/mama-api.js +97 -2
  68. package/dist/memory/api.d.ts +9 -0
  69. package/dist/memory/api.js +68 -4
  70. package/dist/memory/event-store.d.ts +0 -1
  71. package/dist/memory/event-store.js +0 -15
  72. package/dist/memory/finding-store.d.ts +0 -1
  73. package/dist/memory/finding-store.js +0 -12
  74. package/dist/memory/scope-backfill.d.ts +0 -3
  75. package/dist/memory/scope-backfill.js +0 -74
  76. package/dist/memory/scope-store.d.ts +0 -1
  77. package/dist/memory/scope-store.js +0 -4
  78. package/dist/memory/truth-store.d.ts +0 -3
  79. package/dist/memory/truth-store.js +0 -22
  80. package/dist/memory/types.d.ts +0 -1
  81. package/dist/memory/types.js +0 -13
  82. package/dist/memory-store.d.ts +0 -16
  83. package/dist/memory-store.js +0 -51
  84. package/dist/ollama-client.d.ts +0 -9
  85. package/dist/ollama-client.js +0 -125
  86. package/dist/outcome-tracker.d.ts +0 -14
  87. package/dist/outcome-tracker.js +0 -44
  88. package/dist/progress-indicator.d.ts +0 -4
  89. package/dist/progress-indicator.js +0 -7
  90. package/dist/provenance/source-ref.d.ts +0 -9
  91. package/dist/provenance/source-ref.js +0 -145
  92. package/dist/query-intent.d.ts +0 -4
  93. package/dist/query-intent.js +0 -30
  94. package/dist/relevance-scorer.d.ts +0 -9
  95. package/dist/relevance-scorer.js +0 -81
  96. package/dist/search/feedback-store.d.ts +0 -1
  97. package/dist/search/feedback-store.js +0 -4
  98. package/dist/search/ranker-rescore.d.ts +0 -3
  99. package/dist/search/ranker-rescore.js +0 -27
  100. package/dist/search/ranker-trainer.d.ts +0 -8
  101. package/dist/search/ranker-trainer.js +0 -376
  102. package/dist/tier-validator.d.ts +0 -12
  103. package/dist/tier-validator.js +0 -56
  104. package/package.json +1 -10
  105. package/dist/cases/case-links.d.ts +0 -116
  106. package/dist/cases/case-links.js +0 -794
  107. package/dist/cases/composition-overrides.d.ts +0 -90
  108. package/dist/cases/composition-overrides.js +0 -724
  109. package/dist/cases/corrections.d.ts +0 -156
  110. package/dist/cases/corrections.js +0 -1045
  111. package/dist/cases/freshness.d.ts +0 -57
  112. package/dist/cases/freshness.js +0 -283
  113. package/dist/cases/live-state.d.ts +0 -48
  114. package/dist/cases/live-state.js +0 -256
  115. package/dist/cases/membership-explain.d.ts +0 -56
  116. package/dist/cases/membership-explain.js +0 -140
  117. package/dist/cases/membership-matcher.d.ts +0 -23
  118. package/dist/cases/membership-matcher.js +0 -193
  119. package/dist/cases/merge-split.d.ts +0 -61
  120. package/dist/cases/merge-split.js +0 -368
  121. package/dist/cases/role-inference.d.ts +0 -10
  122. package/dist/cases/role-inference.js +0 -85
  123. package/dist/cases/sqlite-transaction.d.ts +0 -10
  124. package/dist/cases/sqlite-transaction.js +0 -62
  125. package/dist/cases/target-ref.d.ts +0 -25
  126. package/dist/cases/target-ref.js +0 -22
  127. package/dist/cases/tombstone-sweeper.d.ts +0 -13
  128. package/dist/cases/tombstone-sweeper.js +0 -128
  129. package/dist/entities/entity-impact.d.ts +0 -41
  130. package/dist/entities/entity-impact.js +0 -140
  131. package/dist/entities/exact-merge-backfill.d.ts +0 -11
  132. package/dist/entities/exact-merge-backfill.js +0 -161
  133. package/dist/entities/lineage-backfill.d.ts +0 -12
  134. package/dist/entities/lineage-backfill.js +0 -101
  135. package/dist/memory-inject.d.ts +0 -24
  136. package/dist/memory-inject.js +0 -116
@@ -18,12 +18,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
18
18
  Object.defineProperty(exports, "__esModule", { value: true });
19
19
  exports.PORT_FILE = exports.TIMEOUT_MS = exports.HOST = exports.DEFAULT_PORT = void 0;
20
20
  exports.getServerPort = getServerPort;
21
- exports.isServerRunning = isServerRunning;
22
- exports.getEmbeddingFromServer = getEmbeddingFromServer;
23
- exports.getServerStatus = getServerStatus;
24
21
  const fs_1 = __importDefault(require("fs"));
25
22
  const path_1 = __importDefault(require("path"));
26
- const debug_logger_js_1 = require("./debug-logger.js");
27
23
  function resolveConfiguredPort() {
28
24
  const rawPort = process.env.MAMA_EMBEDDING_PORT || process.env.MAMA_HTTP_PORT || '';
29
25
  const parsedPort = parseInt(rawPort, 10);
@@ -54,80 +50,4 @@ function getServerPort() {
54
50
  }
55
51
  return exports.DEFAULT_PORT;
56
52
  }
57
- /**
58
- * Check if embedding server is running
59
- */
60
- async function isServerRunning() {
61
- const port = getServerPort();
62
- try {
63
- const controller = new AbortController();
64
- const timeout = setTimeout(() => controller.abort(), 200);
65
- const response = await fetch(`http://${exports.HOST}:${port}/health`, {
66
- signal: controller.signal,
67
- });
68
- clearTimeout(timeout);
69
- return response.ok;
70
- }
71
- catch {
72
- return false;
73
- }
74
- }
75
- /**
76
- * Generate embedding via HTTP server
77
- *
78
- * @param text - Text to embed
79
- * @param role - e5 role: 'passage' (default, stored text) or 'query' (search)
80
- * @returns Embedding or null if failed
81
- */
82
- async function getEmbeddingFromServer(text, role = 'passage') {
83
- const port = getServerPort();
84
- try {
85
- const controller = new AbortController();
86
- const timeout = setTimeout(() => controller.abort(), exports.TIMEOUT_MS);
87
- const response = await fetch(`http://${exports.HOST}:${port}/embed`, {
88
- method: 'POST',
89
- headers: { 'Content-Type': 'application/json' },
90
- body: JSON.stringify({ text, role }),
91
- signal: controller.signal,
92
- });
93
- clearTimeout(timeout);
94
- if (!response.ok) {
95
- const error = (await response.json());
96
- throw new Error(error.error || 'Server error');
97
- }
98
- const result = (await response.json());
99
- (0, debug_logger_js_1.info)(`[EmbeddingClient] Got embedding in ${result.latency}ms from server`);
100
- return new Float32Array(result.embedding);
101
- }
102
- catch (error) {
103
- if (error instanceof Error && error.name === 'AbortError') {
104
- (0, debug_logger_js_1.warn)('[EmbeddingClient] Server timeout, will use fallback');
105
- return null;
106
- }
107
- const message = error instanceof Error ? error.message : String(error);
108
- (0, debug_logger_js_1.warn)(`[EmbeddingClient] Server error: ${message}`);
109
- return null;
110
- }
111
- }
112
- /**
113
- * Get server status
114
- */
115
- async function getServerStatus() {
116
- const port = getServerPort();
117
- try {
118
- const controller = new AbortController();
119
- const timeout = setTimeout(() => controller.abort(), 200);
120
- const response = await fetch(`http://${exports.HOST}:${port}/health`, {
121
- signal: controller.signal,
122
- });
123
- clearTimeout(timeout);
124
- if (response.ok) {
125
- return (await response.json());
126
- }
127
- return null;
128
- }
129
- catch {
130
- return null;
131
- }
132
- }
133
53
  //# sourceMappingURL=embedding-client.js.map
@@ -13,7 +13,7 @@
13
13
  * res.end('Unauthorized');
14
14
  * }
15
15
  */
16
- import type { IncomingMessage, ServerResponse } from 'http';
16
+ import type { IncomingMessage } from 'http';
17
17
  interface WebSocketLike {
18
18
  close(code?: number, reason?: string): void;
19
19
  }
@@ -40,14 +40,5 @@ export declare function authenticate(req: IncomingMessage): boolean;
40
40
  * @returns True if authenticated, closes ws if not
41
41
  */
42
42
  export declare function authenticateWebSocket(req: IncomingMessage, ws: WebSocketLike): boolean;
43
- /**
44
- * Middleware function type
45
- */
46
- type MiddlewareNext = () => void;
47
- /**
48
- * Create authentication middleware for HTTP routes
49
- * @returns Middleware function
50
- */
51
- export declare function createAuthMiddleware(): (req: IncomingMessage, res: ServerResponse, next: MiddlewareNext) => void;
52
43
  export {};
53
44
  //# sourceMappingURL=auth.d.ts.map
@@ -19,7 +19,6 @@ exports.AUTH_TOKEN = void 0;
19
19
  exports.isLocalhost = isLocalhost;
20
20
  exports.authenticate = authenticate;
21
21
  exports.authenticateWebSocket = authenticateWebSocket;
22
- exports.createAuthMiddleware = createAuthMiddleware;
23
22
  const node_crypto_1 = require("node:crypto");
24
23
  /**
25
24
  * Environment variable for auth token
@@ -148,18 +147,4 @@ function authenticateWebSocket(req, ws) {
148
147
  }
149
148
  return true;
150
149
  }
151
- /**
152
- * Create authentication middleware for HTTP routes
153
- * @returns Middleware function
154
- */
155
- function createAuthMiddleware() {
156
- return (req, res, next) => {
157
- if (!authenticate(req)) {
158
- res.writeHead(401, { 'Content-Type': 'application/json' });
159
- res.end(JSON.stringify({ error: 'Unauthorized' }));
160
- return;
161
- }
162
- next();
163
- };
164
- }
165
150
  //# sourceMappingURL=auth.js.map
@@ -51,18 +51,6 @@ export declare function generateEmbedding(text: string, role?: EmbeddingRole): P
51
51
  * @returns 1024-dim enhanced embedding
52
52
  */
53
53
  export declare function generateEnhancedEmbedding(decision: DecisionForEmbedding, role?: EmbeddingRole): Promise<Float32Array>;
54
- /**
55
- * Batch generate embeddings (optimized)
56
- *
57
- * Task 1: Implement Batch Embedding Generation
58
- * AC #3: Target - 30ms for 10 embeddings (vs 300ms sequential)
59
- *
60
- * Strategy: Use native transformer batch processing for parallel inference
61
- *
62
- * @param texts - Array of texts to embed (max 10 per batch)
63
- * @returns Array of embeddings
64
- */
65
- export declare function generateBatchEmbeddings(texts: string[], role?: EmbeddingRole): Promise<Float32Array[]>;
66
54
  /**
67
55
  * Calculate cosine similarity between two embeddings
68
56
  *
@@ -18,7 +18,6 @@ exports.getQuantized = exports.getEmbeddingDim = exports.getModelName = exports.
18
18
  exports.prepareEmbeddingText = prepareEmbeddingText;
19
19
  exports.generateEmbedding = generateEmbedding;
20
20
  exports.generateEnhancedEmbedding = generateEnhancedEmbedding;
21
- exports.generateBatchEmbeddings = generateBatchEmbeddings;
22
21
  exports.cosineSimilarity = cosineSimilarity;
23
22
  const os_1 = __importDefault(require("os"));
24
23
  const path_1 = __importDefault(require("path"));
@@ -214,73 +213,6 @@ async function generateEnhancedEmbedding(decision, role = 'passage') {
214
213
  const enrichedText = parts.join('\n').trim();
215
214
  return generateEmbedding(enrichedText, role);
216
215
  }
217
- /**
218
- * Batch generate embeddings (optimized)
219
- *
220
- * Task 1: Implement Batch Embedding Generation
221
- * AC #3: Target - 30ms for 10 embeddings (vs 300ms sequential)
222
- *
223
- * Strategy: Use native transformer batch processing for parallel inference
224
- *
225
- * @param texts - Array of texts to embed (max 10 per batch)
226
- * @returns Array of embeddings
227
- */
228
- async function generateBatchEmbeddings(texts, role = 'passage') {
229
- if (!Array.isArray(texts) || texts.length === 0) {
230
- throw new Error('Texts must be a non-empty array');
231
- }
232
- for (const text of texts) {
233
- if (typeof text !== 'string' || text.trim().length === 0) {
234
- throw new Error('All texts must be non-empty strings');
235
- }
236
- }
237
- assertEmbeddingsEnabled();
238
- const preparedTexts = texts.map((text) => prepareEmbeddingText(text));
239
- for (const text of preparedTexts) {
240
- if (!text || text.length === 0) {
241
- throw new Error('All texts must be non-empty strings');
242
- }
243
- }
244
- const modelInputs = preparedTexts.map((t) => applyRolePrefix(t, role));
245
- const startTime = Date.now();
246
- try {
247
- const model = await loadModel();
248
- const expectedDim = (0, config_loader_js_1.getEmbeddingDim)();
249
- // Native batch processing - single model forward pass
250
- // This is significantly faster than sequential calls
251
- const outputs = await model(modelInputs, {
252
- pooling: 'mean',
253
- normalize: true,
254
- truncation: true,
255
- max_length: exports.EMBEDDING_MODEL_MAX_LENGTH,
256
- });
257
- // Extract embeddings from batch output
258
- const embeddings = [];
259
- const batchSize = texts.length;
260
- for (let i = 0; i < batchSize; i++) {
261
- // Each embedding is expectedDim consecutive elements
262
- const start = i * expectedDim;
263
- const end = start + expectedDim;
264
- const embedding = outputs.data.slice(start, end);
265
- // Verify dimensions
266
- if (embedding.length !== expectedDim) {
267
- throw new Error(`Expected ${expectedDim}-dim, got ${embedding.length}-dim at index ${i}`);
268
- }
269
- embeddings.push(embedding);
270
- }
271
- const latency = Date.now() - startTime;
272
- const avgLatency = latency / batchSize;
273
- // Log for performance tracking
274
- if (process.env.MAMA_DEBUG) {
275
- (0, debug_logger_js_1.info)(`[MAMA] Batch(${batchSize}) embeddings: ${latency}ms total (${avgLatency.toFixed(1)}ms avg)`);
276
- }
277
- return embeddings;
278
- }
279
- catch (error) {
280
- const message = error instanceof Error ? error.message : String(error);
281
- throw new Error(`Failed to generate batch embeddings: ${message}`);
282
- }
283
- }
284
216
  /**
285
217
  * Calculate cosine similarity between two embeddings
286
218
  *
@@ -56,11 +56,6 @@ export declare function computeCrossLanguageRecallAtK(goldPairs: AuditGoldPair[]
56
56
  numerator: number;
57
57
  denominator: number;
58
58
  };
59
- export declare function computeCrossLanguageRecallAt5(goldPairs: AuditGoldPair[], matches: AuditCandidateGoldLink[]): {
60
- recall: number;
61
- numerator: number;
62
- denominator: number;
63
- };
64
59
  export declare function computeCrossLanguageRecallAt10(goldPairs: AuditGoldPair[], matches: AuditCandidateGoldLink[]): {
65
60
  recall: number;
66
61
  numerator: number;
@@ -10,7 +10,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.FALSE_MERGE_HARD_CEILING = void 0;
11
11
  exports.computeFalseMergeRate = computeFalseMergeRate;
12
12
  exports.computeCrossLanguageRecallAtK = computeCrossLanguageRecallAtK;
13
- exports.computeCrossLanguageRecallAt5 = computeCrossLanguageRecallAt5;
14
13
  exports.computeCrossLanguageRecallAt10 = computeCrossLanguageRecallAt10;
15
14
  exports.computeOntologyViolationCount = computeOntologyViolationCount;
16
15
  exports.computeProjectionFragmentationRate = computeProjectionFragmentationRate;
@@ -56,9 +55,6 @@ function computeCrossLanguageRecallAtK(goldPairs, matches, k) {
56
55
  }
57
56
  return { recall: numerator / denominator, numerator, denominator };
58
57
  }
59
- function computeCrossLanguageRecallAt5(goldPairs, matches) {
60
- return computeCrossLanguageRecallAtK(goldPairs, matches, 5);
61
- }
62
58
  function computeCrossLanguageRecallAt10(goldPairs, matches) {
63
59
  return computeCrossLanguageRecallAtK(goldPairs, matches, 10);
64
60
  }
@@ -1,9 +1,8 @@
1
- import type { EntityObservation, EntityResolutionCandidate } from './types.js';
1
+ import type { EntityObservation } from './types.js';
2
2
  export declare const ENTITY_EMBEDDING_TOPN = 50;
3
3
  export interface CandidateGeneratorOptions {
4
4
  embeddingScorer?: (left: EntityObservation, right: EntityObservation) => Promise<number>;
5
5
  topN?: number;
6
6
  }
7
7
  export declare function dedupeObservationsBySource(observations: EntityObservation[]): EntityObservation[];
8
- export declare function generateResolutionCandidates(observations: EntityObservation[], options?: CandidateGeneratorOptions): Promise<EntityResolutionCandidate[]>;
9
8
  //# sourceMappingURL=candidate-generator.d.ts.map