codevault 1.5.0 → 1.6.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/.env.example +75 -40
- package/README.md +112 -345
- package/package.json +4 -3
- package/dist/chunking/file-grouper.d.ts +0 -39
- package/dist/chunking/file-grouper.d.ts.map +0 -1
- package/dist/chunking/file-grouper.js +0 -181
- package/dist/chunking/file-grouper.js.map +0 -1
- package/dist/chunking/semantic-chunker.d.ts +0 -37
- package/dist/chunking/semantic-chunker.d.ts.map +0 -1
- package/dist/chunking/semantic-chunker.js +0 -172
- package/dist/chunking/semantic-chunker.js.map +0 -1
- package/dist/chunking/token-counter.d.ts +0 -28
- package/dist/chunking/token-counter.d.ts.map +0 -1
- package/dist/chunking/token-counter.js +0 -207
- package/dist/chunking/token-counter.js.map +0 -1
- package/dist/cli/commands/ask-cmd.d.ts +0 -3
- package/dist/cli/commands/ask-cmd.d.ts.map +0 -1
- package/dist/cli/commands/ask-cmd.js +0 -130
- package/dist/cli/commands/ask-cmd.js.map +0 -1
- package/dist/cli/commands/config-cmd.d.ts +0 -3
- package/dist/cli/commands/config-cmd.d.ts.map +0 -1
- package/dist/cli/commands/config-cmd.js +0 -245
- package/dist/cli/commands/config-cmd.js.map +0 -1
- package/dist/cli/commands/context.d.ts +0 -3
- package/dist/cli/commands/context.d.ts.map +0 -1
- package/dist/cli/commands/context.js +0 -98
- package/dist/cli/commands/context.js.map +0 -1
- package/dist/cli/commands/interactive-config.d.ts +0 -2
- package/dist/cli/commands/interactive-config.d.ts.map +0 -1
- package/dist/cli/commands/interactive-config.js +0 -274
- package/dist/cli/commands/interactive-config.js.map +0 -1
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -398
- package/dist/cli.js.map +0 -1
- package/dist/codemap/io.d.ts +0 -5
- package/dist/codemap/io.d.ts.map +0 -1
- package/dist/codemap/io.js +0 -30
- package/dist/codemap/io.js.map +0 -1
- package/dist/config/apply-env.d.ts +0 -15
- package/dist/config/apply-env.d.ts.map +0 -1
- package/dist/config/apply-env.js +0 -91
- package/dist/config/apply-env.js.map +0 -1
- package/dist/config/loader.d.ts +0 -57
- package/dist/config/loader.d.ts.map +0 -1
- package/dist/config/loader.js +0 -279
- package/dist/config/loader.js.map +0 -1
- package/dist/config/types.d.ts +0 -46
- package/dist/config/types.d.ts.map +0 -1
- package/dist/config/types.js +0 -2
- package/dist/config/types.js.map +0 -1
- package/dist/context/packs.d.ts +0 -33
- package/dist/context/packs.d.ts.map +0 -1
- package/dist/context/packs.js +0 -180
- package/dist/context/packs.js.map +0 -1
- package/dist/core/batch-indexer.d.ts +0 -44
- package/dist/core/batch-indexer.d.ts.map +0 -1
- package/dist/core/batch-indexer.js +0 -161
- package/dist/core/batch-indexer.js.map +0 -1
- package/dist/core/indexer.d.ts +0 -3
- package/dist/core/indexer.d.ts.map +0 -1
- package/dist/core/indexer.js +0 -624
- package/dist/core/indexer.js.map +0 -1
- package/dist/core/metadata.d.ts +0 -19
- package/dist/core/metadata.d.ts.map +0 -1
- package/dist/core/metadata.js +0 -161
- package/dist/core/metadata.js.map +0 -1
- package/dist/core/search.d.ts +0 -7
- package/dist/core/search.d.ts.map +0 -1
- package/dist/core/search.js +0 -542
- package/dist/core/search.js.map +0 -1
- package/dist/core/symbol-extractor.d.ts +0 -3
- package/dist/core/symbol-extractor.d.ts.map +0 -1
- package/dist/core/symbol-extractor.js +0 -78
- package/dist/core/symbol-extractor.js.map +0 -1
- package/dist/core/types.d.ts +0 -104
- package/dist/core/types.d.ts.map +0 -1
- package/dist/core/types.js +0 -2
- package/dist/core/types.js.map +0 -1
- package/dist/database/db.d.ts +0 -63
- package/dist/database/db.d.ts.map +0 -1
- package/dist/database/db.js +0 -205
- package/dist/database/db.js.map +0 -1
- package/dist/indexer/merkle.d.ts +0 -13
- package/dist/indexer/merkle.d.ts.map +0 -1
- package/dist/indexer/merkle.js +0 -86
- package/dist/indexer/merkle.js.map +0 -1
- package/dist/indexer/update.d.ts +0 -19
- package/dist/indexer/update.d.ts.map +0 -1
- package/dist/indexer/update.js +0 -40
- package/dist/indexer/update.js.map +0 -1
- package/dist/indexer/watch.d.ts +0 -21
- package/dist/indexer/watch.d.ts.map +0 -1
- package/dist/indexer/watch.js +0 -222
- package/dist/indexer/watch.js.map +0 -1
- package/dist/languages/rules.d.ts +0 -11
- package/dist/languages/rules.d.ts.map +0 -1
- package/dist/languages/rules.js +0 -371
- package/dist/languages/rules.js.map +0 -1
- package/dist/languages/tree-sitter-loader.d.ts +0 -27
- package/dist/languages/tree-sitter-loader.d.ts.map +0 -1
- package/dist/languages/tree-sitter-loader.js +0 -76
- package/dist/languages/tree-sitter-loader.js.map +0 -1
- package/dist/mcp/tools/ask-codebase.d.ts +0 -85
- package/dist/mcp/tools/ask-codebase.d.ts.map +0 -1
- package/dist/mcp/tools/ask-codebase.js +0 -125
- package/dist/mcp/tools/ask-codebase.js.map +0 -1
- package/dist/mcp/tools/use-context-pack.d.ts +0 -57
- package/dist/mcp/tools/use-context-pack.d.ts.map +0 -1
- package/dist/mcp/tools/use-context-pack.js +0 -91
- package/dist/mcp/tools/use-context-pack.js.map +0 -1
- package/dist/mcp-server.d.ts +0 -3
- package/dist/mcp-server.d.ts.map +0 -1
- package/dist/mcp-server.js +0 -518
- package/dist/mcp-server.js.map +0 -1
- package/dist/providers/base.d.ts +0 -39
- package/dist/providers/base.d.ts.map +0 -1
- package/dist/providers/base.js +0 -198
- package/dist/providers/base.js.map +0 -1
- package/dist/providers/chat-llm.d.ts +0 -30
- package/dist/providers/chat-llm.d.ts.map +0 -1
- package/dist/providers/chat-llm.js +0 -82
- package/dist/providers/chat-llm.js.map +0 -1
- package/dist/providers/index.d.ts +0 -5
- package/dist/providers/index.d.ts.map +0 -1
- package/dist/providers/index.js +0 -12
- package/dist/providers/index.js.map +0 -1
- package/dist/providers/ollama.d.ts +0 -13
- package/dist/providers/ollama.d.ts.map +0 -1
- package/dist/providers/ollama.js +0 -50
- package/dist/providers/ollama.js.map +0 -1
- package/dist/providers/openai.d.ts +0 -14
- package/dist/providers/openai.d.ts.map +0 -1
- package/dist/providers/openai.js +0 -122
- package/dist/providers/openai.js.map +0 -1
- package/dist/providers/token-counter.d.ts +0 -2
- package/dist/providers/token-counter.d.ts.map +0 -1
- package/dist/providers/token-counter.js +0 -18
- package/dist/providers/token-counter.js.map +0 -1
- package/dist/ranking/api-reranker.d.ts +0 -18
- package/dist/ranking/api-reranker.d.ts.map +0 -1
- package/dist/ranking/api-reranker.js +0 -134
- package/dist/ranking/api-reranker.js.map +0 -1
- package/dist/ranking/symbol-boost.d.ts +0 -15
- package/dist/ranking/symbol-boost.d.ts.map +0 -1
- package/dist/ranking/symbol-boost.js +0 -154
- package/dist/ranking/symbol-boost.js.map +0 -1
- package/dist/search/bm25.d.ts +0 -17
- package/dist/search/bm25.d.ts.map +0 -1
- package/dist/search/bm25.js +0 -56
- package/dist/search/bm25.js.map +0 -1
- package/dist/search/hybrid.d.ts +0 -21
- package/dist/search/hybrid.d.ts.map +0 -1
- package/dist/search/hybrid.js +0 -50
- package/dist/search/hybrid.js.map +0 -1
- package/dist/search/scope.d.ts +0 -5
- package/dist/search/scope.d.ts.map +0 -1
- package/dist/search/scope.js +0 -107
- package/dist/search/scope.js.map +0 -1
- package/dist/storage/encrypted-chunks.d.ts +0 -40
- package/dist/storage/encrypted-chunks.d.ts.map +0 -1
- package/dist/storage/encrypted-chunks.js +0 -237
- package/dist/storage/encrypted-chunks.js.map +0 -1
- package/dist/symbols/extract.d.ts +0 -15
- package/dist/symbols/extract.d.ts.map +0 -1
- package/dist/symbols/extract.js +0 -187
- package/dist/symbols/extract.js.map +0 -1
- package/dist/symbols/graph.d.ts +0 -3
- package/dist/symbols/graph.d.ts.map +0 -1
- package/dist/symbols/graph.js +0 -89
- package/dist/symbols/graph.js.map +0 -1
- package/dist/synthesis/markdown-formatter.d.ts +0 -13
- package/dist/synthesis/markdown-formatter.d.ts.map +0 -1
- package/dist/synthesis/markdown-formatter.js +0 -104
- package/dist/synthesis/markdown-formatter.js.map +0 -1
- package/dist/synthesis/prompt-builder.d.ts +0 -21
- package/dist/synthesis/prompt-builder.d.ts.map +0 -1
- package/dist/synthesis/prompt-builder.js +0 -129
- package/dist/synthesis/prompt-builder.js.map +0 -1
- package/dist/synthesis/synthesizer.d.ts +0 -30
- package/dist/synthesis/synthesizer.d.ts.map +0 -1
- package/dist/synthesis/synthesizer.js +0 -210
- package/dist/synthesis/synthesizer.js.map +0 -1
- package/dist/types/ast.d.ts +0 -3
- package/dist/types/ast.d.ts.map +0 -1
- package/dist/types/ast.js +0 -2
- package/dist/types/ast.js.map +0 -1
- package/dist/types/codemap.d.ts +0 -58
- package/dist/types/codemap.d.ts.map +0 -1
- package/dist/types/codemap.js +0 -224
- package/dist/types/codemap.js.map +0 -1
- package/dist/types/context-pack.d.ts +0 -47
- package/dist/types/context-pack.d.ts.map +0 -1
- package/dist/types/context-pack.js +0 -44
- package/dist/types/context-pack.js.map +0 -1
- package/dist/types/search.d.ts +0 -15
- package/dist/types/search.d.ts.map +0 -1
- package/dist/types/search.js +0 -11
- package/dist/types/search.js.map +0 -1
- package/dist/utils/cli-ui.d.ts +0 -44
- package/dist/utils/cli-ui.d.ts.map +0 -1
- package/dist/utils/cli-ui.js +0 -139
- package/dist/utils/cli-ui.js.map +0 -1
- package/dist/utils/indexer-with-progress.d.ts +0 -10
- package/dist/utils/indexer-with-progress.d.ts.map +0 -1
- package/dist/utils/indexer-with-progress.js +0 -58
- package/dist/utils/indexer-with-progress.js.map +0 -1
- package/dist/utils/rate-limiter.d.ts +0 -34
- package/dist/utils/rate-limiter.d.ts.map +0 -1
- package/dist/utils/rate-limiter.js +0 -178
- package/dist/utils/rate-limiter.js.map +0 -1
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
export declare function resetEncryptionCacheForTests(): void;
|
|
2
|
-
export declare function getActiveEncryptionKey(): Buffer | null;
|
|
3
|
-
export declare function getEncryptionKeyError(): Error | null;
|
|
4
|
-
interface Logger {
|
|
5
|
-
warn?: (message: string) => void;
|
|
6
|
-
}
|
|
7
|
-
export interface EncryptionPreference {
|
|
8
|
-
enabled: boolean;
|
|
9
|
-
key: Buffer | null;
|
|
10
|
-
reason: string;
|
|
11
|
-
}
|
|
12
|
-
export declare function resolveEncryptionPreference({ mode, logger }?: {
|
|
13
|
-
mode?: string;
|
|
14
|
-
logger?: Logger;
|
|
15
|
-
}): EncryptionPreference;
|
|
16
|
-
export interface WriteChunkOptions {
|
|
17
|
-
chunkDir: string;
|
|
18
|
-
sha: string;
|
|
19
|
-
code: string | Buffer;
|
|
20
|
-
encryption?: EncryptionPreference;
|
|
21
|
-
}
|
|
22
|
-
export interface WriteChunkResult {
|
|
23
|
-
encrypted: boolean;
|
|
24
|
-
path: string;
|
|
25
|
-
}
|
|
26
|
-
export declare function writeChunkToDisk({ chunkDir, sha, code, encryption }: WriteChunkOptions): WriteChunkResult;
|
|
27
|
-
export interface ReadChunkOptions {
|
|
28
|
-
chunkDir: string;
|
|
29
|
-
sha: string;
|
|
30
|
-
key?: Buffer | null;
|
|
31
|
-
}
|
|
32
|
-
export interface ReadChunkResult {
|
|
33
|
-
code: string;
|
|
34
|
-
encrypted: boolean;
|
|
35
|
-
}
|
|
36
|
-
export declare function readChunkFromDisk({ chunkDir, sha, key }: ReadChunkOptions): ReadChunkResult | null;
|
|
37
|
-
export declare function removeChunkArtifacts(chunkDir: string, sha: string): void;
|
|
38
|
-
export declare function isChunkEncryptedOnDisk(chunkDir: string, sha: string): boolean;
|
|
39
|
-
export {};
|
|
40
|
-
//# sourceMappingURL=encrypted-chunks.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"encrypted-chunks.d.ts","sourceRoot":"","sources":["../../src/storage/encrypted-chunks.ts"],"names":[],"mappings":"AA+CA,wBAAgB,4BAA4B,IAAI,IAAI,CAInD;AAED,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,IAAI,CA0BtD;AAED,wBAAgB,qBAAqB,IAAI,KAAK,GAAG,IAAI,CAEpD;AAYD,UAAU,MAAM;IACd,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,2BAA2B,CAAC,EAAE,IAAI,EAAE,MAAgB,EAAE,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,oBAAoB,CA4BrI;AAgED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,oBAAoB,CAAC;CACnC;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,iBAAiB,GAAG,gBAAgB,CAmBzG;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,GAA8B,EAAE,EAAE,gBAAgB,GAAG,eAAe,GAAG,IAAI,CAkD7H;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAQxE;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAG7E"}
|
|
@@ -1,237 +0,0 @@
|
|
|
1
|
-
import crypto from 'crypto';
|
|
2
|
-
import fs from 'fs';
|
|
3
|
-
import path from 'path';
|
|
4
|
-
import zlib from 'zlib';
|
|
5
|
-
const KEY_ENV_VAR = 'CODEVAULT_ENCRYPTION_KEY';
|
|
6
|
-
const MAGIC_HEADER = Buffer.from('CVAULTE1', 'utf8');
|
|
7
|
-
const SALT_LENGTH = 16;
|
|
8
|
-
const IV_LENGTH = 12;
|
|
9
|
-
const TAG_LENGTH = 16;
|
|
10
|
-
const HKDF_INFO = Buffer.from('codevault-chunk-v1', 'utf8');
|
|
11
|
-
let cachedNormalizedKey = null;
|
|
12
|
-
let cachedKeyBuffer = null;
|
|
13
|
-
let cachedKeyError = null;
|
|
14
|
-
function decodeKey(raw) {
|
|
15
|
-
if (typeof raw !== 'string') {
|
|
16
|
-
return null;
|
|
17
|
-
}
|
|
18
|
-
const trimmed = raw.trim();
|
|
19
|
-
if (trimmed.length === 0) {
|
|
20
|
-
return null;
|
|
21
|
-
}
|
|
22
|
-
try {
|
|
23
|
-
const base64 = Buffer.from(trimmed, 'base64');
|
|
24
|
-
if (base64.length === 32) {
|
|
25
|
-
return base64;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
catch (error) {
|
|
29
|
-
// Ignore decoding errors
|
|
30
|
-
}
|
|
31
|
-
try {
|
|
32
|
-
const hex = Buffer.from(trimmed, 'hex');
|
|
33
|
-
if (hex.length === 32) {
|
|
34
|
-
return hex;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
catch (error) {
|
|
38
|
-
// Ignore decoding errors
|
|
39
|
-
}
|
|
40
|
-
return null;
|
|
41
|
-
}
|
|
42
|
-
export function resetEncryptionCacheForTests() {
|
|
43
|
-
cachedNormalizedKey = null;
|
|
44
|
-
cachedKeyBuffer = null;
|
|
45
|
-
cachedKeyError = null;
|
|
46
|
-
}
|
|
47
|
-
export function getActiveEncryptionKey() {
|
|
48
|
-
const raw = process.env[KEY_ENV_VAR];
|
|
49
|
-
const normalized = typeof raw === 'string' ? raw.trim() : '';
|
|
50
|
-
// FIX: Always check if env var changed to support runtime updates
|
|
51
|
-
if (normalized === cachedNormalizedKey && cachedKeyBuffer) {
|
|
52
|
-
return cachedKeyBuffer;
|
|
53
|
-
}
|
|
54
|
-
// Invalidate cache when environment variable changes
|
|
55
|
-
cachedNormalizedKey = normalized;
|
|
56
|
-
cachedKeyError = null;
|
|
57
|
-
cachedKeyBuffer = null;
|
|
58
|
-
if (!normalized) {
|
|
59
|
-
return null;
|
|
60
|
-
}
|
|
61
|
-
const decoded = decodeKey(normalized);
|
|
62
|
-
if (!decoded) {
|
|
63
|
-
cachedKeyError = new Error(`${KEY_ENV_VAR} must be a 32-byte key encoded as base64 or hex.`);
|
|
64
|
-
return null;
|
|
65
|
-
}
|
|
66
|
-
cachedKeyBuffer = decoded;
|
|
67
|
-
return cachedKeyBuffer;
|
|
68
|
-
}
|
|
69
|
-
export function getEncryptionKeyError() {
|
|
70
|
-
return cachedKeyError;
|
|
71
|
-
}
|
|
72
|
-
const warnedInvalidMode = new Set();
|
|
73
|
-
let warnedInvalidKey = false;
|
|
74
|
-
function normalizeMode(mode) {
|
|
75
|
-
if (typeof mode !== 'string') {
|
|
76
|
-
return undefined;
|
|
77
|
-
}
|
|
78
|
-
return mode.trim().toLowerCase();
|
|
79
|
-
}
|
|
80
|
-
export function resolveEncryptionPreference({ mode, logger = console } = {}) {
|
|
81
|
-
const normalizedMode = normalizeMode(mode);
|
|
82
|
-
if (normalizedMode && normalizedMode !== 'on' && normalizedMode !== 'off' && !warnedInvalidMode.has(normalizedMode)) {
|
|
83
|
-
if (logger && typeof logger.warn === 'function') {
|
|
84
|
-
logger.warn(`Unknown --encrypt mode "${mode}". Expected "on" or "off". Falling back to environment configuration.`);
|
|
85
|
-
}
|
|
86
|
-
warnedInvalidMode.add(normalizedMode);
|
|
87
|
-
}
|
|
88
|
-
if (normalizedMode === 'off') {
|
|
89
|
-
return { enabled: false, key: null, reason: 'flag_off' };
|
|
90
|
-
}
|
|
91
|
-
const key = getActiveEncryptionKey();
|
|
92
|
-
if (!key) {
|
|
93
|
-
const keyError = getEncryptionKeyError();
|
|
94
|
-
if (normalizedMode === 'on') {
|
|
95
|
-
throw keyError || new Error('CODEVAULT_ENCRYPTION_KEY is not configured but encryption was requested (--encrypt on).');
|
|
96
|
-
}
|
|
97
|
-
if (keyError && !warnedInvalidKey && logger && typeof logger.warn === 'function') {
|
|
98
|
-
logger.warn(`${keyError.message} Encryption disabled.`);
|
|
99
|
-
warnedInvalidKey = true;
|
|
100
|
-
}
|
|
101
|
-
return { enabled: false, key: null, reason: keyError ? 'invalid_key' : 'missing_key' };
|
|
102
|
-
}
|
|
103
|
-
return { enabled: true, key, reason: 'enabled' };
|
|
104
|
-
}
|
|
105
|
-
function deriveChunkKey(masterKey, salt) {
|
|
106
|
-
return Buffer.from(crypto.hkdfSync('sha256', masterKey, salt, HKDF_INFO, 32));
|
|
107
|
-
}
|
|
108
|
-
function encryptBuffer(plaintext, masterKey) {
|
|
109
|
-
const salt = crypto.randomBytes(SALT_LENGTH);
|
|
110
|
-
const iv = crypto.randomBytes(IV_LENGTH);
|
|
111
|
-
const derivedKey = deriveChunkKey(masterKey, salt);
|
|
112
|
-
const cipher = crypto.createCipheriv('aes-256-gcm', derivedKey, iv);
|
|
113
|
-
const encrypted = Buffer.concat([cipher.update(plaintext), cipher.final()]);
|
|
114
|
-
const tag = cipher.getAuthTag();
|
|
115
|
-
const payload = Buffer.concat([MAGIC_HEADER, salt, iv, encrypted, tag]);
|
|
116
|
-
return { payload, salt, iv, tag };
|
|
117
|
-
}
|
|
118
|
-
function decryptBuffer(payload, masterKey) {
|
|
119
|
-
const minimumLength = MAGIC_HEADER.length + SALT_LENGTH + IV_LENGTH + TAG_LENGTH + 1;
|
|
120
|
-
if (!payload || payload.length < minimumLength) {
|
|
121
|
-
const error = new Error('Encrypted chunk payload is truncated.');
|
|
122
|
-
error.code = 'ENCRYPTION_PAYLOAD_INVALID';
|
|
123
|
-
throw error;
|
|
124
|
-
}
|
|
125
|
-
const header = payload.subarray(0, MAGIC_HEADER.length);
|
|
126
|
-
if (!header.equals(MAGIC_HEADER)) {
|
|
127
|
-
const error = new Error('Encrypted chunk payload has an unknown header.');
|
|
128
|
-
error.code = 'ENCRYPTION_FORMAT_UNRECOGNIZED';
|
|
129
|
-
throw error;
|
|
130
|
-
}
|
|
131
|
-
const saltStart = MAGIC_HEADER.length;
|
|
132
|
-
const ivStart = saltStart + SALT_LENGTH;
|
|
133
|
-
const cipherStart = ivStart + IV_LENGTH;
|
|
134
|
-
const cipherEnd = payload.length - TAG_LENGTH;
|
|
135
|
-
const salt = payload.subarray(saltStart, saltStart + SALT_LENGTH);
|
|
136
|
-
const iv = payload.subarray(ivStart, ivStart + IV_LENGTH);
|
|
137
|
-
const ciphertext = payload.subarray(cipherStart, cipherEnd);
|
|
138
|
-
const tag = payload.subarray(cipherEnd);
|
|
139
|
-
const derivedKey = deriveChunkKey(masterKey, salt);
|
|
140
|
-
const decipher = crypto.createDecipheriv('aes-256-gcm', derivedKey, iv);
|
|
141
|
-
decipher.setAuthTag(tag);
|
|
142
|
-
try {
|
|
143
|
-
return Buffer.concat([decipher.update(ciphertext), decipher.final()]);
|
|
144
|
-
}
|
|
145
|
-
catch (error) {
|
|
146
|
-
const authError = new Error('authentication failed');
|
|
147
|
-
authError.code = 'ENCRYPTION_AUTH_FAILED';
|
|
148
|
-
authError.cause = error;
|
|
149
|
-
throw authError;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
function getChunkPaths(chunkDir, sha) {
|
|
153
|
-
const plainPath = path.join(chunkDir, `${sha}.gz`);
|
|
154
|
-
const encryptedPath = path.join(chunkDir, `${sha}.gz.enc`);
|
|
155
|
-
return { plainPath, encryptedPath };
|
|
156
|
-
}
|
|
157
|
-
export function writeChunkToDisk({ chunkDir, sha, code, encryption }) {
|
|
158
|
-
const { plainPath, encryptedPath } = getChunkPaths(chunkDir, sha);
|
|
159
|
-
const buffer = Buffer.isBuffer(code) ? code : Buffer.from(code, 'utf8');
|
|
160
|
-
const compressed = zlib.gzipSync(buffer);
|
|
161
|
-
if (encryption && encryption.enabled && encryption.key) {
|
|
162
|
-
const { payload } = encryptBuffer(compressed, encryption.key);
|
|
163
|
-
fs.writeFileSync(encryptedPath, payload);
|
|
164
|
-
if (fs.existsSync(plainPath)) {
|
|
165
|
-
fs.rmSync(plainPath, { force: true });
|
|
166
|
-
}
|
|
167
|
-
return { encrypted: true, path: encryptedPath };
|
|
168
|
-
}
|
|
169
|
-
fs.writeFileSync(plainPath, compressed);
|
|
170
|
-
if (fs.existsSync(encryptedPath)) {
|
|
171
|
-
fs.rmSync(encryptedPath, { force: true });
|
|
172
|
-
}
|
|
173
|
-
return { encrypted: false, path: plainPath };
|
|
174
|
-
}
|
|
175
|
-
export function readChunkFromDisk({ chunkDir, sha, key = getActiveEncryptionKey() }) {
|
|
176
|
-
const { plainPath, encryptedPath } = getChunkPaths(chunkDir, sha);
|
|
177
|
-
if (fs.existsSync(encryptedPath)) {
|
|
178
|
-
if (!key) {
|
|
179
|
-
const error = new Error(`Chunk ${sha} is encrypted and no CODEVAULT_ENCRYPTION_KEY is configured.`);
|
|
180
|
-
error.code = 'ENCRYPTION_KEY_REQUIRED';
|
|
181
|
-
throw error;
|
|
182
|
-
}
|
|
183
|
-
const payload = fs.readFileSync(encryptedPath);
|
|
184
|
-
let decrypted;
|
|
185
|
-
try {
|
|
186
|
-
decrypted = decryptBuffer(payload, key);
|
|
187
|
-
}
|
|
188
|
-
catch (error) {
|
|
189
|
-
if (error.code === 'ENCRYPTION_AUTH_FAILED') {
|
|
190
|
-
const authError = new Error(`Failed to decrypt chunk ${sha}: authentication failed.`);
|
|
191
|
-
authError.code = 'ENCRYPTION_AUTH_FAILED';
|
|
192
|
-
authError.cause = error;
|
|
193
|
-
throw authError;
|
|
194
|
-
}
|
|
195
|
-
error.message = `Failed to decrypt chunk ${sha}: ${error.message}`;
|
|
196
|
-
throw error;
|
|
197
|
-
}
|
|
198
|
-
try {
|
|
199
|
-
const code = zlib.gunzipSync(decrypted).toString('utf8');
|
|
200
|
-
return { code, encrypted: true };
|
|
201
|
-
}
|
|
202
|
-
catch (error) {
|
|
203
|
-
const decompressionError = new Error(`Failed to decompress chunk ${sha}: ${error.message}`);
|
|
204
|
-
decompressionError.code = 'CHUNK_DECOMPRESSION_FAILED';
|
|
205
|
-
decompressionError.cause = error;
|
|
206
|
-
throw decompressionError;
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
if (fs.existsSync(plainPath)) {
|
|
210
|
-
try {
|
|
211
|
-
const compressed = fs.readFileSync(plainPath);
|
|
212
|
-
const code = zlib.gunzipSync(compressed).toString('utf8');
|
|
213
|
-
return { code, encrypted: false };
|
|
214
|
-
}
|
|
215
|
-
catch (error) {
|
|
216
|
-
const readError = new Error(`Failed to read chunk ${sha}: ${error.message}`);
|
|
217
|
-
readError.code = 'CHUNK_READ_FAILED';
|
|
218
|
-
readError.cause = error;
|
|
219
|
-
throw readError;
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
return null;
|
|
223
|
-
}
|
|
224
|
-
export function removeChunkArtifacts(chunkDir, sha) {
|
|
225
|
-
const { plainPath, encryptedPath } = getChunkPaths(chunkDir, sha);
|
|
226
|
-
if (fs.existsSync(plainPath)) {
|
|
227
|
-
fs.rmSync(plainPath, { force: true });
|
|
228
|
-
}
|
|
229
|
-
if (fs.existsSync(encryptedPath)) {
|
|
230
|
-
fs.rmSync(encryptedPath, { force: true });
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
export function isChunkEncryptedOnDisk(chunkDir, sha) {
|
|
234
|
-
const { encryptedPath } = getChunkPaths(chunkDir, sha);
|
|
235
|
-
return fs.existsSync(encryptedPath);
|
|
236
|
-
}
|
|
237
|
-
//# sourceMappingURL=encrypted-chunks.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"encrypted-chunks.js","sourceRoot":"","sources":["../../src/storage/encrypted-chunks.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { TreeSitterNode } from '../types/ast.js';
|
|
2
|
-
export interface SymbolMetadata {
|
|
3
|
-
signature: string;
|
|
4
|
-
parameters: string[];
|
|
5
|
-
returnType: string | null;
|
|
6
|
-
calls: string[];
|
|
7
|
-
keywords: string[];
|
|
8
|
-
}
|
|
9
|
-
export declare function extractSymbolMetadata({ node, source, symbol }: {
|
|
10
|
-
node: TreeSitterNode;
|
|
11
|
-
source: string;
|
|
12
|
-
symbol: string;
|
|
13
|
-
}): SymbolMetadata;
|
|
14
|
-
export declare function queryMatchesSignature(query: string, metadata: any): boolean;
|
|
15
|
-
//# sourceMappingURL=extract.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../src/symbols/extract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAOtD,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAuKD,wBAAgB,qBAAqB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;IAC9D,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,cAAc,CAgBjB;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAyC3E"}
|
package/dist/symbols/extract.js
DELETED
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
const KEYWORD_BLACKLIST = new Set([
|
|
2
|
-
'if', 'for', 'while', 'switch', 'catch', 'return', 'function', 'class',
|
|
3
|
-
'new', 'await', 'yield', 'isset', 'empty', 'echo', 'print', 'require', 'include'
|
|
4
|
-
]);
|
|
5
|
-
function escapeRegex(value) {
|
|
6
|
-
return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
7
|
-
}
|
|
8
|
-
function sliceSignatureSnippet(source, node) {
|
|
9
|
-
const start = node.startIndex;
|
|
10
|
-
const end = Math.min(node.endIndex, start + 400);
|
|
11
|
-
return source.slice(start, end);
|
|
12
|
-
}
|
|
13
|
-
function findClosingParen(text, startIndex) {
|
|
14
|
-
let depth = 0;
|
|
15
|
-
for (let i = startIndex; i < text.length; i++) {
|
|
16
|
-
const char = text[i];
|
|
17
|
-
if (char === '(') {
|
|
18
|
-
depth++;
|
|
19
|
-
}
|
|
20
|
-
else if (char === ')') {
|
|
21
|
-
depth--;
|
|
22
|
-
if (depth === 0) {
|
|
23
|
-
return i;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
return -1;
|
|
28
|
-
}
|
|
29
|
-
function extractParameterSection(snippet) {
|
|
30
|
-
const openIndex = snippet.indexOf('(');
|
|
31
|
-
if (openIndex === -1) {
|
|
32
|
-
return { paramsText: '', closeIndex: -1 };
|
|
33
|
-
}
|
|
34
|
-
const closeIndex = findClosingParen(snippet, openIndex);
|
|
35
|
-
if (closeIndex === -1) {
|
|
36
|
-
return { paramsText: '', closeIndex: -1 };
|
|
37
|
-
}
|
|
38
|
-
const paramsText = snippet.slice(openIndex + 1, closeIndex).trim();
|
|
39
|
-
return { paramsText, closeIndex };
|
|
40
|
-
}
|
|
41
|
-
function normalizeParameter(param) {
|
|
42
|
-
if (!param) {
|
|
43
|
-
return '';
|
|
44
|
-
}
|
|
45
|
-
const withoutDefaults = param.split('=')[0].trim();
|
|
46
|
-
const cleaned = withoutDefaults.replace(/^[*&]+/, '').trim();
|
|
47
|
-
return cleaned;
|
|
48
|
-
}
|
|
49
|
-
function extractParameters(snippet) {
|
|
50
|
-
const { paramsText, closeIndex } = extractParameterSection(snippet);
|
|
51
|
-
if (closeIndex === -1 || paramsText.length === 0) {
|
|
52
|
-
return { parameters: [], closeIndex };
|
|
53
|
-
}
|
|
54
|
-
const rawParams = paramsText.split(',');
|
|
55
|
-
const parameters = rawParams
|
|
56
|
-
.map(param => normalizeParameter(param))
|
|
57
|
-
.filter(param => param.length > 0)
|
|
58
|
-
.slice(0, 12);
|
|
59
|
-
return { parameters, closeIndex };
|
|
60
|
-
}
|
|
61
|
-
function extractReturnType(snippet, closeIndex) {
|
|
62
|
-
if (closeIndex === -1) {
|
|
63
|
-
return null;
|
|
64
|
-
}
|
|
65
|
-
const after = snippet.slice(closeIndex + 1, closeIndex + 80);
|
|
66
|
-
const colonMatch = after.match(/:\s*([A-Za-z0-9_\\\[\]<>|?]+)/);
|
|
67
|
-
if (colonMatch) {
|
|
68
|
-
return colonMatch[1];
|
|
69
|
-
}
|
|
70
|
-
const arrowMatch = after.match(/->\s*([A-Za-z0-9_\\\[\]<>|?]+)/);
|
|
71
|
-
if (arrowMatch) {
|
|
72
|
-
return arrowMatch[1];
|
|
73
|
-
}
|
|
74
|
-
return null;
|
|
75
|
-
}
|
|
76
|
-
function buildSignature(symbol, snippet, node) {
|
|
77
|
-
const normalizedSymbol = typeof symbol === 'string' ? symbol.trim() : '';
|
|
78
|
-
const isClassNode = node.type && node.type.includes('class');
|
|
79
|
-
if (isClassNode && normalizedSymbol) {
|
|
80
|
-
return { signature: `class ${normalizedSymbol}`, parameters: [], returnType: null };
|
|
81
|
-
}
|
|
82
|
-
if (!normalizedSymbol) {
|
|
83
|
-
return { signature: '', parameters: [], returnType: null };
|
|
84
|
-
}
|
|
85
|
-
const { parameters, closeIndex } = extractParameters(snippet);
|
|
86
|
-
const returnType = extractReturnType(snippet, closeIndex);
|
|
87
|
-
const paramText = parameters.length > 0 ? parameters.join(', ') : '';
|
|
88
|
-
const signature = returnType
|
|
89
|
-
? `${normalizedSymbol}(${paramText}) : ${returnType}`
|
|
90
|
-
: `${normalizedSymbol}(${paramText})`;
|
|
91
|
-
return { signature, parameters, returnType };
|
|
92
|
-
}
|
|
93
|
-
function extractCallNameFromSnippet(snippet) {
|
|
94
|
-
const trimmed = snippet.trim();
|
|
95
|
-
if (!trimmed.includes('(')) {
|
|
96
|
-
return null;
|
|
97
|
-
}
|
|
98
|
-
const callMatch = trimmed.match(/(?:\$?[A-Za-z_][\w]*->|[A-Za-z_][\w]*::|[A-Za-z_][\w]*\.)*([A-Za-z_][\w]*)\s*\(/);
|
|
99
|
-
if (!callMatch) {
|
|
100
|
-
return null;
|
|
101
|
-
}
|
|
102
|
-
const candidate = callMatch[1];
|
|
103
|
-
if (!candidate || KEYWORD_BLACKLIST.has(candidate)) {
|
|
104
|
-
return null;
|
|
105
|
-
}
|
|
106
|
-
return candidate;
|
|
107
|
-
}
|
|
108
|
-
function collectCalls(node, source, calls) {
|
|
109
|
-
const nodeType = node.type || '';
|
|
110
|
-
const isCallNode = nodeType.includes('call') || nodeType.includes('invocation');
|
|
111
|
-
if (isCallNode) {
|
|
112
|
-
const snippet = source.slice(node.startIndex, Math.min(node.endIndex, node.startIndex + 120));
|
|
113
|
-
const name = extractCallNameFromSnippet(snippet);
|
|
114
|
-
if (name) {
|
|
115
|
-
calls.add(name);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
for (let i = 0; i < node.childCount; i++) {
|
|
119
|
-
const child = node.child(i);
|
|
120
|
-
if (child) {
|
|
121
|
-
collectCalls(child, source, calls);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
function splitSymbolWords(symbol) {
|
|
126
|
-
if (!symbol) {
|
|
127
|
-
return [];
|
|
128
|
-
}
|
|
129
|
-
const cleaned = symbol.replace(/[^A-Za-z0-9_]/g, ' ');
|
|
130
|
-
const words = cleaned
|
|
131
|
-
.replace(/([a-z])([A-Z])/g, '$1 $2')
|
|
132
|
-
.split(/[\s_]+/)
|
|
133
|
-
.map(word => word.trim().toLowerCase())
|
|
134
|
-
.filter(word => word.length > 0);
|
|
135
|
-
return words;
|
|
136
|
-
}
|
|
137
|
-
export function extractSymbolMetadata({ node, source, symbol }) {
|
|
138
|
-
const snippet = sliceSignatureSnippet(source, node);
|
|
139
|
-
const { signature, parameters, returnType } = buildSignature(symbol, snippet, node);
|
|
140
|
-
const calls = new Set();
|
|
141
|
-
collectCalls(node, source, calls);
|
|
142
|
-
const symbolWords = splitSymbolWords(symbol);
|
|
143
|
-
return {
|
|
144
|
-
signature,
|
|
145
|
-
parameters,
|
|
146
|
-
returnType,
|
|
147
|
-
calls: Array.from(calls),
|
|
148
|
-
keywords: symbolWords
|
|
149
|
-
};
|
|
150
|
-
}
|
|
151
|
-
export function queryMatchesSignature(query, metadata) {
|
|
152
|
-
if (!metadata) {
|
|
153
|
-
return false;
|
|
154
|
-
}
|
|
155
|
-
const queryLower = query.toLowerCase();
|
|
156
|
-
const signature = typeof metadata.signature === 'string' ? metadata.signature.toLowerCase() : '';
|
|
157
|
-
const symbol = typeof metadata.symbol === 'string' ? metadata.symbol.toLowerCase() : '';
|
|
158
|
-
if (symbol && queryLower.includes(symbol)) {
|
|
159
|
-
return true;
|
|
160
|
-
}
|
|
161
|
-
if (signature && queryLower.includes(signature)) {
|
|
162
|
-
return true;
|
|
163
|
-
}
|
|
164
|
-
if (Array.isArray(metadata.symbol_parameters)) {
|
|
165
|
-
for (const param of metadata.symbol_parameters) {
|
|
166
|
-
if (typeof param === 'string' && param.length > 2) {
|
|
167
|
-
const needle = param.toLowerCase();
|
|
168
|
-
if (queryLower.includes(needle)) {
|
|
169
|
-
return true;
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
if (Array.isArray(metadata.keywords) && metadata.keywords.length > 0) {
|
|
175
|
-
for (const word of metadata.keywords) {
|
|
176
|
-
if (!word || word.length < 3) {
|
|
177
|
-
continue;
|
|
178
|
-
}
|
|
179
|
-
const pattern = new RegExp(`\\b${escapeRegex(word)}[a-z0-9_]*\\b`, 'i');
|
|
180
|
-
if (pattern.test(query)) {
|
|
181
|
-
return true;
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
return false;
|
|
186
|
-
}
|
|
187
|
-
//# sourceMappingURL=extract.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/symbols/extract.ts"],"names":[],"mappings":"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"}
|
package/dist/symbols/graph.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/symbols/graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAsDnD,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CA8DpE"}
|
package/dist/symbols/graph.js
DELETED
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
const MAX_NEIGHBORS = 16;
|
|
2
|
-
function toLower(value) {
|
|
3
|
-
return typeof value === 'string' ? value.trim().toLowerCase() : '';
|
|
4
|
-
}
|
|
5
|
-
function buildSymbolIndex(codemap) {
|
|
6
|
-
const index = new Map();
|
|
7
|
-
for (const [chunkId, entry] of Object.entries(codemap)) {
|
|
8
|
-
if (!entry || typeof entry !== 'object') {
|
|
9
|
-
continue;
|
|
10
|
-
}
|
|
11
|
-
const symbol = typeof entry.symbol === 'string' ? entry.symbol.trim() : '';
|
|
12
|
-
if (!symbol) {
|
|
13
|
-
continue;
|
|
14
|
-
}
|
|
15
|
-
const key = symbol.toLowerCase();
|
|
16
|
-
if (!index.has(key)) {
|
|
17
|
-
index.set(key, []);
|
|
18
|
-
}
|
|
19
|
-
index.get(key).push({
|
|
20
|
-
chunkId,
|
|
21
|
-
sha: entry.sha,
|
|
22
|
-
file: entry.file,
|
|
23
|
-
symbol
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
return index;
|
|
27
|
-
}
|
|
28
|
-
function selectCandidate(candidates, entry) {
|
|
29
|
-
if (!Array.isArray(candidates) || candidates.length === 0) {
|
|
30
|
-
return null;
|
|
31
|
-
}
|
|
32
|
-
if (!entry || !entry.file) {
|
|
33
|
-
return candidates[0];
|
|
34
|
-
}
|
|
35
|
-
const sameFile = candidates.find(candidate => candidate.file === entry.file);
|
|
36
|
-
return sameFile || candidates[0];
|
|
37
|
-
}
|
|
38
|
-
export function attachSymbolGraphToCodemap(codemap) {
|
|
39
|
-
if (!codemap || typeof codemap !== 'object') {
|
|
40
|
-
return codemap;
|
|
41
|
-
}
|
|
42
|
-
const symbolIndex = buildSymbolIndex(codemap);
|
|
43
|
-
const adjacency = new Map();
|
|
44
|
-
for (const [chunkId, entry] of Object.entries(codemap)) {
|
|
45
|
-
if (!entry || typeof entry !== 'object' || typeof entry.sha !== 'string') {
|
|
46
|
-
continue;
|
|
47
|
-
}
|
|
48
|
-
const outgoing = new Set();
|
|
49
|
-
const rawCalls = Array.isArray(entry.symbol_calls) ? entry.symbol_calls : [];
|
|
50
|
-
for (const rawName of rawCalls) {
|
|
51
|
-
const candidateName = toLower(rawName);
|
|
52
|
-
if (!candidateName) {
|
|
53
|
-
continue;
|
|
54
|
-
}
|
|
55
|
-
const candidates = symbolIndex.get(candidateName);
|
|
56
|
-
if (!candidates || candidates.length === 0) {
|
|
57
|
-
continue;
|
|
58
|
-
}
|
|
59
|
-
const target = selectCandidate(candidates, entry);
|
|
60
|
-
if (target && typeof target.sha === 'string' && target.sha.length > 0 && target.sha !== entry.sha) {
|
|
61
|
-
outgoing.add(target.sha);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
adjacency.set(entry.sha, outgoing);
|
|
65
|
-
entry.symbol_call_targets = Array.from(outgoing).slice(0, MAX_NEIGHBORS);
|
|
66
|
-
}
|
|
67
|
-
const incoming = new Map();
|
|
68
|
-
for (const [fromSha, targets] of adjacency.entries()) {
|
|
69
|
-
for (const targetSha of targets) {
|
|
70
|
-
if (!incoming.has(targetSha)) {
|
|
71
|
-
incoming.set(targetSha, new Set());
|
|
72
|
-
}
|
|
73
|
-
incoming.get(targetSha).add(fromSha);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
for (const entry of Object.values(codemap)) {
|
|
77
|
-
if (!entry || typeof entry.sha !== 'string') {
|
|
78
|
-
continue;
|
|
79
|
-
}
|
|
80
|
-
const outgoing = adjacency.get(entry.sha) || new Set();
|
|
81
|
-
const inbound = incoming.get(entry.sha) || new Set();
|
|
82
|
-
const neighbors = new Set([...outgoing, ...inbound]);
|
|
83
|
-
entry.symbol_call_targets = Array.from(outgoing).slice(0, MAX_NEIGHBORS);
|
|
84
|
-
entry.symbol_callers = Array.from(inbound).slice(0, MAX_NEIGHBORS);
|
|
85
|
-
entry.symbol_neighbors = Array.from(neighbors).slice(0, MAX_NEIGHBORS * 2);
|
|
86
|
-
}
|
|
87
|
-
return codemap;
|
|
88
|
-
}
|
|
89
|
-
//# sourceMappingURL=graph.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/symbols/graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { SynthesisResult } from './synthesizer.js';
|
|
2
|
-
export interface FormattingOptions {
|
|
3
|
-
includeMetadata?: boolean;
|
|
4
|
-
includeStats?: boolean;
|
|
5
|
-
colorize?: boolean;
|
|
6
|
-
}
|
|
7
|
-
export declare function formatSynthesisResult(result: SynthesisResult, options?: FormattingOptions): string;
|
|
8
|
-
export declare function formatStreamingChunk(chunk: string): string;
|
|
9
|
-
export declare function extractCitations(markdown: string): string[];
|
|
10
|
-
export declare function addCitationFooter(markdown: string): string;
|
|
11
|
-
export declare function formatErrorMessage(error: string, query: string): string;
|
|
12
|
-
export declare function formatNoResultsMessage(query: string, queriesUsed?: string[]): string;
|
|
13
|
-
//# sourceMappingURL=markdown-formatter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-formatter.d.ts","sourceRoot":"","sources":["../../src/synthesis/markdown-formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,WAAW,iBAAiB;IAChC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,GAAE,iBAAsB,GAAG,MAAM,CAqDtG;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAgB3D;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAqB1D;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAYvE;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAmBpF"}
|