mycelicmemory 1.2.2
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/LICENSE +21 -0
- package/README.md +301 -0
- package/bin/mycelicmemory +210 -0
- package/package.json +47 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 MycelicMemory
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
# MyclicMemory
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<strong>AI-powered persistent memory system for Claude and other AI agents</strong>
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<a href="#installation">Installation</a> •
|
|
9
|
+
<a href="#connect-to-claude">Connect to Claude</a> •
|
|
10
|
+
<a href="#features">Features</a> •
|
|
11
|
+
<a href="#optional-ai-features">AI Features</a>
|
|
12
|
+
</p>
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
MyclicMemory gives Claude persistent memory across conversations. Store knowledge, search semantically, and get AI-powered insights from your memories.
|
|
17
|
+
|
|
18
|
+
**Free and open source** - no license keys, no subscriptions.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Installation
|
|
23
|
+
|
|
24
|
+
### Prerequisites
|
|
25
|
+
|
|
26
|
+
**Required:**
|
|
27
|
+
- **Node.js 18+** (includes npm)
|
|
28
|
+
|
|
29
|
+
**Optional (for enhanced AI features):**
|
|
30
|
+
- **Ollama** - For semantic search and AI analysis
|
|
31
|
+
|
|
32
|
+
### Install via npm
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
npm install -g mycelicmemory
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**Important:** After installation, run `mycelicmemory` once to download the platform-specific binary:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
mycelicmemory --version
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
The first run automatically downloads and caches the binary for your system (macOS, Linux, or Windows).
|
|
45
|
+
|
|
46
|
+
### Alternative: Install from GitHub
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
npm install -g github:MycelicMemory/mycelicmemory
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Verify Installation
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
mycelicmemory --version # Should show version
|
|
56
|
+
mycelicmemory doctor # Check system dependencies
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Connect to Claude
|
|
62
|
+
|
|
63
|
+
### Claude Code (CLI)
|
|
64
|
+
|
|
65
|
+
Edit `~/.claude/mcp.json`:
|
|
66
|
+
|
|
67
|
+
```json
|
|
68
|
+
{
|
|
69
|
+
"mcpServers": {
|
|
70
|
+
"mycelicmemory": {
|
|
71
|
+
"command": "mycelicmemory",
|
|
72
|
+
"args": ["--mcp"]
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Restart Claude Code:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
claude
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Claude Desktop
|
|
85
|
+
|
|
86
|
+
Edit your config file:
|
|
87
|
+
|
|
88
|
+
| Platform | Location |
|
|
89
|
+
|----------|----------|
|
|
90
|
+
| macOS | `~/Library/Application Support/Claude/claude_desktop_config.json` |
|
|
91
|
+
| Windows | `%APPDATA%\Claude\claude_desktop_config.json` |
|
|
92
|
+
| Linux | `~/.config/Claude/claude_desktop_config.json` |
|
|
93
|
+
|
|
94
|
+
Add:
|
|
95
|
+
|
|
96
|
+
```json
|
|
97
|
+
{
|
|
98
|
+
"mcpServers": {
|
|
99
|
+
"mycelicmemory": {
|
|
100
|
+
"command": "mycelicmemory",
|
|
101
|
+
"args": ["--mcp"]
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Restart Claude Desktop.
|
|
108
|
+
|
|
109
|
+
### Test It Works
|
|
110
|
+
|
|
111
|
+
Ask Claude:
|
|
112
|
+
- "Remember that mycelicmemory is now working"
|
|
113
|
+
- "What memories do I have?"
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Features
|
|
118
|
+
|
|
119
|
+
### Memory Operations
|
|
120
|
+
|
|
121
|
+
| Tool | Description |
|
|
122
|
+
|------|-------------|
|
|
123
|
+
| `store_memory` | Save memories with importance (1-10), tags, and domain |
|
|
124
|
+
| `search` | Semantic, keyword, tag, or hybrid search |
|
|
125
|
+
| `get_memory_by_id` | Retrieve specific memory by UUID |
|
|
126
|
+
| `update_memory` | Modify content, importance, or tags |
|
|
127
|
+
| `delete_memory` | Remove a memory permanently |
|
|
128
|
+
|
|
129
|
+
### AI Analysis (requires Ollama)
|
|
130
|
+
|
|
131
|
+
| Tool | Description |
|
|
132
|
+
|------|-------------|
|
|
133
|
+
| `analysis(question)` | Ask natural language questions about your memories |
|
|
134
|
+
| `analysis(summarize)` | Generate summaries across timeframes |
|
|
135
|
+
| `analysis(analyze)` | Detect patterns and themes |
|
|
136
|
+
|
|
137
|
+
### Knowledge Organization
|
|
138
|
+
|
|
139
|
+
| Tool | Description |
|
|
140
|
+
|------|-------------|
|
|
141
|
+
| `relationships` | Create/discover connections between memories |
|
|
142
|
+
| `categories` | Organize memories hierarchically |
|
|
143
|
+
| `domains` | Group by knowledge domain |
|
|
144
|
+
| `sessions` | Track memories by session |
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Optional: AI Features
|
|
149
|
+
|
|
150
|
+
MyclicMemory works without AI services, but semantic search and AI-powered analysis require **Ollama**.
|
|
151
|
+
|
|
152
|
+
### Install Ollama
|
|
153
|
+
|
|
154
|
+
**macOS:**
|
|
155
|
+
```bash
|
|
156
|
+
brew install ollama
|
|
157
|
+
ollama serve
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
**Linux:**
|
|
161
|
+
```bash
|
|
162
|
+
curl -fsSL https://ollama.ai/install.sh | sh
|
|
163
|
+
ollama serve
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
**Windows:**
|
|
167
|
+
Download from [ollama.ai](https://ollama.ai/download)
|
|
168
|
+
|
|
169
|
+
### Download Models
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
ollama pull nomic-embed-text # For semantic search
|
|
173
|
+
ollama pull qwen2.5:3b # For AI analysis
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Verify
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
mycelicmemory doctor
|
|
180
|
+
# Should show: Ollama: Available
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## CLI Usage
|
|
186
|
+
|
|
187
|
+
MyclicMemory also works as a standalone CLI:
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
# Store memories
|
|
191
|
+
mycelicmemory remember "Go interfaces are satisfied implicitly"
|
|
192
|
+
mycelicmemory remember "Important!" --importance 9 --tags learning,go
|
|
193
|
+
|
|
194
|
+
# Search
|
|
195
|
+
mycelicmemory search "concurrency patterns"
|
|
196
|
+
|
|
197
|
+
# AI analysis (requires Ollama)
|
|
198
|
+
mycelicmemory analyze "What have I learned about testing?"
|
|
199
|
+
|
|
200
|
+
# Service management
|
|
201
|
+
mycelicmemory start # Start REST API daemon
|
|
202
|
+
mycelicmemory stop # Stop daemon
|
|
203
|
+
mycelicmemory doctor # Health check
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## Configuration
|
|
209
|
+
|
|
210
|
+
Config file: `~/.mycelicmemory/config.yaml`
|
|
211
|
+
|
|
212
|
+
```yaml
|
|
213
|
+
database:
|
|
214
|
+
path: ~/.mycelicmemory/memories.db
|
|
215
|
+
|
|
216
|
+
rest_api:
|
|
217
|
+
port: 3099
|
|
218
|
+
host: localhost
|
|
219
|
+
|
|
220
|
+
ollama:
|
|
221
|
+
enabled: true
|
|
222
|
+
base_url: http://localhost:11434
|
|
223
|
+
embedding_model: nomic-embed-text
|
|
224
|
+
chat_model: qwen2.5:3b
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## Build from Source
|
|
230
|
+
|
|
231
|
+
If you prefer to build from source (requires Go 1.23+ and a C compiler):
|
|
232
|
+
|
|
233
|
+
```bash
|
|
234
|
+
git clone https://github.com/MycelicMemory/mycelicmemory.git
|
|
235
|
+
cd mycelicmemory
|
|
236
|
+
make deps && make build && make install
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup.
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## Troubleshooting
|
|
244
|
+
|
|
245
|
+
### "command not found: mycelicmemory"
|
|
246
|
+
|
|
247
|
+
Ensure npm global bin is in your PATH:
|
|
248
|
+
|
|
249
|
+
```bash
|
|
250
|
+
npm bin -g
|
|
251
|
+
# Add this directory to your PATH
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
### MCP Not Available in Claude
|
|
255
|
+
|
|
256
|
+
```bash
|
|
257
|
+
# Verify installation
|
|
258
|
+
which mycelicmemory
|
|
259
|
+
mycelicmemory --version
|
|
260
|
+
|
|
261
|
+
# Test MCP mode
|
|
262
|
+
echo '{"jsonrpc":"2.0","id":1,"method":"initialize"}' | mycelicmemory --mcp
|
|
263
|
+
|
|
264
|
+
# Validate config
|
|
265
|
+
cat ~/.claude/mcp.json | python3 -m json.tool
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
### macOS Security Warning
|
|
269
|
+
|
|
270
|
+
If macOS blocks the binary:
|
|
271
|
+
1. Go to System Preferences > Security & Privacy > General
|
|
272
|
+
2. Click "Allow Anyway" next to the mycelicmemory message
|
|
273
|
+
|
|
274
|
+
### Full Diagnostics
|
|
275
|
+
|
|
276
|
+
```bash
|
|
277
|
+
mycelicmemory doctor
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
## Documentation
|
|
283
|
+
|
|
284
|
+
- [Quick Start Guide](docs/QUICKSTART.md)
|
|
285
|
+
- [Use Cases](docs/USE_CASES.md) - 15 detailed examples
|
|
286
|
+
- [Hooks Setup](docs/HOOKS.md) - Automatic memory capture
|
|
287
|
+
- [Contributing](CONTRIBUTING.md)
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## License
|
|
292
|
+
|
|
293
|
+
MIT License - Free and open source.
|
|
294
|
+
|
|
295
|
+
---
|
|
296
|
+
|
|
297
|
+
## Links
|
|
298
|
+
|
|
299
|
+
- **Repository**: [github.com/MycelicMemory/mycelicmemory](https://github.com/MycelicMemory/mycelicmemory)
|
|
300
|
+
- **Issues**: [GitHub Issues](https://github.com/MycelicMemory/mycelicmemory/issues)
|
|
301
|
+
- **npm**: [npmjs.com/package/mycelicmemory](https://npmjs.com/package/mycelicmemory)
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* MyclicMemory CLI - AI-powered persistent memory system
|
|
5
|
+
* Self-contained entry point that downloads the binary on first run
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
const { spawn, execSync } = require('child_process');
|
|
9
|
+
const path = require('path');
|
|
10
|
+
const os = require('os');
|
|
11
|
+
const fs = require('fs');
|
|
12
|
+
const https = require('https');
|
|
13
|
+
const http = require('http');
|
|
14
|
+
const { URL } = require('url');
|
|
15
|
+
|
|
16
|
+
const VERSION = '1.2.2';
|
|
17
|
+
const GITHUB_OWNER = 'MycelicMemory';
|
|
18
|
+
const GITHUB_REPO = 'mycelicmemory';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Get the binary filename for the current platform
|
|
22
|
+
*/
|
|
23
|
+
function getBinaryName() {
|
|
24
|
+
const platform = os.platform();
|
|
25
|
+
const arch = os.arch();
|
|
26
|
+
|
|
27
|
+
const names = {
|
|
28
|
+
'darwin-arm64': 'mycelicmemory-macos-arm64',
|
|
29
|
+
'darwin-x64': 'mycelicmemory-macos-x64',
|
|
30
|
+
'linux-arm64': 'mycelicmemory-linux-arm64',
|
|
31
|
+
'linux-x64': 'mycelicmemory-linux-x64',
|
|
32
|
+
'win32-x64': 'mycelicmemory-windows-x64.exe',
|
|
33
|
+
'win32-arm64': 'mycelicmemory-windows-x64.exe',
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const key = `${platform}-${arch}`;
|
|
37
|
+
const name = names[key];
|
|
38
|
+
|
|
39
|
+
if (!name) {
|
|
40
|
+
console.error(`Unsupported platform: ${key}`);
|
|
41
|
+
console.error('Supported: darwin-arm64, darwin-x64, linux-arm64, linux-x64, win32-x64');
|
|
42
|
+
process.exit(1);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return name;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Get the bin directory (same as this script's directory)
|
|
50
|
+
*/
|
|
51
|
+
function getBinDir() {
|
|
52
|
+
return __dirname;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Get full path to the binary
|
|
57
|
+
*/
|
|
58
|
+
function getBinaryPath() {
|
|
59
|
+
return path.join(getBinDir(), getBinaryName());
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Download a file with redirect support
|
|
64
|
+
*/
|
|
65
|
+
function downloadFile(url, dest, maxRedirects = 10) {
|
|
66
|
+
return new Promise((resolve, reject) => {
|
|
67
|
+
if (maxRedirects <= 0) {
|
|
68
|
+
reject(new Error('Too many redirects'));
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const parsedUrl = new URL(url);
|
|
73
|
+
const protocol = parsedUrl.protocol === 'https:' ? https : http;
|
|
74
|
+
|
|
75
|
+
const request = protocol.get(url, {
|
|
76
|
+
headers: {
|
|
77
|
+
'User-Agent': `mycelicmemory/${VERSION}`,
|
|
78
|
+
'Accept': 'application/octet-stream'
|
|
79
|
+
}
|
|
80
|
+
}, (response) => {
|
|
81
|
+
if (response.statusCode >= 300 && response.statusCode < 400 && response.headers.location) {
|
|
82
|
+
const redirectUrl = new URL(response.headers.location, url).toString();
|
|
83
|
+
downloadFile(redirectUrl, dest, maxRedirects - 1).then(resolve).catch(reject);
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
if (response.statusCode !== 200) {
|
|
88
|
+
reject(new Error(`HTTP ${response.statusCode}: ${response.statusMessage}`));
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const file = fs.createWriteStream(dest);
|
|
93
|
+
let downloadedBytes = 0;
|
|
94
|
+
const totalBytes = parseInt(response.headers['content-length'], 10) || 0;
|
|
95
|
+
|
|
96
|
+
response.on('data', (chunk) => {
|
|
97
|
+
downloadedBytes += chunk.length;
|
|
98
|
+
if (totalBytes > 0 && process.stdout.isTTY) {
|
|
99
|
+
const percent = Math.round((downloadedBytes / totalBytes) * 100);
|
|
100
|
+
process.stdout.write(`\rDownloading... ${percent}%`);
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
response.pipe(file);
|
|
105
|
+
|
|
106
|
+
file.on('finish', () => {
|
|
107
|
+
file.close();
|
|
108
|
+
if (process.stdout.isTTY) process.stdout.write('\n');
|
|
109
|
+
resolve();
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
file.on('error', (err) => {
|
|
113
|
+
fs.unlink(dest, () => {});
|
|
114
|
+
reject(err);
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
request.on('error', reject);
|
|
119
|
+
request.setTimeout(120000, () => {
|
|
120
|
+
request.destroy();
|
|
121
|
+
reject(new Error('Download timeout'));
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Verify the downloaded binary
|
|
128
|
+
*/
|
|
129
|
+
function verifyBinary(binaryPath) {
|
|
130
|
+
const stats = fs.statSync(binaryPath);
|
|
131
|
+
if (stats.size < 1000000) {
|
|
132
|
+
throw new Error('Binary too small, download may have failed');
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
if (os.platform() !== 'win32') {
|
|
136
|
+
fs.chmodSync(binaryPath, 0o755);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
try {
|
|
140
|
+
execSync(`"${binaryPath}" --version`, { encoding: 'utf8', timeout: 10000, stdio: 'pipe' });
|
|
141
|
+
} catch (err) {
|
|
142
|
+
if (os.platform() === 'darwin') {
|
|
143
|
+
console.log('Note: On macOS, allow the binary in System Preferences > Security');
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Download binary if not present
|
|
150
|
+
*/
|
|
151
|
+
async function ensureBinary() {
|
|
152
|
+
const binaryPath = getBinaryPath();
|
|
153
|
+
|
|
154
|
+
if (fs.existsSync(binaryPath)) {
|
|
155
|
+
return binaryPath;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
console.log(`Downloading mycelicmemory for ${os.platform()}-${os.arch()}...`);
|
|
159
|
+
|
|
160
|
+
const binaryName = getBinaryName();
|
|
161
|
+
const urls = [
|
|
162
|
+
`https://github.com/${GITHUB_OWNER}/${GITHUB_REPO}/releases/download/v${VERSION}/${binaryName}`,
|
|
163
|
+
`https://github.com/${GITHUB_OWNER}/${GITHUB_REPO}/releases/latest/download/${binaryName}`
|
|
164
|
+
];
|
|
165
|
+
|
|
166
|
+
for (const url of urls) {
|
|
167
|
+
try {
|
|
168
|
+
await downloadFile(url, binaryPath);
|
|
169
|
+
verifyBinary(binaryPath);
|
|
170
|
+
console.log('Download complete!');
|
|
171
|
+
return binaryPath;
|
|
172
|
+
} catch (err) {
|
|
173
|
+
if (fs.existsSync(binaryPath)) fs.unlinkSync(binaryPath);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
console.error('Failed to download binary.');
|
|
178
|
+
console.error(`Download manually from: https://github.com/${GITHUB_OWNER}/${GITHUB_REPO}/releases`);
|
|
179
|
+
process.exit(1);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Main entry point
|
|
184
|
+
*/
|
|
185
|
+
async function main() {
|
|
186
|
+
try {
|
|
187
|
+
const binaryPath = await ensureBinary();
|
|
188
|
+
|
|
189
|
+
const child = spawn(binaryPath, process.argv.slice(2), {
|
|
190
|
+
stdio: 'inherit',
|
|
191
|
+
env: process.env
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
child.on('exit', (code) => process.exit(code || 0));
|
|
195
|
+
child.on('error', (err) => {
|
|
196
|
+
console.error(`Failed to start: ${err.message}`);
|
|
197
|
+
process.exit(1);
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
['SIGINT', 'SIGTERM', 'SIGHUP'].forEach((sig) => {
|
|
201
|
+
process.on(sig, () => child.pid && child.kill(sig));
|
|
202
|
+
});
|
|
203
|
+
|
|
204
|
+
} catch (err) {
|
|
205
|
+
console.error(`Error: ${err.message}`);
|
|
206
|
+
process.exit(1);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
main();
|
package/package.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "mycelicmemory",
|
|
3
|
+
"version": "1.2.2",
|
|
4
|
+
"description": "AI-powered persistent memory system for Claude and other AI agents",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"mcp",
|
|
7
|
+
"ai",
|
|
8
|
+
"memory",
|
|
9
|
+
"claude",
|
|
10
|
+
"anthropic",
|
|
11
|
+
"llm",
|
|
12
|
+
"vector-search",
|
|
13
|
+
"semantic-search",
|
|
14
|
+
"knowledge-base",
|
|
15
|
+
"ollama"
|
|
16
|
+
],
|
|
17
|
+
"author": "Mycelic Memory",
|
|
18
|
+
"license": "MIT",
|
|
19
|
+
"homepage": "https://github.com/MycelicMemory/mycelicmemory",
|
|
20
|
+
"repository": {
|
|
21
|
+
"type": "git",
|
|
22
|
+
"url": "git+https://github.com/MycelicMemory/mycelicmemory.git"
|
|
23
|
+
},
|
|
24
|
+
"bugs": {
|
|
25
|
+
"url": "https://github.com/MycelicMemory/mycelicmemory/issues"
|
|
26
|
+
},
|
|
27
|
+
"engines": {
|
|
28
|
+
"node": ">=16.0.0"
|
|
29
|
+
},
|
|
30
|
+
"os": [
|
|
31
|
+
"darwin",
|
|
32
|
+
"linux",
|
|
33
|
+
"win32"
|
|
34
|
+
],
|
|
35
|
+
"cpu": [
|
|
36
|
+
"x64",
|
|
37
|
+
"arm64"
|
|
38
|
+
],
|
|
39
|
+
"bin": {
|
|
40
|
+
"mycelicmemory": "bin/mycelicmemory"
|
|
41
|
+
},
|
|
42
|
+
"files": [
|
|
43
|
+
"bin/mycelicmemory",
|
|
44
|
+
"README.md",
|
|
45
|
+
"LICENSE"
|
|
46
|
+
]
|
|
47
|
+
}
|