@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.
Files changed (133) hide show
  1. package/CLAUDE.md +6 -2
  2. package/dist/bin/gestalt-hook.d.ts +5 -0
  3. package/dist/bin/gestalt-hook.d.ts.map +1 -0
  4. package/dist/bin/gestalt-hook.js +51 -0
  5. package/dist/bin/gestalt-hook.js.map +1 -0
  6. package/dist/package.json +4 -3
  7. package/dist/plugin/role-agents/_shared/references/ai-tell-quick-rules.md +2 -2
  8. package/dist/plugin/skills/blast-radius/SKILL.md +11 -1
  9. package/dist/plugin/skills/diff-radius/SKILL.md +11 -0
  10. package/dist/plugin/skills/review/SKILL.md +9 -2
  11. package/dist/schemas/gestalt.schema.json +19 -0
  12. package/dist/src/cli/commands/harness-refs.d.ts +10 -0
  13. package/dist/src/cli/commands/harness-refs.d.ts.map +1 -1
  14. package/dist/src/cli/commands/harness-refs.js +40 -0
  15. package/dist/src/cli/commands/harness-refs.js.map +1 -1
  16. package/dist/src/cli/index.d.ts.map +1 -1
  17. package/dist/src/cli/index.js +10 -1
  18. package/dist/src/cli/index.js.map +1 -1
  19. package/dist/src/code-graph/cochange.d.ts +40 -0
  20. package/dist/src/code-graph/cochange.d.ts.map +1 -1
  21. package/dist/src/code-graph/cochange.js +88 -3
  22. package/dist/src/code-graph/cochange.js.map +1 -1
  23. package/dist/src/code-graph/engine.d.ts +35 -1
  24. package/dist/src/code-graph/engine.d.ts.map +1 -1
  25. package/dist/src/code-graph/engine.js +300 -55
  26. package/dist/src/code-graph/engine.js.map +1 -1
  27. package/dist/src/code-graph/freshness.d.ts +39 -0
  28. package/dist/src/code-graph/freshness.d.ts.map +1 -0
  29. package/dist/src/code-graph/freshness.js +93 -0
  30. package/dist/src/code-graph/freshness.js.map +1 -0
  31. package/dist/src/code-graph/hooks/background.d.ts +18 -0
  32. package/dist/src/code-graph/hooks/background.d.ts.map +1 -0
  33. package/dist/src/code-graph/hooks/background.js +55 -0
  34. package/dist/src/code-graph/hooks/background.js.map +1 -0
  35. package/dist/src/code-graph/hooks/pointers.d.ts +66 -0
  36. package/dist/src/code-graph/hooks/pointers.d.ts.map +1 -0
  37. package/dist/src/code-graph/hooks/pointers.js +292 -0
  38. package/dist/src/code-graph/hooks/pointers.js.map +1 -0
  39. package/dist/src/code-graph/hooks/rank.d.ts +36 -0
  40. package/dist/src/code-graph/hooks/rank.d.ts.map +1 -0
  41. package/dist/src/code-graph/hooks/rank.js +212 -0
  42. package/dist/src/code-graph/hooks/rank.js.map +1 -0
  43. package/dist/src/code-graph/hooks/run.d.ts +37 -0
  44. package/dist/src/code-graph/hooks/run.d.ts.map +1 -0
  45. package/dist/src/code-graph/hooks/run.js +324 -0
  46. package/dist/src/code-graph/hooks/run.js.map +1 -0
  47. package/dist/src/code-graph/hooks/settings.d.ts +11 -0
  48. package/dist/src/code-graph/hooks/settings.d.ts.map +1 -0
  49. package/dist/src/code-graph/hooks/settings.js +25 -0
  50. package/dist/src/code-graph/hooks/settings.js.map +1 -0
  51. package/dist/src/code-graph/hooks/state.d.ts +20 -0
  52. package/dist/src/code-graph/hooks/state.d.ts.map +1 -0
  53. package/dist/src/code-graph/hooks/state.js +73 -0
  54. package/dist/src/code-graph/hooks/state.js.map +1 -0
  55. package/dist/src/code-graph/index.d.ts +6 -2
  56. package/dist/src/code-graph/index.d.ts.map +1 -1
  57. package/dist/src/code-graph/index.js +3 -1
  58. package/dist/src/code-graph/index.js.map +1 -1
  59. package/dist/src/code-graph/ko-text.d.ts +39 -0
  60. package/dist/src/code-graph/ko-text.d.ts.map +1 -0
  61. package/dist/src/code-graph/ko-text.js +223 -0
  62. package/dist/src/code-graph/ko-text.js.map +1 -0
  63. package/dist/src/code-graph/lock.d.ts +30 -0
  64. package/dist/src/code-graph/lock.d.ts.map +1 -0
  65. package/dist/src/code-graph/lock.js +140 -0
  66. package/dist/src/code-graph/lock.js.map +1 -0
  67. package/dist/src/code-graph/plugins/typescript-skeleton.d.ts +7 -0
  68. package/dist/src/code-graph/plugins/typescript-skeleton.d.ts.map +1 -0
  69. package/dist/src/code-graph/plugins/typescript-skeleton.js +157 -0
  70. package/dist/src/code-graph/plugins/typescript-skeleton.js.map +1 -0
  71. package/dist/src/code-graph/plugins/typescript.d.ts.map +1 -1
  72. package/dist/src/code-graph/plugins/typescript.js +58 -0
  73. package/dist/src/code-graph/plugins/typescript.js.map +1 -1
  74. package/dist/src/code-graph/storage.d.ts +85 -0
  75. package/dist/src/code-graph/storage.d.ts.map +1 -1
  76. package/dist/src/code-graph/storage.js +318 -3
  77. package/dist/src/code-graph/storage.js.map +1 -1
  78. package/dist/src/code-graph/types.d.ts +66 -0
  79. package/dist/src/code-graph/types.d.ts.map +1 -1
  80. package/dist/src/core/config.d.ts +33 -0
  81. package/dist/src/core/config.d.ts.map +1 -1
  82. package/dist/src/core/config.js +14 -0
  83. package/dist/src/core/config.js.map +1 -1
  84. package/dist/src/core/hooks-env.d.ts +9 -0
  85. package/dist/src/core/hooks-env.d.ts.map +1 -0
  86. package/dist/src/core/hooks-env.js +16 -0
  87. package/dist/src/core/hooks-env.js.map +1 -0
  88. package/dist/src/harness-review/backward-search.d.ts +15 -2
  89. package/dist/src/harness-review/backward-search.d.ts.map +1 -1
  90. package/dist/src/harness-review/backward-search.js +101 -43
  91. package/dist/src/harness-review/backward-search.js.map +1 -1
  92. package/dist/src/harness-review/collect.d.ts +10 -1
  93. package/dist/src/harness-review/collect.d.ts.map +1 -1
  94. package/dist/src/harness-review/collect.js +66 -6
  95. package/dist/src/harness-review/collect.js.map +1 -1
  96. package/dist/src/harness-review/github-code-search.d.ts +32 -1
  97. package/dist/src/harness-review/github-code-search.d.ts.map +1 -1
  98. package/dist/src/harness-review/github-code-search.js +86 -2
  99. package/dist/src/harness-review/github-code-search.js.map +1 -1
  100. package/dist/src/harness-review/hybrid-search.d.ts +35 -0
  101. package/dist/src/harness-review/hybrid-search.d.ts.map +1 -0
  102. package/dist/src/harness-review/hybrid-search.js +63 -0
  103. package/dist/src/harness-review/hybrid-search.js.map +1 -0
  104. package/dist/src/harness-review/related-clones.d.ts +66 -0
  105. package/dist/src/harness-review/related-clones.d.ts.map +1 -0
  106. package/dist/src/harness-review/related-clones.js +309 -0
  107. package/dist/src/harness-review/related-clones.js.map +1 -0
  108. package/dist/src/harness-review/search-backend.d.ts +23 -1
  109. package/dist/src/harness-review/search-backend.d.ts.map +1 -1
  110. package/dist/src/harness-review/search-backend.js +13 -1
  111. package/dist/src/harness-review/search-backend.js.map +1 -1
  112. package/dist/src/humanize/detectors.js +1 -1
  113. package/dist/src/humanize/detectors.js.map +1 -1
  114. package/dist/src/mcp/schemas.d.ts +9 -3
  115. package/dist/src/mcp/schemas.d.ts.map +1 -1
  116. package/dist/src/mcp/schemas.js +19 -2
  117. package/dist/src/mcp/schemas.js.map +1 -1
  118. package/dist/src/mcp/server.d.ts.map +1 -1
  119. package/dist/src/mcp/server.js +21 -3
  120. package/dist/src/mcp/server.js.map +1 -1
  121. package/dist/src/mcp/tools/code-graph-passthrough.d.ts +6 -1
  122. package/dist/src/mcp/tools/code-graph-passthrough.d.ts.map +1 -1
  123. package/dist/src/mcp/tools/code-graph-passthrough.js +95 -6
  124. package/dist/src/mcp/tools/code-graph-passthrough.js.map +1 -1
  125. package/package.json +4 -3
  126. package/plugin/.codex-plugin/plugin.json +1 -1
  127. package/plugin/.mcp.json +1 -1
  128. package/plugin/mcp.json +1 -1
  129. package/plugin/role-agents/_shared/references/ai-tell-quick-rules.md +2 -2
  130. package/plugin/skills/blast-radius/SKILL.md +11 -1
  131. package/plugin/skills/diff-radius/SKILL.md +11 -0
  132. package/plugin/skills/review/SKILL.md +9 -2
  133. package/schemas/gestalt.schema.json +19 -0
@@ -2,6 +2,7 @@ import { createRequire } from 'node:module';
2
2
  import { statSync, existsSync, mkdirSync } from 'node:fs';
3
3
  import { dirname } from 'node:path';
4
4
  import { SQLITE_BUSY_TIMEOUT_MS } from '../core/constants.js';
5
+ import { koreanTerms } from './ko-text.js';
5
6
  const _require = createRequire(import.meta.url);
6
7
  function loadSqlite() {
7
8
  const mod = _require('better-sqlite3');
@@ -22,6 +23,7 @@ function toNode(row) {
22
23
  isTest: row.is_test === 1,
23
24
  fileHash: row.file_hash ?? undefined,
24
25
  updatedAt: row.updated_at,
26
+ doc: row.doc ?? undefined,
25
27
  };
26
28
  }
27
29
  function toEmbedding(row) {
@@ -62,6 +64,10 @@ function toEdge(row) {
62
64
  * 그래서 `capped`로 따로 알린다 — 출력 `limit`에 잘린 것과 사유가 다르다.
63
65
  */
64
66
  export const MAX_MATCHED_ROWS = 10_000;
67
+ const TEXT_DOCS_KEY = 'text_index_docs';
68
+ const TEXT_COMMITS_KEY = 'text_index_commits';
69
+ const TEXT_AVG_TERMS_KEY = 'text_index_avg_commit_terms';
70
+ const TEXT_MAX_SEQ_KEY = 'text_index_max_seq';
65
71
  /**
66
72
  * 질의문을 상수로 뽑아둔다. `EXPLAIN QUERY PLAN` 테스트가 이 문자열을 그대로
67
73
  * 설명해야 실제로 도는 질의의 계획을 고정하는 것이 된다. 테스트가 SQL을
@@ -187,7 +193,102 @@ export class CodeGraphStore {
187
193
  min_pair_count INTEGER NOT NULL,
188
194
  built_at REAL NOT NULL
189
195
  );
196
+
197
+ -- 질의 시점 드리프트 검사용. size와 mtime이 그대로면 파일을 읽지 않는다.
198
+ -- checked_at은 mtime이 기록 시각에 바짝 붙은 행을 가려내는 데 쓴다.
199
+ -- 같은 mtime 해상도 안에서 다시 쓰인 파일은 stat만으로 구분이 안 된다.
200
+ CREATE TABLE IF NOT EXISTS cg_file_stat (
201
+ file_path TEXT PRIMARY KEY,
202
+ size INTEGER NOT NULL,
203
+ mtime_ms REAL NOT NULL,
204
+ file_hash TEXT NOT NULL,
205
+ checked_at REAL NOT NULL
206
+ );
207
+
208
+ CREATE TABLE IF NOT EXISTS cg_meta (
209
+ key TEXT PRIMARY KEY,
210
+ value TEXT NOT NULL
211
+ );
212
+
213
+ -- 한국어 색인. 주석은 노드 단위, 커밋 메시지는 커밋 단위로 bigram을 둔다.
214
+ -- 주석 쪽 노드 키는 cg_nodes의 rowid다. 노드 id는 절대경로가 든 긴 문자열이라 행마다
215
+ -- 들고 있으면 색인이 그래프 본체보다 커진다. 노드를 다시 쓰면 rowid가 바뀌므로
216
+ -- upsertNode와 deleteByFile이 그 노드의 단어를 먼저 지운다.
217
+ -- 커밋 쪽은 이력이라 지울 일이 없다. 둘 다 PK가 term으로 시작해서 훅의
218
+ -- "term IN (...)" 조회가 그 인덱스를 탄다.
219
+ CREATE TABLE IF NOT EXISTS cg_doc_terms (
220
+ term TEXT NOT NULL,
221
+ node_rowid INTEGER NOT NULL,
222
+ PRIMARY KEY (term, node_rowid)
223
+ ) WITHOUT ROWID;
224
+ CREATE INDEX IF NOT EXISTS idx_cg_doc_terms_node ON cg_doc_terms(node_rowid);
225
+
226
+ -- seq는 넣은 순서(오래된 커밋이 작다), terms는 그 커밋 메시지의 bigram 수
227
+ CREATE TABLE IF NOT EXISTS cg_text_commits (
228
+ sha TEXT PRIMARY KEY,
229
+ seq INTEGER NOT NULL,
230
+ terms INTEGER NOT NULL
231
+ ) WITHOUT ROWID;
232
+ CREATE TABLE IF NOT EXISTS cg_commit_terms (
233
+ term TEXT NOT NULL,
234
+ sha TEXT NOT NULL,
235
+ PRIMARY KEY (term, sha)
236
+ ) WITHOUT ROWID;
237
+ CREATE TABLE IF NOT EXISTS cg_commit_files (
238
+ sha TEXT NOT NULL,
239
+ file_path TEXT NOT NULL,
240
+ PRIMARY KEY (sha, file_path)
241
+ ) WITHOUT ROWID;
242
+
243
+ CREATE TABLE IF NOT EXISTS cg_ticket_files (
244
+ ticket TEXT NOT NULL,
245
+ file_path TEXT NOT NULL,
246
+ count INTEGER NOT NULL,
247
+ PRIMARY KEY (ticket, file_path)
248
+ );
190
249
  `);
250
+ // doc 컬럼은 나중에 생겼다. 예전 DB에는 없으니 붙인다
251
+ const cols = this.db.prepare(`PRAGMA table_info(cg_nodes)`).all();
252
+ if (!cols.some((c) => c.name === 'doc')) {
253
+ this.db.exec(`ALTER TABLE cg_nodes ADD COLUMN doc TEXT`);
254
+ }
255
+ }
256
+ getAllFileStats() {
257
+ const rows = this.db.prepare(`SELECT * FROM cg_file_stat`).all();
258
+ return new Map(rows.map((r) => [
259
+ r.file_path,
260
+ {
261
+ filePath: r.file_path,
262
+ size: r.size,
263
+ mtimeMs: r.mtime_ms,
264
+ fileHash: r.file_hash,
265
+ checkedAt: r.checked_at,
266
+ },
267
+ ]));
268
+ }
269
+ upsertFileStat(row) {
270
+ this.db
271
+ .prepare(`INSERT OR REPLACE INTO cg_file_stat (file_path, size, mtime_ms, file_hash, checked_at)
272
+ VALUES (?, ?, ?, ?, ?)`)
273
+ .run(row.filePath, row.size, row.mtimeMs, row.fileHash, row.checkedAt);
274
+ }
275
+ deleteFileStat(filePath) {
276
+ this.db.prepare(`DELETE FROM cg_file_stat WHERE file_path = ?`).run(filePath);
277
+ }
278
+ /** 노드가 하나라도 있는 파일 경로. stat 행이 없던 옛 DB에서도 삭제를 잡으려면 이쪽도 봐야 한다 */
279
+ getGraphFilePaths() {
280
+ const rows = this.db.prepare(`SELECT DISTINCT file_path FROM cg_nodes`).all();
281
+ return rows.map((r) => r.file_path);
282
+ }
283
+ getMeta(key) {
284
+ const row = this.db.prepare(`SELECT value FROM cg_meta WHERE key = ?`).get(key);
285
+ return row?.value ?? null;
286
+ }
287
+ setMeta(key, value) {
288
+ this.db.prepare(`INSERT OR REPLACE INTO cg_meta (key, value) VALUES (?, ?)`).run(key, value);
289
+ }
290
+ transaction(fn) {
291
+ this.db.transaction(fn)();
191
292
  }
192
293
  getNodesByFile(filePath) {
193
294
  const stmt = this.db.prepare(`
@@ -233,6 +334,166 @@ export class CodeGraphStore {
233
334
  const rows = stmt.all(filePath, filePath);
234
335
  return rows.map((r) => r.file_path);
235
336
  }
337
+ /** getReferencingFiles와 같은 집합에 테스트 여부를 붙여 돌려준다 */
338
+ getReferencingFilesDetailed(filePath) {
339
+ const rows = this.db
340
+ .prepare(`
341
+ SELECT src.file_path AS file_path, MAX(src.is_test) AS is_test
342
+ FROM cg_edges e
343
+ JOIN cg_nodes tgt ON tgt.id = e.target_id
344
+ JOIN cg_nodes src ON src.id = e.source_id
345
+ WHERE tgt.file_path = ? AND src.file_path != ?
346
+ GROUP BY src.file_path
347
+ `)
348
+ .all(filePath, filePath);
349
+ return rows.map((r) => ({ filePath: r.file_path, isTest: r.is_test === 1 }));
350
+ }
351
+ /**
352
+ * 파일별로 그 파일을 import하는 파일 수. files를 주면 그 파일만, 생략하면 많은 순 상위 limit개.
353
+ */
354
+ getImporterCounts(opts = {}) {
355
+ const params = [];
356
+ let where = `e.kind = 'IMPORTS_FROM' AND e.target_id LIKE 'file:%'`;
357
+ if (opts.files) {
358
+ if (opts.files.length === 0)
359
+ return new Map();
360
+ where += ` AND e.target_id IN (${opts.files.map(() => '?').join(',')})`;
361
+ params.push(...opts.files.map((f) => `file:${f}`));
362
+ }
363
+ let sql = `
364
+ SELECT substr(e.target_id, 6) AS file_path, COUNT(DISTINCT e.source_id) AS cnt
365
+ FROM cg_edges e WHERE ${where}
366
+ GROUP BY e.target_id ORDER BY cnt DESC`;
367
+ if (opts.limit !== undefined) {
368
+ sql += ` LIMIT ?`;
369
+ params.push(opts.limit);
370
+ }
371
+ const rows = this.db.prepare(sql).all(...params);
372
+ return new Map(rows.map((r) => [r.file_path, r.cnt]));
373
+ }
374
+ /**
375
+ * 이름이나 repoRoot 기준 상대 경로에 토큰 하나라도 들어간 노드를 고른다. 대소문자는 안 가린다.
376
+ * 상대 경로로 맞추는 건 절대 경로에 섞인 워크트리 이름 같은 조각이 걸리지 않게 하려는 것이다.
377
+ */
378
+ searchNodesByTokens(repoRoot, tokens, limit) {
379
+ if (tokens.length === 0)
380
+ return [];
381
+ const rel = `lower(substr(file_path, ${repoRoot.length + 2}))`;
382
+ const clauses = [];
383
+ const params = [];
384
+ for (const t of tokens) {
385
+ const pattern = `%${t.replace(/[\\%_]/g, (c) => `\\${c}`)}%`;
386
+ clauses.push(`lower(name) LIKE ? ESCAPE '\\'`, `${rel} LIKE ? ESCAPE '\\'`);
387
+ params.push(pattern, pattern);
388
+ }
389
+ const rows = this.db
390
+ .prepare(`SELECT * FROM cg_nodes WHERE ${clauses.join(' OR ')} LIMIT ?`)
391
+ .all(...params, limit);
392
+ return rows.map(toNode);
393
+ }
394
+ getNodesByIds(ids) {
395
+ if (ids.length === 0)
396
+ return [];
397
+ const out = [];
398
+ // SQLite 바인딩 변수 상한(기본 32766)보다 한참 작게 끊는다
399
+ for (let i = 0; i < ids.length; i += 500) {
400
+ const chunk = ids.slice(i, i + 500);
401
+ const rows = this.db
402
+ .prepare(`SELECT * FROM cg_nodes WHERE id IN (${chunk.map(() => '?').join(',')})`)
403
+ .all(...chunk);
404
+ out.push(...rows.map(toNode));
405
+ }
406
+ return out;
407
+ }
408
+ /** 주석 색인에서 terms 중 하나라도 걸린 행. limit은 흔한 bigram이 수만 행을 끌고 오지 않게 막는다 */
409
+ getDocTermHits(terms, limit) {
410
+ if (terms.length === 0)
411
+ return [];
412
+ const rows = this.db
413
+ .prepare(`SELECT t.term, n.id AS node_id FROM cg_doc_terms t JOIN cg_nodes n ON n.rowid = t.node_rowid
414
+ WHERE t.term IN (${terms.map(() => '?').join(',')}) LIMIT ?`)
415
+ .all(...terms, limit);
416
+ return rows.map((r) => ({ term: r.term, nodeId: r.node_id }));
417
+ }
418
+ /** 커밋 색인에서 terms 중 하나라도 걸린 행 */
419
+ getCommitTermHits(terms, limit) {
420
+ if (terms.length === 0)
421
+ return [];
422
+ return this.db
423
+ .prepare(`SELECT term, sha FROM cg_commit_terms
424
+ WHERE term IN (${terms.map(() => '?').join(',')}) LIMIT ?`)
425
+ .all(...terms, limit);
426
+ }
427
+ /** 커밋마다 순번, bigram 수, 건드린 파일 */
428
+ getTextCommits(shas) {
429
+ if (shas.length === 0)
430
+ return [];
431
+ const ph = shas.map(() => '?').join(',');
432
+ const commits = this.db
433
+ .prepare(`SELECT sha, seq, terms FROM cg_text_commits WHERE sha IN (${ph})`)
434
+ .all(...shas);
435
+ const files = this.db
436
+ .prepare(`SELECT sha, file_path FROM cg_commit_files WHERE sha IN (${ph})`)
437
+ .all(...shas);
438
+ const bySha = new Map();
439
+ for (const f of files) {
440
+ const list = bySha.get(f.sha) ?? [];
441
+ list.push(f.file_path);
442
+ bySha.set(f.sha, list);
443
+ }
444
+ return commits.map((c) => ({ ...c, files: bySha.get(c.sha) ?? [] }));
445
+ }
446
+ /**
447
+ * term마다 df(주석은 노드 수, 커밋은 커밋 수)와 전체 문서 수, 커밋 bigram 수 평균, 최신 커밋 순번.
448
+ * 전체 값은 매 프롬프트마다 세지 않고 색인을 쓸 때 cg_meta에 적어둔 값을 읽는다
449
+ */
450
+ getTextTermStats(terms) {
451
+ const num = (key, fallback) => Number(this.getMeta(key) ?? fallback) || fallback;
452
+ const stats = {
453
+ docDf: new Map(),
454
+ commitDf: new Map(),
455
+ docs: num(TEXT_DOCS_KEY, 0),
456
+ commits: num(TEXT_COMMITS_KEY, 0),
457
+ avgCommitTerms: num(TEXT_AVG_TERMS_KEY, 1),
458
+ maxSeq: num(TEXT_MAX_SEQ_KEY, 0),
459
+ };
460
+ if (terms.length === 0)
461
+ return stats;
462
+ const ph = terms.map(() => '?').join(',');
463
+ const doc = this.db
464
+ .prepare(`SELECT term, COUNT(*) AS cnt FROM cg_doc_terms WHERE term IN (${ph}) GROUP BY term`)
465
+ .all(...terms);
466
+ const commit = this.db
467
+ .prepare(`SELECT term, COUNT(*) AS cnt FROM cg_commit_terms WHERE term IN (${ph}) GROUP BY term`)
468
+ .all(...terms);
469
+ for (const r of doc)
470
+ stats.docDf.set(r.term, r.cnt);
471
+ for (const r of commit)
472
+ stats.commitDf.set(r.term, r.cnt);
473
+ return stats;
474
+ }
475
+ /** 한국어 색인의 전체 값을 다시 세서 cg_meta에 적는다. 색인을 쓴 쪽이 끝에 한 번 부른다 */
476
+ refreshTextIndexStats() {
477
+ const docs = this.db
478
+ .prepare(`SELECT COUNT(DISTINCT node_rowid) AS cnt FROM cg_doc_terms`)
479
+ .get();
480
+ const commits = this.db
481
+ .prepare(`SELECT COUNT(*) AS cnt, AVG(terms) AS avg, MAX(seq) AS max FROM cg_text_commits`)
482
+ .get();
483
+ this.setMeta(TEXT_DOCS_KEY, String(docs.cnt));
484
+ this.setMeta(TEXT_COMMITS_KEY, String(commits.cnt));
485
+ this.setMeta(TEXT_AVG_TERMS_KEY, String(commits.avg ?? 1));
486
+ this.setMeta(TEXT_MAX_SEQ_KEY, String(commits.max ?? 0));
487
+ }
488
+ getTicketFiles(tickets) {
489
+ if (tickets.length === 0)
490
+ return [];
491
+ const rows = this.db
492
+ .prepare(`SELECT ticket, file_path, count FROM cg_ticket_files
493
+ WHERE ticket IN (${tickets.map(() => '?').join(',')}) ORDER BY count DESC LIMIT 200`)
494
+ .all(...tickets);
495
+ return rows.map((r) => ({ ticket: r.ticket, filePath: r.file_path, count: r.count }));
496
+ }
236
497
  getAllNodes() {
237
498
  const stmt = this.db.prepare(`
238
499
  SELECT * FROM cg_nodes
@@ -248,12 +509,24 @@ export class CodeGraphStore {
248
509
  return rows.map(toEdge);
249
510
  }
250
511
  upsertNode(node) {
512
+ // REPLACE는 행을 지우고 새 rowid로 다시 넣는다. 옛 rowid에 걸린 주석 단어를 먼저 지운다
513
+ this.db
514
+ .prepare(`DELETE FROM cg_doc_terms WHERE node_rowid = (SELECT rowid FROM cg_nodes WHERE id = ?)`)
515
+ .run(node.id);
251
516
  const stmt = this.db.prepare(`
252
517
  INSERT OR REPLACE INTO cg_nodes
253
- (id, kind, name, file_path, line_start, line_end, is_test, file_hash, updated_at)
254
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
518
+ (id, kind, name, file_path, line_start, line_end, is_test, file_hash, updated_at, doc)
519
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
255
520
  `);
256
- stmt.run(node.id, node.kind, node.name, node.filePath, node.lineStart ?? null, node.lineEnd ?? null, node.isTest ? 1 : 0, node.fileHash ?? null, node.updatedAt);
521
+ const info = stmt.run(node.id, node.kind, node.name, node.filePath, node.lineStart ?? null, node.lineEnd ?? null, node.isTest ? 1 : 0, node.fileHash ?? null, node.updatedAt, node.doc ?? null);
522
+ const rowid = info.lastInsertRowid;
523
+ if (node.doc) {
524
+ const term = this.db.prepare(`
525
+ INSERT OR IGNORE INTO cg_doc_terms (term, node_rowid) VALUES (?, ?)
526
+ `);
527
+ for (const t of koreanTerms(node.doc))
528
+ term.run(t, rowid);
529
+ }
257
530
  }
258
531
  upsertEdge(edge) {
259
532
  const deleteStmt = this.db.prepare(`
@@ -275,11 +548,17 @@ export class CodeGraphStore {
275
548
  `);
276
549
  const deleteNodeStmt = this.db.prepare(`
277
550
  DELETE FROM cg_nodes WHERE file_path = ?
551
+ `);
552
+ // 커밋 색인은 이력이라 파일을 다시 파싱해도 그대로 둔다. 주석 색인만 노드와 함께 지운다
553
+ const deleteDocTerms = this.db.prepare(`
554
+ DELETE FROM cg_doc_terms
555
+ WHERE node_rowid IN (SELECT rowid FROM cg_nodes WHERE file_path = ?)
278
556
  `);
279
557
  const run = this.db.transaction(() => {
280
558
  for (const { id } of nodeIds) {
281
559
  deleteEdgesForNode.run(id, id);
282
560
  }
561
+ deleteDocTerms.run(filePath);
283
562
  deleteNodeStmt.run(filePath);
284
563
  });
285
564
  run();
@@ -370,13 +649,49 @@ export class CodeGraphStore {
370
649
  max_files_per_commit = excluded.max_files_per_commit,
371
650
  min_pair_count = excluded.min_pair_count,
372
651
  built_at = excluded.built_at
652
+ `);
653
+ const insertCommit = this.db.prepare(`
654
+ INSERT OR IGNORE INTO cg_text_commits (sha, seq, terms) VALUES (?, ?, ?)
655
+ `);
656
+ const insertTerm = this.db.prepare(`
657
+ INSERT OR IGNORE INTO cg_commit_terms (term, sha) VALUES (?, ?)
658
+ `);
659
+ const insertFile = this.db.prepare(`
660
+ INSERT OR IGNORE INTO cg_commit_files (sha, file_path) VALUES (?, ?)
661
+ `);
662
+ const upsertTicket = this.db.prepare(`
663
+ INSERT INTO cg_ticket_files (ticket, file_path, count) VALUES (?, ?, ?)
664
+ ON CONFLICT(ticket, file_path) DO UPDATE SET count = count + excluded.count
373
665
  `);
374
666
  const run = this.db.transaction(() => {
375
667
  if (input.reset) {
376
668
  deletePairs.run();
377
669
  deleteSolos.run();
378
670
  deleteMeta.run();
671
+ if (input.commitText) {
672
+ this.db.exec(`DELETE FROM cg_text_commits; DELETE FROM cg_commit_terms; DELETE FROM cg_commit_files;`);
673
+ }
674
+ if (input.tickets)
675
+ this.db.exec(`DELETE FROM cg_ticket_files`);
676
+ }
677
+ if (input.commitText) {
678
+ const max = this.db.prepare(`SELECT MAX(seq) AS m FROM cg_text_commits`).get();
679
+ let seq = max.m ?? 0;
680
+ // PK 순서로 넣으면 B-tree 끝에 이어 붙어서 페이지를 덜 쪼갠다
681
+ const rows = [];
682
+ for (const c of input.commitText) {
683
+ insertCommit.run(c.sha, ++seq, c.terms.length);
684
+ for (const f of c.files)
685
+ insertFile.run(c.sha, f);
686
+ for (const t of c.terms)
687
+ rows.push([t, c.sha]);
688
+ }
689
+ rows.sort((x, y) => (x[0] < y[0] ? -1 : x[0] > y[0] ? 1 : x[1] < y[1] ? -1 : 1));
690
+ for (const [t, sha] of rows)
691
+ insertTerm.run(t, sha);
379
692
  }
693
+ for (const t of input.tickets ?? [])
694
+ upsertTicket.run(t.ticket, t.filePath, t.count);
380
695
  for (const pair of input.pairs) {
381
696
  upsertPair.run(pair.fileA, pair.fileB, pair.count, now);
382
697
  }
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/code-graph/storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAI9D,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAkBhD,SAAS,UAAU;IACjB,MAAM,GAAG,GAAG,QAAQ,CAAC,gBAAgB,CAAwD,CAAC;IAC9F,IAAI,OAAO,GAAG,KAAK,UAAU;QAAE,OAAO,GAAG,CAAC;IAC1C,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,UAAU;QAAE,OAAO,GAAG,CAAC,OAAO,CAAC;IAC1D,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;AAC1E,CAAC;AAuBD,SAAS,MAAM,CAAC,GAAe;IAC7B,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,GAAG,CAAC,IAA6B;QACvC,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,QAAQ,EAAE,GAAG,CAAC,SAAS;QACvB,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS;QACtC,OAAO,EAAE,GAAG,CAAC,QAAQ,IAAI,SAAS;QAClC,MAAM,EAAE,GAAG,CAAC,OAAO,KAAK,CAAC;QACzB,QAAQ,EAAE,GAAG,CAAC,SAAS,IAAI,SAAS;QACpC,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAC;AACJ,CAAC;AAUD,SAAS,WAAW,CAAC,GAAoB;IACvC,OAAO;QACL,MAAM,EAAE,GAAG,CAAC,OAAO;QACnB,QAAQ,EAAE,GAAG,CAAC,SAAS;QACvB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,OAAO,EAAE,GAAG,CAAC,QAAQ;QACrB,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,MAAM,CAAC,GAAe;IAC7B,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,GAAG,CAAC,IAA6B;QACvC,QAAQ,EAAE,GAAG,CAAC,SAAS;QACvB,QAAQ,EAAE,GAAG,CAAC,SAAS;QACvB,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,SAAS;QAC3B,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAC;AACJ,CAAC;AA0BD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEvC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;cAYzB,cAAc,CAAC,WAAW,EAAE,YAAY,CAAC;;KAElD,CAAC;AAEN,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;cASrB,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC;;KAE3C,CAAC;AAwCN,SAAS,cAAc,CAAC,QAA2B,EAAE,SAA4B;IAC/E,OAAO;WACE,QAAQ,YAAY,SAAS,4CAA4C,QAAQ,KAAK,SAAS;WAC/F,QAAQ,wCAAwC,QAAQ;WACxD,SAAS,wCAAwC,SAAS;;MAE/D,CAAC;AACP,CAAC;AAED,MAAM,OAAO,cAAc;IACjB,EAAE,CAAW;IAErB,YAAY,MAAc;QACxB,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,CAAC;QACD,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,kBAAkB,sBAAsB,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;QACpC,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAmEZ,CAAC,CAAC;IACL,CAAC;IAED,cAAc,CAAC,QAAgB;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAE5B,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAiB,CAAC;QAChD,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,WAAW,CAAC,EAAU;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAE5B,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAA2B,CAAC;QACnD,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAClC,CAAC;IAED,gBAAgB,CAAC,QAAgB;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAE5B,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAiB,CAAC;QAChD,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,gBAAgB,CAAC,QAAgB;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAE5B,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAiB,CAAC;QAChD,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACH,mBAAmB,CAAC,QAAgB;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;KAM5B,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAA4B,CAAC;QACrE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED,WAAW;QACT,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAE5B,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAkB,CAAC;QACxC,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,WAAW;QACT,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAE5B,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAkB,CAAC;QACxC,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,UAAU,CAAC,IAAmB;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;KAI5B,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CACN,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,SAAS,IAAI,IAAI,EACtB,IAAI,CAAC,OAAO,IAAI,IAAI,EACpB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACnB,IAAI,CAAC,QAAQ,IAAI,IAAI,EACrB,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,IAAmB;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAElC,CAAC,CAAC;QACH,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAExD,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;KAGlC,CAAC,CAAC;QACH,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1F,CAAC;IAED,YAAY,CAAC,QAAgB;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE;aACpB,OAAO,CAAC,6CAA6C,CAAC;aACtD,GAAG,CAAC,QAAQ,CAAqB,CAAC;QAErC,MAAM,kBAAkB,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAE1C,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAEtC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YACnC,KAAK,MAAM,EAAE,EAAE,EAAE,IAAI,OAAO,EAAE,CAAC;gBAC7B,kBAAkB,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACjC,CAAC;YACD,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,GAAG,EAAE,CAAC;IACR,CAAC;IAED,WAAW,CAAC,QAAgB;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAE5B,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAA6C,CAAC;QAC3E,OAAO,GAAG,EAAE,SAAS,IAAI,IAAI,CAAC;IAChC,CAAC;IAED,QAAQ,CAAC,MAAc;QACrB,MAAM,UAAU,GACd,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,uDAAuD,CAAC,CAAC,GAAG,EAG7E,CAAC,GAAG,CAAC;QAEN,MAAM,UAAU,GACd,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC,GAAG,EAC5D,CAAC,GAAG,CAAC;QAEN,MAAM,UAAU,GACd,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC,GAAG,EAC5D,CAAC,GAAG,CAAC;QAEN,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC,GAAG,EAEvF,CAAC;QACF,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,IAAI,IAAI,CAAC;QAE9C,IAAI,WAAmB,CAAC;QACxB,IAAI,CAAC;YACH,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,WAAW,GAAG,CAAC,CAAC;QAClB,CAAC;QAED,OAAO;YACL,UAAU;YACV,UAAU;YACV,UAAU;YACV,WAAW;YACX,WAAW;SACZ,CAAC;IACJ,CAAC;IAED,eAAe,CAAC,SAA4B;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;KAI5B,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CACN,SAAS,CAAC,MAAM,EAChB,SAAS,CAAC,QAAQ,EAClB,SAAS,CAAC,SAAS,EACnB,SAAS,CAAC,OAAO,EACjB,SAAS,CAAC,SAAS,CACpB,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,MAAc;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,iDAAiD,CAAC,CAAC;QAChF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAgC,CAAC;QAC5D,OAAO,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvC,CAAC;IAED,gBAAgB;QACd,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;QAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAuB,CAAC;QAC7C,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC/B,CAAC;IAED,eAAe,CAAC,MAAc;QAC5B,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/E,CAAC;IAED,sBAAsB,CAAC,QAAgB;QACrC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,iDAAiD,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnF,CAAC;IAED,kEAAkE;IAClE,EAAE;IACF,qDAAqD;IACrD,kDAAkD;IAClD,0CAA0C;IAC1C,oBAAoB;IAEpB,aAAa,CAAC,KAAyB;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;QAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;QACpE,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;QAEnE,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;KAMlC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;KAIlC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;KAWlC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YACnC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAChB,WAAW,CAAC,GAAG,EAAE,CAAC;gBAClB,WAAW,CAAC,GAAG,EAAE,CAAC;gBAClB,UAAU,CAAC,GAAG,EAAE,CAAC;YACnB,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC/B,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC1D,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC/B,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5C,CAAC;YACD,UAAU,CAAC,GAAG,CACZ,KAAK,CAAC,IAAI,CAAC,OAAO,EAClB,KAAK,CAAC,IAAI,CAAC,WAAW,EACtB,KAAK,CAAC,IAAI,CAAC,cAAc,EACzB,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAC5B,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAC9B,GAAG,CACJ,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,GAAG,EAAE,CAAC;IACR,CAAC;IAED,eAAe;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC,GAAG,EAEjE,CAAC;QACd,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,OAAO;YACL,OAAO,EAAE,GAAG,CAAC,QAAQ;YACrB,WAAW,EAAE,GAAG,CAAC,YAAY;YAC7B,cAAc,EAAE,GAAG,CAAC,eAAe;YACnC,iBAAiB,EAAE,GAAG,CAAC,oBAAoB;YAC3C,mBAAmB,EAAE,GAAG,CAAC,cAAc;YACvC,OAAO,EAAE,GAAG,CAAC,QAAQ;SACtB,CAAC;IACJ,CAAC;IAED,kBAAkB;QAChB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,GAAG,EAAqB,CAAC;QAChG,OAAO,GAAG,CAAC,GAAG,CAAC;IACjB,CAAC;IAED,eAAe,CAAC,QAAgB;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CAAC,6DAA6D,CAAC;aACtE,GAAG,CAAC,QAAQ,CAAuC,CAAC;QACvD,OAAO,GAAG,EAAE,UAAU,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,oBAAoB,CAClB,QAAgB,EAChB,YAAoB,EACpB,aAAqB,EACrB,QAAgB,EAChB,UAAkB,gBAAgB;QAElC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CAAC,uBAAuB,CAAC;YACjC,qCAAqC;aACpC,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,GAAG,CAAC,EAAE,CAIrF,CAAC;QACJ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;QACrC,OAAO;YACL,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACzD,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,SAAS,EAAE,CAAC,CAAC,UAAU;gBACvB,SAAS,EAAE,CAAC,CAAC,UAAU;aACxB,CAAC,CAAC;YACH,MAAM;SACP,CAAC;IACJ,CAAC;IAED,gDAAgD;IAChD,gBAAgB,CACd,YAAoB,EACpB,aAAqB,EACrB,UAAkB,gBAAgB;QAElC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CAAC,mBAAmB,CAAC;aAC5B,GAAG,CAAC,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,GAAG,CAAC,EAAE,CAM3D,CAAC;QACJ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;QACrC,OAAO;YACL,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACzD,KAAK,EAAE,CAAC,CAAC,MAAM;gBACf,KAAK,EAAE,CAAC,CAAC,MAAM;gBACf,SAAS,EAAE,CAAC,CAAC,UAAU;gBACvB,KAAK,EAAE,CAAC,CAAC,MAAM;gBACf,KAAK,EAAE,CAAC,CAAC,MAAM;aAChB,CAAC,CAAC;YACH,MAAM;SACP,CAAC;IACJ,CAAC;IAED,KAAK;QACH,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;CACF"}
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/code-graph/storage.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,11 @@ export interface CodeGraphNode {
21
21
  isTest: boolean;
22
22
  fileHash?: string;
23
23
  updatedAt: number;
24
+ /**
25
+ * 선언 앞 주석(파일 노드는 파일 머리 주석). 한글이 든 것만 길이 상한까지 담는다.
26
+ * 한국어 프롬프트를 코드 위치에 잇는 색인의 원천이다
27
+ */
28
+ doc?: string;
24
29
  }
25
30
  export interface CodeGraphEdge {
26
31
  id?: number;
@@ -186,6 +191,25 @@ export interface AnalyzerPlugin {
186
191
  language: string;
187
192
  extensions: string[];
188
193
  parse(filePath: string, content: string): ParseResult;
194
+ /** 본문을 뺀 시그니처 목록. 없으면 store의 노드 이름과 줄 범위로 대신한다 */
195
+ skeleton?(filePath: string, content: string): SkeletonEntry[];
196
+ }
197
+ export interface SkeletonEntry {
198
+ lineStart: number;
199
+ lineEnd: number;
200
+ /** 0이 최상위. 클래스 멤버는 1 */
201
+ depth: number;
202
+ signature: string;
203
+ }
204
+ export interface SkeletonResult {
205
+ filePath: string;
206
+ /** signatures: 플러그인이 시그니처를 뽑았다. graph_nodes: store의 노드 이름만 돌려준다 */
207
+ source: 'signatures' | 'graph_nodes';
208
+ entries: SkeletonEntry[];
209
+ originalChars: number;
210
+ skeletonChars: number;
211
+ /** 첫 줄이 줄인 크기다. 그대로 응답 본문으로 쓴다 */
212
+ text: string;
189
213
  }
190
214
  export type QueryPattern = 'callers_of' | 'callees_of' | 'tests_for' | 'imports_of';
191
215
  export interface QueryResult {
@@ -205,6 +229,48 @@ export interface BuildOptions {
205
229
  exclude?: string[];
206
230
  mode?: BuildMode;
207
231
  }
232
+ export interface RefreshOptions {
233
+ /** 락을 기다리는 최대 시간. 기본 1500ms */
234
+ lockTimeoutMs?: number;
235
+ /** 그 자리에서 다시 파싱할 파일 수 상한. 넘으면 reindex_pending으로 끝낸다. 기본은 상한 없음 */
236
+ maxInlineParse?: number;
237
+ }
238
+ export interface FreshnessCounts {
239
+ added: number;
240
+ modified: number;
241
+ removed: number;
242
+ touched: number;
243
+ }
244
+ /**
245
+ * 질의 직전 최신화 결과. 질의 응답에 그대로 실린다.
246
+ * - fresh: 바뀐 게 없었다
247
+ * - refreshed: 바뀐 걸 반영하고 답했다
248
+ * - stale: 다른 프로세스가 갱신 중이거나 다시 파싱할 게 많아 이전 그래프로 답했다
249
+ * - skipped: 그래프 DB가 없거나 최신화를 껐다
250
+ */
251
+ export type FreshnessReport = {
252
+ status: 'fresh';
253
+ checkedFiles: number;
254
+ durationMs: number;
255
+ } | {
256
+ status: 'refreshed';
257
+ changed: FreshnessCounts;
258
+ skippedCount?: number;
259
+ durationMs: number;
260
+ } | {
261
+ status: 'stale';
262
+ reason: 'locked' | 'refresh_failed' | 'reindex_pending';
263
+ message: string;
264
+ /** 반영하지 못한 변경. 락 대기나 드리프트가 많아 넘긴 경우에만 있다 */
265
+ pending?: FreshnessCounts;
266
+ /** reindex_pending일 때 다시 파싱해야 하는 파일 수 */
267
+ toParse?: number;
268
+ durationMs: number;
269
+ } | {
270
+ status: 'skipped';
271
+ reason: 'no_graph' | 'disabled';
272
+ durationMs: number;
273
+ };
208
274
  export interface BuildResult {
209
275
  nodesBuilt: number;
210
276
  edgesBuilt: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/code-graph/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/code-graph/types.ts"],"names":[],"mappings":"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"}
@@ -285,6 +285,29 @@ declare const configSchema: z.ZodObject<{
285
285
  */
286
286
  ruleSourceWarnings: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
287
287
  notifications: z.ZodDefault<z.ZodBoolean>;
288
+ codeGraph: z.ZodDefault<z.ZodObject<{
289
+ /**
290
+ * Claude Code 플러그인 훅이 코드 그래프 컨텍스트를 넣을지. 훅은 플러그인이 깔린 모든 레포에
291
+ * 걸리므로 기본은 꺼짐이다. 훅 프로세스는 기동 비용 때문에 이 스키마를 거치지 않고
292
+ * `src/code-graph/hooks/settings.ts`가 같은 값을 직접 읽는다. 환경변수 이름과 파싱은
293
+ * 양쪽이 `./hooks-env.ts`를 함께 쓴다.
294
+ */
295
+ hooks: z.ZodDefault<z.ZodObject<{
296
+ enabled: z.ZodDefault<z.ZodBoolean>;
297
+ }, "strip", z.ZodTypeAny, {
298
+ enabled: boolean;
299
+ }, {
300
+ enabled?: boolean | undefined;
301
+ }>>;
302
+ }, "strip", z.ZodTypeAny, {
303
+ hooks: {
304
+ enabled: boolean;
305
+ };
306
+ }, {
307
+ hooks?: {
308
+ enabled?: boolean | undefined;
309
+ } | undefined;
310
+ }>>;
288
311
  dbPath: z.ZodDefault<z.ZodString>;
289
312
  skillsDir: z.ZodDefault<z.ZodString>;
290
313
  agentsDir: z.ZodDefault<z.ZodString>;
@@ -344,6 +367,11 @@ declare const configSchema: z.ZodObject<{
344
367
  ruleSourceErrors: string[];
345
368
  ruleSourceWarnings: string[];
346
369
  notifications: boolean;
370
+ codeGraph: {
371
+ hooks: {
372
+ enabled: boolean;
373
+ };
374
+ };
347
375
  dbPath: string;
348
376
  skillsDir: string;
349
377
  agentsDir: string;
@@ -403,6 +431,11 @@ declare const configSchema: z.ZodObject<{
403
431
  ruleSourceErrors?: string[] | undefined;
404
432
  ruleSourceWarnings?: string[] | undefined;
405
433
  notifications?: boolean | undefined;
434
+ codeGraph?: {
435
+ hooks?: {
436
+ enabled?: boolean | undefined;
437
+ } | undefined;
438
+ } | undefined;
406
439
  dbPath?: string | undefined;
407
440
  skillsDir?: string | undefined;
408
441
  agentsDir?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/core/config.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmBxB,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;;EAKvB,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAkKhE;;;;;GAKG;AACH,QAAA,MAAM,gBAAgB;IAElB,sDAAsD;;;IAOtD;;;;;;;;;OASG;;IAOH,oCAAoC;;IAEpC,6CAA6C;;IAE7C,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4GhC,CAAC;AAEL,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAS1D,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAlJd,sDAAsD;;;QAOtD;;;;;;;;;WASG;;QAOH,oCAAoC;;QAEpC,6CAA6C;;QAE7C,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAkJlC;;;OAGG;;IAEH;;;;;;OAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAaH,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAmBzD;;;GAGG;AACH,iBAAS,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClD,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,CAAC,CAmBH;AAED;;GAEG;AACH,iBAAS,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAclD;AASD;;;GAGG;AACH,iBAAS,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiFjD;AA2GD,wBAAgB,UAAU,CACxB,SAAS,GAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM,EAChD,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5D,aAAa,CAyEf;AAuHD,OAAO,EACL,SAAS,IAAI,UAAU,EACvB,eAAe,IAAI,gBAAgB,EACnC,cAAc,IAAI,eAAe,GAClC,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/core/config.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAoBxB,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;;EAKvB,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAkKhE;;;;;GAKG;AACH,QAAA,MAAM,gBAAgB;IAElB,sDAAsD;;;IAOtD;;;;;;;;;OASG;;IAOH,oCAAoC;;IAEpC,6CAA6C;;IAE7C,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4GhC,CAAC;AAEL,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAmB1D,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA5Jd,sDAAsD;;;QAOtD;;;;;;;;;WASG;;QAOH,oCAAoC;;QAEpC,6CAA6C;;QAE7C,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA4JlC;;;OAGG;;IAEH;;;;;;OAMG;;;;QA/CH;;;;;WAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwDH,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAmBzD;;;GAGG;AACH,iBAAS,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClD,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,CAAC,CAmBH;AAED;;GAEG;AACH,iBAAS,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAclD;AASD;;;GAGG;AACH,iBAAS,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoFjD;AA2GD,wBAAgB,UAAU,CACxB,SAAS,GAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM,EAChD,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5D,aAAa,CAyEf;AAuHD,OAAO,EACL,SAAS,IAAI,UAAU,EACvB,eAAe,IAAI,gBAAgB,EACnC,cAAc,IAAI,eAAe,GAClC,CAAC"}