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.
- package/README.md +47 -12
- package/config/domain-terms.yml +37 -0
- package/config/kiri.yml +25 -0
- package/dist/config/domain-terms.yml +37 -0
- package/dist/config/kiri.yml +25 -0
- package/dist/package.json +6 -1
- package/dist/src/server/boost-profiles.d.ts +6 -5
- package/dist/src/server/boost-profiles.d.ts.map +1 -1
- package/dist/src/server/boost-profiles.js +110 -2
- package/dist/src/server/boost-profiles.js.map +1 -1
- package/dist/src/server/config-loader.d.ts +9 -0
- package/dist/src/server/config-loader.d.ts.map +1 -0
- package/dist/src/server/config-loader.js +121 -0
- package/dist/src/server/config-loader.js.map +1 -0
- package/dist/src/server/config.d.ts +4 -0
- package/dist/src/server/config.d.ts.map +1 -1
- package/dist/src/server/config.js +61 -0
- package/dist/src/server/config.js.map +1 -1
- package/dist/src/server/context.d.ts +4 -0
- package/dist/src/server/context.d.ts.map +1 -1
- package/dist/src/server/context.js +6 -0
- package/dist/src/server/context.js.map +1 -1
- package/dist/src/server/domain-terms.d.ts +28 -0
- package/dist/src/server/domain-terms.d.ts.map +1 -0
- package/dist/src/server/domain-terms.js +203 -0
- package/dist/src/server/domain-terms.js.map +1 -0
- package/dist/src/server/handlers.d.ts +3 -0
- package/dist/src/server/handlers.d.ts.map +1 -1
- package/dist/src/server/handlers.js +386 -19
- package/dist/src/server/handlers.js.map +1 -1
- package/dist/src/server/observability/metrics.d.ts +12 -0
- package/dist/src/server/observability/metrics.d.ts.map +1 -1
- package/dist/src/server/observability/metrics.js +11 -0
- package/dist/src/server/observability/metrics.js.map +1 -1
- package/dist/src/server/rpc.d.ts.map +1 -1
- package/dist/src/server/rpc.js +40 -4
- package/dist/src/server/rpc.js.map +1 -1
- package/dist/src/server/runtime.d.ts.map +1 -1
- package/dist/src/server/runtime.js +1 -0
- package/dist/src/server/runtime.js.map +1 -1
- package/dist/src/server/services/index.d.ts +2 -0
- package/dist/src/server/services/index.d.ts.map +1 -1
- package/dist/src/server/services/index.js +12 -0
- package/dist/src/server/services/index.js.map +1 -1
- package/dist/src/shared/adaptive-k.d.ts +12 -0
- package/dist/src/shared/adaptive-k.d.ts.map +1 -0
- package/dist/src/shared/adaptive-k.js +8 -0
- package/dist/src/shared/adaptive-k.js.map +1 -0
- package/dist/src/shared/config-validate-adaptive-k.d.ts +3 -0
- package/dist/src/shared/config-validate-adaptive-k.d.ts.map +1 -0
- package/dist/src/shared/config-validate-adaptive-k.js +44 -0
- package/dist/src/shared/config-validate-adaptive-k.js.map +1 -0
- package/dist/src/shared/tokenizer.d.ts +1 -1
- package/dist/src/shared/tokenizer.d.ts.map +1 -1
- package/dist/src/shared/tokenizer.js +97 -15
- package/dist/src/shared/tokenizer.js.map +1 -1
- 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
|
-
[](package.json)
|
|
6
6
|
[](LICENSE)
|
|
7
7
|
[](https://www.typescriptlang.org/)
|
|
8
8
|
[](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
|
-
## 🆕 What
|
|
23
|
+
## 🆕 What's New in v0.13.0
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
-
|
|
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 |
|
|
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.
|
|
921
|
+
**Status**: v0.13.0 (Beta) - Production-ready for MCP clients
|
|
887
922
|
|
|
888
|
-
**
|
|
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
|
package/config/kiri.yml
ADDED
|
@@ -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.
|
|
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:
|
|
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,
|
|
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
|
-
|
|
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":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"boost-profiles.js","sourceRoot":"","sources":["../../../src/server/boost-profiles.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|