@wipcomputer/memory-crystal 0.7.28 → 0.7.29
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/CHANGELOG.md +31 -0
- package/SKILL.md +13 -3
- package/TECHNICAL.md +30 -2
- package/_trash/RELEASE-NOTES-v0-7-28.md +15 -8
- package/_trash/RELEASE-NOTES-v0-7-29.md +28 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -19,6 +19,37 @@
|
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
|
|
22
|
+
## 0.7.29 (2026-03-20)
|
|
23
|
+
|
|
24
|
+
# Release Notes: memory-crystal v0.7.29
|
|
25
|
+
|
|
26
|
+
**Doc audit: MLX setup, deep search params, log paths, role clarification.**
|
|
27
|
+
|
|
28
|
+
## What changed
|
|
29
|
+
|
|
30
|
+
SKILL.md and TECHNICAL.md updated for 2 weeks of undocumented features:
|
|
31
|
+
|
|
32
|
+
- **MLX local LLM:** Added as Option A in SKILL.md Step 2. CLI commands (setup, status, stop) added to TECHNICAL.md.
|
|
33
|
+
- **Deep search parameters:** `--intent`, `--explain`, `--candidates` documented in both SKILL.md (crystal_search tool) and TECHNICAL.md (CLI reference + new sections for intent, explain, candidate limit, LLM cache).
|
|
34
|
+
- **Log paths:** Fixed obsolete `/tmp/ldm-dev-tools/` reference to `~/.ldm/logs/`. Added logs/ to directory structure.
|
|
35
|
+
- **Role clarification:** Two-role architecture (Core and Node) explicitly stated. Standalone role was removed in v0.7.22.
|
|
36
|
+
|
|
37
|
+
## Why
|
|
38
|
+
|
|
39
|
+
29 releases in 13 days. Docs didn't keep pace. Agents using crystal_search didn't know about --intent (query disambiguation) or --explain (scoring transparency).
|
|
40
|
+
|
|
41
|
+
## Issues closed
|
|
42
|
+
|
|
43
|
+
- #57
|
|
44
|
+
|
|
45
|
+
## How to verify
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
grep "intent" SKILL.md TECHNICAL.md
|
|
49
|
+
grep "mlx" SKILL.md TECHNICAL.md
|
|
50
|
+
grep "ldm/logs" TECHNICAL.md
|
|
51
|
+
```
|
|
52
|
+
|
|
22
53
|
## 0.7.28 (2026-03-18)
|
|
23
54
|
|
|
24
55
|
# Release Notes: memory-crystal v0.7.28
|
package/SKILL.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: wip-memory-crystal
|
|
3
3
|
description: Search and manage the shared memory crystal. Use when user says "do you remember", "search memory", "remember this", "forget that", "memory status", "what do you know about", or needs to recall past discussions, store facts, or check what's in memory.
|
|
4
|
-
version: "0.7.
|
|
4
|
+
version: "0.7.29"
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Memory Crystal
|
|
@@ -140,7 +140,13 @@ If that returns a key, skip to Step 3.
|
|
|
140
140
|
|
|
141
141
|
If not, ask the user which provider they want:
|
|
142
142
|
|
|
143
|
-
**Option A:
|
|
143
|
+
**Option A: MLX (free, local, Apple Silicon only)**
|
|
144
|
+
```bash
|
|
145
|
+
crystal mlx setup
|
|
146
|
+
```
|
|
147
|
+
Auto-installs Qwen2.5-3B on M-series Macs. Creates a LaunchAgent on port 18791. `crystal init` detects MLX automatically.
|
|
148
|
+
|
|
149
|
+
**Option B: OpenAI (recommended for non-Apple Silicon, requires API key)**
|
|
144
150
|
Tell the user to add this to their shell profile (`~/.zshrc` or `~/.bashrc`):
|
|
145
151
|
```bash
|
|
146
152
|
export OPENAI_API_KEY="sk-..."
|
|
@@ -365,7 +371,7 @@ This machine is now a Crystal Node. Conversations are captured, encrypted, and r
|
|
|
365
371
|
|
|
366
372
|
## Role Management
|
|
367
373
|
|
|
368
|
-
Users can check and change roles at any time:
|
|
374
|
+
Two-role architecture: **Core** (master database, embedding server, relay sync) and **Node** (mirrors Core, syncs via relay, local search). Users can check and change roles at any time:
|
|
369
375
|
|
|
370
376
|
```bash
|
|
371
377
|
crystal role # Show current role
|
|
@@ -404,8 +410,12 @@ Search across all stored memory. Semantic search with recency-weighted results.
|
|
|
404
410
|
```
|
|
405
411
|
crystal_search query="how do plugins work" limit=5
|
|
406
412
|
crystal_search query="user preferences" agent_id="main"
|
|
413
|
+
crystal_search query="security" intent="1Password"
|
|
414
|
+
crystal_search query="deployment" time_filter="7d" explain=true
|
|
407
415
|
```
|
|
408
416
|
|
|
417
|
+
Parameters: `query` (required), `limit`, `agent_id`, `time_filter` (24h/7d/30d), `intent` (disambiguate without adding search terms), `candidates` (rerank pool size), `explain` (show scoring breakdown).
|
|
418
|
+
|
|
409
419
|
Results are ranked by relevance and freshness, with color-coded freshness indicators:
|
|
410
420
|
- fresh (less than 3 days)
|
|
411
421
|
- recent (less than 7 days)
|
package/TECHNICAL.md
CHANGED
|
@@ -44,7 +44,7 @@ crystal init # Scaffolds ~/.ldm/, deploys capture script, ins
|
|
|
44
44
|
|
|
45
45
|
This copies `crystal-capture.sh` to `~/.ldm/bin/` and installs a cron entry:
|
|
46
46
|
```
|
|
47
|
-
* * * * * ~/.ldm/bin/crystal-capture.sh >> /
|
|
47
|
+
* * * * * ~/.ldm/bin/crystal-capture.sh >> ~/.ldm/logs/crystal-capture.log 2>&1
|
|
48
48
|
```
|
|
49
49
|
|
|
50
50
|
The script calls `node ~/.ldm/extensions/memory-crystal/dist/cc-poller.js`. The poller fetches the OpenAI API key internally via `opRead()` (1Password SA token). No secrets in the shell script.
|
|
@@ -215,6 +215,24 @@ Provider detection in `llm.ts`:
|
|
|
215
215
|
|
|
216
216
|
Search can be filtered by time: `--since 24h`, `--since 7d`, `--since 30d`, or an ISO date. Applied as a SQL WHERE clause before search. Available on CLI and MCP (`time_filter` parameter).
|
|
217
217
|
|
|
218
|
+
### Intent Parameter
|
|
219
|
+
|
|
220
|
+
`--intent <description>` disambiguates queries without adding search terms. Example: `crystal search "security" --intent "1Password"` steers toward 1Password-specific context, not repo permissions or agent secrets.
|
|
221
|
+
|
|
222
|
+
Intent flows through: expansion prompt (guides LLM variations), disables strong-signal bypass, prepended to rerank query for LLM relevance scoring.
|
|
223
|
+
|
|
224
|
+
### Explain Mode
|
|
225
|
+
|
|
226
|
+
`--explain` shows per-result scoring breakdown: FTS (keyword) score, vector (semantic) score, RRF rank after fusion, reranker score from LLM, recency weight, final blended score. Makes search quality transparent and debuggable.
|
|
227
|
+
|
|
228
|
+
### Candidate Limit
|
|
229
|
+
|
|
230
|
+
`--candidates N` tunes the rerank pool size (default 40). Higher values give the LLM more results to evaluate. Lower values are faster.
|
|
231
|
+
|
|
232
|
+
### LLM Cache
|
|
233
|
+
|
|
234
|
+
Expansion + reranking results cached in `llm_cache` table with 7-day TTL. Same query returns instantly on second search. Cache is per-query, per-intent.
|
|
235
|
+
|
|
218
236
|
### Recency Decay
|
|
219
237
|
|
|
220
238
|
Exponential decay from 1.0 to floor 0.3. Day 0: 1.0, Day 1: 0.90, Day 3: 0.74, Day 7: 0.50, Day 14+: 0.3 (floor). Fresh context wins decisively. Old content still surfaces for strong matches but doesn't bury recent results.
|
|
@@ -274,6 +292,9 @@ Memory Crystal manages `~/.ldm/` ... the universal agent home directory for [LDM
|
|
|
274
292
|
config.json version, registered agents array
|
|
275
293
|
bin/
|
|
276
294
|
crystal-capture.sh cron job script (deployed by crystal init)
|
|
295
|
+
logs/
|
|
296
|
+
crystal-capture.log cron output (persists across reboots)
|
|
297
|
+
ldm-backup.log backup script output
|
|
277
298
|
memory/
|
|
278
299
|
crystal.db shared vector DB (all agents)
|
|
279
300
|
extensions/
|
|
@@ -419,7 +440,9 @@ Incremental sync detects changed files via SHA-256 content hashing. Only re-embe
|
|
|
419
440
|
|
|
420
441
|
```bash
|
|
421
442
|
# Search
|
|
422
|
-
crystal search <query> [-n limit] [--agent <id>] [--since <24h|7d|30d>]
|
|
443
|
+
crystal search <query> [-n limit] [--agent <id>] [--since <24h|7d|30d>]
|
|
444
|
+
[--intent <description>] [--candidates N] [--explain]
|
|
445
|
+
[--provider <openai|ollama|google>]
|
|
423
446
|
|
|
424
447
|
# Remember / forget
|
|
425
448
|
crystal remember <text> [--category fact|preference|event|opinion|skill]
|
|
@@ -428,6 +451,11 @@ crystal forget <id>
|
|
|
428
451
|
# Status
|
|
429
452
|
crystal status [--provider <openai|ollama|google>]
|
|
430
453
|
|
|
454
|
+
# MLX local LLM (Apple Silicon)
|
|
455
|
+
crystal mlx setup # auto-install Qwen2.5-3B, create LaunchAgent
|
|
456
|
+
crystal mlx status # check server health
|
|
457
|
+
crystal mlx stop # stop the server
|
|
458
|
+
|
|
431
459
|
# Source file indexing
|
|
432
460
|
crystal sources add <path> --name <name>
|
|
433
461
|
crystal sources sync [name]
|
|
@@ -1,24 +1,31 @@
|
|
|
1
1
|
# Release Notes: memory-crystal v0.7.28
|
|
2
2
|
|
|
3
|
-
**
|
|
3
|
+
**Move all log paths from /tmp/ to ~/.ldm/logs/ so logs survive reboots.**
|
|
4
4
|
|
|
5
5
|
## What changed
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
7
|
+
- Cron entry for crystal-capture now logs to `~/.ldm/logs/crystal-capture.log` instead of `/tmp/ldm-dev-tools/`
|
|
8
|
+
- LaunchAgent plist template for ldm-backup now logs to `~/.ldm/logs/ldm-backup.log`
|
|
9
|
+
- `mkdirSync` ensures `~/.ldm/logs/` exists instead of creating `/tmp/ldm-dev-tools/`
|
|
10
|
+
- CLI output shows the correct log path
|
|
11
11
|
|
|
12
12
|
## Why
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
macOS clears `/tmp/` on every reboot. All cron and LaunchAgent logs were lost after restart, making it impossible to debug issues. `~/.ldm/logs/` persists across reboots and is the correct home for LDM OS logs.
|
|
15
15
|
|
|
16
16
|
## Issues closed
|
|
17
17
|
|
|
18
|
-
- #
|
|
18
|
+
- wipcomputer/wip-ldm-os#120
|
|
19
19
|
|
|
20
20
|
## How to verify
|
|
21
21
|
|
|
22
22
|
```bash
|
|
23
|
-
#
|
|
23
|
+
# After install, check that cron entry points to ~/.ldm/logs/
|
|
24
|
+
crystal init --dry-run 2>&1 | grep crystal-capture
|
|
25
|
+
|
|
26
|
+
# Check backup setup points to ~/.ldm/logs/
|
|
27
|
+
crystal backup setup --dry-run 2>&1 | grep ldm-backup
|
|
28
|
+
|
|
29
|
+
# Verify logs land in the right place
|
|
30
|
+
ls ~/.ldm/logs/
|
|
24
31
|
```
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Release Notes: memory-crystal v0.7.29
|
|
2
|
+
|
|
3
|
+
**Doc audit: MLX setup, deep search params, log paths, role clarification.**
|
|
4
|
+
|
|
5
|
+
## What changed
|
|
6
|
+
|
|
7
|
+
SKILL.md and TECHNICAL.md updated for 2 weeks of undocumented features:
|
|
8
|
+
|
|
9
|
+
- **MLX local LLM:** Added as Option A in SKILL.md Step 2. CLI commands (setup, status, stop) added to TECHNICAL.md.
|
|
10
|
+
- **Deep search parameters:** `--intent`, `--explain`, `--candidates` documented in both SKILL.md (crystal_search tool) and TECHNICAL.md (CLI reference + new sections for intent, explain, candidate limit, LLM cache).
|
|
11
|
+
- **Log paths:** Fixed obsolete `/tmp/ldm-dev-tools/` reference to `~/.ldm/logs/`. Added logs/ to directory structure.
|
|
12
|
+
- **Role clarification:** Two-role architecture (Core and Node) explicitly stated. Standalone role was removed in v0.7.22.
|
|
13
|
+
|
|
14
|
+
## Why
|
|
15
|
+
|
|
16
|
+
29 releases in 13 days. Docs didn't keep pace. Agents using crystal_search didn't know about --intent (query disambiguation) or --explain (scoring transparency).
|
|
17
|
+
|
|
18
|
+
## Issues closed
|
|
19
|
+
|
|
20
|
+
- #57
|
|
21
|
+
|
|
22
|
+
## How to verify
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
grep "intent" SKILL.md TECHNICAL.md
|
|
26
|
+
grep "mlx" SKILL.md TECHNICAL.md
|
|
27
|
+
grep "ldm/logs" TECHNICAL.md
|
|
28
|
+
```
|
package/package.json
CHANGED