@blxzer/cursor-trellis 0.1.2 → 0.1.3
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 +2 -0
- package/dist/templates/cursor/rules/retrieval-routing.mdc +9 -7
- package/dist/templates/markdown/spec/guides/retrieval-daily-guide.md.txt +11 -6
- package/dist/templates/trellis/index.d.ts +1 -0
- package/dist/templates/trellis/index.d.ts.map +1 -1
- package/dist/templates/trellis/index.js +2 -0
- package/dist/templates/trellis/index.js.map +1 -1
- package/dist/templates/trellis/scripts/common/codebase_retrieval_router.py +78 -29
- package/dist/templates/trellis/scripts/common/cursor_retrieval_env.py +92 -0
- package/dist/templates/trellis/scripts/common/retrieval_adapter_metadata.py +100 -9
- package/dist/templates/trellis/scripts/common/retrieval_agent_instructions.py +76 -31
- package/dist/templates/trellis/scripts/common/retrieval_tool_classification.py +18 -3
- package/dist/templates/trellis/scripts/common/semantic_plan_gate.py +19 -0
- package/dist/templates/trellis/scripts/common/smart_search_evidence.py +5 -2
- package/dist/templates/trellis/scripts/cursor_retrieval_probe.py +396 -0
- package/dist/templates/trellis/scripts/cursor_retrieval_probe_prompt.md +300 -0
- package/dist/templates/trellis/scripts/retrieval_probe_matrix_template.json +126 -0
- package/dist/utils/codebase-retrieval-router.d.ts +5 -0
- package/dist/utils/codebase-retrieval-router.d.ts.map +1 -1
- package/dist/utils/codebase-retrieval-router.js +48 -28
- package/dist/utils/codebase-retrieval-router.js.map +1 -1
- package/dist/utils/cursor-retrieval-env.d.ts +28 -0
- package/dist/utils/cursor-retrieval-env.d.ts.map +1 -0
- package/dist/utils/cursor-retrieval-env.js +89 -0
- package/dist/utils/cursor-retrieval-env.js.map +1 -0
- package/dist/utils/project-capabilities.d.ts.map +1 -1
- package/dist/utils/project-capabilities.js +22 -15
- package/dist/utils/project-capabilities.js.map +1 -1
- package/dist/utils/retrieval-agent-instructions.d.ts.map +1 -1
- package/dist/utils/retrieval-agent-instructions.js +37 -21
- package/dist/utils/retrieval-agent-instructions.js.map +1 -1
- package/dist/utils/retrieval-tool-classification.d.ts +2 -0
- package/dist/utils/retrieval-tool-classification.d.ts.map +1 -1
- package/dist/utils/retrieval-tool-classification.js +10 -2
- package/dist/utils/retrieval-tool-classification.js.map +1 -1
- package/dist/utils/semantic-plan-gate.d.ts +8 -0
- package/dist/utils/semantic-plan-gate.d.ts.map +1 -0
- package/dist/utils/semantic-plan-gate.js +42 -0
- package/dist/utils/semantic-plan-gate.js.map +1 -0
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -40,6 +40,8 @@ trellis init --cursor
|
|
|
40
40
|
|
|
41
41
|
Optional: `trellis init --cursor --cursor2plus` for Cursor++ BYOK local bundle; see [docs/cursor.md](docs/cursor.md#cursor-optional-appendix).
|
|
42
42
|
|
|
43
|
+
**Codebase retrieval (optional):** add `--capability codebase-retrieval` (or select it in the init prompt) to generate `.cursor/mcp.json` entries for **fast-context** and **codegraph**. Recommended for **Cursor++ BYOK** local concept search (`fast_context_search`); not required if you only need other capabilities (e.g. playwright).
|
|
44
|
+
|
|
43
45
|
## After init: what appears
|
|
44
46
|
|
|
45
47
|
```text
|
|
@@ -13,7 +13,7 @@ If the user message or Trellis context contains a block starting with `## 代码
|
|
|
13
13
|
|
|
14
14
|
1. Execute steps **in order** before stating file paths or behavior claims.
|
|
15
15
|
2. Treat each step as mandatory tooling (not suggestions).
|
|
16
|
-
3. Finish with **Read**
|
|
16
|
+
3. Finish with **Read** verification on cited sources (definition jumps use **codegraph_node**, not LSP).
|
|
17
17
|
|
|
18
18
|
Generate a fresh plan when needed:
|
|
19
19
|
|
|
@@ -35,14 +35,16 @@ python ./.trellis/scripts/route_codebase_retrieval.py "<question>" --json
|
|
|
35
35
|
| Who calls / blast radius | **codegraph_callers** → Grep for imports/callbacks |
|
|
36
36
|
| Same name across packages (trap) | **codegraph_search** / **codegraph_explore** → Grep |
|
|
37
37
|
| Extension symbols | **codegraph_search** under `extensions/` |
|
|
38
|
-
| Conceptual / how does X work |
|
|
38
|
+
| Conceptual / how does X work | **Native:** built-in `@codebase` / semantic search. **BYOK:** **fast_context_search** (fast-context MCP). Plans show `cursorEnv`. |
|
|
39
39
|
| Policy / architecture / boundaries / storage rules | **Grep** on `AGENTS.md`, `**/AGENTS.md`, `.trellis/spec/**`, `README.md` (router `policy-docs-rg`) before implementation modules |
|
|
40
|
-
| Definition jump | **
|
|
41
|
-
| Wide cross-cutting explore | **DEEP_SEARCH
|
|
40
|
+
| Definition jump | **codegraph_node** / **codegraph_search**, then **Read** (Agent does not expose GO_TO_DEFINITION / LSP) |
|
|
41
|
+
| Wide cross-cutting explore | **Native:** DEEP_SEARCH or Explore subagent. **BYOK:** **Task explore** subagent, then Grep/codegraph/Read |
|
|
42
42
|
|
|
43
|
-
## Semantic on Cursor
|
|
43
|
+
## Semantic on Cursor (`platform-semantic`)
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
- **cursorEnv native:** built-in codebase semantic search (`platformNative`). Do **not** use fast-context MCP for semantic Primary.
|
|
46
|
+
- **cursorEnv byok:** **fast-context MCP** is **required** for concept retrieval; built-in `@codebase` is not available in the agent tool list.
|
|
47
|
+
- Override detection: `TRELLIS_CURSOR_BYOK=0|1` or `~/.ccursor/routes.json` `byokMode`.
|
|
46
48
|
|
|
47
49
|
## Result-layer ranking (B / E / D)
|
|
48
50
|
|
|
@@ -50,7 +52,7 @@ When the plan block includes **结果层排序**, apply it **after** collecting
|
|
|
50
52
|
|
|
51
53
|
## codegraph-only value
|
|
52
54
|
|
|
53
|
-
Use codegraph for **call chains**, **cross-package trap disambiguation**, **extension symbol resolution**, and **
|
|
55
|
+
Use codegraph for **call chains**, **cross-package trap disambiguation**, **extension symbol resolution**, **impact**, and **definition/reference** (replaces unavailable Agent LSP) — not for pure literal search (Grep) or BYOK concept Primary (use fast-context).
|
|
54
56
|
|
|
55
57
|
## External facts
|
|
56
58
|
|
|
@@ -12,7 +12,7 @@ For **external / current / web facts**, **smart-search** (`run_smart_search.py`)
|
|
|
12
12
|
| --- | --- | --- |
|
|
13
13
|
| Exact string / path / log line | **rg** (Grep) | Fast literal match in repo |
|
|
14
14
|
| Symbol, callers, edit blast radius | **codegraph** MCP | Structure-first for caller/trap/extension intents |
|
|
15
|
-
| Unknown keywords, semantic discovery | **@codebase** (Cursor)
|
|
15
|
+
| Unknown keywords, semantic discovery | **@codebase** (Cursor Native) / **fast-context** (Cursor++ BYOK) | Native: built-in semantic; BYOK: `fast_context_search` MCP (see `cursorEnv` in plans) |
|
|
16
16
|
| External / current facts | **smart-search-cli** | **Mandatory first** — built-in web tools are downgrade-only (see rule above) |
|
|
17
17
|
| Trellis durable docs | **artifact-search** | `search_artifacts.py` |
|
|
18
18
|
| Past sessions | **session-memory** | Historical; verify against tasks/spec |
|
|
@@ -22,7 +22,12 @@ For **external / current / web facts**, **smart-search** (`run_smart_search.py`)
|
|
|
22
22
|
|
|
23
23
|
## Semantic routing (Cursor)
|
|
24
24
|
|
|
25
|
-
The
|
|
25
|
+
The planner emits **`platform-semantic`** with backend chosen by **`cursorEnv`** (`native` | `byok` from `~/.ccursor/routes.json` or `TRELLIS_CURSOR_BYOK`):
|
|
26
|
+
|
|
27
|
+
- **native:** built-in `@codebase` / agent semantic search — **do not** use fast-context as Primary.
|
|
28
|
+
- **byok:** **fast-context MCP** (`fast_context_search`) — built-in semantic is not in the agent tool list.
|
|
29
|
+
|
|
30
|
+
Definition / reference jumps: **codegraph** (not GO_TO_DEFINITION; Agent LSP unavailable).
|
|
26
31
|
|
|
27
32
|
## Token economy signals
|
|
28
33
|
|
|
@@ -99,9 +104,9 @@ Do **not** claim aggregate openclaw score gains from ranking alone without fresh
|
|
|
99
104
|
|
|
100
105
|
For structural intents (caller-chain, trap-package-disambiguation, extension-shared-symbol), the router now suggests **codegraph before rg**. This reflects codegraph's superior token economy for structural queries (~80-150 tokens/answer vs rg's ~3557 for naive grep). The agent should still use rg to fill gaps codegraph misses (dynamic dispatch, string-based callsites).
|
|
101
106
|
|
|
102
|
-
### Semantic routing on Cursor
|
|
107
|
+
### Semantic routing on Cursor (plans)
|
|
103
108
|
|
|
104
|
-
|
|
109
|
+
Envelopes include **`cursorEnv`**. `platform-semantic` uses **`platformNative: true`** on native and **`semanticBackend: fast-context-mcp`** on BYOK. Native: `@codebase` / built-in search; BYOK: `fast_context_search`.
|
|
105
110
|
|
|
106
111
|
### Semantic dual metrics (openclaw / eval)
|
|
107
112
|
|
|
@@ -110,7 +115,7 @@ On Cursor, the router outputs `platform-semantic` routes (with `platformNative:
|
|
|
110
115
|
| `semantic_plan_rate` | Share of queries whose routing envelope lists a semantic route |
|
|
111
116
|
| `semantic_exec_rate` | Share of queries with ≥1 semantic search tool call |
|
|
112
117
|
|
|
113
|
-
On **Cursor**, `semantic_exec_rate` uses
|
|
118
|
+
On **Cursor**, `semantic_exec_rate` uses `classify_tool_calls(..., platform=cursor, cursor_env=...)`: **native** counts built-in semantic only; **byok** counts `fast_context_search` as semantic exec. `cursor_fast_context_misuse` applies only when **native** (or non-byok) uses fast-context while the plan has `platform-semantic`. See `cursor-semantic-compliance.md`.
|
|
114
119
|
|
|
115
120
|
Plan-level presence does not imply execution-level use (see parent research `06-19` OQ-1 双轨).
|
|
116
121
|
|
|
@@ -126,7 +131,7 @@ Store **one JSON object per query** in JSONL (`schema_version: 2`). Split scores
|
|
|
126
131
|
Report **summary rates must not be hand-copied** from batch router envelopes. Aggregate from JSONL:
|
|
127
132
|
|
|
128
133
|
```powershell
|
|
129
|
-
python
|
|
134
|
+
python ./.trellis/scripts/aggregate_retrieval_telemetry.py runs/<run>/telemetry.jsonl --markdown
|
|
130
135
|
```
|
|
131
136
|
|
|
132
137
|
Key exec fields (fill from session tool log): `tools_called`, `grep_count`, `read_count`, `codegraph_executed`, `semantic_executed`, `router_cli_invoked`, `plan_block_in_prompt`, `read_verification_done`. TypeScript contract: `packages/cli/src/utils/retrieval-execution-telemetry.ts` (`RETRIEVAL_TELEMETRY_FIELD_OWNERSHIP`).
|
|
@@ -44,6 +44,7 @@ export declare const commonSmartSearchEvidence: string;
|
|
|
44
44
|
export declare const commonSmartSearchResolve: string;
|
|
45
45
|
export declare const commonRetrievalEvidence: string;
|
|
46
46
|
export declare const commonCodebaseRetrievalRouter: string;
|
|
47
|
+
export declare const commonCursorRetrievalEnv: string;
|
|
47
48
|
export declare const commonProjectFileStats: string;
|
|
48
49
|
export declare const commonRetrievalToolClassification: string;
|
|
49
50
|
export declare const aggregateRetrievalTelemetryScript: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/trellis/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/trellis/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -54,6 +54,7 @@ export const commonSmartSearchEvidence = readTemplate("scripts/common/smart_sear
|
|
|
54
54
|
export const commonSmartSearchResolve = readTemplate("scripts/common/smart_search_resolve.py");
|
|
55
55
|
export const commonRetrievalEvidence = readTemplate("scripts/common/retrieval_evidence.py");
|
|
56
56
|
export const commonCodebaseRetrievalRouter = readTemplate("scripts/common/codebase_retrieval_router.py");
|
|
57
|
+
export const commonCursorRetrievalEnv = readTemplate("scripts/common/cursor_retrieval_env.py");
|
|
57
58
|
export const commonProjectFileStats = readTemplate("scripts/common/project_file_stats.py");
|
|
58
59
|
export const commonRetrievalToolClassification = readTemplate("scripts/common/retrieval_tool_classification.py");
|
|
59
60
|
export const aggregateRetrievalTelemetryScript = readTemplate("scripts/aggregate_retrieval_telemetry.py");
|
|
@@ -157,6 +158,7 @@ export function getAllScripts() {
|
|
|
157
158
|
scripts.set("common/smart_search_resolve.py", commonSmartSearchResolve);
|
|
158
159
|
scripts.set("common/retrieval_evidence.py", commonRetrievalEvidence);
|
|
159
160
|
scripts.set("common/codebase_retrieval_router.py", commonCodebaseRetrievalRouter);
|
|
161
|
+
scripts.set("common/cursor_retrieval_env.py", commonCursorRetrievalEnv);
|
|
160
162
|
scripts.set("common/project_file_stats.py", commonProjectFileStats);
|
|
161
163
|
scripts.set("common/retrieval_tool_classification.py", commonRetrievalToolClassification);
|
|
162
164
|
scripts.set("common/retrieval_agent_instructions.py", commonRetrievalAgentInstructions);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/trellis/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/trellis/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,12 @@ import re
|
|
|
13
13
|
from pathlib import Path
|
|
14
14
|
from typing import Any
|
|
15
15
|
|
|
16
|
+
from .cursor_retrieval_env import (
|
|
17
|
+
ENV_BYOK,
|
|
18
|
+
detect_cursor_retrieval_env,
|
|
19
|
+
semantic_route_spec,
|
|
20
|
+
)
|
|
21
|
+
|
|
16
22
|
ROUTER_VERSION = 2
|
|
17
23
|
|
|
18
24
|
PLATFORM_CURSOR = "cursor"
|
|
@@ -439,11 +445,32 @@ def _large_project(project_file_count: int | None) -> bool:
|
|
|
439
445
|
return project_file_count > 2000
|
|
440
446
|
|
|
441
447
|
|
|
448
|
+
def _platform_semantic_route(
|
|
449
|
+
*,
|
|
450
|
+
base_rationale: str,
|
|
451
|
+
cursor_env: str,
|
|
452
|
+
) -> dict[str, object]:
|
|
453
|
+
spec = semantic_route_spec(cursor_env)
|
|
454
|
+
suffix = str(spec.get("rationale_suffix", ""))
|
|
455
|
+
commands = spec.get("commands")
|
|
456
|
+
cmd_list = list(commands) if isinstance(commands, list) else []
|
|
457
|
+
return {
|
|
458
|
+
"id": "platform-semantic",
|
|
459
|
+
"role": "semantic",
|
|
460
|
+
"sourceFamily": "platform-semantic",
|
|
461
|
+
"commands": cmd_list,
|
|
462
|
+
"rationale": base_rationale + suffix,
|
|
463
|
+
"platformNative": bool(spec.get("platformNative", False)),
|
|
464
|
+
"semanticBackend": spec.get("semanticBackend"),
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
|
|
442
468
|
def _ordered_routes(
|
|
443
469
|
intents: list[dict[str, object]],
|
|
444
470
|
include_optional_adapters: bool,
|
|
445
471
|
*,
|
|
446
472
|
project_file_count: int | None = None,
|
|
473
|
+
cursor_env: str | None = None,
|
|
447
474
|
) -> list[dict[str, object]]:
|
|
448
475
|
ids = {str(item["id"]) for item in intents}
|
|
449
476
|
active = list(ids)
|
|
@@ -459,6 +486,7 @@ def _ordered_routes(
|
|
|
459
486
|
conceptual_primary = conceptual and not preserve and not exact_primary_first
|
|
460
487
|
large = _large_project(project_file_count)
|
|
461
488
|
semantic_promoted = False
|
|
489
|
+
cenv = cursor_env or detect_cursor_retrieval_env()
|
|
462
490
|
|
|
463
491
|
routes: list[dict[str, object]] = []
|
|
464
492
|
|
|
@@ -542,14 +570,7 @@ def _ordered_routes(
|
|
|
542
570
|
if policy
|
|
543
571
|
else "Conceptual query without exact signals; semantic recall before exact rg narrowing."
|
|
544
572
|
)
|
|
545
|
-
append(
|
|
546
|
-
"id": "platform-semantic",
|
|
547
|
-
"role": "semantic",
|
|
548
|
-
"sourceFamily": "platform-semantic",
|
|
549
|
-
"commands": ["cursor @codebase or built-in semantic search"],
|
|
550
|
-
"rationale": semantic_rationale + " (Cursor built-in semantic search)",
|
|
551
|
-
"platformNative": True,
|
|
552
|
-
})
|
|
573
|
+
append(_platform_semantic_route(base_rationale=semantic_rationale, cursor_env=cenv))
|
|
553
574
|
semantic_promoted = True
|
|
554
575
|
append({
|
|
555
576
|
"id": "exact-rg-primary",
|
|
@@ -638,24 +659,25 @@ def _ordered_routes(
|
|
|
638
659
|
})
|
|
639
660
|
append({
|
|
640
661
|
"id": "lsp-navigation",
|
|
641
|
-
"role": "
|
|
642
|
-
"sourceFamily": "
|
|
643
|
-
"commands": [
|
|
662
|
+
"role": "ast",
|
|
663
|
+
"sourceFamily": "codegraph",
|
|
664
|
+
"commands": [
|
|
665
|
+
"codegraph_node <symbol> --includeCode",
|
|
666
|
+
"codegraph_search <symbol>",
|
|
667
|
+
],
|
|
644
668
|
"rationale": (
|
|
645
|
-
"
|
|
646
|
-
"
|
|
669
|
+
"Definition/reference via codegraph (Cursor Agent does not expose "
|
|
670
|
+
"GO_TO_DEFINITION); corroborate with Read on returned line ranges."
|
|
647
671
|
),
|
|
648
|
-
"platformNative":
|
|
672
|
+
"platformNative": False,
|
|
649
673
|
})
|
|
650
674
|
if not semantic_promoted:
|
|
651
|
-
append(
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
"platformNative": True,
|
|
658
|
-
})
|
|
675
|
+
append(
|
|
676
|
+
_platform_semantic_route(
|
|
677
|
+
base_rationale="Semantic recall for conceptual narrowing.",
|
|
678
|
+
cursor_env=cenv,
|
|
679
|
+
)
|
|
680
|
+
)
|
|
659
681
|
|
|
660
682
|
append({
|
|
661
683
|
"id": "verification-source-git-tests",
|
|
@@ -678,6 +700,8 @@ def _fallback_hints(
|
|
|
678
700
|
intents: list[dict[str, object]],
|
|
679
701
|
include_optional_adapters: bool,
|
|
680
702
|
routes: list[dict[str, object]],
|
|
703
|
+
*,
|
|
704
|
+
cursor_env: str | None = None,
|
|
681
705
|
) -> list[dict[str, object]]:
|
|
682
706
|
hints: list[dict[str, object]] = [
|
|
683
707
|
{
|
|
@@ -688,7 +712,22 @@ def _fallback_hints(
|
|
|
688
712
|
if not include_optional_adapters:
|
|
689
713
|
hints.append({
|
|
690
714
|
"when": "codebase-retrieval not selected",
|
|
691
|
-
"action": "Skip optional AST/
|
|
715
|
+
"action": "Skip optional AST/semantic routes; use exact search and verification.",
|
|
716
|
+
"replacesRole": "semantic",
|
|
717
|
+
})
|
|
718
|
+
cenv = cursor_env or detect_cursor_retrieval_env()
|
|
719
|
+
if cenv == ENV_BYOK:
|
|
720
|
+
hints.append({
|
|
721
|
+
"when": "built-in @codebase / SemanticSearch not in agent tool list",
|
|
722
|
+
"action": (
|
|
723
|
+
"Use fast_context_search (fast-context MCP) per platform-semantic route; "
|
|
724
|
+
"do not use WebSearch for codebase questions."
|
|
725
|
+
),
|
|
726
|
+
"replacesRole": "semantic",
|
|
727
|
+
})
|
|
728
|
+
hints.append({
|
|
729
|
+
"when": "DEEP_SEARCH not available for wide cross-cutting explore",
|
|
730
|
+
"action": "Use Task subagent (explore), then Grep/codegraph/Read to verify.",
|
|
692
731
|
"replacesRole": "semantic",
|
|
693
732
|
})
|
|
694
733
|
if any(str(item["id"]) == INTENT_POLICY for item in intents):
|
|
@@ -716,8 +755,8 @@ def _fallback_hints(
|
|
|
716
755
|
"(or only trap hits) before final Top-1"
|
|
717
756
|
),
|
|
718
757
|
"action": (
|
|
719
|
-
"Use
|
|
720
|
-
"then narrow with rg on returned keywords and paths."
|
|
758
|
+
"Use fast_context_search (BYOK) or Cursor built-in semantic search (Native) "
|
|
759
|
+
"per platform-semantic route, then narrow with rg on returned keywords and paths."
|
|
721
760
|
),
|
|
722
761
|
"replacesRole": "semantic",
|
|
723
762
|
})
|
|
@@ -754,26 +793,33 @@ def route_codebase_retrieval(
|
|
|
754
793
|
*,
|
|
755
794
|
codebase_retrieval_selected: bool = True,
|
|
756
795
|
project_file_count: int | None = None,
|
|
796
|
+
cursor_env: str | None = None,
|
|
757
797
|
) -> dict[str, object]:
|
|
758
798
|
"""Return the shared evidence envelope with router-owned fields populated."""
|
|
759
799
|
normalized = _normalize_query(query)
|
|
760
800
|
include_optional = codebase_retrieval_selected
|
|
801
|
+
cenv = cursor_env or detect_cursor_retrieval_env()
|
|
761
802
|
if not normalized:
|
|
762
803
|
intents = [
|
|
763
804
|
_intent(INTENT_EXACT, "General codebase (exact baseline)", ["empty-query"], "low", True)
|
|
764
805
|
]
|
|
765
806
|
empty_routes = _ordered_routes(
|
|
766
|
-
intents,
|
|
807
|
+
intents,
|
|
808
|
+
include_optional,
|
|
767
809
|
project_file_count=project_file_count,
|
|
810
|
+
cursor_env=cenv,
|
|
768
811
|
)
|
|
769
812
|
return {
|
|
770
813
|
"version": ROUTER_VERSION,
|
|
771
814
|
"query": normalized,
|
|
815
|
+
"cursorEnv": cenv,
|
|
772
816
|
"intents": intents,
|
|
773
817
|
"routes": empty_routes,
|
|
774
818
|
"adapterState": [],
|
|
775
819
|
"freshness": [],
|
|
776
|
-
"fallback": _fallback_hints(
|
|
820
|
+
"fallback": _fallback_hints(
|
|
821
|
+
intents, include_optional, empty_routes, cursor_env=cenv
|
|
822
|
+
),
|
|
777
823
|
"warnings": ["Empty query; only baseline exact route is emitted."],
|
|
778
824
|
"verification": _base_verification(),
|
|
779
825
|
"projectFileCount": project_file_count,
|
|
@@ -781,17 +827,20 @@ def route_codebase_retrieval(
|
|
|
781
827
|
|
|
782
828
|
intents = _classify_intents(normalized)
|
|
783
829
|
routes = _ordered_routes(
|
|
784
|
-
intents,
|
|
830
|
+
intents,
|
|
831
|
+
include_optional,
|
|
785
832
|
project_file_count=project_file_count,
|
|
833
|
+
cursor_env=cenv,
|
|
786
834
|
)
|
|
787
835
|
return {
|
|
788
836
|
"version": ROUTER_VERSION,
|
|
789
837
|
"query": normalized,
|
|
838
|
+
"cursorEnv": cenv,
|
|
790
839
|
"intents": intents,
|
|
791
840
|
"routes": routes,
|
|
792
841
|
"adapterState": [],
|
|
793
842
|
"freshness": [],
|
|
794
|
-
"fallback": _fallback_hints(intents, include_optional, routes),
|
|
843
|
+
"fallback": _fallback_hints(intents, include_optional, routes, cursor_env=cenv),
|
|
795
844
|
"warnings": _warnings(intents),
|
|
796
845
|
"verification": _verification_for_intents(intents),
|
|
797
846
|
"projectFileCount": project_file_count,
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"""Detect Cursor Native vs Cursor++ BYOK for retrieval routing."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import json
|
|
6
|
+
import os
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
from typing import Any
|
|
9
|
+
|
|
10
|
+
ENV_NATIVE = "native"
|
|
11
|
+
ENV_BYOK = "byok"
|
|
12
|
+
ENV_UNKNOWN = "unknown"
|
|
13
|
+
|
|
14
|
+
CursorRetrievalEnv = str # native | byok | unknown
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def ccursor_home() -> Path:
|
|
18
|
+
env = os.environ.get("TRELLIS_CCURSOR_HOME", "").strip()
|
|
19
|
+
if env:
|
|
20
|
+
return Path(env).expanduser()
|
|
21
|
+
return Path.home() / ".ccursor"
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def detect_cursor_retrieval_env() -> CursorRetrievalEnv:
|
|
25
|
+
"""Return native | byok | unknown.
|
|
26
|
+
|
|
27
|
+
Override: TRELLIS_CURSOR_BYOK=1|0
|
|
28
|
+
"""
|
|
29
|
+
info = detect_cursor_retrieval_env_info()
|
|
30
|
+
env = info.get("env")
|
|
31
|
+
if env in (ENV_NATIVE, ENV_BYOK, ENV_UNKNOWN):
|
|
32
|
+
return str(env)
|
|
33
|
+
return ENV_UNKNOWN
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def detect_cursor_retrieval_env_info() -> dict[str, Any]:
|
|
37
|
+
"""Full detection record (for probes and envelopes)."""
|
|
38
|
+
env_override = os.environ.get("TRELLIS_CURSOR_BYOK", "").strip()
|
|
39
|
+
if env_override == "1":
|
|
40
|
+
return {"env": ENV_BYOK, "source": "env-override", "byokMode": 1}
|
|
41
|
+
if env_override == "0":
|
|
42
|
+
return {"env": ENV_NATIVE, "source": "env-override", "byokMode": 0}
|
|
43
|
+
|
|
44
|
+
routes_path = ccursor_home() / "routes.json"
|
|
45
|
+
if not routes_path.is_file():
|
|
46
|
+
return {
|
|
47
|
+
"env": ENV_UNKNOWN,
|
|
48
|
+
"source": "routes-not-found",
|
|
49
|
+
"byokMode": None,
|
|
50
|
+
"routes_path": str(routes_path),
|
|
51
|
+
}
|
|
52
|
+
try:
|
|
53
|
+
routes = json.loads(routes_path.read_text(encoding="utf-8"))
|
|
54
|
+
except (OSError, json.JSONDecodeError) as exc:
|
|
55
|
+
return {
|
|
56
|
+
"env": ENV_UNKNOWN,
|
|
57
|
+
"source": "routes-parse-error",
|
|
58
|
+
"byokMode": None,
|
|
59
|
+
"error": str(exc),
|
|
60
|
+
"routes_path": str(routes_path),
|
|
61
|
+
}
|
|
62
|
+
byok = routes.get("byokMode")
|
|
63
|
+
env = ENV_BYOK if byok == 1 else ENV_NATIVE if byok == 0 else ENV_UNKNOWN
|
|
64
|
+
redirect = routes.get("redirect", [])
|
|
65
|
+
return {
|
|
66
|
+
"env": env,
|
|
67
|
+
"source": "routes.json",
|
|
68
|
+
"byokMode": byok,
|
|
69
|
+
"routes_path": str(routes_path),
|
|
70
|
+
"redirect_endpoints": list(redirect) if isinstance(redirect, list) else [],
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def is_byok(env: CursorRetrievalEnv | None = None) -> bool:
|
|
75
|
+
return (env or detect_cursor_retrieval_env()) == ENV_BYOK
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def semantic_route_spec(cursor_env: CursorRetrievalEnv) -> dict[str, object]:
|
|
79
|
+
"""platform-semantic route fields for conceptual / optional semantic slots."""
|
|
80
|
+
if cursor_env == ENV_BYOK:
|
|
81
|
+
return {
|
|
82
|
+
"commands": ["fast_context_search (fast-context MCP)"],
|
|
83
|
+
"rationale_suffix": " Cursor++ BYOK: built-in semantic unavailable; fast-context MCP primary.",
|
|
84
|
+
"platformNative": False,
|
|
85
|
+
"semanticBackend": "fast-context-mcp",
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
"commands": ["cursor @codebase or built-in semantic search"],
|
|
89
|
+
"rationale_suffix": " Cursor built-in semantic search.",
|
|
90
|
+
"platformNative": True,
|
|
91
|
+
"semanticBackend": "cursor-builtin",
|
|
92
|
+
}
|
|
@@ -11,6 +11,7 @@ from __future__ import annotations
|
|
|
11
11
|
from datetime import datetime, timezone
|
|
12
12
|
from typing import Any
|
|
13
13
|
|
|
14
|
+
from common.cursor_retrieval_env import ENV_BYOK, detect_cursor_retrieval_env
|
|
14
15
|
from common.retrieval_evidence import (
|
|
15
16
|
SOURCE_ARTIFACT_SEARCH,
|
|
16
17
|
SOURCE_CODEBASE_EVIDENCE,
|
|
@@ -71,7 +72,6 @@ REQUIRED_ADAPTERS = frozenset({ADAPTER_RG, ADAPTER_VERIFICATION})
|
|
|
71
72
|
OPTIONAL_INTEGRATION_ADAPTERS = (
|
|
72
73
|
ADAPTER_CODEGRAPH,
|
|
73
74
|
ADAPTER_LSP,
|
|
74
|
-
ADAPTER_FAST_CONTEXT,
|
|
75
75
|
ADAPTER_MCP,
|
|
76
76
|
ADAPTER_BROWSER,
|
|
77
77
|
ADAPTER_NETWORK,
|
|
@@ -236,15 +236,11 @@ def build_adapter_states(
|
|
|
236
236
|
optional_integration_adapter_state(adapter=adapter, hints=hints)
|
|
237
237
|
)
|
|
238
238
|
|
|
239
|
-
# Platform-semantic: Cursor built-in semantic search (replaces fast-context)
|
|
240
239
|
states.append(
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
invoked=False,
|
|
246
|
-
reason="Platform-native semantic search on Cursor (e.g. @codebase); supersedes fast-context",
|
|
247
|
-
)
|
|
240
|
+
platform_semantic_adapter_state(router=router, hints=hints)
|
|
241
|
+
)
|
|
242
|
+
states.append(
|
|
243
|
+
fast_context_adapter_state(router=router, hints=hints)
|
|
248
244
|
)
|
|
249
245
|
|
|
250
246
|
states.append(
|
|
@@ -441,6 +437,101 @@ def codebase_adapter_state(
|
|
|
441
437
|
)
|
|
442
438
|
|
|
443
439
|
|
|
440
|
+
def resolve_cursor_env_for_adapter_metadata(
|
|
441
|
+
router: dict[str, Any] | None,
|
|
442
|
+
) -> str:
|
|
443
|
+
"""native | byok | unknown for retrieval-pack adapter reasons."""
|
|
444
|
+
router = router or {}
|
|
445
|
+
env = string_value(router.get("cursorEnv"))
|
|
446
|
+
if env in ("native", "byok", "unknown"):
|
|
447
|
+
return env
|
|
448
|
+
return detect_cursor_retrieval_env()
|
|
449
|
+
|
|
450
|
+
|
|
451
|
+
def platform_semantic_adapter_state(
|
|
452
|
+
*,
|
|
453
|
+
router: dict[str, Any] | None,
|
|
454
|
+
hints: dict[str, dict[str, Any]],
|
|
455
|
+
) -> dict[str, object]:
|
|
456
|
+
hint = hints.get(ADAPTER_PLATFORM_SEMANTIC, {})
|
|
457
|
+
if hint:
|
|
458
|
+
return adapter_state_entry(
|
|
459
|
+
adapter=ADAPTER_PLATFORM_SEMANTIC,
|
|
460
|
+
state=resolve_hint_state(hints, ADAPTER_PLATFORM_SEMANTIC, default=STATE_SKIPPED),
|
|
461
|
+
required=False,
|
|
462
|
+
invoked=bool(hint.get("invoked")),
|
|
463
|
+
reason=string_value(hint.get("reason")) or "platform-semantic adapter hint",
|
|
464
|
+
)
|
|
465
|
+
env = resolve_cursor_env_for_adapter_metadata(router)
|
|
466
|
+
if env == ENV_BYOK:
|
|
467
|
+
reason = (
|
|
468
|
+
"Cursor++ BYOK: built-in codebase semantic often absent (Experiment D); "
|
|
469
|
+
"concept recall Primary is fast-context MCP per router cursorEnv"
|
|
470
|
+
)
|
|
471
|
+
state = STATE_UNAVAILABLE
|
|
472
|
+
elif env == "native":
|
|
473
|
+
reason = (
|
|
474
|
+
"Cursor Native: built-in codebase semantic (e.g. SemanticSearch / @codebase) "
|
|
475
|
+
"is Primary for concept recall"
|
|
476
|
+
)
|
|
477
|
+
state = STATE_AVAILABLE
|
|
478
|
+
else:
|
|
479
|
+
reason = (
|
|
480
|
+
"Cursor platform-semantic: Native uses built-in search; BYOK uses fast-context "
|
|
481
|
+
"when cursorEnv is byok (see cursor_retrieval_env)"
|
|
482
|
+
)
|
|
483
|
+
state = STATE_UNVERIFIED
|
|
484
|
+
return adapter_state_entry(
|
|
485
|
+
adapter=ADAPTER_PLATFORM_SEMANTIC,
|
|
486
|
+
state=state,
|
|
487
|
+
required=False,
|
|
488
|
+
invoked=False,
|
|
489
|
+
reason=reason,
|
|
490
|
+
)
|
|
491
|
+
|
|
492
|
+
|
|
493
|
+
def fast_context_adapter_state(
|
|
494
|
+
*,
|
|
495
|
+
router: dict[str, Any] | None,
|
|
496
|
+
hints: dict[str, dict[str, Any]],
|
|
497
|
+
) -> dict[str, object]:
|
|
498
|
+
hint = hints.get(ADAPTER_FAST_CONTEXT, {})
|
|
499
|
+
if hint:
|
|
500
|
+
return adapter_state_entry(
|
|
501
|
+
adapter=ADAPTER_FAST_CONTEXT,
|
|
502
|
+
state=resolve_hint_state(hints, ADAPTER_FAST_CONTEXT, default=STATE_SKIPPED),
|
|
503
|
+
required=False,
|
|
504
|
+
invoked=bool(hint.get("invoked")),
|
|
505
|
+
reason=string_value(hint.get("reason")) or "fast-context-mcp adapter hint",
|
|
506
|
+
)
|
|
507
|
+
env = resolve_cursor_env_for_adapter_metadata(router)
|
|
508
|
+
if env == ENV_BYOK:
|
|
509
|
+
reason = (
|
|
510
|
+
"Cursor++ BYOK: fast_context_search is compliant Primary for concept recall "
|
|
511
|
+
"(select codebase-retrieval at init for .cursor/mcp.json fast-context entry)"
|
|
512
|
+
)
|
|
513
|
+
state = STATE_AVAILABLE
|
|
514
|
+
elif env == "native":
|
|
515
|
+
reason = (
|
|
516
|
+
"Cursor Native: prefer built-in platform-semantic; fast-context is optional "
|
|
517
|
+
"and misuse when plan requires native semantic"
|
|
518
|
+
)
|
|
519
|
+
state = STATE_SKIPPED
|
|
520
|
+
else:
|
|
521
|
+
reason = (
|
|
522
|
+
"fast-context MCP: required for BYOK concept recall on Cursor when "
|
|
523
|
+
"codebase-retrieval capability is selected"
|
|
524
|
+
)
|
|
525
|
+
state = STATE_UNVERIFIED
|
|
526
|
+
return adapter_state_entry(
|
|
527
|
+
adapter=ADAPTER_FAST_CONTEXT,
|
|
528
|
+
state=state,
|
|
529
|
+
required=False,
|
|
530
|
+
invoked=False,
|
|
531
|
+
reason=reason,
|
|
532
|
+
)
|
|
533
|
+
|
|
534
|
+
|
|
444
535
|
def optional_integration_adapter_state(
|
|
445
536
|
*,
|
|
446
537
|
adapter: str,
|