kiri-mcp-server 0.11.0 → 0.13.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 (57) hide show
  1. package/README.md +47 -12
  2. package/config/domain-terms.yml +37 -0
  3. package/config/kiri.yml +25 -0
  4. package/dist/config/domain-terms.yml +37 -0
  5. package/dist/config/kiri.yml +25 -0
  6. package/dist/package.json +6 -1
  7. package/dist/src/server/boost-profiles.d.ts +6 -5
  8. package/dist/src/server/boost-profiles.d.ts.map +1 -1
  9. package/dist/src/server/boost-profiles.js +110 -2
  10. package/dist/src/server/boost-profiles.js.map +1 -1
  11. package/dist/src/server/config-loader.d.ts +9 -0
  12. package/dist/src/server/config-loader.d.ts.map +1 -0
  13. package/dist/src/server/config-loader.js +121 -0
  14. package/dist/src/server/config-loader.js.map +1 -0
  15. package/dist/src/server/config.d.ts +4 -0
  16. package/dist/src/server/config.d.ts.map +1 -1
  17. package/dist/src/server/config.js +61 -0
  18. package/dist/src/server/config.js.map +1 -1
  19. package/dist/src/server/context.d.ts +4 -0
  20. package/dist/src/server/context.d.ts.map +1 -1
  21. package/dist/src/server/context.js +6 -0
  22. package/dist/src/server/context.js.map +1 -1
  23. package/dist/src/server/domain-terms.d.ts +28 -0
  24. package/dist/src/server/domain-terms.d.ts.map +1 -0
  25. package/dist/src/server/domain-terms.js +203 -0
  26. package/dist/src/server/domain-terms.js.map +1 -0
  27. package/dist/src/server/handlers.d.ts +3 -0
  28. package/dist/src/server/handlers.d.ts.map +1 -1
  29. package/dist/src/server/handlers.js +386 -19
  30. package/dist/src/server/handlers.js.map +1 -1
  31. package/dist/src/server/observability/metrics.d.ts +12 -0
  32. package/dist/src/server/observability/metrics.d.ts.map +1 -1
  33. package/dist/src/server/observability/metrics.js +11 -0
  34. package/dist/src/server/observability/metrics.js.map +1 -1
  35. package/dist/src/server/rpc.d.ts.map +1 -1
  36. package/dist/src/server/rpc.js +40 -4
  37. package/dist/src/server/rpc.js.map +1 -1
  38. package/dist/src/server/runtime.d.ts.map +1 -1
  39. package/dist/src/server/runtime.js +1 -0
  40. package/dist/src/server/runtime.js.map +1 -1
  41. package/dist/src/server/services/index.d.ts +2 -0
  42. package/dist/src/server/services/index.d.ts.map +1 -1
  43. package/dist/src/server/services/index.js +12 -0
  44. package/dist/src/server/services/index.js.map +1 -1
  45. package/dist/src/shared/adaptive-k.d.ts +12 -0
  46. package/dist/src/shared/adaptive-k.d.ts.map +1 -0
  47. package/dist/src/shared/adaptive-k.js +8 -0
  48. package/dist/src/shared/adaptive-k.js.map +1 -0
  49. package/dist/src/shared/config-validate-adaptive-k.d.ts +3 -0
  50. package/dist/src/shared/config-validate-adaptive-k.d.ts.map +1 -0
  51. package/dist/src/shared/config-validate-adaptive-k.js +44 -0
  52. package/dist/src/shared/config-validate-adaptive-k.js.map +1 -0
  53. package/dist/src/shared/tokenizer.d.ts +1 -1
  54. package/dist/src/shared/tokenizer.d.ts.map +1 -1
  55. package/dist/src/shared/tokenizer.js +97 -15
  56. package/dist/src/shared/tokenizer.js.map +1 -1
  57. package/package.json +33 -26
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  > Intelligent code context extraction for LLMs via Model Context Protocol
4
4
 
5
- [![Version](https://img.shields.io/badge/version-0.11.0-blue.svg)](package.json)
5
+ [![Version](https://img.shields.io/badge/version-0.13.0-blue.svg)](package.json)
6
6
  [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
7
7
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.6-blue.svg)](https://www.typescriptlang.org/)
8
8
  [![MCP](https://img.shields.io/badge/MCP-Compatible-green.svg)](https://modelcontextprotocol.io/)
@@ -20,11 +20,24 @@
20
20
  - **📝 Phrase-Aware**: Recognizes compound terms (kebab-case, snake_case) for precise matching
21
21
  - **🔒 Concurrency-Safe** _(v0.9.7+)_: Per-database queues, canonicalized DuckDB paths, and bootstrap-safe locking prevent FTS rebuild conflicts and keep locks consistent across symlinks—even on first run
22
22
 
23
- ## 🆕 Whats New in v0.9.8
23
+ ## 🆕 What's New in v0.13.0
24
24
 
25
- - First-time bootstrap now skips redundant DuckDB locking, so `kiri` / `kiri-server` can index fresh repositories without deadlocking on their own locks.
26
- - Added regression coverage (`tests/server/indexBootstrap.spec.ts`) to ensure repeated `ensureDatabaseIndexed` calls reuse the lock cleanly.
27
- - All reliability upgrades from v0.9.7 (automatic ILIKE degrade during FTS rebuilds, canonicalized DB paths, expanded verify suite) remain in effect.
25
+ ### New Features
26
+
27
+ - **AdaptiveK Dynamic Clustering**: `context_bundle` now automatically adjusts result set size based on query characteristics (P@10 improved by 31%)
28
+ - **Domain Terms Dictionary**: Enable domain-specific term expansion via `KIRI_ENABLE_DOMAIN_TERMS=1` environment variable
29
+ - **Path Prefix Filter**: New `path_prefix` parameter for `context_bundle` to filter results by directory
30
+
31
+ ### 🔧 Improvements
32
+
33
+ - **Boost Profiles**: Enhanced configuration capabilities and settings
34
+ - **Evaluation Tools**: Added `--inspect-query` option to `run-golden.ts` for debugging
35
+
36
+ ### 🐛 Bug Fixes
37
+
38
+ - **TypeScript Build**: Fixed type conversion issues in domain-terms and services modules
39
+ - **Adaptive K Hardening**: Strengthened bounds checking and masked ping paths
40
+ - **Schema Compliance**: Removed non-standard `anyOf` from files_search schema
28
41
 
29
42
  ## ⚙️ Prerequisites
30
43
 
@@ -43,6 +56,27 @@ npm --version # Should be >= v9.0.0
43
56
  git --version # Should be >= v2.0
44
57
  ```
45
58
 
59
+ ## ⚠️ Troubleshooting
60
+
61
+ ### Migration or Database Issues
62
+
63
+ If you encounter issues after upgrading (database corruption, migration failures, etc.), the simplest solution is to delete the database and let KIRI recreate it:
64
+
65
+ ```bash
66
+ # For MCP users (Claude Code, Codex CLI, etc.)
67
+ # 1. Restart your MCP client to stop the KIRI server
68
+ # 2. Delete the database
69
+ rm -rf .kiri/
70
+ # 3. Restart your MCP client - KIRI will automatically reindex
71
+
72
+ # For CLI/Daemon users
73
+ pkill -f "kiri.*daemon" # Stop daemon if running
74
+ rm -rf .kiri/ # Delete database
75
+ kiri --repo . --db .kiri/index.duckdb --full # Reindex
76
+ ```
77
+
78
+ > **Note**: Deleting the database is safe - it only removes the index, not your source code. KIRI will automatically rebuild the index on next startup. For MCP users, no manual reindexing is needed.
79
+
46
80
  ## 🚀 Quick Start for MCP Users
47
81
 
48
82
  ### Step 1: Install KIRI
@@ -58,6 +92,7 @@ npm install -g kiri-mcp-server
58
92
  ## 📚 Documentation
59
93
 
60
94
  - [Authoring Docs for KIRI Search](docs/documentation-best-practices.md) – best practices for writing metadata-rich, link-aware documentation so that `context_bundle` and the docs vs. docs-plain benchmark maintain high precision. Includes guidance on querying custom front-matter keys via `meta.<key>:<value>` (for example, `meta.id:runbook-001`).
95
+ - [Path Penalties (User Guide)](docs/user/path-penalties.md) – `.kiri/config.yaml` と環境変数でパス倍率を設定する手順、優先順位、正規化ルール、適用タイミングをまとめたユーザー向けガイド。
61
96
 
62
97
  > **Note**: This installs the `kiri` command globally. You can verify with `kiri --version`.
63
98
 
@@ -760,11 +795,11 @@ See [docs/architecture.md](docs/architecture.md) for detailed technical informat
760
795
 
761
796
  ### Performance
762
797
 
763
- | Metric | Target | Current |
764
- | ----------------------------- | ------ | ------------- |
765
- | **Time to First Result** | ≤ 1.0s | ✅ 0.8s |
766
- | **Precision @ 10** | ≥ 0.7 | 0.75 |
767
- | **Token Reduction (compact)** | ≥ 90% | ✅ 95% (v0.8) |
798
+ | Metric | Target | Current |
799
+ | ----------------------------- | ------ | --------------------------------------------------------------------------------------- |
800
+ | **Time to First Result** | ≤ 1.0s | ✅ 0.8s |
801
+ | **Precision @ 10** | ≥ 0.7 | ⚠️ 0.25 (2025-11-21, dataset v2025-11-docs-plain, K=10, see var/eval/2025-11-21-k10.md) |
802
+ | **Token Reduction (compact)** | ≥ 90% | ✅ 95% (v0.8) |
768
803
 
769
804
  ### Evaluation & Quality Assurance
770
805
 
@@ -883,8 +918,8 @@ Built with:
883
918
 
884
919
  ---
885
920
 
886
- **Status**: v0.8.0 (Beta) - Production-ready for MCP clients
921
+ **Status**: v0.13.0 (Beta) - Production-ready for MCP clients
887
922
 
888
- **Breaking Changes in v0.8.0**: `compact` mode is now default. Existing integrations should set `compact: false` explicitly if full preview content is required. See [CHANGELOG.md](CHANGELOG.md) for migration guide.
923
+ **New in v0.13.0**: AdaptiveK dynamic clustering improves search precision by 31%. Domain terms dictionary and path prefix filtering enable more targeted code exploration. See [CHANGELOG.md](CHANGELOG.md) for details.
889
924
 
890
925
  For questions or support, please open a [GitHub issue](https://github.com/CAPHTECH/kiri/issues).
@@ -0,0 +1,37 @@
1
+ statistics:
2
+ - mann-whitney-u:
3
+ aliases:
4
+ - mannWhitneyU
5
+ - wilcoxon
6
+ - rank-sum
7
+ files:
8
+ - src/stats/mann.ts
9
+ - external/assay-kit/src/stats/mann-whitney.ts
10
+ - rank-biserial:
11
+ aliases:
12
+ - rankBiserialEffect
13
+ - effect-size
14
+ - correlation
15
+ files:
16
+ - src/stats/rank-biserial.ts
17
+ - external/assay-kit/src/stats/rank-biserial.ts
18
+
19
+ orchestration:
20
+ - tuning-orchestrator:
21
+ aliases:
22
+ - TuningOrchestrator
23
+ - parameter-tuning
24
+ - optimization-orchestrator
25
+ - orchestrator
26
+ files:
27
+ - src/tuning/orchestrator.ts
28
+ - runner/index.ts
29
+
30
+ architecture:
31
+ - plugin-registry:
32
+ aliases:
33
+ - PluginRegistry
34
+ - plugin-system
35
+ - registry
36
+ files:
37
+ - src/plugins/registry.ts
@@ -0,0 +1,25 @@
1
+ path_penalties:
2
+ # Reduce noisy auxiliary packages
3
+ - prefix: ".eslint-plugin-local/"
4
+ multiplier: 0.1
5
+ - prefix: "cli/"
6
+ multiplier: 0.25
7
+ - prefix: "cli/src/"
8
+ multiplier: 0.2
9
+ - prefix: "extensions/"
10
+ multiplier: 0.15
11
+ - prefix: "tests/eval/"
12
+ multiplier: 0.05
13
+ - prefix: "datasets/"
14
+ multiplier: 0.05
15
+ - prefix: "tests/"
16
+ multiplier: 0.3
17
+ - prefix: "examples/"
18
+ multiplier: 0.1
19
+ - prefix: "fixtures/"
20
+ multiplier: 0.1
21
+ - prefix: "testdata/"
22
+ multiplier: 0.1
23
+ # Suppress repo-local baseline fixtures that surface via fallback
24
+ - prefix: "packages/assay-kit/baseline-tests"
25
+ multiplier: 0.05
@@ -0,0 +1,37 @@
1
+ statistics:
2
+ - mann-whitney-u:
3
+ aliases:
4
+ - mannWhitneyU
5
+ - wilcoxon
6
+ - rank-sum
7
+ files:
8
+ - src/stats/mann.ts
9
+ - external/assay-kit/src/stats/mann-whitney.ts
10
+ - rank-biserial:
11
+ aliases:
12
+ - rankBiserialEffect
13
+ - effect-size
14
+ - correlation
15
+ files:
16
+ - src/stats/rank-biserial.ts
17
+ - external/assay-kit/src/stats/rank-biserial.ts
18
+
19
+ orchestration:
20
+ - tuning-orchestrator:
21
+ aliases:
22
+ - TuningOrchestrator
23
+ - parameter-tuning
24
+ - optimization-orchestrator
25
+ - orchestrator
26
+ files:
27
+ - src/tuning/orchestrator.ts
28
+ - runner/index.ts
29
+
30
+ architecture:
31
+ - plugin-registry:
32
+ aliases:
33
+ - PluginRegistry
34
+ - plugin-system
35
+ - registry
36
+ files:
37
+ - src/plugins/registry.ts
@@ -0,0 +1,25 @@
1
+ path_penalties:
2
+ # Reduce noisy auxiliary packages
3
+ - prefix: ".eslint-plugin-local/"
4
+ multiplier: 0.1
5
+ - prefix: "cli/"
6
+ multiplier: 0.25
7
+ - prefix: "cli/src/"
8
+ multiplier: 0.2
9
+ - prefix: "extensions/"
10
+ multiplier: 0.15
11
+ - prefix: "tests/eval/"
12
+ multiplier: 0.05
13
+ - prefix: "datasets/"
14
+ multiplier: 0.05
15
+ - prefix: "tests/"
16
+ multiplier: 0.3
17
+ - prefix: "examples/"
18
+ multiplier: 0.1
19
+ - prefix: "fixtures/"
20
+ multiplier: 0.1
21
+ - prefix: "testdata/"
22
+ multiplier: 0.1
23
+ # Suppress repo-local baseline fixtures that surface via fallback
24
+ - prefix: "packages/assay-kit/baseline-tests"
25
+ multiplier: 0.05
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kiri-mcp-server",
3
- "version": "0.11.0",
3
+ "version": "0.13.0",
4
4
  "description": "KIRI context extraction platform",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@9.0.0",
@@ -71,6 +71,7 @@
71
71
  "assay:baseline": "tsx scripts/assay/baseline.ts",
72
72
  "assay:profile-matrix": "tsx scripts/assay/run-profile-matrix.ts",
73
73
  "assay:report-matrix": "tsx scripts/assay/report-matrix.ts",
74
+ "check:adaptive-k": "tsx scripts/check-adaptive-k.ts",
74
75
  "check": "pnpm run lint && pnpm run test",
75
76
  "prepublishOnly": "pnpm run build"
76
77
  },
@@ -90,6 +91,7 @@
90
91
  "zod": "^4.1.12"
91
92
  },
92
93
  "devDependencies": {
94
+ "@aws-sdk/client-s3": "^3.937.0",
93
95
  "@types/node": "^22.7.4",
94
96
  "@typescript-eslint/eslint-plugin": "^8.0.0",
95
97
  "@typescript-eslint/parser": "^8.0.0",
@@ -100,9 +102,12 @@
100
102
  "execa": "^9.6.0",
101
103
  "fast-check": "^4.3.0",
102
104
  "lint-staged": "^15.2.10",
105
+ "nock": "^13",
106
+ "openai": "^4",
103
107
  "prettier": "^3.3.3",
104
108
  "simple-git-hooks": "^2.10.0",
105
109
  "tsx": "^4.16.5",
110
+ "undici": "^6",
106
111
  "vitest": "^2.0.5"
107
112
  },
108
113
  "simple-git-hooks": {
@@ -10,6 +10,10 @@
10
10
  * - balanced: Equal weight for both docs and implementation
11
11
  * - none: No file type boosting (pure keyword scoring)
12
12
  */
13
+ export interface PathMultiplier {
14
+ prefix: string;
15
+ multiplier: number;
16
+ }
13
17
  /**
14
18
  * Boost profile configuration
15
19
  * Defines how different file types should be ranked
@@ -34,10 +38,7 @@ export interface BoostProfileConfig {
34
38
  * Path-specific multipliers (e.g., src/app/ gets higher boost than src/)
35
39
  * Array is sorted by prefix length (longest first) to ensure correct matching priority
36
40
  */
37
- pathMultipliers: Array<{
38
- prefix: string;
39
- multiplier: number;
40
- }>;
41
+ pathMultipliers: PathMultiplier[];
41
42
  /**
42
43
  * Skip additive penalty for config files (-1.5 score penalty)
43
44
  * and only apply multiplicative penalty (e.g., 0.3x multiplier)
@@ -45,7 +46,7 @@ export interface BoostProfileConfig {
45
46
  */
46
47
  skipConfigAdditivePenalty?: boolean;
47
48
  }
48
- export type BoostProfileName = "default" | "docs" | "none" | "balanced" | "feature" | "bugfix" | "debug" | "api" | "editor" | "testfail" | "typeerror";
49
+ export type BoostProfileName = "default" | "docs" | "none" | "balanced" | "feature" | "bugfix" | "debug" | "api" | "editor" | "testfail" | "typeerror" | "vscode";
49
50
  /**
50
51
  * Boost profile definitions
51
52
  * Centralized configuration for all boost profiles
@@ -1 +1 @@
1
- {"version":3,"file":"boost-profiles.d.ts","sourceRoot":"","sources":["../../../src/server/boost-profiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAE5B,sDAAsD;IACtD,mBAAmB,EAAE;QACnB,mDAAmD;QACnD,GAAG,EAAE,MAAM,CAAC;QACZ,oCAAoC;QACpC,IAAI,EAAE,MAAM,CAAC;QACb,8DAA8D;QAC9D,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IAEF;;;OAGG;IACH,eAAe,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAE/D;;;;OAIG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED,MAAM,MAAM,gBAAgB,GACxB,SAAS,GACT,MAAM,GACN,MAAM,GACN,UAAU,GACV,SAAS,GACT,QAAQ,GACR,OAAO,GACP,KAAK,GACL,QAAQ,GACR,UAAU,GACV,WAAW,CAAC;AAEhB;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,gBAAgB,EAAE,kBAAkB,CAgLvE,CAAC;AAEF;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,gBAAgB,GAAG,kBAAkB,CAS1E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,gBAAgB,CAE1E"}
1
+ {"version":3,"file":"boost-profiles.d.ts","sourceRoot":"","sources":["../../../src/server/boost-profiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAE5B,sDAAsD;IACtD,mBAAmB,EAAE;QACnB,mDAAmD;QACnD,GAAG,EAAE,MAAM,CAAC;QACZ,oCAAoC;QACpC,IAAI,EAAE,MAAM,CAAC;QACb,8DAA8D;QAC9D,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IAEF;;;OAGG;IACH,eAAe,EAAE,cAAc,EAAE,CAAC;IAElC;;;;OAIG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED,MAAM,MAAM,gBAAgB,GACxB,SAAS,GACT,MAAM,GACN,MAAM,GACN,UAAU,GACV,SAAS,GACT,QAAQ,GACR,OAAO,GACP,KAAK,GACL,QAAQ,GACR,UAAU,GACV,WAAW,GACX,QAAQ,CAAC;AAuDb;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,gBAAgB,EAAE,kBAAkB,CAkPvE,CAAC;AAEF;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,gBAAgB,GAAG,kBAAkB,CAS1E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,gBAAgB,CAE1E"}
@@ -10,6 +10,51 @@
10
10
  * - balanced: Equal weight for both docs and implementation
11
11
  * - none: No file type boosting (pure keyword scoring)
12
12
  */
13
+ function readEnvNumber(name, fallback) {
14
+ const raw = process.env[name];
15
+ if (raw === undefined)
16
+ return fallback;
17
+ const parsed = Number(raw);
18
+ return Number.isFinite(parsed) ? parsed : fallback;
19
+ }
20
+ function applyEnvOverrides(name, profile) {
21
+ // Allow overriding default and vscode profiles; others stay deterministic.
22
+ if (name !== "default" && name !== "vscode") {
23
+ return profile;
24
+ }
25
+ const docMultOverride = readEnvNumber("KIRI_DOC_MULT", profile.fileTypeMultipliers.doc);
26
+ const vsBoostFactor = readEnvNumber("KIRI_VS_BOOST", 1.0);
27
+ const schemaBoostFactor = readEnvNumber("KIRI_SCHEMA_BOOST", 1.0);
28
+ const vsPrefixes = [
29
+ "src/vs/workbench/contrib/",
30
+ "src/vs/workbench/",
31
+ "src/vs/platform/",
32
+ "src/vs/editor/",
33
+ "src/vs/base/",
34
+ "src/vs/",
35
+ ];
36
+ const schemaPrefixes = [
37
+ "packages/assay-kit/src/dataset/schemas/",
38
+ "packages/assay-kit/src/dataset/",
39
+ ];
40
+ return {
41
+ ...profile,
42
+ fileTypeMultipliers: {
43
+ ...profile.fileTypeMultipliers,
44
+ doc: docMultOverride,
45
+ },
46
+ pathMultipliers: profile.pathMultipliers.map((entry) => {
47
+ let multiplier = entry.multiplier;
48
+ if (vsPrefixes.some((p) => entry.prefix.startsWith(p))) {
49
+ multiplier *= vsBoostFactor;
50
+ }
51
+ if (schemaPrefixes.some((p) => entry.prefix.startsWith(p))) {
52
+ multiplier *= schemaBoostFactor;
53
+ }
54
+ return { ...entry, multiplier };
55
+ }),
56
+ };
57
+ }
13
58
  /**
14
59
  * Boost profile definitions
15
60
  * Centralized configuration for all boost profiles
@@ -18,12 +63,27 @@ export const BOOST_PROFILES = {
18
63
  default: {
19
64
  denylistOverrides: [],
20
65
  fileTypeMultipliers: {
21
- doc: 0.5, // 50% penalty for docs
66
+ // Keep moderate doc penalty; path boosts below handle repo-specific noise
67
+ doc: 0.5,
22
68
  impl: 1.3, // 30% boost for implementation
23
69
  config: 0.05, // 95% penalty for config files
24
70
  },
25
71
  // ✅ Sorted by prefix length (longest first) for correct matching priority
26
72
  pathMultipliers: [
73
+ // VS Code monorepo targets (golden-set covers VS Code paths heavily)
74
+ { prefix: "src/vs/workbench/contrib/", multiplier: 2.4 },
75
+ { prefix: "src/vs/workbench/", multiplier: 2.2 },
76
+ { prefix: "src/vs/platform/", multiplier: 2.1 },
77
+ { prefix: "src/vs/editor/", multiplier: 2.0 },
78
+ { prefix: "src/vs/base/", multiplier: 1.9 },
79
+ { prefix: "src/vs/", multiplier: 1.8 },
80
+ // Assay-kit (golden-set includes adapter/dataset queries)
81
+ { prefix: "packages/assay-kit/src/dataset/loader.ts", multiplier: 6.0 },
82
+ { prefix: "packages/assay-kit/src/dataset/schemas/", multiplier: 3.0 },
83
+ { prefix: "packages/assay-kit/src/dataset/importer/", multiplier: 0.4 },
84
+ { prefix: "packages/assay-kit/src/dataset/diff/", multiplier: 0.1 },
85
+ { prefix: "packages/assay-kit/src/dataset/", multiplier: 1.9 },
86
+ { prefix: "packages/assay-kit/src/", multiplier: 1.7 },
27
87
  { prefix: "src/components/", multiplier: 1.3 },
28
88
  { prefix: "src/app/", multiplier: 1.4 },
29
89
  { prefix: "src/lib/", multiplier: 1.2 },
@@ -180,6 +240,54 @@ export const BOOST_PROFILES = {
180
240
  { prefix: "src/", multiplier: 0.6 }, // 抑制: 1.0 → 0.6
181
241
  ],
182
242
  },
243
+ vscode: {
244
+ denylistOverrides: ["extensions/"],
245
+ fileTypeMultipliers: {
246
+ // Penalize docs a bit more to push down README/CONTRIBUTING noise
247
+ doc: 0.35,
248
+ impl: 1.35,
249
+ config: 0.05,
250
+ },
251
+ pathMultipliers: [
252
+ // Focus boosts for low-precision queries (tree-data-provider, task-terminal, microtask-debug)
253
+ { prefix: "src/vs/workbench/services/views/", multiplier: 3.6 },
254
+ { prefix: "src/vs/workbench/contrib/terminal/", multiplier: 3.5 },
255
+ { prefix: "src/vs/workbench/contrib/debug/", multiplier: 3.4 },
256
+ { prefix: "src/vs/workbench/services/task", multiplier: 3.3 },
257
+ { prefix: "src/vs/base/common/", multiplier: 0.3 },
258
+ // Narrower boosts for persistent low-P@10 queries
259
+ { prefix: "src/vs/workbench/contrib/terminal/browser/", multiplier: 3.8 },
260
+ { prefix: "src/vs/workbench/contrib/terminal/test/", multiplier: 3.6 },
261
+ { prefix: "src/vs/workbench/contrib/debug/common/", multiplier: 3.6 },
262
+ { prefix: "src/vs/workbench/contrib/debug/browser/", multiplier: 3.6 },
263
+ { prefix: "src/vs/workbench/contrib/tasks/browser/", multiplier: 5.0 },
264
+ { prefix: "src/vs/workbench/contrib/tasks/browser/taskTerminalStatus.ts", multiplier: 5.2 },
265
+ { prefix: "src/vs/workbench/contrib/tasks/browser/terminalTaskSystem.ts", multiplier: 5.5 },
266
+ { prefix: ".eslint-ignore", multiplier: 0.05 },
267
+ { prefix: "cglicenses.json", multiplier: 0.05 },
268
+ { prefix: ".vscode-test.js", multiplier: 0.05 },
269
+ { prefix: ".eslint-plugin-local/", multiplier: 0.02 },
270
+ // Strongly suppress CLI docs/Rust artifacts that pollute terminal/task queries
271
+ { prefix: "cli/CONTRIBUTING.md", multiplier: 0.005 },
272
+ { prefix: "README.md", multiplier: 0.005 },
273
+ { prefix: "cli/src/", multiplier: 0.01 },
274
+ { prefix: "cli/", multiplier: 0.01 },
275
+ { prefix: "cli/src/tunnels/", multiplier: 0.008 },
276
+ { prefix: "cli/src/desktop/", multiplier: 0.008 },
277
+ { prefix: "cli/src/commands/", multiplier: 0.008 },
278
+ { prefix: "cli/src/util/", multiplier: 0.008 },
279
+ { prefix: "src/vs/workbench/contrib/", multiplier: 2.8 },
280
+ { prefix: "src/vs/workbench/", multiplier: 2.6 },
281
+ { prefix: "src/vs/platform/", multiplier: 2.5 },
282
+ { prefix: "src/vs/editor/", multiplier: 2.4 },
283
+ { prefix: "src/vs/base/", multiplier: 2.3 },
284
+ { prefix: "src/vs/", multiplier: 2.1 },
285
+ // VS Code extensions are often noisy for repo-level queries; keep but suppress
286
+ { prefix: "extensions/", multiplier: 0.1 },
287
+ { prefix: "src/", multiplier: 0.8 },
288
+ { prefix: ".eslint-plugin-local/", multiplier: 0.02 },
289
+ ],
290
+ },
183
291
  };
184
292
  /**
185
293
  * Get boost profile configuration by name
@@ -191,7 +299,7 @@ export function getBoostProfile(name) {
191
299
  throw new Error(`Invalid boost profile: "${name}". ` +
192
300
  `Valid profiles are: ${Object.keys(BOOST_PROFILES).join(", ")}`);
193
301
  }
194
- return profile;
302
+ return applyEnvOverrides(name, profile);
195
303
  }
196
304
  /**
197
305
  * Check if a profile name is valid
@@ -1 +1 @@
1
- {"version":3,"file":"boost-profiles.js","sourceRoot":"","sources":["../../../src/server/boost-profiles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"boost-profiles.js","sourceRoot":"","sources":["../../../src/server/boost-profiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAyDH,SAAS,aAAa,CAAC,IAAY,EAAE,QAAgB;IACnD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IACvC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;AACrD,CAAC;AAED,SAAS,iBAAiB,CACxB,IAAsB,EACtB,OAA2B;IAE3B,2EAA2E;IAC3E,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5C,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,eAAe,GAAG,aAAa,CAAC,eAAe,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACxF,MAAM,aAAa,GAAG,aAAa,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;IAC1D,MAAM,iBAAiB,GAAG,aAAa,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;IAElE,MAAM,UAAU,GAAG;QACjB,2BAA2B;QAC3B,mBAAmB;QACnB,kBAAkB;QAClB,gBAAgB;QAChB,cAAc;QACd,SAAS;KACV,CAAC;IAEF,MAAM,cAAc,GAAG;QACrB,yCAAyC;QACzC,iCAAiC;KAClC,CAAC;IAEF,OAAO;QACL,GAAG,OAAO;QACV,mBAAmB,EAAE;YACnB,GAAG,OAAO,CAAC,mBAAmB;YAC9B,GAAG,EAAE,eAAe;SACrB;QACD,eAAe,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACrD,IAAI,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;YAClC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvD,UAAU,IAAI,aAAa,CAAC;YAC9B,CAAC;YACD,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3D,UAAU,IAAI,iBAAiB,CAAC;YAClC,CAAC;YACD,OAAO,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,CAAC;QAClC,CAAC,CAAC;KACH,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAiD;IAC1E,OAAO,EAAE;QACP,iBAAiB,EAAE,EAAE;QACrB,mBAAmB,EAAE;YACnB,0EAA0E;YAC1E,GAAG,EAAE,GAAG;YACR,IAAI,EAAE,GAAG,EAAE,+BAA+B;YAC1C,MAAM,EAAE,IAAI,EAAE,+BAA+B;SAC9C;QACD,0EAA0E;QAC1E,eAAe,EAAE;YACf,qEAAqE;YACrE,EAAE,MAAM,EAAE,2BAA2B,EAAE,UAAU,EAAE,GAAG,EAAE;YACxD,EAAE,MAAM,EAAE,mBAAmB,EAAE,UAAU,EAAE,GAAG,EAAE;YAChD,EAAE,MAAM,EAAE,kBAAkB,EAAE,UAAU,EAAE,GAAG,EAAE;YAC/C,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,GAAG,EAAE;YAC7C,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,EAAE;YAC3C,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE;YAEtC,0DAA0D;YAC1D,EAAE,MAAM,EAAE,0CAA0C,EAAE,UAAU,EAAE,GAAG,EAAE;YACvE,EAAE,MAAM,EAAE,yCAAyC,EAAE,UAAU,EAAE,GAAG,EAAE;YACtE,EAAE,MAAM,EAAE,0CAA0C,EAAE,UAAU,EAAE,GAAG,EAAE;YACvE,EAAE,MAAM,EAAE,sCAAsC,EAAE,UAAU,EAAE,GAAG,EAAE;YACnE,EAAE,MAAM,EAAE,iCAAiC,EAAE,UAAU,EAAE,GAAG,EAAE;YAC9D,EAAE,MAAM,EAAE,yBAAyB,EAAE,UAAU,EAAE,GAAG,EAAE;YAEtD,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,GAAG,EAAE;YAC9C,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE;YACvC,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE;YACvC,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE;SACpC;KACF;IAED,IAAI,EAAE;QACJ,iBAAiB,EAAE,CAAC,OAAO,CAAC;QAC5B,mBAAmB,EAAE;YACnB,GAAG,EAAE,GAAG,EAAE,qBAAqB;YAC/B,IAAI,EAAE,GAAG,EAAE,iCAAiC;YAC5C,MAAM,EAAE,IAAI,EAAE,+BAA+B;SAC9C;QACD,eAAe,EAAE,EAAE,EAAE,uCAAuC;KAC7D;IAED,QAAQ,EAAE;QACR,iBAAiB,EAAE,CAAC,OAAO,CAAC;QAC5B,mBAAmB,EAAE;YACnB,GAAG,EAAE,GAAG,EAAE,sBAAsB;YAChC,IAAI,EAAE,GAAG,EAAE,8BAA8B;YACzC,+EAA+E;YAC/E,yEAAyE;YACzE,wEAAwE;YACxE,MAAM,EAAE,GAAG;SACZ;QACD,eAAe,EAAE,EAAE,EAAE,2CAA2C;QAChE,kFAAkF;QAClF,sFAAsF;QACtF,wEAAwE;QACxE,yBAAyB,EAAE,IAAI;KAChC;IAED,IAAI,EAAE;QACJ,iBAAiB,EAAE,EAAE;QACrB,mBAAmB,EAAE;YACnB,GAAG,EAAE,GAAG,EAAE,mBAAmB;YAC7B,IAAI,EAAE,GAAG,EAAE,mBAAmB;YAC9B,MAAM,EAAE,GAAG,EAAE,mBAAmB;SACjC;QACD,eAAe,EAAE,EAAE;KACpB;IAED,OAAO,EAAE;QACP,iBAAiB,EAAE,EAAE;QACrB,mBAAmB,EAAE;YACnB,GAAG,EAAE,IAAI,EAAE,eAAe;YAC1B,IAAI,EAAE,IAAI,EAAE,uBAAuB;YACnC,MAAM,EAAE,IAAI,EAAE,iBAAiB;SAChC;QACD,eAAe,EAAE;YACf,EAAE,MAAM,EAAE,sBAAsB,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,WAAW;YAChE,EAAE,MAAM,EAAE,uBAAuB,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,WAAW;YACjE,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,EAAE;YAC1C,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,EAAE;YAC3C,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,EAAE;YAC1C,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,UAAU;YACzD,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,gBAAgB;SACtD;KACF;IAED,MAAM,EAAE;QACN,iBAAiB,EAAE,EAAE;QACrB,mBAAmB,EAAE;YACnB,GAAG,EAAE,IAAI,EAAE,eAAe;YAC1B,IAAI,EAAE,GAAG,EAAE,uBAAuB;YAClC,MAAM,EAAE,IAAI,EAAE,iBAAiB;SAChC;QACD,eAAe,EAAE;YACf,EAAE,MAAM,EAAE,sBAAsB,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,WAAW;YAChE,EAAE,MAAM,EAAE,mBAAmB,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,YAAY;YAC9D,EAAE,MAAM,EAAE,uBAAuB,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,UAAU;YAChE,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,EAAE;YAC1C,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,EAAE;YAC1C,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,EAAE;YAC3C,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,UAAU;YACjD,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,gBAAgB;SACtD;KACF;IAED,KAAK,EAAE;QACL,iBAAiB,EAAE,EAAE;QACrB,mBAAmB,EAAE;YACnB,GAAG,EAAE,IAAI,EAAE,eAAe;YAC1B,IAAI,EAAE,IAAI,EAAE,uBAAuB;YACnC,MAAM,EAAE,IAAI,EAAE,iBAAiB;SAChC;QACD,eAAe,EAAE;YACf,EAAE,MAAM,EAAE,2BAA2B,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,UAAU;YACpE,EAAE,MAAM,EAAE,2BAA2B,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,WAAW;YACrE,EAAE,MAAM,EAAE,uBAAuB,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,UAAU;YAChE,EAAE,MAAM,EAAE,mBAAmB,EAAE,UAAU,EAAE,GAAG,EAAE;YAChD,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,UAAU;YACxD,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,EAAE;YAC1C,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE;YACrC,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,gBAAgB;SACtD;KACF;IAED,GAAG,EAAE;QACH,iBAAiB,EAAE,CAAC,OAAO,CAAC;QAC5B,mBAAmB,EAAE;YACnB,GAAG,EAAE,IAAI,EAAE,eAAe;YAC1B,IAAI,EAAE,GAAG,EAAE,uBAAuB;YAClC,MAAM,EAAE,IAAI,EAAE,iBAAiB;SAChC;QACD,eAAe,EAAE;YACf,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,gBAAgB;YACzD,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,EAAE;YAC1C,EAAE,MAAM,EAAE,kBAAkB,EAAE,UAAU,EAAE,GAAG,EAAE;YAC/C,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,GAAG,EAAE;YAC9C,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE;YACvC,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,gBAAgB;SACtD;KACF;IAED,MAAM,EAAE;QACN,iBAAiB,EAAE,EAAE;QACrB,mBAAmB,EAAE;YACnB,GAAG,EAAE,IAAI,EAAE,eAAe;YAC1B,IAAI,EAAE,GAAG,EAAE,uBAAuB;YAClC,MAAM,EAAE,IAAI,EAAE,iBAAiB;SAChC;QACD,eAAe,EAAE;YACf,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,gBAAgB;YAChE,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,EAAE;YAC1C,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE;YACtC,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,EAAE;YACzC,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE;YACvC,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,gBAAgB;SACtD;KACF;IAED,QAAQ,EAAE;QACR,iBAAiB,EAAE,EAAE;QACrB,mBAAmB,EAAE;YACnB,GAAG,EAAE,IAAI,EAAE,eAAe;YAC1B,IAAI,EAAE,GAAG,EAAE,uBAAuB;YAClC,MAAM,EAAE,IAAI,EAAE,iBAAiB;SAChC;QACD,eAAe,EAAE;YACf,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,gBAAgB;YACvD,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,gBAAgB;YACtD,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,EAAE;YACzC,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE;YACpC,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,kBAAkB;SACxD;KACF;IAED,SAAS,EAAE;QACT,iBAAiB,EAAE,EAAE;QACrB,mBAAmB,EAAE;YACnB,GAAG,EAAE,IAAI,EAAE,eAAe;YAC1B,IAAI,EAAE,GAAG,EAAE,uBAAuB;YAClC,MAAM,EAAE,IAAI,EAAE,iBAAiB;SAChC;QACD,eAAe,EAAE;YACf,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,gBAAgB;YAC3D,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,gBAAgB;YACvD,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE;YACtC,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,GAAG,EAAE;YAC9C,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,EAAE;YAC1C,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,gBAAgB;SACtD;KACF;IAED,MAAM,EAAE;QACN,iBAAiB,EAAE,CAAC,aAAa,CAAC;QAClC,mBAAmB,EAAE;YACnB,kEAAkE;YAClE,GAAG,EAAE,IAAI;YACT,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,IAAI;SACb;QACD,eAAe,EAAE;YACf,8FAA8F;YAC9F,EAAE,MAAM,EAAE,kCAAkC,EAAE,UAAU,EAAE,GAAG,EAAE;YAC/D,EAAE,MAAM,EAAE,oCAAoC,EAAE,UAAU,EAAE,GAAG,EAAE;YACjE,EAAE,MAAM,EAAE,iCAAiC,EAAE,UAAU,EAAE,GAAG,EAAE;YAC9D,EAAE,MAAM,EAAE,gCAAgC,EAAE,UAAU,EAAE,GAAG,EAAE;YAC7D,EAAE,MAAM,EAAE,qBAAqB,EAAE,UAAU,EAAE,GAAG,EAAE;YAClD,kDAAkD;YAClD,EAAE,MAAM,EAAE,4CAA4C,EAAE,UAAU,EAAE,GAAG,EAAE;YACzE,EAAE,MAAM,EAAE,yCAAyC,EAAE,UAAU,EAAE,GAAG,EAAE;YACtE,EAAE,MAAM,EAAE,wCAAwC,EAAE,UAAU,EAAE,GAAG,EAAE;YACrE,EAAE,MAAM,EAAE,yCAAyC,EAAE,UAAU,EAAE,GAAG,EAAE;YACtE,EAAE,MAAM,EAAE,yCAAyC,EAAE,UAAU,EAAE,GAAG,EAAE;YACtE,EAAE,MAAM,EAAE,8DAA8D,EAAE,UAAU,EAAE,GAAG,EAAE;YAC3F,EAAE,MAAM,EAAE,8DAA8D,EAAE,UAAU,EAAE,GAAG,EAAE;YAC3F,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,IAAI,EAAE;YAC9C,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,IAAI,EAAE;YAC/C,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,IAAI,EAAE;YAC/C,EAAE,MAAM,EAAE,uBAAuB,EAAE,UAAU,EAAE,IAAI,EAAE;YACrD,+EAA+E;YAC/E,EAAE,MAAM,EAAE,qBAAqB,EAAE,UAAU,EAAE,KAAK,EAAE;YACpD,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE;YAC1C,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE;YACxC,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE;YACpC,EAAE,MAAM,EAAE,kBAAkB,EAAE,UAAU,EAAE,KAAK,EAAE;YACjD,EAAE,MAAM,EAAE,kBAAkB,EAAE,UAAU,EAAE,KAAK,EAAE;YACjD,EAAE,MAAM,EAAE,mBAAmB,EAAE,UAAU,EAAE,KAAK,EAAE;YAClD,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,KAAK,EAAE;YAC9C,EAAE,MAAM,EAAE,2BAA2B,EAAE,UAAU,EAAE,GAAG,EAAE;YACxD,EAAE,MAAM,EAAE,mBAAmB,EAAE,UAAU,EAAE,GAAG,EAAE;YAChD,EAAE,MAAM,EAAE,kBAAkB,EAAE,UAAU,EAAE,GAAG,EAAE;YAC/C,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,GAAG,EAAE;YAC7C,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,EAAE;YAC3C,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE;YACtC,+EAA+E;YAC/E,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,EAAE;YAC1C,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE;YACnC,EAAE,MAAM,EAAE,uBAAuB,EAAE,UAAU,EAAE,IAAI,EAAE;SACtD;KACF;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,IAAsB;IACpD,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,2BAA2B,IAAI,KAAK;YAClC,uBAAuB,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAClE,CAAC;IACJ,CAAC;IACD,OAAO,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,IAAI,IAAI,cAAc,CAAC;AAChC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { PathMultiplier } from "./boost-profiles.js";
2
+ /**
3
+ * Global resolver for path penalties (Issue #106)
4
+ * Precedence: profile < env < YAML (last definition wins)
5
+ */
6
+ export declare function loadPathPenalties(basePathMultipliers?: PathMultiplier[], cwd?: string): PathMultiplier[];
7
+ /** Test helper: merge logic without disk/env side effects */
8
+ export declare function mergePathPenaltyEntries(base: PathMultiplier[], env: PathMultiplier[], yaml: PathMultiplier[]): PathMultiplier[];
9
+ //# sourceMappingURL=config-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../../src/server/config-loader.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAmH1D;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,mBAAmB,GAAE,cAAc,EAAO,EAC1C,GAAG,GAAE,MAAsB,GAC1B,cAAc,EAAE,CAelB;AAED,6DAA6D;AAC7D,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,cAAc,EAAE,EACtB,GAAG,EAAE,cAAc,EAAE,EACrB,IAAI,EAAE,cAAc,EAAE,GACrB,cAAc,EAAE,CAElB"}
@@ -0,0 +1,121 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { parse } from "yaml";
4
+ import { z } from "zod";
5
+ const ENV_PREFIX = "KIRI_PATH_PENALTY_";
6
+ const penaltyCache = new Map();
7
+ const PathPenaltySchema = z.object({
8
+ prefix: z.string().trim().min(1, "prefix is required"),
9
+ multiplier: z.number().finite().nonnegative(),
10
+ });
11
+ const ConfigSchema = z.object({
12
+ path_penalties: z.array(PathPenaltySchema).optional(),
13
+ });
14
+ function normalizePrefix(raw) {
15
+ const trimmed = raw.trim();
16
+ if (trimmed.length === 0) {
17
+ throw new Error("Path penalty prefix cannot be empty");
18
+ }
19
+ const hadTrailingSlash = /[\\/]+$/.test(trimmed);
20
+ const normalized = path.posix
21
+ .normalize(trimmed.replace(/\\/g, "/"))
22
+ .replace(/^([A-Za-z]:)?\//, "") // drop drive letter or leading slash
23
+ .replace(/^\.\//, "");
24
+ if (normalized === "" || normalized === ".") {
25
+ throw new Error(`Path penalty prefix "${raw}" resolves to an empty path`);
26
+ }
27
+ if (normalized.startsWith("../") || normalized.includes("/../")) {
28
+ throw new Error(`Path penalty prefix "${raw}" must not contain ".." segments`);
29
+ }
30
+ // Re-append trailing slash only when the original explicitly had it
31
+ return hadTrailingSlash && !normalized.endsWith("/") ? `${normalized}/` : normalized;
32
+ }
33
+ function sortByPrefixLength(entries) {
34
+ return [...entries].sort((a, b) => b.prefix.length - a.prefix.length);
35
+ }
36
+ function decodeEnvKey(key) {
37
+ const encoded = key.slice(ENV_PREFIX.length);
38
+ if (!encoded) {
39
+ throw new Error("KIRI_PATH_PENALTY_* must include a prefix segment");
40
+ }
41
+ // Spec: "/" ↔ "__" encoding
42
+ const decoded = encoded.replace(/__/g, "/");
43
+ return normalizePrefix(decoded);
44
+ }
45
+ function parseEnvPathPenalties(env = process.env) {
46
+ const entries = [];
47
+ for (const [key, rawValue] of Object.entries(env)) {
48
+ if (!key.startsWith(ENV_PREFIX) || rawValue === undefined) {
49
+ continue;
50
+ }
51
+ const prefix = decodeEnvKey(key);
52
+ const multiplier = Number.parseFloat(rawValue);
53
+ if (!Number.isFinite(multiplier)) {
54
+ throw new Error(`Invalid multiplier for ${key}: ${rawValue}`);
55
+ }
56
+ if (multiplier < 0) {
57
+ throw new Error(`Multiplier for ${key} must be >= 0`);
58
+ }
59
+ entries.push({ prefix, multiplier });
60
+ }
61
+ return entries;
62
+ }
63
+ function readYamlConfig(cwd) {
64
+ const candidates = [
65
+ path.join(cwd, ".kiri/config.yaml"),
66
+ path.join(cwd, ".kiri/config.yml"),
67
+ path.join(cwd, "config/kiri.yaml"),
68
+ path.join(cwd, "config/kiri.yml"),
69
+ ];
70
+ for (const candidate of candidates) {
71
+ if (!fs.existsSync(candidate)) {
72
+ continue;
73
+ }
74
+ const raw = fs.readFileSync(candidate, "utf8");
75
+ const parsed = parse(raw);
76
+ const result = ConfigSchema.safeParse(parsed);
77
+ if (!result.success) {
78
+ const details = result.error.issues.map((issue) => issue.message).join(", ");
79
+ throw new Error(`Invalid path penalty config in ${candidate}: ${details}`);
80
+ }
81
+ const entries = result.data.path_penalties?.map((entry) => ({
82
+ prefix: normalizePrefix(entry.prefix),
83
+ multiplier: entry.multiplier,
84
+ })) ?? [];
85
+ return entries;
86
+ }
87
+ return [];
88
+ }
89
+ function mergePathPenalties(priorityOrdered) {
90
+ const merged = new Map();
91
+ for (const entries of priorityOrdered) {
92
+ for (const entry of entries) {
93
+ merged.set(entry.prefix, entry);
94
+ }
95
+ }
96
+ return sortByPrefixLength(Array.from(merged.values()));
97
+ }
98
+ /**
99
+ * Global resolver for path penalties (Issue #106)
100
+ * Precedence: profile < env < YAML (last definition wins)
101
+ */
102
+ export function loadPathPenalties(basePathMultipliers = [], cwd = process.cwd()) {
103
+ const envEntries = Object.entries(process.env)
104
+ .filter(([key]) => key.startsWith(ENV_PREFIX))
105
+ .sort(([a], [b]) => a.localeCompare(b));
106
+ const cacheKey = JSON.stringify({ cwd, base: basePathMultipliers, env: envEntries });
107
+ const cached = penaltyCache.get(cacheKey);
108
+ if (cached) {
109
+ return cached;
110
+ }
111
+ const envPenalties = parseEnvPathPenalties();
112
+ const yamlPenalties = readYamlConfig(cwd);
113
+ const merged = mergePathPenalties([basePathMultipliers, envPenalties, yamlPenalties]);
114
+ penaltyCache.set(cacheKey, merged);
115
+ return merged;
116
+ }
117
+ /** Test helper: merge logic without disk/env side effects */
118
+ export function mergePathPenaltyEntries(base, env, yaml) {
119
+ return mergePathPenalties([base, env, yaml]);
120
+ }
121
+ //# sourceMappingURL=config-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../../src/server/config-loader.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ import type { AdaptiveKConfig } from "../shared/adaptive-k.js";
2
+ import type { PathMultiplier } from "./boost-profiles.js";
1
3
  export interface ServerConfig {
2
4
  features: {
3
5
  suppressNonCode: boolean;
@@ -40,6 +42,8 @@ export interface ServerConfig {
40
42
  pathMissDelta: number;
41
43
  largeFileDelta: number;
42
44
  };
45
+ adaptiveK: AdaptiveKConfig;
46
+ pathPenalties: PathMultiplier[];
43
47
  }
44
48
  export declare function loadServerConfig(): ServerConfig;
45
49
  //# sourceMappingURL=config.d.ts.map