@tienne/gestalt 0.87.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/skills/blast-radius/SKILL.md +11 -1
- package/dist/plugin/skills/diff-radius/SKILL.md +11 -0
- package/dist/schemas/gestalt.schema.json +19 -0
- 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/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/skills/blast-radius/SKILL.md +11 -1
- package/plugin/skills/diff-radius/SKILL.md +11 -0
- package/schemas/gestalt.schema.json +19 -0
package/CLAUDE.md
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
- **Review Pipeline**: Code Review 7종 에이전트(보안/성능/품질/프론트엔드/주석/라이팅/하네스) + consensus → 자동 수정 루프
|
|
13
13
|
- **MCP Server**: stdio transport, API 키 없으면 Passthrough 모드 자동 활성화 (Execute는 항상 Passthrough)
|
|
14
14
|
- **Skill System**: SKILL.md 기반 확장, chokidar hot-reload
|
|
15
|
-
- **Code Knowledge Graph**: 정적 분석 → 의존성 그래프 → Blast-Radius 영향 파일 추출, D3 시각화(`ges_graph_visualize`) 지원. git 이력에서 뽑은 co-change(함께 바뀐 파일)를 나란히 실어 import가 원리상 못 보는 관계까지
|
|
15
|
+
- **Code Knowledge Graph**: 정적 분석 → 의존성 그래프 → Blast-Radius 영향 파일 추출, D3 시각화(`ges_graph_visualize`) 지원. git 이력에서 뽑은 co-change(함께 바뀐 파일)를 나란히 실어 import가 원리상 못 보는 관계까지 잡는다. Claude Code 훅으로 세션에 포인터와 영향 범위를 자동으로 넣을 수 있다(기본 꺼짐)
|
|
16
16
|
- **Knowledge Base**: 코드 그래프·도메인 지식을 MD로 내보내고 로컬 임베딩으로 시맨틱 검색
|
|
17
17
|
- **Memory**: 이전 스펙·실행 이력을 `.gestalt/memory.json`에 축적, 신규 인터뷰에 자동 주입
|
|
18
18
|
- **Multi-Provider LLM**: frugal/standard/frontier 티어별로 Anthropic/OpenAI 호환 프로바이더 자유 조합
|
|
@@ -50,7 +50,7 @@ pnpm tsx bin/gestalt.ts explain-eval --a plugin/role-agents/explainer/AGENT.md
|
|
|
50
50
|
- `ges_agent`: action=[list|get], name?
|
|
51
51
|
- `ges_status`: sessionId?, sessionType?, cwd?
|
|
52
52
|
- `ges_benchmark`: action=[start|respond|status], scenario?, benchmarkSessionId?, response?
|
|
53
|
-
- `ges_code_graph`: action=[build|blast_radius|diff_radius|query|co_change|stats|db_exists]
|
|
53
|
+
- `ges_code_graph`: action=[build|blast_radius|diff_radius|query|co_change|stats|skeleton|db_exists]
|
|
54
54
|
- `ges_graph_visualize`: repoRoot, port?
|
|
55
55
|
- `ges_generate_kb`: repoRoot?, outputPath?, types?, summarize?
|
|
56
56
|
- `ges_search`: query, k?, kbPath?, types?
|
|
@@ -111,6 +111,7 @@ skills → plugin/skills 루트 심링크 — Claude와 Orca가 읽
|
|
|
111
111
|
.grok-plugin/marketplace.json source: "./plugin" ← Grok
|
|
112
112
|
plugin/.codex-plugin/plugin.json "skills": "./skills/"
|
|
113
113
|
plugin/.mcp.json Grok MCP (plugin/mcp.json과 동일)
|
|
114
|
+
hooks/hooks.json Claude 플러그인 훅 (코드 그래프 자동 주입). Claude만 읽는다
|
|
114
115
|
```
|
|
115
116
|
|
|
116
117
|
- Orca는 `plugin.json`을 안 읽는다. 설치 경로 뒤에 `skills`를 하드코딩해 붙이고 그 아래만 훑는다. 루트 `skills` 심링크를 지우면 Orca 채팅의 스킬 피커에서 gestalt 스킬이 하나도 안 뜬다.
|
|
@@ -122,6 +123,9 @@ plugin/.mcp.json Grok MCP (plugin/mcp.json과 동일)
|
|
|
122
123
|
- Codex는 `path`가 가리킨 디렉토리를 통째로 복사한다. 레포 루트를 가리키면 `.git`과 `node_modules`까지 딸려가 1.6GB가 되므로 반드시 `plugin/`으로 좁힌다.
|
|
123
124
|
- Codex는 심링크를 따라가지 않는다. 자산은 실물 파일로 `plugin/` 안에 있어야 한다.
|
|
124
125
|
- `plugin/skills/review/SKILL.md`가 `../../role-agents/`를 참조한다. 스킬과 에이전트를 함께 옮겨야 이 상대 깊이가 유지된다.
|
|
126
|
+
- 훅은 루트 `hooks/hooks.json` 하나만 두고 `plugin.json`에 `hooks` 필드를 넣지 않는다. 문서상 필드와 기본 파일은 merge된다. 같은 파일을 가리키면 실제로는 한 번만 걸리는 걸 확인했지만 그래도 한 곳만 둔다.
|
|
127
|
+
- Codex와 Grok 훅은 지원하지 않는다. 훅 자동 주입은 Claude 전용이다.
|
|
128
|
+
- 훅 런처는 `scripts/code-graph-hook.sh`다. Node 탐색은 `scripts/lib/pick-node.sh`를 `mcp-serve.sh`와 함께 쓴다. 자세한 동작은 [`docs/code-graph.md`](./docs/code-graph.md#claude-code-훅-자동-주입)에 있다.
|
|
125
129
|
- 자산 디렉토리 기본값은 `src/core/config.ts`에 `skillsDir`, `agentsDir`, `roleAgentsDir`, `reviewAgentsDir`, `personasDir` 다섯 개로 있다. 경로를 바꾸면 전부 함께 고친다.
|
|
126
130
|
|
|
127
131
|
### MCP 기동 경로
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gestalt-hook.d.ts","sourceRoot":"","sources":["../../bin/gestalt-hook.ts"],"names":[],"mappings":";AAQA,QAAA,MAAS,KAAK,sBAAE,OAAO,sBAAE,GAAG,oBAAgB,CAAC;AAE7C,iBAAe,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAI1C;AAED,iBAAe,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA4BnC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
// Claude Code 플러그인 훅 엔트리. 매 프롬프트마다 뜨는 프로세스라 CLI(bin/gestalt.ts)를
|
|
4
|
+
// 거치지 않는다. commander와 MCP 서버까지 딸려오면 기동만 수백 ms가 든다.
|
|
5
|
+
// 어떤 경로든 exit 0으로 끝낸다. 훅이 실패해도 사용자 턴은 막지 않는다.
|
|
6
|
+
process.env['GESTALT_LOG_LEVEL'] ??= 'warn';
|
|
7
|
+
const [, entry, command, arg] = process.argv;
|
|
8
|
+
async function readStdin() {
|
|
9
|
+
const chunks = [];
|
|
10
|
+
for await (const chunk of process.stdin)
|
|
11
|
+
chunks.push(chunk);
|
|
12
|
+
return Buffer.concat(chunks).toString('utf-8');
|
|
13
|
+
}
|
|
14
|
+
async function main() {
|
|
15
|
+
if (command === 'refresh' || command === 'reindex') {
|
|
16
|
+
// 백그라운드 갱신. 여기서만 엔진을 불러온다. refresh는 훅이 띄운 것이라 훅이 켜져 있어야 돈다.
|
|
17
|
+
// reindex는 MCP 질의가 다시 파싱할 게 많아 넘긴 것이라 훅 설정과 무관하다
|
|
18
|
+
if (!arg)
|
|
19
|
+
return;
|
|
20
|
+
if (command === 'refresh') {
|
|
21
|
+
const { isHooksEnabled } = await import('../src/code-graph/hooks/settings.js');
|
|
22
|
+
if (!isHooksEnabled(arg))
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const { codeGraphEngine } = await import('../src/code-graph/engine.js');
|
|
26
|
+
await codeGraphEngine.refresh(arg);
|
|
27
|
+
codeGraphEngine.close();
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const { parseEventArg, runHook, DEADLINE_MS } = await import('../src/code-graph/hooks/run.js');
|
|
31
|
+
const event = parseEventArg(command);
|
|
32
|
+
if (!event)
|
|
33
|
+
return;
|
|
34
|
+
// stdin이 안 닫히거나 비동기 대기가 길어지면 데드라인에서 끊는다.
|
|
35
|
+
// 동기 구간은 이 타이머가 못 끊으므로 runHook이 단계마다 데드라인을 따로 본다
|
|
36
|
+
setTimeout(() => process.exit(0), DEADLINE_MS[event] + 300).unref();
|
|
37
|
+
const { detachedRefreshSpawner } = await import('../src/code-graph/hooks/background.js');
|
|
38
|
+
const out = await runHook(event, await readStdin(), {
|
|
39
|
+
spawnRefresh: entry ? detachedRefreshSpawner(entry) : undefined,
|
|
40
|
+
});
|
|
41
|
+
if (out)
|
|
42
|
+
process.stdout.write(out);
|
|
43
|
+
}
|
|
44
|
+
main()
|
|
45
|
+
.catch((e) => {
|
|
46
|
+
process.stderr.write(`[gestalt] hook failed: ${e instanceof Error ? e.message : String(e)}\n`);
|
|
47
|
+
})
|
|
48
|
+
.finally(() => {
|
|
49
|
+
process.exitCode = 0;
|
|
50
|
+
});
|
|
51
|
+
//# sourceMappingURL=gestalt-hook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gestalt-hook.js","sourceRoot":"","sources":["../../bin/gestalt-hook.ts"],"names":[],"mappings":";;AAEA,iEAAiE;AACjE,mDAAmD;AACnD,8CAA8C;AAE9C,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,MAAM,CAAC;AAE5C,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;AAE7C,KAAK,UAAU,SAAS;IACtB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK;QAAE,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;IACtE,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACjD,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACnD,4DAA4D;QAC5D,iDAAiD;QACjD,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,qCAAqC,CAAC,CAAC;YAC/E,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;gBAAE,OAAO;QACnC,CAAC;QACD,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;QACxE,MAAM,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnC,eAAe,CAAC,KAAK,EAAE,CAAC;QACxB,OAAO;IACT,CAAC;IAED,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC;IAC/F,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK;QAAE,OAAO;IAEnB,yCAAyC;IACzC,iDAAiD;IACjD,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAEpE,MAAM,EAAE,sBAAsB,EAAE,GAAG,MAAM,MAAM,CAAC,uCAAuC,CAAC,CAAC;IACzF,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,MAAM,SAAS,EAAE,EAAE;QAClD,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;KAChE,CAAC,CAAC;IACH,IAAI,GAAG;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACrC,CAAC;AAED,IAAI,EAAE;KACH,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE;IACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACjG,CAAC,CAAC;KACD,OAAO,CAAC,GAAG,EAAE;IACZ,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
|
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tienne/gestalt",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.88.0",
|
|
4
4
|
"description": "TypeScript AI Development Harness - Gestalt psychology-driven requirement clarification",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -17,7 +17,8 @@
|
|
|
17
17
|
"node": ">=22.0.0"
|
|
18
18
|
},
|
|
19
19
|
"bin": {
|
|
20
|
-
"gestalt": "./dist/bin/gestalt.js"
|
|
20
|
+
"gestalt": "./dist/bin/gestalt.js",
|
|
21
|
+
"gestalt-hook": "./dist/bin/gestalt-hook.js"
|
|
21
22
|
},
|
|
22
23
|
"files": [
|
|
23
24
|
"dist",
|
|
@@ -28,7 +29,7 @@
|
|
|
28
29
|
"scripts": {
|
|
29
30
|
"dev": "tsx bin/gestalt.ts",
|
|
30
31
|
"build": "tsc -p tsconfig.build.json",
|
|
31
|
-
"postbuild": "rm -rf dist/plugin && mkdir -p dist/plugin && cp -r plugin/agents plugin/role-agents plugin/review-agents plugin/personas plugin/skills dist/plugin/ && cp -r schemas dist/ && cp package.json dist/ && chmod +x dist/bin/gestalt.js && pnpm run verify:plugin && pnpm run verify:rules && pnpm run verify:rule-overlap && pnpm run verify:output-style",
|
|
32
|
+
"postbuild": "rm -rf dist/plugin && mkdir -p dist/plugin && cp -r plugin/agents plugin/role-agents plugin/review-agents plugin/personas plugin/skills dist/plugin/ && cp -r schemas dist/ && cp package.json dist/ && chmod +x dist/bin/gestalt.js dist/bin/gestalt-hook.js && pnpm run verify:plugin && pnpm run verify:rules && pnpm run verify:rule-overlap && pnpm run verify:output-style",
|
|
32
33
|
"verify:plugin": "tsx scripts/verify-plugin-assets.ts",
|
|
33
34
|
"prepublishOnly": "pnpm build",
|
|
34
35
|
"test": "vitest run",
|
|
@@ -68,6 +68,7 @@ outputs:
|
|
|
68
68
|
- coChangeTotalMatched
|
|
69
69
|
- riskScore
|
|
70
70
|
- summary
|
|
71
|
+
- freshness
|
|
71
72
|
---
|
|
72
73
|
|
|
73
74
|
# Blast Radius Skill
|
|
@@ -84,6 +85,8 @@ outputs:
|
|
|
84
85
|
/build-graph
|
|
85
86
|
```
|
|
86
87
|
|
|
88
|
+
한 번 빌드해두면 그 뒤는 손대지 않아도 됩니다. 질의하기 전에 그래프를 작업 트리에 맞추므로 커밋 안 한 변경까지 반영된 그래프로 답합니다. 그래프 DB가 아예 없으면 자동으로 만들지 않으니 그때만 `/build-graph`를 돌립니다.
|
|
89
|
+
|
|
87
90
|
## 실행 방법
|
|
88
91
|
|
|
89
92
|
### 기본 (마지막 커밋 변경 파일 자동 감지)
|
|
@@ -131,6 +134,7 @@ ges_code_graph {
|
|
|
131
134
|
| `depthExhausted` | `maxDepth`에 걸려 탐색이 멈췄고 갈 곳이 남아 있었다 |
|
|
132
135
|
| `unexploredNodes` | 그때 다음 홉에서 기다리던 노드 수 |
|
|
133
136
|
| `summary` | 한 줄 요약 |
|
|
137
|
+
| `freshness` | 질의 전 최신화 결과. `status`가 `fresh`(바뀐 것 없음), `refreshed`(반영하고 답함), `stale`(이전 그래프로 답함), `skipped`(DB가 없거나 최신화를 끔) 중 하나 |
|
|
134
138
|
|
|
135
139
|
### `rankedFiles`의 출처 표시
|
|
136
140
|
|
|
@@ -184,6 +188,13 @@ ges_code_graph {
|
|
|
184
188
|
레포 최상위에서 /build-graph를 다시 돌리면 함께 바뀐 파일까지 잡습니다.
|
|
185
189
|
```
|
|
186
190
|
|
|
191
|
+
`freshness.status`가 `stale`이면 결과 표시 위에 안내를 붙입니다. 결과는 나오지만 최근에 고친 파일이 빠져 있을 수 있습니다.
|
|
192
|
+
|
|
193
|
+
```
|
|
194
|
+
⚠️ 이전 그래프 기준으로 본 결과입니다 ({freshness.message}).
|
|
195
|
+
최근에 고친 파일은 빠져 있을 수 있습니다. 잠시 뒤 다시 부르면 그때 다시 맞춥니다.
|
|
196
|
+
```
|
|
197
|
+
|
|
187
198
|
`depthExhausted: true`면 위 표시 바로 아래에 한 줄을 덧붙입니다. 빠뜨리지 않습니다.
|
|
188
199
|
|
|
189
200
|
```
|
|
@@ -225,4 +236,3 @@ ges_code_graph {
|
|
|
225
236
|
```
|
|
226
237
|
|
|
227
238
|
돌아온 순서대로 사용자에게 제시합니다. 스폰이 그 별칭을 거부하면 `sonnet`으로 1회 재시도합니다. 그것도 안 되면 기존 방식(테스트 파일 우선)으로 진행합니다. 폴백 절차는 [`../_shared/agent-model.md`](../_shared/agent-model.md)와 같습니다.
|
|
228
|
-
6. 빌드된 그래프가 오래된 경우 `/build-graph --incremental` 실행을 권장합니다.
|
|
@@ -54,6 +54,7 @@ outputs:
|
|
|
54
54
|
- coChangeTotalMatched
|
|
55
55
|
- riskScore
|
|
56
56
|
- summary
|
|
57
|
+
- freshness
|
|
57
58
|
---
|
|
58
59
|
|
|
59
60
|
# Diff Radius Skill
|
|
@@ -70,6 +71,8 @@ outputs:
|
|
|
70
71
|
/build-graph
|
|
71
72
|
```
|
|
72
73
|
|
|
74
|
+
한 번 빌드해두면 그 뒤는 손대지 않아도 됩니다. 질의하기 전에 그래프를 작업 트리에 맞추므로 커밋 안 한 변경까지 반영된 그래프로 답합니다. 그래프 DB가 아예 없으면 자동으로 만들지 않으니 그때만 `/build-graph`를 돌립니다.
|
|
75
|
+
|
|
73
76
|
## 실행 방법
|
|
74
77
|
|
|
75
78
|
### 기본 (staged + unstaged 전체)
|
|
@@ -123,6 +126,7 @@ ges_code_graph {
|
|
|
123
126
|
| `coChangeTotalMatched` | 임계를 통과한 이력 이웃 수. `coChangeMatchedCapped`가 꺼져 있으면 하한이 아니라 정확한 수다 |
|
|
124
127
|
| `riskScore` | 위험도 점수 0~1 |
|
|
125
128
|
| `summary` | 한 줄 요약 |
|
|
129
|
+
| `freshness` | 질의 전 최신화 결과. `status`가 `fresh`(바뀐 것 없음), `refreshed`(반영하고 답함), `stale`(이전 그래프로 답함), `skipped`(DB가 없거나 최신화를 끔) 중 하나 |
|
|
126
130
|
|
|
127
131
|
`rankedFiles` 각 항목의 `origin`은 `both`(import와 이력 양쪽), `history`(이력 전용), `import`(import 전용) 셋이다. `history`는 매니페스트끼리의 약속이나 코드와 그 문서처럼 서로 import하지 않아 파싱으로는 영영 안 잡히는 관계다. 커밋 직전에 "이것도 같이 고쳐야 하지 않나"를 잡아주는 자리라 이 스킬에서 특히 쓸모가 있다.
|
|
128
132
|
|
|
@@ -162,6 +166,13 @@ ges_code_graph {
|
|
|
162
166
|
레포 최상위에서 /build-graph를 다시 돌리면 함께 바뀐 파일까지 잡습니다.
|
|
163
167
|
```
|
|
164
168
|
|
|
169
|
+
`freshness.status`가 `stale`이면 결과 표시 위에 안내를 붙입니다. 결과는 나오지만 최근에 고친 파일이 빠져 있을 수 있습니다.
|
|
170
|
+
|
|
171
|
+
```
|
|
172
|
+
⚠️ 이전 그래프 기준으로 본 결과입니다 ({freshness.message}).
|
|
173
|
+
최근에 고친 파일은 빠져 있을 수 있습니다. 잠시 뒤 다시 부르면 그때 다시 맞춥니다.
|
|
174
|
+
```
|
|
175
|
+
|
|
165
176
|
`depthExhausted: true`면 위 표시 바로 아래에 한 줄을 덧붙입니다. 빠뜨리지 않습니다.
|
|
166
177
|
|
|
167
178
|
```
|
|
@@ -148,6 +148,25 @@
|
|
|
148
148
|
"description": "Enable OS desktop notifications for pipeline events (env: GESTALT_NOTIFICATIONS)",
|
|
149
149
|
"default": false
|
|
150
150
|
},
|
|
151
|
+
"codeGraph": {
|
|
152
|
+
"type": "object",
|
|
153
|
+
"description": "Code knowledge graph settings",
|
|
154
|
+
"properties": {
|
|
155
|
+
"hooks": {
|
|
156
|
+
"type": "object",
|
|
157
|
+
"description": "Claude Code plugin hooks that inject code graph pointers into the session. Claude Code only",
|
|
158
|
+
"properties": {
|
|
159
|
+
"enabled": {
|
|
160
|
+
"type": "boolean",
|
|
161
|
+
"description": "Inject a repo map at session start, related file pointers per prompt, and impact plus co-change after edits. Off by default because plugin hooks run in every repo (env: GESTALT_CODE_GRAPH_HOOKS=1|0)",
|
|
162
|
+
"default": false
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
"additionalProperties": false
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
"additionalProperties": false
|
|
169
|
+
},
|
|
151
170
|
"logLevel": {
|
|
152
171
|
"type": "string",
|
|
153
172
|
"enum": ["debug", "info", "warn", "error"],
|
|
@@ -16,7 +16,47 @@ export type GitRunner = (root: string, args: string[]) => string;
|
|
|
16
16
|
export interface CommitRecord {
|
|
17
17
|
sha: string;
|
|
18
18
|
files: string[];
|
|
19
|
+
/** 제목과 본문. 메시지까지 읽은 로그에서만 있다 */
|
|
20
|
+
message?: string;
|
|
21
|
+
/** `%D` ref 이름. 브랜치 끝 커밋에만 붙는다 */
|
|
22
|
+
refs?: string;
|
|
19
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* 커밋 색인 형식 버전. 올리면 다음 증분 수집이 전량 재수집으로 내려가 예전 DB도 색인을 갖는다.
|
|
26
|
+
*/
|
|
27
|
+
export declare const COMMIT_TEXT_INDEX_VERSION = "1";
|
|
28
|
+
export declare const COMMIT_TEXT_INDEX_KEY = "commit_text_index_version";
|
|
29
|
+
/**
|
|
30
|
+
* 해시와 파일 목록에 메시지까지 한 번에 받는 형식. 구분자는 메시지에 나올 일이 없는
|
|
31
|
+
* 제어 문자로 둔다. %b는 여러 줄이라 줄 단위로는 파일 목록과 못 가른다.
|
|
32
|
+
*/
|
|
33
|
+
export declare const GIT_LOG_FORMAT = "--format=%x1e%H%x1f%D%x1f%s%x1f%b%x1d";
|
|
34
|
+
export declare function parseGitLogWithMessages(raw: string): CommitRecord[];
|
|
35
|
+
export interface CommitTextIndex {
|
|
36
|
+
/** 오래된 커밋부터. 저장할 때 이 순서로 번호를 매겨 최근 커밋을 가린다 */
|
|
37
|
+
commits: {
|
|
38
|
+
sha: string;
|
|
39
|
+
terms: string[];
|
|
40
|
+
files: string[];
|
|
41
|
+
}[];
|
|
42
|
+
tickets: {
|
|
43
|
+
ticket: string;
|
|
44
|
+
filePath: string;
|
|
45
|
+
count: number;
|
|
46
|
+
}[];
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* 커밋 메시지의 한국어 bigram과 티켓 키를 커밋 단위로 모은다. 파일은 그 커밋이 건드린 것이다.
|
|
50
|
+
*
|
|
51
|
+
* 파일 단위로 bigram을 합치지 않는 이유가 있다. 커밋을 많이 탄 파일은 서로 무관한 커밋
|
|
52
|
+
* 수백 개에서 단어를 다 모아 아무 프롬프트에나 걸린다. 커밋 하나를 문서 하나로 두면
|
|
53
|
+
* "이 프롬프트와 비슷한 말로 고친 커밋"을 먼저 찾고 그 커밋의 파일을 내게 된다.
|
|
54
|
+
*
|
|
55
|
+
* co-change와 같은 상한(MAX_FILES_PER_COMMIT)을 넘는 커밋은 뺀다 — 대량 포맷이나 버전 범프
|
|
56
|
+
* 메시지가 모든 파일에 붙으면 아무 파일이나 걸린다. 파일 하나짜리 커밋은 쓴다. 페어는
|
|
57
|
+
* 못 만들지만 "이 말로 이 파일을 고쳤다"는 가장 깨끗한 신호라서다.
|
|
58
|
+
*/
|
|
59
|
+
export declare function buildCommitTextIndex(root: string, commits: CommitRecord[]): CommitTextIndex;
|
|
20
60
|
export interface PairCounts {
|
|
21
61
|
/** 키는 `${a}\t${b}`이고 a < b로 정규화돼 있다 */
|
|
22
62
|
pairs: Map<string, number>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cochange.d.ts","sourceRoot":"","sources":["../../../src/code-graph/cochange.ts"],"names":[],"mappings":"AAIA,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"cochange.d.ts","sourceRoot":"","sources":["../../../src/code-graph/cochange.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { existsSync } from 'node:fs';
|
|
|
3
3
|
import { resolve } from 'node:path';
|
|
4
4
|
import { logger } from '../core/logger.js';
|
|
5
5
|
import { MAX_MATCHED_ROWS } from './storage.js';
|
|
6
|
+
import { extractTickets, koreanTerms } from './ko-text.js';
|
|
6
7
|
/**
|
|
7
8
|
* 한 커밋이 이 개수를 넘게 건드리면 신호에서 뺀다.
|
|
8
9
|
* 릴리즈 커밋이나 일괄 포맷팅이 모든 파일을 서로 연결해버리는 걸 막는다.
|
|
@@ -16,6 +17,83 @@ export const DEFAULT_MIN_CONFIDENCE = 0.3;
|
|
|
16
17
|
export const DEFAULT_NEIGHBOR_LIMIT = 30;
|
|
17
18
|
export const DEFAULT_PAIR_LIMIT = 50;
|
|
18
19
|
const SHA_RE = /^[0-9a-f]{40}$/;
|
|
20
|
+
/**
|
|
21
|
+
* 커밋 색인 형식 버전. 올리면 다음 증분 수집이 전량 재수집으로 내려가 예전 DB도 색인을 갖는다.
|
|
22
|
+
*/
|
|
23
|
+
export const COMMIT_TEXT_INDEX_VERSION = '1';
|
|
24
|
+
export const COMMIT_TEXT_INDEX_KEY = 'commit_text_index_version';
|
|
25
|
+
/** 본문이 긴 커밋 하나가 단어를 다 차지하지 않게 자른다 */
|
|
26
|
+
const MAX_MESSAGE_CHARS = 2000;
|
|
27
|
+
/**
|
|
28
|
+
* 해시와 파일 목록에 메시지까지 한 번에 받는 형식. 구분자는 메시지에 나올 일이 없는
|
|
29
|
+
* 제어 문자로 둔다. %b는 여러 줄이라 줄 단위로는 파일 목록과 못 가른다.
|
|
30
|
+
*/
|
|
31
|
+
export const GIT_LOG_FORMAT = '--format=%x1e%H%x1f%D%x1f%s%x1f%b%x1d';
|
|
32
|
+
export function parseGitLogWithMessages(raw) {
|
|
33
|
+
// 구분자가 하나도 없으면 해시와 파일만 있는 옛 형식이다. 주입한 runGit이 옛 형식으로 답해도 페어는 센다
|
|
34
|
+
if (!raw.includes('\x1e'))
|
|
35
|
+
return parseGitLog(raw);
|
|
36
|
+
const commits = [];
|
|
37
|
+
for (const chunk of raw.split('\x1e')) {
|
|
38
|
+
const end = chunk.indexOf('\x1d');
|
|
39
|
+
if (end < 0)
|
|
40
|
+
continue;
|
|
41
|
+
const [sha, refs, subject, body] = chunk.slice(0, end).split('\x1f');
|
|
42
|
+
if (!sha || !SHA_RE.test(sha.trim()))
|
|
43
|
+
continue;
|
|
44
|
+
const files = chunk
|
|
45
|
+
.slice(end + 1)
|
|
46
|
+
.split('\n')
|
|
47
|
+
.map((l) => l.trim())
|
|
48
|
+
.filter((l) => l.length > 0);
|
|
49
|
+
commits.push({
|
|
50
|
+
sha: sha.trim(),
|
|
51
|
+
files,
|
|
52
|
+
message: `${subject ?? ''}\n${body ?? ''}`.trim(),
|
|
53
|
+
refs: refs?.trim() || undefined,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
return commits;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* 커밋 메시지의 한국어 bigram과 티켓 키를 커밋 단위로 모은다. 파일은 그 커밋이 건드린 것이다.
|
|
60
|
+
*
|
|
61
|
+
* 파일 단위로 bigram을 합치지 않는 이유가 있다. 커밋을 많이 탄 파일은 서로 무관한 커밋
|
|
62
|
+
* 수백 개에서 단어를 다 모아 아무 프롬프트에나 걸린다. 커밋 하나를 문서 하나로 두면
|
|
63
|
+
* "이 프롬프트와 비슷한 말로 고친 커밋"을 먼저 찾고 그 커밋의 파일을 내게 된다.
|
|
64
|
+
*
|
|
65
|
+
* co-change와 같은 상한(MAX_FILES_PER_COMMIT)을 넘는 커밋은 뺀다 — 대량 포맷이나 버전 범프
|
|
66
|
+
* 메시지가 모든 파일에 붙으면 아무 파일이나 걸린다. 파일 하나짜리 커밋은 쓴다. 페어는
|
|
67
|
+
* 못 만들지만 "이 말로 이 파일을 고쳤다"는 가장 깨끗한 신호라서다.
|
|
68
|
+
*/
|
|
69
|
+
export function buildCommitTextIndex(root, commits) {
|
|
70
|
+
const out = [];
|
|
71
|
+
const tickets = new Map();
|
|
72
|
+
// git log는 최신부터 낸다
|
|
73
|
+
for (const c of [...commits].reverse()) {
|
|
74
|
+
const files = [...new Set(c.files)];
|
|
75
|
+
if (files.length === 0 || files.length > MAX_FILES_PER_COMMIT)
|
|
76
|
+
continue;
|
|
77
|
+
const text = (c.message ?? '').slice(0, MAX_MESSAGE_CHARS);
|
|
78
|
+
const terms = koreanTerms(text);
|
|
79
|
+
const abs = files.map((f) => resolve(root, f));
|
|
80
|
+
if (terms.length > 0)
|
|
81
|
+
out.push({ sha: c.sha, terms, files: abs });
|
|
82
|
+
for (const k of extractTickets(`${text}\n${c.refs ?? ''}`)) {
|
|
83
|
+
for (const f of abs) {
|
|
84
|
+
const key = `${f}\t${k}`;
|
|
85
|
+
tickets.set(key, (tickets.get(key) ?? 0) + 1);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return {
|
|
90
|
+
commits: out,
|
|
91
|
+
tickets: [...tickets].map(([key, count]) => {
|
|
92
|
+
const tab = key.indexOf('\t');
|
|
93
|
+
return { ticket: key.slice(tab + 1), filePath: key.slice(0, tab), count };
|
|
94
|
+
}),
|
|
95
|
+
};
|
|
96
|
+
}
|
|
19
97
|
/**
|
|
20
98
|
* maxBuffer를 반드시 명시한다. 기본 1MB를 넘으면 ENOBUFS로 출력이 잘린 채
|
|
21
99
|
* 예외가 나는데, 그걸 삼키면 부분 수집이 성공으로 둔갑한다.
|
|
@@ -160,7 +238,9 @@ export function syncCoChange(store, repoRoot, opts = {}) {
|
|
|
160
238
|
return undefined;
|
|
161
239
|
const meta = store.getCoChangeMeta();
|
|
162
240
|
let range = null;
|
|
163
|
-
|
|
241
|
+
// 커밋 색인이 없거나 형식이 바뀐 DB는 증분으로 이어 붙일 기준이 없다. 전량으로 내린다
|
|
242
|
+
const textIndexed = store.getMeta(COMMIT_TEXT_INDEX_KEY) === COMMIT_TEXT_INDEX_VERSION;
|
|
243
|
+
if (mode === 'incremental' && meta && SHA_RE.test(meta.headSha) && textIndexed) {
|
|
164
244
|
if (meta.headSha === headSha) {
|
|
165
245
|
return {
|
|
166
246
|
pairs: store.countCoChangePairs(),
|
|
@@ -183,7 +263,7 @@ export function syncCoChange(store, repoRoot, opts = {}) {
|
|
|
183
263
|
});
|
|
184
264
|
}
|
|
185
265
|
}
|
|
186
|
-
const args = ['log',
|
|
266
|
+
const args = ['log', GIT_LOG_FORMAT, '--name-only', '--no-merges'];
|
|
187
267
|
if (range)
|
|
188
268
|
args.push(range);
|
|
189
269
|
let raw;
|
|
@@ -198,7 +278,9 @@ export function syncCoChange(store, repoRoot, opts = {}) {
|
|
|
198
278
|
});
|
|
199
279
|
return undefined;
|
|
200
280
|
}
|
|
201
|
-
const
|
|
281
|
+
const commits = parseGitLogWithMessages(raw);
|
|
282
|
+
const counts = countPairs(commits);
|
|
283
|
+
const text = buildCommitTextIndex(root, commits);
|
|
202
284
|
// git은 repo 상대경로를 내고 cg_nodes는 절대경로를 쓴다. 경계에서 한 번에
|
|
203
285
|
// 절대화하지 않으면 조인이 조용히 0건이 된다.
|
|
204
286
|
const pairs = [...counts.pairs.entries()].map(([key, count]) => {
|
|
@@ -222,7 +304,10 @@ export function syncCoChange(store, repoRoot, opts = {}) {
|
|
|
222
304
|
defaultMinPairCount: MIN_PAIR_COUNT,
|
|
223
305
|
},
|
|
224
306
|
reset: range === null,
|
|
307
|
+
commitText: text.commits,
|
|
308
|
+
tickets: text.tickets,
|
|
225
309
|
});
|
|
310
|
+
store.setMeta(COMMIT_TEXT_INDEX_KEY, COMMIT_TEXT_INDEX_VERSION);
|
|
226
311
|
const merged = store.getCoChangeMeta();
|
|
227
312
|
return {
|
|
228
313
|
pairs: store.countCoChangePairs(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cochange.js","sourceRoot":"","sources":["../../../src/code-graph/cochange.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cochange.js","sourceRoot":"","sources":["../../../src/code-graph/cochange.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CoChangeQueryOptions } from './cochange.js';
|
|
2
|
-
import type { BuildOptions, BuildResult, BlastRadiusOptions, BlastRadiusResult, DiffRadiusOptions, QueryPattern, QueryResult, CodeGraphStats, CoChangeResult } from './types.js';
|
|
2
|
+
import type { BuildOptions, BuildResult, FreshnessReport, RefreshOptions, SkeletonResult, BlastRadiusOptions, BlastRadiusResult, DiffRadiusOptions, QueryPattern, QueryResult, CodeGraphStats, CoChangeResult } from './types.js';
|
|
3
3
|
import type { EmbeddingProvider } from './embedding-provider.js';
|
|
4
4
|
import type { SummaryProvider } from './summary-provider.js';
|
|
5
5
|
import { type ScoredFile } from './rrf.js';
|
|
@@ -13,14 +13,42 @@ export interface EmbeddingBuildResult {
|
|
|
13
13
|
embeddingsBuilt: number;
|
|
14
14
|
timeTakenMs: number;
|
|
15
15
|
}
|
|
16
|
+
export declare const STALE_MESSAGE = "\uAC31\uC2E0 \uC911\uC774\uB77C \uC774\uC804 \uADF8\uB798\uD504 \uAE30\uC900";
|
|
17
|
+
export declare const REINDEX_PENDING_MESSAGE = "\uB2E4\uC2DC \uD30C\uC2F1\uD560 \uD30C\uC77C\uC774 \uB9CE\uC544 \uBC31\uADF8\uB77C\uC6B4\uB4DC\uB85C \uB118\uAE30\uACE0 \uC774\uC804 \uADF8\uB798\uD504 \uAE30\uC900";
|
|
18
|
+
/**
|
|
19
|
+
* 질의 직전 최신화가 그 자리에서 다시 파싱할 파일 수의 상한. 넘으면 질의를 붙잡지 않고
|
|
20
|
+
* 이전 그래프로 답한다. 락 대기 상한(1.5초)과 같은 시간을 넘기지 않게 잡았다.
|
|
21
|
+
* 파일당 파싱 비용은 gestalt(484개, 1.6초) 약 3.4ms, 모노레포(8118개, 56초) 약 6.9ms라
|
|
22
|
+
* 느린 쪽 기준 200개면 1.4초쯤이다.
|
|
23
|
+
*/
|
|
24
|
+
export declare const MAX_INLINE_PARSE = 200;
|
|
16
25
|
export declare class CodeGraphEngine {
|
|
17
26
|
private storeCache;
|
|
18
27
|
private getDbPath;
|
|
28
|
+
private getLockPath;
|
|
19
29
|
private getStore;
|
|
20
30
|
/**
|
|
21
31
|
* Build or incrementally update the code graph for a repository.
|
|
32
|
+
*
|
|
33
|
+
* incremental은 드리프트 검사로 바뀐 파일만 고른다. stat이 그대로인 파일은 읽지 않는다.
|
|
34
|
+
* 두 모드 모두 디스크에서 사라진 파일의 노드와 엣지를 지운다.
|
|
22
35
|
*/
|
|
23
36
|
build(repoRoot: string, opts?: BuildOptions): BuildResult;
|
|
37
|
+
/**
|
|
38
|
+
* 질의 직전에 그래프를 디스크에 맞춘다. 그래프 DB가 없으면 아무것도 안 한다
|
|
39
|
+
* (처음부터 빌드하는 건 build 액션의 몫이다).
|
|
40
|
+
*
|
|
41
|
+
* 여러 워크트리와 MCP 서버, CLI가 같은 DB를 갱신할 수 있어서 락을 잡고 고친다.
|
|
42
|
+
* 락을 못 잡으면 기다렸다가 그래도 안 되면 이전 그래프로 답하게 stale을 돌려준다.
|
|
43
|
+
*
|
|
44
|
+
* maxInlineParse를 주면 다시 파싱할 파일이 그보다 많을 때 손대지 않고 reindex_pending을
|
|
45
|
+
* 돌려준다. 색인 버전이 다른 옛 DB는 전량이 대상이다. 재색인은 호출한 쪽이 다른 프로세스로 넘긴다.
|
|
46
|
+
*/
|
|
47
|
+
refresh(repoRoot: string, opts?: RefreshOptions): Promise<FreshnessReport>;
|
|
48
|
+
private reindexPending;
|
|
49
|
+
private resolveScope;
|
|
50
|
+
private listScopeFiles;
|
|
51
|
+
private applyPlan;
|
|
24
52
|
/**
|
|
25
53
|
* Compute blast-radius for changed files.
|
|
26
54
|
* Auto-detects changed files from git diff if not provided.
|
|
@@ -48,6 +76,12 @@ export declare class CodeGraphEngine {
|
|
|
48
76
|
* Query the graph with a specific pattern.
|
|
49
77
|
*/
|
|
50
78
|
query(repoRoot: string, pattern: QueryPattern, target: string): QueryResult;
|
|
79
|
+
/**
|
|
80
|
+
* 파일의 시그니처와 줄 번호만 돌려준다. 본문은 뺀다.
|
|
81
|
+
* 플러그인이 skeleton을 지원하면 디스크의 현재 내용에서 뽑고 아니면 store의
|
|
82
|
+
* 노드 이름과 줄 범위로 대신한다. filePath는 repoRoot 안이어야 한다.
|
|
83
|
+
*/
|
|
84
|
+
skeleton(repoRoot: string, filePath: string): SkeletonResult;
|
|
51
85
|
/**
|
|
52
86
|
* Returns statistics about the code graph.
|
|
53
87
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/code-graph/engine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/code-graph/engine.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAG1D,OAAO,KAAK,EAEV,YAAY,EACZ,WAAW,EAEX,eAAe,EAEf,cAAc,EAEd,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EAEjB,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,cAAc,EAEd,cAAc,EAEf,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,MAAM,WAAW,qBAAqB;IACpC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAoB;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;CACrB;AAwDD,eAAO,MAAM,aAAa,iFAAqB,CAAC;AAChD,eAAO,MAAM,uBAAuB,yKACE,CAAC;AAEvC;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAwCpC,qBAAa,eAAe;IAC1B,OAAO,CAAC,UAAU,CAAqC;IAEvD,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,QAAQ;IAQhB;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,YAAiB,GAAG,WAAW;IA6B7D;;;;;;;;;OASG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,eAAe,CAAC;IA4FpF,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,SAAS;IA6HjB;;;OAGG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,kBAAuB,GAAG,iBAAiB;IAyB/E;;;;;OAKG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,iBAAsB,GAAG,iBAAiB;IA+B7E;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,oBAAyB,GAAG,cAAc;IAK3E;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IA2B1B;;OAEG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW;IA6D3E;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,cAAc;IAkD5D;;OAEG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc;IAMvC;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAInC;;;OAGG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IASxC;;;OAGG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IA0BhE;;;OAGG;IACG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,SAAK,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAuCzF;;;OAGG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,SAAK,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA4BnF;;;OAGG;IACG,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,qBAA0B,GAC/B,OAAO,CAAC,oBAAoB,CAAC;IAyEhC;;OAEG;IACH,KAAK,IAAI,IAAI;IAOb,OAAO,CAAC,kBAAkB;CAiB3B;AAGD,eAAO,MAAM,eAAe,iBAAwB,CAAC"}
|