@blxzer/cursor-trellis 0.1.1 → 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.
Files changed (49) hide show
  1. package/README.md +2 -0
  2. package/dist/migrations/manifests/0.1.1.json +9 -0
  3. package/dist/migrations/manifests/0.1.2.json +9 -0
  4. package/dist/templates/cursor/rules/retrieval-routing.mdc +9 -7
  5. package/dist/templates/markdown/spec/guides/cursor-context-injection-guide.md.txt +2 -1
  6. package/dist/templates/markdown/spec/guides/cursor-subagent-policy.md.txt +16 -3
  7. package/dist/templates/markdown/spec/guides/retrieval-daily-guide.md.txt +11 -6
  8. package/dist/templates/shared-hooks/inject-subagent-context.py +31 -567
  9. package/dist/templates/trellis/index.d.ts +2 -0
  10. package/dist/templates/trellis/index.d.ts.map +1 -1
  11. package/dist/templates/trellis/index.js +4 -0
  12. package/dist/templates/trellis/index.js.map +1 -1
  13. package/dist/templates/trellis/scripts/common/codebase_retrieval_router.py +78 -29
  14. package/dist/templates/trellis/scripts/common/cursor_retrieval_env.py +92 -0
  15. package/dist/templates/trellis/scripts/common/retrieval_adapter_metadata.py +100 -9
  16. package/dist/templates/trellis/scripts/common/retrieval_agent_instructions.py +76 -31
  17. package/dist/templates/trellis/scripts/common/retrieval_tool_classification.py +18 -3
  18. package/dist/templates/trellis/scripts/common/semantic_plan_gate.py +19 -0
  19. package/dist/templates/trellis/scripts/common/smart_search_evidence.py +5 -2
  20. package/dist/templates/trellis/scripts/common/subagent_dispatch.py +527 -0
  21. package/dist/templates/trellis/scripts/common/task_store.py +32 -0
  22. package/dist/templates/trellis/scripts/cursor_retrieval_probe.py +396 -0
  23. package/dist/templates/trellis/scripts/cursor_retrieval_probe_prompt.md +300 -0
  24. package/dist/templates/trellis/scripts/retrieval_probe_matrix_template.json +126 -0
  25. package/dist/templates/trellis/scripts/task.py +26 -0
  26. package/dist/templates/trellis/workflow.md +5 -22
  27. package/dist/utils/codebase-retrieval-router.d.ts +5 -0
  28. package/dist/utils/codebase-retrieval-router.d.ts.map +1 -1
  29. package/dist/utils/codebase-retrieval-router.js +48 -28
  30. package/dist/utils/codebase-retrieval-router.js.map +1 -1
  31. package/dist/utils/cursor-retrieval-env.d.ts +28 -0
  32. package/dist/utils/cursor-retrieval-env.d.ts.map +1 -0
  33. package/dist/utils/cursor-retrieval-env.js +89 -0
  34. package/dist/utils/cursor-retrieval-env.js.map +1 -0
  35. package/dist/utils/project-capabilities.d.ts.map +1 -1
  36. package/dist/utils/project-capabilities.js +22 -15
  37. package/dist/utils/project-capabilities.js.map +1 -1
  38. package/dist/utils/retrieval-agent-instructions.d.ts.map +1 -1
  39. package/dist/utils/retrieval-agent-instructions.js +37 -21
  40. package/dist/utils/retrieval-agent-instructions.js.map +1 -1
  41. package/dist/utils/retrieval-tool-classification.d.ts +2 -0
  42. package/dist/utils/retrieval-tool-classification.d.ts.map +1 -1
  43. package/dist/utils/retrieval-tool-classification.js +10 -2
  44. package/dist/utils/retrieval-tool-classification.js.map +1 -1
  45. package/dist/utils/semantic-plan-gate.d.ts +8 -0
  46. package/dist/utils/semantic-plan-gate.d.ts.map +1 -0
  47. package/dist/utils/semantic-plan-gate.js +42 -0
  48. package/dist/utils/semantic-plan-gate.js.map +1 -0
  49. package/package.json +3 -2
@@ -37,12 +37,14 @@ export declare const commonTaskDashboard: string;
37
37
  export declare const commonTaskGates: string;
38
38
  export declare const commonTaskMap: string;
39
39
  export declare const commonParentOrchestration: string;
40
+ export declare const commonSubagentDispatch: string;
40
41
  export declare const commonArtifactSearch: string;
41
42
  export declare const commonSessionMemory: string;
42
43
  export declare const commonSmartSearchEvidence: string;
43
44
  export declare const commonSmartSearchResolve: string;
44
45
  export declare const commonRetrievalEvidence: string;
45
46
  export declare const commonCodebaseRetrievalRouter: string;
47
+ export declare const commonCursorRetrievalEnv: string;
46
48
  export declare const commonProjectFileStats: string;
47
49
  export declare const commonRetrievalToolClassification: string;
48
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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"}
@@ -47,12 +47,14 @@ export const commonTaskDashboard = readTemplate("scripts/common/task_dashboard.p
47
47
  export const commonTaskGates = readTemplate("scripts/common/task_gates.py");
48
48
  export const commonTaskMap = readTemplate("scripts/common/task_map.py");
49
49
  export const commonParentOrchestration = readTemplate("scripts/common/parent_orchestration.py");
50
+ export const commonSubagentDispatch = readTemplate("scripts/common/subagent_dispatch.py");
50
51
  export const commonArtifactSearch = readTemplate("scripts/common/artifact_search.py");
51
52
  export const commonSessionMemory = readTemplate("scripts/common/session_memory.py");
52
53
  export const commonSmartSearchEvidence = readTemplate("scripts/common/smart_search_evidence.py");
53
54
  export const commonSmartSearchResolve = readTemplate("scripts/common/smart_search_resolve.py");
54
55
  export const commonRetrievalEvidence = readTemplate("scripts/common/retrieval_evidence.py");
55
56
  export const commonCodebaseRetrievalRouter = readTemplate("scripts/common/codebase_retrieval_router.py");
57
+ export const commonCursorRetrievalEnv = readTemplate("scripts/common/cursor_retrieval_env.py");
56
58
  export const commonProjectFileStats = readTemplate("scripts/common/project_file_stats.py");
57
59
  export const commonRetrievalToolClassification = readTemplate("scripts/common/retrieval_tool_classification.py");
58
60
  export const aggregateRetrievalTelemetryScript = readTemplate("scripts/aggregate_retrieval_telemetry.py");
@@ -149,12 +151,14 @@ export function getAllScripts() {
149
151
  scripts.set("common/task_gates.py", commonTaskGates);
150
152
  scripts.set("common/task_map.py", commonTaskMap);
151
153
  scripts.set("common/parent_orchestration.py", commonParentOrchestration);
154
+ scripts.set("common/subagent_dispatch.py", commonSubagentDispatch);
152
155
  scripts.set("common/artifact_search.py", commonArtifactSearch);
153
156
  scripts.set("common/session_memory.py", commonSessionMemory);
154
157
  scripts.set("common/smart_search_evidence.py", commonSmartSearchEvidence);
155
158
  scripts.set("common/smart_search_resolve.py", commonSmartSearchResolve);
156
159
  scripts.set("common/retrieval_evidence.py", commonRetrievalEvidence);
157
160
  scripts.set("common/codebase_retrieval_router.py", commonCodebaseRetrievalRouter);
161
+ scripts.set("common/cursor_retrieval_env.py", commonCursorRetrievalEnv);
158
162
  scripts.set("common/project_file_stats.py", commonProjectFileStats);
159
163
  scripts.set("common/retrieval_tool_classification.py", commonRetrievalToolClassification);
160
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": "lsp",
642
- "sourceFamily": "language-server",
643
- "commands": ["definition", "references", "hover"],
662
+ "role": "ast",
663
+ "sourceFamily": "codegraph",
664
+ "commands": [
665
+ "codegraph_node <symbol> --includeCode",
666
+ "codegraph_search <symbol>",
667
+ ],
644
668
  "rationale": (
645
- "Optional editor/LSP navigation when exposed; "
646
- "not guaranteed in Agent tool telemetry prefer Read/Grep/codegraph after candidates exist."
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": True,
672
+ "platformNative": False,
649
673
  })
650
674
  if not semantic_promoted:
651
- append({
652
- "id": "platform-semantic",
653
- "role": "semantic",
654
- "sourceFamily": "platform-semantic",
655
- "commands": ["cursor @codebase or built-in semantic search"],
656
- "rationale": "Semantic recall via Cursor built-in codebase search.",
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/LSP/semantic routes; use exact search and verification.",
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 Cursor @codebase or built-in semantic search per platform-semantic route, "
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, include_optional,
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(intents, include_optional, empty_routes),
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, include_optional,
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
- adapter_state_entry(
242
- adapter=ADAPTER_PLATFORM_SEMANTIC,
243
- state=STATE_AVAILABLE,
244
- required=False,
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,