maestro-flow 0.4.24 → 0.4.26
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/skills/maestro-impeccable/SKILL.md +5 -1
- package/.agents/skills/maestro-next/SKILL.md +7 -1
- package/.agents/skills/maestro-player/SKILL.md +9 -2
- package/.agents/skills/maestro-tools-execute/SKILL.md +4 -4
- package/.agents/skills/spec-load/SKILL.md +11 -4
- package/.agy/skills/maestro-impeccable/SKILL.md +5 -1
- package/.agy/skills/maestro-next/SKILL.md +7 -1
- package/.agy/skills/maestro-player/SKILL.md +9 -2
- package/.agy/skills/maestro-tools-execute/SKILL.md +4 -4
- package/.agy/skills/spec-load/SKILL.md +11 -4
- package/.claude/commands/maestro-impeccable.md +5 -1
- package/.claude/commands/maestro-next.md +7 -1
- package/.claude/commands/maestro-player.md +9 -2
- package/.claude/commands/maestro-tools-execute.md +4 -4
- package/.claude/commands/spec-load.md +11 -4
- package/.codex/skills/learn-second-opinion/SKILL.md +1 -1
- package/.codex/skills/maestro-milestone-audit/SKILL.md +11 -9
- package/.codex/skills/maestro-ui-codify/SKILL.md +3 -3
- package/.codex/skills/quality-debug/SKILL.md +31 -25
- package/.codex/skills/security-audit/SKILL.md +17 -1
- package/.codex/skills/team-review/SKILL.md +2 -2
- package/dashboard/dist-server/dashboard/src/server/agents/codex-cli-adapter.js +9 -1
- package/dashboard/dist-server/dashboard/src/server/agents/codex-cli-adapter.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/codex-cli-adapter.test.d.ts +1 -0
- package/dashboard/dist-server/dashboard/src/server/agents/codex-cli-adapter.test.js +346 -0
- package/dashboard/dist-server/dashboard/src/server/agents/codex-cli-adapter.test.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/routes/specs.js +96 -25
- package/dashboard/dist-server/dashboard/src/server/routes/specs.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/constants.d.ts +1 -0
- package/dashboard/dist-server/dashboard/src/shared/constants.js +1 -0
- package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
- package/dashboard/dist-server/src/graph/types.d.ts +98 -0
- package/dashboard/dist-server/src/graph/types.js +19 -1
- package/dashboard/dist-server/src/graph/types.js.map +1 -1
- package/dist/src/agents/cli-agent-runner.d.ts +2 -0
- package/dist/src/agents/cli-agent-runner.d.ts.map +1 -1
- package/dist/src/agents/cli-agent-runner.js +3 -0
- package/dist/src/agents/cli-agent-runner.js.map +1 -1
- package/dist/src/commands/delegate.d.ts +2 -0
- package/dist/src/commands/delegate.d.ts.map +1 -1
- package/dist/src/commands/delegate.js +3 -1
- package/dist/src/commands/delegate.js.map +1 -1
- package/dist/src/commands/kg.d.ts.map +1 -1
- package/dist/src/commands/kg.js +345 -2
- package/dist/src/commands/kg.js.map +1 -1
- package/dist/src/commands/spec.d.ts.map +1 -1
- package/dist/src/commands/spec.js +177 -38
- package/dist/src/commands/spec.js.map +1 -1
- package/dist/src/commands/wiki.d.ts.map +1 -1
- package/dist/src/commands/wiki.js +51 -9
- package/dist/src/commands/wiki.js.map +1 -1
- package/dist/src/config/cli-tools-config.d.ts +18 -0
- package/dist/src/config/cli-tools-config.d.ts.map +1 -1
- package/dist/src/config/cli-tools-config.js +31 -0
- package/dist/src/config/cli-tools-config.js.map +1 -1
- package/dist/src/graph/db/connection.d.ts +22 -0
- package/dist/src/graph/db/connection.d.ts.map +1 -0
- package/dist/src/graph/db/connection.js +113 -0
- package/dist/src/graph/db/connection.js.map +1 -0
- package/dist/src/graph/db/index.d.ts +4 -0
- package/dist/src/graph/db/index.d.ts.map +1 -0
- package/dist/src/graph/db/index.js +4 -0
- package/dist/src/graph/db/index.js.map +1 -0
- package/dist/src/graph/db/migrations.d.ts +5 -0
- package/dist/src/graph/db/migrations.d.ts.map +1 -0
- package/dist/src/graph/db/migrations.js +18 -0
- package/dist/src/graph/db/migrations.js.map +1 -0
- package/dist/src/graph/db/queries.d.ts +50 -0
- package/dist/src/graph/db/queries.d.ts.map +1 -0
- package/dist/src/graph/db/queries.js +313 -0
- package/dist/src/graph/db/queries.js.map +1 -0
- package/dist/src/graph/db/schema.sql +131 -0
- package/dist/src/graph/facade.d.ts +53 -0
- package/dist/src/graph/facade.d.ts.map +1 -0
- package/dist/src/graph/facade.js +172 -0
- package/dist/src/graph/facade.js.map +1 -0
- package/dist/src/graph/graph-queries.d.ts +24 -0
- package/dist/src/graph/graph-queries.d.ts.map +1 -0
- package/dist/src/graph/graph-queries.js +173 -0
- package/dist/src/graph/graph-queries.js.map +1 -0
- package/dist/src/graph/index.d.ts +8 -0
- package/dist/src/graph/index.d.ts.map +1 -1
- package/dist/src/graph/index.js +9 -0
- package/dist/src/graph/index.js.map +1 -1
- package/dist/src/graph/loader.d.ts +8 -0
- package/dist/src/graph/loader.d.ts.map +1 -1
- package/dist/src/graph/loader.js +20 -0
- package/dist/src/graph/loader.js.map +1 -1
- package/dist/src/graph/migration.d.ts +8 -0
- package/dist/src/graph/migration.d.ts.map +1 -0
- package/dist/src/graph/migration.js +134 -0
- package/dist/src/graph/migration.js.map +1 -0
- package/dist/src/graph/search/index.d.ts +4 -0
- package/dist/src/graph/search/index.d.ts.map +1 -0
- package/dist/src/graph/search/index.js +3 -0
- package/dist/src/graph/search/index.js.map +1 -0
- package/dist/src/graph/search/query-parser.d.ts +11 -0
- package/dist/src/graph/search/query-parser.d.ts.map +1 -0
- package/dist/src/graph/search/query-parser.js +111 -0
- package/dist/src/graph/search/query-parser.js.map +1 -0
- package/dist/src/graph/search/query-utils.d.ts +12 -0
- package/dist/src/graph/search/query-utils.d.ts.map +1 -0
- package/dist/src/graph/search/query-utils.js +184 -0
- package/dist/src/graph/search/query-utils.js.map +1 -0
- package/dist/src/graph/sync/content-hash.d.ts +7 -0
- package/dist/src/graph/sync/content-hash.d.ts.map +1 -0
- package/dist/src/graph/sync/content-hash.js +33 -0
- package/dist/src/graph/sync/content-hash.js.map +1 -0
- package/dist/src/graph/sync/incremental-sync.d.ts +23 -0
- package/dist/src/graph/sync/incremental-sync.d.ts.map +1 -0
- package/dist/src/graph/sync/incremental-sync.js +338 -0
- package/dist/src/graph/sync/incremental-sync.js.map +1 -0
- package/dist/src/graph/sync/index.d.ts +7 -0
- package/dist/src/graph/sync/index.d.ts.map +1 -0
- package/dist/src/graph/sync/index.js +5 -0
- package/dist/src/graph/sync/index.js.map +1 -0
- package/dist/src/graph/sync/watch-policy.d.ts +2 -0
- package/dist/src/graph/sync/watch-policy.d.ts.map +1 -0
- package/dist/src/graph/sync/watch-policy.js +38 -0
- package/dist/src/graph/sync/watch-policy.js.map +1 -0
- package/dist/src/graph/sync/watcher.d.ts +44 -0
- package/dist/src/graph/sync/watcher.d.ts.map +1 -0
- package/dist/src/graph/sync/watcher.js +153 -0
- package/dist/src/graph/sync/watcher.js.map +1 -0
- package/dist/src/graph/traversal.d.ts +37 -0
- package/dist/src/graph/traversal.d.ts.map +1 -0
- package/dist/src/graph/traversal.js +335 -0
- package/dist/src/graph/traversal.js.map +1 -0
- package/dist/src/graph/types.d.ts +98 -0
- package/dist/src/graph/types.d.ts.map +1 -1
- package/dist/src/graph/types.js +19 -1
- package/dist/src/graph/types.js.map +1 -1
- package/dist/src/utils/update-notices.js +21 -0
- package/dist/src/utils/update-notices.js.map +1 -1
- package/package.json +4 -2
- package/workflows/analyze.md +19 -13
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration.js","sourceRoot":"","sources":["../../../src/graph/migration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { parseQuery, boundedEditDistance } from './query-parser.js';
|
|
2
|
+
export type { ParsedQuery } from './query-parser.js';
|
|
3
|
+
export { extractSearchTerms, getStemVariants, scorePathRelevance, nameMatchBonus, kindBonus, isTestFile, isGeneratedFile, STOP_WORDS, } from './query-utils.js';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/graph/search/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACpE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,SAAS,EACT,UAAU,EACV,eAAe,EACf,UAAU,GACX,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/graph/search/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,SAAS,EACT,UAAU,EACV,eAAe,EACf,UAAU,GACX,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { NodeKind, Language } from '../types.js';
|
|
2
|
+
export interface ParsedQuery {
|
|
3
|
+
text: string;
|
|
4
|
+
kinds: NodeKind[];
|
|
5
|
+
languages: Language[];
|
|
6
|
+
pathFilters: string[];
|
|
7
|
+
nameFilters: string[];
|
|
8
|
+
}
|
|
9
|
+
export declare function parseQuery(raw: string): ParsedQuery;
|
|
10
|
+
export declare function boundedEditDistance(a: string, b: string, maxDist: number): number;
|
|
11
|
+
//# sourceMappingURL=query-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-parser.d.ts","sourceRoot":"","sources":["../../../../src/graph/search/query-parser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEtD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAUD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CA+DnD;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAwBjF"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { NODE_KINDS, LANGUAGES } from '../types.js';
|
|
2
|
+
const KIND_VALUES = new Set(NODE_KINDS);
|
|
3
|
+
const LANGUAGE_VALUES = new Set(LANGUAGES);
|
|
4
|
+
function unquote(s) {
|
|
5
|
+
if (s.length >= 2 && s.startsWith('"') && s.endsWith('"'))
|
|
6
|
+
return s.slice(1, -1);
|
|
7
|
+
return s;
|
|
8
|
+
}
|
|
9
|
+
export function parseQuery(raw) {
|
|
10
|
+
const out = {
|
|
11
|
+
text: '',
|
|
12
|
+
kinds: [],
|
|
13
|
+
languages: [],
|
|
14
|
+
pathFilters: [],
|
|
15
|
+
nameFilters: [],
|
|
16
|
+
};
|
|
17
|
+
const tokens = [];
|
|
18
|
+
let i = 0;
|
|
19
|
+
while (i < raw.length) {
|
|
20
|
+
while (i < raw.length && /\s/.test(raw[i]))
|
|
21
|
+
i++;
|
|
22
|
+
if (i >= raw.length)
|
|
23
|
+
break;
|
|
24
|
+
const start = i;
|
|
25
|
+
while (i < raw.length && !/\s/.test(raw[i])) {
|
|
26
|
+
if (raw[i] === '"') {
|
|
27
|
+
const end = raw.indexOf('"', i + 1);
|
|
28
|
+
if (end === -1) {
|
|
29
|
+
i = raw.length;
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
i = end + 1;
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
i++;
|
|
36
|
+
}
|
|
37
|
+
tokens.push(raw.slice(start, i));
|
|
38
|
+
}
|
|
39
|
+
const textParts = [];
|
|
40
|
+
for (const tok of tokens) {
|
|
41
|
+
const colon = tok.indexOf(':');
|
|
42
|
+
if (colon <= 0 || colon === tok.length - 1) {
|
|
43
|
+
textParts.push(tok);
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
const key = tok.slice(0, colon).toLowerCase();
|
|
47
|
+
const valueRaw = unquote(tok.slice(colon + 1));
|
|
48
|
+
if (!valueRaw) {
|
|
49
|
+
textParts.push(tok);
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
switch (key) {
|
|
53
|
+
case 'kind':
|
|
54
|
+
if (KIND_VALUES.has(valueRaw))
|
|
55
|
+
out.kinds.push(valueRaw);
|
|
56
|
+
else
|
|
57
|
+
textParts.push(tok);
|
|
58
|
+
break;
|
|
59
|
+
case 'lang':
|
|
60
|
+
case 'language': {
|
|
61
|
+
const lower = valueRaw.toLowerCase();
|
|
62
|
+
if (LANGUAGE_VALUES.has(lower))
|
|
63
|
+
out.languages.push(lower);
|
|
64
|
+
else
|
|
65
|
+
textParts.push(tok);
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
case 'path':
|
|
69
|
+
out.pathFilters.push(valueRaw);
|
|
70
|
+
break;
|
|
71
|
+
case 'name':
|
|
72
|
+
out.nameFilters.push(valueRaw);
|
|
73
|
+
break;
|
|
74
|
+
default:
|
|
75
|
+
textParts.push(tok);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
out.text = textParts.join(' ').trim();
|
|
79
|
+
return out;
|
|
80
|
+
}
|
|
81
|
+
export function boundedEditDistance(a, b, maxDist) {
|
|
82
|
+
if (a === b)
|
|
83
|
+
return 0;
|
|
84
|
+
const al = a.length;
|
|
85
|
+
const bl = b.length;
|
|
86
|
+
if (Math.abs(al - bl) > maxDist)
|
|
87
|
+
return maxDist + 1;
|
|
88
|
+
if (al === 0)
|
|
89
|
+
return bl;
|
|
90
|
+
if (bl === 0)
|
|
91
|
+
return al;
|
|
92
|
+
let prev = new Array(bl + 1);
|
|
93
|
+
let cur = new Array(bl + 1);
|
|
94
|
+
for (let j = 0; j <= bl; j++)
|
|
95
|
+
prev[j] = j;
|
|
96
|
+
for (let i = 1; i <= al; i++) {
|
|
97
|
+
cur[0] = i;
|
|
98
|
+
let rowMin = cur[0];
|
|
99
|
+
for (let j = 1; j <= bl; j++) {
|
|
100
|
+
const cost = a.charCodeAt(i - 1) === b.charCodeAt(j - 1) ? 0 : 1;
|
|
101
|
+
cur[j] = Math.min(cur[j - 1] + 1, prev[j] + 1, prev[j - 1] + cost);
|
|
102
|
+
if (cur[j] < rowMin)
|
|
103
|
+
rowMin = cur[j];
|
|
104
|
+
}
|
|
105
|
+
if (rowMin > maxDist)
|
|
106
|
+
return maxDist + 1;
|
|
107
|
+
[prev, cur] = [cur, prev];
|
|
108
|
+
}
|
|
109
|
+
return prev[bl];
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=query-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-parser.js","sourceRoot":"","sources":["../../../../src/graph/search/query-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { NodeKind } from '../types.js';
|
|
2
|
+
export declare const STOP_WORDS: Set<string>;
|
|
3
|
+
export declare function getStemVariants(term: string): string[];
|
|
4
|
+
export declare function extractSearchTerms(query: string, options?: {
|
|
5
|
+
stems?: boolean;
|
|
6
|
+
}): string[];
|
|
7
|
+
export declare function scorePathRelevance(filePath: string, query: string): number;
|
|
8
|
+
export declare function nameMatchBonus(nodeName: string, query: string): number;
|
|
9
|
+
export declare function kindBonus(kind: NodeKind): number;
|
|
10
|
+
export declare function isTestFile(filePath: string): boolean;
|
|
11
|
+
export declare function isGeneratedFile(filePath: string): boolean;
|
|
12
|
+
//# sourceMappingURL=query-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-utils.d.ts","sourceRoot":"","sources":["../../../../src/graph/search/query-utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,eAAO,MAAM,UAAU,aAgBrB,CAAC;AAEH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CA0CtD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,EAAE,CAuCzF;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAoB1E;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAmBtE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAQhD;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAoBpD;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAWzD"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { basename, dirname } from 'node:path';
|
|
2
|
+
export const STOP_WORDS = new Set([
|
|
3
|
+
'the', 'a', 'an', 'and', 'or', 'but', 'in', 'on', 'at', 'to', 'for',
|
|
4
|
+
'of', 'with', 'by', 'from', 'is', 'it', 'that', 'this', 'are', 'was',
|
|
5
|
+
'be', 'has', 'had', 'have', 'do', 'does', 'did', 'will', 'would', 'could',
|
|
6
|
+
'should', 'may', 'might', 'can', 'shall', 'not', 'no', 'all', 'each',
|
|
7
|
+
'every', 'how', 'what', 'where', 'when', 'who', 'which', 'why',
|
|
8
|
+
'i', 'me', 'my', 'we', 'our', 'you', 'your', 'he', 'she', 'they',
|
|
9
|
+
'show', 'give', 'tell',
|
|
10
|
+
'been', 'done', 'made', 'used', 'using', 'work', 'works', 'found',
|
|
11
|
+
'also', 'into', 'then', 'than', 'just', 'more', 'some', 'such',
|
|
12
|
+
'over', 'only', 'out', 'its', 'so', 'up', 'as', 'if',
|
|
13
|
+
'look', 'need', 'needs', 'want', 'happen', 'happens',
|
|
14
|
+
'affect', 'affected', 'break', 'breaks', 'failing',
|
|
15
|
+
'implemented', 'implement',
|
|
16
|
+
'code', 'file', 'files', 'function', 'method', 'class', 'type',
|
|
17
|
+
'fix', 'bug', 'called',
|
|
18
|
+
]);
|
|
19
|
+
export function getStemVariants(term) {
|
|
20
|
+
const variants = new Set();
|
|
21
|
+
const t = term.toLowerCase();
|
|
22
|
+
if (t.endsWith('ing') && t.length > 5) {
|
|
23
|
+
const base = t.slice(0, -3);
|
|
24
|
+
variants.add(base);
|
|
25
|
+
variants.add(base + 'e');
|
|
26
|
+
if (base.length >= 2 && base[base.length - 1] === base[base.length - 2]) {
|
|
27
|
+
variants.add(base.slice(0, -1));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
if ((t.endsWith('tion') || t.endsWith('sion')) && t.length > 5) {
|
|
31
|
+
variants.add(t.slice(0, -3));
|
|
32
|
+
}
|
|
33
|
+
if (t.endsWith('ment') && t.length > 6) {
|
|
34
|
+
variants.add(t.slice(0, -4));
|
|
35
|
+
}
|
|
36
|
+
if (t.endsWith('ies') && t.length > 4) {
|
|
37
|
+
variants.add(t.slice(0, -3) + 'y');
|
|
38
|
+
}
|
|
39
|
+
else if (t.endsWith('es') && t.length > 4) {
|
|
40
|
+
variants.add(t.slice(0, -2));
|
|
41
|
+
}
|
|
42
|
+
else if (t.endsWith('s') && !t.endsWith('ss') && t.length > 4) {
|
|
43
|
+
variants.add(t.slice(0, -1));
|
|
44
|
+
}
|
|
45
|
+
if (t.endsWith('ed') && !t.endsWith('eed') && t.length > 4) {
|
|
46
|
+
variants.add(t.slice(0, -1));
|
|
47
|
+
variants.add(t.slice(0, -2));
|
|
48
|
+
if (t.endsWith('ied') && t.length > 5) {
|
|
49
|
+
variants.add(t.slice(0, -3) + 'y');
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (t.endsWith('er') && t.length > 4) {
|
|
53
|
+
const base = t.slice(0, -2);
|
|
54
|
+
variants.add(base);
|
|
55
|
+
variants.add(base + 'e');
|
|
56
|
+
if (base.length >= 2 && base[base.length - 1] === base[base.length - 2]) {
|
|
57
|
+
variants.add(base.slice(0, -1));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return [...variants].filter(v => v.length >= 3 && v !== t);
|
|
61
|
+
}
|
|
62
|
+
export function extractSearchTerms(query, options) {
|
|
63
|
+
const includeStems = options?.stems !== false;
|
|
64
|
+
const tokens = new Set();
|
|
65
|
+
const compoundPattern = /\b([a-zA-Z][a-zA-Z0-9]*(?:[A-Z][a-z]+)+|[A-Z][a-z]+(?:[A-Z][a-z]*)+)\b/g;
|
|
66
|
+
let match;
|
|
67
|
+
while ((match = compoundPattern.exec(query)) !== null) {
|
|
68
|
+
if (match[1] && match[1].length >= 3)
|
|
69
|
+
tokens.add(match[1].toLowerCase());
|
|
70
|
+
}
|
|
71
|
+
const snakePattern = /\b([a-zA-Z][a-zA-Z0-9]*(?:_[a-zA-Z0-9]+)+)\b/g;
|
|
72
|
+
while ((match = snakePattern.exec(query)) !== null) {
|
|
73
|
+
if (match[1] && match[1].length >= 3)
|
|
74
|
+
tokens.add(match[1].toLowerCase());
|
|
75
|
+
}
|
|
76
|
+
const camelSplit = query
|
|
77
|
+
.replace(/([a-z])([A-Z])/g, '$1 $2')
|
|
78
|
+
.replace(/([A-Z]+)([A-Z][a-z])/g, '$1 $2');
|
|
79
|
+
const normalised = camelSplit.replace(/[_.]+/g, ' ');
|
|
80
|
+
const words = normalised.split(/[^a-zA-Z0-9]+/).filter(Boolean);
|
|
81
|
+
for (const word of words) {
|
|
82
|
+
const lower = word.toLowerCase();
|
|
83
|
+
if (lower.length < 3)
|
|
84
|
+
continue;
|
|
85
|
+
if (STOP_WORDS.has(lower))
|
|
86
|
+
continue;
|
|
87
|
+
tokens.add(lower);
|
|
88
|
+
}
|
|
89
|
+
if (includeStems) {
|
|
90
|
+
const stems = new Set();
|
|
91
|
+
for (const token of tokens) {
|
|
92
|
+
for (const variant of getStemVariants(token)) {
|
|
93
|
+
if (!tokens.has(variant) && !STOP_WORDS.has(variant))
|
|
94
|
+
stems.add(variant);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
for (const stem of stems)
|
|
98
|
+
tokens.add(stem);
|
|
99
|
+
}
|
|
100
|
+
return [...tokens];
|
|
101
|
+
}
|
|
102
|
+
export function scorePathRelevance(filePath, query) {
|
|
103
|
+
const terms = extractSearchTerms(query, { stems: false });
|
|
104
|
+
if (terms.length === 0)
|
|
105
|
+
return 0;
|
|
106
|
+
const pathLower = filePath.toLowerCase();
|
|
107
|
+
const fileName = basename(filePath).toLowerCase();
|
|
108
|
+
const dirName = dirname(filePath).toLowerCase();
|
|
109
|
+
let score = 0;
|
|
110
|
+
for (const term of terms) {
|
|
111
|
+
if (fileName.includes(term))
|
|
112
|
+
score += 10;
|
|
113
|
+
if (dirName.includes(term))
|
|
114
|
+
score += 5;
|
|
115
|
+
else if (pathLower.includes(term))
|
|
116
|
+
score += 3;
|
|
117
|
+
}
|
|
118
|
+
const queryLower = query.toLowerCase();
|
|
119
|
+
const isTestQuery = queryLower.includes('test') || queryLower.includes('spec');
|
|
120
|
+
if (!isTestQuery && isTestFile(filePath))
|
|
121
|
+
score -= 15;
|
|
122
|
+
return score;
|
|
123
|
+
}
|
|
124
|
+
export function nameMatchBonus(nodeName, query) {
|
|
125
|
+
const nameLower = nodeName.toLowerCase();
|
|
126
|
+
const rawTerms = query
|
|
127
|
+
.replace(/([a-z])([A-Z])/g, '$1 $2')
|
|
128
|
+
.split(/[\s_.\-]+/)
|
|
129
|
+
.map(t => t.toLowerCase())
|
|
130
|
+
.filter(t => t.length >= 2);
|
|
131
|
+
const queryTokens = query.split(/\s+/).map(t => t.toLowerCase()).filter(t => t.length >= 2);
|
|
132
|
+
const queryLower = query.replace(/\s+/g, '').toLowerCase();
|
|
133
|
+
if (nameLower === queryLower)
|
|
134
|
+
return 80;
|
|
135
|
+
if (queryTokens.length > 1 && queryTokens.includes(nameLower))
|
|
136
|
+
return 60;
|
|
137
|
+
if (nameLower.startsWith(queryLower)) {
|
|
138
|
+
const ratio = queryLower.length / nameLower.length;
|
|
139
|
+
return Math.round(10 + 30 * ratio);
|
|
140
|
+
}
|
|
141
|
+
if (rawTerms.length > 1 && rawTerms.every(t => nameLower.includes(t)))
|
|
142
|
+
return 15;
|
|
143
|
+
if (nameLower.includes(queryLower))
|
|
144
|
+
return 10;
|
|
145
|
+
return 0;
|
|
146
|
+
}
|
|
147
|
+
export function kindBonus(kind) {
|
|
148
|
+
const bonuses = {
|
|
149
|
+
function: 10, method: 10, class: 8, interface: 9, type_alias: 6,
|
|
150
|
+
struct: 6, trait: 9, enum: 5, component: 8, route: 9, module: 4,
|
|
151
|
+
property: 3, field: 3, variable: 2, constant: 3, import: 1,
|
|
152
|
+
export: 1, parameter: 0, namespace: 4, file: 0, protocol: 9, enum_member: 3,
|
|
153
|
+
};
|
|
154
|
+
return bonuses[kind] ?? 0;
|
|
155
|
+
}
|
|
156
|
+
export function isTestFile(filePath) {
|
|
157
|
+
const lower = filePath.toLowerCase();
|
|
158
|
+
const fileName = basename(filePath);
|
|
159
|
+
const lowerName = fileName.toLowerCase();
|
|
160
|
+
if (lowerName.startsWith('test_') || lowerName.startsWith('test.') ||
|
|
161
|
+
/[._-](test|tests|spec|specs)\.[a-z0-9]+$/.test(lowerName) ||
|
|
162
|
+
/(?:Test|Tests|TestCase|Tester|Spec|Specs)\.[A-Za-z0-9]+$/.test(fileName))
|
|
163
|
+
return true;
|
|
164
|
+
if (lower.includes('/tests/') || lower.includes('/test/') ||
|
|
165
|
+
lower.includes('/__tests__/') || lower.includes('/spec/') ||
|
|
166
|
+
lower.includes('/specs/') || lower.includes('/testing/') ||
|
|
167
|
+
lower.startsWith('test/') || lower.startsWith('tests/') ||
|
|
168
|
+
lower.startsWith('spec/') || lower.startsWith('specs/'))
|
|
169
|
+
return true;
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
export function isGeneratedFile(filePath) {
|
|
173
|
+
const lower = filePath.toLowerCase();
|
|
174
|
+
const patterns = [
|
|
175
|
+
'.pb.go', '.pb.rs', '.pb.py', '.pb.ts', '.pb.js',
|
|
176
|
+
'_generated.', '.generated.', '_gen.', '.gen.',
|
|
177
|
+
'mock_', '.mock.', '_mock.',
|
|
178
|
+
'/generated/', '/gen/', '/auto-generated/',
|
|
179
|
+
'.min.js', '.min.css', '.bundle.js',
|
|
180
|
+
'package-lock.json', 'yarn.lock', 'pnpm-lock.yaml',
|
|
181
|
+
];
|
|
182
|
+
return patterns.some(p => lower.includes(p));
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=query-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-utils.js","sourceRoot":"","sources":["../../../../src/graph/search/query-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function computeFileHash(absolutePath: string): string | null;
|
|
2
|
+
export declare function computeFileHashes(files: Array<{
|
|
3
|
+
absolutePath: string;
|
|
4
|
+
relPath: string;
|
|
5
|
+
}>): Map<string, string>;
|
|
6
|
+
export declare function isFileTooLarge(absolutePath: string): boolean;
|
|
7
|
+
//# sourceMappingURL=content-hash.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-hash.d.ts","sourceRoot":"","sources":["../../../../src/graph/sync/content-hash.ts"],"names":[],"mappings":"AAKA,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CASnE;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,KAAK,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GACtD,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAOrB;AAED,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAM5D"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { readFileSync, statSync } from 'node:fs';
|
|
3
|
+
const MAX_FILE_SIZE = 1_048_576; // 1 MB
|
|
4
|
+
export function computeFileHash(absolutePath) {
|
|
5
|
+
try {
|
|
6
|
+
const stat = statSync(absolutePath);
|
|
7
|
+
if (stat.size > MAX_FILE_SIZE)
|
|
8
|
+
return null;
|
|
9
|
+
const content = readFileSync(absolutePath);
|
|
10
|
+
return createHash('sha256').update(content).digest('hex');
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export function computeFileHashes(files) {
|
|
17
|
+
const hashes = new Map();
|
|
18
|
+
for (const file of files) {
|
|
19
|
+
const hash = computeFileHash(file.absolutePath);
|
|
20
|
+
if (hash)
|
|
21
|
+
hashes.set(file.relPath, hash);
|
|
22
|
+
}
|
|
23
|
+
return hashes;
|
|
24
|
+
}
|
|
25
|
+
export function isFileTooLarge(absolutePath) {
|
|
26
|
+
try {
|
|
27
|
+
return statSync(absolutePath).size > MAX_FILE_SIZE;
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=content-hash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-hash.js","sourceRoot":"","sources":["../../../../src/graph/sync/content-hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEjD,MAAM,aAAa,GAAG,SAAS,CAAC,CAAC,OAAO;AAExC,MAAM,UAAU,eAAe,CAAC,YAAoB;IAClD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;QACpC,IAAI,IAAI,CAAC,IAAI,GAAG,aAAa;YAAE,OAAO,IAAI,CAAC;QAC3C,MAAM,OAAO,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;QAC3C,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,KAAuD;IAEvD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAChD,IAAI,IAAI;YAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,YAAoB;IACjD,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,GAAG,aAAa,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { DatabaseConnection } from '../db/connection.js';
|
|
2
|
+
export interface SyncResult {
|
|
3
|
+
filesChanged: number;
|
|
4
|
+
nodesAdded: number;
|
|
5
|
+
edgesAdded: number;
|
|
6
|
+
durationMs: number;
|
|
7
|
+
}
|
|
8
|
+
export declare class IncrementalSync {
|
|
9
|
+
private projectRoot;
|
|
10
|
+
private conn;
|
|
11
|
+
private queries;
|
|
12
|
+
constructor(projectRoot: string, conn: DatabaseConnection);
|
|
13
|
+
sync(): SyncResult;
|
|
14
|
+
private detectChanges;
|
|
15
|
+
private getGitChangedFiles;
|
|
16
|
+
private classifyGitChanges;
|
|
17
|
+
private getAllSourceFiles;
|
|
18
|
+
private extractFile;
|
|
19
|
+
private extractSymbols;
|
|
20
|
+
private extractImports;
|
|
21
|
+
private resolveImport;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=incremental-sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"incremental-sync.d.ts","sourceRoot":"","sources":["../../../../src/graph/sync/incremental-sync.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAkB9D,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,IAAI,CAAqB;IACjC,OAAO,CAAC,OAAO,CAAe;gBAElB,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB;IAMzD,IAAI,IAAI,UAAU;IAiFlB,OAAO,CAAC,aAAa;IAuBrB,OAAO,CAAC,kBAAkB;IAsB1B,OAAO,CAAC,kBAAkB;IAgB1B,OAAO,CAAC,iBAAiB;IAoBzB,OAAO,CAAC,WAAW;IA2DnB,OAAO,CAAC,cAAc;IAsFtB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,aAAa;CAetB"}
|