@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.
Files changed (96) 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/skills/blast-radius/SKILL.md +11 -1
  8. package/dist/plugin/skills/diff-radius/SKILL.md +11 -0
  9. package/dist/schemas/gestalt.schema.json +19 -0
  10. package/dist/src/code-graph/cochange.d.ts +40 -0
  11. package/dist/src/code-graph/cochange.d.ts.map +1 -1
  12. package/dist/src/code-graph/cochange.js +88 -3
  13. package/dist/src/code-graph/cochange.js.map +1 -1
  14. package/dist/src/code-graph/engine.d.ts +35 -1
  15. package/dist/src/code-graph/engine.d.ts.map +1 -1
  16. package/dist/src/code-graph/engine.js +300 -55
  17. package/dist/src/code-graph/engine.js.map +1 -1
  18. package/dist/src/code-graph/freshness.d.ts +39 -0
  19. package/dist/src/code-graph/freshness.d.ts.map +1 -0
  20. package/dist/src/code-graph/freshness.js +93 -0
  21. package/dist/src/code-graph/freshness.js.map +1 -0
  22. package/dist/src/code-graph/hooks/background.d.ts +18 -0
  23. package/dist/src/code-graph/hooks/background.d.ts.map +1 -0
  24. package/dist/src/code-graph/hooks/background.js +55 -0
  25. package/dist/src/code-graph/hooks/background.js.map +1 -0
  26. package/dist/src/code-graph/hooks/pointers.d.ts +66 -0
  27. package/dist/src/code-graph/hooks/pointers.d.ts.map +1 -0
  28. package/dist/src/code-graph/hooks/pointers.js +292 -0
  29. package/dist/src/code-graph/hooks/pointers.js.map +1 -0
  30. package/dist/src/code-graph/hooks/rank.d.ts +36 -0
  31. package/dist/src/code-graph/hooks/rank.d.ts.map +1 -0
  32. package/dist/src/code-graph/hooks/rank.js +212 -0
  33. package/dist/src/code-graph/hooks/rank.js.map +1 -0
  34. package/dist/src/code-graph/hooks/run.d.ts +37 -0
  35. package/dist/src/code-graph/hooks/run.d.ts.map +1 -0
  36. package/dist/src/code-graph/hooks/run.js +324 -0
  37. package/dist/src/code-graph/hooks/run.js.map +1 -0
  38. package/dist/src/code-graph/hooks/settings.d.ts +11 -0
  39. package/dist/src/code-graph/hooks/settings.d.ts.map +1 -0
  40. package/dist/src/code-graph/hooks/settings.js +25 -0
  41. package/dist/src/code-graph/hooks/settings.js.map +1 -0
  42. package/dist/src/code-graph/hooks/state.d.ts +20 -0
  43. package/dist/src/code-graph/hooks/state.d.ts.map +1 -0
  44. package/dist/src/code-graph/hooks/state.js +73 -0
  45. package/dist/src/code-graph/hooks/state.js.map +1 -0
  46. package/dist/src/code-graph/index.d.ts +6 -2
  47. package/dist/src/code-graph/index.d.ts.map +1 -1
  48. package/dist/src/code-graph/index.js +3 -1
  49. package/dist/src/code-graph/index.js.map +1 -1
  50. package/dist/src/code-graph/ko-text.d.ts +39 -0
  51. package/dist/src/code-graph/ko-text.d.ts.map +1 -0
  52. package/dist/src/code-graph/ko-text.js +223 -0
  53. package/dist/src/code-graph/ko-text.js.map +1 -0
  54. package/dist/src/code-graph/lock.d.ts +30 -0
  55. package/dist/src/code-graph/lock.d.ts.map +1 -0
  56. package/dist/src/code-graph/lock.js +140 -0
  57. package/dist/src/code-graph/lock.js.map +1 -0
  58. package/dist/src/code-graph/plugins/typescript-skeleton.d.ts +7 -0
  59. package/dist/src/code-graph/plugins/typescript-skeleton.d.ts.map +1 -0
  60. package/dist/src/code-graph/plugins/typescript-skeleton.js +157 -0
  61. package/dist/src/code-graph/plugins/typescript-skeleton.js.map +1 -0
  62. package/dist/src/code-graph/plugins/typescript.d.ts.map +1 -1
  63. package/dist/src/code-graph/plugins/typescript.js +58 -0
  64. package/dist/src/code-graph/plugins/typescript.js.map +1 -1
  65. package/dist/src/code-graph/storage.d.ts +85 -0
  66. package/dist/src/code-graph/storage.d.ts.map +1 -1
  67. package/dist/src/code-graph/storage.js +318 -3
  68. package/dist/src/code-graph/storage.js.map +1 -1
  69. package/dist/src/code-graph/types.d.ts +66 -0
  70. package/dist/src/code-graph/types.d.ts.map +1 -1
  71. package/dist/src/core/config.d.ts +33 -0
  72. package/dist/src/core/config.d.ts.map +1 -1
  73. package/dist/src/core/config.js +14 -0
  74. package/dist/src/core/config.js.map +1 -1
  75. package/dist/src/core/hooks-env.d.ts +9 -0
  76. package/dist/src/core/hooks-env.d.ts.map +1 -0
  77. package/dist/src/core/hooks-env.js +16 -0
  78. package/dist/src/core/hooks-env.js.map +1 -0
  79. package/dist/src/mcp/schemas.d.ts +9 -3
  80. package/dist/src/mcp/schemas.d.ts.map +1 -1
  81. package/dist/src/mcp/schemas.js +19 -2
  82. package/dist/src/mcp/schemas.js.map +1 -1
  83. package/dist/src/mcp/server.d.ts.map +1 -1
  84. package/dist/src/mcp/server.js +21 -3
  85. package/dist/src/mcp/server.js.map +1 -1
  86. package/dist/src/mcp/tools/code-graph-passthrough.d.ts +6 -1
  87. package/dist/src/mcp/tools/code-graph-passthrough.d.ts.map +1 -1
  88. package/dist/src/mcp/tools/code-graph-passthrough.js +95 -6
  89. package/dist/src/mcp/tools/code-graph-passthrough.js.map +1 -1
  90. package/package.json +4 -3
  91. package/plugin/.codex-plugin/plugin.json +1 -1
  92. package/plugin/.mcp.json +1 -1
  93. package/plugin/mcp.json +1 -1
  94. package/plugin/skills/blast-radius/SKILL.md +11 -1
  95. package/plugin/skills/diff-radius/SKILL.md +11 -0
  96. 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":"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"}
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;AAG9D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,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;AAwCD,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;QACzB,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,SAAS;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,MAAM,aAAa,GAAG,iBAAiB,CAAC;AACxC,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AAC9C,MAAM,kBAAkB,GAAG,6BAA6B,CAAC;AACzD,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AAY9C;;;;;;;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;AA8CN,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAwHZ,CAAC,CAAC;QACH,mCAAmC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,GAAG,EAAwB,CAAC;QACxF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,eAAe;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC,GAAG,EAAsB,CAAC;QACrF,OAAO,IAAI,GAAG,CACZ,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACd,CAAC,CAAC,SAAS;YACX;gBACE,QAAQ,EAAE,CAAC,CAAC,SAAS;gBACrB,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,OAAO,EAAE,CAAC,CAAC,QAAQ;gBACnB,QAAQ,EAAE,CAAC,CAAC,SAAS;gBACrB,SAAS,EAAE,CAAC,CAAC,UAAU;aACxB;SACF,CAAC,CACH,CAAC;IACJ,CAAC;IAED,cAAc,CAAC,GAAgB;QAC7B,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;gCACwB,CACzB;aACA,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3E,CAAC;IAED,cAAc,CAAC,QAAgB;QAC7B,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAChF,CAAC;IAED,+DAA+D;IAC/D,iBAAiB;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,GAAG,EAExE,CAAC;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,CAAC,GAAW;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,GAAG,CAAC,GAAG,CAEjE,CAAC;QACd,OAAO,GAAG,EAAE,KAAK,IAAI,IAAI,CAAC;IAC5B,CAAC;IAED,OAAO,CAAC,GAAW,EAAE,KAAa;QAChC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,2DAA2D,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC/F,CAAC;IAED,WAAW,CAAC,EAAc;QACxB,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC;IAC5B,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,kDAAkD;IAClD,2BAA2B,CAAC,QAAgB;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CACN;;;;;;;KAOH,CACE;aACA,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAA6C,CAAC;QACvE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,OAA6C,EAAE;QAC/D,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,IAAI,KAAK,GAAG,uDAAuD,CAAC;QACpE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,GAAG,EAAE,CAAC;YAC9C,KAAK,IAAI,wBAAwB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YACxE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,GAAG,GAAG;;8BAEgB,KAAK;6CACU,CAAC;QAC1C,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,GAAG,IAAI,UAAU,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAyC,CAAC;QACzF,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAED;;;OAGG;IACH,mBAAmB,CAAC,QAAgB,EAAE,MAAgB,EAAE,KAAa;QACnE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,2BAA2B,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC;QAC/D,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC;YAC7D,OAAO,CAAC,IAAI,CAAC,gCAAgC,EAAE,GAAG,GAAG,qBAAqB,CAAC,CAAC;YAC5E,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CAAC,gCAAgC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;aACvE,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAiB,CAAC;QACzC,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,aAAa,CAAC,GAAa;QACzB,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAChC,MAAM,GAAG,GAAoB,EAAE,CAAC;QAChC,yCAAyC;QACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;YACpC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;iBACjB,OAAO,CAAC,uCAAuC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;iBACjF,GAAG,CAAC,GAAG,KAAK,CAAiB,CAAC;YACjC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QAChC,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,sEAAsE;IACtE,cAAc,CAAC,KAAe,EAAE,KAAa;QAC3C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CACN;4BACoB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAC9D;aACA,GAAG,CAAC,GAAG,KAAK,EAAE,KAAK,CAAwC,CAAC;QAC/D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,gCAAgC;IAChC,iBAAiB,CAAC,KAAe,EAAE,KAAa;QAC9C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,EAAE;aACX,OAAO,CACN;0BACkB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAC5D;aACA,GAAG,CAAC,GAAG,KAAK,EAAE,KAAK,CAAoC,CAAC;IAC7D,CAAC;IAED,gCAAgC;IAChC,cAAc,CAAC,IAAc;QAC3B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACjC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE;aACpB,OAAO,CAAC,6DAA6D,EAAE,GAAG,CAAC;aAC3E,GAAG,CAAC,GAAG,IAAI,CAAkD,CAAC;QACjE,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE;aAClB,OAAO,CAAC,4DAA4D,EAAE,GAAG,CAAC;aAC1E,GAAG,CAAC,GAAG,IAAI,CAAyC,CAAC;QACxD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;QAC1C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACvB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IACvE,CAAC;IAED;;;OAGG;IACH,gBAAgB,CAAC,KAAe;QAC9B,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,QAAgB,EAAE,EAAE,CAC5C,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,QAAQ,CAAC;QACpD,MAAM,KAAK,GAAkB;YAC3B,KAAK,EAAE,IAAI,GAAG,EAAE;YAChB,QAAQ,EAAE,IAAI,GAAG,EAAE;YACnB,IAAI,EAAE,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC;YAC3B,OAAO,EAAE,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC;YACjC,cAAc,EAAE,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC;YAC1C,MAAM,EAAE,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC;SACjC,CAAC;QACF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACrC,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CAAC,iEAAiE,EAAE,iBAAiB,CAAC;aAC7F,GAAG,CAAC,GAAG,KAAK,CAAoC,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;aACnB,OAAO,CACN,oEAAoE,EAAE,iBAAiB,CACxF;aACA,GAAG,CAAC,GAAG,KAAK,CAAoC,CAAC;QACpD,KAAK,MAAM,CAAC,IAAI,GAAG;YAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QACpD,KAAK,MAAM,CAAC,IAAI,MAAM;YAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QAC1D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,4DAA4D;IAC5D,qBAAqB;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CAAC,4DAA4D,CAAC;aACrE,GAAG,EAAqB,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE;aACpB,OAAO,CAAC,iFAAiF,CAAC;aAC1F,GAAG,EAA6D,CAAC;QACpE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,cAAc,CAAC,OAAiB;QAC9B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CACN;4BACoB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,iCAAiC,CACtF;aACA,GAAG,CAAC,GAAG,OAAO,CAA2D,CAAC;QAC7E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACxF,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,6DAA6D;QAC7D,IAAI,CAAC,EAAE;aACJ,OAAO,CACN,uFAAuF,CACxF;aACA,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;KAI5B,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CACnB,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,EACd,IAAI,CAAC,GAAG,IAAI,IAAI,CACjB,CAAC;QACF,MAAM,KAAK,GAAI,IAA6C,CAAC,eAAe,CAAC;QAC7E,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;OAE5B,CAAC,CAAC;YACH,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;gBAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC5D,CAAC;IACH,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;QACH,oDAAoD;QACpD,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;KAGtC,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;YAC7B,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,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAEpC,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAElC,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAElC,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;KAGpC,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;gBACjB,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;oBACrB,IAAI,CAAC,EAAE,CAAC,IAAI,CACV,wFAAwF,CACzF,CAAC;gBACJ,CAAC;gBACD,IAAI,KAAK,CAAC,OAAO;oBAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YACjE,CAAC;YACD,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBACrB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,GAAG,EAE3E,CAAC;gBACF,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;gBACrB,yCAAyC;gBACzC,MAAM,IAAI,GAAuB,EAAE,CAAC;gBACpC,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;oBACjC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAC/C,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK;wBAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;oBAClD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK;wBAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACjD,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjF,KAAK,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI;oBAAE,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACtD,CAAC;YACD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,IAAI,EAAE;gBAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;YACrF,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"}
@@ -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"}