kiri-mcp-server 0.25.7 → 0.26.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 (47) hide show
  1. package/config/stop-words.yml +3 -0
  2. package/dist/config/stop-words.yml +3 -0
  3. package/dist/package.json +1 -4
  4. package/dist/src/client/connection-manager.d.ts.map +1 -1
  5. package/dist/src/client/connection-manager.js +13 -9
  6. package/dist/src/client/connection-manager.js.map +1 -1
  7. package/dist/src/client/proxy.js +11 -6
  8. package/dist/src/client/proxy.js.map +1 -1
  9. package/dist/src/indexer/cli.d.ts +1 -0
  10. package/dist/src/indexer/cli.d.ts.map +1 -1
  11. package/dist/src/indexer/cli.js +167 -23
  12. package/dist/src/indexer/cli.js.map +1 -1
  13. package/dist/src/indexer/watch.d.ts +9 -0
  14. package/dist/src/indexer/watch.d.ts.map +1 -1
  15. package/dist/src/indexer/watch.js +122 -3
  16. package/dist/src/indexer/watch.js.map +1 -1
  17. package/dist/src/server/boost-profiles.d.ts.map +1 -1
  18. package/dist/src/server/boost-profiles.js +9 -4
  19. package/dist/src/server/boost-profiles.js.map +1 -1
  20. package/dist/src/server/compact-mode.d.ts +3 -0
  21. package/dist/src/server/compact-mode.d.ts.map +1 -0
  22. package/dist/src/server/compact-mode.js +5 -0
  23. package/dist/src/server/compact-mode.js.map +1 -0
  24. package/dist/src/server/handlers/snippets-get.d.ts +3 -0
  25. package/dist/src/server/handlers/snippets-get.d.ts.map +1 -1
  26. package/dist/src/server/handlers/snippets-get.js +23 -1
  27. package/dist/src/server/handlers/snippets-get.js.map +1 -1
  28. package/dist/src/server/handlers.d.ts +6 -2
  29. package/dist/src/server/handlers.d.ts.map +1 -1
  30. package/dist/src/server/handlers.js +64 -11
  31. package/dist/src/server/handlers.js.map +1 -1
  32. package/dist/src/server/output-schemas.d.ts +12 -2
  33. package/dist/src/server/output-schemas.d.ts.map +1 -1
  34. package/dist/src/server/output-schemas.js +5 -1
  35. package/dist/src/server/output-schemas.js.map +1 -1
  36. package/dist/src/server/rpc.d.ts.map +1 -1
  37. package/dist/src/server/rpc.js +43 -15
  38. package/dist/src/server/rpc.js.map +1 -1
  39. package/dist/src/shared/security/config.d.ts +1 -0
  40. package/dist/src/shared/security/config.d.ts.map +1 -1
  41. package/dist/src/shared/security/config.js +23 -5
  42. package/dist/src/shared/security/config.js.map +1 -1
  43. package/package.json +1 -4
  44. package/dist/src/eval/metrics.d.ts +0 -23
  45. package/dist/src/eval/metrics.d.ts.map +0 -1
  46. package/dist/src/eval/metrics.js +0 -47
  47. package/dist/src/eval/metrics.js.map +0 -1
@@ -10,6 +10,7 @@ import { ServerContext } from "../context.js";
10
10
  * - "full": ファイル全体を返す(安全上限付き)
11
11
  */
12
12
  export type SnippetsGetView = "auto" | "symbol" | "lines" | "full";
13
+ export type SnippetRangeSource = "symbol" | "clamped" | "window";
13
14
  export interface SnippetsGetParams {
14
15
  path: string;
15
16
  start_line?: number;
@@ -17,6 +18,7 @@ export interface SnippetsGetParams {
17
18
  compact?: boolean;
18
19
  includeLineNumbers?: boolean;
19
20
  view?: SnippetsGetView;
21
+ rangeSource?: SnippetRangeSource;
20
22
  }
21
23
  /**
22
24
  * snippets_get tool のレスポンス
@@ -29,6 +31,7 @@ export interface SnippetResult {
29
31
  totalLines: number;
30
32
  symbolName: string | null;
31
33
  symbolKind: string | null;
34
+ rangeSource: SnippetRangeSource;
32
35
  truncated?: boolean;
33
36
  }
34
37
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"snippets-get.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/snippets-get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C;;GAEG;AACH;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAEnE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,IAAI,CAAC,EAAE,eAAe,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAqDD;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,aAAa,CAAC,CAmMxB"}
1
+ {"version":3,"file":"snippets-get.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/snippets-get.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C;;GAEG;AACH;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AACnE,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEjE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,kBAAkB,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAiED;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,aAAa,CAAC,CAkNxB"}
@@ -1,9 +1,21 @@
1
+ import process from "node:process";
1
2
  /**
2
3
  * Constants
3
4
  */
4
5
  const DEFAULT_SNIPPET_WINDOW = 150;
5
6
  const MAX_SNIPPET_LINES = 500; // 全モード共通の安全上限
6
7
  const MAX_SNIPPET_CHARS = 200_000; // 返却内容の安全上限(1レスポンスの最大文字数)
8
+ const VALID_SNIPPET_VIEWS = ["auto", "symbol", "lines", "full"];
9
+ function resolveDefaultSnippetsView() {
10
+ const envValue = process.env.KIRI_SNIPPETS_DEFAULT_VIEW;
11
+ if (typeof envValue === "string") {
12
+ const normalized = envValue.toLowerCase();
13
+ if (VALID_SNIPPET_VIEWS.includes(normalized)) {
14
+ return normalized;
15
+ }
16
+ }
17
+ return "symbol";
18
+ }
7
19
  /**
8
20
  * 行番号をプレフィックスとして追加する(動的幅調整)
9
21
  *
@@ -71,7 +83,15 @@ export async function snippetsGet(context, params) {
71
83
  WHERE s.repo_id = ? AND s.path = ?
72
84
  ORDER BY s.start_line
73
85
  `, [repoId, params.path]);
74
- const view = params.view ?? "auto";
86
+ const explicitView = params.view;
87
+ let view = explicitView ?? resolveDefaultSnippetsView();
88
+ const rangeSource = params.rangeSource;
89
+ const hasExplicitRange = params.end_line !== undefined;
90
+ if (view === "symbol" &&
91
+ explicitView === undefined &&
92
+ (hasExplicitRange || rangeSource === "clamped" || rangeSource === "window")) {
93
+ view = "lines";
94
+ }
75
95
  // view パラメータに基づいて取得戦略を決定
76
96
  let useSymbolSnippets;
77
97
  let requestedStart;
@@ -175,10 +195,12 @@ export async function snippetsGet(context, params) {
175
195
  content = numberedContent;
176
196
  }
177
197
  }
198
+ const derivedRangeSource = rangeSource ?? (useSymbolSnippets ? "symbol" : "window");
178
199
  return {
179
200
  path: row.path,
180
201
  startLine,
181
202
  endLine,
203
+ rangeSource: derivedRangeSource,
182
204
  ...(content !== undefined && { content }),
183
205
  totalLines,
184
206
  symbolName,
@@ -1 +1 @@
1
- {"version":3,"file":"snippets-get.js","sourceRoot":"","sources":["../../../../src/server/handlers/snippets-get.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snippets-get.js","sourceRoot":"","sources":["../../../../src/server/handlers/snippets-get.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,8 @@ import { DuckDBClient } from "../shared/duckdb.js";
2
2
  import { type BoostProfileName } from "./boost-profiles.js";
3
3
  import { ServerContext, TableAvailability } from "./context.js";
4
4
  import { ServerServices } from "./services/index.js";
5
- export { snippetsGet, type SnippetsGetParams, type SnippetsGetView, type SnippetResult, } from "./handlers/snippets-get.js";
5
+ import type { SnippetRangeSource } from "./handlers/snippets-get.js";
6
+ export { snippetsGet, type SnippetsGetParams, type SnippetsGetView, type SnippetResult, type SnippetRangeSource, } from "./handlers/snippets-get.js";
6
7
  /**
7
8
  * checkTableAvailability
8
9
  *
@@ -47,17 +48,20 @@ export interface ContextBundleParams {
47
48
  profile?: string;
48
49
  boost_profile?: BoostProfileName;
49
50
  compact?: boolean;
51
+ includeWhy?: boolean;
50
52
  includeTokensEstimate?: boolean;
51
53
  metadata_filters?: Record<string, string | string[]>;
52
54
  requestId?: string;
53
55
  path_prefix?: string;
54
56
  category?: string;
57
+ why_mode?: "full" | "terse";
55
58
  }
56
59
  export interface ContextBundleItem {
57
60
  path: string;
58
61
  range: [number, number];
62
+ rangeSource: SnippetRangeSource;
59
63
  preview?: string;
60
- why: string[];
64
+ why?: string[];
61
65
  score: number;
62
66
  }
63
67
  export interface ContextBundleResult {
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/server/handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/server/handlers.ts"],"names":[],"mappings":"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"}
@@ -594,6 +594,30 @@ const DEFAULT_FILECACHE_MAX_BYTES = 64 * 1024 * 1024;
594
594
  const PATH_MISS_DELTA = serverConfig.penalties.pathMissDelta;
595
595
  const LARGE_FILE_DELTA = serverConfig.penalties.largeFileDelta;
596
596
  const MAX_WHY_TAGS = 10;
597
+ const WHY_PREFIX_ABBREVIATIONS = {
598
+ artifact: "art",
599
+ dictionary: "dict",
600
+ phrase: "phr",
601
+ text: "txt",
602
+ metadata: "meta",
603
+ substring: "sub",
604
+ "path-phrase": "pphr",
605
+ structural: "str",
606
+ cochange: "co",
607
+ "path-segment": "pseg",
608
+ "path-keyword": "pkey",
609
+ dep: "dep",
610
+ near: "near",
611
+ boost: "boost",
612
+ recent: "recent",
613
+ symbol: "sym",
614
+ penalty: "pen",
615
+ keyword: "kw",
616
+ coverage: "cov",
617
+ fallback: "fb",
618
+ graph: "graph",
619
+ "abbr-path": "abbr",
620
+ };
597
621
  // 項目3: whyタグの優先度マップ(低い数値ほど高優先度)
598
622
  // All actual tag prefixes used in the codebase
599
623
  const WHY_TAG_PRIORITY = {
@@ -638,7 +662,7 @@ function parseOutputOptions(params) {
638
662
  *
639
663
  * DoS protection: Limits processing to first 1000 reasons to prevent CPU exhaustion.
640
664
  */
641
- function selectWhyTags(reasons) {
665
+ function selectWhyTags(reasons, mode = "full") {
642
666
  // Protect against DoS: limit reasons processed
643
667
  if (reasons.size > 1000) {
644
668
  reasons = new Set(Array.from(reasons).slice(0, 1000));
@@ -677,7 +701,24 @@ function selectWhyTags(reasons) {
677
701
  break;
678
702
  selected.add(reason); // Set automatically deduplicates
679
703
  }
680
- return Array.from(selected);
704
+ return formatWhyTags(selected, mode);
705
+ }
706
+ function formatWhyTags(reasons, mode) {
707
+ if (mode === "full") {
708
+ return Array.from(reasons);
709
+ }
710
+ const formatted = [];
711
+ for (const reason of reasons) {
712
+ const [prefix = "", ...restParts] = reason.split(":");
713
+ const abbreviation = WHY_PREFIX_ABBREVIATIONS[prefix];
714
+ if (!abbreviation) {
715
+ formatted.push(reason);
716
+ continue;
717
+ }
718
+ const suffix = restParts.join(":");
719
+ formatted.push(suffix.length > 0 ? `${abbreviation}:${suffix}` : abbreviation);
720
+ }
721
+ return formatted;
681
722
  }
682
723
  /**
683
724
  * ストップワードサービスの遅延初期化
@@ -736,19 +777,24 @@ function normalizeLimit(limit) {
736
777
  }
737
778
  return Math.min(Math.max(1, Math.floor(limit)), 100);
738
779
  }
780
+ const PREVIEW_MATCH_WINDOW = 120;
781
+ const PREVIEW_MAX_LENGTH = 100;
739
782
  function buildPreview(content, query) {
740
783
  const lowerContent = content.toLowerCase();
741
784
  const lowerQuery = query.toLowerCase();
742
785
  const index = lowerContent.indexOf(lowerQuery);
743
786
  if (index === -1) {
744
- return { preview: content.slice(0, 240), line: 1 };
787
+ return { preview: content.slice(0, PREVIEW_MAX_LENGTH), line: 1 };
745
788
  }
746
789
  const prefix = content.slice(0, index);
747
790
  const prefixLines = prefix.split(/\r?\n/);
748
791
  const matchLine = prefix.length === 0 ? 1 : prefixLines.length;
749
- const snippetStart = Math.max(0, index - 120);
750
- const snippetEnd = Math.min(content.length, index + query.length + 120);
751
- const preview = content.slice(snippetStart, snippetEnd);
792
+ const snippetStart = Math.max(0, index - PREVIEW_MATCH_WINDOW);
793
+ const snippetEnd = Math.min(content.length, index + query.length + PREVIEW_MATCH_WINDOW);
794
+ const previewSlice = content.slice(snippetStart, snippetEnd);
795
+ const preview = previewSlice.length > PREVIEW_MAX_LENGTH
796
+ ? `${previewSlice.slice(0, PREVIEW_MAX_LENGTH - 1)}…`
797
+ : previewSlice;
752
798
  return { preview, line: matchLine };
753
799
  }
754
800
  /**
@@ -1575,15 +1621,16 @@ function selectSnippet(snippets, matchLine) {
1575
1621
  const lastSnippet = snippets[snippets.length - 1];
1576
1622
  return lastSnippet ?? firstSnippet;
1577
1623
  }
1624
+ const SNIPPET_PREVIEW_MAX_LENGTH = 240;
1578
1625
  function buildSnippetPreview(content, startLine, endLine) {
1579
1626
  const lines = content.split(/\r?\n/);
1580
1627
  const startIndex = Math.max(0, Math.min(startLine - 1, lines.length));
1581
1628
  const endIndex = Math.max(startIndex, Math.min(endLine, lines.length));
1582
1629
  const snippet = lines.slice(startIndex, endIndex).join("\n");
1583
- if (snippet.length <= 240) {
1630
+ if (snippet.length <= SNIPPET_PREVIEW_MAX_LENGTH) {
1584
1631
  return snippet;
1585
1632
  }
1586
- return `${snippet.slice(0, 239)}…`;
1633
+ return `${snippet.slice(0, SNIPPET_PREVIEW_MAX_LENGTH - 1)}…`;
1587
1634
  }
1588
1635
  /**
1589
1636
  * トークン数を推定(コンテンツベース)
@@ -2981,6 +3028,7 @@ async function contextBundleImpl(context, params) {
2981
3028
  const substringHints = hintBuckets.substringHints;
2982
3029
  const includeTokensEstimate = params.includeTokensEstimate === true;
2983
3030
  const isCompact = params.compact === true;
3031
+ const whyMode = params.why_mode ?? "full";
2984
3032
  const pathPrefix = params.path_prefix && params.path_prefix.length > 0
2985
3033
  ? normalizePathPrefix(params.path_prefix)
2986
3034
  : undefined;
@@ -3749,6 +3797,7 @@ async function contextBundleImpl(context, params) {
3749
3797
  const selected = selectSnippet(snippets, candidate.matchLine);
3750
3798
  let startLine;
3751
3799
  let endLine;
3800
+ let rangeSource = selected ? "symbol" : "window";
3752
3801
  if (selected) {
3753
3802
  startLine = selected.start_line;
3754
3803
  endLine = selected.end_line;
@@ -3775,6 +3824,7 @@ async function contextBundleImpl(context, params) {
3775
3824
  }
3776
3825
  startLine = clampedStart;
3777
3826
  endLine = Math.max(clampedStart, clampedEnd);
3827
+ rangeSource = "clamped";
3778
3828
  }
3779
3829
  }
3780
3830
  if (endLine < startLine) {
@@ -3786,14 +3836,17 @@ async function contextBundleImpl(context, params) {
3786
3836
  }
3787
3837
  const normalizedScore = maxScore > 0 ? candidate.score / maxScore : 0;
3788
3838
  const roundedScore = Number.isFinite(normalizedScore) ? Number(normalizedScore.toFixed(3)) : 0;
3789
- // Select why tags with diversity guarantee (reserves slots for dep/symbol/near)
3790
- const why = selectWhyTags(reasons);
3839
+ const shouldIncludeWhy = params.includeWhy ?? !isCompact;
3791
3840
  const item = {
3792
3841
  path: candidate.path,
3793
3842
  range: [startLine, endLine],
3794
- why,
3843
+ rangeSource,
3795
3844
  score: roundedScore,
3796
3845
  };
3846
+ if (shouldIncludeWhy) {
3847
+ // Select why tags with diversity guarantee (reserves slots for dep/symbol/near)
3848
+ item.why = selectWhyTags(reasons, whyMode);
3849
+ }
3797
3850
  // Add preview only if not in compact mode
3798
3851
  if (!params.compact) {
3799
3852
  item.preview = buildSnippetPreview(candidate.content, startLine, endLine);