codesift-mcp 0.17.0 → 0.20.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 (156) hide show
  1. package/dist/cli/commands-daemon.d.ts.map +1 -1
  2. package/dist/cli/commands-daemon.js +32 -0
  3. package/dist/cli/commands-daemon.js.map +1 -1
  4. package/dist/cli/commands-maintenance.d.ts.map +1 -1
  5. package/dist/cli/commands-maintenance.js +173 -3
  6. package/dist/cli/commands-maintenance.js.map +1 -1
  7. package/dist/cli/hooks/pre-compact.d.ts.map +1 -1
  8. package/dist/cli/hooks/pre-compact.js +4 -0
  9. package/dist/cli/hooks/pre-compact.js.map +1 -1
  10. package/dist/cli/hooks/session.d.ts.map +1 -1
  11. package/dist/cli/hooks/session.js +5 -0
  12. package/dist/cli/hooks/session.js.map +1 -1
  13. package/dist/cli/hooks/wiki.d.ts +13 -0
  14. package/dist/cli/hooks/wiki.d.ts.map +1 -1
  15. package/dist/cli/hooks/wiki.js +19 -2
  16. package/dist/cli/hooks/wiki.js.map +1 -1
  17. package/dist/cli/owner-only-file.d.ts +9 -0
  18. package/dist/cli/owner-only-file.d.ts.map +1 -1
  19. package/dist/cli/owner-only-file.js +40 -8
  20. package/dist/cli/owner-only-file.js.map +1 -1
  21. package/dist/cli/service.d.ts.map +1 -1
  22. package/dist/cli/service.js +7 -1
  23. package/dist/cli/service.js.map +1 -1
  24. package/dist/cli/setup/claude.js +3 -3
  25. package/dist/cli/setup/claude.js.map +1 -1
  26. package/dist/cli/setup/codex.js +4 -4
  27. package/dist/cli/setup/codex.js.map +1 -1
  28. package/dist/cli/setup/fs.d.ts +2 -0
  29. package/dist/cli/setup/fs.d.ts.map +1 -1
  30. package/dist/cli/setup/fs.js +4 -1
  31. package/dist/cli/setup/fs.js.map +1 -1
  32. package/dist/cli/setup/gemini.js +4 -4
  33. package/dist/cli/setup/gemini.js.map +1 -1
  34. package/dist/cli/setup/hooks.d.ts +10 -0
  35. package/dist/cli/setup/hooks.d.ts.map +1 -1
  36. package/dist/cli/setup/hooks.js +25 -3
  37. package/dist/cli/setup/hooks.js.map +1 -1
  38. package/dist/instructions.d.ts +22 -1
  39. package/dist/instructions.d.ts.map +1 -1
  40. package/dist/instructions.js +61 -1
  41. package/dist/instructions.js.map +1 -1
  42. package/dist/lsp/lsp-client.d.ts +1 -1
  43. package/dist/lsp/lsp-client.d.ts.map +1 -1
  44. package/dist/lsp/lsp-client.js +2 -1
  45. package/dist/lsp/lsp-client.js.map +1 -1
  46. package/dist/lsp/lsp-manager.d.ts.map +1 -1
  47. package/dist/lsp/lsp-manager.js +10 -2
  48. package/dist/lsp/lsp-manager.js.map +1 -1
  49. package/dist/lsp/lsp-servers.d.ts +7 -0
  50. package/dist/lsp/lsp-servers.d.ts.map +1 -1
  51. package/dist/lsp/lsp-servers.js +78 -0
  52. package/dist/lsp/lsp-servers.js.map +1 -1
  53. package/dist/parser/parser-manager.d.ts.map +1 -1
  54. package/dist/parser/parser-manager.js +8 -2
  55. package/dist/parser/parser-manager.js.map +1 -1
  56. package/dist/register-tool-groups/core/symbols.d.ts.map +1 -1
  57. package/dist/register-tool-groups/core/symbols.js +71 -6
  58. package/dist/register-tool-groups/core/symbols.js.map +1 -1
  59. package/dist/register-tools/discovery.d.ts +7 -0
  60. package/dist/register-tools/discovery.d.ts.map +1 -1
  61. package/dist/register-tools/discovery.js +8 -1
  62. package/dist/register-tools/discovery.js.map +1 -1
  63. package/dist/search/bm25-store.d.ts +10 -0
  64. package/dist/search/bm25-store.d.ts.map +1 -1
  65. package/dist/search/bm25-store.js +140 -10
  66. package/dist/search/bm25-store.js.map +1 -1
  67. package/dist/search/bm25.d.ts +22 -0
  68. package/dist/search/bm25.d.ts.map +1 -1
  69. package/dist/search/bm25.js +43 -0
  70. package/dist/search/bm25.js.map +1 -1
  71. package/dist/server-helpers/cache-report.d.ts +36 -0
  72. package/dist/server-helpers/cache-report.d.ts.map +1 -0
  73. package/dist/server-helpers/cache-report.js +26 -0
  74. package/dist/server-helpers/cache-report.js.map +1 -0
  75. package/dist/server-helpers/health-vitals.d.ts.map +1 -1
  76. package/dist/server-helpers/health-vitals.js +19 -11
  77. package/dist/server-helpers/health-vitals.js.map +1 -1
  78. package/dist/server-helpers/response-budget.d.ts +24 -0
  79. package/dist/server-helpers/response-budget.d.ts.map +1 -0
  80. package/dist/server-helpers/response-budget.js +29 -0
  81. package/dist/server-helpers/response-budget.js.map +1 -0
  82. package/dist/server-helpers/response-hints.d.ts.map +1 -1
  83. package/dist/server-helpers/response-hints.js +43 -0
  84. package/dist/server-helpers/response-hints.js.map +1 -1
  85. package/dist/server-helpers/shown-source.d.ts +59 -0
  86. package/dist/server-helpers/shown-source.d.ts.map +1 -0
  87. package/dist/server-helpers/shown-source.js +175 -0
  88. package/dist/server-helpers/shown-source.js.map +1 -0
  89. package/dist/server-helpers/stdio-envelope.d.ts +31 -0
  90. package/dist/server-helpers/stdio-envelope.d.ts.map +1 -0
  91. package/dist/server-helpers/stdio-envelope.js +67 -0
  92. package/dist/server-helpers/stdio-envelope.js.map +1 -0
  93. package/dist/server-helpers.d.ts +7 -0
  94. package/dist/server-helpers.d.ts.map +1 -1
  95. package/dist/server-helpers.js +51 -10
  96. package/dist/server-helpers.js.map +1 -1
  97. package/dist/server.d.ts.map +1 -1
  98. package/dist/server.js +107 -45
  99. package/dist/server.js.map +1 -1
  100. package/dist/storage/_shared.d.ts +25 -0
  101. package/dist/storage/_shared.d.ts.map +1 -1
  102. package/dist/storage/_shared.js +39 -6
  103. package/dist/storage/_shared.js.map +1 -1
  104. package/dist/storage/session-state.d.ts +7 -0
  105. package/dist/storage/session-state.d.ts.map +1 -1
  106. package/dist/storage/session-state.js +3 -0
  107. package/dist/storage/session-state.js.map +1 -1
  108. package/dist/storage/shared-embedding-cache.d.ts.map +1 -1
  109. package/dist/storage/shared-embedding-cache.js +153 -2
  110. package/dist/storage/shared-embedding-cache.js.map +1 -1
  111. package/dist/storage/telemetry/config.d.ts +18 -0
  112. package/dist/storage/telemetry/config.d.ts.map +1 -1
  113. package/dist/storage/telemetry/config.js +26 -0
  114. package/dist/storage/telemetry/config.js.map +1 -1
  115. package/dist/storage/telemetry/uploader.d.ts.map +1 -1
  116. package/dist/storage/telemetry/uploader.js +4 -2
  117. package/dist/storage/telemetry/uploader.js.map +1 -1
  118. package/dist/storage/usage-tracker.d.ts +11 -0
  119. package/dist/storage/usage-tracker.d.ts.map +1 -1
  120. package/dist/storage/usage-tracker.js +18 -0
  121. package/dist/storage/usage-tracker.js.map +1 -1
  122. package/dist/tools/conversation-cache.d.ts +23 -3
  123. package/dist/tools/conversation-cache.d.ts.map +1 -1
  124. package/dist/tools/conversation-cache.js +141 -4
  125. package/dist/tools/conversation-cache.js.map +1 -1
  126. package/dist/tools/conversation-index-tools.d.ts +12 -0
  127. package/dist/tools/conversation-index-tools.d.ts.map +1 -1
  128. package/dist/tools/conversation-index-tools.js +315 -4
  129. package/dist/tools/conversation-index-tools.js.map +1 -1
  130. package/dist/tools/conversation-search-tools.d.ts +0 -5
  131. package/dist/tools/conversation-search-tools.d.ts.map +1 -1
  132. package/dist/tools/conversation-search-tools.js +77 -6
  133. package/dist/tools/conversation-search-tools.js.map +1 -1
  134. package/dist/tools/explore-tools.d.ts +9 -0
  135. package/dist/tools/explore-tools.d.ts.map +1 -0
  136. package/dist/tools/explore-tools.js +177 -0
  137. package/dist/tools/explore-tools.js.map +1 -0
  138. package/dist/tools/graph-tools.d.ts +7 -0
  139. package/dist/tools/graph-tools.d.ts.map +1 -1
  140. package/dist/tools/graph-tools.js +36 -0
  141. package/dist/tools/graph-tools.js.map +1 -1
  142. package/dist/tools/index-tools/state.d.ts +15 -1
  143. package/dist/tools/index-tools/state.d.ts.map +1 -1
  144. package/dist/tools/index-tools/state.js +25 -39
  145. package/dist/tools/index-tools/state.js.map +1 -1
  146. package/dist/tools/insights-tools.d.ts.map +1 -1
  147. package/dist/tools/insights-tools.js +6 -3
  148. package/dist/tools/insights-tools.js.map +1 -1
  149. package/dist/utils/import-graph/edge-cache.d.ts.map +1 -1
  150. package/dist/utils/import-graph/edge-cache.js +9 -1
  151. package/dist/utils/import-graph/edge-cache.js.map +1 -1
  152. package/package.json +3 -3
  153. package/rules/codesift.md +19 -0
  154. package/rules/codesift.mdc +19 -0
  155. package/rules/codex.md +19 -0
  156. package/rules/gemini.md +19 -0
@@ -34,6 +34,14 @@ ALWAYS: repo auto-resolves, skip list_repos. file_pattern when scoped. get_symbo
34
34
  for 2+. Batch 3+ into codebase_retrieval. token_budget to cap. index_file after edits.
35
35
  trace_route for endpoints. codebase_retrieval(type:semantic) for conceptual queries.
36
36
 
37
+ LANGUAGES: full symbols incl. KOTLIN (.kt/.kts/.gradle.kts) + TS/TSX/JS/Python/Go/Rust/PHP;
38
+ generic for Java/Ruby/CSS. text_stub = NO symbols, but search_text/get_file_tree/scan_secrets
39
+ still work: swift, dart, scala, clojure, elixir, lua, zig, nim, .gradle, sbt, html, config.
40
+ Verify with index_status, never assume. analyze_complexity is regex in EVERY language.
41
+
42
+ STALE INDEX → index_folder(path=<root>) ONCE. commit.matches=false or files_changed=N is an
43
+ instruction to reindex, NEVER a reason to skip CodeSift and fall back to grep/find.
44
+
37
45
  NEVER: index_folder if already indexed — EXCEPT in a linked git worktree, where the
38
46
  repo reported as indexed is the PARENT checkout, not your tree: index_folder(path=<cwd>)
39
47
  once, and treat H19 or a file count that does not match your tree as the signal.
@@ -109,7 +117,59 @@ bytes returned, for the same information.
109
117
 
110
118
  plan_turn(query="<your task>") ranks tools, symbols and files for a task and reveals whatever else
111
119
  is needed; it is the entry point for anything not listed above.`;
120
+ /**
121
+ * The DEFAULT `instructions` field — must fit the host's cap.
122
+ *
123
+ * Claude Code 2.1.280 truncates MCP server instructions at 2,048 characters
124
+ * (`CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH`). CODESIFT_INSTRUCTIONS is ~6.5K, so every session got
125
+ * its first third — the catalog preamble — and lost ALWAYS/NEVER, the stale-index rule and the hint
126
+ * legend: exactly the lines that stop an agent from abandoning the server for grep. Shipping a field
127
+ * the host cuts is worse than shipping a short one, because nobody chose what survives the cut.
128
+ *
129
+ * This one keeps the rules that change a decision and points at `initial_instructions` for the full
130
+ * manual, which is a tool result and therefore not subject to the cap.
131
+ * CODESIFT_FULL_INSTRUCTIONS=1 restores the long field for a host known not to truncate it.
132
+ */
133
+ export const CODESIFT_INSTRUCTIONS_SERVER = `CodeSift — code intelligence over an indexed repo (symbols, call graph, BM25+semantic search, framework analyzers).
134
+
135
+ PREFER these over Grep/Glob/Bash(grep|find|rg) and over reading whole files:
136
+ search_text(query, file_pattern=) · search_symbols(query, kind=, include_source=true)
137
+ get_file_outline(path) · get_file_tree(name_pattern=) · find_references · trace_call_chain
138
+ impact_analysis(since=) for blast radius · codebase_retrieval(queries=[…], token_budget=) to batch 3+
139
+
140
+ ONE call beats a sequence: find_and_show(query="<name>", include_refs=true) returns definition + usages.
141
+ plan_turn(query="<task>") ranks tools/symbols/files and reveals hidden tools — the entry point for anything not listed.
142
+ initial_instructions() returns the full manual (tool mapping, hint codes H1–H19, framework tools).
143
+
144
+ ALWAYS: repo resolves from CWD — never call list_repos. Pass file_pattern when scope is known. index_file after edits.
145
+ STALE INDEX (commit.matches=false, files_changed=N) → index_folder(path=<root>) once. Never a reason to fall back to grep.
146
+ WORKTREE: in a linked git worktree the "indexed" repo is the PARENT checkout — index_folder(path=<cwd>) once. H19 in a response means the same.
147
+ Hint codes (H1…) in responses are instructions: act on them.`;
148
+ /** Hard cap the default field must stay under (Claude Code's default MCP instructions cap). */
149
+ export const HOST_INSTRUCTIONS_CHAR_CAP = 2048;
150
+ /**
151
+ * Instructions for CODESIFT_TOOL_SURFACE=single. The default field names a dozen tools that this
152
+ * surface does not register, so an agent on it would be told to call tools it cannot reach.
153
+ */
154
+ export const CODESIFT_INSTRUCTIONS_SINGLE = `CodeSift — code intelligence over an indexed repo.
155
+
156
+ explore(query) is the one call for "where is X and how does it connect": it returns the best-matching
157
+ symbols with full source, their direct callers and callees, and the other matches as locations.
158
+ Prefer it over Grep/Glob/Read for finding and understanding code. A repeat of unchanged source comes
159
+ back as a one-line pointer; repeat the call with full_source=true only if you no longer have it.
160
+
161
+ search_text(query, file_pattern=) is for literal strings, error messages and config values.
162
+ index_file(path) after editing a file keeps answers current. The repo resolves from the working
163
+ directory. A stale index is a reason to reindex, never to fall back to grep.`;
112
164
  export function resolveInstructions() {
113
- return process.env["CODESIFT_BRIEF_INSTRUCTIONS"] === "1" ? CODESIFT_INSTRUCTIONS_BRIEF : CODESIFT_INSTRUCTIONS;
165
+ // The surface decides first: brief and full both name tools the single surface does not register.
166
+ if (process.env["CODESIFT_TOOL_SURFACE"] === "single" && !process.env["CODESIFT_VISIBLE_TOOLS"]) {
167
+ return CODESIFT_INSTRUCTIONS_SINGLE;
168
+ }
169
+ if (process.env["CODESIFT_BRIEF_INSTRUCTIONS"] === "1")
170
+ return CODESIFT_INSTRUCTIONS_BRIEF;
171
+ if (process.env["CODESIFT_FULL_INSTRUCTIONS"] === "1")
172
+ return CODESIFT_INSTRUCTIONS;
173
+ return CODESIFT_INSTRUCTIONS_SERVER;
114
174
  }
115
175
  //# sourceMappingURL=instructions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"instructions.js","sourceRoot":"","sources":["../src/instructions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0EpC,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;;;;;;;;;;;;;gEAgBqB,CAAC;AAEjE,MAAM,UAAU,mBAAmB;IACjC,OAAO,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,qBAAqB,CAAC;AAClH,CAAC"}
1
+ {"version":3,"file":"instructions.js","sourceRoot":"","sources":["../src/instructions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkFpC,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;;;;;;;;;;;;;gEAgBqB,CAAC;AAEjE;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG;;;;;;;;;;;;;;6DAciB,CAAC;AAE9D,+FAA+F;AAC/F,MAAM,CAAC,MAAM,0BAA0B,GAAG,IAAI,CAAC;AAE/C;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG;;;;;;;;;6EASiC,CAAC;AAE9E,MAAM,UAAU,mBAAmB;IACjC,kGAAkG;IAClG,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE,CAAC;QAChG,OAAO,4BAA4B,CAAC;IACtC,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,KAAK,GAAG;QAAE,OAAO,2BAA2B,CAAC;IAC3F,IAAI,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,KAAK,GAAG;QAAE,OAAO,qBAAqB,CAAC;IACpF,OAAO,4BAA4B,CAAC;AACtC,CAAC"}
@@ -11,7 +11,7 @@ export declare class LspClient {
11
11
  private buffer;
12
12
  private openFiles;
13
13
  constructor(process: ChildProcess);
14
- initialize(rootUri: string): Promise<unknown>;
14
+ initialize(rootUri: string, initializationOptions?: Record<string, unknown>): Promise<unknown>;
15
15
  request<T = unknown>(method: string, params: object): Promise<T>;
16
16
  notify(method: string, params: object): void;
17
17
  openFile(uri: string, content: string, languageId: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"lsp-client.d.ts","sourceRoot":"","sources":["../../src/lsp/lsp-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIvD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG;IAC3D,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;CAChC,CA4BA;AAQD,qBAAa,SAAS;IAMR,OAAO,CAAC,OAAO;IAL3B,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,SAAS,CAAqB;IAEtC,YAAoB,OAAO,EAAE,YAAY,EAYxC;IAEK,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAgBlD;IAEK,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAarE;IAED,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAG3C;IAEK,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM9E;IAEK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAO9B;IAED,OAAO,CAAC,MAAM;CAmBf"}
1
+ {"version":3,"file":"lsp-client.d.ts","sourceRoot":"","sources":["../../src/lsp/lsp-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIvD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG;IAC3D,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;CAChC,CA4BA;AAQD,qBAAa,SAAS;IAMR,OAAO,CAAC,OAAO;IAL3B,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,SAAS,CAAqB;IAEtC,YAAoB,OAAO,EAAE,YAAY,EAYxC;IAEK,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAiBnG;IAEK,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAarE;IAED,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAG3C;IAEK,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM9E;IAEK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAO9B;IAED,OAAO,CAAC,MAAM;CAmBf"}
@@ -49,10 +49,11 @@ export class LspClient {
49
49
  this.pending.clear();
50
50
  });
51
51
  }
52
- async initialize(rootUri) {
52
+ async initialize(rootUri, initializationOptions) {
53
53
  const result = await this.request("initialize", {
54
54
  processId: process.pid,
55
55
  rootUri,
56
+ ...(initializationOptions ? { initializationOptions } : {}),
56
57
  capabilities: {
57
58
  textDocument: {
58
59
  references: { dynamicRegistration: false },
@@ -1 +1 @@
1
- {"version":3,"file":"lsp-client.js","sourceRoot":"","sources":["../../src/lsp/lsp-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lsp-client.js","sourceRoot":"","sources":["../../src/lsp/lsp-client.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"lsp-manager.d.ts","sourceRoot":"","sources":["../../src/lsp/lsp-manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAa5C,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,SAAS,CAA+C;IAEhE,cAGC;IAEK,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAyC7E;IAED,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG7C;IAED,OAAO,CAAC,QAAQ;IAUV,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAU9B;CACF;AAID,wBAAgB,aAAa,IAAI,UAAU,CAG1C"}
1
+ {"version":3,"file":"lsp-manager.d.ts","sourceRoot":"","sources":["../../src/lsp/lsp-manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAa5C,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,SAAS,CAA+C;IAEhE,cAGC;IAEK,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAgD7E;IAED,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG7C;IAED,OAAO,CAAC,QAAQ;IAUV,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAU9B;CACF;AAID,wBAAgB,aAAa,IAAI,UAAU,CAG1C"}
@@ -1,7 +1,7 @@
1
1
  import { spawn } from "node:child_process";
2
2
  import { pathToFileURL } from "node:url";
3
3
  import { LspClient } from "./lsp-client.js";
4
- import { getLspConfigForLanguage, isLspAvailable } from "./lsp-servers.js";
4
+ import { getLspConfigForLanguage, isLspAvailable, resolveTsserverPath } from "./lsp-servers.js";
5
5
  const IDLE_TIMEOUT_MS = 5 * 60 * 1000;
6
6
  const REAP_INTERVAL_MS = 60 * 1000;
7
7
  export class LspManager {
@@ -31,7 +31,15 @@ export class LspManager {
31
31
  });
32
32
  const client = new LspClient(proc);
33
33
  const rootUri = pathToFileURL(rootPath).href;
34
- await client.initialize(rootUri);
34
+ // A workspace without node_modules (a worktree tested on the remote farm) has no TypeScript
35
+ // for the server to find; point it at one explicitly. See resolveTsserverPath.
36
+ let initOptions = lspInfo.config.initOptions;
37
+ if (lspInfo.name === "typescript") {
38
+ const tsserver = resolveTsserverPath(rootPath);
39
+ if (tsserver)
40
+ initOptions = { ...initOptions, tsserver: { path: tsserver } };
41
+ }
42
+ await client.initialize(rootUri, initOptions);
35
43
  const session = {
36
44
  client,
37
45
  language,
@@ -1 +1 @@
1
- {"version":3,"file":"lsp-manager.js","sourceRoot":"","sources":["../../src/lsp/lsp-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lsp-manager.js","sourceRoot":"","sources":["../../src/lsp/lsp-manager.ts"],"names":[],"mappings":"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"}
@@ -9,5 +9,12 @@ export declare function getLspConfigForLanguage(language: string): {
9
9
  name: string;
10
10
  config: LspServerConfig;
11
11
  } | null;
12
+ export declare function resolveTsserverPath(rootPath: string, deps?: {
13
+ exists?: (p: string) => boolean;
14
+ gitCommonDir?: (cwd: string) => string | null;
15
+ env?: NodeJS.ProcessEnv;
16
+ ownResolve?: () => string | null;
17
+ globalRoot?: () => string | null;
18
+ }): string | null;
12
19
  export declare function isLspAvailable(config: LspServerConfig): boolean;
13
20
  //# sourceMappingURL=lsp-servers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lsp-servers.d.ts","sourceRoot":"","sources":["../../src/lsp/lsp-servers.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAoCvD,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,eAAe,CAAA;CAAE,GAAG,IAAI,CAO1G;AAID,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAe/D"}
1
+ {"version":3,"file":"lsp-servers.d.ts","sourceRoot":"","sources":["../../src/lsp/lsp-servers.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAoCvD,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,eAAe,CAAA;CAAE,GAAG,IAAI,CAO1G;AAiBD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE;IACJ,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IAChC,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC9C,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CAC7B,GACL,MAAM,GAAG,IAAI,CAiCf;AA+BD,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAe/D"}
@@ -1,4 +1,7 @@
1
1
  import { execFileSync } from "node:child_process";
2
+ import { existsSync } from "node:fs";
3
+ import { createRequire } from "node:module";
4
+ import { dirname, join, resolve } from "node:path";
2
5
  export const LSP_SERVERS = {
3
6
  typescript: {
4
7
  command: "typescript-language-server",
@@ -44,6 +47,81 @@ export function getLspConfigForLanguage(language) {
44
47
  }
45
48
  return null;
46
49
  }
50
+ // WHERE typescript-language-server FINDS TYPESCRIPT, when the workspace has none.
51
+ //
52
+ // It resolves `typescript` from the workspace root and gives up otherwise ("Could not find a valid
53
+ // TypeScript installation … Exiting"). Measured 2026-09-30: 121 such failures in the daemon log, all
54
+ // in tgm-survey-platform worktrees — agents run tests on the remote farm (`rt`), so worktrees never
55
+ // get a local node_modules, and neither did the main checkout. Every LSP-backed tool (references,
56
+ // definition, rename, call hierarchy) silently fell back or failed there.
57
+ //
58
+ // Order: the workspace or any ancestor (monorepo root) · the main checkout of a linked worktree (same
59
+ // repo, so the same TypeScript major) · CODESIFT_TSSERVER_PATH · CodeSift's own dependency tree ·
60
+ // the global npm root. The first hit is passed as `initializationOptions.tsserver.path`; null means
61
+ // "let the server look for itself", which is exactly the old behaviour.
62
+ const TSSERVER_REL = join("node_modules", "typescript", "lib", "tsserver.js");
63
+ let globalTsserver;
64
+ export function resolveTsserverPath(rootPath, deps = {}) {
65
+ const exists = deps.exists ?? existsSync;
66
+ const env = deps.env ?? process.env;
67
+ for (let dir = resolve(rootPath);; dir = dirname(dir)) {
68
+ const p = join(dir, TSSERVER_REL);
69
+ if (exists(p))
70
+ return p;
71
+ if (dirname(dir) === dir)
72
+ break;
73
+ }
74
+ const common = (deps.gitCommonDir ?? defaultGitCommonDir)(rootPath);
75
+ if (common) {
76
+ const p = join(dirname(common), TSSERVER_REL);
77
+ if (exists(p))
78
+ return p;
79
+ }
80
+ const override = env["CODESIFT_TSSERVER_PATH"];
81
+ if (override && exists(override))
82
+ return override;
83
+ const own = (deps.ownResolve ?? defaultOwnResolve)();
84
+ if (own && exists(own))
85
+ return own;
86
+ if (deps.globalRoot) {
87
+ const root = deps.globalRoot();
88
+ const p = root ? join(root, "typescript", "lib", "tsserver.js") : null;
89
+ return p && exists(p) ? p : null;
90
+ }
91
+ if (globalTsserver === undefined) {
92
+ const root = defaultGlobalRoot();
93
+ const p = root ? join(root, "typescript", "lib", "tsserver.js") : null;
94
+ globalTsserver = p && existsSync(p) ? p : null;
95
+ }
96
+ return globalTsserver;
97
+ }
98
+ function defaultGitCommonDir(cwd) {
99
+ try {
100
+ const out = execFileSync("git", ["rev-parse", "--path-format=absolute", "--git-common-dir"], {
101
+ cwd, stdio: ["ignore", "pipe", "ignore"], timeout: 2_000, encoding: "utf8",
102
+ }).trim();
103
+ return out || null;
104
+ }
105
+ catch {
106
+ return null;
107
+ }
108
+ }
109
+ function defaultOwnResolve() {
110
+ try {
111
+ return createRequire(import.meta.url).resolve("typescript/lib/tsserver.js");
112
+ }
113
+ catch {
114
+ return null;
115
+ }
116
+ }
117
+ function defaultGlobalRoot() {
118
+ try {
119
+ return execFileSync("npm", ["root", "-g"], { stdio: ["ignore", "pipe", "ignore"], timeout: 5_000, encoding: "utf8" }).trim() || null;
120
+ }
121
+ catch {
122
+ return null;
123
+ }
124
+ }
47
125
  const availabilityCache = new Map();
48
126
  export function isLspAvailable(config) {
49
127
  const cached = availabilityCache.get(config.command);
@@ -1 +1 @@
1
- {"version":3,"file":"lsp-servers.js","sourceRoot":"","sources":["../../src/lsp/lsp-servers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AASlD,MAAM,CAAC,MAAM,WAAW,GAAoC;IAC1D,UAAU,EAAE;QACV,OAAO,EAAE,4BAA4B;QACrC,IAAI,EAAE,CAAC,SAAS,CAAC;QACjB,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC;KACtD;IACD,MAAM,EAAE;QACN,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,EAAE;QACR,SAAS,EAAE,CAAC,QAAQ,CAAC;KACtB;IACD,EAAE,EAAE;QACF,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,CAAC,OAAO,CAAC;QACf,SAAS,EAAE,CAAC,IAAI,CAAC;KAClB;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,eAAe;QACxB,IAAI,EAAE,EAAE;QACR,SAAS,EAAE,CAAC,MAAM,CAAC;KACpB;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,YAAY;QACrB,IAAI,EAAE,CAAC,OAAO,CAAC;QACf,SAAS,EAAE,CAAC,MAAM,CAAC;KACpB;IACD,GAAG,EAAE;QACH,OAAO,EAAE,cAAc;QACvB,IAAI,EAAE,CAAC,SAAS,CAAC;QACjB,SAAS,EAAE,CAAC,KAAK,CAAC;KACnB;IACD,MAAM,EAAE;QACN,OAAO,EAAE,wBAAwB;QACjC,IAAI,EAAE,EAAE;QACR,SAAS,EAAE,CAAC,QAAQ,CAAC;KACtB;CACF,CAAC;AAEF,MAAM,UAAU,uBAAuB,CAAC,QAAgB;IACtD,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QACzD,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAmB,CAAC;AAErD,MAAM,UAAU,cAAc,CAAC,MAAuB;IACpD,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACrD,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IAExC,IAAI,CAAC;QACH,2FAA2F;QAC3F,6FAA6F;QAC7F,gEAAgE;QAChE,YAAY,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7E,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC7C,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"lsp-servers.js","sourceRoot":"","sources":["../../src/lsp/lsp-servers.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"parser-manager.d.ts","sourceRoot":"","sources":["../../src/parser/parser-manager.ts"],"names":[],"mappings":"AAGA,OAAO,EAA0B,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,KAAK,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,iBAAiB,CAAC;AA+DtD,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAIhD;AAED,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAuBxE;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAElE;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQlE;AAED;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAW/C,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA2DxB"}
1
+ {"version":3,"file":"parser-manager.d.ts","sourceRoot":"","sources":["../../src/parser/parser-manager.ts"],"names":[],"mappings":"AAGA,OAAO,EAA0B,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,KAAK,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAqEtD,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAIhD;AAED,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAuBxE;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAElE;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQlE;AAED;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAW/C,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA2DxB"}
@@ -33,13 +33,19 @@ const EXTENSION_MAP = {
33
33
  ".toml": "config",
34
34
  ".ini": "config",
35
35
  ".properties": "config",
36
+ // Kotlin is FULLY parsed: tree-sitter-kotlin.wasm ships in src/parser/languages/
37
+ // and extractors/kotlin.ts is a real extractor (classes incl. data/sealed/enum,
38
+ // objects + companions, properties, extension + suspend functions, Kotest DSL,
39
+ // KMP expect/actual, annotations). It sat under the "unparsed" heading below for
40
+ // long enough that agents read the heading and skipped CodeSift on Kotlin repos.
41
+ // `.gradle.kts` is routed to the gradle-kts extractor by detectLanguage, not here.
42
+ ".kt": "kotlin", // Kotlin
43
+ ".kts": "kotlin", // Kotlin script
36
44
  // --- Unparsed source languages ---
37
45
  // These extensions are indexed (file appears in get_file_tree, search_text,
38
46
  // scan_secrets) but no symbol extraction happens — tree-sitter grammars
39
47
  // are not shipped yet. Add a real extractor in src/parser/extractors/
40
48
  // and a .wasm grammar in src/parser/languages/ to enable symbol support.
41
- ".kt": "kotlin", // Kotlin
42
- ".kts": "kotlin", // Kotlin script
43
49
  ".swift": "text_stub", // Swift
44
50
  ".dart": "text_stub", // Dart/Flutter
45
51
  ".scala": "text_stub", // Scala
@@ -1 +1 @@
1
- {"version":3,"file":"parser-manager.js","sourceRoot":"","sources":["../../src/parser/parser-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser-manager.js","sourceRoot":"","sources":["../../src/parser/parser-manager.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"symbols.d.ts","sourceRoot":"","sources":["../../../src/register-tool-groups/core/symbols.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AA+CtH,eAAO,MAAM,wBAAwB,EAAE,mBAAmB,EAkazD,CAAC"}
1
+ {"version":3,"file":"symbols.d.ts","sourceRoot":"","sources":["../../../src/register-tool-groups/core/symbols.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAkEtH,eAAO,MAAM,wBAAwB,EAAE,mBAAmB,EAudzD,CAAC"}
@@ -1,8 +1,9 @@
1
1
  import { z, zBool, zNum, lazySchema, OutputSchemas, checkTextStubHint } from "../shared.js";
2
- import { getSymbol, getSymbols, findAndShow, getContextBundle, formatRefsCompact, formatSymbolCompact, formatSymbolsCompact, formatBundleCompact, findReferences, findReferencesBatch, traceCallChain, impactAnalysis, traceRoute, goToDefinition, getTypeInfo, renameSymbol, getCallHierarchy, dispatchFormatter } from "../deps.js";
2
+ import { getSymbol, getSymbols, findAndShow, getContextBundle, formatRefsCompact, formatSymbolCompact, formatBundleCompact, findReferences, findReferencesBatch, traceCallChain, impactAnalysis, traceRoute, goToDefinition, getTypeInfo, renameSymbol, getCallHierarchy, dispatchFormatter } from "../deps.js";
3
3
  import { zJsonArray } from "./schema.js";
4
4
  // Direct import, not a lazyExport: a pure predicate with no heavy dependencies of its own.
5
5
  import { isCommentOnlyReference } from "../../tools/symbol-reference-tools.js";
6
+ import { commitDelivered, elideShownSource } from "../../server-helpers/shown-source.js";
6
7
  // Token diet (2026-07-10 tool-runtime-opt plan, Task 4): find_references' default
7
8
  // result cap. Telemetry showed find_references as the #2 token sink (605 calls /
8
9
  // 909K tok), most of it unbounded result sets on common symbol names. An explicit
@@ -35,6 +36,17 @@ function formatIdAmbiguity(ambiguity) {
35
36
  * silently DROPS the last reference (and reports a nonsense `+${len+1} more`),
36
37
  * and a fractional cap prints `+7.5 more`. Clamp to a whole number ≥ 0.
37
38
  */
39
+ /**
40
+ * Render a symbol, replacing a body already shown in this conversation with a one-line pointer.
41
+ * See server-helpers/shown-source.ts for when that is (and is not) done.
42
+ */
43
+ async function renderSymbol(sym, force) {
44
+ const view = elideShownSource(sym, force ? { force } : undefined);
45
+ const text = await formatSymbolCompact(view.symbol);
46
+ return { text: view.note ? `${text}\n${view.note}` : text, view };
47
+ }
48
+ const FULL_SOURCE_DESCRIPTION = "Resend source even if this exact body was already returned earlier in the conversation " +
49
+ "(default false: a repeat comes back as a one-line 'unchanged' pointer)";
38
50
  function normalizeMaxRefs(raw) {
39
51
  if (typeof raw !== "number" || !Number.isFinite(raw))
40
52
  return DEFAULT_MAX_REFS;
@@ -54,6 +66,7 @@ export const CORE_SYMBOL_TOOL_ENTRIES = [
54
66
  "search_symbols/get_file_outline results, it cannot be constructed by hand (it embeds the " +
55
67
  "declaration line). A bare symbol name is also accepted when it is unique in the repo."),
56
68
  include_related: zBool().describe("Include children/related symbols (default: true)"),
69
+ full_source: zBool().describe(FULL_SOURCE_DESCRIPTION),
57
70
  })),
58
71
  handler: async (args) => {
59
72
  const opts = {};
@@ -85,10 +98,13 @@ export const CORE_SYMBOL_TOOL_ENTRIES = [
85
98
  const hint = await checkTextStubHint(args.repo, "get_symbol", true);
86
99
  return hint ?? `Symbol "${symbolId}" not found. Use search_symbols(query=...) to discover available IDs.`;
87
100
  }
88
- let text = resolvedNote + await formatSymbolCompact(result.symbol);
101
+ const rendered = await renderSymbol(result.symbol, args.full_source);
102
+ let text = resolvedNote + rendered.text;
89
103
  if (result.related && result.related.length > 0) {
90
104
  text += "\n\n--- children ---\n" + result.related.map((s) => `${s.kind} ${s.name}${s.signature ? s.signature : ""} [${s.file}:${s.start_line}]`).join("\n");
91
105
  }
106
+ // Recorded only now that the whole reply exists, and only if the cap will not cut it.
107
+ commitDelivered([{ view: rendered.view, chars: resolvedNote.length + rendered.text.length }]);
92
108
  return text;
93
109
  },
94
110
  } },
@@ -105,6 +121,7 @@ export const CORE_SYMBOL_TOOL_ENTRIES = [
105
121
  ]).describe("Array of symbol IDs, format 'repo:file:name:line' — copy from search_symbols/get_file_outline " +
106
122
  "results rather than constructing them. Bare symbol names are accepted when unique. " +
107
123
  "Can be passed as a JSON string."),
124
+ full_source: zBool().describe(FULL_SOURCE_DESCRIPTION),
108
125
  })),
109
126
  handler: async (args) => {
110
127
  const ids = args.symbol_ids;
@@ -132,7 +149,11 @@ export const CORE_SYMBOL_TOOL_ENTRIES = [
132
149
  syms = [...syms, ...await getSymbols(args.repo, retry)];
133
150
  }
134
151
  }
135
- const output = await formatSymbolsCompact(syms);
152
+ const force = args.full_source;
153
+ // All checks happen before any commit, so a symbol listed twice in one call is sent in full
154
+ // both times instead of pointing at a copy "already shown" three lines up.
155
+ const rendered = await Promise.all(syms.map((sym) => renderSymbol(sym, force)));
156
+ const output = rendered.map((r) => r.text).join("\n\n");
136
157
  // Surface fuzzy suggestions for missing IDs (telemetry: 26% zero rate).
137
158
  let suggestions = "";
138
159
  if (syms.length < ids.length) {
@@ -154,6 +175,12 @@ export const CORE_SYMBOL_TOOL_ENTRIES = [
154
175
  }
155
176
  }
156
177
  const hint = await checkTextStubHint(args.repo, "get_symbols", syms.length === 0);
178
+ // In response order, with each block's separator, so the budget walk matches what the cap
179
+ // will keep; blocks past it are not recorded as shown.
180
+ commitDelivered(rendered.map((r, i) => ({
181
+ view: r.view,
182
+ chars: r.text.length + (i === 0 ? (hint?.length ?? 0) : 2),
183
+ })));
157
184
  return (hint ? hint + output : output) + suggestions;
158
185
  },
159
186
  } },
@@ -166,15 +193,20 @@ export const CORE_SYMBOL_TOOL_ENTRIES = [
166
193
  repo: z.string().optional().describe("Repository identifier (default: auto-detected from CWD)"),
167
194
  query: z.string().describe("Symbol name or query to search for"),
168
195
  include_refs: zBool().describe("Include locations that reference this symbol"),
196
+ full_source: zBool().describe(FULL_SOURCE_DESCRIPTION),
169
197
  })),
170
198
  handler: async (args) => {
171
199
  const result = await findAndShow(args.repo, args.query, args.include_refs);
172
200
  if (!result)
173
201
  return null;
174
- let text = formatIdAmbiguity(result.id_ambiguity) + (await formatSymbolCompact(result.symbol));
202
+ const rendered = await renderSymbol(result.symbol, args.full_source);
203
+ const prefix = formatIdAmbiguity(result.id_ambiguity);
204
+ let text = prefix + rendered.text;
175
205
  if (result.references) {
176
206
  text += `\n\n--- references ---\n${await formatRefsCompact(result.references)}`;
177
207
  }
208
+ // The references follow the body, so only the prefix and the body decide whether it survives.
209
+ commitDelivered([{ view: rendered.view, chars: prefix.length + rendered.text.length }]);
178
210
  return text;
179
211
  },
180
212
  } },
@@ -186,12 +218,45 @@ export const CORE_SYMBOL_TOOL_ENTRIES = [
186
218
  schema: lazySchema(() => ({
187
219
  repo: z.string().optional().describe("Repository identifier (default: auto-detected from CWD)"),
188
220
  symbol_name: z.string().describe("Symbol name to find"),
221
+ full_source: zBool().describe(FULL_SOURCE_DESCRIPTION),
189
222
  })),
190
223
  handler: async (args) => {
191
224
  const bundle = await getContextBundle(args.repo, args.symbol_name);
192
- if (!bundle)
225
+ if (!bundle?.symbol)
193
226
  return null;
194
- return formatIdAmbiguity(bundle.id_ambiguity) + (await formatBundleCompact(bundle));
227
+ const view = elideShownSource(bundle.symbol, args.full_source === true ? { force: true } : undefined);
228
+ let text = await formatBundleCompact({ ...bundle, symbol: view.symbol });
229
+ // The symbol header is the bundle's first line; the pointer belongs directly under it.
230
+ if (view.note)
231
+ text = text.replace(/^[^\n]*/, (header) => `${header}\n${view.note}`);
232
+ const prefix = formatIdAmbiguity(bundle.id_ambiguity);
233
+ commitDelivered([{ view, chars: prefix.length + text.length }]);
234
+ return prefix + text;
235
+ },
236
+ } },
237
+ { order: 1557, definition: {
238
+ name: "explore",
239
+ category: "search",
240
+ searchHint: "explore understand how works where defined callers callees one call overview symbol source",
241
+ description: "One call for 'where is X and how does it connect': ranks symbols for the query, returns the top " +
242
+ "few with full source plus their direct callers/callees, and lists the other matches. Replaces " +
243
+ "search_symbols → get_symbol → find_references chains. Output is capped by token_budget (default 6000).",
244
+ schema: lazySchema(() => ({
245
+ repo: z.string().optional().describe("Repository identifier (default: auto-detected from CWD)"),
246
+ query: z.string().describe("Symbol name, identifier fragment or short description of what you are looking for"),
247
+ top: zNum().describe("How many top matches get full source + call graph (default 3, max 8)"),
248
+ token_budget: zNum().describe("Approximate output ceiling in tokens (default 6000)"),
249
+ file_pattern: z.string().optional().describe("Glob to restrict matches, e.g. 'src/**/*.ts'"),
250
+ full_source: zBool().describe(FULL_SOURCE_DESCRIPTION),
251
+ })),
252
+ handler: async (args) => {
253
+ const { explore } = await import("../../tools/explore-tools.js");
254
+ return explore(args.repo, args.query, {
255
+ top: args.top,
256
+ token_budget: args.token_budget,
257
+ file_pattern: args.file_pattern,
258
+ full_source: args.full_source,
259
+ });
195
260
  },
196
261
  } },
197
262
  // --- References & call graph ---