@novis10813/secondbrain-cli 0.1.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/LICENSE +22 -0
- package/README.md +133 -0
- package/dist/commands/backlinks.d.ts +3 -0
- package/dist/commands/backlinks.d.ts.map +1 -0
- package/dist/commands/backlinks.js +65 -0
- package/dist/commands/backlinks.js.map +1 -0
- package/dist/commands/capture.d.ts +3 -0
- package/dist/commands/capture.d.ts.map +1 -0
- package/dist/commands/capture.js +90 -0
- package/dist/commands/capture.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +84 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/get.d.ts +3 -0
- package/dist/commands/get.d.ts.map +1 -0
- package/dist/commands/get.js +44 -0
- package/dist/commands/get.js.map +1 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +35 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/orphans.d.ts +3 -0
- package/dist/commands/orphans.d.ts.map +1 -0
- package/dist/commands/orphans.js +57 -0
- package/dist/commands/orphans.js.map +1 -0
- package/dist/commands/search.d.ts +3 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +64 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/stats.d.ts +3 -0
- package/dist/commands/stats.d.ts.map +1 -0
- package/dist/commands/stats.js +44 -0
- package/dist/commands/stats.js.map +1 -0
- package/dist/commands/sync.d.ts +3 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +41 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -0
- package/dist/types/index.d.ts +69 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/config.d.ts +15 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +77 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/database.d.ts +28 -0
- package/dist/utils/database.d.ts.map +1 -0
- package/dist/utils/database.js +261 -0
- package/dist/utils/database.js.map +1 -0
- package/dist/utils/parser.d.ts +19 -0
- package/dist/utils/parser.d.ts.map +1 -0
- package/dist/utils/parser.js +159 -0
- package/dist/utils/parser.js.map +1 -0
- package/dist/utils/template.d.ts +17 -0
- package/dist/utils/template.d.ts.map +1 -0
- package/dist/utils/template.js +100 -0
- package/dist/utils/template.js.map +1 -0
- package/dist/utils/vault.d.ts +32 -0
- package/dist/utils/vault.d.ts.map +1 -0
- package/dist/utils/vault.js +194 -0
- package/dist/utils/vault.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VaultManager = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
const database_js_1 = require("./database.js");
|
|
7
|
+
const parser_js_1 = require("./parser.js");
|
|
8
|
+
class VaultManager {
|
|
9
|
+
config;
|
|
10
|
+
db;
|
|
11
|
+
constructor(config) {
|
|
12
|
+
this.config = config;
|
|
13
|
+
this.db = new database_js_1.DatabaseManager(config);
|
|
14
|
+
}
|
|
15
|
+
close() {
|
|
16
|
+
this.db.close();
|
|
17
|
+
}
|
|
18
|
+
// Sync entire vault
|
|
19
|
+
async sync() {
|
|
20
|
+
let added = 0;
|
|
21
|
+
let updated = 0;
|
|
22
|
+
let removed = 0;
|
|
23
|
+
const currentPaths = new Set();
|
|
24
|
+
const markdownFiles = this.findMarkdownFiles();
|
|
25
|
+
// Pass 1: Collect all files and upsert basic metadata with empty links
|
|
26
|
+
for (const filePath of markdownFiles) {
|
|
27
|
+
const relativePath = (0, path_1.relative)(this.config.vaultPath, filePath);
|
|
28
|
+
currentPaths.add(relativePath);
|
|
29
|
+
const content = (0, fs_1.readFileSync)(filePath, 'utf-8');
|
|
30
|
+
const hash = parser_js_1.NoteParser.computeHash(content);
|
|
31
|
+
// Check if note exists and if hash changed
|
|
32
|
+
const existingNote = this.db.getNoteByPath(relativePath);
|
|
33
|
+
if (!existingNote) {
|
|
34
|
+
// New note - create with empty links
|
|
35
|
+
const note = await this.createNoteFromFile(relativePath, content, hash, []);
|
|
36
|
+
this.db.upsertNote(note);
|
|
37
|
+
added++;
|
|
38
|
+
}
|
|
39
|
+
else if (existingNote.hash !== hash) {
|
|
40
|
+
// Updated note - preserve ID, use empty links initially
|
|
41
|
+
const note = await this.createNoteFromFile(relativePath, content, hash, []);
|
|
42
|
+
note.id = existingNote.id; // Keep same ID
|
|
43
|
+
this.db.upsertNote(note);
|
|
44
|
+
updated++;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// Pass 2: Resolve links against populated database
|
|
48
|
+
for (const filePath of markdownFiles) {
|
|
49
|
+
const relativePath = (0, path_1.relative)(this.config.vaultPath, filePath);
|
|
50
|
+
const content = (0, fs_1.readFileSync)(filePath, 'utf-8');
|
|
51
|
+
const parsed = parser_js_1.NoteParser.parse(content);
|
|
52
|
+
// Get the note ID
|
|
53
|
+
const note = this.db.getNoteByPath(relativePath);
|
|
54
|
+
if (note) {
|
|
55
|
+
// Resolve link titles to note IDs
|
|
56
|
+
const linkIds = [];
|
|
57
|
+
for (const linkTitle of parsed.links) {
|
|
58
|
+
const linkedNote = this.findNoteByTitleOrPath(linkTitle);
|
|
59
|
+
if (linkedNote) {
|
|
60
|
+
linkIds.push(linkedNote.id);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Update note with resolved links
|
|
64
|
+
note.links = linkIds;
|
|
65
|
+
this.db.upsertNote(note);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// Remove notes that no longer exist in filesystem
|
|
69
|
+
const allNotes = this.db.getAllNotes();
|
|
70
|
+
for (const note of allNotes) {
|
|
71
|
+
if (!currentPaths.has(note.path)) {
|
|
72
|
+
this.db.deleteNoteByPath(note.path);
|
|
73
|
+
removed++;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return { added, updated, removed };
|
|
77
|
+
}
|
|
78
|
+
findMarkdownFiles() {
|
|
79
|
+
const files = [];
|
|
80
|
+
const excludeDirs = ['.git', '.secondbrain', 'node_modules'];
|
|
81
|
+
const walk = (dir) => {
|
|
82
|
+
const entries = (0, fs_1.readdirSync)(dir, { withFileTypes: true });
|
|
83
|
+
for (const entry of entries) {
|
|
84
|
+
const fullPath = (0, path_1.join)(dir, entry.name);
|
|
85
|
+
if (entry.isDirectory() && !excludeDirs.includes(entry.name)) {
|
|
86
|
+
walk(fullPath);
|
|
87
|
+
}
|
|
88
|
+
else if (entry.isFile() && (0, path_1.extname)(entry.name) === '.md') {
|
|
89
|
+
files.push(fullPath);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
walk(this.config.vaultPath);
|
|
94
|
+
return files;
|
|
95
|
+
}
|
|
96
|
+
async createNoteFromFile(path, content, hash, links = []) {
|
|
97
|
+
const parsed = parser_js_1.NoteParser.parse(content);
|
|
98
|
+
const fullPath = (0, path_1.join)(this.config.vaultPath, path);
|
|
99
|
+
const stats = (0, fs_1.statSync)(fullPath);
|
|
100
|
+
return {
|
|
101
|
+
id: hash,
|
|
102
|
+
path,
|
|
103
|
+
title: parsed.title,
|
|
104
|
+
content: parsed.content,
|
|
105
|
+
frontmatter: parsed.frontmatter,
|
|
106
|
+
tags: parsed.tags,
|
|
107
|
+
links: links,
|
|
108
|
+
backlinks: [], // Will be computed by database
|
|
109
|
+
hash,
|
|
110
|
+
createdAt: stats.birthtime.toISOString(),
|
|
111
|
+
modifiedAt: stats.mtime.toISOString()
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
findNoteByTitleOrPath(titleOrPath) {
|
|
115
|
+
// Try exact path match first
|
|
116
|
+
const note = this.db.getNoteByPath(titleOrPath + '.md');
|
|
117
|
+
if (note)
|
|
118
|
+
return note;
|
|
119
|
+
// Try with different extensions or paths
|
|
120
|
+
const variations = [
|
|
121
|
+
titleOrPath + '.md',
|
|
122
|
+
titleOrPath,
|
|
123
|
+
titleOrPath.replace(/ /g, '-') + '.md',
|
|
124
|
+
titleOrPath.replace(/ /g, '_') + '.md'
|
|
125
|
+
];
|
|
126
|
+
for (const variation of variations) {
|
|
127
|
+
const note = this.db.getNoteByPath(variation);
|
|
128
|
+
if (note)
|
|
129
|
+
return note;
|
|
130
|
+
}
|
|
131
|
+
// Search by title using SQL (case-insensitive)
|
|
132
|
+
const byTitle = this.db.getNoteByTitle(titleOrPath);
|
|
133
|
+
if (byTitle)
|
|
134
|
+
return byTitle;
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
// Write note to file
|
|
138
|
+
writeNote(path, content) {
|
|
139
|
+
const fullPath = (0, path_1.join)(this.config.vaultPath, path);
|
|
140
|
+
// Ensure directory exists
|
|
141
|
+
const dir = (0, path_1.dirname)(fullPath);
|
|
142
|
+
if (!(0, fs_1.existsSync)(dir)) {
|
|
143
|
+
(0, fs_1.mkdirSync)(dir, { recursive: true });
|
|
144
|
+
}
|
|
145
|
+
(0, fs_1.writeFileSync)(fullPath, content, 'utf-8');
|
|
146
|
+
}
|
|
147
|
+
readNote(path) {
|
|
148
|
+
const fullPath = (0, path_1.join)(this.config.vaultPath, path);
|
|
149
|
+
if (!(0, fs_1.existsSync)(fullPath)) {
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
return (0, fs_1.readFileSync)(fullPath, 'utf-8');
|
|
153
|
+
}
|
|
154
|
+
// Get daily note path
|
|
155
|
+
getDailyNotePath(date = new Date()) {
|
|
156
|
+
const year = date.getFullYear();
|
|
157
|
+
const month = String(date.getMonth() + 1).padStart(2, '0');
|
|
158
|
+
const day = String(date.getDate()).padStart(2, '0');
|
|
159
|
+
const dateStr = `${year}-${month}-${day}`;
|
|
160
|
+
return (0, path_1.join)(this.config.dailyNotesFolder, `${dateStr}.md`);
|
|
161
|
+
}
|
|
162
|
+
// Get template path
|
|
163
|
+
getTemplatePath(templateName) {
|
|
164
|
+
return (0, path_1.join)(this.config.templatesFolder, `${templateName}.md`);
|
|
165
|
+
}
|
|
166
|
+
// Database proxy methods
|
|
167
|
+
getNoteById(id) {
|
|
168
|
+
return this.db.getNoteById(id);
|
|
169
|
+
}
|
|
170
|
+
getNoteByPath(path) {
|
|
171
|
+
return this.db.getNoteByPath(path);
|
|
172
|
+
}
|
|
173
|
+
searchNotes(query, tags, limit = 20) {
|
|
174
|
+
return this.db.searchNotes(query, tags, limit);
|
|
175
|
+
}
|
|
176
|
+
getBacklinks(noteId) {
|
|
177
|
+
return this.db.getBacklinks(noteId);
|
|
178
|
+
}
|
|
179
|
+
getOrphans() {
|
|
180
|
+
return this.db.getOrphans();
|
|
181
|
+
}
|
|
182
|
+
getStats() {
|
|
183
|
+
return this.db.getStats();
|
|
184
|
+
}
|
|
185
|
+
getGraphData() {
|
|
186
|
+
return this.db.getGraphData();
|
|
187
|
+
}
|
|
188
|
+
// Database proxy methods
|
|
189
|
+
upsertNote(note) {
|
|
190
|
+
return this.db.upsertNote(note);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
exports.VaultManager = VaultManager;
|
|
194
|
+
//# sourceMappingURL=vault.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vault.js","sourceRoot":"","sources":["../../src/utils/vault.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@novis10813/secondbrain-cli",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "A CLI tool for LLM agents to interact with Obsidian vaults",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"bin": {
|
|
8
|
+
"sb": "dist/index.js",
|
|
9
|
+
"secondbrain": "dist/index.js"
|
|
10
|
+
},
|
|
11
|
+
"files": [
|
|
12
|
+
"dist",
|
|
13
|
+
"README.md",
|
|
14
|
+
"LICENSE"
|
|
15
|
+
],
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "tsc",
|
|
18
|
+
"dev": "bun run src/index.ts",
|
|
19
|
+
"test": "bun test",
|
|
20
|
+
"lint": "tsc --noEmit",
|
|
21
|
+
"prepare": "npm run build"
|
|
22
|
+
},
|
|
23
|
+
"keywords": [
|
|
24
|
+
"obsidian",
|
|
25
|
+
"cli",
|
|
26
|
+
"secondbrain",
|
|
27
|
+
"llm",
|
|
28
|
+
"agent",
|
|
29
|
+
"markdown",
|
|
30
|
+
"knowledge-management"
|
|
31
|
+
],
|
|
32
|
+
"author": "novis10813",
|
|
33
|
+
"repository": {
|
|
34
|
+
"type": "git",
|
|
35
|
+
"url": "https://github.com/novis10813/secondbrain-cli.git"
|
|
36
|
+
},
|
|
37
|
+
"bugs": {
|
|
38
|
+
"url": "https://github.com/novis10813/secondbrain-cli/issues"
|
|
39
|
+
},
|
|
40
|
+
"homepage": "https://github.com/novis10813/secondbrain-cli#readme",
|
|
41
|
+
"license": "MIT",
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"commander": "^12.0.0",
|
|
44
|
+
"yaml": "^2.3.4"
|
|
45
|
+
},
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"@types/node": "^20.11.0",
|
|
48
|
+
"typescript": "^5.3.3"
|
|
49
|
+
},
|
|
50
|
+
"engines": {
|
|
51
|
+
"node": ">=18.0.0"
|
|
52
|
+
}
|
|
53
|
+
}
|