@wipcomputer/memory-crystal 0.7.27 → 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 CHANGED
@@ -19,6 +19,64 @@
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
+
53
+ ## 0.7.28 (2026-03-18)
54
+
55
+ # Release Notes: memory-crystal v0.7.28
56
+
57
+ **One-line summary of what this release does**
58
+
59
+ ## What changed
60
+
61
+ Describe the changes. Not a commit list. Explain:
62
+ - What was built or fixed
63
+ - Why it matters
64
+ - What the user should know
65
+
66
+ ## Why
67
+
68
+ What problem does this solve? What was broken or missing?
69
+
70
+ ## Issues closed
71
+
72
+ - #91
73
+
74
+ ## How to verify
75
+
76
+ ```bash
77
+ # Commands to test the changes
78
+ ```
79
+
22
80
  ## 0.7.27 (2026-03-17)
23
81
 
24
82
  # Add root SKILL.md + ldm install as primary path
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.27"
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: OpenAI (recommended, requires API key)**
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 >> /tmp/ldm-dev-tools/crystal-capture.log 2>&1
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>] [--provider <openai|ollama|google>]
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]
@@ -0,0 +1,31 @@
1
+ # Release Notes: memory-crystal v0.7.28
2
+
3
+ **Move all log paths from /tmp/ to ~/.ldm/logs/ so logs survive reboots.**
4
+
5
+ ## What changed
6
+
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
+
12
+ ## Why
13
+
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
+
16
+ ## Issues closed
17
+
18
+ - wipcomputer/wip-ldm-os#120
19
+
20
+ ## How to verify
21
+
22
+ ```bash
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/
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wipcomputer/memory-crystal",
3
- "version": "0.7.27",
3
+ "version": "0.7.29",
4
4
  "description": "Sovereign memory system — local-first with ephemeral encrypted relay. Your memory, your machine, your rules.",
5
5
  "repository": {
6
6
  "type": "git",