@tienne/gestalt 0.86.0 → 0.88.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/CLAUDE.md +6 -2
- package/dist/bin/gestalt-hook.d.ts +5 -0
- package/dist/bin/gestalt-hook.d.ts.map +1 -0
- package/dist/bin/gestalt-hook.js +51 -0
- package/dist/bin/gestalt-hook.js.map +1 -0
- package/dist/package.json +4 -3
- package/dist/plugin/role-agents/_shared/references/ai-tell-quick-rules.md +2 -2
- package/dist/plugin/skills/blast-radius/SKILL.md +11 -1
- package/dist/plugin/skills/diff-radius/SKILL.md +11 -0
- package/dist/plugin/skills/review/SKILL.md +9 -2
- package/dist/schemas/gestalt.schema.json +19 -0
- package/dist/src/cli/commands/harness-refs.d.ts +10 -0
- package/dist/src/cli/commands/harness-refs.d.ts.map +1 -1
- package/dist/src/cli/commands/harness-refs.js +40 -0
- package/dist/src/cli/commands/harness-refs.js.map +1 -1
- package/dist/src/cli/index.d.ts.map +1 -1
- package/dist/src/cli/index.js +10 -1
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/code-graph/cochange.d.ts +40 -0
- package/dist/src/code-graph/cochange.d.ts.map +1 -1
- package/dist/src/code-graph/cochange.js +88 -3
- package/dist/src/code-graph/cochange.js.map +1 -1
- package/dist/src/code-graph/engine.d.ts +35 -1
- package/dist/src/code-graph/engine.d.ts.map +1 -1
- package/dist/src/code-graph/engine.js +300 -55
- package/dist/src/code-graph/engine.js.map +1 -1
- package/dist/src/code-graph/freshness.d.ts +39 -0
- package/dist/src/code-graph/freshness.d.ts.map +1 -0
- package/dist/src/code-graph/freshness.js +93 -0
- package/dist/src/code-graph/freshness.js.map +1 -0
- package/dist/src/code-graph/hooks/background.d.ts +18 -0
- package/dist/src/code-graph/hooks/background.d.ts.map +1 -0
- package/dist/src/code-graph/hooks/background.js +55 -0
- package/dist/src/code-graph/hooks/background.js.map +1 -0
- package/dist/src/code-graph/hooks/pointers.d.ts +66 -0
- package/dist/src/code-graph/hooks/pointers.d.ts.map +1 -0
- package/dist/src/code-graph/hooks/pointers.js +292 -0
- package/dist/src/code-graph/hooks/pointers.js.map +1 -0
- package/dist/src/code-graph/hooks/rank.d.ts +36 -0
- package/dist/src/code-graph/hooks/rank.d.ts.map +1 -0
- package/dist/src/code-graph/hooks/rank.js +212 -0
- package/dist/src/code-graph/hooks/rank.js.map +1 -0
- package/dist/src/code-graph/hooks/run.d.ts +37 -0
- package/dist/src/code-graph/hooks/run.d.ts.map +1 -0
- package/dist/src/code-graph/hooks/run.js +324 -0
- package/dist/src/code-graph/hooks/run.js.map +1 -0
- package/dist/src/code-graph/hooks/settings.d.ts +11 -0
- package/dist/src/code-graph/hooks/settings.d.ts.map +1 -0
- package/dist/src/code-graph/hooks/settings.js +25 -0
- package/dist/src/code-graph/hooks/settings.js.map +1 -0
- package/dist/src/code-graph/hooks/state.d.ts +20 -0
- package/dist/src/code-graph/hooks/state.d.ts.map +1 -0
- package/dist/src/code-graph/hooks/state.js +73 -0
- package/dist/src/code-graph/hooks/state.js.map +1 -0
- package/dist/src/code-graph/index.d.ts +6 -2
- package/dist/src/code-graph/index.d.ts.map +1 -1
- package/dist/src/code-graph/index.js +3 -1
- package/dist/src/code-graph/index.js.map +1 -1
- package/dist/src/code-graph/ko-text.d.ts +39 -0
- package/dist/src/code-graph/ko-text.d.ts.map +1 -0
- package/dist/src/code-graph/ko-text.js +223 -0
- package/dist/src/code-graph/ko-text.js.map +1 -0
- package/dist/src/code-graph/lock.d.ts +30 -0
- package/dist/src/code-graph/lock.d.ts.map +1 -0
- package/dist/src/code-graph/lock.js +140 -0
- package/dist/src/code-graph/lock.js.map +1 -0
- package/dist/src/code-graph/plugins/typescript-skeleton.d.ts +7 -0
- package/dist/src/code-graph/plugins/typescript-skeleton.d.ts.map +1 -0
- package/dist/src/code-graph/plugins/typescript-skeleton.js +157 -0
- package/dist/src/code-graph/plugins/typescript-skeleton.js.map +1 -0
- package/dist/src/code-graph/plugins/typescript.d.ts.map +1 -1
- package/dist/src/code-graph/plugins/typescript.js +58 -0
- package/dist/src/code-graph/plugins/typescript.js.map +1 -1
- package/dist/src/code-graph/storage.d.ts +85 -0
- package/dist/src/code-graph/storage.d.ts.map +1 -1
- package/dist/src/code-graph/storage.js +318 -3
- package/dist/src/code-graph/storage.js.map +1 -1
- package/dist/src/code-graph/types.d.ts +66 -0
- package/dist/src/code-graph/types.d.ts.map +1 -1
- package/dist/src/core/config.d.ts +33 -0
- package/dist/src/core/config.d.ts.map +1 -1
- package/dist/src/core/config.js +14 -0
- package/dist/src/core/config.js.map +1 -1
- package/dist/src/core/hooks-env.d.ts +9 -0
- package/dist/src/core/hooks-env.d.ts.map +1 -0
- package/dist/src/core/hooks-env.js +16 -0
- package/dist/src/core/hooks-env.js.map +1 -0
- package/dist/src/harness-review/backward-search.d.ts +15 -2
- package/dist/src/harness-review/backward-search.d.ts.map +1 -1
- package/dist/src/harness-review/backward-search.js +101 -43
- package/dist/src/harness-review/backward-search.js.map +1 -1
- package/dist/src/harness-review/collect.d.ts +10 -1
- package/dist/src/harness-review/collect.d.ts.map +1 -1
- package/dist/src/harness-review/collect.js +66 -6
- package/dist/src/harness-review/collect.js.map +1 -1
- package/dist/src/harness-review/github-code-search.d.ts +32 -1
- package/dist/src/harness-review/github-code-search.d.ts.map +1 -1
- package/dist/src/harness-review/github-code-search.js +86 -2
- package/dist/src/harness-review/github-code-search.js.map +1 -1
- package/dist/src/harness-review/hybrid-search.d.ts +35 -0
- package/dist/src/harness-review/hybrid-search.d.ts.map +1 -0
- package/dist/src/harness-review/hybrid-search.js +63 -0
- package/dist/src/harness-review/hybrid-search.js.map +1 -0
- package/dist/src/harness-review/related-clones.d.ts +66 -0
- package/dist/src/harness-review/related-clones.d.ts.map +1 -0
- package/dist/src/harness-review/related-clones.js +309 -0
- package/dist/src/harness-review/related-clones.js.map +1 -0
- package/dist/src/harness-review/search-backend.d.ts +23 -1
- package/dist/src/harness-review/search-backend.d.ts.map +1 -1
- package/dist/src/harness-review/search-backend.js +13 -1
- package/dist/src/harness-review/search-backend.js.map +1 -1
- package/dist/src/humanize/detectors.js +1 -1
- package/dist/src/humanize/detectors.js.map +1 -1
- package/dist/src/mcp/schemas.d.ts +9 -3
- package/dist/src/mcp/schemas.d.ts.map +1 -1
- package/dist/src/mcp/schemas.js +19 -2
- package/dist/src/mcp/schemas.js.map +1 -1
- package/dist/src/mcp/server.d.ts.map +1 -1
- package/dist/src/mcp/server.js +21 -3
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/mcp/tools/code-graph-passthrough.d.ts +6 -1
- package/dist/src/mcp/tools/code-graph-passthrough.d.ts.map +1 -1
- package/dist/src/mcp/tools/code-graph-passthrough.js +95 -6
- package/dist/src/mcp/tools/code-graph-passthrough.js.map +1 -1
- package/package.json +4 -3
- package/plugin/.codex-plugin/plugin.json +1 -1
- package/plugin/.mcp.json +1 -1
- package/plugin/mcp.json +1 -1
- package/plugin/role-agents/_shared/references/ai-tell-quick-rules.md +2 -2
- package/plugin/skills/blast-radius/SKILL.md +11 -1
- package/plugin/skills/diff-radius/SKILL.md +11 -0
- package/plugin/skills/review/SKILL.md +9 -2
- package/schemas/gestalt.schema.json +19 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
/** 이보다 긴 초기값은 `…`로 접는다. 상수 값 정도만 보이게 하려는 폭이다 */
|
|
3
|
+
const MAX_INITIALIZER_CHARS = 60;
|
|
4
|
+
/** 여러 줄 인자 목록을 한 줄로 접으며 생기는 `( a`와 `b, )`도 함께 정리한다. `<`, `>`는 비교식과 헷갈려 손대지 않는다 */
|
|
5
|
+
function oneLine(text) {
|
|
6
|
+
return text
|
|
7
|
+
.replace(/\s+/g, ' ')
|
|
8
|
+
.replace(/([([]) /g, '$1')
|
|
9
|
+
.replace(/,? ([)\]])/g, '$1')
|
|
10
|
+
.trim();
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* TS/JS 파일에서 본문을 뺀 시그니처를 뽑는다.
|
|
14
|
+
* 최상위 선언과 클래스, 인터페이스, enum, namespace 멤버를 담고 import는 뺀다.
|
|
15
|
+
*/
|
|
16
|
+
export function extractTypeScriptSkeleton(filePath, content) {
|
|
17
|
+
const sf = ts.createSourceFile(filePath, content, ts.ScriptTarget.Latest, true);
|
|
18
|
+
const entries = [];
|
|
19
|
+
const lineOf = (pos) => sf.getLineAndCharacterOfPosition(pos).line + 1;
|
|
20
|
+
const push = (node, depth, signature) => {
|
|
21
|
+
entries.push({
|
|
22
|
+
lineStart: lineOf(node.getStart(sf)),
|
|
23
|
+
lineEnd: lineOf(node.getEnd()),
|
|
24
|
+
depth,
|
|
25
|
+
signature: oneLine(signature),
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
/** node 시작부터 upTo 직전까지. 본문이나 초기값 앞에서 자를 때 쓴다 */
|
|
29
|
+
const head = (node, upTo) => content.slice(node.getStart(sf), upTo).replace(/[\s=:]+$/, '');
|
|
30
|
+
const full = (node) => node.getText(sf).replace(/;\s*$/, '');
|
|
31
|
+
const visitStatements = (statements, depth) => {
|
|
32
|
+
for (const st of statements)
|
|
33
|
+
visitStatement(st, depth);
|
|
34
|
+
};
|
|
35
|
+
const visitStatement = (st, depth) => {
|
|
36
|
+
if (ts.isImportDeclaration(st) || ts.isImportEqualsDeclaration(st))
|
|
37
|
+
return;
|
|
38
|
+
if (ts.isFunctionDeclaration(st)) {
|
|
39
|
+
push(st, depth, st.body ? head(st, st.body.getStart(sf)) : full(st));
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (ts.isClassDeclaration(st)) {
|
|
43
|
+
push(st, depth, head(st, openBrace(st)));
|
|
44
|
+
for (const m of st.members)
|
|
45
|
+
visitClassMember(m, depth + 1);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
if (ts.isInterfaceDeclaration(st)) {
|
|
49
|
+
push(st, depth, head(st, openBrace(st)));
|
|
50
|
+
for (const m of st.members)
|
|
51
|
+
push(m, depth + 1, full(m).replace(/[;,]$/, ''));
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
if (ts.isEnumDeclaration(st)) {
|
|
55
|
+
push(st, depth, head(st, openBrace(st)));
|
|
56
|
+
for (const m of st.members)
|
|
57
|
+
push(m, depth + 1, m.name.getText(sf));
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
if (ts.isModuleDeclaration(st)) {
|
|
61
|
+
const body = st.body;
|
|
62
|
+
if (body && ts.isModuleBlock(body)) {
|
|
63
|
+
push(st, depth, head(st, body.getStart(sf)));
|
|
64
|
+
visitStatements(body.statements, depth + 1);
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
push(st, depth, full(st));
|
|
68
|
+
}
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
if (ts.isTypeAliasDeclaration(st)) {
|
|
72
|
+
push(st, depth, full(st));
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
if (ts.isVariableStatement(st)) {
|
|
76
|
+
visitVariableStatement(st, depth);
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
if (ts.isExportAssignment(st)) {
|
|
80
|
+
const expr = st.expression;
|
|
81
|
+
push(st, depth, ts.isArrowFunction(expr) || ts.isFunctionExpression(expr)
|
|
82
|
+
? `${head(st, expr.getStart(sf))} ${functionHead(expr)}`
|
|
83
|
+
: foldInitializer(full(st)));
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
if (ts.isExportDeclaration(st))
|
|
87
|
+
push(st, depth, foldInitializer(full(st)));
|
|
88
|
+
};
|
|
89
|
+
const visitVariableStatement = (st, depth) => {
|
|
90
|
+
// `export const a = 1, b = 2`처럼 묶인 선언도 하나씩 줄을 나눈다
|
|
91
|
+
const prefix = content
|
|
92
|
+
.slice(st.getStart(sf), st.declarationList.declarations[0].getStart(sf))
|
|
93
|
+
.trimEnd();
|
|
94
|
+
for (const decl of st.declarationList.declarations) {
|
|
95
|
+
const name = decl.name.getText(sf);
|
|
96
|
+
const type = decl.type ? `: ${decl.type.getText(sf)}` : '';
|
|
97
|
+
const init = decl.initializer;
|
|
98
|
+
let signature;
|
|
99
|
+
if (init && (ts.isArrowFunction(init) || ts.isFunctionExpression(init))) {
|
|
100
|
+
signature = `${prefix} ${name}${type} = ${functionHead(init)}`;
|
|
101
|
+
}
|
|
102
|
+
else if (init) {
|
|
103
|
+
signature = `${prefix} ${name}${type} = ${foldInitializer(init.getText(sf))}`;
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
signature = `${prefix} ${name}${type}`;
|
|
107
|
+
}
|
|
108
|
+
entries.push({
|
|
109
|
+
lineStart: lineOf(decl.getStart(sf)),
|
|
110
|
+
lineEnd: lineOf(decl.getEnd()),
|
|
111
|
+
depth,
|
|
112
|
+
signature: oneLine(signature),
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
const functionHead = (fn) => {
|
|
117
|
+
if (ts.isArrowFunction(fn)) {
|
|
118
|
+
return `${content.slice(fn.getStart(sf), fn.equalsGreaterThanToken.getEnd())} …`;
|
|
119
|
+
}
|
|
120
|
+
return `${head(fn, fn.body.getStart(sf))} …`;
|
|
121
|
+
};
|
|
122
|
+
const visitClassMember = (m, depth) => {
|
|
123
|
+
if (ts.isMethodDeclaration(m) ||
|
|
124
|
+
ts.isConstructorDeclaration(m) ||
|
|
125
|
+
ts.isGetAccessorDeclaration(m) ||
|
|
126
|
+
ts.isSetAccessorDeclaration(m)) {
|
|
127
|
+
push(m, depth, m.body ? head(m, m.body.getStart(sf)) : full(m));
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
if (ts.isPropertyDeclaration(m)) {
|
|
131
|
+
const init = m.initializer;
|
|
132
|
+
if (init && (ts.isArrowFunction(init) || ts.isFunctionExpression(init))) {
|
|
133
|
+
push(m, depth, `${head(m, init.getStart(sf))} = ${functionHead(init)}`);
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
push(m, depth, init ? head(m, init.getStart(sf)) : full(m));
|
|
137
|
+
}
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
if (ts.isClassStaticBlockDeclaration(m)) {
|
|
141
|
+
push(m, depth, 'static { … }');
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
push(m, depth, full(m));
|
|
145
|
+
};
|
|
146
|
+
const openBrace = (node) => {
|
|
147
|
+
const brace = node.getChildren(sf).find((c) => c.kind === ts.SyntaxKind.OpenBraceToken);
|
|
148
|
+
return brace ? brace.getStart(sf) : node.getEnd();
|
|
149
|
+
};
|
|
150
|
+
visitStatements(sf.statements, 0);
|
|
151
|
+
return entries;
|
|
152
|
+
}
|
|
153
|
+
function foldInitializer(text) {
|
|
154
|
+
const flat = oneLine(text);
|
|
155
|
+
return flat.length > MAX_INITIALIZER_CHARS ? `${flat.slice(0, MAX_INITIALIZER_CHARS)}…` : flat;
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=typescript-skeleton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript-skeleton.js","sourceRoot":"","sources":["../../../../src/code-graph/plugins/typescript-skeleton.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../../../src/code-graph/plugins/typescript.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../../../src/code-graph/plugins/typescript.ts"],"names":[],"mappings":"AAMA,OAAO,EAGL,KAAK,cAAc,EAIpB,MAAM,aAAa,CAAC;AA+GrB,eAAO,MAAM,gBAAgB,EAAE,cAwL9B,CAAC"}
|
|
@@ -2,6 +2,8 @@ import ts from 'typescript';
|
|
|
2
2
|
import { createHash } from 'node:crypto';
|
|
3
3
|
import { resolve, dirname, basename, extname } from 'node:path';
|
|
4
4
|
import { log } from '../../core/log.js';
|
|
5
|
+
import { extractTypeScriptSkeleton } from './typescript-skeleton.js';
|
|
6
|
+
import { docText } from '../ko-text.js';
|
|
5
7
|
import { NodeKind, EdgeKind, } from '../types.js';
|
|
6
8
|
const SUPPORTED_EXTENSIONS = ['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs'];
|
|
7
9
|
function isTestFile(filePath) {
|
|
@@ -10,6 +12,56 @@ function isTestFile(filePath) {
|
|
|
10
12
|
function hashContent(content) {
|
|
11
13
|
return createHash('sha256').update(content).digest('hex');
|
|
12
14
|
}
|
|
15
|
+
/** 주석과 다음 토큰 사이가 빈 줄 없이 붙어 있는가 */
|
|
16
|
+
function attached(text, from, to) {
|
|
17
|
+
return (text.slice(from, to).match(/\n/g)?.length ?? 0) <= 1;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* 선언 바로 앞에 붙은 주석 묶음. 빈 줄로 떨어진 주석은 그 선언 설명으로 보지 않는다
|
|
21
|
+
* (파일 머리 주석이나 앞 절의 구분 주석이기 쉽다).
|
|
22
|
+
* 화살표 함수는 주석이 `const x = () => …` 문 앞에 붙으므로 그 문을 기준으로 본다.
|
|
23
|
+
*/
|
|
24
|
+
function leadingDoc(node, sourceFile) {
|
|
25
|
+
let anchor = node;
|
|
26
|
+
if (ts.isArrowFunction(node) || ts.isFunctionExpression(node)) {
|
|
27
|
+
const p = node.parent;
|
|
28
|
+
if (ts.isVariableDeclaration(p) && ts.isVariableStatement(p.parent.parent))
|
|
29
|
+
anchor = p.parent.parent;
|
|
30
|
+
else if (ts.isPropertyDeclaration(p))
|
|
31
|
+
anchor = p;
|
|
32
|
+
}
|
|
33
|
+
const text = sourceFile.getFullText();
|
|
34
|
+
const ranges = ts.getLeadingCommentRanges(text, anchor.getFullStart()) ?? [];
|
|
35
|
+
const block = [];
|
|
36
|
+
let next = anchor.getStart(sourceFile);
|
|
37
|
+
for (let i = ranges.length - 1; i >= 0; i--) {
|
|
38
|
+
const r = ranges[i];
|
|
39
|
+
if (!attached(text, r.end, next))
|
|
40
|
+
break;
|
|
41
|
+
block.unshift(text.slice(r.pos, r.end));
|
|
42
|
+
next = r.pos;
|
|
43
|
+
}
|
|
44
|
+
return block.length > 0 ? docText(block.join('\n')) : undefined;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* 파일 맨 위 주석. 첫 문장에 빈 줄 없이 붙어 있으면 그 문장의 설명이라 머리 주석이 아니다.
|
|
48
|
+
* 단 첫 문장이 import면 import를 설명하는 주석은 드무니 머리 주석으로 친다.
|
|
49
|
+
*/
|
|
50
|
+
function fileHeaderDoc(sourceFile) {
|
|
51
|
+
const text = sourceFile.getFullText();
|
|
52
|
+
// 위치 0에서 부르면 TS가 shebang을 알아서 건너뛴다. 그 다음 줄부터 부르면 오히려 못 찾는다
|
|
53
|
+
const ranges = ts.getLeadingCommentRanges(text, 0) ?? [];
|
|
54
|
+
if (ranges.length === 0)
|
|
55
|
+
return undefined;
|
|
56
|
+
const first = sourceFile.statements[0];
|
|
57
|
+
const last = ranges[ranges.length - 1];
|
|
58
|
+
if (first &&
|
|
59
|
+
!ts.isImportDeclaration(first) &&
|
|
60
|
+
attached(text, last.end, first.getStart(sourceFile))) {
|
|
61
|
+
return undefined;
|
|
62
|
+
}
|
|
63
|
+
return docText(ranges.map((r) => text.slice(r.pos, r.end)).join('\n'));
|
|
64
|
+
}
|
|
13
65
|
function getNodePosition(node, sourceFile) {
|
|
14
66
|
const start = sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile));
|
|
15
67
|
const end = sourceFile.getLineAndCharacterOfPosition(node.getEnd());
|
|
@@ -80,6 +132,7 @@ export const typescriptPlugin = {
|
|
|
80
132
|
isTest,
|
|
81
133
|
fileHash,
|
|
82
134
|
updatedAt: now,
|
|
135
|
+
doc: fileHeaderDoc(sourceFile),
|
|
83
136
|
});
|
|
84
137
|
function visit(node) {
|
|
85
138
|
// 함수 선언
|
|
@@ -102,6 +155,7 @@ export const typescriptPlugin = {
|
|
|
102
155
|
lineEnd,
|
|
103
156
|
isTest,
|
|
104
157
|
updatedAt: now,
|
|
158
|
+
doc: leadingDoc(node, sourceFile),
|
|
105
159
|
});
|
|
106
160
|
addEdge(EdgeKind.CONTAINS, fileNodeId, fnId, lineStart);
|
|
107
161
|
}
|
|
@@ -124,6 +178,7 @@ export const typescriptPlugin = {
|
|
|
124
178
|
lineEnd,
|
|
125
179
|
isTest,
|
|
126
180
|
updatedAt: now,
|
|
181
|
+
doc: leadingDoc(node, sourceFile),
|
|
127
182
|
});
|
|
128
183
|
addEdge(EdgeKind.CONTAINS, fileNodeId, classId, lineStart);
|
|
129
184
|
// 상속 관계 (INHERITS)
|
|
@@ -159,6 +214,7 @@ export const typescriptPlugin = {
|
|
|
159
214
|
lineEnd,
|
|
160
215
|
isTest,
|
|
161
216
|
updatedAt: now,
|
|
217
|
+
doc: leadingDoc(node, sourceFile),
|
|
162
218
|
});
|
|
163
219
|
}
|
|
164
220
|
}
|
|
@@ -180,6 +236,7 @@ export const typescriptPlugin = {
|
|
|
180
236
|
lineEnd,
|
|
181
237
|
isTest,
|
|
182
238
|
updatedAt: now,
|
|
239
|
+
doc: leadingDoc(node, sourceFile),
|
|
183
240
|
});
|
|
184
241
|
}
|
|
185
242
|
}
|
|
@@ -205,5 +262,6 @@ export const typescriptPlugin = {
|
|
|
205
262
|
}
|
|
206
263
|
return { nodes, edges, fileHash };
|
|
207
264
|
},
|
|
265
|
+
skeleton: extractTypeScriptSkeleton,
|
|
208
266
|
};
|
|
209
267
|
//# sourceMappingURL=typescript.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../../src/code-graph/plugins/typescript.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../../src/code-graph/plugins/typescript.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import type { CodeGraphNode, CodeGraphEdge, CodeGraphStats, CoChangeMeta } from './types.js';
|
|
2
2
|
import type { CodeNodeEmbedding } from './embedding-provider.js';
|
|
3
|
+
export interface FileStatRow {
|
|
4
|
+
filePath: string;
|
|
5
|
+
size: number;
|
|
6
|
+
mtimeMs: number;
|
|
7
|
+
fileHash: string;
|
|
8
|
+
checkedAt: number;
|
|
9
|
+
}
|
|
3
10
|
export interface CoChangeNeighborRow {
|
|
4
11
|
other: string;
|
|
5
12
|
pairCount: number;
|
|
@@ -31,6 +38,15 @@ export interface CoChangePairRow {
|
|
|
31
38
|
* 그래서 `capped`로 따로 알린다 — 출력 `limit`에 잘린 것과 사유가 다르다.
|
|
32
39
|
*/
|
|
33
40
|
export declare const MAX_MATCHED_ROWS = 10000;
|
|
41
|
+
export interface TextTermStats {
|
|
42
|
+
docDf: Map<string, number>;
|
|
43
|
+
commitDf: Map<string, number>;
|
|
44
|
+
/** 주석이 붙은 노드 수 */
|
|
45
|
+
docs: number;
|
|
46
|
+
commits: number;
|
|
47
|
+
avgCommitTerms: number;
|
|
48
|
+
maxSeq: number;
|
|
49
|
+
}
|
|
34
50
|
/**
|
|
35
51
|
* 질의문을 상수로 뽑아둔다. `EXPLAIN QUERY PLAN` 테스트가 이 문자열을 그대로
|
|
36
52
|
* 설명해야 실제로 도는 질의의 계획을 고정하는 것이 된다. 테스트가 SQL을
|
|
@@ -70,11 +86,33 @@ export interface CoChangeMergeInput {
|
|
|
70
86
|
};
|
|
71
87
|
/** true면 세 테이블을 비우고 새로 쓴다 (전량 재수집). false면 카운터를 더한다 */
|
|
72
88
|
reset: boolean;
|
|
89
|
+
/**
|
|
90
|
+
* 커밋 메시지에서 뽑은 한국어 bigram(커밋 단위, 오래된 것부터)과 티켓 키(파일마다 나온 커밋 수).
|
|
91
|
+
* reset이면 커밋 색인과 티켓 색인도 비우고 새로 쓴다. 생략하면 둘 다 건드리지 않는다
|
|
92
|
+
*/
|
|
93
|
+
commitText?: {
|
|
94
|
+
sha: string;
|
|
95
|
+
terms: string[];
|
|
96
|
+
files: string[];
|
|
97
|
+
}[];
|
|
98
|
+
tickets?: {
|
|
99
|
+
ticket: string;
|
|
100
|
+
filePath: string;
|
|
101
|
+
count: number;
|
|
102
|
+
}[];
|
|
73
103
|
}
|
|
74
104
|
export declare class CodeGraphStore {
|
|
75
105
|
private db;
|
|
76
106
|
constructor(dbPath: string);
|
|
77
107
|
private initialize;
|
|
108
|
+
getAllFileStats(): Map<string, FileStatRow>;
|
|
109
|
+
upsertFileStat(row: FileStatRow): void;
|
|
110
|
+
deleteFileStat(filePath: string): void;
|
|
111
|
+
/** 노드가 하나라도 있는 파일 경로. stat 행이 없던 옛 DB에서도 삭제를 잡으려면 이쪽도 봐야 한다 */
|
|
112
|
+
getGraphFilePaths(): string[];
|
|
113
|
+
getMeta(key: string): string | null;
|
|
114
|
+
setMeta(key: string, value: string): void;
|
|
115
|
+
transaction(fn: () => void): void;
|
|
78
116
|
getNodesByFile(filePath: string): CodeGraphNode[];
|
|
79
117
|
getNodeById(id: string): CodeGraphNode | null;
|
|
80
118
|
getEdgesBySource(sourceId: string): CodeGraphEdge[];
|
|
@@ -85,6 +123,53 @@ export declare class CodeGraphStore {
|
|
|
85
123
|
* 지운 뒤에는 filePath를 참조하던 파일 목록을 더 이상 조회할 수 없다.
|
|
86
124
|
*/
|
|
87
125
|
getReferencingFiles(filePath: string): string[];
|
|
126
|
+
/** getReferencingFiles와 같은 집합에 테스트 여부를 붙여 돌려준다 */
|
|
127
|
+
getReferencingFilesDetailed(filePath: string): {
|
|
128
|
+
filePath: string;
|
|
129
|
+
isTest: boolean;
|
|
130
|
+
}[];
|
|
131
|
+
/**
|
|
132
|
+
* 파일별로 그 파일을 import하는 파일 수. files를 주면 그 파일만, 생략하면 많은 순 상위 limit개.
|
|
133
|
+
*/
|
|
134
|
+
getImporterCounts(opts?: {
|
|
135
|
+
files?: string[];
|
|
136
|
+
limit?: number;
|
|
137
|
+
}): Map<string, number>;
|
|
138
|
+
/**
|
|
139
|
+
* 이름이나 repoRoot 기준 상대 경로에 토큰 하나라도 들어간 노드를 고른다. 대소문자는 안 가린다.
|
|
140
|
+
* 상대 경로로 맞추는 건 절대 경로에 섞인 워크트리 이름 같은 조각이 걸리지 않게 하려는 것이다.
|
|
141
|
+
*/
|
|
142
|
+
searchNodesByTokens(repoRoot: string, tokens: string[], limit: number): CodeGraphNode[];
|
|
143
|
+
getNodesByIds(ids: string[]): CodeGraphNode[];
|
|
144
|
+
/** 주석 색인에서 terms 중 하나라도 걸린 행. limit은 흔한 bigram이 수만 행을 끌고 오지 않게 막는다 */
|
|
145
|
+
getDocTermHits(terms: string[], limit: number): {
|
|
146
|
+
term: string;
|
|
147
|
+
nodeId: string;
|
|
148
|
+
}[];
|
|
149
|
+
/** 커밋 색인에서 terms 중 하나라도 걸린 행 */
|
|
150
|
+
getCommitTermHits(terms: string[], limit: number): {
|
|
151
|
+
term: string;
|
|
152
|
+
sha: string;
|
|
153
|
+
}[];
|
|
154
|
+
/** 커밋마다 순번, bigram 수, 건드린 파일 */
|
|
155
|
+
getTextCommits(shas: string[]): {
|
|
156
|
+
sha: string;
|
|
157
|
+
seq: number;
|
|
158
|
+
terms: number;
|
|
159
|
+
files: string[];
|
|
160
|
+
}[];
|
|
161
|
+
/**
|
|
162
|
+
* term마다 df(주석은 노드 수, 커밋은 커밋 수)와 전체 문서 수, 커밋 bigram 수 평균, 최신 커밋 순번.
|
|
163
|
+
* 전체 값은 매 프롬프트마다 세지 않고 색인을 쓸 때 cg_meta에 적어둔 값을 읽는다
|
|
164
|
+
*/
|
|
165
|
+
getTextTermStats(terms: string[]): TextTermStats;
|
|
166
|
+
/** 한국어 색인의 전체 값을 다시 세서 cg_meta에 적는다. 색인을 쓴 쪽이 끝에 한 번 부른다 */
|
|
167
|
+
refreshTextIndexStats(): void;
|
|
168
|
+
getTicketFiles(tickets: string[]): {
|
|
169
|
+
ticket: string;
|
|
170
|
+
filePath: string;
|
|
171
|
+
count: number;
|
|
172
|
+
}[];
|
|
88
173
|
getAllNodes(): CodeGraphNode[];
|
|
89
174
|
getAllEdges(): CodeGraphEdge[];
|
|
90
175
|
upsertNode(node: CodeGraphNode): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/code-graph/storage.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC7F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/code-graph/storage.ts"],"names":[],"mappings":"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"}
|