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,9 @@
1
+ /**
2
+ * Cursor platform install helper
3
+ * Writes memobank.mdc to .cursor/rules/
4
+ */
5
+ /**
6
+ * Install memobank for Cursor
7
+ */
8
+ export declare function installCursor(cwd: string): Promise<boolean>;
9
+ //# sourceMappingURL=cursor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/platforms/cursor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA2CH;;GAEG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA8BjE"}
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ /**
3
+ * Cursor platform install helper
4
+ * Writes memobank.mdc to .cursor/rules/
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.installCursor = installCursor;
41
+ const fs = __importStar(require("fs"));
42
+ const path = __importStar(require("path"));
43
+ const MEMOBANK_RULE = `---
44
+ description: memobank memory protocol
45
+ globs: ["**/*"]
46
+ alwaysApply: false
47
+ ---
48
+
49
+ # Memory Protocol
50
+
51
+ This project uses memobank for persistent memory.
52
+
53
+ ## Before Starting Work
54
+
55
+ Recall relevant project context:
56
+
57
+ \`\`\`bash
58
+ memo recall "project context"
59
+ \`\`\`
60
+
61
+ ## After Finishing Work
62
+
63
+ Capture learnings and insights:
64
+
65
+ \`\`\`bash
66
+ memo capture --auto
67
+ \`\`\`
68
+
69
+ ## Useful Commands
70
+
71
+ - \`memo recall <query>\` - Search and display relevant memories
72
+ - \`memo search <query>\` - Debug search without updating MEMORY.md
73
+ - \`memo write <type>\` - Manually create a new memory
74
+ - \`memo capture\` - Extract memories from session text
75
+ - \`memo map\` - Show memory summary
76
+ - \`memo review\` - List memories due for review
77
+
78
+ For more information, run: \`memo --help\`
79
+ `;
80
+ /**
81
+ * Install memobank for Cursor
82
+ */
83
+ async function installCursor(cwd) {
84
+ const cursorDir = path.join(cwd, '.cursor', 'rules');
85
+ // Ensure .cursor/rules directory exists
86
+ if (!fs.existsSync(cursorDir)) {
87
+ try {
88
+ fs.mkdirSync(cursorDir, { recursive: true });
89
+ }
90
+ catch (error) {
91
+ console.error(`Could not create .cursor/rules: ${error.message}`);
92
+ return false;
93
+ }
94
+ }
95
+ const rulePath = path.join(cursorDir, 'memobank.mdc');
96
+ // Check if already exists
97
+ if (fs.existsSync(rulePath)) {
98
+ console.log('⊘ Cursor: memobank.mdc already exists');
99
+ return true;
100
+ }
101
+ // Write rule file
102
+ try {
103
+ fs.writeFileSync(rulePath, MEMOBANK_RULE, 'utf-8');
104
+ console.log(`✓ Cursor: memobank.mdc created`);
105
+ return true;
106
+ }
107
+ catch (error) {
108
+ console.error(`Could not write memobank.mdc: ${error.message}`);
109
+ return false;
110
+ }
111
+ }
112
+ //# sourceMappingURL=cursor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/platforms/cursor.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CH,sCA8BC;AA1ED,uCAAyB;AACzB,2CAA6B;AAE7B,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCrB,CAAC;AAEF;;GAEG;AACI,KAAK,UAAU,aAAa,CAAC,GAAW;IAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAErD,wCAAwC;IACxC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,mCAAoC,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7E,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAEtD,0BAA0B;IAC1B,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kBAAkB;IAClB,IAAI,CAAC;QACH,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,iCAAkC,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3E,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Shared TypeScript interfaces for memobank-cli
3
+ */
4
+ export type MemoryType = 'lesson' | 'decision' | 'workflow' | 'architecture';
5
+ export type Engine = 'text' | 'lancedb';
6
+ export type Confidence = 'low' | 'medium' | 'high';
7
+ export interface MemoryFile {
8
+ path: string;
9
+ name: string;
10
+ type: MemoryType;
11
+ description: string;
12
+ tags: string[];
13
+ created: string;
14
+ updated?: string;
15
+ review_after?: string;
16
+ confidence?: Confidence;
17
+ content: string;
18
+ }
19
+ export interface RecallResult {
20
+ memory: MemoryFile;
21
+ score: number;
22
+ }
23
+ export interface MemoConfig {
24
+ project: {
25
+ name: string;
26
+ description?: string;
27
+ };
28
+ memory: {
29
+ token_budget: number;
30
+ top_k: number;
31
+ };
32
+ embedding: {
33
+ engine: Engine;
34
+ provider?: string;
35
+ model?: string;
36
+ base_url?: string;
37
+ dimensions?: number;
38
+ };
39
+ search: {
40
+ use_tags: boolean;
41
+ use_summary: boolean;
42
+ };
43
+ review: {
44
+ enabled: boolean;
45
+ };
46
+ }
47
+ export interface ExtractionResult {
48
+ name: string;
49
+ type: MemoryType;
50
+ description: string;
51
+ tags: string[];
52
+ confidence: Confidence;
53
+ content: string;
54
+ }
55
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,cAAc,CAAC;AAC7E,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AACxC,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEnD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,MAAM,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,SAAS,EAAE;QACT,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,MAAM,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAE,CAAC;IACpD,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB"}
package/dist/types.js ADDED
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * Shared TypeScript interfaces for memobank-cli
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
package/package.json ADDED
@@ -0,0 +1,87 @@
1
+ {
2
+ "name": "memobank-cli",
3
+ "version": "0.2.0",
4
+ "description": "Persistent memory for AI coding sessions — Git-native, human-readable, safe to share",
5
+ "main": "./dist/cli.js",
6
+ "bin": {
7
+ "memo": "./dist/cli.js"
8
+ },
9
+ "scripts": {
10
+ "build": "tsc",
11
+ "dev": "ts-node src/cli.ts",
12
+ "prepublishOnly": "npm run build",
13
+ "test": "NODE_OPTIONS=--experimental-vm-modules jest",
14
+ "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch",
15
+ "test:coverage": "NODE_OPTIONS=--experimental-vm-modules jest --coverage",
16
+ "lint": "eslint src/**/*.ts",
17
+ "lint:fix": "eslint src/**/*.ts --fix",
18
+ "format": "prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"",
19
+ "format:check": "prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"",
20
+ "typecheck": "tsc --noEmit"
21
+ },
22
+ "keywords": [
23
+ "memory",
24
+ "ai",
25
+ "cli",
26
+ "memobank",
27
+ "claude-code",
28
+ "cursor",
29
+ "llm",
30
+ "knowledge-base",
31
+ "documentation"
32
+ ],
33
+ "author": {
34
+ "name": "Memobank Project",
35
+ "url": "https://github.com/clawde-agent/memobank-cli"
36
+ },
37
+ "license": "MIT",
38
+ "repository": {
39
+ "type": "git",
40
+ "url": "git+https://github.com/clawde-agent/memobank-cli.git"
41
+ },
42
+ "bugs": {
43
+ "url": "https://github.com/clawde-agent/memobank-cli/issues"
44
+ },
45
+ "homepage": "https://github.com/clawde-agent/memobank-cli#readme",
46
+ "dependencies": {
47
+ "chalk": "^5.3.0",
48
+ "commander": "^12.0.0",
49
+ "glob": "^10.3.10",
50
+ "gray-matter": "^4.0.3",
51
+ "ink": "^6.8.0",
52
+ "ink-select-input": "^6.2.0",
53
+ "ink-text-input": "^6.0.0",
54
+ "js-yaml": "^4.1.0",
55
+ "react": "^19.2.4"
56
+ },
57
+ "devDependencies": {
58
+ "@types/jest": "^29.5.14",
59
+ "@types/js-yaml": "^4.0.9",
60
+ "@types/node": "^20.10.6",
61
+ "@typescript-eslint/eslint-plugin": "^7.18.0",
62
+ "@typescript-eslint/parser": "^7.18.0",
63
+ "eslint": "^8.57.1",
64
+ "jest": "^29.7.0",
65
+ "prettier": "^3.8.1",
66
+ "ts-jest": "^29.4.6",
67
+ "ts-node": "^10.9.2",
68
+ "typescript": "^5.3.3"
69
+ },
70
+ "optionalDependencies": {
71
+ "@lancedb/core": "^0.15.0",
72
+ "@lancedb/lancedb": "^0.15.0",
73
+ "openai": "^4.104.0"
74
+ },
75
+ "engines": {
76
+ "node": ">=18.0.0"
77
+ },
78
+ "files": [
79
+ "dist",
80
+ "README.md",
81
+ "LICENSE",
82
+ "CHANGELOG.md"
83
+ ],
84
+ "publishConfig": {
85
+ "access": "public"
86
+ }
87
+ }