@novis10813/secondbrain-cli 0.1.0 → 0.1.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 (93) hide show
  1. package/README.md +71 -81
  2. package/dist/commands/backlinks.d.ts.map +1 -1
  3. package/dist/commands/backlinks.js +16 -33
  4. package/dist/commands/backlinks.js.map +1 -1
  5. package/dist/commands/capture.d.ts.map +1 -1
  6. package/dist/commands/capture.js +71 -57
  7. package/dist/commands/capture.js.map +1 -1
  8. package/dist/commands/config.d.ts.map +1 -1
  9. package/dist/commands/config.js +5 -20
  10. package/dist/commands/config.js.map +1 -1
  11. package/dist/commands/get.js +27 -26
  12. package/dist/commands/get.js.map +1 -1
  13. package/dist/commands/init.d.ts.map +1 -1
  14. package/dist/commands/init.js +21 -4
  15. package/dist/commands/init.js.map +1 -1
  16. package/dist/commands/migrate.d.ts +3 -0
  17. package/dist/commands/migrate.d.ts.map +1 -0
  18. package/dist/commands/migrate.js +22 -0
  19. package/dist/commands/migrate.js.map +1 -0
  20. package/dist/commands/open.d.ts +3 -0
  21. package/dist/commands/open.d.ts.map +1 -0
  22. package/dist/commands/open.js +28 -0
  23. package/dist/commands/open.js.map +1 -0
  24. package/dist/commands/orphans.d.ts.map +1 -1
  25. package/dist/commands/orphans.js +9 -27
  26. package/dist/commands/orphans.js.map +1 -1
  27. package/dist/commands/outlinks.d.ts +3 -0
  28. package/dist/commands/outlinks.d.ts.map +1 -0
  29. package/dist/commands/outlinks.js +48 -0
  30. package/dist/commands/outlinks.js.map +1 -0
  31. package/dist/commands/search.d.ts +2 -0
  32. package/dist/commands/search.d.ts.map +1 -1
  33. package/dist/commands/search.js +57 -39
  34. package/dist/commands/search.js.map +1 -1
  35. package/dist/commands/stats.d.ts.map +1 -1
  36. package/dist/commands/stats.js +4 -18
  37. package/dist/commands/stats.js.map +1 -1
  38. package/dist/commands/sync.d.ts.map +1 -1
  39. package/dist/commands/sync.js +3 -17
  40. package/dist/commands/sync.js.map +1 -1
  41. package/dist/commands/template.d.ts +3 -0
  42. package/dist/commands/template.d.ts.map +1 -0
  43. package/dist/commands/template.js +63 -0
  44. package/dist/commands/template.js.map +1 -0
  45. package/dist/commands/vault.d.ts +3 -0
  46. package/dist/commands/vault.d.ts.map +1 -0
  47. package/dist/commands/vault.js +233 -0
  48. package/dist/commands/vault.js.map +1 -0
  49. package/dist/index.js +13 -1
  50. package/dist/index.js.map +1 -1
  51. package/dist/types/index.d.ts +134 -10
  52. package/dist/types/index.d.ts.map +1 -1
  53. package/dist/utils/config.d.ts +3 -1
  54. package/dist/utils/config.d.ts.map +1 -1
  55. package/dist/utils/config.js +12 -0
  56. package/dist/utils/config.js.map +1 -1
  57. package/dist/utils/database.d.ts +58 -14
  58. package/dist/utils/database.d.ts.map +1 -1
  59. package/dist/utils/database.js +627 -207
  60. package/dist/utils/database.js.map +1 -1
  61. package/dist/utils/global-config.d.ts +53 -0
  62. package/dist/utils/global-config.d.ts.map +1 -0
  63. package/dist/utils/global-config.js +144 -0
  64. package/dist/utils/global-config.js.map +1 -0
  65. package/dist/utils/parser.d.ts +95 -2
  66. package/dist/utils/parser.d.ts.map +1 -1
  67. package/dist/utils/parser.js +466 -39
  68. package/dist/utils/parser.js.map +1 -1
  69. package/dist/utils/placeholder.d.ts +37 -0
  70. package/dist/utils/placeholder.d.ts.map +1 -0
  71. package/dist/utils/placeholder.js +113 -0
  72. package/dist/utils/placeholder.js.map +1 -0
  73. package/dist/utils/position.d.ts +10 -0
  74. package/dist/utils/position.d.ts.map +1 -0
  75. package/dist/utils/position.js +24 -0
  76. package/dist/utils/position.js.map +1 -0
  77. package/dist/utils/sqlite-adapter.d.ts +8 -0
  78. package/dist/utils/sqlite-adapter.d.ts.map +1 -0
  79. package/dist/utils/sqlite-adapter.js +14 -0
  80. package/dist/utils/sqlite-adapter.js.map +1 -0
  81. package/dist/utils/template.d.ts +2 -2
  82. package/dist/utils/template.d.ts.map +1 -1
  83. package/dist/utils/template.js +8 -3
  84. package/dist/utils/template.js.map +1 -1
  85. package/dist/utils/vault-resolve.d.ts +23 -0
  86. package/dist/utils/vault-resolve.d.ts.map +1 -0
  87. package/dist/utils/vault-resolve.js +86 -0
  88. package/dist/utils/vault-resolve.js.map +1 -0
  89. package/dist/utils/vault.d.ts +77 -10
  90. package/dist/utils/vault.d.ts.map +1 -1
  91. package/dist/utils/vault.js +262 -98
  92. package/dist/utils/vault.js.map +1 -1
  93. package/package.json +9 -3
@@ -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
- config;
9
+ _config;
10
10
  db;
11
11
  constructor(config) {
12
- this.config = config;
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,94 @@ class VaultManager {
22
25
  let removed = 0;
23
26
  const currentPaths = new Set();
24
27
  const markdownFiles = this.findMarkdownFiles();
25
- // Pass 1: Collect all files and upsert basic metadata with empty links
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.config.vaultPath, filePath);
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
- // 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);
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 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);
63
+ else {
44
64
  updated++;
45
65
  }
46
66
  }
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
- }
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
+ // Guard: skip links with undefined/non-string targets (e.g. from template placeholders)
71
+ if (!link.target || typeof link.target !== 'string')
72
+ continue;
73
+ const linkedFile = this.getFirstLinkpathDest(link.target, relativePath);
74
+ if (linkedFile) {
75
+ this.db.updateLinkTarget(relativePath, link.position.start.offset, linkedFile.path, null);
62
76
  }
63
- // Update note with resolved links
64
- note.links = linkIds;
65
- this.db.upsertNote(note);
66
77
  }
67
78
  }
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);
79
+ // Remove files that no longer exist in filesystem
80
+ const allFiles = this.db.getAllFiles();
81
+ for (const file of allFiles) {
82
+ if (!currentPaths.has(file.path)) {
83
+ this.db.deleteFile(file.path);
73
84
  removed++;
74
85
  }
75
86
  }
76
87
  return { added, updated, removed };
77
88
  }
89
+ /**
90
+ * Rapidly index a single file without a full vault scan.
91
+ * Useful for capture or real-time updates.
92
+ */
93
+ indexSingleFile(relativePath) {
94
+ const fullPath = (0, path_1.join)(this._config.vaultPath, relativePath);
95
+ if (!(0, fs_1.existsSync)(fullPath)) {
96
+ throw new Error(`File not found: ${fullPath}`);
97
+ }
98
+ const content = (0, fs_1.readFileSync)(fullPath, 'utf-8');
99
+ const hash = parser_js_1.NoteParser.computeHash(content);
100
+ const fileInfo = this.createFileInfo(relativePath, fullPath);
101
+ const parsed = parser_js_1.NoteParser.parse(content);
102
+ const contentMetadata = parser_js_1.NoteParser.parsedToContentMetadata(parsed, content);
103
+ this.db.upsertFile(fileInfo, hash);
104
+ this.db.upsertContentMetadata(relativePath, contentMetadata, hash);
105
+ // Resolve outlinks of this file immediately
106
+ for (const link of parsed.links) {
107
+ // Guard: skip links with undefined/non-string targets (e.g. from template placeholders)
108
+ if (!link.target || typeof link.target !== 'string')
109
+ continue;
110
+ const linkedFile = this.getFirstLinkpathDest(link.target, relativePath);
111
+ if (linkedFile) {
112
+ this.db.updateLinkTarget(relativePath, link.position.start.offset, linkedFile.path, null);
113
+ }
114
+ }
115
+ }
78
116
  findMarkdownFiles() {
79
117
  const files = [];
80
118
  const excludeDirs = ['.git', '.secondbrain', 'node_modules'];
@@ -83,60 +121,46 @@ class VaultManager {
83
121
  for (const entry of entries) {
84
122
  const fullPath = (0, path_1.join)(dir, entry.name);
85
123
  if (entry.isDirectory() && !excludeDirs.includes(entry.name)) {
86
- walk(fullPath);
124
+ // Skip symlinked directories to avoid cycles and duplicate traversal
125
+ if (!entry.isSymbolicLink()) {
126
+ walk(fullPath);
127
+ }
87
128
  }
88
129
  else if (entry.isFile() && (0, path_1.extname)(entry.name) === '.md') {
89
130
  files.push(fullPath);
90
131
  }
91
132
  }
92
133
  };
93
- walk(this.config.vaultPath);
134
+ walk(this._config.vaultPath);
94
135
  return files;
95
136
  }
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);
137
+ /**
138
+ * Create FileInfo from file path and stats.
139
+ * Separates file system information from content parsing.
140
+ */
141
+ createFileInfo(relativePath, fullPath) {
99
142
  const stats = (0, fs_1.statSync)(fullPath);
143
+ const ext = (0, path_1.extname)(relativePath) || '.md';
144
+ const name = (0, path_1.basename)(relativePath);
145
+ const basenameWithoutExt = (0, path_1.basename)(relativePath, ext) || (0, path_1.basename)(relativePath);
146
+ const parentDir = (0, path_1.dirname)(relativePath);
147
+ const parent = parentDir === '.' ? null : parentDir;
100
148
  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()
149
+ path: relativePath,
150
+ name,
151
+ basename: basenameWithoutExt,
152
+ extension: ext.replace(/^\./, ''), // Remove leading dot
153
+ parent,
154
+ stat: {
155
+ ctime: stats.birthtimeMs,
156
+ mtime: stats.mtimeMs,
157
+ size: stats.size
158
+ }
112
159
  };
113
160
  }
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
161
  // Write note to file
138
162
  writeNote(path, content) {
139
- const fullPath = (0, path_1.join)(this.config.vaultPath, path);
163
+ const fullPath = (0, path_1.join)(this._config.vaultPath, path);
140
164
  // Ensure directory exists
141
165
  const dir = (0, path_1.dirname)(fullPath);
142
166
  if (!(0, fs_1.existsSync)(dir)) {
@@ -145,7 +169,7 @@ class VaultManager {
145
169
  (0, fs_1.writeFileSync)(fullPath, content, 'utf-8');
146
170
  }
147
171
  readNote(path) {
148
- const fullPath = (0, path_1.join)(this.config.vaultPath, path);
172
+ const fullPath = (0, path_1.join)(this._config.vaultPath, path);
149
173
  if (!(0, fs_1.existsSync)(fullPath)) {
150
174
  return null;
151
175
  }
@@ -157,37 +181,177 @@ class VaultManager {
157
181
  const month = String(date.getMonth() + 1).padStart(2, '0');
158
182
  const day = String(date.getDate()).padStart(2, '0');
159
183
  const dateStr = `${year}-${month}-${day}`;
160
- return (0, path_1.join)(this.config.dailyNotesFolder, `${dateStr}.md`);
184
+ return (0, path_1.join)(this._config.dailyNotesFolder, `${dateStr}.md`);
161
185
  }
162
186
  // Get template path
163
187
  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);
188
+ return (0, path_1.join)(this._config.templatesFolder, `${templateName}.md`);
169
189
  }
170
- getNoteByPath(path) {
171
- return this.db.getNoteByPath(path);
190
+ getStats() {
191
+ return this.db.getStats();
172
192
  }
173
- searchNotes(query, tags, limit = 20) {
174
- return this.db.searchNotes(query, tags, limit);
193
+ // New structure (files + content_metadata + links_with_positions)
194
+ getBacklinksByPath(filePath) {
195
+ return this.db.getBacklinksByPath(filePath);
175
196
  }
176
- getBacklinks(noteId) {
177
- return this.db.getBacklinks(noteId);
197
+ getOutlinksByPath(filePath) {
198
+ return this.db.getOutlinksByPath(filePath);
178
199
  }
179
- getOrphans() {
180
- return this.db.getOrphans();
200
+ getOrphanFiles() {
201
+ return this.db.getOrphanFiles();
181
202
  }
182
- getStats() {
183
- return this.db.getStats();
203
+ searchFiles(query, tags, limit = 20, pathPrefix, linksToPath, headingQuery, modifiedAfter, modifiedBefore) {
204
+ return this.db.searchFiles(query, tags, limit, pathPrefix, linksToPath, headingQuery, modifiedAfter, modifiedBefore);
184
205
  }
185
206
  getGraphData() {
186
207
  return this.db.getGraphData();
187
208
  }
188
- // Database proxy methods
189
- upsertNote(note) {
190
- return this.db.upsertNote(note);
209
+ // Obsidian-style API methods
210
+ /**
211
+ * Get all markdown files in the vault (Obsidian-style API).
212
+ * Equivalent to Obsidian's Vault.getMarkdownFiles().
213
+ * @returns Array of FileInfo for every .md file in the vault
214
+ */
215
+ getMarkdownFiles() {
216
+ return this.db.getAllFiles();
217
+ }
218
+ /**
219
+ * Get FileInfo by path (Obsidian-style API).
220
+ * @param path Relative path from vault root
221
+ * @returns FileInfo or null if not found
222
+ */
223
+ getFileByPath(path) {
224
+ return this.db.getFileByPath(path);
225
+ }
226
+ /**
227
+ * Resolve path or basename to FileInfo using new structure only.
228
+ * Tries exact path, path + .md, then match by basename.
229
+ */
230
+ resolvePathOrBasename(pathOrBasename) {
231
+ let file = this.db.getFileByPath(pathOrBasename);
232
+ if (file)
233
+ return file;
234
+ if (!pathOrBasename.endsWith('.md')) {
235
+ file = this.db.getFileByPath(pathOrBasename + '.md');
236
+ if (file)
237
+ return file;
238
+ }
239
+ const base = pathOrBasename.replace(/\.md$/i, '');
240
+ return this.db.getFileByBasename(base);
241
+ }
242
+ /**
243
+ * Read file content by FileInfo (Obsidian-style API).
244
+ * Equivalent to Obsidian's Vault.read(file).
245
+ * @param file FileInfo object
246
+ * @returns File content or null if not found
247
+ */
248
+ readFile(file) {
249
+ return this.readNote(file.path);
250
+ }
251
+ /**
252
+ * Get backlinks for a file by FileInfo (Obsidian-style API).
253
+ * Equivalent to Obsidian's MetadataCache.getBacklinksForFile(file).
254
+ * @param file FileInfo object
255
+ * @returns Array of FileInfo that link to this file
256
+ */
257
+ getBacklinksForFile(file) {
258
+ return this.getBacklinksByPath(file.path);
259
+ }
260
+ /**
261
+ * Get ContentMetadata for a FileInfo (Obsidian-style API).
262
+ * Equivalent to Obsidian's MetadataCache.getFileCache(file).
263
+ * @param file FileInfo object
264
+ * @returns ContentMetadata or null if not found
265
+ */
266
+ getFileCache(file) {
267
+ return this.db.getContentMetadata(file.path);
268
+ }
269
+ /**
270
+ * Resolve a linkpath to a FileInfo (Obsidian-style API).
271
+ * Equivalent to Obsidian's MetadataCache.getFirstLinkpathDest(linkpath, sourcePath).
272
+ * Resolves linkpaths like "note-name", "folder/note-name", "note-name#heading", etc.
273
+ * @param linkpath Link path (may include heading/block reference after #)
274
+ * @param sourcePath Path of the source file (for relative path resolution)
275
+ * @returns FileInfo or null if not found
276
+ */
277
+ getFirstLinkpathDest(linkpath, sourcePath) {
278
+ // Guard: reject undefined, null, or non-string values (e.g. from template placeholders in frontmatter)
279
+ if (!linkpath || typeof linkpath !== 'string')
280
+ return null;
281
+ // Strip heading/block reference (everything after #)
282
+ const filePart = linkpath.split('#')[0].trim();
283
+ if (!filePart)
284
+ return null;
285
+ // Try exact path match first
286
+ let file = this.db.getFileByPath(filePart);
287
+ if (file)
288
+ return file;
289
+ // Try with .md extension
290
+ file = this.db.getFileByPath(filePart + '.md');
291
+ if (file)
292
+ return file;
293
+ // Try relative to source file's directory
294
+ if (sourcePath) {
295
+ const sourceDir = (0, path_1.dirname)(sourcePath);
296
+ const relativePath = sourceDir === '.' ? filePart : (0, path_1.join)(sourceDir, filePart);
297
+ file = this.db.getFileByPath(relativePath);
298
+ if (file)
299
+ return file;
300
+ // Try relative path with .md extension
301
+ file = this.db.getFileByPath(relativePath + '.md');
302
+ if (file)
303
+ return file;
304
+ }
305
+ // Try path variations (spaces to dashes/underscores)
306
+ const variations = [
307
+ filePart.replace(/ /g, '-') + '.md',
308
+ filePart.replace(/ /g, '_') + '.md',
309
+ filePart.replace(/ /g, '-'),
310
+ filePart.replace(/ /g, '_')
311
+ ];
312
+ for (const variation of variations) {
313
+ file = this.db.getFileByPath(variation);
314
+ if (file)
315
+ return file;
316
+ }
317
+ // Try finding by basename (filename without extension)
318
+ // This matches Obsidian's behavior of finding files by title
319
+ const basenameToMatch = filePart.replace(/\.md$/, '');
320
+ return this.db.getFileByBasename(basenameToMatch);
321
+ }
322
+ /**
323
+ * Resolve a linkpath to a file and position (line, col) for editor navigation.
324
+ * Supports note, note#heading, note#^block-id, and note#heading#^block-id.
325
+ * @returns { path, line, col } (1-based) or null if file not found
326
+ */
327
+ resolveLinkToPosition(linkpath, sourcePath) {
328
+ const parts = linkpath.split('#').map(p => p.trim());
329
+ const filePart = parts[0];
330
+ if (!filePart)
331
+ return null;
332
+ const file = this.getFirstLinkpathDest(filePart, sourcePath);
333
+ if (!file)
334
+ return null;
335
+ const fragments = parts.slice(1);
336
+ if (fragments.length === 0) {
337
+ return { path: file.path, line: 1, col: 1 };
338
+ }
339
+ const last = fragments[fragments.length - 1];
340
+ const blockId = last.startsWith('^') ? last.slice(1) : null;
341
+ const headingFragment = blockId && fragments.length > 1
342
+ ? fragments.slice(0, -1).join(' ')
343
+ : fragments.join(' ');
344
+ if (blockId) {
345
+ const pos = this.db.getBlockPosition(file.path, blockId);
346
+ if (pos)
347
+ return { path: file.path, ...pos };
348
+ }
349
+ if (headingFragment) {
350
+ const pos = this.db.getHeadingPosition(file.path, headingFragment);
351
+ if (pos)
352
+ return { path: file.path, ...pos };
353
+ }
354
+ return { path: file.path, line: 1, col: 1 };
191
355
  }
192
356
  }
193
357
  exports.VaultManager = VaultManager;
@@ -1 +1 @@
1
- {"version":3,"file":"vault.js","sourceRoot":"","sources":["../../src/utils/vault.ts"],"names":[],"mappings":";;;AAAA,2BAA+F;AAC/F,+BAAkE;AAElE,+CAAgD;AAChD,2CAAyC;AAEzC,MAAa,YAAY;IACf,MAAM,CAAS;IACf,EAAE,CAAkB;IAE5B,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,GAAG,IAAI,6BAAe,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;IAED,oBAAoB;IACpB,KAAK,CAAC,IAAI;QACR,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;QACvC,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAE/C,uEAAuE;QACvE,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;YACrC,MAAM,YAAY,GAAG,IAAA,eAAQ,EAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC/D,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAE/B,MAAM,OAAO,GAAG,IAAA,iBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAChD,MAAM,IAAI,GAAG,sBAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAE7C,2CAA2C;YAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;YACzD,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,qCAAqC;gBACrC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC5E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACzB,KAAK,EAAE,CAAC;YACV,CAAC;iBAAM,IAAI,YAAY,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBACtC,wDAAwD;gBACxD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC5E,IAAI,CAAC,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC,eAAe;gBAC1C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACzB,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QAED,mDAAmD;QACnD,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;YACrC,MAAM,YAAY,GAAG,IAAA,eAAQ,EAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC/D,MAAM,OAAO,GAAG,IAAA,iBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAChD,MAAM,MAAM,GAAG,sBAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAEzC,kBAAkB;YAClB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;YACjD,IAAI,IAAI,EAAE,CAAC;gBACT,kCAAkC;gBAClC,MAAM,OAAO,GAAa,EAAE,CAAC;gBAC7B,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBACrC,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;oBACzD,IAAI,UAAU,EAAE,CAAC;wBACf,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;oBAC9B,CAAC;gBACH,CAAC;gBAED,kCAAkC;gBAClC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;gBACrB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,kDAAkD;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;QACvC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpC,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IACrC,CAAC;IAEO,iBAAiB;QACvB,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;QAE7D,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,EAAE;YAC3B,MAAM,OAAO,GAAG,IAAA,gBAAW,EAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAE1D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBAEvC,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC7D,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACjB,CAAC;qBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,IAAA,cAAO,EAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;oBAC3D,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACvB,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,IAAY,EAAE,OAAe,EAAE,IAAY,EAAE,QAAkB,EAAE;QACxF,MAAM,MAAM,GAAG,sBAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,IAAA,aAAQ,EAAC,QAAQ,CAAC,CAAC;QAEjC,OAAO;YACL,EAAE,EAAE,IAAI;YACR,IAAI;YACJ,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,KAAK,EAAE,KAAK;YACZ,SAAS,EAAE,EAAE,EAAE,+BAA+B;YAC9C,IAAI;YACJ,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE;YACxC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE;SACtC,CAAC;IACJ,CAAC;IAEO,qBAAqB,CAAC,WAAmB;QAC/C,6BAA6B;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC;QACxD,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QAEtB,yCAAyC;QACzC,MAAM,UAAU,GAAG;YACjB,WAAW,GAAG,KAAK;YACnB,WAAW;YACX,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK;YACtC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK;SACvC,CAAC;QAEF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC;QACxB,CAAC;QAED,+CAA+C;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACpD,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;QAE5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qBAAqB;IACrB,SAAS,CAAC,IAAY,EAAE,OAAe;QACrC,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAEnD,0BAA0B;QAC1B,MAAM,GAAG,GAAG,IAAA,cAAO,EAAC,QAAQ,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAA,eAAU,EAAC,GAAG,CAAC,EAAE,CAAC;YACrB,IAAA,cAAS,EAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,CAAC;QAED,IAAA,kBAAa,EAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,QAAQ,CAAC,IAAY;QACnB,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,IAAA,eAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAA,iBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,sBAAsB;IACtB,gBAAgB,CAAC,OAAa,IAAI,IAAI,EAAE;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC3D,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;QAC1C,OAAO,IAAA,WAAI,EAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,GAAG,OAAO,KAAK,CAAC,CAAC;IAC7D,CAAC;IAED,oBAAoB;IACpB,eAAe,CAAC,YAAoB;QAClC,OAAO,IAAA,WAAI,EAAC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC;IACjE,CAAC;IAED,yBAAyB;IACzB,WAAW,CAAC,EAAU;QACpB,OAAO,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,aAAa,CAAC,IAAY;QACxB,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,WAAW,CAAC,KAAa,EAAE,IAAe,EAAE,QAAgB,EAAE;QAC5D,OAAO,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,YAAY,CAAC,MAAc;QACzB,OAAO,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;IAC9B,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC5B,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;IAChC,CAAC;IAED,yBAAyB;IACzB,UAAU,CAAC,IAAU;QACnB,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;CACF;AAzND,oCAyNC"}
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.0",
3
+ "version": "0.1.2",
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
  },