@novis10813/secondbrain-cli 0.1.0 → 0.1.1
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 +74 -5
- package/dist/commands/backlinks.d.ts.map +1 -1
- package/dist/commands/backlinks.js +16 -33
- package/dist/commands/backlinks.js.map +1 -1
- package/dist/commands/capture.d.ts.map +1 -1
- package/dist/commands/capture.js +71 -57
- package/dist/commands/capture.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +5 -20
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/get.js +27 -26
- package/dist/commands/get.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +21 -4
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/migrate.d.ts +3 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +22 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/open.d.ts +3 -0
- package/dist/commands/open.d.ts.map +1 -0
- package/dist/commands/open.js +28 -0
- package/dist/commands/open.js.map +1 -0
- package/dist/commands/orphans.d.ts.map +1 -1
- package/dist/commands/orphans.js +9 -27
- package/dist/commands/orphans.js.map +1 -1
- package/dist/commands/outlinks.d.ts +3 -0
- package/dist/commands/outlinks.d.ts.map +1 -0
- package/dist/commands/outlinks.js +48 -0
- package/dist/commands/outlinks.js.map +1 -0
- package/dist/commands/search.d.ts +2 -0
- package/dist/commands/search.d.ts.map +1 -1
- package/dist/commands/search.js +57 -39
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/stats.d.ts.map +1 -1
- package/dist/commands/stats.js +4 -18
- package/dist/commands/stats.js.map +1 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +3 -17
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/template.d.ts +3 -0
- package/dist/commands/template.d.ts.map +1 -0
- package/dist/commands/template.js +63 -0
- package/dist/commands/template.js.map +1 -0
- package/dist/commands/vault.d.ts +3 -0
- package/dist/commands/vault.d.ts.map +1 -0
- package/dist/commands/vault.js +233 -0
- package/dist/commands/vault.js.map +1 -0
- package/dist/index.js +13 -1
- package/dist/index.js.map +1 -1
- package/dist/types/index.d.ts +134 -10
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/config.d.ts +3 -1
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +12 -0
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/database.d.ts +58 -14
- package/dist/utils/database.d.ts.map +1 -1
- package/dist/utils/database.js +627 -207
- package/dist/utils/database.js.map +1 -1
- package/dist/utils/global-config.d.ts +53 -0
- package/dist/utils/global-config.d.ts.map +1 -0
- package/dist/utils/global-config.js +144 -0
- package/dist/utils/global-config.js.map +1 -0
- package/dist/utils/parser.d.ts +95 -2
- package/dist/utils/parser.d.ts.map +1 -1
- package/dist/utils/parser.js +436 -38
- package/dist/utils/parser.js.map +1 -1
- package/dist/utils/placeholder.d.ts +37 -0
- package/dist/utils/placeholder.d.ts.map +1 -0
- package/dist/utils/placeholder.js +113 -0
- package/dist/utils/placeholder.js.map +1 -0
- package/dist/utils/position.d.ts +10 -0
- package/dist/utils/position.d.ts.map +1 -0
- package/dist/utils/position.js +24 -0
- package/dist/utils/position.js.map +1 -0
- package/dist/utils/sqlite-adapter.d.ts +8 -0
- package/dist/utils/sqlite-adapter.d.ts.map +1 -0
- package/dist/utils/sqlite-adapter.js +14 -0
- package/dist/utils/sqlite-adapter.js.map +1 -0
- package/dist/utils/template.d.ts +2 -2
- package/dist/utils/template.d.ts.map +1 -1
- package/dist/utils/template.js +8 -3
- package/dist/utils/template.js.map +1 -1
- package/dist/utils/vault-resolve.d.ts +23 -0
- package/dist/utils/vault-resolve.d.ts.map +1 -0
- package/dist/utils/vault-resolve.js +86 -0
- package/dist/utils/vault-resolve.js.map +1 -0
- package/dist/utils/vault.d.ts +77 -10
- package/dist/utils/vault.d.ts.map +1 -1
- package/dist/utils/vault.js +253 -98
- package/dist/utils/vault.js.map +1 -1
- package/package.json +9 -3
package/dist/utils/vault.js
CHANGED
|
@@ -6,12 +6,15 @@ const path_1 = require("path");
|
|
|
6
6
|
const database_js_1 = require("./database.js");
|
|
7
7
|
const parser_js_1 = require("./parser.js");
|
|
8
8
|
class VaultManager {
|
|
9
|
-
|
|
9
|
+
_config;
|
|
10
10
|
db;
|
|
11
11
|
constructor(config) {
|
|
12
|
-
this.
|
|
12
|
+
this._config = config;
|
|
13
13
|
this.db = new database_js_1.DatabaseManager(config);
|
|
14
14
|
}
|
|
15
|
+
get config() {
|
|
16
|
+
return this._config;
|
|
17
|
+
}
|
|
15
18
|
close() {
|
|
16
19
|
this.db.close();
|
|
17
20
|
}
|
|
@@ -22,59 +25,88 @@ class VaultManager {
|
|
|
22
25
|
let removed = 0;
|
|
23
26
|
const currentPaths = new Set();
|
|
24
27
|
const markdownFiles = this.findMarkdownFiles();
|
|
25
|
-
|
|
28
|
+
const parsedByPath = new Map();
|
|
29
|
+
// Pass 1: Collect all files, parse once, upsert FileInfo + ContentMetadata
|
|
26
30
|
for (const filePath of markdownFiles) {
|
|
27
|
-
const relativePath = (0, path_1.relative)(this.
|
|
31
|
+
const relativePath = (0, path_1.relative)(this._config.vaultPath, filePath);
|
|
28
32
|
currentPaths.add(relativePath);
|
|
29
33
|
const content = (0, fs_1.readFileSync)(filePath, 'utf-8');
|
|
30
34
|
const hash = parser_js_1.NoteParser.computeHash(content);
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
const existingHash = this.db.getFileContentHash(relativePath);
|
|
36
|
+
if (existingHash === hash) {
|
|
37
|
+
// Skip parsing, load existing metadata for Pass 2 link resolution
|
|
38
|
+
const existingMetadata = this.db.getContentMetadata(relativePath);
|
|
39
|
+
if (existingMetadata) {
|
|
40
|
+
parsedByPath.set(relativePath, {
|
|
41
|
+
title: '',
|
|
42
|
+
content: '',
|
|
43
|
+
frontmatter: {},
|
|
44
|
+
tags: [],
|
|
45
|
+
links: existingMetadata.links ?? [],
|
|
46
|
+
headings: [],
|
|
47
|
+
blocks: []
|
|
48
|
+
});
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
const parsed = parser_js_1.NoteParser.parse(content);
|
|
53
|
+
parsedByPath.set(relativePath, parsed);
|
|
54
|
+
const existingFile = this.db.getFileByPath(relativePath);
|
|
55
|
+
const isNew = !existingFile;
|
|
56
|
+
const fileInfo = this.createFileInfo(relativePath, filePath);
|
|
57
|
+
const contentMetadata = parser_js_1.NoteParser.parsedToContentMetadata(parsed, content);
|
|
58
|
+
this.db.upsertFile(fileInfo, hash);
|
|
59
|
+
this.db.upsertContentMetadata(relativePath, contentMetadata, hash);
|
|
60
|
+
if (isNew) {
|
|
37
61
|
added++;
|
|
38
62
|
}
|
|
39
|
-
else
|
|
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);
|
|
63
|
+
else {
|
|
44
64
|
updated++;
|
|
45
65
|
}
|
|
46
66
|
}
|
|
47
|
-
// Pass 2: Resolve
|
|
48
|
-
for (const
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
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
|
-
}
|
|
67
|
+
// Pass 2: Resolve link targets using cached parsed data (no second read/parse)
|
|
68
|
+
for (const [relativePath, parsed] of parsedByPath) {
|
|
69
|
+
for (const link of parsed.links) {
|
|
70
|
+
const linkedFile = this.getFirstLinkpathDest(link.target, relativePath);
|
|
71
|
+
if (linkedFile) {
|
|
72
|
+
this.db.updateLinkTarget(relativePath, link.position.start.offset, linkedFile.path, null);
|
|
62
73
|
}
|
|
63
|
-
// Update note with resolved links
|
|
64
|
-
note.links = linkIds;
|
|
65
|
-
this.db.upsertNote(note);
|
|
66
74
|
}
|
|
67
75
|
}
|
|
68
|
-
// Remove
|
|
69
|
-
const
|
|
70
|
-
for (const
|
|
71
|
-
if (!currentPaths.has(
|
|
72
|
-
this.db.
|
|
76
|
+
// Remove files that no longer exist in filesystem
|
|
77
|
+
const allFiles = this.db.getAllFiles();
|
|
78
|
+
for (const file of allFiles) {
|
|
79
|
+
if (!currentPaths.has(file.path)) {
|
|
80
|
+
this.db.deleteFile(file.path);
|
|
73
81
|
removed++;
|
|
74
82
|
}
|
|
75
83
|
}
|
|
76
84
|
return { added, updated, removed };
|
|
77
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* Rapidly index a single file without a full vault scan.
|
|
88
|
+
* Useful for capture or real-time updates.
|
|
89
|
+
*/
|
|
90
|
+
indexSingleFile(relativePath) {
|
|
91
|
+
const fullPath = (0, path_1.join)(this._config.vaultPath, relativePath);
|
|
92
|
+
if (!(0, fs_1.existsSync)(fullPath)) {
|
|
93
|
+
throw new Error(`File not found: ${fullPath}`);
|
|
94
|
+
}
|
|
95
|
+
const content = (0, fs_1.readFileSync)(fullPath, 'utf-8');
|
|
96
|
+
const hash = parser_js_1.NoteParser.computeHash(content);
|
|
97
|
+
const fileInfo = this.createFileInfo(relativePath, fullPath);
|
|
98
|
+
const parsed = parser_js_1.NoteParser.parse(content);
|
|
99
|
+
const contentMetadata = parser_js_1.NoteParser.parsedToContentMetadata(parsed, content);
|
|
100
|
+
this.db.upsertFile(fileInfo, hash);
|
|
101
|
+
this.db.upsertContentMetadata(relativePath, contentMetadata, hash);
|
|
102
|
+
// Resolve outlinks of this file immediately
|
|
103
|
+
for (const link of parsed.links) {
|
|
104
|
+
const linkedFile = this.getFirstLinkpathDest(link.target, relativePath);
|
|
105
|
+
if (linkedFile) {
|
|
106
|
+
this.db.updateLinkTarget(relativePath, link.position.start.offset, linkedFile.path, null);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
78
110
|
findMarkdownFiles() {
|
|
79
111
|
const files = [];
|
|
80
112
|
const excludeDirs = ['.git', '.secondbrain', 'node_modules'];
|
|
@@ -83,60 +115,46 @@ class VaultManager {
|
|
|
83
115
|
for (const entry of entries) {
|
|
84
116
|
const fullPath = (0, path_1.join)(dir, entry.name);
|
|
85
117
|
if (entry.isDirectory() && !excludeDirs.includes(entry.name)) {
|
|
86
|
-
|
|
118
|
+
// Skip symlinked directories to avoid cycles and duplicate traversal
|
|
119
|
+
if (!entry.isSymbolicLink()) {
|
|
120
|
+
walk(fullPath);
|
|
121
|
+
}
|
|
87
122
|
}
|
|
88
123
|
else if (entry.isFile() && (0, path_1.extname)(entry.name) === '.md') {
|
|
89
124
|
files.push(fullPath);
|
|
90
125
|
}
|
|
91
126
|
}
|
|
92
127
|
};
|
|
93
|
-
walk(this.
|
|
128
|
+
walk(this._config.vaultPath);
|
|
94
129
|
return files;
|
|
95
130
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
131
|
+
/**
|
|
132
|
+
* Create FileInfo from file path and stats.
|
|
133
|
+
* Separates file system information from content parsing.
|
|
134
|
+
*/
|
|
135
|
+
createFileInfo(relativePath, fullPath) {
|
|
99
136
|
const stats = (0, fs_1.statSync)(fullPath);
|
|
137
|
+
const ext = (0, path_1.extname)(relativePath) || '.md';
|
|
138
|
+
const name = (0, path_1.basename)(relativePath);
|
|
139
|
+
const basenameWithoutExt = (0, path_1.basename)(relativePath, ext) || (0, path_1.basename)(relativePath);
|
|
140
|
+
const parentDir = (0, path_1.dirname)(relativePath);
|
|
141
|
+
const parent = parentDir === '.' ? null : parentDir;
|
|
100
142
|
return {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
modifiedAt: stats.mtime.toISOString()
|
|
143
|
+
path: relativePath,
|
|
144
|
+
name,
|
|
145
|
+
basename: basenameWithoutExt,
|
|
146
|
+
extension: ext.replace(/^\./, ''), // Remove leading dot
|
|
147
|
+
parent,
|
|
148
|
+
stat: {
|
|
149
|
+
ctime: stats.birthtimeMs,
|
|
150
|
+
mtime: stats.mtimeMs,
|
|
151
|
+
size: stats.size
|
|
152
|
+
}
|
|
112
153
|
};
|
|
113
154
|
}
|
|
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
155
|
// Write note to file
|
|
138
156
|
writeNote(path, content) {
|
|
139
|
-
const fullPath = (0, path_1.join)(this.
|
|
157
|
+
const fullPath = (0, path_1.join)(this._config.vaultPath, path);
|
|
140
158
|
// Ensure directory exists
|
|
141
159
|
const dir = (0, path_1.dirname)(fullPath);
|
|
142
160
|
if (!(0, fs_1.existsSync)(dir)) {
|
|
@@ -145,7 +163,7 @@ class VaultManager {
|
|
|
145
163
|
(0, fs_1.writeFileSync)(fullPath, content, 'utf-8');
|
|
146
164
|
}
|
|
147
165
|
readNote(path) {
|
|
148
|
-
const fullPath = (0, path_1.join)(this.
|
|
166
|
+
const fullPath = (0, path_1.join)(this._config.vaultPath, path);
|
|
149
167
|
if (!(0, fs_1.existsSync)(fullPath)) {
|
|
150
168
|
return null;
|
|
151
169
|
}
|
|
@@ -157,37 +175,174 @@ class VaultManager {
|
|
|
157
175
|
const month = String(date.getMonth() + 1).padStart(2, '0');
|
|
158
176
|
const day = String(date.getDate()).padStart(2, '0');
|
|
159
177
|
const dateStr = `${year}-${month}-${day}`;
|
|
160
|
-
return (0, path_1.join)(this.
|
|
178
|
+
return (0, path_1.join)(this._config.dailyNotesFolder, `${dateStr}.md`);
|
|
161
179
|
}
|
|
162
180
|
// Get template path
|
|
163
181
|
getTemplatePath(templateName) {
|
|
164
|
-
return (0, path_1.join)(this.
|
|
165
|
-
}
|
|
166
|
-
// Database proxy methods
|
|
167
|
-
getNoteById(id) {
|
|
168
|
-
return this.db.getNoteById(id);
|
|
182
|
+
return (0, path_1.join)(this._config.templatesFolder, `${templateName}.md`);
|
|
169
183
|
}
|
|
170
|
-
|
|
171
|
-
return this.db.
|
|
184
|
+
getStats() {
|
|
185
|
+
return this.db.getStats();
|
|
172
186
|
}
|
|
173
|
-
|
|
174
|
-
|
|
187
|
+
// New structure (files + content_metadata + links_with_positions)
|
|
188
|
+
getBacklinksByPath(filePath) {
|
|
189
|
+
return this.db.getBacklinksByPath(filePath);
|
|
175
190
|
}
|
|
176
|
-
|
|
177
|
-
return this.db.
|
|
191
|
+
getOutlinksByPath(filePath) {
|
|
192
|
+
return this.db.getOutlinksByPath(filePath);
|
|
178
193
|
}
|
|
179
|
-
|
|
180
|
-
return this.db.
|
|
194
|
+
getOrphanFiles() {
|
|
195
|
+
return this.db.getOrphanFiles();
|
|
181
196
|
}
|
|
182
|
-
|
|
183
|
-
return this.db.
|
|
197
|
+
searchFiles(query, tags, limit = 20, pathPrefix, linksToPath, headingQuery, modifiedAfter, modifiedBefore) {
|
|
198
|
+
return this.db.searchFiles(query, tags, limit, pathPrefix, linksToPath, headingQuery, modifiedAfter, modifiedBefore);
|
|
184
199
|
}
|
|
185
200
|
getGraphData() {
|
|
186
201
|
return this.db.getGraphData();
|
|
187
202
|
}
|
|
188
|
-
//
|
|
189
|
-
|
|
190
|
-
|
|
203
|
+
// Obsidian-style API methods
|
|
204
|
+
/**
|
|
205
|
+
* Get all markdown files in the vault (Obsidian-style API).
|
|
206
|
+
* Equivalent to Obsidian's Vault.getMarkdownFiles().
|
|
207
|
+
* @returns Array of FileInfo for every .md file in the vault
|
|
208
|
+
*/
|
|
209
|
+
getMarkdownFiles() {
|
|
210
|
+
return this.db.getAllFiles();
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Get FileInfo by path (Obsidian-style API).
|
|
214
|
+
* @param path Relative path from vault root
|
|
215
|
+
* @returns FileInfo or null if not found
|
|
216
|
+
*/
|
|
217
|
+
getFileByPath(path) {
|
|
218
|
+
return this.db.getFileByPath(path);
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Resolve path or basename to FileInfo using new structure only.
|
|
222
|
+
* Tries exact path, path + .md, then match by basename.
|
|
223
|
+
*/
|
|
224
|
+
resolvePathOrBasename(pathOrBasename) {
|
|
225
|
+
let file = this.db.getFileByPath(pathOrBasename);
|
|
226
|
+
if (file)
|
|
227
|
+
return file;
|
|
228
|
+
if (!pathOrBasename.endsWith('.md')) {
|
|
229
|
+
file = this.db.getFileByPath(pathOrBasename + '.md');
|
|
230
|
+
if (file)
|
|
231
|
+
return file;
|
|
232
|
+
}
|
|
233
|
+
const base = pathOrBasename.replace(/\.md$/i, '');
|
|
234
|
+
return this.db.getFileByBasename(base);
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Read file content by FileInfo (Obsidian-style API).
|
|
238
|
+
* Equivalent to Obsidian's Vault.read(file).
|
|
239
|
+
* @param file FileInfo object
|
|
240
|
+
* @returns File content or null if not found
|
|
241
|
+
*/
|
|
242
|
+
readFile(file) {
|
|
243
|
+
return this.readNote(file.path);
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Get backlinks for a file by FileInfo (Obsidian-style API).
|
|
247
|
+
* Equivalent to Obsidian's MetadataCache.getBacklinksForFile(file).
|
|
248
|
+
* @param file FileInfo object
|
|
249
|
+
* @returns Array of FileInfo that link to this file
|
|
250
|
+
*/
|
|
251
|
+
getBacklinksForFile(file) {
|
|
252
|
+
return this.getBacklinksByPath(file.path);
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Get ContentMetadata for a FileInfo (Obsidian-style API).
|
|
256
|
+
* Equivalent to Obsidian's MetadataCache.getFileCache(file).
|
|
257
|
+
* @param file FileInfo object
|
|
258
|
+
* @returns ContentMetadata or null if not found
|
|
259
|
+
*/
|
|
260
|
+
getFileCache(file) {
|
|
261
|
+
return this.db.getContentMetadata(file.path);
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Resolve a linkpath to a FileInfo (Obsidian-style API).
|
|
265
|
+
* Equivalent to Obsidian's MetadataCache.getFirstLinkpathDest(linkpath, sourcePath).
|
|
266
|
+
* Resolves linkpaths like "note-name", "folder/note-name", "note-name#heading", etc.
|
|
267
|
+
* @param linkpath Link path (may include heading/block reference after #)
|
|
268
|
+
* @param sourcePath Path of the source file (for relative path resolution)
|
|
269
|
+
* @returns FileInfo or null if not found
|
|
270
|
+
*/
|
|
271
|
+
getFirstLinkpathDest(linkpath, sourcePath) {
|
|
272
|
+
// Strip heading/block reference (everything after #)
|
|
273
|
+
const filePart = linkpath.split('#')[0].trim();
|
|
274
|
+
if (!filePart)
|
|
275
|
+
return null;
|
|
276
|
+
// Try exact path match first
|
|
277
|
+
let file = this.db.getFileByPath(filePart);
|
|
278
|
+
if (file)
|
|
279
|
+
return file;
|
|
280
|
+
// Try with .md extension
|
|
281
|
+
file = this.db.getFileByPath(filePart + '.md');
|
|
282
|
+
if (file)
|
|
283
|
+
return file;
|
|
284
|
+
// Try relative to source file's directory
|
|
285
|
+
if (sourcePath) {
|
|
286
|
+
const sourceDir = (0, path_1.dirname)(sourcePath);
|
|
287
|
+
const relativePath = sourceDir === '.' ? filePart : (0, path_1.join)(sourceDir, filePart);
|
|
288
|
+
file = this.db.getFileByPath(relativePath);
|
|
289
|
+
if (file)
|
|
290
|
+
return file;
|
|
291
|
+
// Try relative path with .md extension
|
|
292
|
+
file = this.db.getFileByPath(relativePath + '.md');
|
|
293
|
+
if (file)
|
|
294
|
+
return file;
|
|
295
|
+
}
|
|
296
|
+
// Try path variations (spaces to dashes/underscores)
|
|
297
|
+
const variations = [
|
|
298
|
+
filePart.replace(/ /g, '-') + '.md',
|
|
299
|
+
filePart.replace(/ /g, '_') + '.md',
|
|
300
|
+
filePart.replace(/ /g, '-'),
|
|
301
|
+
filePart.replace(/ /g, '_')
|
|
302
|
+
];
|
|
303
|
+
for (const variation of variations) {
|
|
304
|
+
file = this.db.getFileByPath(variation);
|
|
305
|
+
if (file)
|
|
306
|
+
return file;
|
|
307
|
+
}
|
|
308
|
+
// Try finding by basename (filename without extension)
|
|
309
|
+
// This matches Obsidian's behavior of finding files by title
|
|
310
|
+
const basenameToMatch = filePart.replace(/\.md$/, '');
|
|
311
|
+
return this.db.getFileByBasename(basenameToMatch);
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Resolve a linkpath to a file and position (line, col) for editor navigation.
|
|
315
|
+
* Supports note, note#heading, note#^block-id, and note#heading#^block-id.
|
|
316
|
+
* @returns { path, line, col } (1-based) or null if file not found
|
|
317
|
+
*/
|
|
318
|
+
resolveLinkToPosition(linkpath, sourcePath) {
|
|
319
|
+
const parts = linkpath.split('#').map(p => p.trim());
|
|
320
|
+
const filePart = parts[0];
|
|
321
|
+
if (!filePart)
|
|
322
|
+
return null;
|
|
323
|
+
const file = this.getFirstLinkpathDest(filePart, sourcePath);
|
|
324
|
+
if (!file)
|
|
325
|
+
return null;
|
|
326
|
+
const fragments = parts.slice(1);
|
|
327
|
+
if (fragments.length === 0) {
|
|
328
|
+
return { path: file.path, line: 1, col: 1 };
|
|
329
|
+
}
|
|
330
|
+
const last = fragments[fragments.length - 1];
|
|
331
|
+
const blockId = last.startsWith('^') ? last.slice(1) : null;
|
|
332
|
+
const headingFragment = blockId && fragments.length > 1
|
|
333
|
+
? fragments.slice(0, -1).join(' ')
|
|
334
|
+
: fragments.join(' ');
|
|
335
|
+
if (blockId) {
|
|
336
|
+
const pos = this.db.getBlockPosition(file.path, blockId);
|
|
337
|
+
if (pos)
|
|
338
|
+
return { path: file.path, ...pos };
|
|
339
|
+
}
|
|
340
|
+
if (headingFragment) {
|
|
341
|
+
const pos = this.db.getHeadingPosition(file.path, headingFragment);
|
|
342
|
+
if (pos)
|
|
343
|
+
return { path: file.path, ...pos };
|
|
344
|
+
}
|
|
345
|
+
return { path: file.path, line: 1, col: 1 };
|
|
191
346
|
}
|
|
192
347
|
}
|
|
193
348
|
exports.VaultManager = VaultManager;
|
package/dist/utils/vault.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vault.js","sourceRoot":"","sources":["../../src/utils/vault.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vault.js","sourceRoot":"","sources":["../../src/utils/vault.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@novis10813/secondbrain-cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "A CLI tool for LLM agents to interact with Obsidian vaults",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -17,8 +17,11 @@
|
|
|
17
17
|
"build": "tsc",
|
|
18
18
|
"dev": "bun run src/index.ts",
|
|
19
19
|
"test": "bun test",
|
|
20
|
+
"test:perf": "bun test tests/perf",
|
|
21
|
+
"coverage": "bun test --coverage",
|
|
20
22
|
"lint": "tsc --noEmit",
|
|
21
|
-
"prepare": "npm run build"
|
|
23
|
+
"prepare": "npm run build",
|
|
24
|
+
"check": "tsc --noEmit"
|
|
22
25
|
},
|
|
23
26
|
"keywords": [
|
|
24
27
|
"obsidian",
|
|
@@ -32,7 +35,7 @@
|
|
|
32
35
|
"author": "novis10813",
|
|
33
36
|
"repository": {
|
|
34
37
|
"type": "git",
|
|
35
|
-
"url": "https://github.com/novis10813/secondbrain-cli.git"
|
|
38
|
+
"url": "git+https://github.com/novis10813/secondbrain-cli.git"
|
|
36
39
|
},
|
|
37
40
|
"bugs": {
|
|
38
41
|
"url": "https://github.com/novis10813/secondbrain-cli/issues"
|
|
@@ -40,10 +43,13 @@
|
|
|
40
43
|
"homepage": "https://github.com/novis10813/secondbrain-cli#readme",
|
|
41
44
|
"license": "MIT",
|
|
42
45
|
"dependencies": {
|
|
46
|
+
"better-sqlite3": "^11.6.0",
|
|
43
47
|
"commander": "^12.0.0",
|
|
48
|
+
"moment": "^2.30.1",
|
|
44
49
|
"yaml": "^2.3.4"
|
|
45
50
|
},
|
|
46
51
|
"devDependencies": {
|
|
52
|
+
"@types/better-sqlite3": "^7.6.11",
|
|
47
53
|
"@types/node": "^20.11.0",
|
|
48
54
|
"typescript": "^5.3.3"
|
|
49
55
|
},
|