@andespindola/brainlink 0.1.0-beta.4 → 0.1.0-beta.40
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/AGENTS.md +5 -5
- package/CHANGELOG.md +43 -2
- package/CONTRIBUTING.md +2 -2
- package/COPYRIGHT.md +5 -0
- package/README.md +213 -20
- package/SECURITY.md +1 -1
- package/dist/application/add-note.js +62 -13
- package/dist/application/analyze-vault.js +95 -8
- package/dist/application/build-context.js +56 -1
- package/dist/application/dedupe-notes.js +226 -0
- package/dist/application/frontend/client-css.js +214 -100
- package/dist/application/frontend/client-html.js +60 -45
- package/dist/application/frontend/client-js.js +656 -94
- package/dist/application/get-graph-layout.js +22 -7
- package/dist/application/get-graph-node.js +12 -0
- package/dist/application/get-graph-summary.js +12 -0
- package/dist/application/get-graph.js +3 -3
- package/dist/application/import-legacy-sqlite.js +296 -0
- package/dist/application/index-vault.js +11 -4
- package/dist/application/list-agents.js +3 -3
- package/dist/application/list-links.js +5 -5
- package/dist/application/migrate-vault.js +91 -0
- package/dist/application/search-graph-node-ids.js +12 -0
- package/dist/application/search-knowledge.js +75 -5
- package/dist/application/server/routes.js +27 -1
- package/dist/benchmarks/large-vault.js +1 -1
- package/dist/cli/commands/agent-commands.js +412 -0
- package/dist/cli/commands/config-commands.js +167 -0
- package/dist/cli/commands/read-commands.js +25 -8
- package/dist/cli/commands/write-commands.js +669 -9
- package/dist/cli/main.js +4 -0
- package/dist/cli/runtime.js +5 -2
- package/dist/domain/context.js +53 -11
- package/dist/domain/embeddings.js +2 -1
- package/dist/domain/graph-layout.js +20 -14
- package/dist/domain/markdown.js +36 -4
- package/dist/domain/middle-out.js +18 -0
- package/dist/infrastructure/config.js +94 -8
- package/dist/infrastructure/file-index.js +328 -0
- package/dist/infrastructure/file-system-vault.js +15 -0
- package/dist/infrastructure/paths.js +9 -1
- package/dist/infrastructure/private-pack-codec.js +73 -0
- package/dist/infrastructure/search-packs.js +348 -0
- package/dist/infrastructure/session-state.js +172 -0
- package/dist/mcp/main.js +11 -3
- package/dist/mcp/server.js +27 -2
- package/dist/mcp/startup.js +35 -0
- package/dist/mcp/tools.js +633 -19
- package/docs/AGENT_USAGE.md +144 -16
- package/docs/ARCHITECTURE.md +37 -26
- package/docs/QUICKSTART.md +111 -0
- package/package.json +6 -4
- package/dist/infrastructure/sqlite/document-writer.js +0 -51
- package/dist/infrastructure/sqlite/graph-reader.js +0 -120
- package/dist/infrastructure/sqlite/schema.js +0 -111
- package/dist/infrastructure/sqlite/search-reader.js +0 -156
- package/dist/infrastructure/sqlite/types.js +0 -1
- package/dist/infrastructure/sqlite-index.js +0 -25
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getBrokenLinksReport, getOrphansReport, getStats, validateVault } from '../../application/analyze-vault.js';
|
|
1
|
+
import { getBrokenLinksReport, getExtendedStats, getOrphansReport, getStats, validateVault } from '../../application/analyze-vault.js';
|
|
2
2
|
import { buildContextPackage } from '../../application/build-context.js';
|
|
3
3
|
import { getGraph } from '../../application/get-graph.js';
|
|
4
4
|
import { listAgents } from '../../application/list-agents.js';
|
|
@@ -12,14 +12,14 @@ export const registerReadCommands = (program) => {
|
|
|
12
12
|
.argument('<query>', 'search query')
|
|
13
13
|
.option('-v, --vault <vault>', 'vault directory')
|
|
14
14
|
.option('-a, --agent <agent>', 'filter by agent memory namespace')
|
|
15
|
-
.option('-l, --limit <limit>', 'maximum results'
|
|
15
|
+
.option('-l, --limit <limit>', 'maximum results')
|
|
16
16
|
.option('-m, --mode <mode>', 'search mode: fts, semantic or hybrid')
|
|
17
17
|
.option('--json', 'print machine-readable JSON')
|
|
18
18
|
.description('search indexed knowledge')
|
|
19
19
|
.action(async (query, options) => {
|
|
20
20
|
const resolved = await resolveOptions(options);
|
|
21
|
-
const limit = parsePositiveInteger(options.limit ?? String(resolved.
|
|
22
|
-
const mode = sanitizeSearchMode(options.mode, resolved.
|
|
21
|
+
const limit = parsePositiveInteger(options.limit ?? String(resolved.defaults.defaultSearchLimit), resolved.defaults.defaultSearchLimit);
|
|
22
|
+
const mode = sanitizeSearchMode(options.mode, resolved.defaults.defaultSearchMode);
|
|
23
23
|
const results = await searchKnowledge(resolved.vault, query, limit, resolved.agent, mode);
|
|
24
24
|
print(options.json, { query, agent: resolved.agent, limit, mode, results }, () => results
|
|
25
25
|
.map((result, index) => [`${index + 1}. ${result.title} (${result.path}) score=${result.score.toFixed(3)} mode=${result.searchMode}`, result.content].join('\n'))
|
|
@@ -58,15 +58,15 @@ export const registerReadCommands = (program) => {
|
|
|
58
58
|
.argument('<query>', 'context query')
|
|
59
59
|
.option('-v, --vault <vault>', 'vault directory')
|
|
60
60
|
.option('-a, --agent <agent>', 'filter by agent memory namespace')
|
|
61
|
-
.option('-l, --limit <limit>', 'maximum search results before context selection'
|
|
62
|
-
.option('-t, --tokens <tokens>', 'maximum estimated context tokens'
|
|
61
|
+
.option('-l, --limit <limit>', 'maximum search results before context selection')
|
|
62
|
+
.option('-t, --tokens <tokens>', 'maximum estimated context tokens')
|
|
63
63
|
.option('-m, --mode <mode>', 'search mode: fts, semantic or hybrid')
|
|
64
64
|
.option('--json', 'print machine-readable JSON')
|
|
65
65
|
.description('build a compact context package for an agent')
|
|
66
66
|
.action(async (query, options) => {
|
|
67
67
|
const resolved = await resolveOptions(options);
|
|
68
|
-
const mode = sanitizeSearchMode(options.mode, resolved.
|
|
69
|
-
const contextPackage = await buildContextPackage(resolved.vault, query, parsePositiveInteger(options.limit ??
|
|
68
|
+
const mode = sanitizeSearchMode(options.mode, resolved.defaults.defaultSearchMode);
|
|
69
|
+
const contextPackage = await buildContextPackage(resolved.vault, query, parsePositiveInteger(options.limit ?? String(resolved.defaults.defaultSearchLimit), resolved.defaults.defaultSearchLimit), parsePositiveInteger(options.tokens ?? String(resolved.defaults.defaultContextTokens), resolved.defaults.defaultContextTokens), resolved.agent, mode);
|
|
70
70
|
print(options.json, contextPackage, () => contextPackage.content);
|
|
71
71
|
});
|
|
72
72
|
program
|
|
@@ -94,10 +94,27 @@ export const registerReadCommands = (program) => {
|
|
|
94
94
|
.command('stats')
|
|
95
95
|
.option('-v, --vault <vault>', 'vault directory')
|
|
96
96
|
.option('-a, --agent <agent>', 'filter by agent memory namespace')
|
|
97
|
+
.option('--extended', 'include storage, quality and latency observability probes')
|
|
97
98
|
.option('--json', 'print machine-readable JSON')
|
|
98
99
|
.description('print indexed vault statistics')
|
|
99
100
|
.action(async (options) => {
|
|
100
101
|
const resolved = await resolveOptions(options);
|
|
102
|
+
if (options.extended) {
|
|
103
|
+
const stats = await getExtendedStats(resolved.vault, resolved.agent);
|
|
104
|
+
print(options.json, stats, () => [
|
|
105
|
+
`Documents: ${stats.stats.documentCount}`,
|
|
106
|
+
`Links: ${stats.stats.linkCount}`,
|
|
107
|
+
`Resolved links: ${stats.stats.resolvedLinkCount}`,
|
|
108
|
+
`Broken links: ${stats.stats.brokenLinkCount}`,
|
|
109
|
+
`Orphans: ${stats.stats.orphanCount}`,
|
|
110
|
+
`Tags: ${stats.stats.tagCount}`,
|
|
111
|
+
`Total files: ${stats.storage.totalFileCount}`,
|
|
112
|
+
`Markdown files: ${stats.storage.markdownFileCount}`,
|
|
113
|
+
`Vault bytes: ${stats.storage.totalBytes}`,
|
|
114
|
+
`Latency index/search/context (ms): ${stats.observability.latenciesMs.index}/${stats.observability.latenciesMs.search}/${stats.observability.latenciesMs.context}`
|
|
115
|
+
].join('\n'));
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
101
118
|
const stats = await getStats(resolved.vault, resolved.agent);
|
|
102
119
|
print(options.json, stats, () => [
|
|
103
120
|
`Documents: ${stats.documentCount}`,
|