mindlore 0.6.8 → 0.7.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.
- package/README.md +259 -259
- package/SCHEMA.md +292 -292
- package/dist/scripts/cc-memory-bulk-sync.d.ts.map +1 -1
- package/dist/scripts/cc-memory-bulk-sync.js +4 -2
- package/dist/scripts/cc-memory-bulk-sync.js.map +1 -1
- package/dist/scripts/cc-session-sync.d.ts.map +1 -1
- package/dist/scripts/cc-session-sync.js +9 -7
- package/dist/scripts/cc-session-sync.js.map +1 -1
- package/dist/scripts/fetch-raw.js +5 -4
- package/dist/scripts/fetch-raw.js.map +1 -1
- package/dist/scripts/init.js +16 -12
- package/dist/scripts/init.js.map +1 -1
- package/dist/scripts/lib/consolidation.js +10 -10
- package/dist/scripts/lib/constants.d.ts +3 -0
- package/dist/scripts/lib/constants.d.ts.map +1 -1
- package/dist/scripts/lib/constants.js +11 -1
- package/dist/scripts/lib/constants.js.map +1 -1
- package/dist/scripts/lib/decay.js +9 -9
- package/dist/scripts/lib/episodes.js +23 -23
- package/dist/scripts/lib/err-msg.d.ts +2 -0
- package/dist/scripts/lib/err-msg.d.ts.map +1 -0
- package/dist/scripts/lib/err-msg.js +7 -0
- package/dist/scripts/lib/err-msg.js.map +1 -0
- package/dist/scripts/lib/mcp-namespace.d.ts +2 -0
- package/dist/scripts/lib/mcp-namespace.d.ts.map +1 -0
- package/dist/scripts/lib/mcp-namespace.js +21 -0
- package/dist/scripts/lib/mcp-namespace.js.map +1 -0
- package/dist/scripts/lib/mcp-telemetry.d.ts +11 -0
- package/dist/scripts/lib/mcp-telemetry.d.ts.map +1 -0
- package/dist/scripts/lib/mcp-telemetry.js +37 -0
- package/dist/scripts/lib/mcp-telemetry.js.map +1 -0
- package/dist/scripts/lib/mcp-tools.d.ts +10 -0
- package/dist/scripts/lib/mcp-tools.d.ts.map +1 -0
- package/dist/scripts/lib/mcp-tools.js +121 -0
- package/dist/scripts/lib/mcp-tools.js.map +1 -0
- package/dist/scripts/lib/migrations-v061.js +21 -21
- package/dist/scripts/lib/migrations-v062.js +11 -11
- package/dist/scripts/lib/migrations-v063.js +14 -14
- package/dist/scripts/lib/migrations-v067.js +11 -11
- package/dist/scripts/lib/rrf.d.ts.map +1 -1
- package/dist/scripts/lib/rrf.js +2 -1
- package/dist/scripts/lib/rrf.js.map +1 -1
- package/dist/scripts/lib/schema-version.js +6 -6
- package/dist/scripts/lib/search-cache.js +11 -11
- package/dist/scripts/lib/search-engine.d.ts +1 -0
- package/dist/scripts/lib/search-engine.d.ts.map +1 -1
- package/dist/scripts/lib/search-engine.js +9 -5
- package/dist/scripts/lib/search-engine.js.map +1 -1
- package/dist/scripts/lib/secure-io.d.ts +11 -0
- package/dist/scripts/lib/secure-io.d.ts.map +1 -0
- package/dist/scripts/lib/secure-io.js +26 -0
- package/dist/scripts/lib/secure-io.js.map +1 -0
- package/dist/scripts/lib/session-payload.js +7 -7
- package/dist/scripts/lib/slugify.d.ts +2 -0
- package/dist/scripts/lib/slugify.d.ts.map +1 -0
- package/dist/scripts/lib/slugify.js +13 -0
- package/dist/scripts/lib/slugify.js.map +1 -0
- package/dist/scripts/lib/smart-snippet.d.ts +9 -0
- package/dist/scripts/lib/smart-snippet.d.ts.map +1 -0
- package/dist/scripts/lib/smart-snippet.js +47 -0
- package/dist/scripts/lib/smart-snippet.js.map +1 -0
- package/dist/scripts/lib/tool-adapters/brief-adapter.d.ts +15 -0
- package/dist/scripts/lib/tool-adapters/brief-adapter.d.ts.map +1 -0
- package/dist/scripts/lib/tool-adapters/brief-adapter.js +66 -0
- package/dist/scripts/lib/tool-adapters/brief-adapter.js.map +1 -0
- package/dist/scripts/lib/tool-adapters/decide-adapter.d.ts +31 -0
- package/dist/scripts/lib/tool-adapters/decide-adapter.d.ts.map +1 -0
- package/dist/scripts/lib/tool-adapters/decide-adapter.js +71 -0
- package/dist/scripts/lib/tool-adapters/decide-adapter.js.map +1 -0
- package/dist/scripts/lib/tool-adapters/ingest-adapter.d.ts +16 -0
- package/dist/scripts/lib/tool-adapters/ingest-adapter.d.ts.map +1 -0
- package/dist/scripts/lib/tool-adapters/ingest-adapter.js +58 -0
- package/dist/scripts/lib/tool-adapters/ingest-adapter.js.map +1 -0
- package/dist/scripts/lib/tool-adapters/recall-adapter.d.ts +20 -0
- package/dist/scripts/lib/tool-adapters/recall-adapter.d.ts.map +1 -0
- package/dist/scripts/lib/tool-adapters/recall-adapter.js +69 -0
- package/dist/scripts/lib/tool-adapters/recall-adapter.js.map +1 -0
- package/dist/scripts/lib/tool-adapters/search-adapter.d.ts +22 -0
- package/dist/scripts/lib/tool-adapters/search-adapter.d.ts.map +1 -0
- package/dist/scripts/lib/tool-adapters/search-adapter.js +32 -0
- package/dist/scripts/lib/tool-adapters/search-adapter.js.map +1 -0
- package/dist/scripts/lib/tool-adapters/stats-adapter.d.ts +15 -0
- package/dist/scripts/lib/tool-adapters/stats-adapter.d.ts.map +1 -0
- package/dist/scripts/lib/tool-adapters/stats-adapter.js +66 -0
- package/dist/scripts/lib/tool-adapters/stats-adapter.js.map +1 -0
- package/dist/scripts/lib/triage.js +3 -3
- package/dist/scripts/lib/validate-manifest.d.ts +8 -0
- package/dist/scripts/lib/validate-manifest.d.ts.map +1 -0
- package/dist/scripts/lib/validate-manifest.js +80 -0
- package/dist/scripts/lib/validate-manifest.js.map +1 -0
- package/dist/scripts/maintain-cleanup.d.ts.map +1 -1
- package/dist/scripts/maintain-cleanup.js +3 -2
- package/dist/scripts/maintain-cleanup.js.map +1 -1
- package/dist/scripts/mcp-server.d.ts +3 -0
- package/dist/scripts/mcp-server.d.ts.map +1 -0
- package/dist/scripts/mcp-server.js +85 -0
- package/dist/scripts/mcp-server.js.map +1 -0
- package/dist/scripts/mindlore-backup.js +9 -9
- package/dist/scripts/mindlore-doctor.d.ts.map +1 -1
- package/dist/scripts/mindlore-doctor.js +4 -6
- package/dist/scripts/mindlore-doctor.js.map +1 -1
- package/dist/scripts/mindlore-fts5-index.js +12 -12
- package/dist/scripts/mindlore-fts5-index.js.map +1 -1
- package/dist/scripts/mindlore-health-check.d.ts.map +1 -1
- package/dist/scripts/mindlore-health-check.js +2 -2
- package/dist/scripts/mindlore-health-check.js.map +1 -1
- package/dist/scripts/validate-manifest-cli.d.ts +2 -0
- package/dist/scripts/validate-manifest-cli.d.ts.map +1 -0
- package/dist/scripts/validate-manifest-cli.js +38 -0
- package/dist/scripts/validate-manifest-cli.js.map +1 -0
- package/dist/tests/cc-memory-sync.test.js +3 -3
- package/dist/tests/chunks-migration.test.js +1 -1
- package/dist/tests/compaction-snapshot.test.js +2 -2
- package/dist/tests/consolidation.test.js +3 -3
- package/dist/tests/decay.test.js +9 -9
- package/dist/tests/diary.test.js +4 -4
- package/dist/tests/episode-file.test.js +2 -1
- package/dist/tests/episode-file.test.js.map +1 -1
- package/dist/tests/episodes-inject.test.js +9 -9
- package/dist/tests/err-msg.test.d.ts +2 -0
- package/dist/tests/err-msg.test.d.ts.map +1 -0
- package/dist/tests/err-msg.test.js +24 -0
- package/dist/tests/err-msg.test.js.map +1 -0
- package/dist/tests/fetch-raw.test.js +1 -2
- package/dist/tests/fetch-raw.test.js.map +1 -1
- package/dist/tests/fts5.test.js +75 -75
- package/dist/tests/fuzzy.test.js +1 -1
- package/dist/tests/git-snapshot.test.js +3 -5
- package/dist/tests/git-snapshot.test.js.map +1 -1
- package/dist/tests/helpers/db.d.ts +1 -2
- package/dist/tests/helpers/db.d.ts.map +1 -1
- package/dist/tests/helpers/db.js +18 -26
- package/dist/tests/helpers/db.js.map +1 -1
- package/dist/tests/manifest-v2.test.d.ts +2 -0
- package/dist/tests/manifest-v2.test.d.ts.map +1 -0
- package/dist/tests/manifest-v2.test.js +67 -0
- package/dist/tests/manifest-v2.test.js.map +1 -0
- package/dist/tests/mcp-server.test.d.ts +2 -0
- package/dist/tests/mcp-server.test.d.ts.map +1 -0
- package/dist/tests/mcp-server.test.js +118 -0
- package/dist/tests/mcp-server.test.js.map +1 -0
- package/dist/tests/mcp-tools.test.d.ts +2 -0
- package/dist/tests/mcp-tools.test.d.ts.map +1 -0
- package/dist/tests/mcp-tools.test.js +243 -0
- package/dist/tests/mcp-tools.test.js.map +1 -0
- package/dist/tests/migrations-v053.test.js +16 -16
- package/dist/tests/migrations-v061.test.js +10 -10
- package/dist/tests/migrations-v063.test.js +4 -4
- package/dist/tests/migrations-v068.test.js +6 -3
- package/dist/tests/migrations-v068.test.js.map +1 -1
- package/dist/tests/nomination-counts.test.js +6 -6
- package/dist/tests/nomination-counts.test.js.map +1 -1
- package/dist/tests/pre-compact.test.js +2 -1
- package/dist/tests/pre-compact.test.js.map +1 -1
- package/dist/tests/recall-telemetry.test.js +12 -11
- package/dist/tests/recall-telemetry.test.js.map +1 -1
- package/dist/tests/rrf.test.js +3 -3
- package/dist/tests/search-engine.test.js +1 -1
- package/dist/tests/search-hook.test.js +2 -2
- package/dist/tests/search-offload.test.js +1 -1
- package/dist/tests/search-offload.test.js.map +1 -1
- package/dist/tests/secure-io.test.d.ts +2 -0
- package/dist/tests/secure-io.test.d.ts.map +1 -0
- package/dist/tests/secure-io.test.js +65 -0
- package/dist/tests/secure-io.test.js.map +1 -0
- package/dist/tests/session-payload.test.js +1 -1
- package/dist/tests/session-summary.test.js +1 -1
- package/dist/tests/similarity.test.js +1 -1
- package/dist/tests/skill-path-resolution.test.js +22 -3
- package/dist/tests/skill-path-resolution.test.js.map +1 -1
- package/dist/tests/smart-snippet.test.d.ts +2 -0
- package/dist/tests/smart-snippet.test.d.ts.map +1 -0
- package/dist/tests/smart-snippet.test.js +67 -0
- package/dist/tests/smart-snippet.test.js.map +1 -0
- package/dist/tests/triage.test.js +1 -1
- package/hooks/lib/constants.cjs +15 -15
- package/hooks/lib/mindlore-common.cjs +975 -974
- package/hooks/mindlore-cwd-changed.cjs +57 -57
- package/hooks/mindlore-decision-detector.cjs +54 -54
- package/hooks/mindlore-dont-repeat.cjs +222 -222
- package/hooks/mindlore-fts5-sync.cjs +98 -97
- package/hooks/mindlore-index.cjs +230 -229
- package/hooks/mindlore-model-router.cjs +54 -54
- package/hooks/mindlore-post-compact.cjs +69 -69
- package/hooks/mindlore-post-read.cjs +106 -106
- package/hooks/mindlore-pre-compact.cjs +154 -154
- package/hooks/mindlore-read-guard.cjs +105 -105
- package/hooks/mindlore-research-guard.cjs +176 -176
- package/hooks/mindlore-search.cjs +200 -200
- package/hooks/mindlore-session-end.cjs +510 -509
- package/hooks/mindlore-session-focus.cjs +256 -256
- package/package.json +77 -75
- package/plugin.json +8 -1
- package/skills/mindlore-diary/SKILL.md +85 -85
- package/skills/mindlore-evolve/SKILL.md +126 -126
- package/skills/mindlore-explore/SKILL.md +109 -109
- package/skills/mindlore-ingest/SKILL.md +195 -195
- package/skills/mindlore-maintain/SKILL.md +125 -125
- package/skills/mindlore-query/SKILL.md +151 -151
- package/skills/mindlore-reflect/SKILL.md +141 -141
- package/skills/mindlore-stats/SKILL.md +106 -106
- package/templates/INDEX.md +14 -14
- package/templates/SCHEMA.md +292 -292
- package/templates/config.json +1 -1
- package/templates/extraction/article.md +15 -15
- package/templates/extraction/changelog.md +15 -15
- package/templates/extraction/default.md +15 -15
- package/templates/extraction/docs.md +15 -15
- package/templates/extraction/github-repo.md +17 -17
|
@@ -1,141 +1,141 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: mindlore-reflect
|
|
3
|
-
description: Pattern extraction from episodes — 3-tier confidence, nomination pipeline, CLAUDE.md update proposals.
|
|
4
|
-
context: fork
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Script Resolution
|
|
8
|
-
|
|
9
|
-
Resolve `MINDLORE_PKG` (package root) using one of these methods, in order:
|
|
10
|
-
1. If CC injected "Base directory for this skill: /path/to/skills/mindlore-reflect" → `MINDLORE_PKG = {base_directory}/../..`
|
|
11
|
-
2. Fallback: run `node -e "console.log(require('path').join(require('child_process').execSync('npm root -g',{encoding:'utf8'}).trim(),'mindlore')))"`
|
|
12
|
-
|
|
13
|
-
Use: `node "$MINDLORE_PKG/dist/scripts/..."` for all script commands.
|
|
14
|
-
|
|
15
|
-
# /mindlore-reflect
|
|
16
|
-
|
|
17
|
-
## Scope
|
|
18
|
-
|
|
19
|
-
Scans both project + global `~/.mindlore/` diary/ for patterns.
|
|
20
|
-
|
|
21
|
-
## Trigger
|
|
22
|
-
|
|
23
|
-
`/mindlore-reflect` or `/mindlore-log reflect`
|
|
24
|
-
|
|
25
|
-
## On Start — Check pending nominations + skill_memory
|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
node "$MINDLORE_PKG/dist/scripts/lib/skill-memory.js" get mindlore-reflect last_reflect_date
|
|
29
|
-
node "$MINDLORE_PKG/dist/scripts/lib/skill-memory.js" get mindlore-reflect nomination_count
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
Check pending nominations:
|
|
33
|
-
```sql
|
|
34
|
-
SELECT id, summary, body, created_at FROM episodes
|
|
35
|
-
WHERE kind = 'nomination' AND status = 'staged' AND project = ?
|
|
36
|
-
ORDER BY created_at ASC
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
If pending nominations exist, present them first:
|
|
40
|
-
```
|
|
41
|
-
-- Bekleyen Nomination'lar ({N} adet) --
|
|
42
|
-
1. "{summary}" (staged {days} gun once)
|
|
43
|
-
Target: learnings | Confidence: 3x
|
|
44
|
-
|
|
45
|
-
Onaylamak istediklerini sec, veya 'skip':
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
## Flow
|
|
49
|
-
|
|
50
|
-
1. Read active episodes: `WHERE status = 'active' AND source IN ('hook', 'diary')`
|
|
51
|
-
2. Filter by time: `--days 7` (default), `--days 30`
|
|
52
|
-
3. Present summary: "Found N episodes spanning DATE1 to DATE2"
|
|
53
|
-
4. LLM analyzes episodes for recurring patterns:
|
|
54
|
-
- Repeated decisions (same choice 2+ times)
|
|
55
|
-
- Recurring frictions (same blocker/error)
|
|
56
|
-
- Discovery patterns (assumptions that keep breaking)
|
|
57
|
-
- Workflow patterns that worked well
|
|
58
|
-
|
|
59
|
-
5. **3-Tier Confidence Assessment:**
|
|
60
|
-
|
|
61
|
-
| Tekrar | Tier | Aksiyon |
|
|
62
|
-
|--------|------|---------|
|
|
63
|
-
| 1x | Note | Sessiz — episode olarak kalir, raporda goster |
|
|
64
|
-
| 2x | Learning | `kind: learning` episode olustur, learnings/ dosyasina yaz |
|
|
65
|
-
| 3x+ | Nomination | `kind: nomination, status: staged, source: reflect` episode olustur |
|
|
66
|
-
|
|
67
|
-
6. **Structured report:**
|
|
68
|
-
```
|
|
69
|
-
-- Reflect Raporu (son {days} gun, {N} episode) --
|
|
70
|
-
|
|
71
|
-
Friction ({count}):
|
|
72
|
-
- {summary} — {repeat_count}x tekrar
|
|
73
|
-
|
|
74
|
-
Discoveries ({count}):
|
|
75
|
-
- {summary}
|
|
76
|
-
|
|
77
|
-
Patterns:
|
|
78
|
-
- "{pattern}" -> 3x tekrar -> NOMINATION (staged)
|
|
79
|
-
- "{pattern}" -> 2x tekrar -> LEARNING
|
|
80
|
-
- "{pattern}" -> 1x -> NOTE
|
|
81
|
-
|
|
82
|
-
Onerilen:
|
|
83
|
-
[ ] {rule} ({repeat_count}x, {confidence} confidence)
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
7. **Nomination creation (3x+ tekrar):**
|
|
87
|
-
```sql
|
|
88
|
-
INSERT INTO episodes (summary, body, kind, status, source, project, created_at)
|
|
89
|
-
VALUES (?, ?, 'nomination', 'staged', 'reflect', ?, ?)
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
8. **Nomination approval flow:**
|
|
93
|
-
User approves -> `status: staged -> approved` -> write to target:
|
|
94
|
-
- `learnings` -> `learnings/{topic}.md`
|
|
95
|
-
- `claude.md` -> project CLAUDE.md'ye kural ekle
|
|
96
|
-
- `domain:{slug}` -> ilgili domain sayfasina ekle
|
|
97
|
-
|
|
98
|
-
Approval SQL:
|
|
99
|
-
```sql
|
|
100
|
-
UPDATE episodes SET status = 'approved', graduated_at = datetime('now') WHERE id = ?
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
User rejects -> `status: staged -> rejected` + rejection reason
|
|
104
|
-
|
|
105
|
-
Rejection SQL:
|
|
106
|
-
```sql
|
|
107
|
-
UPDATE episodes SET status = 'rejected', rejected_at = datetime('now'), rejection_reason = ? WHERE id = ?
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
## On End — Write skill_memory
|
|
111
|
-
|
|
112
|
-
```bash
|
|
113
|
-
node "$MINDLORE_PKG/dist/scripts/lib/skill-memory.js" set mindlore-reflect last_reflect_date "$(date -I)"
|
|
114
|
-
node "$MINDLORE_PKG/dist/scripts/lib/skill-memory.js" set mindlore-reflect nomination_count "{staged_count}"
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
## Quick Health Summary (v0.5.3)
|
|
118
|
-
|
|
119
|
-
After pattern extraction, run quick SQL checks (0 token, <1ms):
|
|
120
|
-
```bash
|
|
121
|
-
node -e "
|
|
122
|
-
const db = require('better-sqlite3')(require('path').join(require('os').homedir(), '.mindlore', 'mindlore.db'), {readonly:true});
|
|
123
|
-
const stale = db.prepare(\"SELECT COUNT(*) as c FROM file_hashes WHERE recall_count = 0 AND archived_at IS NULL AND last_indexed < datetime('now','-60 days')\").get()?.c ?? 0;
|
|
124
|
-
const raw = db.prepare(\"SELECT COUNT(*) as c FROM episodes WHERE (consolidation_status = 'raw' OR consolidation_status IS NULL) AND kind IN ('learning','discovery','friction','decision')\").get()?.c ?? 0;
|
|
125
|
-
console.log(JSON.stringify({stale, raw}));
|
|
126
|
-
db.close();
|
|
127
|
-
"
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
Rapor sonuna ekle:
|
|
131
|
-
```
|
|
132
|
-
Stale: {stale} doc | Raw episodes: {raw} | → Detay: /mindlore-maintain
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
## Rules
|
|
136
|
-
|
|
137
|
-
- NEVER write learnings or nominations without user approval
|
|
138
|
-
- Group related patterns into existing topic files
|
|
139
|
-
- Reflect READS episodes, diary WRITES episodes — clear separation
|
|
140
|
-
- Mark processed episodes so future reflect skips them
|
|
141
|
-
- Append to `log.md`: `| {date} | reflect | {N} episodes processed, {M} learnings written |`
|
|
1
|
+
---
|
|
2
|
+
name: mindlore-reflect
|
|
3
|
+
description: Pattern extraction from episodes — 3-tier confidence, nomination pipeline, CLAUDE.md update proposals.
|
|
4
|
+
context: fork
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Script Resolution
|
|
8
|
+
|
|
9
|
+
Resolve `MINDLORE_PKG` (package root) using one of these methods, in order:
|
|
10
|
+
1. If CC injected "Base directory for this skill: /path/to/skills/mindlore-reflect" → `MINDLORE_PKG = {base_directory}/../..`
|
|
11
|
+
2. Fallback: run `node -e "console.log(require('path').join(require('child_process').execSync('npm root -g',{encoding:'utf8'}).trim(),'mindlore')))"`
|
|
12
|
+
|
|
13
|
+
Use: `node "$MINDLORE_PKG/dist/scripts/..."` for all script commands.
|
|
14
|
+
|
|
15
|
+
# /mindlore-reflect
|
|
16
|
+
|
|
17
|
+
## Scope
|
|
18
|
+
|
|
19
|
+
Scans both project + global `~/.mindlore/` diary/ for patterns.
|
|
20
|
+
|
|
21
|
+
## Trigger
|
|
22
|
+
|
|
23
|
+
`/mindlore-reflect` or `/mindlore-log reflect`
|
|
24
|
+
|
|
25
|
+
## On Start — Check pending nominations + skill_memory
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
node "$MINDLORE_PKG/dist/scripts/lib/skill-memory.js" get mindlore-reflect last_reflect_date
|
|
29
|
+
node "$MINDLORE_PKG/dist/scripts/lib/skill-memory.js" get mindlore-reflect nomination_count
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Check pending nominations:
|
|
33
|
+
```sql
|
|
34
|
+
SELECT id, summary, body, created_at FROM episodes
|
|
35
|
+
WHERE kind = 'nomination' AND status = 'staged' AND project = ?
|
|
36
|
+
ORDER BY created_at ASC
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
If pending nominations exist, present them first:
|
|
40
|
+
```
|
|
41
|
+
-- Bekleyen Nomination'lar ({N} adet) --
|
|
42
|
+
1. "{summary}" (staged {days} gun once)
|
|
43
|
+
Target: learnings | Confidence: 3x
|
|
44
|
+
|
|
45
|
+
Onaylamak istediklerini sec, veya 'skip':
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Flow
|
|
49
|
+
|
|
50
|
+
1. Read active episodes: `WHERE status = 'active' AND source IN ('hook', 'diary')`
|
|
51
|
+
2. Filter by time: `--days 7` (default), `--days 30`
|
|
52
|
+
3. Present summary: "Found N episodes spanning DATE1 to DATE2"
|
|
53
|
+
4. LLM analyzes episodes for recurring patterns:
|
|
54
|
+
- Repeated decisions (same choice 2+ times)
|
|
55
|
+
- Recurring frictions (same blocker/error)
|
|
56
|
+
- Discovery patterns (assumptions that keep breaking)
|
|
57
|
+
- Workflow patterns that worked well
|
|
58
|
+
|
|
59
|
+
5. **3-Tier Confidence Assessment:**
|
|
60
|
+
|
|
61
|
+
| Tekrar | Tier | Aksiyon |
|
|
62
|
+
|--------|------|---------|
|
|
63
|
+
| 1x | Note | Sessiz — episode olarak kalir, raporda goster |
|
|
64
|
+
| 2x | Learning | `kind: learning` episode olustur, learnings/ dosyasina yaz |
|
|
65
|
+
| 3x+ | Nomination | `kind: nomination, status: staged, source: reflect` episode olustur |
|
|
66
|
+
|
|
67
|
+
6. **Structured report:**
|
|
68
|
+
```
|
|
69
|
+
-- Reflect Raporu (son {days} gun, {N} episode) --
|
|
70
|
+
|
|
71
|
+
Friction ({count}):
|
|
72
|
+
- {summary} — {repeat_count}x tekrar
|
|
73
|
+
|
|
74
|
+
Discoveries ({count}):
|
|
75
|
+
- {summary}
|
|
76
|
+
|
|
77
|
+
Patterns:
|
|
78
|
+
- "{pattern}" -> 3x tekrar -> NOMINATION (staged)
|
|
79
|
+
- "{pattern}" -> 2x tekrar -> LEARNING
|
|
80
|
+
- "{pattern}" -> 1x -> NOTE
|
|
81
|
+
|
|
82
|
+
Onerilen:
|
|
83
|
+
[ ] {rule} ({repeat_count}x, {confidence} confidence)
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
7. **Nomination creation (3x+ tekrar):**
|
|
87
|
+
```sql
|
|
88
|
+
INSERT INTO episodes (summary, body, kind, status, source, project, created_at)
|
|
89
|
+
VALUES (?, ?, 'nomination', 'staged', 'reflect', ?, ?)
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
8. **Nomination approval flow:**
|
|
93
|
+
User approves -> `status: staged -> approved` -> write to target:
|
|
94
|
+
- `learnings` -> `learnings/{topic}.md`
|
|
95
|
+
- `claude.md` -> project CLAUDE.md'ye kural ekle
|
|
96
|
+
- `domain:{slug}` -> ilgili domain sayfasina ekle
|
|
97
|
+
|
|
98
|
+
Approval SQL:
|
|
99
|
+
```sql
|
|
100
|
+
UPDATE episodes SET status = 'approved', graduated_at = datetime('now') WHERE id = ?
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
User rejects -> `status: staged -> rejected` + rejection reason
|
|
104
|
+
|
|
105
|
+
Rejection SQL:
|
|
106
|
+
```sql
|
|
107
|
+
UPDATE episodes SET status = 'rejected', rejected_at = datetime('now'), rejection_reason = ? WHERE id = ?
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## On End — Write skill_memory
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
node "$MINDLORE_PKG/dist/scripts/lib/skill-memory.js" set mindlore-reflect last_reflect_date "$(date -I)"
|
|
114
|
+
node "$MINDLORE_PKG/dist/scripts/lib/skill-memory.js" set mindlore-reflect nomination_count "{staged_count}"
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Quick Health Summary (v0.5.3)
|
|
118
|
+
|
|
119
|
+
After pattern extraction, run quick SQL checks (0 token, <1ms):
|
|
120
|
+
```bash
|
|
121
|
+
node -e "
|
|
122
|
+
const db = require('better-sqlite3')(require('path').join(require('os').homedir(), '.mindlore', 'mindlore.db'), {readonly:true});
|
|
123
|
+
const stale = db.prepare(\"SELECT COUNT(*) as c FROM file_hashes WHERE recall_count = 0 AND archived_at IS NULL AND last_indexed < datetime('now','-60 days')\").get()?.c ?? 0;
|
|
124
|
+
const raw = db.prepare(\"SELECT COUNT(*) as c FROM episodes WHERE (consolidation_status = 'raw' OR consolidation_status IS NULL) AND kind IN ('learning','discovery','friction','decision')\").get()?.c ?? 0;
|
|
125
|
+
console.log(JSON.stringify({stale, raw}));
|
|
126
|
+
db.close();
|
|
127
|
+
"
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Rapor sonuna ekle:
|
|
131
|
+
```
|
|
132
|
+
Stale: {stale} doc | Raw episodes: {raw} | → Detay: /mindlore-maintain
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Rules
|
|
136
|
+
|
|
137
|
+
- NEVER write learnings or nominations without user approval
|
|
138
|
+
- Group related patterns into existing topic files
|
|
139
|
+
- Reflect READS episodes, diary WRITES episodes — clear separation
|
|
140
|
+
- Mark processed episodes so future reflect skips them
|
|
141
|
+
- Append to `log.md`: `| {date} | reflect | {N} episodes processed, {M} learnings written |`
|
|
@@ -1,106 +1,106 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: mindlore-stats
|
|
3
|
-
description: Show context contribution and cost per session — hook calls, durations, DB stats.
|
|
4
|
-
effort: low
|
|
5
|
-
context: fork
|
|
6
|
-
allowed-tools: [Bash, Read]
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Script Resolution
|
|
10
|
-
|
|
11
|
-
Resolve `MINDLORE_DIR` (active knowledge base directory) using:
|
|
12
|
-
1. If project `.mindlore/` exists → use it
|
|
13
|
-
2. Else → use `~/.mindlore/`
|
|
14
|
-
|
|
15
|
-
# /mindlore-stats
|
|
16
|
-
|
|
17
|
-
Show context contribution and cost per session — hook calls, durations, DB stats.
|
|
18
|
-
|
|
19
|
-
## Trigger
|
|
20
|
-
|
|
21
|
-
User says "mindlore stats", "stats", "context cost", "hook performance", "ne kadar yer kaplıyor".
|
|
22
|
-
|
|
23
|
-
## Execution
|
|
24
|
-
|
|
25
|
-
### 1. Telemetry Analysis
|
|
26
|
-
|
|
27
|
-
Read `$MINDLORE_DIR/telemetry.jsonl` (each line is a JSON object):
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
# Count lines and read last 500 for session estimate
|
|
31
|
-
wc -l "$MINDLORE_DIR/telemetry.jsonl"
|
|
32
|
-
tail -500 "$MINDLORE_DIR/telemetry.jsonl"
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
Parse each line as JSON with fields: `hook` (string), `duration` (number, ms), `ts` (ISO timestamp), optionally `injectSize` (number, chars).
|
|
36
|
-
|
|
37
|
-
Calculate:
|
|
38
|
-
- **Total hook calls (all time)**: total line count
|
|
39
|
-
- **Hook calls (session)**: lines where `ts` is within last 8 hours
|
|
40
|
-
- **Avg duration per hook**: group by `hook`, compute mean `duration`
|
|
41
|
-
- **Session inject avg**: from events where `hook === "mindlore-session-focus"`, average `injectSize` (chars ÷ 4 ≈ tokens)
|
|
42
|
-
- **Search inject avg**: from events where `hook === "mindlore-search"`, average `injectSize` (chars ÷ 4 ≈ tokens)
|
|
43
|
-
|
|
44
|
-
### 2. DB Stats
|
|
45
|
-
|
|
46
|
-
Query `$MINDLORE_DIR/mindlore.db`:
|
|
47
|
-
|
|
48
|
-
```bash
|
|
49
|
-
# Indexed docs
|
|
50
|
-
node -e "
|
|
51
|
-
const DB = require('better-sqlite3');
|
|
52
|
-
const db = new DB('$MINDLORE_DIR/mindlore.db', {readonly:true});
|
|
53
|
-
const total = db.prepare('SELECT COUNT(*) as n FROM file_hashes').get().n;
|
|
54
|
-
const stale = db.prepare(\"SELECT COUNT(*) as n FROM file_hashes WHERE last_indexed < datetime('now','-30 days')\").get().n;
|
|
55
|
-
const epRows = db.prepare('SELECT kind, COUNT(*) as n FROM episodes GROUP BY kind').all();
|
|
56
|
-
const sessions = db.prepare('SELECT COUNT(*) as n FROM mindlore_fts_sessions').get()?.n ?? 'N/A';
|
|
57
|
-
console.log(JSON.stringify({total, stale, epRows, sessions}));
|
|
58
|
-
db.close();
|
|
59
|
-
"
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
Get DB file size:
|
|
63
|
-
|
|
64
|
-
```bash
|
|
65
|
-
node -e "const fs=require('fs'); const s=fs.statSync('$MINDLORE_DIR/mindlore.db'); console.log((s.size/1024/1024).toFixed(2)+' MB');"
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
### 3. Format Output
|
|
69
|
-
|
|
70
|
-
Print a compact stats table:
|
|
71
|
-
|
|
72
|
-
```
|
|
73
|
-
## Mindlore Stats
|
|
74
|
-
|
|
75
|
-
| Metric | Value |
|
|
76
|
-
|--------|-------|
|
|
77
|
-
| DB Size | X MB |
|
|
78
|
-
| Indexed Docs | N |
|
|
79
|
-
| Stale Docs (30d+) | N |
|
|
80
|
-
| Episodes (active) | N |
|
|
81
|
-
| Hook Calls (session) | N |
|
|
82
|
-
| Hook Calls (all time) | N |
|
|
83
|
-
| Avg Hook Duration | Xms |
|
|
84
|
-
| Session Inject Avg | ~N tokens |
|
|
85
|
-
| Search Inject Avg | ~N tokens |
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
Then add a per-hook breakdown if hook calls > 0:
|
|
89
|
-
|
|
90
|
-
```
|
|
91
|
-
### Hook Breakdown (session)
|
|
92
|
-
|
|
93
|
-
| Hook | Calls | Avg Duration |
|
|
94
|
-
|------|-------|-------------|
|
|
95
|
-
| mindlore-session-focus | N | Xms |
|
|
96
|
-
| mindlore-search | N | Xms |
|
|
97
|
-
| ... | | |
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
## Notes
|
|
101
|
-
|
|
102
|
-
- If `telemetry.jsonl` does not exist: report "No telemetry data yet"
|
|
103
|
-
- If `mindlore.db` does not exist: report "DB not found — run `npx mindlore init`"
|
|
104
|
-
- If `episodes` table missing: skip episode count, show "—"
|
|
105
|
-
- Inject size in tokens is approximate (chars ÷ 4)
|
|
106
|
-
- "Session" = last 8 hours from current time
|
|
1
|
+
---
|
|
2
|
+
name: mindlore-stats
|
|
3
|
+
description: Show context contribution and cost per session — hook calls, durations, DB stats.
|
|
4
|
+
effort: low
|
|
5
|
+
context: fork
|
|
6
|
+
allowed-tools: [Bash, Read]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Script Resolution
|
|
10
|
+
|
|
11
|
+
Resolve `MINDLORE_DIR` (active knowledge base directory) using:
|
|
12
|
+
1. If project `.mindlore/` exists → use it
|
|
13
|
+
2. Else → use `~/.mindlore/`
|
|
14
|
+
|
|
15
|
+
# /mindlore-stats
|
|
16
|
+
|
|
17
|
+
Show context contribution and cost per session — hook calls, durations, DB stats.
|
|
18
|
+
|
|
19
|
+
## Trigger
|
|
20
|
+
|
|
21
|
+
User says "mindlore stats", "stats", "context cost", "hook performance", "ne kadar yer kaplıyor".
|
|
22
|
+
|
|
23
|
+
## Execution
|
|
24
|
+
|
|
25
|
+
### 1. Telemetry Analysis
|
|
26
|
+
|
|
27
|
+
Read `$MINDLORE_DIR/telemetry.jsonl` (each line is a JSON object):
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# Count lines and read last 500 for session estimate
|
|
31
|
+
wc -l "$MINDLORE_DIR/telemetry.jsonl"
|
|
32
|
+
tail -500 "$MINDLORE_DIR/telemetry.jsonl"
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Parse each line as JSON with fields: `hook` (string), `duration` (number, ms), `ts` (ISO timestamp), optionally `injectSize` (number, chars).
|
|
36
|
+
|
|
37
|
+
Calculate:
|
|
38
|
+
- **Total hook calls (all time)**: total line count
|
|
39
|
+
- **Hook calls (session)**: lines where `ts` is within last 8 hours
|
|
40
|
+
- **Avg duration per hook**: group by `hook`, compute mean `duration`
|
|
41
|
+
- **Session inject avg**: from events where `hook === "mindlore-session-focus"`, average `injectSize` (chars ÷ 4 ≈ tokens)
|
|
42
|
+
- **Search inject avg**: from events where `hook === "mindlore-search"`, average `injectSize` (chars ÷ 4 ≈ tokens)
|
|
43
|
+
|
|
44
|
+
### 2. DB Stats
|
|
45
|
+
|
|
46
|
+
Query `$MINDLORE_DIR/mindlore.db`:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
# Indexed docs
|
|
50
|
+
node -e "
|
|
51
|
+
const DB = require('better-sqlite3');
|
|
52
|
+
const db = new DB('$MINDLORE_DIR/mindlore.db', {readonly:true});
|
|
53
|
+
const total = db.prepare('SELECT COUNT(*) as n FROM file_hashes').get().n;
|
|
54
|
+
const stale = db.prepare(\"SELECT COUNT(*) as n FROM file_hashes WHERE last_indexed < datetime('now','-30 days')\").get().n;
|
|
55
|
+
const epRows = db.prepare('SELECT kind, COUNT(*) as n FROM episodes GROUP BY kind').all();
|
|
56
|
+
const sessions = db.prepare('SELECT COUNT(*) as n FROM mindlore_fts_sessions').get()?.n ?? 'N/A';
|
|
57
|
+
console.log(JSON.stringify({total, stale, epRows, sessions}));
|
|
58
|
+
db.close();
|
|
59
|
+
"
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Get DB file size:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
node -e "const fs=require('fs'); const s=fs.statSync('$MINDLORE_DIR/mindlore.db'); console.log((s.size/1024/1024).toFixed(2)+' MB');"
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### 3. Format Output
|
|
69
|
+
|
|
70
|
+
Print a compact stats table:
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
## Mindlore Stats
|
|
74
|
+
|
|
75
|
+
| Metric | Value |
|
|
76
|
+
|--------|-------|
|
|
77
|
+
| DB Size | X MB |
|
|
78
|
+
| Indexed Docs | N |
|
|
79
|
+
| Stale Docs (30d+) | N |
|
|
80
|
+
| Episodes (active) | N |
|
|
81
|
+
| Hook Calls (session) | N |
|
|
82
|
+
| Hook Calls (all time) | N |
|
|
83
|
+
| Avg Hook Duration | Xms |
|
|
84
|
+
| Session Inject Avg | ~N tokens |
|
|
85
|
+
| Search Inject Avg | ~N tokens |
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Then add a per-hook breakdown if hook calls > 0:
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
### Hook Breakdown (session)
|
|
92
|
+
|
|
93
|
+
| Hook | Calls | Avg Duration |
|
|
94
|
+
|------|-------|-------------|
|
|
95
|
+
| mindlore-session-focus | N | Xms |
|
|
96
|
+
| mindlore-search | N | Xms |
|
|
97
|
+
| ... | | |
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Notes
|
|
101
|
+
|
|
102
|
+
- If `telemetry.jsonl` does not exist: report "No telemetry data yet"
|
|
103
|
+
- If `mindlore.db` does not exist: report "DB not found — run `npx mindlore init`"
|
|
104
|
+
- If `episodes` table missing: skip episode count, show "—"
|
|
105
|
+
- Inject size in tokens is approximate (chars ÷ 4)
|
|
106
|
+
- "Session" = last 8 hours from current time
|
package/templates/INDEX.md
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
# Mindlore Index
|
|
2
|
-
|
|
3
|
-
## Domains
|
|
4
|
-
|
|
5
|
-
### Entities
|
|
6
|
-
|
|
7
|
-
### Concepts
|
|
8
|
-
|
|
9
|
-
## Connections
|
|
10
|
-
|
|
11
|
-
## Recent
|
|
12
|
-
|
|
13
|
-
## Stats
|
|
14
|
-
0 source, 0 analysis, 0 total
|
|
1
|
+
# Mindlore Index
|
|
2
|
+
|
|
3
|
+
## Domains
|
|
4
|
+
|
|
5
|
+
### Entities
|
|
6
|
+
|
|
7
|
+
### Concepts
|
|
8
|
+
|
|
9
|
+
## Connections
|
|
10
|
+
|
|
11
|
+
## Recent
|
|
12
|
+
|
|
13
|
+
## Stats
|
|
14
|
+
0 source, 0 analysis, 0 total
|