mindlore 0.6.0 → 0.6.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.
Files changed (127) hide show
  1. package/README.md +20 -13
  2. package/SCHEMA.md +3 -2
  3. package/dist/scripts/cc-session-sync.d.ts +1 -0
  4. package/dist/scripts/cc-session-sync.d.ts.map +1 -1
  5. package/dist/scripts/cc-session-sync.js +55 -0
  6. package/dist/scripts/cc-session-sync.js.map +1 -1
  7. package/dist/scripts/fetch-raw.js +62 -2
  8. package/dist/scripts/fetch-raw.js.map +1 -1
  9. package/dist/scripts/init.js +92 -47
  10. package/dist/scripts/init.js.map +1 -1
  11. package/dist/scripts/lib/constants.d.ts +4 -0
  12. package/dist/scripts/lib/constants.d.ts.map +1 -1
  13. package/dist/scripts/lib/constants.js +11 -1
  14. package/dist/scripts/lib/constants.js.map +1 -1
  15. package/dist/scripts/lib/daemon.d.ts +1 -0
  16. package/dist/scripts/lib/daemon.d.ts.map +1 -1
  17. package/dist/scripts/lib/daemon.js +1 -0
  18. package/dist/scripts/lib/daemon.js.map +1 -1
  19. package/dist/scripts/lib/decay.d.ts.map +1 -1
  20. package/dist/scripts/lib/decay.js +3 -0
  21. package/dist/scripts/lib/decay.js.map +1 -1
  22. package/dist/scripts/lib/episodes.d.ts +1 -1
  23. package/dist/scripts/lib/episodes.d.ts.map +1 -1
  24. package/dist/scripts/lib/episodes.js +1 -1
  25. package/dist/scripts/lib/episodes.js.map +1 -1
  26. package/dist/scripts/lib/hybrid-search.d.ts +1 -0
  27. package/dist/scripts/lib/hybrid-search.d.ts.map +1 -1
  28. package/dist/scripts/lib/hybrid-search.js +16 -1
  29. package/dist/scripts/lib/hybrid-search.js.map +1 -1
  30. package/dist/scripts/lib/migrations-v061.d.ts +3 -0
  31. package/dist/scripts/lib/migrations-v061.d.ts.map +1 -0
  32. package/dist/scripts/lib/migrations-v061.js +58 -0
  33. package/dist/scripts/lib/migrations-v061.js.map +1 -0
  34. package/dist/scripts/lib/migrations-v062.d.ts +3 -0
  35. package/dist/scripts/lib/migrations-v062.d.ts.map +1 -0
  36. package/dist/scripts/lib/migrations-v062.js +35 -0
  37. package/dist/scripts/lib/migrations-v062.js.map +1 -0
  38. package/dist/scripts/lib/session-payload.d.ts.map +1 -1
  39. package/dist/scripts/lib/session-payload.js +12 -0
  40. package/dist/scripts/lib/session-payload.js.map +1 -1
  41. package/dist/scripts/lib/triage.d.ts +18 -0
  42. package/dist/scripts/lib/triage.d.ts.map +1 -0
  43. package/dist/scripts/lib/triage.js +81 -0
  44. package/dist/scripts/lib/triage.js.map +1 -0
  45. package/dist/scripts/mindlore-daemon.js +1 -0
  46. package/dist/scripts/mindlore-daemon.js.map +1 -1
  47. package/dist/scripts/mindlore-doctor.d.ts +18 -0
  48. package/dist/scripts/mindlore-doctor.d.ts.map +1 -0
  49. package/dist/scripts/mindlore-doctor.js +243 -0
  50. package/dist/scripts/mindlore-doctor.js.map +1 -0
  51. package/dist/scripts/mindlore-fts5-index.js +16 -3
  52. package/dist/scripts/mindlore-fts5-index.js.map +1 -1
  53. package/dist/scripts/mindlore-fts5-search.js +12 -10
  54. package/dist/scripts/mindlore-fts5-search.js.map +1 -1
  55. package/dist/scripts/mindlore-health-check.d.ts +10 -0
  56. package/dist/scripts/mindlore-health-check.d.ts.map +1 -1
  57. package/dist/scripts/mindlore-health-check.js +26 -1
  58. package/dist/scripts/mindlore-health-check.js.map +1 -1
  59. package/dist/scripts/mindlore-perf.d.ts +22 -0
  60. package/dist/scripts/mindlore-perf.d.ts.map +1 -0
  61. package/dist/scripts/mindlore-perf.js +130 -0
  62. package/dist/scripts/mindlore-perf.js.map +1 -0
  63. package/dist/tests/compaction-snapshot.test.d.ts +2 -0
  64. package/dist/tests/compaction-snapshot.test.d.ts.map +1 -0
  65. package/dist/tests/compaction-snapshot.test.js +55 -0
  66. package/dist/tests/compaction-snapshot.test.js.map +1 -0
  67. package/dist/tests/decay.test.js +29 -0
  68. package/dist/tests/decay.test.js.map +1 -1
  69. package/dist/tests/diary.test.js +3 -3
  70. package/dist/tests/diary.test.js.map +1 -1
  71. package/dist/tests/doctor.test.d.ts +2 -0
  72. package/dist/tests/doctor.test.d.ts.map +1 -0
  73. package/dist/tests/doctor.test.js +82 -0
  74. package/dist/tests/doctor.test.js.map +1 -0
  75. package/dist/tests/fetch-raw.test.js +12 -5
  76. package/dist/tests/fetch-raw.test.js.map +1 -1
  77. package/dist/tests/fts5.test.js +28 -0
  78. package/dist/tests/fts5.test.js.map +1 -1
  79. package/dist/tests/health-check-memory.test.js +27 -0
  80. package/dist/tests/health-check-memory.test.js.map +1 -1
  81. package/dist/tests/helpers/db.d.ts.map +1 -1
  82. package/dist/tests/helpers/db.js +3 -1
  83. package/dist/tests/helpers/db.js.map +1 -1
  84. package/dist/tests/hook-smoke.test.js +27 -0
  85. package/dist/tests/hook-smoke.test.js.map +1 -1
  86. package/dist/tests/hybrid-search.test.js +25 -0
  87. package/dist/tests/hybrid-search.test.js.map +1 -1
  88. package/dist/tests/init.test.js +20 -0
  89. package/dist/tests/init.test.js.map +1 -1
  90. package/dist/tests/migrations-v061.test.d.ts +2 -0
  91. package/dist/tests/migrations-v061.test.d.ts.map +1 -0
  92. package/dist/tests/migrations-v061.test.js +70 -0
  93. package/dist/tests/migrations-v061.test.js.map +1 -0
  94. package/dist/tests/migrations-v062.test.d.ts +2 -0
  95. package/dist/tests/migrations-v062.test.d.ts.map +1 -0
  96. package/dist/tests/migrations-v062.test.js +61 -0
  97. package/dist/tests/migrations-v062.test.js.map +1 -0
  98. package/dist/tests/nomination.test.js +1 -1
  99. package/dist/tests/savings.test.d.ts +2 -0
  100. package/dist/tests/savings.test.d.ts.map +1 -0
  101. package/dist/tests/savings.test.js +87 -0
  102. package/dist/tests/savings.test.js.map +1 -0
  103. package/dist/tests/session-focus.test.js +15 -0
  104. package/dist/tests/session-focus.test.js.map +1 -1
  105. package/dist/tests/session-summary.test.d.ts +2 -0
  106. package/dist/tests/session-summary.test.d.ts.map +1 -0
  107. package/dist/tests/session-summary.test.js +102 -0
  108. package/dist/tests/session-summary.test.js.map +1 -0
  109. package/dist/tests/telemetry-perf.test.d.ts +2 -0
  110. package/dist/tests/telemetry-perf.test.d.ts.map +1 -0
  111. package/dist/tests/telemetry-perf.test.js +65 -0
  112. package/dist/tests/telemetry-perf.test.js.map +1 -0
  113. package/dist/tests/triage.test.d.ts +2 -0
  114. package/dist/tests/triage.test.d.ts.map +1 -0
  115. package/dist/tests/triage.test.js +69 -0
  116. package/dist/tests/triage.test.js.map +1 -0
  117. package/hooks/lib/mindlore-common.cjs +54 -6
  118. package/hooks/mindlore-fts5-sync.cjs +10 -4
  119. package/hooks/mindlore-post-compact.cjs +23 -3
  120. package/hooks/mindlore-pre-compact.cjs +78 -3
  121. package/hooks/mindlore-search.cjs +20 -11
  122. package/hooks/mindlore-session-end.cjs +32 -19
  123. package/hooks/mindlore-session-focus.cjs +107 -72
  124. package/package.json +7 -4
  125. package/plugin.json +1 -1
  126. package/skills/mindlore-maintain/SKILL.md +1 -0
  127. package/templates/config.json +1 -1
package/README.md CHANGED
@@ -45,12 +45,19 @@ To add your first source:
45
45
  ### CLI Commands
46
46
 
47
47
  ```bash
48
- npx mindlore health # 16-point structural health check
49
- npx mindlore search "query" # FTS5 keyword search
50
- npx mindlore index # Full FTS5 re-index
51
- npx mindlore quality # Bulk quality assignment for sources
52
- npx mindlore backup init # Git-based backup for ~/.mindlore/
53
- npx mindlore backup status # Show backup status + last commit
48
+ npx mindlore # Install / upgrade
49
+ npx mindlore --upgrade # Upgrade only (skip dir creation)
50
+ npx mindlore health # 16-point structural health check
51
+ npx mindlore doctor # 7-point runtime validation (Node, DB, hooks, skills)
52
+ npx mindlore perf # Hook latency report (p50/p95/p99)
53
+ npx mindlore perf --top 10 # Top 10 slowest hook calls
54
+ npx mindlore perf --savings # Context token savings report
55
+ npx mindlore search "query" # FTS5 keyword search (knowledge)
56
+ npx mindlore search "query" --sessions # Search session data (cc-subagent, cc-session)
57
+ npx mindlore index # Full FTS5 re-index
58
+ npx mindlore quality # Bulk quality assignment for sources
59
+ npx mindlore backup init # Git-based backup for ~/.mindlore/
60
+ npx mindlore backup status # Show backup status + last commit
54
61
  npx mindlore obsidian export --vault /path # Export to Obsidian vault
55
62
  npx mindlore obsidian import --vault /path # Import from Obsidian vault
56
63
  npx mindlore episodes list # List recent episodes
@@ -114,7 +121,7 @@ Nine directories, each mapping to a frontmatter `type`:
114
121
  ├── decisions/ # Decision records
115
122
  ├── INDEX.md # Navigation map (~15 lines)
116
123
  ├── SCHEMA.md # LLM specification
117
- └── mindlore.db # FTS5 search database
124
+ └── mindlore.db # FTS5 search database (mindlore_fts + mindlore_fts_sessions)
118
125
  ```
119
126
 
120
127
  ## Installation
@@ -125,7 +132,7 @@ Nine directories, each mapping to a frontmatter `type`:
125
132
  npx mindlore
126
133
  ```
127
134
 
128
- Requires: Node.js 20+ (24 supported), `better-sqlite3` ^12 (installed automatically).
135
+ Requires: Node.js 20+ (22, 24 supported), `better-sqlite3` ^12 (installed automatically).
129
136
 
130
137
  ### Recommended
131
138
 
@@ -177,8 +184,8 @@ SESSION START DURING SESSION SESSIO
177
184
  - **Single global store** — `~/.mindlore/` shared across projects; `project` FTS5 column namespaces per `path.basename(cwd)`
178
185
  - **Project-scoped search** — results filtered by current project, falls back to all projects if none found
179
186
  - **No `.mindlore/`?** — hooks silently skip, zero overhead
180
- - **FTS5 search** — SQLite full-text search with BM25 ranking, no external services
181
- - **Hybrid search** — RRF fusion combining FTS5 keyword + sqlite-vec vector results with synonym expansion
187
+ - **FTS5 search** — SQLite full-text search with BM25 ranking, no external services. Knowledge and session data in separate tables for better IDF quality
188
+ - **Hybrid search** — RRF fusion combining FTS5 keyword + sqlite-vec vector results with synonym expansion + category boost
182
189
  - **Content-hash dedup** — SHA256 prevents re-indexing unchanged files
183
190
 
184
191
  ## Daily Usage
@@ -211,12 +218,12 @@ Skills spawn subagents with `[mindlore:SKILL]` markers — the model-router hook
211
218
 
212
219
  ## Hooks
213
220
 
214
- 14 Claude Code lifecycle hooks (v0.5.9):
221
+ 14 Claude Code lifecycle hooks (v0.6.1):
215
222
 
216
223
  | Event | Hook | What it does |
217
224
  |-------|------|-------------|
218
- | SessionStart | session-focus | Injects last delta + INDEX + last 3 episodes + version check |
219
- | UserPromptSubmit | search | FTS5 search + episodes recall, project-scoped |
225
+ | SessionStart | session-focus | Injects last delta + INDEX + episodes + corrupt DB auto-recovery |
226
+ | UserPromptSubmit | search | FTS5 search + episodes recall, project-scoped + version tokenization |
220
227
  | UserPromptSubmit | decision-detector | TR+EN decision signal detection |
221
228
  | FileChanged | index | Sync changed files to FTS5 |
222
229
  | FileChanged | fts5-sync | Incremental batch re-index |
package/SCHEMA.md CHANGED
@@ -146,8 +146,9 @@ Discover unexpected connections between sources. Cross-reference analysis.
146
146
  ### FTS5 Search (hooks + scripts)
147
147
 
148
148
  - Database: `.mindlore/mindlore.db`
149
- - Table: `mindlore_fts` (columns: path, content)
150
- - Dedup: `file_hashes` table with SHA256 content-hash
149
+ - Table: `mindlore_fts` — knowledge content (sources, domains, analyses, decisions, diary)
150
+ - Table: `mindlore_fts_sessions` session content (cc-subagent, cc-session) — v0.6.1
151
+ - Dedup: `file_hashes` table with SHA256 content-hash + `table_target` column (v0.6.1)
151
152
  - Tokenizer: `unicode61`
152
153
  - Max results: 3 per query (BM25 ranking)
153
154
  - Hook injects: file path + first 2 headings
@@ -28,5 +28,6 @@ export interface SessionConversion {
28
28
  isSubagent: boolean;
29
29
  }
30
30
  export declare function convertJsonlToMd(jsonlPath: string, projectName: string): SessionConversion;
31
+ export declare function extractSessionSummary(transcriptMd: string): string;
31
32
  export declare function syncSessions(dbPath: string, sessions: SessionFile[], mindloreDir: string): SessionSyncResult;
32
33
  //# sourceMappingURL=cc-session-sync.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cc-session-sync.d.ts","sourceRoot":"","sources":["../../scripts/cc-session-sync.ts"],"names":[],"mappings":";AAEA;;;;;;;;GAQG;AAeH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAgBD,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,IAAI,CAAC;CACb;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,EAAE,CAuDrE;AA2CD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,iBAAiB,CAgE1F;AAaD,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,WAAW,EAAE,EACvB,WAAW,EAAE,MAAM,GAClB,iBAAiB,CAmGnB"}
1
+ {"version":3,"file":"cc-session-sync.d.ts","sourceRoot":"","sources":["../../scripts/cc-session-sync.ts"],"names":[],"mappings":";AAEA;;;;;;;;GAQG;AAeH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAgBD,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,IAAI,CAAC;CACb;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,EAAE,CAuDrE;AA2CD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,iBAAiB,CAgE1F;AAUD,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAsClE;AAaD,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,WAAW,EAAE,EACvB,WAAW,EAAE,MAAM,GAClB,iBAAiB,CAmHnB"}
@@ -15,6 +15,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.discoverSessionFiles = discoverSessionFiles;
17
17
  exports.convertJsonlToMd = convertJsonlToMd;
18
+ exports.extractSessionSummary = extractSessionSummary;
18
19
  exports.syncSessions = syncSessions;
19
20
  const fs_1 = __importDefault(require("fs"));
20
21
  const path_1 = __importDefault(require("path"));
@@ -176,6 +177,47 @@ function convertJsonlToMd(jsonlPath, projectName) {
176
177
  const md = frontmatter + mdParts.join('\n');
177
178
  return { md, date: meta.date, userCount, assistantCount, isSubagent };
178
179
  }
180
+ // ── Session Summary ──────────────────────────────────────────────────
181
+ const DECISION_KEYWORDS = [
182
+ 'karar:', 'ertele', 'seçtik', 'yapma:',
183
+ 'decision:', 'defer', 'chose', 'skip:',
184
+ 'blocker:', 'ertelendi',
185
+ ];
186
+ function extractSessionSummary(transcriptMd) {
187
+ const lines = transcriptMd.split('\n');
188
+ const userMessages = [];
189
+ const decisions = [];
190
+ let inUser = false;
191
+ for (const line of lines) {
192
+ if (line.startsWith('## User')) {
193
+ inUser = true;
194
+ continue;
195
+ }
196
+ if (line.startsWith('## ')) {
197
+ inUser = false;
198
+ continue;
199
+ }
200
+ if (inUser && line.trim()) {
201
+ userMessages.push(line.trim());
202
+ const lower = line.toLowerCase();
203
+ if (DECISION_KEYWORDS.some(kw => lower.includes(kw))) {
204
+ decisions.push(line.trim());
205
+ }
206
+ }
207
+ }
208
+ if (userMessages.length === 0)
209
+ return '';
210
+ const firstIntent = userMessages[0]?.slice(0, 100) ?? '';
211
+ const lastIntent = userMessages[userMessages.length - 1]?.slice(0, 100) ?? '';
212
+ const parts = [`Intent: ${firstIntent}`];
213
+ if (lastIntent && lastIntent !== firstIntent) {
214
+ parts.push(`Son: ${lastIntent}`);
215
+ }
216
+ if (decisions.length > 0) {
217
+ parts.push(`Kararlar: ${decisions.slice(0, 5).join('; ')}`);
218
+ }
219
+ return parts.join(' | ');
220
+ }
179
221
  // ── Sync ──────────────────────────────────────────────────────────────
180
222
  function sessionShortId(sessionId) {
181
223
  return sessionId.startsWith('agent-') ? sessionId.slice(-8) : sessionId.substring(0, 8);
@@ -232,6 +274,19 @@ function syncSessions(dbPath, sessions, mindloreDir) {
232
274
  project: slug,
233
275
  });
234
276
  upsertHash.run(destPath, hash, nowIso, category);
277
+ // Session summary injection (#9)
278
+ if (!isSubagent) {
279
+ try {
280
+ const sessionSummary = extractSessionSummary(md);
281
+ if (sessionSummary) {
282
+ const epSlug = `session-summary-${sessionDate}-${shortId}`;
283
+ const shortSummary = sessionSummary.slice(0, 300);
284
+ db.prepare(`INSERT OR REPLACE INTO episodes (id, kind, scope, project, summary, session_summary, created_at)
285
+ VALUES (?, 'session-summary', 'project', ?, ?, ?, ?)`).run(epSlug, slug, shortSummary, sessionSummary, nowIso);
286
+ }
287
+ }
288
+ catch { /* session_summary column may not exist */ }
289
+ }
235
290
  result.synced++;
236
291
  });
237
292
  for (const session of sessions) {
@@ -1 +1 @@
1
- {"version":3,"file":"cc-session-sync.js","sourceRoot":"","sources":["../../scripts/cc-session-sync.ts"],"names":[],"mappings":";;AAEA;;;;;;;;GAQG;;;;;AA0CH,oDAuDC;AAmDD,4CAgEC;AAaD,oCAuGC;AAtUD,4CAAoB;AACpB,gDAAwB;AACxB,4CAAoB;AACpB,qDAM4B;AAC5B,+DAAwD;AACxD,2DAAkF;AA6BlF,SAAgB,oBAAoB,CAAC,SAAiB;IACpD,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACrD,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,EAAE,CAAC;IAE3C,MAAM,OAAO,GAAkB,EAAE,CAAC;IAElC,IAAI,cAA2B,CAAC;IAChC,IAAI,CAAC;QACH,cAAc,GAAG,YAAE,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YAAE,SAAS;QACnC,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAEnD,IAAI,KAAkB,CAAC;QACvB,IAAI,CAAC;YACH,KAAK,GAAG,YAAE,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QAED,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,oDAAoD;YACpD,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5C,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBAC/C,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC5C,MAAM,IAAI,GAAG,YAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACnC,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC7F,SAAS;YACX,CAAC;YAED,+DAA+D;YAC/D,IAAI,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC3C,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBAC7D,IAAI,QAAqB,CAAC;gBAC1B,IAAI,CAAC;oBACH,QAAQ,GAAG,YAAE,CAAC,WAAW,CAAC,YAAY,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;gBACnE,CAAC;gBAAC,MAAM,CAAC;oBACP,SAAS;gBACX,CAAC;gBACD,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;oBAC1B,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;wBAAE,SAAS;oBAC1D,MAAM,SAAS,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;oBAChD,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;oBAClD,MAAM,IAAI,GAAG,YAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBACnC,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC/F,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,yEAAyE;AAEzE,SAAS,WAAW,CAAC,WAAmB;IACtC,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACjE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAAE,OAAO,WAAW,CAAC;IAE1C,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,eAAe,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,CAAU,CAAC;IAC1F,KAAK,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC;AAChD,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAe;IACzC,IAAI,IAAI,GAAG,SAAS,CAAC;IACrB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,SAAS,GAAG,EAAE,CAAC;IAEnB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACtC,IAAI,CAAC;YACH,qGAAqG;YACrG,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAa,CAAC;YACzC,IAAI,GAAG,CAAC,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACxC,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACtC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;YAC5B,CAAC;YACD,IAAI,GAAG,CAAC,SAAS,IAAI,CAAC,MAAM;gBAAE,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC;YACrD,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG;gBAAE,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;AAC1C,CAAC;AAUD,SAAgB,gBAAgB,CAAC,SAAiB,EAAE,WAAmB;IACrE,MAAM,GAAG,GAAG,YAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACtE,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAErC,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,cAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAElD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,cAAc,GAAG,CAAC,CAAC;IAEvB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,GAAa,CAAC;QAClB,IAAI,CAAC;YACH,qGAAqG;YACrG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAa,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACpD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC;YACrC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC;YACxD,MAAM,KAAK,GAAa,EAAE,CAAC;YAE3B,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;gBAClD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7B,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAClC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;oBAC5B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;wBAChD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;oBAChC,CAAC;gBACH,CAAC;YACH,CAAC;YAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,OAAO,GAAG,IAAA,iCAAa,EAAC,IAAI,CAAC,CAAC;gBACpC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,OAAO,IAAI,CAAC,CAAC;gBAC3C,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM;oBAAE,SAAS,EAAE,CAAC;;oBAChC,cAAc,EAAE,CAAC;YACxB,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG;QAClB,KAAK;QACL,WAAW;QACX,YAAY,IAAI,EAAE;QAClB,eAAe,SAAS,EAAE;QAC1B,SAAS,IAAI,CAAC,IAAI,EAAE;QACpB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI;QACvD,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI;QAC7C,aAAa,SAAS,UAAU,cAAc,YAAY;QAC1D,aAAa,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,EAAE;QACxD,KAAK;QACL,EAAE;QACF,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,MAAM,IAAI,EAAE;QACjE,EAAE;KACH,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE7B,MAAM,EAAE,GAAG,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;AACxE,CAAC;AAED,yEAAyE;AAEzE,SAAS,cAAc,CAAC,SAAiB;IACvC,OAAO,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1F,CAAC;AAGD,qFAAqF;AACrF,uGAAuG;AACvG,MAAM,2BAA2B,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAElD,SAAgB,YAAY,CAC1B,MAAc,EACd,QAAuB,EACvB,WAAmB;IAEnB,MAAM,MAAM,GAAsB,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACxE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAEzC,iHAAiH;IACjH,MAAM,MAAM,GAAG,OAAO,CAAC,IAAA,gCAAiB,EAAC,SAAS,CAAC,CAAqB,CAAC;IACzE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;IAEtD,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,MAAM,EAAE,CAAC,CAAC;QAClD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,mEAAmE,CAAC,CAAC;IAChG,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,iCAAe,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC;IAExE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAEjC,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,OAAoB,EAAE,IAAY,EAAE,OAAe,EAAE,EAAE;QACrF,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAElI,IAAI,SAAS,KAAK,CAAC,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;YAC5C,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACxB,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QAChE,YAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,WAAW,IAAI,OAAO,KAAK,CAAC,CAAC;QAEpE,gGAAgG;QAChG,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAA+D,CAAC;QACrG,IAAI,QAAQ,IAAI,QAAQ,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YAC/C,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,YAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QAEvC,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,mCAAoB,CAAC,CAAC,CAAC,kCAAmB,CAAC;QAEzE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxB,YAAY,CAAC,EAAE,EAAE;YACf,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,WAAW,WAAW,IAAI,OAAO,EAAE;YACzC,WAAW,EAAE,MAAM,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,iBAAiB,IAAI,MAAM,WAAW,EAAE;YAC9F,IAAI,EAAE,KAAK;YACX,QAAQ;YACR,KAAK,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,IAAI,WAAW,MAAM,IAAI,EAAE;YACxE,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,IAAI,IAAI,aAAa;YACjE,YAAY,EAAE,WAAW;YACzB,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QAEH,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAElD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACtD,IAAI,KAAK,GAAG,2BAA2B,EAAE,CAAC;gBACxC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,SAAS;YACX,CAAC;YAED,0EAA0E;YAC1E,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;YAChE,MAAM,aAAa,GAAG,YAAE,CAAC,UAAU,CAAC,OAAO,CAAC;gBAC1C,CAAC,CAAC,YAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAC1D,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;gBACpD,gGAAgG;gBAChG,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAyC,CAAC;gBACjF,IAAI,MAAM,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;oBAC7D,MAAM,CAAC,OAAO,EAAE,CAAC;oBACjB,SAAS;gBACX,CAAC;YACH,CAAC;YAED,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,KAAK,GAAG,EAAE,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,EAAE,CAAC,KAAK,EAAE,CAAC;IACX,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,yEAAyE;AAEzE,MAAM,MAAM,GAAG,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC;AACzE,IAAI,MAAM,EAAE,CAAC;IACX,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,SAAS,GAAG,IAAA,wBAAM,EAAC,IAAI,EAAE,cAAc,CAAC,IAAI,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;IACrF,MAAM,WAAW,GAAG,IAAA,wBAAM,EAAC,IAAI,EAAE,gBAAgB,CAAC,IAAI,kCAAmB,CAAC;IAC1E,MAAM,MAAM,GAAG,IAAA,wBAAM,EAAC,IAAI,EAAE,MAAM,CAAC,IAAI,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,sBAAO,CAAC,CAAC;IAEvE,MAAM,QAAQ,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,gBAAgB,QAAQ,CAAC,MAAM,kBAAkB,CAAC,CAAC;IAE/D,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IAE3D,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,MAAM,cAAc,MAAM,CAAC,OAAO,aAAa,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACvG,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"cc-session-sync.js","sourceRoot":"","sources":["../../scripts/cc-session-sync.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,30 @@ function validateUrl(raw) {
16
16
  return u;
17
17
  }
18
18
  function slugFromUrl(url) {
19
+ const parsed = new URL(url);
20
+ // GitHub repo: owner/repo → repo slug
21
+ const ghMatch = parsed.pathname.match(/^\/([^/]+)\/([^/]+)\/?$/);
22
+ if (parsed.hostname === 'github.com' && ghMatch) {
23
+ return (ghMatch[2] ?? '').replace(/\.git$/, '').toLowerCase();
24
+ }
25
+ // Strip common noise from pathname
26
+ const segments = parsed.pathname
27
+ .replace(/\/$/, '')
28
+ .split('/')
29
+ .filter(s => s && !['index.html', 'index.htm', 'README.md'].includes(s));
30
+ if (segments.length > 0) {
31
+ // Take last 2 meaningful segments max
32
+ const tail = segments.slice(-2).join('-');
33
+ const slug = tail
34
+ .replace(/\.[^.]+$/, '') // strip extension
35
+ .replace(/[^a-zA-Z0-9-]/g, '-') // non-alphanumeric → dash
36
+ .replace(/-{2,}/g, '-') // collapse dashes
37
+ .replace(/^-|-$/g, '') // trim dashes
38
+ .toLowerCase();
39
+ if (slug.length >= 3)
40
+ return slug;
41
+ }
42
+ // Fallback: hash (only if URL has no useful path)
19
43
  return crypto_1.default.createHash('sha256').update(url).digest('hex').slice(0, 12);
20
44
  }
21
45
  function fetchGitHubReadme(url) {
@@ -79,8 +103,20 @@ function generateFrontmatter(url, slug, content) {
79
103
  '',
80
104
  ].join('\n');
81
105
  }
106
+ function findExistingFile(outDir, slug) {
107
+ if (!fs_1.default.existsSync(outDir))
108
+ return null;
109
+ const files = fs_1.default.readdirSync(outDir).filter(f => f.endsWith(`-${slug}.md`));
110
+ if (files.length === 0)
111
+ return null;
112
+ files.sort();
113
+ const latest = files[files.length - 1];
114
+ return latest ? path_1.default.join(outDir, latest) : null;
115
+ }
116
+ const CACHE_TTL_MS = 24 * 60 * 60 * 1000;
82
117
  function main() {
83
118
  const args = process.argv.slice(2);
119
+ const forceFlag = args.includes('--force');
84
120
  const outDirFlag = args.indexOf('--out-dir');
85
121
  const skipIndices = new Set();
86
122
  if (outDirFlag >= 0) {
@@ -93,11 +129,22 @@ function main() {
93
129
  ? args[outDirFlag + 1]
94
130
  : path_1.default.join(process.env.MINDLORE_HOME ?? path_1.default.join(os_1.default.homedir(), '.mindlore'), 'raw');
95
131
  if (!url) {
96
- console.error('Usage: node fetch-raw.js <URL> [--out-dir <path>]');
132
+ console.error('Usage: node fetch-raw.js <URL> [--out-dir <path>] [--force]');
97
133
  process.exit(1);
98
134
  }
99
135
  const parsedUrl = validateUrl(url);
100
136
  const safeUrl = parsedUrl.href;
137
+ const slug = slugFromUrl(safeUrl);
138
+ let cachedPath = findExistingFile(outDir, slug);
139
+ if (!forceFlag && cachedPath) {
140
+ const stat = fs_1.default.statSync(cachedPath);
141
+ const ageMs = Date.now() - stat.mtimeMs;
142
+ if (ageMs < CACHE_TTL_MS) {
143
+ const hoursAgo = Math.round(ageMs / (60 * 60 * 1000));
144
+ console.log(JSON.stringify({ cached: true, file: cachedPath, hours_ago: hoursAgo }));
145
+ return;
146
+ }
147
+ }
101
148
  let content = null;
102
149
  let method = 'curl';
103
150
  if (parsedUrl.hostname === 'github.com' || parsedUrl.hostname.endsWith('.github.com')) {
@@ -117,9 +164,22 @@ function main() {
117
164
  console.error(JSON.stringify({ error: 'All fetch methods failed', url: safeUrl }));
118
165
  process.exit(1);
119
166
  }
120
- const slug = slugFromUrl(safeUrl);
121
167
  const frontmatter = generateFrontmatter(safeUrl, slug, content);
122
168
  const fullContent = frontmatter + content;
169
+ const newHash = crypto_1.default.createHash('sha256').update(content).digest('hex');
170
+ if (!cachedPath)
171
+ cachedPath = findExistingFile(outDir, slug);
172
+ if (cachedPath && !forceFlag) {
173
+ const oldContent = fs_1.default.readFileSync(cachedPath, 'utf8');
174
+ const bodyStart = oldContent.indexOf('---', 4);
175
+ const oldBody = bodyStart > 0 ? oldContent.slice(bodyStart + 3).trim() : oldContent;
176
+ const oldHash = crypto_1.default.createHash('sha256').update(oldBody).digest('hex');
177
+ if (newHash === oldHash) {
178
+ fs_1.default.utimesSync(cachedPath, new Date(), new Date());
179
+ console.log(JSON.stringify({ cached: true, file: cachedPath, reason: 'content_unchanged' }));
180
+ return;
181
+ }
182
+ }
123
183
  fs_1.default.mkdirSync(outDir, { recursive: true });
124
184
  const fileName = `${new Date().toISOString().split('T')[0]}-${slug}.md`;
125
185
  const filePath = path_1.default.join(outDir, fileName);
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-raw.js","sourceRoot":"","sources":["../../scripts/fetch-raw.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetch-raw.js","sourceRoot":"","sources":["../../scripts/fetch-raw.ts"],"names":[],"mappings":"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"}
@@ -19,10 +19,33 @@ const child_process_1 = require("child_process");
19
19
  const constants_js_1 = require("./lib/constants.js");
20
20
  const db_helpers_js_1 = require("./lib/db-helpers.js");
21
21
  const safe_parse_js_1 = require("./lib/safe-parse.js");
22
+ const schema_version_js_1 = require("./lib/schema-version.js");
23
+ const migrations_v062_js_1 = require("./lib/migrations-v062.js");
22
24
  // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- dynamic CJS require, typed by mindlore-common.d.cts
23
25
  const { SQL_FTS_CREATE, ensureEpisodesTable: ensureEpisodesTableCjs } = require((0, constants_js_1.resolveHookCommon)(__dirname));
24
26
  const TEMPLATE_FILES = ['INDEX.md', 'log.md'];
25
27
  // ── Helpers ────────────────────────────────────────────────────────────
28
+ function mergeDefaults(target, defaults) {
29
+ const result = { ...target };
30
+ let changed = false;
31
+ for (const [key, defaultValue] of Object.entries(defaults)) {
32
+ if (!(key in result) || result[key] === undefined || result[key] === null) {
33
+ result[key] = defaultValue;
34
+ changed = true;
35
+ }
36
+ else if (typeof result[key] === 'object' && result[key] !== null && !Array.isArray(result[key]) &&
37
+ typeof defaultValue === 'object' && defaultValue !== null && !Array.isArray(defaultValue)) {
38
+ /* eslint-disable @typescript-eslint/no-unsafe-type-assertion -- narrowed by typeof+null+array checks above */
39
+ const nested = mergeDefaults(result[key], defaultValue);
40
+ /* eslint-enable @typescript-eslint/no-unsafe-type-assertion */
41
+ if (nested.changed) {
42
+ result[key] = nested.result;
43
+ changed = true;
44
+ }
45
+ }
46
+ }
47
+ return { result, changed };
48
+ }
26
49
  function resolvePackageRoot() {
27
50
  // When compiled to dist/scripts/, go up two levels to reach package root
28
51
  // When running as .ts (ts-jest), go up one level
@@ -142,6 +165,8 @@ function createDatabase(baseDir) {
142
165
  // Idempotent: ensure episodes table on pre-v0.4 databases
143
166
  const dbEp = new DatabaseCtor(dbPath);
144
167
  ensureEpisodesTableCjs(dbEp);
168
+ (0, schema_version_js_1.ensureSchemaTable)(dbEp);
169
+ (0, schema_version_js_1.runMigrations)(dbEp, migrations_v062_js_1.V062_MIGRATIONS);
145
170
  dbEp.close();
146
171
  return migrated;
147
172
  }
@@ -157,6 +182,9 @@ function createDatabase(baseDir) {
157
182
  `);
158
183
  // Idempotent: pre-v0.4 installs won't have this table
159
184
  ensureEpisodesTableCjs(db);
185
+ // v0.6.2 migrations (raw_metadata + session_summary)
186
+ (0, schema_version_js_1.ensureSchemaTable)(db);
187
+ (0, schema_version_js_1.runMigrations)(db, migrations_v062_js_1.V062_MIGRATIONS);
160
188
  db.close();
161
189
  return true;
162
190
  }
@@ -340,50 +368,16 @@ function ensureConfig(baseDir, packageRoot) {
340
368
  config.models = { ...constants_js_1.DEFAULT_MODELS };
341
369
  changed = true;
342
370
  }
343
- // v0.5.0: merge new fields from template if missing
371
+ // Merge missing fields from template (handles top-level + nested objects)
344
372
  if (fs_1.default.existsSync(configSrc)) {
345
373
  const template = (0, safe_parse_js_1.readJsonFile)(configSrc);
346
- if (!config.synonyms && template.synonyms) {
347
- config.synonyms = template.synonyms;
348
- changed = true;
349
- }
350
- if (!config.hybrid && template.hybrid) {
351
- config.hybrid = template.hybrid;
352
- changed = true;
353
- }
354
- // Backfill tokenBudget from template for pre-v0.5.1 configs
355
- if (!config.tokenBudget && template.tokenBudget) {
356
- config.tokenBudget = template.tokenBudget;
357
- changed = true;
358
- }
359
- // Backfill backup from template for pre-v0.5.4 configs
360
- if (!config.backup && template.backup) {
361
- config.backup = template.backup;
374
+ /* eslint-disable @typescript-eslint/no-unsafe-type-assertion -- MindloreConfig is a plain object, safe to cast */
375
+ const { result: merged, changed: mergeChanged } = mergeDefaults(config, template);
376
+ /* eslint-enable @typescript-eslint/no-unsafe-type-assertion */
377
+ if (mergeChanged) {
378
+ Object.assign(config, merged);
362
379
  changed = true;
363
380
  }
364
- // Backfill reminders from template for pre-v0.5.4 configs
365
- if (!config.reminders && template.reminders) {
366
- config.reminders = template.reminders;
367
- changed = true;
368
- }
369
- // Merge nested session_focus keys
370
- if (typeof config.session_focus === 'object' && config.session_focus !== null
371
- && typeof template.session_focus === 'object' && template.session_focus !== null) {
372
- const merged = (0, safe_parse_js_1.parseJsonObject)(JSON.stringify(template.session_focus)); // lint-safe cast
373
- const existing = (0, safe_parse_js_1.parseJsonObject)(JSON.stringify(config.session_focus)); // defensive copy
374
- let sfChanged = false;
375
- for (const subKey of Object.keys(merged)) {
376
- if (!(subKey in existing)) {
377
- existing[subKey] = merged[subKey];
378
- sfChanged = true;
379
- }
380
- }
381
- if (sfChanged) {
382
- config.session_focus = existing;
383
- changed = true;
384
- }
385
- }
386
- // Update version to match template
387
381
  if (config.version !== template.version) {
388
382
  config.version = template.version;
389
383
  changed = true;
@@ -403,6 +397,11 @@ function main() {
403
397
  require('./uninstall.js');
404
398
  return;
405
399
  }
400
+ if (command === 'upgrade') {
401
+ process.argv = [...process.argv.slice(0, 2), 'init', '--upgrade'];
402
+ main();
403
+ return;
404
+ }
406
405
  // CLI subcommands — delegate to dist scripts
407
406
  const cliCommands = {
408
407
  health: { script: './mindlore-health-check.js', passArgs: false },
@@ -443,6 +442,7 @@ function main() {
443
442
  console.log(' npx mindlore memory-sync');
444
443
  console.log(' npx mindlore fetch-raw <url>');
445
444
  console.log(' npx mindlore daemon start|stop|status');
445
+ console.log(' npx mindlore upgrade');
446
446
  process.exit(1);
447
447
  }
448
448
  const isRecommended = args.includes('--recommended');
@@ -450,7 +450,8 @@ function main() {
450
450
  // Resolution order: MINDLORE_HOME env var > ~/.mindlore/ (global default).
451
451
  // Project-local .mindlore/ was removed in v0.3.3 and is migrated to .mindlore.bak/ below.
452
452
  const baseDir = constants_js_1.GLOBAL_MINDLORE_DIR;
453
- console.log(`\n Mindlore AI-native knowledge system [global (~/.mindlore/)]\n`);
453
+ const isUpgrade = process.argv.includes('--upgrade');
454
+ console.log(`\n Mindlore — AI-native knowledge system [${isUpgrade ? 'upgrade' : 'global'} (~/.mindlore/)]\n`);
454
455
  // v0.3.3 Migration: rename existing project .mindlore/ → .mindlore.bak/
455
456
  const projectMindlore = path_1.default.join(process.cwd(), constants_js_1.MINDLORE_DIR);
456
457
  if (fs_1.default.existsSync(projectMindlore) && projectMindlore !== baseDir) {
@@ -463,12 +464,14 @@ function main() {
463
464
  (0, constants_js_1.log)('Project .mindlore/ exists — .mindlore.bak/ already present, skipping migration');
464
465
  }
465
466
  }
466
- // Step 1: Directories
467
- const dirsCreated = createDirectories(baseDir);
468
- (0, constants_js_1.log)(dirsCreated > 0
469
- ? `Created ${dirsCreated} directories in ${constants_js_1.MINDLORE_DIR}/`
470
- : 'All directories already exist');
471
- // Step 2: Templates
467
+ // Step 1: Directories (skip on upgrade — dirs already exist)
468
+ if (!isUpgrade) {
469
+ const dirsCreated = createDirectories(baseDir);
470
+ (0, constants_js_1.log)(dirsCreated > 0
471
+ ? `Created ${dirsCreated} directories in ${constants_js_1.MINDLORE_DIR}/`
472
+ : 'All directories already exist');
473
+ }
474
+ // Step 2: Templates (always run — may have new templates)
472
475
  const filesCopied = copyTemplates(baseDir, packageRoot);
473
476
  (0, constants_js_1.log)(filesCopied > 0
474
477
  ? `Copied ${filesCopied} template files`
@@ -589,7 +592,49 @@ function main() {
589
592
  fs_1.default.writeFileSync(versionPath, packageJson.version, 'utf8');
590
593
  fs_1.default.writeFileSync(pkgVersionPath, packageJson.version, 'utf8');
591
594
  (0, constants_js_1.log)(`Version: ${packageJson.version}`);
595
+ // Step 12: Register agents (v0.6.1)
596
+ const agentsAdded = registerAgents(packageRoot);
597
+ if (agentsAdded > 0) {
598
+ (0, constants_js_1.log)(`Registered ${agentsAdded} agents in ~/.claude/agents/`);
599
+ }
600
+ // Step 13: Auto-doctor (v0.6.1)
601
+ runDoctor(packageRoot);
592
602
  console.log('\n Done! Start with: /mindlore-ingest\n');
593
603
  }
604
+ function registerAgents(packageRoot) {
605
+ const agentsDir = path_1.default.join(packageRoot, 'agents');
606
+ if (!fs_1.default.existsSync(agentsDir))
607
+ return 0;
608
+ const targetDir = path_1.default.join((0, constants_js_1.homedir)(), '.claude', 'agents');
609
+ ensureDir(targetDir);
610
+ let copied = 0;
611
+ for (const file of fs_1.default.readdirSync(agentsDir)) {
612
+ const src = path_1.default.join(agentsDir, file);
613
+ const dest = path_1.default.join(targetDir, file);
614
+ if (!fs_1.default.statSync(src).isFile())
615
+ continue;
616
+ if (fs_1.default.existsSync(dest)) {
617
+ const srcStat = fs_1.default.statSync(src);
618
+ const destStat = fs_1.default.statSync(dest);
619
+ if (srcStat.size === destStat.size && srcStat.mtimeMs <= destStat.mtimeMs)
620
+ continue;
621
+ }
622
+ fs_1.default.copyFileSync(src, dest);
623
+ copied++;
624
+ }
625
+ return copied;
626
+ }
627
+ function runDoctor(packageRoot) {
628
+ try {
629
+ const doctorScript = path_1.default.join(packageRoot, 'dist', 'scripts', 'mindlore-doctor.js');
630
+ if (fs_1.default.existsSync(doctorScript)) {
631
+ const { execFileSync } = require('child_process');
632
+ execFileSync(process.execPath, [doctorScript], {
633
+ stdio: 'inherit', timeout: 10000, windowsHide: true,
634
+ });
635
+ }
636
+ }
637
+ catch { /* doctor failure is non-blocking */ }
638
+ }
594
639
  main();
595
640
  //# sourceMappingURL=init.js.map