memobank-cli 0.2.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 (128) hide show
  1. package/CHANGELOG.md +139 -0
  2. package/LICENSE +21 -0
  3. package/README.md +300 -0
  4. package/dist/cli.d.ts +7 -0
  5. package/dist/cli.d.ts.map +1 -0
  6. package/dist/cli.js +294 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/commands/capture.d.ts +12 -0
  9. package/dist/commands/capture.d.ts.map +1 -0
  10. package/dist/commands/capture.js +191 -0
  11. package/dist/commands/capture.js.map +1 -0
  12. package/dist/commands/import.d.ts +28 -0
  13. package/dist/commands/import.d.ts.map +1 -0
  14. package/dist/commands/import.js +356 -0
  15. package/dist/commands/import.js.map +1 -0
  16. package/dist/commands/index.d.ts +12 -0
  17. package/dist/commands/index.d.ts.map +1 -0
  18. package/dist/commands/index.js +82 -0
  19. package/dist/commands/index.js.map +1 -0
  20. package/dist/commands/install.d.ts +16 -0
  21. package/dist/commands/install.d.ts.map +1 -0
  22. package/dist/commands/install.js +142 -0
  23. package/dist/commands/install.js.map +1 -0
  24. package/dist/commands/lifecycle.d.ts +21 -0
  25. package/dist/commands/lifecycle.d.ts.map +1 -0
  26. package/dist/commands/lifecycle.js +106 -0
  27. package/dist/commands/lifecycle.js.map +1 -0
  28. package/dist/commands/map.d.ts +10 -0
  29. package/dist/commands/map.d.ts.map +1 -0
  30. package/dist/commands/map.js +72 -0
  31. package/dist/commands/map.js.map +1 -0
  32. package/dist/commands/onboarding.d.ts +10 -0
  33. package/dist/commands/onboarding.d.ts.map +1 -0
  34. package/dist/commands/onboarding.js +420 -0
  35. package/dist/commands/onboarding.js.map +1 -0
  36. package/dist/commands/recall.d.ts +13 -0
  37. package/dist/commands/recall.d.ts.map +1 -0
  38. package/dist/commands/recall.js +89 -0
  39. package/dist/commands/recall.js.map +1 -0
  40. package/dist/commands/review.d.ts +11 -0
  41. package/dist/commands/review.d.ts.map +1 -0
  42. package/dist/commands/review.js +66 -0
  43. package/dist/commands/review.js.map +1 -0
  44. package/dist/commands/search.d.ts +13 -0
  45. package/dist/commands/search.d.ts.map +1 -0
  46. package/dist/commands/search.js +107 -0
  47. package/dist/commands/search.js.map +1 -0
  48. package/dist/commands/setup.d.ts +9 -0
  49. package/dist/commands/setup.d.ts.map +1 -0
  50. package/dist/commands/setup.js +354 -0
  51. package/dist/commands/setup.js.map +1 -0
  52. package/dist/commands/write.d.ts +14 -0
  53. package/dist/commands/write.d.ts.map +1 -0
  54. package/dist/commands/write.js +247 -0
  55. package/dist/commands/write.js.map +1 -0
  56. package/dist/config.d.ts +19 -0
  57. package/dist/config.d.ts.map +1 -0
  58. package/dist/config.js +147 -0
  59. package/dist/config.js.map +1 -0
  60. package/dist/core/decay-engine.d.ts +16 -0
  61. package/dist/core/decay-engine.d.ts.map +1 -0
  62. package/dist/core/decay-engine.js +91 -0
  63. package/dist/core/decay-engine.js.map +1 -0
  64. package/dist/core/embedding.d.ts +60 -0
  65. package/dist/core/embedding.d.ts.map +1 -0
  66. package/dist/core/embedding.js +169 -0
  67. package/dist/core/embedding.js.map +1 -0
  68. package/dist/core/lifecycle-manager.d.ts +105 -0
  69. package/dist/core/lifecycle-manager.d.ts.map +1 -0
  70. package/dist/core/lifecycle-manager.js +332 -0
  71. package/dist/core/lifecycle-manager.js.map +1 -0
  72. package/dist/core/memory-template.d.ts +70 -0
  73. package/dist/core/memory-template.d.ts.map +1 -0
  74. package/dist/core/memory-template.js +496 -0
  75. package/dist/core/memory-template.js.map +1 -0
  76. package/dist/core/noise-filter.d.ts +39 -0
  77. package/dist/core/noise-filter.d.ts.map +1 -0
  78. package/dist/core/noise-filter.js +168 -0
  79. package/dist/core/noise-filter.js.map +1 -0
  80. package/dist/core/retriever.d.ts +21 -0
  81. package/dist/core/retriever.d.ts.map +1 -0
  82. package/dist/core/retriever.js +77 -0
  83. package/dist/core/retriever.js.map +1 -0
  84. package/dist/core/sanitizer.d.ts +9 -0
  85. package/dist/core/sanitizer.d.ts.map +1 -0
  86. package/dist/core/sanitizer.js +57 -0
  87. package/dist/core/sanitizer.js.map +1 -0
  88. package/dist/core/smart-extractor.d.ts +12 -0
  89. package/dist/core/smart-extractor.d.ts.map +1 -0
  90. package/dist/core/smart-extractor.js +102 -0
  91. package/dist/core/smart-extractor.js.map +1 -0
  92. package/dist/core/store.d.ts +40 -0
  93. package/dist/core/store.d.ts.map +1 -0
  94. package/dist/core/store.js +233 -0
  95. package/dist/core/store.js.map +1 -0
  96. package/dist/core/tool-config.d.ts +33 -0
  97. package/dist/core/tool-config.d.ts.map +1 -0
  98. package/dist/core/tool-config.js +253 -0
  99. package/dist/core/tool-config.js.map +1 -0
  100. package/dist/engines/engine-adapter.d.ts +22 -0
  101. package/dist/engines/engine-adapter.d.ts.map +1 -0
  102. package/dist/engines/engine-adapter.js +7 -0
  103. package/dist/engines/engine-adapter.js.map +1 -0
  104. package/dist/engines/lancedb-engine.d.ts +55 -0
  105. package/dist/engines/lancedb-engine.d.ts.map +1 -0
  106. package/dist/engines/lancedb-engine.js +279 -0
  107. package/dist/engines/lancedb-engine.js.map +1 -0
  108. package/dist/engines/text-engine.d.ts +30 -0
  109. package/dist/engines/text-engine.d.ts.map +1 -0
  110. package/dist/engines/text-engine.js +100 -0
  111. package/dist/engines/text-engine.js.map +1 -0
  112. package/dist/platforms/claude-code.d.ts +13 -0
  113. package/dist/platforms/claude-code.d.ts.map +1 -0
  114. package/dist/platforms/claude-code.js +85 -0
  115. package/dist/platforms/claude-code.js.map +1 -0
  116. package/dist/platforms/codex.d.ts +9 -0
  117. package/dist/platforms/codex.d.ts.map +1 -0
  118. package/dist/platforms/codex.js +102 -0
  119. package/dist/platforms/codex.js.map +1 -0
  120. package/dist/platforms/cursor.d.ts +9 -0
  121. package/dist/platforms/cursor.d.ts.map +1 -0
  122. package/dist/platforms/cursor.js +112 -0
  123. package/dist/platforms/cursor.js.map +1 -0
  124. package/dist/types.d.ts +55 -0
  125. package/dist/types.d.ts.map +1 -0
  126. package/dist/types.js +6 -0
  127. package/dist/types.js.map +1 -0
  128. package/package.json +87 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,UAAU,EAAU,MAAM,SAAS,CAAC;AAkC7C;;;GAGG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAsCvD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAetE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAStE"}
package/dist/config.js ADDED
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ /**
3
+ * Config module
4
+ * Read and write meta/config.yaml
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.loadConfig = loadConfig;
41
+ exports.writeConfig = writeConfig;
42
+ exports.initConfig = initConfig;
43
+ const fs = __importStar(require("fs"));
44
+ const path = __importStar(require("path"));
45
+ const yaml = __importStar(require("js-yaml"));
46
+ const DEFAULT_CONFIG = {
47
+ project: {
48
+ name: 'default',
49
+ description: '',
50
+ },
51
+ memory: {
52
+ token_budget: 500,
53
+ top_k: 5,
54
+ },
55
+ embedding: {
56
+ engine: 'text',
57
+ provider: 'openai',
58
+ model: 'text-embedding-3-small',
59
+ dimensions: 1536,
60
+ base_url: undefined,
61
+ },
62
+ search: {
63
+ use_tags: true,
64
+ use_summary: true,
65
+ },
66
+ review: {
67
+ enabled: true,
68
+ },
69
+ };
70
+ /**
71
+ * Get config file path
72
+ */
73
+ function getConfigPath(repoRoot) {
74
+ return path.join(repoRoot, 'meta', 'config.yaml');
75
+ }
76
+ /**
77
+ * Load config from repo root
78
+ * Falls back to defaults if file doesn't exist
79
+ */
80
+ function loadConfig(repoRoot) {
81
+ const configPath = getConfigPath(repoRoot);
82
+ if (!fs.existsSync(configPath)) {
83
+ return { ...DEFAULT_CONFIG };
84
+ }
85
+ try {
86
+ const content = fs.readFileSync(configPath, 'utf-8');
87
+ const loaded = yaml.load(content);
88
+ // Merge with defaults
89
+ return {
90
+ project: {
91
+ ...DEFAULT_CONFIG.project,
92
+ ...loaded?.project,
93
+ },
94
+ memory: {
95
+ ...DEFAULT_CONFIG.memory,
96
+ ...loaded?.memory,
97
+ },
98
+ embedding: {
99
+ ...DEFAULT_CONFIG.embedding,
100
+ ...loaded?.embedding,
101
+ },
102
+ search: {
103
+ ...DEFAULT_CONFIG.search,
104
+ ...loaded?.search,
105
+ },
106
+ review: {
107
+ ...DEFAULT_CONFIG.review,
108
+ ...loaded?.review,
109
+ },
110
+ };
111
+ }
112
+ catch (error) {
113
+ console.warn(`Could not load config: ${error.message}`);
114
+ return { ...DEFAULT_CONFIG };
115
+ }
116
+ }
117
+ /**
118
+ * Write config to repo root
119
+ */
120
+ function writeConfig(repoRoot, config) {
121
+ const configPath = getConfigPath(repoRoot);
122
+ const configDir = path.dirname(configPath);
123
+ // Ensure meta directory exists
124
+ if (!fs.existsSync(configDir)) {
125
+ fs.mkdirSync(configDir, { recursive: true });
126
+ }
127
+ try {
128
+ const content = yaml.dump(config, { indent: 2 });
129
+ fs.writeFileSync(configPath, content, 'utf-8');
130
+ }
131
+ catch (error) {
132
+ throw new Error(`Could not write config: ${error.message}`);
133
+ }
134
+ }
135
+ /**
136
+ * Initialize config with project name
137
+ */
138
+ function initConfig(repoRoot, projectName) {
139
+ const config = {
140
+ ...DEFAULT_CONFIG,
141
+ project: {
142
+ name: projectName,
143
+ },
144
+ };
145
+ writeConfig(repoRoot, config);
146
+ }
147
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Weibull decay engine for memory scoring
3
+ * Ported from memory-lancedb-pro
4
+ * Formula: score = recency_weight × frequency_weight × importance_weight
5
+ */
6
+ import { MemoryFile } from '../types';
7
+ /**
8
+ * Compute decay score for a memory (0-1)
9
+ * Based on recency, access frequency, and confidence
10
+ */
11
+ export declare function computeDecayScore(memory: MemoryFile, now?: Date): number;
12
+ /**
13
+ * Check if a memory is due for review
14
+ */
15
+ export declare function isReviewDue(memory: MemoryFile, now?: Date): boolean;
16
+ //# sourceMappingURL=decay-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decay-engine.d.ts","sourceRoot":"","sources":["../../src/core/decay-engine.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAc,MAAM,UAAU,CAAC;AAElD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,GAAE,IAAiB,GAAG,MAAM,CAYpF;AAqCD;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,GAAE,IAAiB,GAAG,OAAO,CAU/E"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ /**
3
+ * Weibull decay engine for memory scoring
4
+ * Ported from memory-lancedb-pro
5
+ * Formula: score = recency_weight × frequency_weight × importance_weight
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.computeDecayScore = computeDecayScore;
9
+ exports.isReviewDue = isReviewDue;
10
+ /**
11
+ * Compute decay score for a memory (0-1)
12
+ * Based on recency, access frequency, and confidence
13
+ */
14
+ function computeDecayScore(memory, now = new Date()) {
15
+ // 1. Recency weight: Weibull stretched-exponential decay from created date
16
+ const recencyWeight = computeRecencyWeight(memory.created, now);
17
+ // 2. Frequency weight: 1.0 for now (will be incremented by future access tracking)
18
+ const frequencyWeight = 1.0;
19
+ // 3. Importance weight: based on confidence
20
+ const importanceWeight = computeImportanceWeight(memory.confidence);
21
+ // Final score
22
+ return recencyWeight * frequencyWeight * importanceWeight;
23
+ }
24
+ /**
25
+ * Compute recency weight using Weibull stretched-exponential decay
26
+ * Returns 0-1, where 1 is most recent
27
+ */
28
+ function computeRecencyWeight(createdDate, now) {
29
+ const created = new Date(createdDate);
30
+ const daysSinceCreation = (now.getTime() - created.getTime()) / (1000 * 60 * 60 * 24);
31
+ // Weibull parameters
32
+ const k = 0.5; // shape parameter
33
+ const lambda = 90; // scale parameter (90 days half-life-ish)
34
+ // Stretched-exponential decay
35
+ const t = daysSinceCreation / lambda;
36
+ const recency = Math.exp(-Math.pow(t, k));
37
+ return Math.max(0, Math.min(1, recency));
38
+ }
39
+ /**
40
+ * Compute importance weight based on confidence
41
+ */
42
+ function computeImportanceWeight(confidence) {
43
+ switch (confidence) {
44
+ case 'high':
45
+ return 1.0;
46
+ case 'medium':
47
+ return 0.7;
48
+ case 'low':
49
+ return 0.4;
50
+ default:
51
+ return 0.5; // default for unspecified
52
+ }
53
+ }
54
+ /**
55
+ * Check if a memory is due for review
56
+ */
57
+ function isReviewDue(memory, now = new Date()) {
58
+ if (!memory.review_after) {
59
+ return false;
60
+ }
61
+ const created = new Date(memory.created);
62
+ const reviewDuration = parseReviewDuration(memory.review_after);
63
+ const reviewDate = new Date(created.getTime() + reviewDuration);
64
+ return now >= reviewDate;
65
+ }
66
+ /**
67
+ * Parse review duration string (e.g., "90d", "1w", "3m") into milliseconds
68
+ */
69
+ function parseReviewDuration(duration) {
70
+ const match = duration.match(/^(\d+)([dwmy])$/);
71
+ if (!match?.[1]) {
72
+ // Default to 90 days if format is invalid
73
+ return 90 * 24 * 60 * 60 * 1000;
74
+ }
75
+ const value = parseInt(match[1], 10);
76
+ const unit = match[2];
77
+ const msPerDay = 24 * 60 * 60 * 1000;
78
+ switch (unit) {
79
+ case 'd':
80
+ return value * msPerDay;
81
+ case 'w':
82
+ return value * 7 * msPerDay;
83
+ case 'm':
84
+ return value * 30 * msPerDay;
85
+ case 'y':
86
+ return value * 365 * msPerDay;
87
+ default:
88
+ return 90 * msPerDay;
89
+ }
90
+ }
91
+ //# sourceMappingURL=decay-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decay-engine.js","sourceRoot":"","sources":["../../src/core/decay-engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Embedding Generator
3
+ * Generates vector embeddings using OpenAI-compatible APIs
4
+ * Supports: OpenAI, Azure, Ollama, and other compatible providers
5
+ */
6
+ export type EmbeddingProvider = 'openai' | 'azure' | 'ollama' | 'custom';
7
+ export interface EmbeddingConfig {
8
+ provider: EmbeddingProvider;
9
+ model: string;
10
+ dimensions: number;
11
+ baseUrl?: string;
12
+ apiKey?: string;
13
+ }
14
+ export declare class EmbeddingGenerator {
15
+ private client;
16
+ private config;
17
+ constructor(config: EmbeddingConfig);
18
+ /**
19
+ * Get default base URL for provider
20
+ */
21
+ private getDefaultBaseUrl;
22
+ /**
23
+ * Generate embedding for a single text
24
+ * @param text - Input text to embed
25
+ * @returns Vector embedding as number array
26
+ */
27
+ generateEmbedding(text: string): Promise<number[]>;
28
+ /**
29
+ * Generate embeddings for multiple texts in batch
30
+ * @param texts - Array of input texts
31
+ * @returns Array of vector embeddings
32
+ */
33
+ generateEmbeddings(texts: string[]): Promise<number[][]>;
34
+ /**
35
+ * Get embedding dimensions by querying the model
36
+ * Useful when dimensions are unknown for custom models
37
+ */
38
+ detectDimensions(): Promise<number>;
39
+ /**
40
+ * Create embedding config from memo config
41
+ * Supports multiple providers with appropriate defaults
42
+ */
43
+ static fromMemoConfig(config: {
44
+ embedding: {
45
+ provider?: string;
46
+ model?: string;
47
+ base_url?: string;
48
+ dimensions?: number;
49
+ };
50
+ }): EmbeddingConfig | null;
51
+ /**
52
+ * Get default model for provider
53
+ */
54
+ private static getDefaultModel;
55
+ /**
56
+ * Get default dimensions for known models
57
+ */
58
+ private static getDefaultDimensions;
59
+ }
60
+ //# sourceMappingURL=embedding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedding.d.ts","sourceRoot":"","sources":["../../src/core/embedding.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEzE,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAkB;gBAEpB,MAAM,EAAE,eAAe;IAYnC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;;;OAIG;IACG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAiBxD;;;;OAIG;IACG,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAmB9D;;;OAGG;IACG,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IASzC;;;OAGG;IACH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE;QAC5B,SAAS,EAAE;YACT,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,UAAU,CAAC,EAAE,MAAM,CAAC;SACrB,CAAC;KACH,GAAG,eAAe,GAAG,IAAI;IAmC1B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAW9B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;CA4BpC"}
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ /**
3
+ * Embedding Generator
4
+ * Generates vector embeddings using OpenAI-compatible APIs
5
+ * Supports: OpenAI, Azure, Ollama, and other compatible providers
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.EmbeddingGenerator = void 0;
9
+ const openai_1 = require("openai");
10
+ class EmbeddingGenerator {
11
+ client;
12
+ config;
13
+ constructor(config) {
14
+ this.config = config;
15
+ // Ollama typically uses empty string or 'ollama' as API key
16
+ const apiKey = config.apiKey || (config.provider === 'ollama' ? 'ollama' : '');
17
+ this.client = new openai_1.OpenAI({
18
+ apiKey,
19
+ baseURL: config.baseUrl || this.getDefaultBaseUrl(config.provider),
20
+ });
21
+ }
22
+ /**
23
+ * Get default base URL for provider
24
+ */
25
+ getDefaultBaseUrl(provider) {
26
+ switch (provider) {
27
+ case 'ollama':
28
+ return 'http://localhost:11434/v1';
29
+ case 'azure':
30
+ return 'https://api.openai.com/v1'; // Azure uses different format
31
+ default:
32
+ return 'https://api.openai.com/v1';
33
+ }
34
+ }
35
+ /**
36
+ * Generate embedding for a single text
37
+ * @param text - Input text to embed
38
+ * @returns Vector embedding as number array
39
+ */
40
+ async generateEmbedding(text) {
41
+ try {
42
+ const response = await this.client.embeddings.create({
43
+ model: this.config.model,
44
+ input: text,
45
+ });
46
+ const embedding = response.data?.[0]?.embedding;
47
+ if (!embedding) {
48
+ throw new Error('No embedding returned');
49
+ }
50
+ return embedding;
51
+ }
52
+ catch (error) {
53
+ throw new Error(`Failed to generate embedding: ${error.message}`);
54
+ }
55
+ }
56
+ /**
57
+ * Generate embeddings for multiple texts in batch
58
+ * @param texts - Array of input texts
59
+ * @returns Array of vector embeddings
60
+ */
61
+ async generateEmbeddings(texts) {
62
+ if (texts.length === 0) {
63
+ return [];
64
+ }
65
+ try {
66
+ const response = await this.client.embeddings.create({
67
+ model: this.config.model,
68
+ input: texts,
69
+ });
70
+ // Sort by index to ensure order matches input
71
+ const sorted = response.data.sort((a, b) => a.index - b.index);
72
+ return sorted.map((item) => item.embedding);
73
+ }
74
+ catch (error) {
75
+ throw new Error(`Failed to generate embeddings: ${error.message}`);
76
+ }
77
+ }
78
+ /**
79
+ * Get embedding dimensions by querying the model
80
+ * Useful when dimensions are unknown for custom models
81
+ */
82
+ async detectDimensions() {
83
+ try {
84
+ const embedding = await this.generateEmbedding('test');
85
+ return embedding.length;
86
+ }
87
+ catch (error) {
88
+ throw new Error(`Failed to detect dimensions: ${error.message}`);
89
+ }
90
+ }
91
+ /**
92
+ * Create embedding config from memo config
93
+ * Supports multiple providers with appropriate defaults
94
+ */
95
+ static fromMemoConfig(config) {
96
+ const { embedding } = config;
97
+ const provider = embedding.provider || 'openai';
98
+ // Get API key based on provider
99
+ let apiKey;
100
+ if (provider === 'ollama') {
101
+ // Ollama doesn't require an API key
102
+ apiKey = undefined;
103
+ }
104
+ else {
105
+ // OpenAI, Azure, etc. need API key from environment
106
+ apiKey = process.env.OPENAI_API_KEY || process.env.AZURE_API_KEY;
107
+ if (!apiKey && provider !== 'custom') {
108
+ return null;
109
+ }
110
+ }
111
+ // Get model with provider-specific defaults
112
+ const model = embedding.model || EmbeddingGenerator.getDefaultModel(provider);
113
+ // Get dimensions - either from config or detect automatically later
114
+ let dimensions = embedding.dimensions;
115
+ if (!dimensions) {
116
+ dimensions = EmbeddingGenerator.getDefaultDimensions(model);
117
+ }
118
+ return {
119
+ provider,
120
+ model,
121
+ dimensions,
122
+ baseUrl: embedding.base_url,
123
+ apiKey,
124
+ };
125
+ }
126
+ /**
127
+ * Get default model for provider
128
+ */
129
+ static getDefaultModel(provider) {
130
+ switch (provider) {
131
+ case 'ollama':
132
+ return 'mxbai-embed-large'; // Popular Ollama embedding model
133
+ case 'azure':
134
+ return 'text-embedding-ada-002';
135
+ default:
136
+ return 'text-embedding-3-small';
137
+ }
138
+ }
139
+ /**
140
+ * Get default dimensions for known models
141
+ */
142
+ static getDefaultDimensions(model) {
143
+ const modelDimensions = {
144
+ // OpenAI
145
+ 'text-embedding-3-small': 1536,
146
+ 'text-embedding-3-large': 3072,
147
+ 'text-embedding-ada-002': 1536,
148
+ // Ollama popular models
149
+ 'mxbai-embed-large': 1024,
150
+ 'nomic-embed-text': 768,
151
+ 'all-minilm': 384,
152
+ 'all-mpnet-base-v2': 768,
153
+ };
154
+ // Try exact match first
155
+ if (modelDimensions[model]) {
156
+ return modelDimensions[model];
157
+ }
158
+ // Try partial match
159
+ for (const [key, dim] of Object.entries(modelDimensions)) {
160
+ if (model.includes(key)) {
161
+ return dim;
162
+ }
163
+ }
164
+ // Default fallback
165
+ return 1536;
166
+ }
167
+ }
168
+ exports.EmbeddingGenerator = EmbeddingGenerator;
169
+ //# sourceMappingURL=embedding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedding.js","sourceRoot":"","sources":["../../src/core/embedding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Memory Lifecycle Manager
3
+ * Handles memory promotion, demotion, archival, and correction
4
+ * Ported and adapted from memory-lancedb-pro
5
+ */
6
+ import { MemoryFile } from '../types';
7
+ /**
8
+ * Memory tiers based on usage and importance
9
+ */
10
+ export type MemoryTier = 'core' | 'working' | 'peripheral';
11
+ /**
12
+ * Access log for tracking memory usage
13
+ */
14
+ export interface AccessLog {
15
+ memoryPath: string;
16
+ lastAccessed: Date;
17
+ accessCount: number;
18
+ recallQueries: string[];
19
+ }
20
+ /**
21
+ * Lifecycle configuration
22
+ */
23
+ export interface LifecycleConfig {
24
+ coreThreshold: number;
25
+ peripheralThreshold: number;
26
+ archiveAfterDays: number;
27
+ deleteAfterDays: number;
28
+ allowCorrections: boolean;
29
+ correctionThreshold: number;
30
+ }
31
+ /**
32
+ * Load access logs
33
+ */
34
+ export declare function loadAccessLogs(repoRoot: string): Record<string, AccessLog>;
35
+ /**
36
+ * Save access logs
37
+ */
38
+ export declare function saveAccessLogs(repoRoot: string, logs: Record<string, AccessLog>): void;
39
+ /**
40
+ * Record memory access
41
+ */
42
+ export declare function recordAccess(repoRoot: string, memoryPath: string, query?: string): AccessLog;
43
+ /**
44
+ * Get memory tier based on access patterns
45
+ */
46
+ export declare function getMemoryTier(memory: MemoryFile, accessLog?: AccessLog, config?: LifecycleConfig): MemoryTier;
47
+ /**
48
+ * Analyze memory lifecycle for all memories
49
+ */
50
+ export interface LifecycleAnalysis {
51
+ memory: MemoryFile;
52
+ tier: MemoryTier;
53
+ accessCount: number;
54
+ daysSinceAccess: number | null;
55
+ isArchivalCandidate: boolean;
56
+ isDeletionCandidate: boolean;
57
+ suggestion?: string;
58
+ }
59
+ export declare function analyzeLifecycle(repoRoot: string, config?: LifecycleConfig): LifecycleAnalysis[];
60
+ /**
61
+ * Correction record for tracking memory corrections
62
+ */
63
+ export interface CorrectionRecord {
64
+ memoryPath: string;
65
+ corrections: Array<{
66
+ date: string;
67
+ originalText: string;
68
+ correctedText: string;
69
+ reason: string;
70
+ }>;
71
+ flaggedForReview: boolean;
72
+ }
73
+ /**
74
+ * Load corrections log
75
+ */
76
+ export declare function loadCorrections(repoRoot: string): Record<string, CorrectionRecord>;
77
+ /**
78
+ * Save corrections log
79
+ */
80
+ export declare function saveCorrections(repoRoot: string, corrections: Record<string, CorrectionRecord>): void;
81
+ /**
82
+ * Record a memory correction
83
+ */
84
+ export declare function recordCorrection(repoRoot: string, memoryPath: string, originalText: string, correctedText: string, reason: string): CorrectionRecord;
85
+ /**
86
+ * Get memories flagged for review
87
+ */
88
+ export declare function getFlaggedMemories(repoRoot: string): MemoryFile[];
89
+ /**
90
+ * Archive a memory (move to archive directory)
91
+ */
92
+ export declare function archiveMemory(repoRoot: string, memoryPath: string): void;
93
+ /**
94
+ * Delete a memory permanently
95
+ */
96
+ export declare function deleteMemory(repoRoot: string, memoryPath: string): void;
97
+ /**
98
+ * Update memory content (correction)
99
+ */
100
+ export declare function updateMemory(repoRoot: string, memoryPath: string, updates: Partial<MemoryFile>): void;
101
+ /**
102
+ * Generate lifecycle report
103
+ */
104
+ export declare function generateLifecycleReport(repoRoot: string, config?: LifecycleConfig): string;
105
+ //# sourceMappingURL=lifecycle-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle-manager.d.ts","sourceRoot":"","sources":["../../src/core/lifecycle-manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,UAAU,EAA0B,MAAM,UAAU,CAAC;AAG9D;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,YAAY,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,IAAI,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAE9B,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAG5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IAGxB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAyBD;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAqB1E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI,CAStF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,GACb,SAAS,CA0BX;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,UAAU,EAClB,SAAS,CAAC,EAAE,SAAS,EACrB,MAAM,GAAE,eAAgC,GACvC,UAAU,CAoBZ;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,eAAgC,GACvC,iBAAiB,EAAE,CAmCrB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,KAAK,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAalF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAAG,IAAI,CASrG;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,GACb,gBAAgB,CA0BlB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,EAAE,CAWjE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAWxE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAGvE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAC3B,IAAI,CAuBN;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,eAAgC,GACvC,MAAM,CAqCR"}