claude-brain 0.30.2 → 0.30.3
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 +241 -191
- package/VERSION +1 -1
- package/assets/CLAUDE-unified.md +11 -11
- package/assets/CLAUDE.md +29 -29
- package/package.json +7 -3
- package/packs/backend/node.json +173 -173
- package/packs/core/javascript.json +176 -176
- package/packs/core/typescript.json +222 -222
- package/packs/frontend/react.json +254 -254
- package/packs/meta/testing.json +172 -172
- package/scripts/postinstall.mjs +531 -531
- package/src/automation/decision-detector.ts +452 -452
- package/src/automation/phase12-manager.ts +456 -456
- package/src/automation/proactive-recall.ts +373 -373
- package/src/automation/project-detector.ts +310 -310
- package/src/automation/repo-scanner.ts +210 -205
- package/src/cli/auto-setup.ts +75 -75
- package/src/cli/auto-start.ts +266 -266
- package/src/cli/bin.ts +264 -264
- package/src/cli/commands/autostart.ts +90 -90
- package/src/cli/commands/chroma.ts +578 -577
- package/src/cli/commands/export-training.ts +70 -70
- package/src/cli/commands/export.ts +130 -130
- package/src/cli/commands/git-hook.ts +183 -183
- package/src/cli/commands/hooks.ts +217 -217
- package/src/cli/commands/init.ts +123 -123
- package/src/cli/commands/install-mcp.ts +122 -111
- package/src/cli/commands/models.ts +979 -979
- package/src/cli/commands/pack.ts +200 -200
- package/src/cli/commands/refresh.ts +344 -339
- package/src/cli/commands/reindex.ts +120 -120
- package/src/cli/commands/serve.ts +466 -463
- package/src/cli/commands/start.ts +44 -44
- package/src/cli/commands/status.ts +220 -203
- package/src/cli/commands/uninstall-mcp.ts +45 -41
- package/src/cli/commands/update.ts +130 -124
- package/src/cli/migrate-chroma.ts +106 -106
- package/src/cli/ui/animations.ts +80 -80
- package/src/cli/ui/components.ts +82 -82
- package/src/cli/ui/index.ts +4 -4
- package/src/cli/ui/logo.ts +36 -36
- package/src/cli/ui/theme.ts +55 -55
- package/src/code-intelligence/indexer.ts +352 -352
- package/src/code-intelligence/linker.ts +178 -178
- package/src/code-intelligence/parser.ts +484 -484
- package/src/code-intelligence/query.ts +291 -291
- package/src/code-intelligence/schema.ts +83 -83
- package/src/code-intelligence/types.ts +95 -95
- package/src/config/defaults.ts +52 -52
- package/src/config/home.ts +56 -56
- package/src/config/index.ts +5 -5
- package/src/config/loader.ts +192 -192
- package/src/config/schema.ts +446 -415
- package/src/config/validator.ts +182 -182
- package/src/context/assembler.ts +407 -400
- package/src/context/index.ts +79 -79
- package/src/context/progress-tracker.ts +174 -174
- package/src/context/standards-manager.ts +287 -287
- package/src/context/validator.ts +58 -58
- package/src/diagnostics/index.ts +122 -121
- package/src/health/index.ts +233 -232
- package/src/hooks/brain-hook.ts +134 -131
- package/src/hooks/capture.ts +168 -168
- package/src/hooks/claude-code-mastery.md +112 -112
- package/src/hooks/context-hook.ts +260 -245
- package/src/hooks/deduplicator.ts +72 -72
- package/src/hooks/git-capture.ts +109 -109
- package/src/hooks/git-hook-installer.ts +211 -207
- package/src/hooks/index.ts +20 -20
- package/src/hooks/installer.ts +306 -288
- package/src/hooks/interceptor-hook.ts +204 -201
- package/src/hooks/passive-classifier.ts +397 -397
- package/src/hooks/queue.ts +160 -129
- package/src/hooks/session-tracker.ts +312 -312
- package/src/hooks/types.ts +52 -52
- package/src/index.ts +7 -7
- package/src/intelligence/cross-project/generalizer.ts +283 -283
- package/src/intelligence/cross-project/index.ts +7 -7
- package/src/intelligence/hf-downloader.ts +222 -222
- package/src/intelligence/hf-manifest.json +78 -78
- package/src/intelligence/index.ts +24 -24
- package/src/intelligence/inference-router.ts +762 -762
- package/src/intelligence/model-manager.ts +263 -245
- package/src/intelligence/optimization/index.ts +10 -10
- package/src/intelligence/optimization/precompute.ts +202 -202
- package/src/intelligence/optimization/semantic-cache.ts +213 -207
- package/src/intelligence/prediction/index.ts +7 -7
- package/src/intelligence/prediction/recommender.ts +276 -268
- package/src/intelligence/reasoning/chain-retrieval.ts +243 -247
- package/src/intelligence/reasoning/index.ts +7 -7
- package/src/intelligence/temporal/evolution.ts +193 -197
- package/src/intelligence/temporal/index.ts +16 -16
- package/src/intelligence/temporal/query-processor.ts +190 -190
- package/src/intelligence/temporal/timeline.ts +272 -259
- package/src/intelligence/temporal/trends.ts +263 -263
- package/src/intelligence/tokenizer.ts +118 -118
- package/src/knowledge/entity-extractor.ts +447 -443
- package/src/knowledge/graph/builder.ts +185 -185
- package/src/knowledge/graph/linker.ts +201 -201
- package/src/knowledge/graph/memory-graph.ts +359 -359
- package/src/knowledge/graph/schema.ts +99 -99
- package/src/knowledge/graph/search.ts +166 -166
- package/src/knowledge/relationship-extractor.ts +108 -108
- package/src/memory/chroma/client.ts +211 -192
- package/src/memory/chroma/collection-manager.ts +92 -92
- package/src/memory/chroma/config.ts +57 -57
- package/src/memory/chroma/embeddings.ts +177 -175
- package/src/memory/chroma/index.ts +82 -82
- package/src/memory/chroma/migration.ts +270 -270
- package/src/memory/chroma/schemas.ts +69 -69
- package/src/memory/chroma/search.ts +319 -315
- package/src/memory/chroma/store.ts +755 -747
- package/src/memory/compression.ts +121 -121
- package/src/memory/consolidation/archiver.ts +162 -165
- package/src/memory/consolidation/merger.ts +182 -186
- package/src/memory/consolidation/scorer.ts +136 -136
- package/src/memory/database.ts +9 -0
- package/src/memory/dual-write.ts +145 -0
- package/src/memory/embeddings.ts +226 -226
- package/src/memory/episodic/detector.ts +108 -108
- package/src/memory/episodic/manager.ts +347 -351
- package/src/memory/episodic/summarizer.ts +179 -179
- package/src/memory/episodic/types.ts +52 -52
- package/src/memory/fts5-search.ts +692 -633
- package/src/memory/index.ts +943 -1060
- package/src/memory/migrations/add-fts5.ts +118 -108
- package/src/memory/patterns.ts +438 -438
- package/src/memory/pruning.ts +60 -60
- package/src/memory/schema.ts +88 -88
- package/src/memory/store.ts +911 -787
- package/src/orchestrator/handlers/decision-handler.ts +204 -204
- package/src/packs/index.ts +9 -9
- package/src/packs/loader.ts +134 -134
- package/src/packs/manager.ts +204 -204
- package/src/packs/ranker.ts +78 -78
- package/src/packs/types.ts +81 -81
- package/src/phase12/index.ts +5 -5
- package/src/retrieval/bm25/index.ts +300 -297
- package/src/retrieval/bm25/tokenizer.ts +184 -184
- package/src/retrieval/feedback/adaptive.ts +221 -221
- package/src/retrieval/feedback/index.ts +16 -16
- package/src/retrieval/feedback/metrics.ts +221 -221
- package/src/retrieval/feedback/store.ts +283 -283
- package/src/retrieval/fusion/index.ts +194 -194
- package/src/retrieval/fusion/rrf.ts +165 -165
- package/src/retrieval/index.ts +12 -12
- package/src/retrieval/pipeline.ts +375 -375
- package/src/retrieval/query/expander.ts +203 -203
- package/src/retrieval/query/index.ts +27 -27
- package/src/retrieval/query/intent-classifier.ts +252 -252
- package/src/retrieval/query/temporal-parser.ts +295 -295
- package/src/retrieval/reranker/index.ts +189 -188
- package/src/retrieval/reranker/model.ts +99 -95
- package/src/retrieval/service.ts +125 -125
- package/src/retrieval/types.ts +162 -162
- package/src/routing/entity-extractor.ts +454 -454
- package/src/routing/handlers/exploration-handler.ts +369 -0
- package/src/routing/handlers/index.ts +19 -0
- package/src/routing/handlers/memory-handler.ts +273 -0
- package/src/routing/handlers/mutation-handler.ts +241 -0
- package/src/routing/handlers/recall-handler.ts +642 -0
- package/src/routing/handlers/shared.ts +515 -0
- package/src/routing/handlers/types.ts +48 -0
- package/src/routing/intent-classifier.ts +552 -552
- package/src/routing/response-filter.ts +399 -391
- package/src/routing/router.ts +245 -2193
- package/src/routing/search-engine.ts +521 -514
- package/src/routing/types.ts +104 -94
- package/src/scripts/health-check.ts +118 -118
- package/src/scripts/setup.ts +122 -122
- package/src/server/auto-updater.ts +283 -276
- package/src/server/handlers/call-tool.ts +159 -159
- package/src/server/handlers/list-tools.ts +35 -35
- package/src/server/handlers/tools/auto-remember.ts +165 -165
- package/src/server/handlers/tools/brain.ts +86 -86
- package/src/server/handlers/tools/create-project.ts +135 -135
- package/src/server/handlers/tools/get-code-standards.ts +123 -123
- package/src/server/handlers/tools/get-corrections.ts +152 -152
- package/src/server/handlers/tools/get-patterns.ts +156 -156
- package/src/server/handlers/tools/get-project-context.ts +75 -75
- package/src/server/handlers/tools/index.ts +30 -30
- package/src/server/handlers/tools/init-project.ts +756 -756
- package/src/server/handlers/tools/list-projects.ts +126 -126
- package/src/server/handlers/tools/recall-similar.ts +87 -87
- package/src/server/handlers/tools/recognize-pattern.ts +132 -132
- package/src/server/handlers/tools/record-correction.ts +131 -131
- package/src/server/handlers/tools/remember-decision.ts +168 -168
- package/src/server/handlers/tools/schemas.ts +179 -179
- package/src/server/handlers/tools/search-code.ts +122 -122
- package/src/server/handlers/tools/smart-context.ts +146 -146
- package/src/server/handlers/tools/update-progress.ts +131 -131
- package/src/server/http-api.ts +215 -1229
- package/src/server/mcp-proxy.ts +85 -84
- package/src/server/mcp-server.ts +285 -284
- package/src/server/middleware/auth.ts +39 -0
- package/src/server/middleware/error-handler.ts +37 -0
- package/src/server/middleware/rate-limit.ts +53 -0
- package/src/server/middleware/validate.ts +42 -0
- package/src/server/pid-manager.ts +137 -136
- package/src/server/providers/resources.ts +581 -581
- package/src/server/routes/code.ts +228 -0
- package/src/server/routes/context.ts +26 -0
- package/src/server/routes/health.ts +19 -0
- package/src/server/routes/helpers.ts +100 -0
- package/src/server/routes/hooks.ts +197 -0
- package/src/server/routes/mcp.ts +47 -0
- package/src/server/routes/memory.ts +397 -0
- package/src/server/routes/models.ts +96 -0
- package/src/server/routes/projects.ts +89 -0
- package/src/server/routes/types.ts +21 -0
- package/src/server/schemas/api-schemas.ts +202 -0
- package/src/server/services.ts +720 -720
- package/src/server/utils/memory-indicator.ts +84 -84
- package/src/server/utils/response-formatter.ts +129 -129
- package/src/server/web-viewer.ts +1145 -1115
- package/src/setup/index.ts +38 -38
- package/src/tools/registry.ts +115 -115
- package/src/tools/schemas.ts +666 -666
- package/src/tools/types.ts +412 -412
- package/src/training/data-store.ts +320 -298
- package/src/training/retrain-pipeline.ts +399 -394
- package/src/utils/error-handler.ts +136 -136
- package/src/utils/index.ts +58 -58
- package/src/utils/kill-port.ts +55 -53
- package/src/utils/phase12-helper.ts +56 -56
- package/src/utils/safe-path.ts +43 -0
- package/src/utils/timing.ts +47 -47
- package/src/utils/transaction.ts +63 -63
- package/src/vault/index.ts +4 -3
- package/src/vault/paths.ts +106 -106
- package/src/vault/query.ts +4 -1
- package/src/vault/reader.ts +44 -1
- package/src/vault/watcher.ts +24 -1
- package/src/vault/writer.ts +487 -413
- package/skills/persistent-memory/SKILL.md +0 -148
- package/skills/persistent-memory/references/tool-reference.md +0 -90
|
@@ -1,83 +1,83 @@
|
|
|
1
|
-
import type { Database } from 'bun:sqlite'
|
|
2
|
-
|
|
3
|
-
const CODE_INTELLIGENCE_SCHEMA = `
|
|
4
|
-
-- File summaries
|
|
5
|
-
CREATE TABLE IF NOT EXISTS code_files (
|
|
6
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
7
|
-
project TEXT NOT NULL,
|
|
8
|
-
file_path TEXT NOT NULL,
|
|
9
|
-
language TEXT,
|
|
10
|
-
summary TEXT,
|
|
11
|
-
symbol_count INTEGER DEFAULT 0,
|
|
12
|
-
line_count INTEGER DEFAULT 0,
|
|
13
|
-
last_indexed TEXT NOT NULL,
|
|
14
|
-
file_hash TEXT,
|
|
15
|
-
UNIQUE(project, file_path)
|
|
16
|
-
);
|
|
17
|
-
|
|
18
|
-
-- Symbols: functions, classes, variables, exports
|
|
19
|
-
CREATE TABLE IF NOT EXISTS code_symbols (
|
|
20
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
21
|
-
project TEXT NOT NULL,
|
|
22
|
-
file_path TEXT NOT NULL,
|
|
23
|
-
symbol_name TEXT NOT NULL,
|
|
24
|
-
symbol_type TEXT NOT NULL,
|
|
25
|
-
line_start INTEGER NOT NULL,
|
|
26
|
-
line_end INTEGER,
|
|
27
|
-
parent_symbol TEXT,
|
|
28
|
-
signature TEXT,
|
|
29
|
-
exported BOOLEAN DEFAULT 0,
|
|
30
|
-
updated_at TEXT NOT NULL
|
|
31
|
-
);
|
|
32
|
-
|
|
33
|
-
-- Full-text search index on symbol names
|
|
34
|
-
CREATE VIRTUAL TABLE IF NOT EXISTS code_symbols_fts USING fts5(
|
|
35
|
-
symbol_name, file_path, symbol_type, signature,
|
|
36
|
-
content='code_symbols', content_rowid='id'
|
|
37
|
-
);
|
|
38
|
-
|
|
39
|
-
-- FTS5 triggers to keep FTS in sync with code_symbols
|
|
40
|
-
CREATE TRIGGER IF NOT EXISTS code_symbols_ai AFTER INSERT ON code_symbols BEGIN
|
|
41
|
-
INSERT INTO code_symbols_fts(rowid, symbol_name, file_path, symbol_type, signature)
|
|
42
|
-
VALUES (new.id, new.symbol_name, new.file_path, new.symbol_type, new.signature);
|
|
43
|
-
END;
|
|
44
|
-
|
|
45
|
-
CREATE TRIGGER IF NOT EXISTS code_symbols_ad AFTER DELETE ON code_symbols BEGIN
|
|
46
|
-
INSERT INTO code_symbols_fts(code_symbols_fts, rowid, symbol_name, file_path, symbol_type, signature)
|
|
47
|
-
VALUES ('delete', old.id, old.symbol_name, old.file_path, old.symbol_type, old.signature);
|
|
48
|
-
END;
|
|
49
|
-
|
|
50
|
-
CREATE TRIGGER IF NOT EXISTS code_symbols_au AFTER UPDATE ON code_symbols BEGIN
|
|
51
|
-
INSERT INTO code_symbols_fts(code_symbols_fts, rowid, symbol_name, file_path, symbol_type, signature)
|
|
52
|
-
VALUES ('delete', old.id, old.symbol_name, old.file_path, old.symbol_type, old.signature);
|
|
53
|
-
INSERT INTO code_symbols_fts(rowid, symbol_name, file_path, symbol_type, signature)
|
|
54
|
-
VALUES (new.id, new.symbol_name, new.file_path, new.symbol_type, new.signature);
|
|
55
|
-
END;
|
|
56
|
-
|
|
57
|
-
-- Import/export relationships
|
|
58
|
-
CREATE TABLE IF NOT EXISTS code_dependencies (
|
|
59
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
60
|
-
project TEXT NOT NULL,
|
|
61
|
-
source_file TEXT NOT NULL,
|
|
62
|
-
target_file TEXT NOT NULL,
|
|
63
|
-
import_names TEXT,
|
|
64
|
-
import_type TEXT
|
|
65
|
-
);
|
|
66
|
-
|
|
67
|
-
-- Indexes
|
|
68
|
-
CREATE INDEX IF NOT EXISTS idx_symbols_project ON code_symbols(project);
|
|
69
|
-
CREATE INDEX IF NOT EXISTS idx_symbols_name ON code_symbols(symbol_name);
|
|
70
|
-
CREATE INDEX IF NOT EXISTS idx_symbols_file ON code_symbols(file_path);
|
|
71
|
-
CREATE INDEX IF NOT EXISTS idx_files_project ON code_files(project);
|
|
72
|
-
CREATE INDEX IF NOT EXISTS idx_files_path ON code_files(project, file_path);
|
|
73
|
-
CREATE INDEX IF NOT EXISTS idx_deps_source ON code_dependencies(source_file);
|
|
74
|
-
CREATE INDEX IF NOT EXISTS idx_deps_target ON code_dependencies(target_file);
|
|
75
|
-
`
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Create the code intelligence schema tables in the given SQLite database.
|
|
79
|
-
* Safe to call multiple times — all statements use IF NOT EXISTS.
|
|
80
|
-
*/
|
|
81
|
-
export function createCodeSchema(db: Database): void {
|
|
82
|
-
db.exec(CODE_INTELLIGENCE_SCHEMA)
|
|
83
|
-
}
|
|
1
|
+
import type { Database } from 'bun:sqlite'
|
|
2
|
+
|
|
3
|
+
const CODE_INTELLIGENCE_SCHEMA = `
|
|
4
|
+
-- File summaries
|
|
5
|
+
CREATE TABLE IF NOT EXISTS code_files (
|
|
6
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
7
|
+
project TEXT NOT NULL,
|
|
8
|
+
file_path TEXT NOT NULL,
|
|
9
|
+
language TEXT,
|
|
10
|
+
summary TEXT,
|
|
11
|
+
symbol_count INTEGER DEFAULT 0,
|
|
12
|
+
line_count INTEGER DEFAULT 0,
|
|
13
|
+
last_indexed TEXT NOT NULL,
|
|
14
|
+
file_hash TEXT,
|
|
15
|
+
UNIQUE(project, file_path)
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
-- Symbols: functions, classes, variables, exports
|
|
19
|
+
CREATE TABLE IF NOT EXISTS code_symbols (
|
|
20
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
21
|
+
project TEXT NOT NULL,
|
|
22
|
+
file_path TEXT NOT NULL,
|
|
23
|
+
symbol_name TEXT NOT NULL,
|
|
24
|
+
symbol_type TEXT NOT NULL,
|
|
25
|
+
line_start INTEGER NOT NULL,
|
|
26
|
+
line_end INTEGER,
|
|
27
|
+
parent_symbol TEXT,
|
|
28
|
+
signature TEXT,
|
|
29
|
+
exported BOOLEAN DEFAULT 0,
|
|
30
|
+
updated_at TEXT NOT NULL
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
-- Full-text search index on symbol names
|
|
34
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS code_symbols_fts USING fts5(
|
|
35
|
+
symbol_name, file_path, symbol_type, signature,
|
|
36
|
+
content='code_symbols', content_rowid='id'
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
-- FTS5 triggers to keep FTS in sync with code_symbols
|
|
40
|
+
CREATE TRIGGER IF NOT EXISTS code_symbols_ai AFTER INSERT ON code_symbols BEGIN
|
|
41
|
+
INSERT INTO code_symbols_fts(rowid, symbol_name, file_path, symbol_type, signature)
|
|
42
|
+
VALUES (new.id, new.symbol_name, new.file_path, new.symbol_type, new.signature);
|
|
43
|
+
END;
|
|
44
|
+
|
|
45
|
+
CREATE TRIGGER IF NOT EXISTS code_symbols_ad AFTER DELETE ON code_symbols BEGIN
|
|
46
|
+
INSERT INTO code_symbols_fts(code_symbols_fts, rowid, symbol_name, file_path, symbol_type, signature)
|
|
47
|
+
VALUES ('delete', old.id, old.symbol_name, old.file_path, old.symbol_type, old.signature);
|
|
48
|
+
END;
|
|
49
|
+
|
|
50
|
+
CREATE TRIGGER IF NOT EXISTS code_symbols_au AFTER UPDATE ON code_symbols BEGIN
|
|
51
|
+
INSERT INTO code_symbols_fts(code_symbols_fts, rowid, symbol_name, file_path, symbol_type, signature)
|
|
52
|
+
VALUES ('delete', old.id, old.symbol_name, old.file_path, old.symbol_type, old.signature);
|
|
53
|
+
INSERT INTO code_symbols_fts(rowid, symbol_name, file_path, symbol_type, signature)
|
|
54
|
+
VALUES (new.id, new.symbol_name, new.file_path, new.symbol_type, new.signature);
|
|
55
|
+
END;
|
|
56
|
+
|
|
57
|
+
-- Import/export relationships
|
|
58
|
+
CREATE TABLE IF NOT EXISTS code_dependencies (
|
|
59
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
60
|
+
project TEXT NOT NULL,
|
|
61
|
+
source_file TEXT NOT NULL,
|
|
62
|
+
target_file TEXT NOT NULL,
|
|
63
|
+
import_names TEXT,
|
|
64
|
+
import_type TEXT
|
|
65
|
+
);
|
|
66
|
+
|
|
67
|
+
-- Indexes
|
|
68
|
+
CREATE INDEX IF NOT EXISTS idx_symbols_project ON code_symbols(project);
|
|
69
|
+
CREATE INDEX IF NOT EXISTS idx_symbols_name ON code_symbols(symbol_name);
|
|
70
|
+
CREATE INDEX IF NOT EXISTS idx_symbols_file ON code_symbols(file_path);
|
|
71
|
+
CREATE INDEX IF NOT EXISTS idx_files_project ON code_files(project);
|
|
72
|
+
CREATE INDEX IF NOT EXISTS idx_files_path ON code_files(project, file_path);
|
|
73
|
+
CREATE INDEX IF NOT EXISTS idx_deps_source ON code_dependencies(source_file);
|
|
74
|
+
CREATE INDEX IF NOT EXISTS idx_deps_target ON code_dependencies(target_file);
|
|
75
|
+
`
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Create the code intelligence schema tables in the given SQLite database.
|
|
79
|
+
* Safe to call multiple times — all statements use IF NOT EXISTS.
|
|
80
|
+
*/
|
|
81
|
+
export function createCodeSchema(db: Database): void {
|
|
82
|
+
db.exec(CODE_INTELLIGENCE_SCHEMA)
|
|
83
|
+
}
|
|
@@ -1,95 +1,95 @@
|
|
|
1
|
-
/** Supported languages for code intelligence */
|
|
2
|
-
export type Language =
|
|
3
|
-
| 'typescript' | 'javascript' | 'tsx' | 'jsx'
|
|
4
|
-
| 'python' | 'go' | 'rust' | 'vue'
|
|
5
|
-
| 'html' | 'css' | 'json' | 'yaml'
|
|
6
|
-
|
|
7
|
-
/** Symbol types extracted from source files */
|
|
8
|
-
export type SymbolType =
|
|
9
|
-
| 'function' | 'class' | 'variable' | 'export'
|
|
10
|
-
| 'import' | 'interface' | 'type' | 'method'
|
|
11
|
-
| 'enum' | 'constant'
|
|
12
|
-
|
|
13
|
-
/** A symbol extracted from a source file */
|
|
14
|
-
export interface CodeSymbol {
|
|
15
|
-
name: string
|
|
16
|
-
type: SymbolType
|
|
17
|
-
filePath: string
|
|
18
|
-
lineStart: number
|
|
19
|
-
lineEnd?: number
|
|
20
|
-
parentSymbol?: string // for methods inside classes
|
|
21
|
-
signature?: string // function signature
|
|
22
|
-
exported: boolean
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/** Parsed file result */
|
|
26
|
-
export interface ParsedFile {
|
|
27
|
-
filePath: string
|
|
28
|
-
language: Language
|
|
29
|
-
symbols: CodeSymbol[]
|
|
30
|
-
imports: ImportInfo[]
|
|
31
|
-
lineCount: number
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/** Import information */
|
|
35
|
-
export interface ImportInfo {
|
|
36
|
-
source: string // the module path (e.g., './auth', 'express')
|
|
37
|
-
names: string[] // imported names (e.g., ['Router', 'Request'])
|
|
38
|
-
importType: 'import' | 'require' | 'dynamic'
|
|
39
|
-
line: number
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/** Result of a symbol search */
|
|
43
|
-
export interface SymbolResult {
|
|
44
|
-
symbol: string
|
|
45
|
-
type: SymbolType
|
|
46
|
-
filePath: string
|
|
47
|
-
lineStart: number
|
|
48
|
-
lineEnd?: number
|
|
49
|
-
signature?: string
|
|
50
|
-
confidence: number // 0-1, how well this matches the query
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
/** Result of a file search */
|
|
54
|
-
export interface FileResult {
|
|
55
|
-
filePath: string
|
|
56
|
-
language?: string
|
|
57
|
-
summary?: string
|
|
58
|
-
symbolCount: number
|
|
59
|
-
lineCount: number
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/** Result of a dependency query */
|
|
63
|
-
export interface DependencyResult {
|
|
64
|
-
file: string
|
|
65
|
-
imports: Array<{ file: string; names: string[] }>
|
|
66
|
-
importedBy: Array<{ file: string; names: string[] }>
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/** Indexing result */
|
|
70
|
-
export interface IndexResult {
|
|
71
|
-
project: string
|
|
72
|
-
filesIndexed: number
|
|
73
|
-
filesSkipped: number
|
|
74
|
-
symbolsFound: number
|
|
75
|
-
durationMs: number
|
|
76
|
-
errors: string[]
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/** File map entry for session injection */
|
|
80
|
-
export interface FileMapEntry {
|
|
81
|
-
path: string
|
|
82
|
-
language?: string
|
|
83
|
-
summary?: string
|
|
84
|
-
symbols: string[] // top-level exported symbol names
|
|
85
|
-
linkedMemories?: number // Phase 29: count of observations referencing this file
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
/** Index statistics for the status endpoint */
|
|
89
|
-
export interface IndexStats {
|
|
90
|
-
project: string
|
|
91
|
-
filesIndexed: number
|
|
92
|
-
totalSymbols: number
|
|
93
|
-
lastIndexed: string | null
|
|
94
|
-
staleFiles: number
|
|
95
|
-
}
|
|
1
|
+
/** Supported languages for code intelligence */
|
|
2
|
+
export type Language =
|
|
3
|
+
| 'typescript' | 'javascript' | 'tsx' | 'jsx'
|
|
4
|
+
| 'python' | 'go' | 'rust' | 'vue'
|
|
5
|
+
| 'html' | 'css' | 'json' | 'yaml'
|
|
6
|
+
|
|
7
|
+
/** Symbol types extracted from source files */
|
|
8
|
+
export type SymbolType =
|
|
9
|
+
| 'function' | 'class' | 'variable' | 'export'
|
|
10
|
+
| 'import' | 'interface' | 'type' | 'method'
|
|
11
|
+
| 'enum' | 'constant'
|
|
12
|
+
|
|
13
|
+
/** A symbol extracted from a source file */
|
|
14
|
+
export interface CodeSymbol {
|
|
15
|
+
name: string
|
|
16
|
+
type: SymbolType
|
|
17
|
+
filePath: string
|
|
18
|
+
lineStart: number
|
|
19
|
+
lineEnd?: number
|
|
20
|
+
parentSymbol?: string // for methods inside classes
|
|
21
|
+
signature?: string // function signature
|
|
22
|
+
exported: boolean
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/** Parsed file result */
|
|
26
|
+
export interface ParsedFile {
|
|
27
|
+
filePath: string
|
|
28
|
+
language: Language
|
|
29
|
+
symbols: CodeSymbol[]
|
|
30
|
+
imports: ImportInfo[]
|
|
31
|
+
lineCount: number
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/** Import information */
|
|
35
|
+
export interface ImportInfo {
|
|
36
|
+
source: string // the module path (e.g., './auth', 'express')
|
|
37
|
+
names: string[] // imported names (e.g., ['Router', 'Request'])
|
|
38
|
+
importType: 'import' | 'require' | 'dynamic'
|
|
39
|
+
line: number
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/** Result of a symbol search */
|
|
43
|
+
export interface SymbolResult {
|
|
44
|
+
symbol: string
|
|
45
|
+
type: SymbolType
|
|
46
|
+
filePath: string
|
|
47
|
+
lineStart: number
|
|
48
|
+
lineEnd?: number
|
|
49
|
+
signature?: string
|
|
50
|
+
confidence: number // 0-1, how well this matches the query
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/** Result of a file search */
|
|
54
|
+
export interface FileResult {
|
|
55
|
+
filePath: string
|
|
56
|
+
language?: string
|
|
57
|
+
summary?: string
|
|
58
|
+
symbolCount: number
|
|
59
|
+
lineCount: number
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/** Result of a dependency query */
|
|
63
|
+
export interface DependencyResult {
|
|
64
|
+
file: string
|
|
65
|
+
imports: Array<{ file: string; names: string[] }>
|
|
66
|
+
importedBy: Array<{ file: string; names: string[] }>
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/** Indexing result */
|
|
70
|
+
export interface IndexResult {
|
|
71
|
+
project: string
|
|
72
|
+
filesIndexed: number
|
|
73
|
+
filesSkipped: number
|
|
74
|
+
symbolsFound: number
|
|
75
|
+
durationMs: number
|
|
76
|
+
errors: string[]
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/** File map entry for session injection */
|
|
80
|
+
export interface FileMapEntry {
|
|
81
|
+
path: string
|
|
82
|
+
language?: string
|
|
83
|
+
summary?: string
|
|
84
|
+
symbols: string[] // top-level exported symbol names
|
|
85
|
+
linkedMemories?: number // Phase 29: count of observations referencing this file
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/** Index statistics for the status endpoint */
|
|
89
|
+
export interface IndexStats {
|
|
90
|
+
project: string
|
|
91
|
+
filesIndexed: number
|
|
92
|
+
totalSymbols: number
|
|
93
|
+
lastIndexed: string | null
|
|
94
|
+
staleFiles: number
|
|
95
|
+
}
|
package/src/config/defaults.ts
CHANGED
|
@@ -1,52 +1,52 @@
|
|
|
1
|
-
import pkg from '../../package.json'
|
|
2
|
-
import type { PartialConfig } from './schema'
|
|
3
|
-
|
|
4
|
-
/** Default configuration values for Claude Brain */
|
|
5
|
-
export const defaultConfig: PartialConfig = {
|
|
6
|
-
vaultPath: '', // Auto-detected from ~/.claude-brain/vault if empty
|
|
7
|
-
serverName: 'claude-brain',
|
|
8
|
-
serverVersion: pkg.version,
|
|
9
|
-
logLevel: 'warn',
|
|
10
|
-
logFilePath: './logs/claude-brain.log',
|
|
11
|
-
dbPath: './data/memory.db',
|
|
12
|
-
port: 3000,
|
|
13
|
-
enableFileWatch: true,
|
|
14
|
-
cacheSize: 100,
|
|
15
|
-
nodeEnv: 'production',
|
|
16
|
-
retrieval: {
|
|
17
|
-
enabled: false,
|
|
18
|
-
dense: {
|
|
19
|
-
weight: 0.7,
|
|
20
|
-
limit: 20,
|
|
21
|
-
minSimilarity: 0.3
|
|
22
|
-
},
|
|
23
|
-
sparse: {
|
|
24
|
-
enabled: true,
|
|
25
|
-
weight: 0.3,
|
|
26
|
-
limit: 20
|
|
27
|
-
},
|
|
28
|
-
fusion: {
|
|
29
|
-
method: 'rrf',
|
|
30
|
-
rrfK: 60
|
|
31
|
-
},
|
|
32
|
-
reranker: {
|
|
33
|
-
enabled: false,
|
|
34
|
-
model: 'cross-encoder/ms-marco-MiniLM-L-6-v2',
|
|
35
|
-
topK: 10
|
|
36
|
-
},
|
|
37
|
-
queryUnderstanding: {
|
|
38
|
-
enabled: true,
|
|
39
|
-
intentClassification: true,
|
|
40
|
-
queryExpansion: true,
|
|
41
|
-
temporalParsing: true
|
|
42
|
-
},
|
|
43
|
-
feedback: {
|
|
44
|
-
enabled: true,
|
|
45
|
-
adaptiveThresholds: true,
|
|
46
|
-
minFeedbackForAdaptation: 10
|
|
47
|
-
}
|
|
48
|
-
},
|
|
49
|
-
intelligence: {
|
|
50
|
-
enabled: false
|
|
51
|
-
}
|
|
52
|
-
}
|
|
1
|
+
import pkg from '../../package.json'
|
|
2
|
+
import type { PartialConfig } from './schema'
|
|
3
|
+
|
|
4
|
+
/** Default configuration values for Claude Brain */
|
|
5
|
+
export const defaultConfig: PartialConfig = {
|
|
6
|
+
vaultPath: '', // Auto-detected from ~/.claude-brain/vault if empty
|
|
7
|
+
serverName: 'claude-brain',
|
|
8
|
+
serverVersion: pkg.version,
|
|
9
|
+
logLevel: 'warn',
|
|
10
|
+
logFilePath: './logs/claude-brain.log',
|
|
11
|
+
dbPath: './data/memory.db',
|
|
12
|
+
port: 3000,
|
|
13
|
+
enableFileWatch: true,
|
|
14
|
+
cacheSize: 100,
|
|
15
|
+
nodeEnv: 'production',
|
|
16
|
+
retrieval: {
|
|
17
|
+
enabled: false,
|
|
18
|
+
dense: {
|
|
19
|
+
weight: 0.7,
|
|
20
|
+
limit: 20,
|
|
21
|
+
minSimilarity: 0.3
|
|
22
|
+
},
|
|
23
|
+
sparse: {
|
|
24
|
+
enabled: true,
|
|
25
|
+
weight: 0.3,
|
|
26
|
+
limit: 20
|
|
27
|
+
},
|
|
28
|
+
fusion: {
|
|
29
|
+
method: 'rrf',
|
|
30
|
+
rrfK: 60
|
|
31
|
+
},
|
|
32
|
+
reranker: {
|
|
33
|
+
enabled: false,
|
|
34
|
+
model: 'cross-encoder/ms-marco-MiniLM-L-6-v2',
|
|
35
|
+
topK: 10
|
|
36
|
+
},
|
|
37
|
+
queryUnderstanding: {
|
|
38
|
+
enabled: true,
|
|
39
|
+
intentClassification: true,
|
|
40
|
+
queryExpansion: true,
|
|
41
|
+
temporalParsing: true
|
|
42
|
+
},
|
|
43
|
+
feedback: {
|
|
44
|
+
enabled: true,
|
|
45
|
+
adaptiveThresholds: true,
|
|
46
|
+
minFeedbackForAdaptation: 10
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
intelligence: {
|
|
50
|
+
enabled: false
|
|
51
|
+
}
|
|
52
|
+
}
|
package/src/config/home.ts
CHANGED
|
@@ -1,56 +1,56 @@
|
|
|
1
|
-
import { existsSync } from 'node:fs'
|
|
2
|
-
import { resolve, isAbsolute, join } from 'node:path'
|
|
3
|
-
import { homedir } from 'node:os'
|
|
4
|
-
|
|
5
|
-
const DEFAULT_HOME = join(homedir(), '.claude-brain')
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Returns the root path for Claude Brain's home directory.
|
|
9
|
-
* Uses CLAUDE_BRAIN_HOME env var if set, otherwise ~/.claude-brain/
|
|
10
|
-
*/
|
|
11
|
-
export function getClaudeBrainHome(): string {
|
|
12
|
-
const envHome = process.env.CLAUDE_BRAIN_HOME
|
|
13
|
-
if (envHome) {
|
|
14
|
-
return resolve(envHome)
|
|
15
|
-
}
|
|
16
|
-
return DEFAULT_HOME
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Resolves a relative path against the Claude Brain home directory.
|
|
21
|
-
* Absolute paths pass through unchanged.
|
|
22
|
-
*/
|
|
23
|
-
export function resolveHomePath(rel: string): string {
|
|
24
|
-
if (isAbsolute(rel)) {
|
|
25
|
-
return rel
|
|
26
|
-
}
|
|
27
|
-
return resolve(getClaudeBrainHome(), rel)
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Checks if the home directory has been initialized (data/ exists).
|
|
32
|
-
*/
|
|
33
|
-
export function isHomeInitialized(): boolean {
|
|
34
|
-
return existsSync(join(getClaudeBrainHome(), 'data'))
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Returns an object with all standard paths within the Claude Brain home directory.
|
|
39
|
-
*/
|
|
40
|
-
export function getHomePaths() {
|
|
41
|
-
const root = getClaudeBrainHome()
|
|
42
|
-
return {
|
|
43
|
-
root,
|
|
44
|
-
env: join(root, '.env'),
|
|
45
|
-
data: join(root, 'data'),
|
|
46
|
-
chroma: join(root, 'data', 'chroma'),
|
|
47
|
-
db: join(root, 'data', 'memory.db'),
|
|
48
|
-
knowledgeGraph: join(root, 'data', 'knowledge-graph.json'),
|
|
49
|
-
logs: join(root, 'logs'),
|
|
50
|
-
logFile: join(root, 'logs', 'claude-brain.log'),
|
|
51
|
-
vault: join(root, 'vault'),
|
|
52
|
-
vaultProjects: join(root, 'vault', 'Projects'),
|
|
53
|
-
vaultGlobal: join(root, 'vault', 'Global'),
|
|
54
|
-
models: join(root, 'models'),
|
|
55
|
-
}
|
|
56
|
-
}
|
|
1
|
+
import { existsSync } from 'node:fs'
|
|
2
|
+
import { resolve, isAbsolute, join } from 'node:path'
|
|
3
|
+
import { homedir } from 'node:os'
|
|
4
|
+
|
|
5
|
+
const DEFAULT_HOME = join(homedir(), '.claude-brain')
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Returns the root path for Claude Brain's home directory.
|
|
9
|
+
* Uses CLAUDE_BRAIN_HOME env var if set, otherwise ~/.claude-brain/
|
|
10
|
+
*/
|
|
11
|
+
export function getClaudeBrainHome(): string {
|
|
12
|
+
const envHome = process.env.CLAUDE_BRAIN_HOME
|
|
13
|
+
if (envHome) {
|
|
14
|
+
return resolve(envHome)
|
|
15
|
+
}
|
|
16
|
+
return DEFAULT_HOME
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Resolves a relative path against the Claude Brain home directory.
|
|
21
|
+
* Absolute paths pass through unchanged.
|
|
22
|
+
*/
|
|
23
|
+
export function resolveHomePath(rel: string): string {
|
|
24
|
+
if (isAbsolute(rel)) {
|
|
25
|
+
return rel
|
|
26
|
+
}
|
|
27
|
+
return resolve(getClaudeBrainHome(), rel)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Checks if the home directory has been initialized (data/ exists).
|
|
32
|
+
*/
|
|
33
|
+
export function isHomeInitialized(): boolean {
|
|
34
|
+
return existsSync(join(getClaudeBrainHome(), 'data'))
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Returns an object with all standard paths within the Claude Brain home directory.
|
|
39
|
+
*/
|
|
40
|
+
export function getHomePaths() {
|
|
41
|
+
const root = getClaudeBrainHome()
|
|
42
|
+
return {
|
|
43
|
+
root,
|
|
44
|
+
env: join(root, '.env'),
|
|
45
|
+
data: join(root, 'data'),
|
|
46
|
+
chroma: join(root, 'data', 'chroma'),
|
|
47
|
+
db: join(root, 'data', 'memory.db'),
|
|
48
|
+
knowledgeGraph: join(root, 'data', 'knowledge-graph.json'),
|
|
49
|
+
logs: join(root, 'logs'),
|
|
50
|
+
logFile: join(root, 'logs', 'claude-brain.log'),
|
|
51
|
+
vault: join(root, 'vault'),
|
|
52
|
+
vaultProjects: join(root, 'vault', 'Projects'),
|
|
53
|
+
vaultGlobal: join(root, 'vault', 'Global'),
|
|
54
|
+
models: join(root, 'models'),
|
|
55
|
+
}
|
|
56
|
+
}
|
package/src/config/index.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { ConfigSchema, LogLevelSchema, type Config, type LogLevel, type PartialConfig } from './schema'
|
|
2
|
-
export { defaultConfig } from './defaults'
|
|
3
|
-
export { loadConfig, validateConfig, getConfigFilePath } from './loader'
|
|
4
|
-
export { ConfigValidator, type ValidationResult, type ValidationError, type ValidationWarning } from './validator'
|
|
5
|
-
export { getClaudeBrainHome, resolveHomePath, isHomeInitialized, getHomePaths } from './home'
|
|
1
|
+
export { ConfigSchema, LogLevelSchema, type Config, type LogLevel, type PartialConfig } from './schema'
|
|
2
|
+
export { defaultConfig } from './defaults'
|
|
3
|
+
export { loadConfig, validateConfig, getConfigFilePath } from './loader'
|
|
4
|
+
export { ConfigValidator, type ValidationResult, type ValidationError, type ValidationWarning } from './validator'
|
|
5
|
+
export { getClaudeBrainHome, resolveHomePath, isHomeInitialized, getHomePaths } from './home'
|