clawvault 1.10.0 → 1.10.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -134,11 +134,17 @@ clawvault sync
|
|
|
134
134
|
|
|
135
135
|
## Search
|
|
136
136
|
|
|
137
|
-
|
|
137
|
+
Use `clawvault search` / `qmd` for vault search — it indexes the **entire vault** (decisions/, people/, lessons/, observations/, etc.).
|
|
138
|
+
|
|
139
|
+
OpenClaw's built-in `memory_search` only indexes `MEMORY.md` + `memory/**/*.md`. If your vault lives inside `memory/`, it'll work. If your vault is elsewhere, `memory_search` won't find your ClawVault categories.
|
|
138
140
|
|
|
139
141
|
```bash
|
|
140
|
-
|
|
141
|
-
clawvault
|
|
142
|
+
# Full vault search (recommended)
|
|
143
|
+
clawvault search "query" # BM25 keyword
|
|
144
|
+
clawvault vsearch "what did I decide" # Semantic (local embeddings)
|
|
145
|
+
|
|
146
|
+
# OpenClaw memory search (only MEMORY.md + memory/*.md)
|
|
147
|
+
# Works if vault is inside memory/, misses vault categories otherwise
|
|
142
148
|
```
|
|
143
149
|
|
|
144
150
|
## Vault Structure
|
|
@@ -540,7 +540,8 @@ var Router = class {
|
|
|
540
540
|
const filePath = path.join(categoryDir, `${item.date}.md`);
|
|
541
541
|
const existing = fs.existsSync(filePath) ? fs.readFileSync(filePath, "utf-8").trim() : "";
|
|
542
542
|
if (existing.includes(item.content)) return;
|
|
543
|
-
const
|
|
543
|
+
const linkedContent = this.addWikiLinks(item.content);
|
|
544
|
+
const entry = `- ${item.priority} ${linkedContent}`;
|
|
544
545
|
const header = existing ? "" : `# ${category} \u2014 ${item.date}
|
|
545
546
|
`;
|
|
546
547
|
const newContent = existing ? `${existing}
|
|
@@ -550,6 +551,160 @@ ${entry}
|
|
|
550
551
|
`;
|
|
551
552
|
fs.writeFileSync(filePath, newContent, "utf-8");
|
|
552
553
|
}
|
|
554
|
+
/**
|
|
555
|
+
* Auto-link proper nouns and known entities with [[wiki-links]].
|
|
556
|
+
* Scans for capitalized names, project names, and tool names.
|
|
557
|
+
* Skips content already inside [[brackets]].
|
|
558
|
+
*/
|
|
559
|
+
addWikiLinks(content) {
|
|
560
|
+
if (content.includes("[[")) return content;
|
|
561
|
+
const namePattern = /\b([A-Z][a-z]{2,}(?:\s+[A-Z][a-z]{2,})?)\b/g;
|
|
562
|
+
const skipWords = /* @__PURE__ */ new Set([
|
|
563
|
+
"The",
|
|
564
|
+
"This",
|
|
565
|
+
"That",
|
|
566
|
+
"These",
|
|
567
|
+
"Those",
|
|
568
|
+
"There",
|
|
569
|
+
"Then",
|
|
570
|
+
"Than",
|
|
571
|
+
"When",
|
|
572
|
+
"Where",
|
|
573
|
+
"What",
|
|
574
|
+
"Which",
|
|
575
|
+
"While",
|
|
576
|
+
"With",
|
|
577
|
+
"Would",
|
|
578
|
+
"Will",
|
|
579
|
+
"Should",
|
|
580
|
+
"Could",
|
|
581
|
+
"About",
|
|
582
|
+
"After",
|
|
583
|
+
"Before",
|
|
584
|
+
"Between",
|
|
585
|
+
"Because",
|
|
586
|
+
"Also",
|
|
587
|
+
"Always",
|
|
588
|
+
"Already",
|
|
589
|
+
"Another",
|
|
590
|
+
"Any",
|
|
591
|
+
"Each",
|
|
592
|
+
"Every",
|
|
593
|
+
"From",
|
|
594
|
+
"Have",
|
|
595
|
+
"Has",
|
|
596
|
+
"Had",
|
|
597
|
+
"Into",
|
|
598
|
+
"Just",
|
|
599
|
+
"Keep",
|
|
600
|
+
"Like",
|
|
601
|
+
"Made",
|
|
602
|
+
"Make",
|
|
603
|
+
"Many",
|
|
604
|
+
"More",
|
|
605
|
+
"Most",
|
|
606
|
+
"Much",
|
|
607
|
+
"Must",
|
|
608
|
+
"Need",
|
|
609
|
+
"Never",
|
|
610
|
+
"Next",
|
|
611
|
+
"None",
|
|
612
|
+
"Not",
|
|
613
|
+
"Now",
|
|
614
|
+
"Only",
|
|
615
|
+
"Other",
|
|
616
|
+
"Over",
|
|
617
|
+
"Same",
|
|
618
|
+
"Some",
|
|
619
|
+
"Such",
|
|
620
|
+
"Sure",
|
|
621
|
+
"Take",
|
|
622
|
+
"Them",
|
|
623
|
+
"They",
|
|
624
|
+
"Too",
|
|
625
|
+
"Under",
|
|
626
|
+
"Until",
|
|
627
|
+
"Upon",
|
|
628
|
+
"Very",
|
|
629
|
+
"Want",
|
|
630
|
+
"Were",
|
|
631
|
+
"Work",
|
|
632
|
+
"Yet",
|
|
633
|
+
"Decision",
|
|
634
|
+
"Error",
|
|
635
|
+
"Deadline",
|
|
636
|
+
"Friday",
|
|
637
|
+
"Monday",
|
|
638
|
+
"Tuesday",
|
|
639
|
+
"Wednesday",
|
|
640
|
+
"Thursday",
|
|
641
|
+
"Saturday",
|
|
642
|
+
"Sunday",
|
|
643
|
+
"January",
|
|
644
|
+
"February",
|
|
645
|
+
"March",
|
|
646
|
+
"April",
|
|
647
|
+
"May",
|
|
648
|
+
"June",
|
|
649
|
+
"July",
|
|
650
|
+
"August",
|
|
651
|
+
"September",
|
|
652
|
+
"October",
|
|
653
|
+
"November",
|
|
654
|
+
"December",
|
|
655
|
+
"Today",
|
|
656
|
+
"Tomorrow",
|
|
657
|
+
"Yesterday",
|
|
658
|
+
"Message",
|
|
659
|
+
"Feature",
|
|
660
|
+
"Session",
|
|
661
|
+
"Update",
|
|
662
|
+
"System",
|
|
663
|
+
"User",
|
|
664
|
+
"Processed",
|
|
665
|
+
"Working",
|
|
666
|
+
"Built",
|
|
667
|
+
"Deployed",
|
|
668
|
+
"Discussed",
|
|
669
|
+
"Talked",
|
|
670
|
+
"Mentioned",
|
|
671
|
+
"Requested",
|
|
672
|
+
"Asked",
|
|
673
|
+
"Said"
|
|
674
|
+
]);
|
|
675
|
+
const knownEntities = /* @__PURE__ */ new Set([
|
|
676
|
+
"PostgreSQL",
|
|
677
|
+
"MongoDB",
|
|
678
|
+
"Railway",
|
|
679
|
+
"Vercel",
|
|
680
|
+
"React",
|
|
681
|
+
"Vue",
|
|
682
|
+
"Svelte",
|
|
683
|
+
"Express",
|
|
684
|
+
"NestJS",
|
|
685
|
+
"Prisma",
|
|
686
|
+
"Docker",
|
|
687
|
+
"Kubernetes",
|
|
688
|
+
"Redis",
|
|
689
|
+
"GraphQL",
|
|
690
|
+
"Stripe",
|
|
691
|
+
"ClawVault",
|
|
692
|
+
"OpenClaw",
|
|
693
|
+
"GitHub",
|
|
694
|
+
"Obsidian"
|
|
695
|
+
]);
|
|
696
|
+
return content.replace(namePattern, (match) => {
|
|
697
|
+
if (skipWords.has(match)) return match;
|
|
698
|
+
if (knownEntities.has(match)) return `[[${match}]]`;
|
|
699
|
+
if (/^[A-Z][a-z]+$/.test(match) && match.length >= 3) {
|
|
700
|
+
return `[[${match}]]`;
|
|
701
|
+
}
|
|
702
|
+
if (/^[A-Z][a-z]+ [A-Z][a-z]+$/.test(match)) {
|
|
703
|
+
return `[[${match}]]`;
|
|
704
|
+
}
|
|
705
|
+
return match;
|
|
706
|
+
});
|
|
707
|
+
}
|
|
553
708
|
buildSummary(routed) {
|
|
554
709
|
if (routed.length === 0) return "No items routed to vault categories.";
|
|
555
710
|
const byCat = /* @__PURE__ */ new Map();
|
package/dist/commands/observe.js
CHANGED
package/dist/commands/sleep.js
CHANGED
package/dist/index.js
CHANGED
|
@@ -41,13 +41,13 @@ import {
|
|
|
41
41
|
SessionWatcher,
|
|
42
42
|
observeCommand,
|
|
43
43
|
registerObserveCommand
|
|
44
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-GENGXU34.js";
|
|
45
45
|
import {
|
|
46
46
|
Compressor,
|
|
47
47
|
Observer,
|
|
48
48
|
Reflector,
|
|
49
49
|
parseSessionFile
|
|
50
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-CC7IJJ32.js";
|
|
51
51
|
|
|
52
52
|
// src/index.ts
|
|
53
53
|
import * as fs from "fs";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "clawvault",
|
|
3
|
-
"version": "1.10.
|
|
3
|
+
"version": "1.10.2",
|
|
4
4
|
"description": "ClawVault™ - 🐘 An elephant never forgets. Structured memory for OpenClaw agents. Context death resilience, Obsidian-compatible markdown, local semantic search.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.cjs",
|