@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,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createSearchCommand = createSearchCommand;
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const config_js_1 = require("../utils/config.js");
|
|
6
|
+
const vault_js_1 = require("../utils/vault.js");
|
|
7
|
+
function createSearchCommand() {
|
|
8
|
+
const command = new commander_1.Command('search')
|
|
9
|
+
.description('Search notes')
|
|
10
|
+
.argument('<query>', 'Search query')
|
|
11
|
+
.option('-t, --tags <tags>', 'Filter by tags (comma-separated)')
|
|
12
|
+
.option('-l, --limit <limit>', 'Maximum results', '20')
|
|
13
|
+
.option('-f, --format <format>', 'Output format (json|text)', 'json')
|
|
14
|
+
.action((query, options) => {
|
|
15
|
+
try {
|
|
16
|
+
const vaultPath = config_js_1.ConfigManager.findVaultPath();
|
|
17
|
+
if (!vaultPath) {
|
|
18
|
+
console.error('❌ Not in a SecondBrain vault. Run `sb init` first.');
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
const configManager = new config_js_1.ConfigManager(vaultPath);
|
|
22
|
+
const config = configManager.getConfig();
|
|
23
|
+
const vault = new vault_js_1.VaultManager(config);
|
|
24
|
+
const tags = options.tags ? options.tags.split(',').map((t) => t.trim()) : undefined;
|
|
25
|
+
const limit = parseInt(options.limit);
|
|
26
|
+
const notes = vault.searchNotes(query, tags, limit);
|
|
27
|
+
if (options.format === 'json') {
|
|
28
|
+
const results = notes.map(note => ({
|
|
29
|
+
id: note.id,
|
|
30
|
+
title: note.title,
|
|
31
|
+
path: note.path,
|
|
32
|
+
excerpt: note.content.substring(0, 200) + (note.content.length > 200 ? '...' : ''),
|
|
33
|
+
tags: note.tags,
|
|
34
|
+
linksCount: note.links.length,
|
|
35
|
+
backlinksCount: note.backlinks.length
|
|
36
|
+
}));
|
|
37
|
+
console.log(JSON.stringify({
|
|
38
|
+
query,
|
|
39
|
+
filters: { tags, limit },
|
|
40
|
+
results,
|
|
41
|
+
total: results.length
|
|
42
|
+
}, null, 2));
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
// Text format
|
|
46
|
+
console.log(`Search results for "${query}":\n`);
|
|
47
|
+
notes.forEach((note, i) => {
|
|
48
|
+
console.log(`${i + 1}. ${note.title}`);
|
|
49
|
+
console.log(` Path: ${note.path}`);
|
|
50
|
+
console.log(` Tags: ${note.tags.join(', ') || 'none'}`);
|
|
51
|
+
console.log(` ID: ${note.id}`);
|
|
52
|
+
console.log();
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
vault.close();
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
console.error('❌ Search failed:', error instanceof Error ? error.message : String(error));
|
|
59
|
+
process.exit(1);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
return command;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../src/commands/stats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,kBAAkB,IAAI,OAAO,CAwC5C"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createStatsCommand = createStatsCommand;
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const config_js_1 = require("../utils/config.js");
|
|
6
|
+
const vault_js_1 = require("../utils/vault.js");
|
|
7
|
+
function createStatsCommand() {
|
|
8
|
+
const command = new commander_1.Command('stats')
|
|
9
|
+
.description('Show vault statistics')
|
|
10
|
+
.option('-f, --format <format>', 'Output format (json|text)', 'text')
|
|
11
|
+
.action((options) => {
|
|
12
|
+
try {
|
|
13
|
+
const vaultPath = config_js_1.ConfigManager.findVaultPath();
|
|
14
|
+
if (!vaultPath) {
|
|
15
|
+
console.error('❌ Not in a SecondBrain vault. Run `sb init` first.');
|
|
16
|
+
process.exit(1);
|
|
17
|
+
}
|
|
18
|
+
const configManager = new config_js_1.ConfigManager(vaultPath);
|
|
19
|
+
const config = configManager.getConfig();
|
|
20
|
+
const vault = new vault_js_1.VaultManager(config);
|
|
21
|
+
const stats = vault.getStats();
|
|
22
|
+
if (options.format === 'json') {
|
|
23
|
+
console.log(JSON.stringify(stats, null, 2));
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
console.log('📊 Vault Statistics\n');
|
|
27
|
+
console.log('Total notes:', stats.totalNotes);
|
|
28
|
+
console.log('Total links:', stats.totalLinks);
|
|
29
|
+
console.log('Orphan notes:', stats.orphans);
|
|
30
|
+
if (stats.orphans > 0) {
|
|
31
|
+
console.log();
|
|
32
|
+
console.log('⚠️ Run `sb orphans` to see disconnected notes');
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
vault.close();
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
console.error('❌ Failed to get stats:', error instanceof Error ? error.message : String(error));
|
|
39
|
+
process.exit(1);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
return command;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=stats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../src/commands/stats.ts"],"names":[],"mappings":";;AAIA,gDAwCC;AA5CD,yCAAoC;AACpC,kDAAmD;AACnD,gDAAiD;AAEjD,SAAgB,kBAAkB;IAChC,MAAM,OAAO,GAAG,IAAI,mBAAO,CAAC,OAAO,CAAC;SACjC,WAAW,CAAC,uBAAuB,CAAC;SACpC,MAAM,CAAC,uBAAuB,EAAE,2BAA2B,EAAE,MAAM,CAAC;SACpE,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QAClB,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,yBAAa,CAAC,aAAa,EAAE,CAAC;YAChD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;gBACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,aAAa,GAAG,IAAI,yBAAa,CAAC,SAAS,CAAC,CAAC;YACnD,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,IAAI,uBAAY,CAAC,MAAM,CAAC,CAAC;YAEvC,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YAE/B,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;gBACrC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;gBAC9C,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;gBAC9C,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;gBAE5C,IAAI,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;oBACtB,OAAO,CAAC,GAAG,EAAE,CAAC;oBACd,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;gBAChE,CAAC;YACH,CAAC;YAED,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAChG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,iBAAiB,IAAI,OAAO,CAuC3C"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createSyncCommand = createSyncCommand;
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const config_js_1 = require("../utils/config.js");
|
|
6
|
+
const vault_js_1 = require("../utils/vault.js");
|
|
7
|
+
function createSyncCommand() {
|
|
8
|
+
const command = new commander_1.Command('sync')
|
|
9
|
+
.description('Sync vault with database index')
|
|
10
|
+
.action(async () => {
|
|
11
|
+
try {
|
|
12
|
+
const vaultPath = config_js_1.ConfigManager.findVaultPath();
|
|
13
|
+
if (!vaultPath) {
|
|
14
|
+
console.error('❌ Not in a SecondBrain vault. Run `sb init` first.');
|
|
15
|
+
process.exit(1);
|
|
16
|
+
}
|
|
17
|
+
const configManager = new config_js_1.ConfigManager(vaultPath);
|
|
18
|
+
const config = configManager.getConfig();
|
|
19
|
+
const vault = new vault_js_1.VaultManager(config);
|
|
20
|
+
console.log('🔄 Syncing vault...');
|
|
21
|
+
const result = await vault.sync();
|
|
22
|
+
console.log('✅ Sync complete!');
|
|
23
|
+
console.log(`Added: ${result.added}`);
|
|
24
|
+
console.log(`Updated: ${result.updated}`);
|
|
25
|
+
console.log(`Removed: ${result.removed}`);
|
|
26
|
+
const stats = vault.getStats();
|
|
27
|
+
console.log();
|
|
28
|
+
console.log('Vault stats:');
|
|
29
|
+
console.log(`Total notes: ${stats.totalNotes}`);
|
|
30
|
+
console.log(`Total links: ${stats.totalLinks}`);
|
|
31
|
+
console.log(`Orphan notes: ${stats.orphans}`);
|
|
32
|
+
vault.close();
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
console.error('❌ Sync failed:', error instanceof Error ? error.message : String(error));
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
return command;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":";;AAIA,8CAuCC;AA3CD,yCAAoC;AACpC,kDAAmD;AACnD,gDAAiD;AAEjD,SAAgB,iBAAiB;IAC/B,MAAM,OAAO,GAAG,IAAI,mBAAO,CAAC,MAAM,CAAC;SAChC,WAAW,CAAC,gCAAgC,CAAC;SAC7C,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,yBAAa,CAAC,aAAa,EAAE,CAAC;YAChD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;gBACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,aAAa,GAAG,IAAI,yBAAa,CAAC,SAAS,CAAC,CAAC;YACnD,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,IAAI,uBAAY,CAAC,MAAM,CAAC,CAAC;YAEvC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YAEnC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;YAElC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,UAAU,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YAE1C,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAE9C,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACxF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const init_js_1 = require("./commands/init.js");
|
|
6
|
+
const capture_js_1 = require("./commands/capture.js");
|
|
7
|
+
const search_js_1 = require("./commands/search.js");
|
|
8
|
+
const get_js_1 = require("./commands/get.js");
|
|
9
|
+
const backlinks_js_1 = require("./commands/backlinks.js");
|
|
10
|
+
const sync_js_1 = require("./commands/sync.js");
|
|
11
|
+
const stats_js_1 = require("./commands/stats.js");
|
|
12
|
+
const orphans_js_1 = require("./commands/orphans.js");
|
|
13
|
+
const config_js_1 = require("./commands/config.js");
|
|
14
|
+
const pkg = require("../package.json");
|
|
15
|
+
const program = new commander_1.Command();
|
|
16
|
+
program
|
|
17
|
+
.name('sb')
|
|
18
|
+
.description('SecondBrain CLI - A tool for LLM agents to manage Obsidian vaults')
|
|
19
|
+
.version(pkg.version);
|
|
20
|
+
// Add commands
|
|
21
|
+
program.addCommand((0, init_js_1.createInitCommand)());
|
|
22
|
+
program.addCommand((0, capture_js_1.createCaptureCommand)());
|
|
23
|
+
program.addCommand((0, search_js_1.createSearchCommand)());
|
|
24
|
+
program.addCommand((0, get_js_1.createGetCommand)());
|
|
25
|
+
program.addCommand((0, backlinks_js_1.createBacklinksCommand)());
|
|
26
|
+
program.addCommand((0, sync_js_1.createSyncCommand)());
|
|
27
|
+
program.addCommand((0, stats_js_1.createStatsCommand)());
|
|
28
|
+
program.addCommand((0, orphans_js_1.createOrphansCommand)());
|
|
29
|
+
program.addCommand((0, config_js_1.createConfigCommand)());
|
|
30
|
+
// Default action - show help
|
|
31
|
+
if (process.argv.length === 2) {
|
|
32
|
+
program.help();
|
|
33
|
+
}
|
|
34
|
+
program.parse();
|
|
35
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,gDAAuD;AACvD,sDAA6D;AAC7D,oDAA2D;AAC3D,8CAAqD;AACrD,0DAAiE;AACjE,gDAAuD;AACvD,kDAAyD;AACzD,sDAA6D;AAC7D,oDAA2D;AAC3D,uCAAwC;AAExC,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,IAAI,CAAC;KACV,WAAW,CAAC,mEAAmE,CAAC;KAChF,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAExB,eAAe;AACf,OAAO,CAAC,UAAU,CAAC,IAAA,2BAAiB,GAAE,CAAC,CAAC;AACxC,OAAO,CAAC,UAAU,CAAC,IAAA,iCAAoB,GAAE,CAAC,CAAC;AAC3C,OAAO,CAAC,UAAU,CAAC,IAAA,+BAAmB,GAAE,CAAC,CAAC;AAC1C,OAAO,CAAC,UAAU,CAAC,IAAA,yBAAgB,GAAE,CAAC,CAAC;AACvC,OAAO,CAAC,UAAU,CAAC,IAAA,qCAAsB,GAAE,CAAC,CAAC;AAC7C,OAAO,CAAC,UAAU,CAAC,IAAA,2BAAiB,GAAE,CAAC,CAAC;AACxC,OAAO,CAAC,UAAU,CAAC,IAAA,6BAAkB,GAAE,CAAC,CAAC;AACzC,OAAO,CAAC,UAAU,CAAC,IAAA,iCAAoB,GAAE,CAAC,CAAC;AAC3C,OAAO,CAAC,UAAU,CAAC,IAAA,+BAAmB,GAAE,CAAC,CAAC;AAE1C,6BAA6B;AAC7B,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IAC9B,OAAO,CAAC,IAAI,EAAE,CAAC;AACjB,CAAC;AAED,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
export interface Note {
|
|
2
|
+
id: string;
|
|
3
|
+
path: string;
|
|
4
|
+
title: string;
|
|
5
|
+
content: string;
|
|
6
|
+
frontmatter: Record<string, unknown>;
|
|
7
|
+
tags: string[];
|
|
8
|
+
links: string[];
|
|
9
|
+
backlinks: string[];
|
|
10
|
+
hash: string;
|
|
11
|
+
createdAt: string;
|
|
12
|
+
modifiedAt: string;
|
|
13
|
+
}
|
|
14
|
+
export interface SearchResult {
|
|
15
|
+
id: string;
|
|
16
|
+
title: string;
|
|
17
|
+
path: string;
|
|
18
|
+
excerpt: string;
|
|
19
|
+
tags: string[];
|
|
20
|
+
linksCount: number;
|
|
21
|
+
backlinksCount: number;
|
|
22
|
+
score: number;
|
|
23
|
+
}
|
|
24
|
+
export interface SearchResponse {
|
|
25
|
+
query: string;
|
|
26
|
+
filters: SearchFilters;
|
|
27
|
+
results: SearchResult[];
|
|
28
|
+
total: number;
|
|
29
|
+
}
|
|
30
|
+
export interface SearchFilters {
|
|
31
|
+
tags?: string[];
|
|
32
|
+
path?: string;
|
|
33
|
+
limit?: number;
|
|
34
|
+
}
|
|
35
|
+
export interface Config {
|
|
36
|
+
vaultPath: string;
|
|
37
|
+
dailyNotesFolder: string;
|
|
38
|
+
templatesFolder: string;
|
|
39
|
+
dbPath: string;
|
|
40
|
+
}
|
|
41
|
+
export interface Template {
|
|
42
|
+
name: string;
|
|
43
|
+
path: string;
|
|
44
|
+
content: string;
|
|
45
|
+
frontmatter: Record<string, unknown>;
|
|
46
|
+
requiredFields: string[];
|
|
47
|
+
}
|
|
48
|
+
export interface LintIssue {
|
|
49
|
+
noteId: string;
|
|
50
|
+
type: 'missing-tags' | 'missing-title' | 'missing-frontmatter' | 'broken-link' | 'orphan-note';
|
|
51
|
+
severity: 'error' | 'warning' | 'info';
|
|
52
|
+
message: string;
|
|
53
|
+
path: string;
|
|
54
|
+
}
|
|
55
|
+
export interface GraphNode {
|
|
56
|
+
id: string;
|
|
57
|
+
title: string;
|
|
58
|
+
path: string;
|
|
59
|
+
tags: string[];
|
|
60
|
+
}
|
|
61
|
+
export interface GraphEdge {
|
|
62
|
+
source: string;
|
|
63
|
+
target: string;
|
|
64
|
+
}
|
|
65
|
+
export interface GraphData {
|
|
66
|
+
nodes: GraphNode[];
|
|
67
|
+
edges: GraphEdge[];
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,aAAa,CAAC;IACvB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,MAAM;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,cAAc,GAAG,eAAe,GAAG,qBAAqB,GAAG,aAAa,GAAG,aAAa,CAAC;IAC/F,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Config } from '../types/index.js';
|
|
2
|
+
export declare class ConfigManager {
|
|
3
|
+
private vaultPath;
|
|
4
|
+
constructor(vaultPath?: string);
|
|
5
|
+
get configPath(): string;
|
|
6
|
+
get dbPath(): string;
|
|
7
|
+
isInitialized(): boolean;
|
|
8
|
+
init(): Config;
|
|
9
|
+
loadConfig(): Config | null;
|
|
10
|
+
saveConfig(config: Config): void;
|
|
11
|
+
getConfig(): Config;
|
|
12
|
+
updateConfig(updates: Partial<Config>): void;
|
|
13
|
+
static findVaultPath(startPath?: string): string | null;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAKhD,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAAS;gBAEd,SAAS,GAAE,MAAsB;IAI7C,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,aAAa,IAAI,OAAO;IAIxB,IAAI,IAAI,MAAM;IAmBd,UAAU,IAAI,MAAM,GAAG,IAAI;IAa3B,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIhC,SAAS,IAAI,MAAM;IAQnB,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI;IAM5C,MAAM,CAAC,aAAa,CAAC,SAAS,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI;CAYvE"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConfigManager = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
const CONFIG_FILE = '.secondbrain/config.json';
|
|
7
|
+
const DB_FILE = '.secondbrain/index.db';
|
|
8
|
+
class ConfigManager {
|
|
9
|
+
vaultPath;
|
|
10
|
+
constructor(vaultPath = process.cwd()) {
|
|
11
|
+
this.vaultPath = vaultPath;
|
|
12
|
+
}
|
|
13
|
+
get configPath() {
|
|
14
|
+
return (0, path_1.join)(this.vaultPath, CONFIG_FILE);
|
|
15
|
+
}
|
|
16
|
+
get dbPath() {
|
|
17
|
+
return (0, path_1.join)(this.vaultPath, DB_FILE);
|
|
18
|
+
}
|
|
19
|
+
isInitialized() {
|
|
20
|
+
return (0, fs_1.existsSync)(this.configPath);
|
|
21
|
+
}
|
|
22
|
+
init() {
|
|
23
|
+
// Create .secondbrain directory
|
|
24
|
+
const sbDir = (0, path_1.join)(this.vaultPath, '.secondbrain');
|
|
25
|
+
if (!(0, fs_1.existsSync)(sbDir)) {
|
|
26
|
+
(0, fs_1.mkdirSync)(sbDir, { recursive: true });
|
|
27
|
+
}
|
|
28
|
+
// Create default config
|
|
29
|
+
const config = {
|
|
30
|
+
vaultPath: this.vaultPath,
|
|
31
|
+
dailyNotesFolder: 'Daily',
|
|
32
|
+
templatesFolder: 'Templates',
|
|
33
|
+
dbPath: this.dbPath
|
|
34
|
+
};
|
|
35
|
+
this.saveConfig(config);
|
|
36
|
+
return config;
|
|
37
|
+
}
|
|
38
|
+
loadConfig() {
|
|
39
|
+
if (!this.isInitialized()) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
const content = (0, fs_1.readFileSync)(this.configPath, 'utf-8');
|
|
44
|
+
return JSON.parse(content);
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
saveConfig(config) {
|
|
51
|
+
(0, fs_1.writeFileSync)(this.configPath, JSON.stringify(config, null, 2));
|
|
52
|
+
}
|
|
53
|
+
getConfig() {
|
|
54
|
+
const config = this.loadConfig();
|
|
55
|
+
if (!config) {
|
|
56
|
+
throw new Error('Vault not initialized. Run `sb init` first.');
|
|
57
|
+
}
|
|
58
|
+
return config;
|
|
59
|
+
}
|
|
60
|
+
updateConfig(updates) {
|
|
61
|
+
const config = this.getConfig();
|
|
62
|
+
Object.assign(config, updates);
|
|
63
|
+
this.saveConfig(config);
|
|
64
|
+
}
|
|
65
|
+
static findVaultPath(startPath = process.cwd()) {
|
|
66
|
+
let currentPath = startPath;
|
|
67
|
+
while (currentPath !== (0, path_1.dirname)(currentPath)) {
|
|
68
|
+
if ((0, fs_1.existsSync)((0, path_1.join)(currentPath, '.secondbrain', 'config.json'))) {
|
|
69
|
+
return currentPath;
|
|
70
|
+
}
|
|
71
|
+
currentPath = (0, path_1.dirname)(currentPath);
|
|
72
|
+
}
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
exports.ConfigManager = ConfigManager;
|
|
77
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":";;;AAAA,2BAAwE;AACxE,+BAAqC;AAIrC,MAAM,WAAW,GAAG,0BAA0B,CAAC;AAC/C,MAAM,OAAO,GAAG,uBAAuB,CAAC;AAExC,MAAa,aAAa;IAChB,SAAS,CAAS;IAE1B,YAAY,YAAoB,OAAO,CAAC,GAAG,EAAE;QAC3C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAA,WAAI,EAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAA,WAAI,EAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,aAAa;QACX,OAAO,IAAA,eAAU,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;IAED,IAAI;QACF,gCAAgC;QAChC,MAAM,KAAK,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QACnD,IAAI,CAAC,IAAA,eAAU,EAAC,KAAK,CAAC,EAAE,CAAC;YACvB,IAAA,cAAS,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,CAAC;QAED,wBAAwB;QACxB,MAAM,MAAM,GAAW;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,gBAAgB,EAAE,OAAO;YACzB,eAAe,EAAE,WAAW;YAC5B,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACxB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,UAAU;QACR,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,iBAAY,EAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACvD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAW,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,UAAU,CAAC,MAAc;QACvB,IAAA,kBAAa,EAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,SAAS;QACP,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,YAAY,CAAC,OAAwB;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,YAAoB,OAAO,CAAC,GAAG,EAAE;QACpD,IAAI,WAAW,GAAG,SAAS,CAAC;QAE5B,OAAO,WAAW,KAAK,IAAA,cAAO,EAAC,WAAW,CAAC,EAAE,CAAC;YAC5C,IAAI,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,WAAW,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC;gBACjE,OAAO,WAAW,CAAC;YACrB,CAAC;YACD,WAAW,GAAG,IAAA,cAAO,EAAC,WAAW,CAAC,CAAC;QACrC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAjFD,sCAiFC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Note, Config, GraphData } from '../types/index.js';
|
|
2
|
+
export declare class DatabaseManager {
|
|
3
|
+
private db;
|
|
4
|
+
private config;
|
|
5
|
+
constructor(config: Config);
|
|
6
|
+
private initTables;
|
|
7
|
+
close(): void;
|
|
8
|
+
upsertNote(note: Note): void;
|
|
9
|
+
private updateLinks;
|
|
10
|
+
getNoteById(id: string): Note | null;
|
|
11
|
+
getNoteByPath(path: string): Note | null;
|
|
12
|
+
getNoteByTitle(title: string): Note | null;
|
|
13
|
+
searchNotes(query: string, tags?: string[], limit?: number): Note[];
|
|
14
|
+
getBacklinks(noteId: string): Note[];
|
|
15
|
+
getOrphans(): Note[];
|
|
16
|
+
getAllNotes(): Note[];
|
|
17
|
+
deleteNoteByPath(path: string): void;
|
|
18
|
+
getStats(): {
|
|
19
|
+
totalNotes: number;
|
|
20
|
+
totalLinks: number;
|
|
21
|
+
orphans: number;
|
|
22
|
+
};
|
|
23
|
+
getGraphData(): GraphData;
|
|
24
|
+
private rowToNote;
|
|
25
|
+
private getNotesWithLinksBatch;
|
|
26
|
+
private rowsToNotes;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=database.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/utils/database.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGjE,qBAAa,eAAe;IAC1B,OAAO,CAAC,EAAE,CAAW;IACrB,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,MAAM;IAM1B,OAAO,CAAC,UAAU;IAoClB,KAAK,IAAI,IAAI;IAKb,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IA8B5B,OAAO,CAAC,WAAW;IA2CnB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAMpC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAMxC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAM1C,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,GAAE,MAAW,GAAG,IAAI,EAAE;IAgBvE,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE;IAUpC,UAAU,IAAI,IAAI,EAAE;IAWpB,WAAW,IAAI,IAAI,EAAE;IAKrB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIpC,QAAQ,IAAI;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAQvE,YAAY,IAAI,SAAS;IAkBzB,OAAO,CAAC,SAAS;IAmBjB,OAAO,CAAC,sBAAsB;IA4C9B,OAAO,CAAC,WAAW;CA6BpB"}
|