sdl-mcp 0.12.0 → 0.12.2

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 (278) hide show
  1. package/README.md +3 -3
  2. package/config/sdlmcp.config.example.json +4 -1
  3. package/config/sdlmcp.config.schema.json +7 -2
  4. package/dist/.tsbuildinfo +1 -1
  5. package/dist/agent/context-seeding.d.ts +14 -0
  6. package/dist/agent/context-seeding.d.ts.map +1 -1
  7. package/dist/agent/context-seeding.js +118 -4
  8. package/dist/agent/context-seeding.js.map +1 -1
  9. package/dist/agent/types.d.ts +4 -0
  10. package/dist/agent/types.d.ts.map +1 -1
  11. package/dist/cli/commands/index.d.ts +10 -0
  12. package/dist/cli/commands/index.d.ts.map +1 -1
  13. package/dist/cli/commands/index.js +20 -3
  14. package/dist/cli/commands/index.js.map +1 -1
  15. package/dist/cli/commands/init.d.ts +1 -1
  16. package/dist/cli/commands/init.js +2 -2
  17. package/dist/cli/commands/tool-actions.d.ts.map +1 -1
  18. package/dist/cli/commands/tool-actions.js +30 -0
  19. package/dist/cli/commands/tool-actions.js.map +1 -1
  20. package/dist/cli/transport/http.d.ts.map +1 -1
  21. package/dist/cli/transport/http.js +7 -0
  22. package/dist/cli/transport/http.js.map +1 -1
  23. package/dist/code-mode/action-catalog.d.ts +12 -0
  24. package/dist/code-mode/action-catalog.d.ts.map +1 -1
  25. package/dist/code-mode/action-catalog.js +27 -5
  26. package/dist/code-mode/action-catalog.js.map +1 -1
  27. package/dist/code-mode/descriptions.d.ts +1 -0
  28. package/dist/code-mode/descriptions.d.ts.map +1 -1
  29. package/dist/code-mode/descriptions.js +13 -6
  30. package/dist/code-mode/descriptions.js.map +1 -1
  31. package/dist/code-mode/index.d.ts.map +1 -1
  32. package/dist/code-mode/index.js +36 -7
  33. package/dist/code-mode/index.js.map +1 -1
  34. package/dist/code-mode/manual-generator.d.ts.map +1 -1
  35. package/dist/code-mode/manual-generator.js +25 -21
  36. package/dist/code-mode/manual-generator.js.map +1 -1
  37. package/dist/code-mode/ref-resolver.d.ts.map +1 -1
  38. package/dist/code-mode/ref-resolver.js +30 -6
  39. package/dist/code-mode/ref-resolver.js.map +1 -1
  40. package/dist/code-mode/retrieve.d.ts +44 -0
  41. package/dist/code-mode/retrieve.d.ts.map +1 -0
  42. package/dist/code-mode/retrieve.js +68 -0
  43. package/dist/code-mode/retrieve.js.map +1 -0
  44. package/dist/code-mode/types.d.ts +1 -0
  45. package/dist/code-mode/types.d.ts.map +1 -1
  46. package/dist/code-mode/workflow-executor.d.ts.map +1 -1
  47. package/dist/code-mode/workflow-executor.js +55 -5
  48. package/dist/code-mode/workflow-executor.js.map +1 -1
  49. package/dist/code-mode/workflow-parser.d.ts.map +1 -1
  50. package/dist/code-mode/workflow-parser.js +19 -2
  51. package/dist/code-mode/workflow-parser.js.map +1 -1
  52. package/dist/code-mode/workflow-truncation.d.ts +0 -5
  53. package/dist/code-mode/workflow-truncation.d.ts.map +1 -1
  54. package/dist/code-mode/workflow-truncation.js +53 -1
  55. package/dist/code-mode/workflow-truncation.js.map +1 -1
  56. package/dist/config/types.d.ts +5 -3
  57. package/dist/config/types.d.ts.map +1 -1
  58. package/dist/config/types.js +2 -1
  59. package/dist/config/types.js.map +1 -1
  60. package/dist/db/ladybug-edges.d.ts +12 -0
  61. package/dist/db/ladybug-edges.d.ts.map +1 -1
  62. package/dist/db/ladybug-edges.js +26 -0
  63. package/dist/db/ladybug-edges.js.map +1 -1
  64. package/dist/domain/types.d.ts +5 -0
  65. package/dist/domain/types.d.ts.map +1 -1
  66. package/dist/gateway/descriptions.d.ts.map +1 -1
  67. package/dist/gateway/descriptions.js +5 -5
  68. package/dist/gateway/descriptions.js.map +1 -1
  69. package/dist/gateway/router.js +1 -1
  70. package/dist/gateway/router.js.map +1 -1
  71. package/dist/gateway/schemas.d.ts +48 -4
  72. package/dist/gateway/schemas.d.ts.map +1 -1
  73. package/dist/gateway/schemas.js +25 -8
  74. package/dist/gateway/schemas.js.map +1 -1
  75. package/dist/graph/overview.js +9 -1
  76. package/dist/graph/overview.js.map +1 -1
  77. package/dist/graph/prefetch.d.ts +1 -0
  78. package/dist/graph/prefetch.d.ts.map +1 -1
  79. package/dist/graph/prefetch.js +5 -1
  80. package/dist/graph/prefetch.js.map +1 -1
  81. package/dist/graph/slice/slice-serializer.d.ts.map +1 -1
  82. package/dist/graph/slice/slice-serializer.js +25 -6
  83. package/dist/graph/slice/slice-serializer.js.map +1 -1
  84. package/dist/indexer/parser/build-rows.d.ts.map +1 -1
  85. package/dist/indexer/parser/build-rows.js +6 -3
  86. package/dist/indexer/parser/build-rows.js.map +1 -1
  87. package/dist/indexer/provider-first/scip-normalizer.d.ts.map +1 -1
  88. package/dist/indexer/provider-first/scip-normalizer.js +25 -4
  89. package/dist/indexer/provider-first/scip-normalizer.js.map +1 -1
  90. package/dist/indexer/summaries.d.ts +2 -1
  91. package/dist/indexer/summaries.d.ts.map +1 -1
  92. package/dist/indexer/summaries.js +12 -1
  93. package/dist/indexer/summaries.js.map +1 -1
  94. package/dist/indexer/summary-generator.d.ts +1 -0
  95. package/dist/indexer/summary-generator.d.ts.map +1 -1
  96. package/dist/indexer/summary-generator.js +18 -2
  97. package/dist/indexer/summary-generator.js.map +1 -1
  98. package/dist/live-index/coordinator.js +1 -1
  99. package/dist/live-index/coordinator.js.map +1 -1
  100. package/dist/live-index/overlay-reader.d.ts.map +1 -1
  101. package/dist/live-index/overlay-reader.js +15 -3
  102. package/dist/live-index/overlay-reader.js.map +1 -1
  103. package/dist/mcp/context-answer-first.d.ts +43 -0
  104. package/dist/mcp/context-answer-first.d.ts.map +1 -0
  105. package/dist/mcp/context-answer-first.js +129 -0
  106. package/dist/mcp/context-answer-first.js.map +1 -0
  107. package/dist/mcp/context-response-projection.d.ts +3 -0
  108. package/dist/mcp/context-response-projection.d.ts.map +1 -1
  109. package/dist/mcp/context-response-projection.js +76 -31
  110. package/dist/mcp/context-response-projection.js.map +1 -1
  111. package/dist/mcp/request-normalization.d.ts +3 -1
  112. package/dist/mcp/request-normalization.d.ts.map +1 -1
  113. package/dist/mcp/request-normalization.js +68 -2
  114. package/dist/mcp/request-normalization.js.map +1 -1
  115. package/dist/mcp/server-instructions.d.ts.map +1 -1
  116. package/dist/mcp/server-instructions.js +7 -6
  117. package/dist/mcp/server-instructions.js.map +1 -1
  118. package/dist/mcp/session-dedupe.d.ts +35 -0
  119. package/dist/mcp/session-dedupe.d.ts.map +1 -0
  120. package/dist/mcp/session-dedupe.js +116 -0
  121. package/dist/mcp/session-dedupe.js.map +1 -0
  122. package/dist/mcp/short-id-registry.d.ts +28 -0
  123. package/dist/mcp/short-id-registry.d.ts.map +1 -0
  124. package/dist/mcp/short-id-registry.js +122 -0
  125. package/dist/mcp/short-id-registry.js.map +1 -0
  126. package/dist/mcp/tool-call-formatter.d.ts.map +1 -1
  127. package/dist/mcp/tool-call-formatter.js +60 -17
  128. package/dist/mcp/tool-call-formatter.js.map +1 -1
  129. package/dist/mcp/tools/buffer.d.ts +1 -0
  130. package/dist/mcp/tools/buffer.d.ts.map +1 -1
  131. package/dist/mcp/tools/buffer.js +33 -1
  132. package/dist/mcp/tools/buffer.js.map +1 -1
  133. package/dist/mcp/tools/code.d.ts +6 -0
  134. package/dist/mcp/tools/code.d.ts.map +1 -1
  135. package/dist/mcp/tools/code.js +148 -16
  136. package/dist/mcp/tools/code.js.map +1 -1
  137. package/dist/mcp/tools/context-wire-format.d.ts +2 -0
  138. package/dist/mcp/tools/context-wire-format.d.ts.map +1 -1
  139. package/dist/mcp/tools/context-wire-format.js +23 -9
  140. package/dist/mcp/tools/context-wire-format.js.map +1 -1
  141. package/dist/mcp/tools/context.d.ts.map +1 -1
  142. package/dist/mcp/tools/context.js +200 -2
  143. package/dist/mcp/tools/context.js.map +1 -1
  144. package/dist/mcp/tools/file-gateway.d.ts +50 -4
  145. package/dist/mcp/tools/file-gateway.d.ts.map +1 -1
  146. package/dist/mcp/tools/file-gateway.js +11 -10
  147. package/dist/mcp/tools/file-gateway.js.map +1 -1
  148. package/dist/mcp/tools/file-read.d.ts.map +1 -1
  149. package/dist/mcp/tools/file-read.js +22 -2
  150. package/dist/mcp/tools/file-read.js.map +1 -1
  151. package/dist/mcp/tools/policy.d.ts +17 -0
  152. package/dist/mcp/tools/policy.d.ts.map +1 -1
  153. package/dist/mcp/tools/policy.js +18 -6
  154. package/dist/mcp/tools/policy.js.map +1 -1
  155. package/dist/mcp/tools/prRisk.d.ts +18 -1
  156. package/dist/mcp/tools/prRisk.d.ts.map +1 -1
  157. package/dist/mcp/tools/prRisk.js +95 -7
  158. package/dist/mcp/tools/prRisk.js.map +1 -1
  159. package/dist/mcp/tools/repo.d.ts.map +1 -1
  160. package/dist/mcp/tools/repo.js +55 -8
  161. package/dist/mcp/tools/repo.js.map +1 -1
  162. package/dist/mcp/tools/runtime.d.ts +8 -1
  163. package/dist/mcp/tools/runtime.d.ts.map +1 -1
  164. package/dist/mcp/tools/runtime.js +127 -11
  165. package/dist/mcp/tools/runtime.js.map +1 -1
  166. package/dist/mcp/tools/search-edit/index.d.ts.map +1 -1
  167. package/dist/mcp/tools/search-edit/index.js +32 -8
  168. package/dist/mcp/tools/search-edit/index.js.map +1 -1
  169. package/dist/mcp/tools/search-edit/planner.d.ts +52 -2
  170. package/dist/mcp/tools/search-edit/planner.d.ts.map +1 -1
  171. package/dist/mcp/tools/search-edit/planner.js +48 -17
  172. package/dist/mcp/tools/search-edit/planner.js.map +1 -1
  173. package/dist/mcp/tools/search-edit/rename.d.ts +20 -0
  174. package/dist/mcp/tools/search-edit/rename.d.ts.map +1 -0
  175. package/dist/mcp/tools/search-edit/rename.js +107 -0
  176. package/dist/mcp/tools/search-edit/rename.js.map +1 -0
  177. package/dist/mcp/tools/search-edit/signature.d.ts +26 -0
  178. package/dist/mcp/tools/search-edit/signature.d.ts.map +1 -0
  179. package/dist/mcp/tools/search-edit/signature.js +421 -0
  180. package/dist/mcp/tools/search-edit/signature.js.map +1 -0
  181. package/dist/mcp/tools/search-edit/structural.d.ts +6 -0
  182. package/dist/mcp/tools/search-edit/structural.d.ts.map +1 -1
  183. package/dist/mcp/tools/search-edit/structural.js +10 -0
  184. package/dist/mcp/tools/search-edit/structural.js.map +1 -1
  185. package/dist/mcp/tools/semantic-enrichment.d.ts +2 -0
  186. package/dist/mcp/tools/semantic-enrichment.d.ts.map +1 -1
  187. package/dist/mcp/tools/semantic-enrichment.js +37 -1
  188. package/dist/mcp/tools/semantic-enrichment.js.map +1 -1
  189. package/dist/mcp/tools/slice-wire-format.d.ts +2 -0
  190. package/dist/mcp/tools/slice-wire-format.d.ts.map +1 -1
  191. package/dist/mcp/tools/slice-wire-format.js +35 -16
  192. package/dist/mcp/tools/slice-wire-format.js.map +1 -1
  193. package/dist/mcp/tools/slice.d.ts.map +1 -1
  194. package/dist/mcp/tools/slice.js +5 -1
  195. package/dist/mcp/tools/slice.js.map +1 -1
  196. package/dist/mcp/tools/symbol-edit/ast.d.ts.map +1 -1
  197. package/dist/mcp/tools/symbol-edit/ast.js +4 -1
  198. package/dist/mcp/tools/symbol-edit/ast.js.map +1 -1
  199. package/dist/mcp/tools/symbol-edit/index.d.ts.map +1 -1
  200. package/dist/mcp/tools/symbol-edit/index.js +0 -1
  201. package/dist/mcp/tools/symbol-edit/index.js.map +1 -1
  202. package/dist/mcp/tools/symbol-utils.d.ts +42 -0
  203. package/dist/mcp/tools/symbol-utils.d.ts.map +1 -1
  204. package/dist/mcp/tools/symbol-utils.js +95 -0
  205. package/dist/mcp/tools/symbol-utils.js.map +1 -1
  206. package/dist/mcp/tools/symbol-wire-format.d.ts +2 -0
  207. package/dist/mcp/tools/symbol-wire-format.d.ts.map +1 -1
  208. package/dist/mcp/tools/symbol-wire-format.js +18 -6
  209. package/dist/mcp/tools/symbol-wire-format.js.map +1 -1
  210. package/dist/mcp/tools/symbol.d.ts.map +1 -1
  211. package/dist/mcp/tools/symbol.js +138 -14
  212. package/dist/mcp/tools/symbol.js.map +1 -1
  213. package/dist/mcp/tools/tool-descriptors.d.ts +1 -0
  214. package/dist/mcp/tools/tool-descriptors.d.ts.map +1 -1
  215. package/dist/mcp/tools/tool-descriptors.js +6 -3
  216. package/dist/mcp/tools/tool-descriptors.js.map +1 -1
  217. package/dist/mcp/tools/usage.d.ts.map +1 -1
  218. package/dist/mcp/tools/usage.js +23 -0
  219. package/dist/mcp/tools/usage.js.map +1 -1
  220. package/dist/mcp/tools.d.ts +406 -127
  221. package/dist/mcp/tools.d.ts.map +1 -1
  222. package/dist/mcp/tools.js +279 -72
  223. package/dist/mcp/tools.js.map +1 -1
  224. package/dist/mcp/waste-ledger.d.ts +33 -0
  225. package/dist/mcp/waste-ledger.d.ts.map +1 -0
  226. package/dist/mcp/waste-ledger.js +133 -0
  227. package/dist/mcp/waste-ledger.js.map +1 -0
  228. package/dist/mcp/wire/packed/encoders/context.d.ts +3 -1
  229. package/dist/mcp/wire/packed/encoders/context.d.ts.map +1 -1
  230. package/dist/mcp/wire/packed/encoders/context.js +21 -10
  231. package/dist/mcp/wire/packed/encoders/context.js.map +1 -1
  232. package/dist/mcp/wire/packed/encoders/slice.d.ts +3 -1
  233. package/dist/mcp/wire/packed/encoders/slice.d.ts.map +1 -1
  234. package/dist/mcp/wire/packed/encoders/slice.js +18 -9
  235. package/dist/mcp/wire/packed/encoders/slice.js.map +1 -1
  236. package/dist/mcp/wire/packed/encoders/symbol-search.d.ts +3 -1
  237. package/dist/mcp/wire/packed/encoders/symbol-search.d.ts.map +1 -1
  238. package/dist/mcp/wire/packed/encoders/symbol-search.js +11 -4
  239. package/dist/mcp/wire/packed/encoders/symbol-search.js.map +1 -1
  240. package/dist/mcp/wire/packed/short-ids.d.ts +18 -0
  241. package/dist/mcp/wire/packed/short-ids.d.ts.map +1 -0
  242. package/dist/mcp/wire/packed/short-ids.js +56 -0
  243. package/dist/mcp/wire/packed/short-ids.js.map +1 -0
  244. package/dist/retrieval/orchestrator.d.ts +1 -0
  245. package/dist/retrieval/orchestrator.d.ts.map +1 -1
  246. package/dist/retrieval/orchestrator.js +25 -1
  247. package/dist/retrieval/orchestrator.js.map +1 -1
  248. package/dist/runtime/executor.d.ts +6 -0
  249. package/dist/runtime/executor.d.ts.map +1 -1
  250. package/dist/runtime/executor.js +16 -8
  251. package/dist/runtime/executor.js.map +1 -1
  252. package/dist/runtime/output-digest.d.ts +34 -0
  253. package/dist/runtime/output-digest.d.ts.map +1 -0
  254. package/dist/runtime/output-digest.js +245 -0
  255. package/dist/runtime/output-digest.js.map +1 -0
  256. package/dist/runtime/response-artifacts.d.ts.map +1 -1
  257. package/dist/runtime/response-artifacts.js +15 -1
  258. package/dist/runtime/response-artifacts.js.map +1 -1
  259. package/dist/runtime/runtimes.d.ts.map +1 -1
  260. package/dist/runtime/runtimes.js +15 -0
  261. package/dist/runtime/runtimes.js.map +1 -1
  262. package/dist/semantic/enrichment.d.ts +2 -0
  263. package/dist/semantic/enrichment.d.ts.map +1 -1
  264. package/dist/semantic/enrichment.js.map +1 -1
  265. package/dist/server.d.ts +2 -1
  266. package/dist/server.d.ts.map +1 -1
  267. package/dist/server.js +96 -3
  268. package/dist/server.js.map +1 -1
  269. package/dist/services/card-builder.d.ts.map +1 -1
  270. package/dist/services/card-builder.js +11 -7
  271. package/dist/services/card-builder.js.map +1 -1
  272. package/package.json +14 -8
  273. package/templates/AGENTS.md.template +7 -0
  274. package/templates/CLAUDE.md.template +7 -0
  275. package/templates/CODEX.md.template +7 -0
  276. package/templates/GEMINI.md.template +7 -0
  277. package/templates/OPENCODE.md.template +7 -0
  278. package/templates/SDL.md +49 -13
@@ -10,7 +10,7 @@ import { createPolicyDenial } from "../mcp/errors.js";
10
10
  import { decideCodeAccessLegacy } from "../policy/code-access.js";
11
11
  import { logPolicyDecision } from "../mcp/telemetry.js";
12
12
  import { uniqueLimit } from "../graph/slice/slice-serializer.js";
13
- import { toLegacySymbolRow } from "../mcp/tools/symbol-utils.js";
13
+ import { cardSummaryForWire, toLegacySymbolRow, } from "../mcp/tools/symbol-utils.js";
14
14
  import { getOverlaySnapshot, getOverlaySymbol, getShadowedDurableSymbol, getTargetNamesWithOverlay, } from "../live-index/overlay-reader.js";
15
15
  import { logger } from "../util/logger.js";
16
16
  import { safeJsonParse, StringArraySchema } from "../util/safeJson.js";
@@ -127,9 +127,8 @@ async function buildOverlayCardForSymbol(conn, repoId, symbolId, ifNoneMatch, ef
127
127
  visibility: (overlay.symbol.visibility ??
128
128
  undefined),
129
129
  signature,
130
- summary: overlay.symbol.summary
131
- ? overlay.symbol.summary.slice(0, SYMBOL_CARD_SUMMARY_MAX_CHARS)
132
- : undefined,
130
+ summary: cardSummaryForWire(overlay.symbol.summary, overlay.symbol.name)?.slice(0, SYMBOL_CARD_SUMMARY_MAX_CHARS),
131
+ summaryProvenance: summaryProvenanceForWire(cardSummaryForWire(overlay.symbol.summary, overlay.symbol.name), undefined),
133
132
  invariants: invariants
134
133
  ? invariants.slice(0, SYMBOL_CARD_MAX_INVARIANTS)
135
134
  : undefined,
@@ -202,6 +201,12 @@ async function buildOverlayCardForSymbol(conn, repoId, symbolId, ifNoneMatch, ef
202
201
  };
203
202
  }
204
203
  const CLASS_LIKE_KINDS = new Set(["class", "interface", "module"]);
204
+ function summaryProvenanceForWire(summary, source) {
205
+ if (summary === undefined) {
206
+ return undefined;
207
+ }
208
+ return source === "llm" ? "llm" : "heuristic";
209
+ }
205
210
  export async function buildCardForSymbol(repoId, symbolId, ifNoneMatch, options = {}) {
206
211
  const config = loadConfig();
207
212
  const cacheEnabled = config.cache?.enabled ?? true;
@@ -329,9 +334,7 @@ export async function buildCardForSymbol(repoId, symbolId, ifNoneMatch, options
329
334
  const signature = parseJson(symbol.signatureJson);
330
335
  const invariants = parseJson(symbol.invariantsJson);
331
336
  const sideEffects = parseJson(symbol.sideEffectsJson);
332
- const cardSummary = symbol.summary
333
- ? symbol.summary.slice(0, SYMBOL_CARD_SUMMARY_MAX_CHARS)
334
- : undefined;
337
+ const cardSummary = cardSummaryForWire(symbol.summary, symbol.name)?.slice(0, SYMBOL_CARD_SUMMARY_MAX_CHARS);
335
338
  const importTargetIds = edgesFrom
336
339
  .filter((edge) => edge.edgeType === "import")
337
340
  .map((edge) => edge.toSymbolId);
@@ -410,6 +413,7 @@ export async function buildCardForSymbol(repoId, symbolId, ifNoneMatch, options
410
413
  visibility: (symbol.visibility ?? undefined),
411
414
  signature,
412
415
  summary: cardSummary,
416
+ summaryProvenance: summaryProvenanceForWire(cardSummary, symbol.summarySource),
413
417
  invariants: invariants
414
418
  ? invariants.slice(0, SYMBOL_CARD_MAX_INVARIANTS)
415
419
  : undefined,
@@ -1 +1 @@
1
- {"version":3,"file":"card-builder.js","sourceRoot":"","sources":["../../src/services/card-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"card-builder.js","sourceRoot":"","sources":["../../src/services/card-builder.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sdl-mcp",
3
- "version": "0.12.0",
3
+ "version": "0.12.2",
4
4
  "description": "Symbol Delta Ledger MCP Server - Cards-first code context for polyglot repositories",
5
5
  "type": "module",
6
6
  "main": "dist/main.js",
@@ -42,6 +42,13 @@
42
42
  "lint": "eslint src",
43
43
  "format": "prettier --write \"src/**/*.ts\"",
44
44
  "test": "node scripts/run-tests.mjs",
45
+ "test:unit": "node scripts/run-tests.mjs --group=unit",
46
+ "test:integration": "node scripts/run-tests.mjs --group=integration",
47
+ "test:property": "node scripts/run-tests.mjs --group=property",
48
+ "test:native": "npm run build:all && npm run test:native-parity && npm run test:native-index-smoke && npm run test:parity",
49
+ "test:benchmark": "node scripts/run-tests.mjs --group=benchmark",
50
+ "test:root": "node scripts/run-tests.mjs --group=root",
51
+ "test:golden-files": "node scripts/run-tests.mjs --group=golden",
45
52
  "test:harness": "npm run test:adapters",
46
53
  "test:adapters": "npm run build && npx tsc --rootDir tests/harness --outDir dist/tests/harness --module nodenext tests/harness/adapter-runner.ts && node dist/tests/harness/adapter-runner.js",
47
54
  "test:golden": "npm run build && node scripts/golden/update-goldens.ts validate",
@@ -73,7 +80,6 @@
73
80
  "prepare-release": "node scripts/prepare-release.mjs",
74
81
  "inspector": "npx @modelcontextprotocol/inspector node dist/main.js",
75
82
  "test:native-parity": "node tests/native/parity-test.ts",
76
- "test:integration": "node --experimental-strip-types --test-concurrency=1 --test tests/integration/*.test.ts",
77
83
  "test:parity": "node --experimental-strip-types --test-concurrency=1 --test tests/integration/engine-parity.test.ts",
78
84
  "check:config-sync": "node scripts/check-config-sync.ts",
79
85
  "check:schema-sync": "node scripts/check-schema-sync.mjs",
@@ -139,13 +145,13 @@
139
145
  "optionalDependencies": {
140
146
  "chokidar": "^5.0.0",
141
147
  "fb-watchman": "^2.0.2",
142
- "kuzu": "npm:@ladybugdb/core@0.16.0",
148
+ "kuzu": "npm:@ladybugdb/core@0.16.1",
143
149
  "onnxruntime-node": "^1.24.3",
144
- "sdl-mcp-native": "0.12.0",
145
- "sdl-mcp-watchman": "0.12.0",
146
- "tokenizers": "npm:@anush008/tokenizers@^0.6.0",
147
- "sdl-mcp-watchman-linux-x64": "0.12.0",
148
- "sdl-mcp-watchman-win32-x64": "0.12.0"
150
+ "sdl-mcp-native": "0.12.2",
151
+ "sdl-mcp-watchman": "0.12.2",
152
+ "sdl-mcp-watchman-linux-x64": "0.12.2",
153
+ "sdl-mcp-watchman-win32-x64": "0.12.2",
154
+ "tokenizers": "npm:@anush008/tokenizers@^0.6.0"
149
155
  },
150
156
  "devDependencies": {
151
157
  "@bufbuild/protobuf": "^2.0.0",
@@ -8,6 +8,13 @@ At the start of every new session in this repository, load and follow the `sdl-m
8
8
 
9
9
  When the SDL-MCP PID file is present, treat native repo-local shell and file tools as fallback-only. Use SDL runtime for shell actions with `stdin` for multiline input, the Iris ladder for indexed reads, `symbol.edit` for one-symbol indexed writes, `searchEditPreview` with `targeting:"identifier"`/`"structural"` or `operations[]` for cross-file indexed edits, and `file.read`/`file.write` for non-indexed files. Native access is reserved for `.codex/**`, `.claude/**`, and non-repo agent skills, memories, and session internals.
10
10
 
11
+ ## Token Economy
12
+
13
+ Prefer `runtimeExecute` `outputMode: "digest"` for build/test/lint; query artifacts only when needed.
14
+ For explain/debug, start `sdl.context` with `options.answerFirst: true`; expand through evidence IDs only if insufficient.
15
+ Treat `{ ref, unchanged: true }` as already-held content; use `refsMode: "off"` only to recover after lost context. Use `sN` aliases from `@ids` anywhere symbol IDs are accepted.
16
+ On search misses, retry from `nearMisses`; if `file.read` warns about a large untargeted read, retry with search, range, or token limits.
17
+
11
18
  SDL-MCP (Symbol Delta Ledger MCP Server) - an MCP server providing cards-first code context for polyglot repositories. Replaces bulk code reads with structured symbol cards, graph slices, delta packs, and gated code windows. Uses LadybugDB (graph DB), tree-sitter (AST parsing), and optional Rust native addon (napi-rs) for performance.
12
19
 
13
20
  > Optimized tool-use workflow for agents: see [SDL.md](./SDL.md).
@@ -8,6 +8,13 @@ At the start of every new session in this repository, load and follow the `sdl-m
8
8
 
9
9
  When the SDL-MCP PID file is present, treat native repo-local shell and file tools as fallback-only. Use SDL runtime for shell actions with `stdin` for multiline input, the Iris ladder for indexed reads, `symbol.edit` for one-symbol indexed writes, `searchEditPreview` with `targeting:"identifier"`/`"structural"` or `operations[]` for cross-file indexed edits, and `file.read`/`file.write` for non-indexed files. Native access is reserved for `.codex/**`, `.claude/**`, and non-repo agent skills, memories, and session internals.
10
10
 
11
+ ## Token Economy
12
+
13
+ Prefer `runtimeExecute` `outputMode: "digest"` for build/test/lint; query artifacts only when needed.
14
+ For explain/debug, start `sdl.context` with `options.answerFirst: true`; expand through evidence IDs only if insufficient.
15
+ Treat `{ ref, unchanged: true }` as already-held content; use `refsMode: "off"` only to recover after lost context. Use `sN` aliases from `@ids` anywhere symbol IDs are accepted.
16
+ On search misses, retry from `nearMisses`; if `file.read` warns about a large untargeted read, retry with search, range, or token limits.
17
+
11
18
  SDL-MCP (Symbol Delta Ledger MCP Server) - an MCP server providing cards-first code context for polyglot repositories. Replaces bulk code reads with structured symbol cards, graph slices, delta packs, and gated code windows. Uses LadybugDB (graph DB), tree-sitter (AST parsing), and optional Rust native addon (napi-rs) for performance.
12
19
 
13
20
  > Optimized tool-use workflow for agents: see [SDL.md](./SDL.md).
@@ -8,6 +8,13 @@ At the start of every new Codex session in this repository, load and follow the
8
8
 
9
9
  When the SDL-MCP PID file is present, treat native repo-local shell and file tools as fallback-only. Use SDL runtime for shell actions with `stdin` for multiline input, the Iris ladder for indexed reads, `symbol.edit` for one-symbol indexed writes, `searchEditPreview` with `targeting:"identifier"`/`"structural"` or `operations[]` for cross-file indexed edits, and `file.read`/`file.write` for non-indexed files. Native access is reserved for `.codex/**`, `.claude/**`, and non-repo agent skills, memories, and session internals.
10
10
 
11
+ ## Token Economy
12
+
13
+ Prefer `runtimeExecute` `outputMode: "digest"` for build/test/lint; query artifacts only when needed.
14
+ For explain/debug, start `sdl.context` with `options.answerFirst: true`; expand through evidence IDs only if insufficient.
15
+ Treat `{ ref, unchanged: true }` as already-held content; use `refsMode: "off"` only to recover after lost context. Use `sN` aliases from `@ids` anywhere symbol IDs are accepted.
16
+ On search misses, retry from `nearMisses`; if `file.read` warns about a large untargeted read, retry with search, range, or token limits.
17
+
11
18
  SDL-MCP (Symbol Delta Ledger MCP Server) - an MCP server providing cards-first code context for polyglot repositories. Replaces bulk code reads with structured symbol cards, graph slices, delta packs, and gated code windows. Uses LadybugDB (graph DB), tree-sitter (AST parsing), and optional Rust native addon (napi-rs) for performance.
12
19
 
13
20
  > Optimized tool-use workflow for agents: see [SDL.md](./SDL.md).
@@ -6,6 +6,13 @@ At the start of every new session in this repository, load and follow the `sdl-m
6
6
 
7
7
  When the SDL-MCP PID file is present, treat native repo-local shell and file tools as fallback-only. Use SDL runtime for shell actions with `stdin` for multiline input, the Iris ladder for indexed reads, `symbol.edit` for one-symbol indexed writes, `searchEditPreview` with `targeting:"identifier"`/`"structural"` or `operations[]` for cross-file indexed edits, and `file.read`/`file.write` for non-indexed files. Native access is reserved for `.codex/**`, `.claude/**`, and non-repo agent skills, memories, and session internals.
8
8
 
9
+ ## Token Economy
10
+
11
+ Prefer `runtimeExecute` `outputMode: "digest"` for build/test/lint; query artifacts only when needed.
12
+ For explain/debug, start `sdl.context` with `options.answerFirst: true`; expand through evidence IDs only if insufficient.
13
+ Treat `{ ref, unchanged: true }` as already-held content; use `refsMode: "off"` only to recover after lost context. Use `sN` aliases from `@ids` anywhere symbol IDs are accepted.
14
+ On search misses, retry from `nearMisses`; if `file.read` warns about a large untargeted read, retry with search, range, or token limits.
15
+
9
16
  SDL-MCP (Symbol Delta Ledger MCP Server) - an MCP server providing cards-first code context for polyglot repositories. Replaces bulk code reads with structured symbol cards, graph slices, delta packs, and gated code windows. Uses LadybugDB (graph DB), tree-sitter (AST parsing), and optional Rust native addon (napi-rs) for performance.
10
17
 
11
18
  > Optimized tool-use workflow for agents: see [SDL.md](./SDL.md).
@@ -6,6 +6,13 @@ At the start of every new session in this repository, load and follow the `sdl-m
6
6
 
7
7
  When the SDL-MCP PID file is present, treat native repo-local shell and file tools as fallback-only. Use SDL runtime for shell actions with `stdin` for multiline input, the Iris ladder for indexed reads, `symbol.edit` for one-symbol indexed writes, `searchEditPreview` with `targeting:"identifier"`/`"structural"` or `operations[]` for cross-file indexed edits, and `file.read`/`file.write` for non-indexed files. Native access is reserved for `.codex/**`, `.claude/**`, and non-repo agent skills, memories, and session internals.
8
8
 
9
+ ## Token Economy
10
+
11
+ Prefer `runtimeExecute` `outputMode: "digest"` for build/test/lint; query artifacts only when needed.
12
+ For explain/debug, start `sdl.context` with `options.answerFirst: true`; expand through evidence IDs only if insufficient.
13
+ Treat `{ ref, unchanged: true }` as already-held content; use `refsMode: "off"` only to recover after lost context. Use `sN` aliases from `@ids` anywhere symbol IDs are accepted.
14
+ On search misses, retry from `nearMisses`; if `file.read` warns about a large untargeted read, retry with search, range, or token limits.
15
+
9
16
  SDL-MCP (Symbol Delta Ledger MCP Server) - an MCP server providing cards-first code context for polyglot repositories. Replaces bulk code reads with structured symbol cards, graph slices, delta packs, and gated code windows. Uses LadybugDB (graph DB), tree-sitter (AST parsing), and optional Rust native addon (napi-rs) for performance.
10
17
 
11
18
  > Optimized tool-use workflow for agents: see [SDL.md](./SDL.md).
package/templates/SDL.md CHANGED
@@ -10,9 +10,9 @@ SDL-MCP is the normal repository interface. Native filesystem and shell tools ar
10
10
 
11
11
  1. Confirm server and repository state with `repo.status`.
12
12
  2. For code context, use the cheapest SDL surface that can answer the question:
13
- - Use `sdl.context` for explain, debug, review, implement, understand, or investigate prompts.
14
- - Use `symbolSearch` + `symbolGetCard` for exact symbol names, APIs, or focused edit targets.
15
- - Use `slice.build` when you need a compact dependency frontier, likely file list, blast radius, or edit-planning set before touching code.
13
+ - Use `sdl.context` for explain, debug, review, implement, understand, or investigate prompts. For explain/debug, try `options.answerFirst: true` before card-heavy context.
14
+ - Use `sdl.retrieve` for one-hop retrieval: `symbolSearch`, `symbolGetCard`, `sliceBuild`, `codeSkeleton`, `codeHotPath`, or a bounded `codeNeedWindow`.
15
+ - Use `sdl.workflow` only when steps need result piping, transforms, runtime execution, batch operations, or mutations.
16
16
  3. Never use `file.read` for indexed source. It is only for non-indexed files such as docs, configs, templates, JSON, and YAML.
17
17
  4. Use `options.contextMode: "precise"` for named symbols, exact paths, narrow bugs, focused reviews, and implementation follow-up.
18
18
  5. Use `options.contextMode: "broad"` for subsystem mapping, behavior tracing, unfamiliar areas, or broad investigation.
@@ -25,9 +25,11 @@ Do not run `index.refresh` by habit. Refresh only when `repo.status` shows stale
25
25
 
26
26
  ## 2. Retrieval Ladder
27
27
 
28
- Use `sdl.context` for task-shaped understanding. If the task already names a symbol or API, go straight to `symbolSearch` and `symbolGetCard`. If you need to decide which files or symbols to edit, build a slice before requesting code.
28
+ Use `sdl.context` for task-shaped understanding. For explain/debug tasks, start with `options.answerFirst: true` and expand through evidence IDs only when the answer is insufficient. Exact tool/action names are seeded from the action catalog, but use `sdl.retrieve` for one-hop retrieval when the task already names a symbol, API, operation, or focused code target. If you need to decide which files or symbols to edit, build a slice through `sdl.retrieve` before requesting code.
29
29
 
30
- Escalate through `sdl.workflow` in this order:
30
+ Use `sdl.workflow` only when steps need fields from earlier results, transforms, runtime execution, batch operations, mutations, or result piping.
31
+
32
+ Escalate through `sdl.retrieve` in this order:
31
33
 
32
34
  1. `symbolSearch`
33
35
  2. `symbolGetCard`
@@ -38,6 +40,8 @@ Escalate through `sdl.workflow` in this order:
38
40
 
39
41
  Use `codeNeedWindow` only as a last resort. Include a concrete `reason`, bounded `expectedLines`, and precise `identifiersToFind`. If SDL-MCP returns `nextBestAction`, `fallbackTools`, `fallbackRationale`, or denial guidance, follow that guidance instead of retrying broader native reads, `file.read` on indexed source, or larger raw windows.
40
42
 
43
+ For `codeSkeleton` file-mode retrieval, `file` is canonical. `sdl.retrieve` also accepts `args.filePath` and maps it to `file` for compatibility with other file-oriented SDL surfaces.
44
+
41
45
  When workflow steps need fields from earlier `$N` references, force JSON-compatible output on the earlier step. Keep limits tight; `sdl.workflow` manages ETags automatically. Do not include retrieval evidence unless you are debugging retrieval quality.
42
46
 
43
47
  ### Precise Context
@@ -160,18 +164,43 @@ Use this when you need likely files and symbols before choosing `symbol.edit` or
160
164
 
161
165
  ---
162
166
 
167
+ ## Token Economy
168
+
169
+ Use the cheapest rung that answers the task. Static price tags in `sdl.manual` and `sdl.action.search` are release-time estimates, not live telemetry; use them to choose the first probe, then use `usage.stats` and `signalDensity` only when you need a savings or waste report.
170
+
171
+ - Runtime: prefer `outputMode: "digest"` for build/test/lint and other noisy commands. The digest keeps a compact parsed status and persists full output for `runtimeQueryOutput`.
172
+ ```json
173
+ {
174
+ "fn": "runtimeExecute",
175
+ "args": {
176
+ "runtime": "shell",
177
+ "code": "npm test -- --runInBand",
178
+ "outputMode": "digest",
179
+ "persistOutput": true,
180
+ "timeoutMs": 120000
181
+ }
182
+ }
183
+ ```
184
+ - Dedupe refs: `{ "ref": { "key": "card:<repo>:<symbol>", "etag": "..." }, "unchanged": true }` means SDL already delivered the content in this session. Do not re-request it; set `refsMode: "off"` only after compaction or lost context to recover full content.
185
+ - Short IDs: packed payloads may introduce `s1`, `s2`, ... aliases with an `@ids=s1:<full-symbol-id>` line. Use `sN` anywhere a symbol ID is accepted; if an alias is unknown, re-run the producing call or use the full ID from the introducing `@ids` line.
186
+ - Search misses: when `symbol.search` returns `nearMisses`, retry with one listed `name` instead of inventing broader queries.
187
+ - Answer first: for explain/debug, call `sdl.context` with `options.answerFirst: true`; expand with `symbol.getCard` or a normal context call on the returned evidence IDs only if needed.
188
+ - Targeted files: if `file.read` returns the large-read hint, retry with `search` plus `searchContext`, `offset` plus `limit`, `jsonPath`, `maxTokens`, or `maxBytes`.
189
+
190
+ ---
191
+
163
192
  ## 3. File And Edit Rules
164
193
 
165
194
  Use SDL file and edit tools instead of native read/write paths.
166
195
 
167
- - Never use `file.read` for indexed source. It will be denied and wastes a turn. Use `sdl.context`, `symbol.getCard`, `slice.build`, `codeSkeleton`, `codeHotPath`, or `codeNeedWindow` instead.
168
- - Read non-indexed files with `file.read` or `sdl.file` `op: "read"`. Prefer `search`, `jsonPath`, or bounded ranges over full reads.
196
+ - Never use `file.read` for indexed source. It will be denied and wastes a turn. Use `sdl.context`, `sdl.retrieve`, `symbol.getCard`, `slice.build`, `codeSkeleton`, `codeHotPath`, or `codeNeedWindow` instead.
197
+ - Read non-indexed files with `file.read` or `sdl.file` `op: "read"`. Prefer `search`, `jsonPath`, or bounded ranges over full reads; if SDL returns a large-read hint, retry with a targeted read.
169
198
  - Write non-indexed files with `file.write` or `sdl.file` `op: "write"` using exactly one targeted write mode.
170
199
  - For one-symbol indexed-source edits, use `symbol.edit` `mode: "preview"` then `mode: "apply"`, or `sdl.file` `symbolEditPreview` followed by `symbolEditApply`. This is the default surgical edit path.
171
200
  - Use `symbol.edit` `mode: "applyNow"` only with a fresh `astFingerprint` and range from a current symbol card.
172
- - For cross-file or repeated indexed-source edits, use `search.edit` `mode: "preview"` then `mode: "apply"`, or `sdl.file` `searchEditPreview` followed by `searchEditApply`. Bound the edit with files or symbols from `sdl.context` or `slice.build` first.
201
+ - For cross-file or repeated indexed-source edits, use `search.edit` `mode: "preview"` then `mode: "apply"`, or `sdl.file` `searchEditPreview` followed by `searchEditApply`. Bound the edit with files or symbols from `sdl.context`, `sdl.retrieve`, or `slice.build` first.
173
202
  - Prefer `targeting: "identifier"` for exact AST identifier replacements in supported structural languages that must avoid comments and strings, `targeting: "structural"` for tree-sitter capture edits such as calls, imports, properties, or plugin-defined grammar captures, and `operations[]` for heterogeneous batches.
174
- - Apply a returned plan handle only after reviewing snippets, file counts, and any `astMatches` capture summaries.
203
+ - Apply a returned plan handle only after reviewing snippets, file counts, and operation summaries.
175
204
  - If preview snippets are insufficient, use plan-bound `previewWindow` or `sourceWindow` with the `planHandle`, `symbolId`, `reason`, `expectedLines`, and `identifiersToFind`; do not fall back to `file.read`.
176
205
  - `file.write` can make a targeted single-file write, including indexed files, but treat it as fallback for indexed source when `symbol.edit` cannot anchor the change and `search.edit` would be broader than necessary.
177
206
  - Use `sdl.workflow` plus `runtimeExecute` for a targeted script only when SDL edit tools cannot express the edit; pass multiline payloads through `stdin`.
@@ -301,7 +330,8 @@ Use this after `sdl.context` or `slice.build` identifies the affected files or s
301
330
 
302
331
  Run repo-local commands through `runtimeExecute` inside `sdl.workflow`.
303
332
 
304
- Default to `outputMode: "minimal"`, `persistOutput: true`, and an explicit `timeoutMs`. Use `stdin` for multiline scripts/input instead of PowerShell here-strings, quote-heavy `node -e`, or base64 decode/eval workarounds. Query stored logs only when needed with `runtimeQueryOutput` and focused `queryTerms`. Use `outputMode: "intent"` when the command intent is already tied to known terms such as `FAIL`, `Error`, or a test name; set `contextLines: 0` when exact matched lines are cleaner than surrounding context.
333
+
334
+ Default to `outputMode: "digest"` for build, test, lint, and other noisy diagnostics; use `outputMode: "minimal"` when exit status is enough. Always set `persistOutput: true` and an explicit `timeoutMs`. Use `stdin` for multiline scripts/input instead of PowerShell here-strings, quote-heavy `node -e`, or base64 decode/eval workarounds. Query stored logs only when needed with `runtimeQueryOutput` and focused `queryTerms`. Use `outputMode: "intent"` when the command intent is already tied to known terms such as `FAIL`, `Error`, or a test name; set `contextLines: 0` when exact matched lines are cleaner than surrounding context.
305
335
 
306
336
  Do not use runtime execution to print indexed source. Use the retrieval ladder instead.
307
337
 
@@ -316,7 +346,7 @@ Do not use runtime execution to print indexed source. Use the retrieval ladder i
316
346
  "args": {
317
347
  "runtime": "node",
318
348
  "args": ["--test", "tests/config.test.ts"],
319
- "outputMode": "minimal",
349
+ "outputMode": "digest",
320
350
  "persistOutput": true,
321
351
  "timeoutMs": 30000
322
352
  }
@@ -349,7 +379,9 @@ Do not use runtime execution to print indexed source. Use the retrieval ladder i
349
379
  }
350
380
  ```
351
381
 
352
- For shell runtime, provide `code` when a shell wrapper is the right abstraction.
382
+ Node `code` snippets always run as ESM (`node --input-type=module`); use `import fs from "node:fs"` or `createRequire()` — bare `require()` fails.
383
+
384
+ For shell runtime, provide `code` when a shell wrapper is the right abstraction. On Windows, `runtime: "shell"` uses `cmd.exe`; use `runtime: "powershell"` for PowerShell `.ps1` snippets. In PowerShell runtime, call npm scripts through `npm.cmd` when the `npm.ps1` shim emits `$LASTEXITCODE` noise.
353
385
 
354
386
  ---
355
387
 
@@ -412,7 +444,7 @@ Before the final response:
412
444
 
413
445
  ## 9. Anti-Patterns
414
446
 
415
- - Starting with native `Read`, `Grep`, shell search, or repo-wide listing instead of SDL discovery (`sdl.context`, `symbolSearch`, or `slice.build`).
447
+ - Starting with native `Read`, `Grep`, shell search, or repo-wide listing instead of SDL discovery (`sdl.context`, `sdl.retrieve`, `symbolSearch`, or `slice.build`).
416
448
  - Calling `codeNeedWindow` before `symbolGetCard`, `sliceBuild`, `codeSkeleton`, and `codeHotPath`.
417
449
  - Using `runtimeExecute` to print indexed source.
418
450
  - Do not use `sdl.file` `sourceWindow` to read arbitrary source. It is only for inspecting files inside an edit preview plan and requires `planHandle`. Use `codeNeedWindow` for raw indexed source.
@@ -421,3 +453,7 @@ Before the final response:
421
453
  - Writing indexed source through native edits instead of `symbol.edit`, symbol edit preview/apply, or AST-aware `searchEditPreview`.
422
454
  - Keeping `.bak` files without reporting them.
423
455
  - Calling `usageStats` by habit when no user-facing savings report or telemetry debugging is needed.
456
+
457
+ ## Symbolic Refactor Ops
458
+
459
+ Prefer `search.edit` `targeting:"rename"` for graph-scoped symbol renames and `targeting:"signature"` for TypeScript/JavaScript signature edits with callsite propagation.