sdl-mcp 0.12.2 → 0.12.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 (276) hide show
  1. package/README.md +10 -0
  2. package/config/sdlmcp.config.example.json +53 -8
  3. package/config/sdlmcp.config.schema.json +530 -106
  4. package/dist/.tsbuildinfo +1 -1
  5. package/dist/benchmark/external-manifest.d.ts +162 -0
  6. package/dist/benchmark/external-manifest.d.ts.map +1 -0
  7. package/dist/benchmark/external-manifest.js +336 -0
  8. package/dist/benchmark/external-manifest.js.map +1 -0
  9. package/dist/benchmark/external-runner.d.ts +100 -0
  10. package/dist/benchmark/external-runner.d.ts.map +1 -0
  11. package/dist/benchmark/external-runner.js +1171 -0
  12. package/dist/benchmark/external-runner.js.map +1 -0
  13. package/dist/benchmark/output-file.d.ts +3 -0
  14. package/dist/benchmark/output-file.d.ts.map +1 -0
  15. package/dist/benchmark/output-file.js +8 -0
  16. package/dist/benchmark/output-file.js.map +1 -0
  17. package/dist/cli/argParsing.d.ts.map +1 -1
  18. package/dist/cli/argParsing.js +6 -0
  19. package/dist/cli/argParsing.js.map +1 -1
  20. package/dist/cli/commands/benchmark.d.ts.map +1 -1
  21. package/dist/cli/commands/benchmark.js +3 -2
  22. package/dist/cli/commands/benchmark.js.map +1 -1
  23. package/dist/cli/commands/index.d.ts +1 -0
  24. package/dist/cli/commands/index.d.ts.map +1 -1
  25. package/dist/cli/commands/index.js +13 -7
  26. package/dist/cli/commands/index.js.map +1 -1
  27. package/dist/cli/commands/init.d.ts +5 -1
  28. package/dist/cli/commands/init.d.ts.map +1 -1
  29. package/dist/cli/commands/init.js +73 -3
  30. package/dist/cli/commands/init.js.map +1 -1
  31. package/dist/cli/commands/serve.d.ts.map +1 -1
  32. package/dist/cli/commands/serve.js +2 -0
  33. package/dist/cli/commands/serve.js.map +1 -1
  34. package/dist/cli/index.js +2 -0
  35. package/dist/cli/index.js.map +1 -1
  36. package/dist/cli/transport/http.d.ts +1 -35
  37. package/dist/cli/transport/http.d.ts.map +1 -1
  38. package/dist/cli/transport/http.js +151 -175
  39. package/dist/cli/transport/http.js.map +1 -1
  40. package/dist/cli/types.d.ts +1 -0
  41. package/dist/cli/types.d.ts.map +1 -1
  42. package/dist/config/constants.d.ts +30 -0
  43. package/dist/config/constants.d.ts.map +1 -1
  44. package/dist/config/constants.js +30 -0
  45. package/dist/config/constants.js.map +1 -1
  46. package/dist/config/types.d.ts +53 -1
  47. package/dist/config/types.d.ts.map +1 -1
  48. package/dist/config/types.js +62 -14
  49. package/dist/config/types.js.map +1 -1
  50. package/dist/db/ladybug-batching.d.ts +1 -0
  51. package/dist/db/ladybug-batching.d.ts.map +1 -1
  52. package/dist/db/ladybug-batching.js +1 -0
  53. package/dist/db/ladybug-batching.js.map +1 -1
  54. package/dist/db/ladybug-core.d.ts +3 -0
  55. package/dist/db/ladybug-core.d.ts.map +1 -1
  56. package/dist/db/ladybug-core.js +72 -2
  57. package/dist/db/ladybug-core.js.map +1 -1
  58. package/dist/db/ladybug-embeddings.d.ts +6 -1
  59. package/dist/db/ladybug-embeddings.d.ts.map +1 -1
  60. package/dist/db/ladybug-embeddings.js +6 -1
  61. package/dist/db/ladybug-embeddings.js.map +1 -1
  62. package/dist/db/ladybug-file-summaries.d.ts.map +1 -1
  63. package/dist/db/ladybug-file-summaries.js +23 -0
  64. package/dist/db/ladybug-file-summaries.js.map +1 -1
  65. package/dist/db/ladybug-queries.js +1 -1
  66. package/dist/db/ladybug-queries.js.map +1 -1
  67. package/dist/db/migrations/index.d.ts.map +1 -1
  68. package/dist/db/migrations/index.js +2 -0
  69. package/dist/db/migrations/index.js.map +1 -1
  70. package/dist/db/migrations/m007-copy-embeddings-to-symbol.d.ts +5 -9
  71. package/dist/db/migrations/m007-copy-embeddings-to-symbol.d.ts.map +1 -1
  72. package/dist/db/migrations/m007-copy-embeddings-to-symbol.js +24 -126
  73. package/dist/db/migrations/m007-copy-embeddings-to-symbol.js.map +1 -1
  74. package/dist/db/migrations/m021-remediate-symbol-embeddings.d.ts +5 -0
  75. package/dist/db/migrations/m021-remediate-symbol-embeddings.d.ts.map +1 -0
  76. package/dist/db/migrations/m021-remediate-symbol-embeddings.js +7 -0
  77. package/dist/db/migrations/m021-remediate-symbol-embeddings.js.map +1 -0
  78. package/dist/db/migrations/symbol-embedding-remediation.d.ts +57 -0
  79. package/dist/db/migrations/symbol-embedding-remediation.d.ts.map +1 -0
  80. package/dist/db/migrations/symbol-embedding-remediation.js +335 -0
  81. package/dist/db/migrations/symbol-embedding-remediation.js.map +1 -0
  82. package/dist/graph/layout/force-layout.d.ts +4 -0
  83. package/dist/graph/layout/force-layout.d.ts.map +1 -0
  84. package/dist/graph/layout/force-layout.js +127 -0
  85. package/dist/graph/layout/force-layout.js.map +1 -0
  86. package/dist/graph/layout/layout-service.d.ts +37 -0
  87. package/dist/graph/layout/layout-service.d.ts.map +1 -0
  88. package/dist/graph/layout/layout-service.js +172 -0
  89. package/dist/graph/layout/layout-service.js.map +1 -0
  90. package/dist/graph/layout/native-engine.d.ts +9 -0
  91. package/dist/graph/layout/native-engine.d.ts.map +1 -0
  92. package/dist/graph/layout/native-engine.js +59 -0
  93. package/dist/graph/layout/native-engine.js.map +1 -0
  94. package/dist/graph/layout/prng.d.ts +3 -0
  95. package/dist/graph/layout/prng.d.ts.map +1 -0
  96. package/dist/graph/layout/prng.js +19 -0
  97. package/dist/graph/layout/prng.js.map +1 -0
  98. package/dist/graph/layout/serializer.d.ts +3 -0
  99. package/dist/graph/layout/serializer.d.ts.map +1 -0
  100. package/dist/graph/layout/serializer.js +20 -0
  101. package/dist/graph/layout/serializer.js.map +1 -0
  102. package/dist/graph/layout/types.d.ts +30 -0
  103. package/dist/graph/layout/types.d.ts.map +1 -0
  104. package/dist/graph/layout/types.js +2 -0
  105. package/dist/graph/layout/types.js.map +1 -0
  106. package/dist/indexer/embeddings.d.ts +7 -0
  107. package/dist/indexer/embeddings.d.ts.map +1 -1
  108. package/dist/indexer/embeddings.js +44 -4
  109. package/dist/indexer/embeddings.js.map +1 -1
  110. package/dist/indexer/file-summary-embeddings.d.ts +12 -0
  111. package/dist/indexer/file-summary-embeddings.d.ts.map +1 -1
  112. package/dist/indexer/file-summary-embeddings.js +83 -21
  113. package/dist/indexer/file-summary-embeddings.js.map +1 -1
  114. package/dist/indexer/fileWalker.d.ts.map +1 -1
  115. package/dist/indexer/fileWalker.js +2 -1
  116. package/dist/indexer/fileWalker.js.map +1 -1
  117. package/dist/indexer/metrics-updater.d.ts.map +1 -1
  118. package/dist/indexer/metrics-updater.js +27 -4
  119. package/dist/indexer/metrics-updater.js.map +1 -1
  120. package/dist/indexer/watcher.d.ts.map +1 -1
  121. package/dist/indexer/watcher.js +2 -1
  122. package/dist/indexer/watcher.js.map +1 -1
  123. package/dist/mcp/context-response-projection.d.ts.map +1 -1
  124. package/dist/mcp/context-response-projection.js +49 -13
  125. package/dist/mcp/context-response-projection.js.map +1 -1
  126. package/dist/mcp/tools/search-edit/planner.d.ts.map +1 -1
  127. package/dist/mcp/tools/search-edit/planner.js +10 -3
  128. package/dist/mcp/tools/search-edit/planner.js.map +1 -1
  129. package/dist/observability/event-tap.d.ts +2 -1
  130. package/dist/observability/event-tap.d.ts.map +1 -1
  131. package/dist/observability/event-tap.js.map +1 -1
  132. package/dist/observability/service.d.ts +11 -4
  133. package/dist/observability/service.d.ts.map +1 -1
  134. package/dist/observability/service.js +83 -13
  135. package/dist/observability/service.js.map +1 -1
  136. package/dist/observability/types.d.ts +48 -2
  137. package/dist/observability/types.d.ts.map +1 -1
  138. package/dist/ui/.tsbuildinfo +1 -0
  139. package/dist/ui/vendor/fflate.js +2692 -0
  140. package/dist/ui/vendor/jsm/controls/ArcballControls.js +3543 -0
  141. package/dist/ui/vendor/jsm/controls/DragControls.js +452 -0
  142. package/dist/ui/vendor/jsm/controls/FirstPersonControls.js +488 -0
  143. package/dist/ui/vendor/jsm/controls/FlyControls.js +384 -0
  144. package/dist/ui/vendor/jsm/controls/MapControls.js +116 -0
  145. package/dist/ui/vendor/jsm/controls/OrbitControls.js +1963 -0
  146. package/dist/ui/vendor/jsm/controls/PointerLockControls.js +264 -0
  147. package/dist/ui/vendor/jsm/controls/TrackballControls.js +1001 -0
  148. package/dist/ui/vendor/jsm/controls/TransformControls.js +2003 -0
  149. package/dist/ui/vendor/jsm/loaders/3DMLoader.js +1836 -0
  150. package/dist/ui/vendor/jsm/loaders/3MFLoader.js +1621 -0
  151. package/dist/ui/vendor/jsm/loaders/AMFLoader.js +541 -0
  152. package/dist/ui/vendor/jsm/loaders/BVHLoader.js +484 -0
  153. package/dist/ui/vendor/jsm/loaders/ColladaLoader.js +153 -0
  154. package/dist/ui/vendor/jsm/loaders/DDSLoader.js +385 -0
  155. package/dist/ui/vendor/jsm/loaders/DRACOLoader.js +772 -0
  156. package/dist/ui/vendor/jsm/loaders/EXRLoader.js +3395 -0
  157. package/dist/ui/vendor/jsm/loaders/FBXLoader.js +4580 -0
  158. package/dist/ui/vendor/jsm/loaders/FontLoader.js +260 -0
  159. package/dist/ui/vendor/jsm/loaders/GCodeLoader.js +318 -0
  160. package/dist/ui/vendor/jsm/loaders/GLTFLoader.js +4860 -0
  161. package/dist/ui/vendor/jsm/loaders/HDRCubeTextureLoader.js +164 -0
  162. package/dist/ui/vendor/jsm/loaders/HDRLoader.js +463 -0
  163. package/dist/ui/vendor/jsm/loaders/IESLoader.js +379 -0
  164. package/dist/ui/vendor/jsm/loaders/KMZLoader.js +163 -0
  165. package/dist/ui/vendor/jsm/loaders/KTX2Loader.js +1276 -0
  166. package/dist/ui/vendor/jsm/loaders/KTXLoader.js +197 -0
  167. package/dist/ui/vendor/jsm/loaders/LDrawLoader.js +2510 -0
  168. package/dist/ui/vendor/jsm/loaders/LUT3dlLoader.js +205 -0
  169. package/dist/ui/vendor/jsm/loaders/LUTCubeLoader.js +190 -0
  170. package/dist/ui/vendor/jsm/loaders/LUTImageLoader.js +190 -0
  171. package/dist/ui/vendor/jsm/loaders/LWOLoader.js +1051 -0
  172. package/dist/ui/vendor/jsm/loaders/LottieLoader.js +130 -0
  173. package/dist/ui/vendor/jsm/loaders/MD2Loader.js +435 -0
  174. package/dist/ui/vendor/jsm/loaders/MDDLoader.js +147 -0
  175. package/dist/ui/vendor/jsm/loaders/MTLLoader.js +593 -0
  176. package/dist/ui/vendor/jsm/loaders/MaterialXLoader.js +1126 -0
  177. package/dist/ui/vendor/jsm/loaders/NRRDLoader.js +718 -0
  178. package/dist/ui/vendor/jsm/loaders/OBJLoader.js +955 -0
  179. package/dist/ui/vendor/jsm/loaders/PCDLoader.js +620 -0
  180. package/dist/ui/vendor/jsm/loaders/PDBLoader.js +272 -0
  181. package/dist/ui/vendor/jsm/loaders/PLYLoader.js +968 -0
  182. package/dist/ui/vendor/jsm/loaders/PVRLoader.js +270 -0
  183. package/dist/ui/vendor/jsm/loaders/RGBELoader.js +18 -0
  184. package/dist/ui/vendor/jsm/loaders/STLLoader.js +421 -0
  185. package/dist/ui/vendor/jsm/loaders/SVGLoader.js +3319 -0
  186. package/dist/ui/vendor/jsm/loaders/TDSLoader.js +1142 -0
  187. package/dist/ui/vendor/jsm/loaders/TGALoader.js +538 -0
  188. package/dist/ui/vendor/jsm/loaders/TIFFLoader.js +59 -0
  189. package/dist/ui/vendor/jsm/loaders/TTFLoader.js +261 -0
  190. package/dist/ui/vendor/jsm/loaders/USDLoader.js +303 -0
  191. package/dist/ui/vendor/jsm/loaders/USDZLoader.js +16 -0
  192. package/dist/ui/vendor/jsm/loaders/UltraHDRLoader.js +755 -0
  193. package/dist/ui/vendor/jsm/loaders/VOXLoader.js +919 -0
  194. package/dist/ui/vendor/jsm/loaders/VRMLLoader.js +3646 -0
  195. package/dist/ui/vendor/jsm/loaders/VTKLoader.js +1293 -0
  196. package/dist/ui/vendor/jsm/loaders/XYZLoader.js +143 -0
  197. package/dist/ui/vendor/jsm/loaders/collada/ColladaComposer.js +3044 -0
  198. package/dist/ui/vendor/jsm/loaders/collada/ColladaParser.js +1977 -0
  199. package/dist/ui/vendor/jsm/loaders/lwo/IFFParser.js +1217 -0
  200. package/dist/ui/vendor/jsm/loaders/lwo/LWO2Parser.js +414 -0
  201. package/dist/ui/vendor/jsm/loaders/lwo/LWO3Parser.js +373 -0
  202. package/dist/ui/vendor/jsm/loaders/usd/USDAParser.js +901 -0
  203. package/dist/ui/vendor/jsm/loaders/usd/USDCParser.js +1878 -0
  204. package/dist/ui/vendor/jsm/loaders/usd/USDComposer.js +4627 -0
  205. package/dist/ui/vendor/jsm/utils/BufferGeometryUtils.js +1501 -0
  206. package/dist/ui/vendor/jsm/utils/CameraUtils.js +82 -0
  207. package/dist/ui/vendor/jsm/utils/ColorUtils.js +76 -0
  208. package/dist/ui/vendor/jsm/utils/GeometryCompressionUtils.js +547 -0
  209. package/dist/ui/vendor/jsm/utils/GeometryUtils.js +226 -0
  210. package/dist/ui/vendor/jsm/utils/LDrawUtils.js +211 -0
  211. package/dist/ui/vendor/jsm/utils/SceneOptimizer.js +458 -0
  212. package/dist/ui/vendor/jsm/utils/SceneUtils.js +363 -0
  213. package/dist/ui/vendor/jsm/utils/ShadowMapViewer.js +244 -0
  214. package/dist/ui/vendor/jsm/utils/ShadowMapViewerGPU.js +233 -0
  215. package/dist/ui/vendor/jsm/utils/SkeletonUtils.js +496 -0
  216. package/dist/ui/vendor/jsm/utils/SortUtils.js +175 -0
  217. package/dist/ui/vendor/jsm/utils/UVsDebug.js +173 -0
  218. package/dist/ui/vendor/jsm/utils/WebGLTextureUtils.js +115 -0
  219. package/dist/ui/vendor/jsm/utils/WebGPUTextureUtils.js +81 -0
  220. package/dist/ui/vendor/jsm/utils/WorkerPool.js +167 -0
  221. package/dist/ui/vendor/three.core.min.js +6 -0
  222. package/dist/ui/vendor/three.module.min.js +6 -0
  223. package/dist/ui/viewer/ambient.js +39 -0
  224. package/dist/ui/viewer/api.js +93 -0
  225. package/dist/ui/viewer/chrome.js +36 -0
  226. package/dist/ui/viewer/edges.js +33 -0
  227. package/dist/ui/viewer/index.html +32 -0
  228. package/dist/ui/viewer/inspector.js +23 -0
  229. package/dist/ui/viewer/lenses/activity.js +24 -0
  230. package/dist/ui/viewer/lenses/community.js +5 -0
  231. package/dist/ui/viewer/lenses/edges.js +4 -0
  232. package/dist/ui/viewer/lenses/impact.js +6 -0
  233. package/dist/ui/viewer/lenses/search.js +69 -0
  234. package/dist/ui/viewer/lod.js +100 -0
  235. package/dist/ui/viewer/main.js +92 -0
  236. package/dist/ui/viewer/picking.js +45 -0
  237. package/dist/ui/viewer/scene.js +85 -0
  238. package/dist/ui/viewer/skins/default-skin.js +15 -0
  239. package/dist/ui/viewer/skins/loader.js +44 -0
  240. package/dist/ui/viewer/skins/manifest-schema.js +30 -0
  241. package/dist/ui/viewer/state.js +44 -0
  242. package/dist/ui/viewer/theme.js +23 -0
  243. package/dist/ui/viewer/universe.js +151 -0
  244. package/dist/ui/viewer/viewer.css +85 -0
  245. package/dist/util/safeRegex.d.ts.map +1 -1
  246. package/dist/util/safeRegex.js +221 -68
  247. package/dist/util/safeRegex.js.map +1 -1
  248. package/dist/viewer/legacy-graph.d.ts +40 -0
  249. package/dist/viewer/legacy-graph.d.ts.map +1 -0
  250. package/dist/viewer/legacy-graph.js +152 -0
  251. package/dist/viewer/legacy-graph.js.map +1 -0
  252. package/dist/viewer/routes.d.ts +10 -0
  253. package/dist/viewer/routes.d.ts.map +1 -0
  254. package/dist/viewer/routes.js +221 -0
  255. package/dist/viewer/routes.js.map +1 -0
  256. package/dist/viewer/service.d.ts +44 -0
  257. package/dist/viewer/service.d.ts.map +1 -0
  258. package/dist/viewer/service.js +160 -0
  259. package/dist/viewer/service.js.map +1 -0
  260. package/dist/viewer/types.d.ts +63 -0
  261. package/dist/viewer/types.d.ts.map +1 -0
  262. package/dist/viewer/types.js +2 -0
  263. package/dist/viewer/types.js.map +1 -0
  264. package/dist/viewer/viewer-config.d.ts +12 -0
  265. package/dist/viewer/viewer-config.d.ts.map +1 -0
  266. package/dist/viewer/viewer-config.js +36 -0
  267. package/dist/viewer/viewer-config.js.map +1 -0
  268. package/package.json +18 -9
  269. package/templates/SDL.md +19 -0
  270. package/templates/claude-code.json +8 -43
  271. package/dist/ui/graph.css +0 -108
  272. package/dist/ui/graph.d.ts +0 -2
  273. package/dist/ui/graph.d.ts.map +0 -1
  274. package/dist/ui/graph.html +0 -52
  275. package/dist/ui/graph.js +0 -259
  276. package/dist/ui/graph.js.map +0 -1
@@ -3,14 +3,20 @@
3
3
  "title": "SDL-MCP Configuration",
4
4
  "description": "Configuration schema for SDL-MCP (Symbol Delta Ledger MCP Server)",
5
5
  "type": "object",
6
- "required": ["repos", "policy"],
6
+ "required": [
7
+ "repos",
8
+ "policy"
9
+ ],
7
10
  "properties": {
8
11
  "repos": {
9
12
  "type": "array",
10
13
  "description": "List of repositories to index",
11
14
  "items": {
12
15
  "type": "object",
13
- "required": ["repoId", "rootPath"],
16
+ "required": [
17
+ "repoId",
18
+ "rootPath"
19
+ ],
14
20
  "properties": {
15
21
  "repoId": {
16
22
  "type": "string",
@@ -102,7 +108,10 @@
102
108
  "default": 2000000
103
109
  },
104
110
  "sourceFileListPath": {
105
- "type": ["string", "null"],
111
+ "type": [
112
+ "string",
113
+ "null"
114
+ ],
106
115
  "description": "Optional benchmark/tuning file list. When set, repository scanning uses these repo-relative source paths instead of walking the full tree."
107
116
  },
108
117
  "postIndexSessionTimeoutMs": {
@@ -177,7 +186,12 @@
177
186
  "performanceTier": {
178
187
  "type": "string",
179
188
  "description": "CPU performance tier for auto-tuning concurrency defaults. 'auto' (default) detects hardware at startup. 'mid' = 1-8 cores (conservative), 'high' = 9-20 cores (moderate), 'extreme' = 21+ cores (aggressive). Presets only affect fields not explicitly set by the user.",
180
- "enum": ["mid", "high", "extreme", "auto"],
189
+ "enum": [
190
+ "mid",
191
+ "high",
192
+ "extreme",
193
+ "auto"
194
+ ],
181
195
  "default": "auto"
182
196
  },
183
197
  "policy": {
@@ -245,7 +259,9 @@
245
259
  "description": "Custom redaction patterns",
246
260
  "items": {
247
261
  "type": "object",
248
- "required": ["pattern"],
262
+ "required": [
263
+ "pattern"
264
+ ],
249
265
  "properties": {
250
266
  "name": {
251
267
  "type": "string",
@@ -278,7 +294,11 @@
278
294
  "pipeline": {
279
295
  "type": "string",
280
296
  "description": "Indexing pipeline selector. auto uses provider-first when SCIP or LSP coverage is configured, otherwise legacy.",
281
- "enum": ["legacy", "providerFirst", "auto"],
297
+ "enum": [
298
+ "legacy",
299
+ "providerFirst",
300
+ "auto"
301
+ ],
282
302
  "default": "auto"
283
303
  },
284
304
  "providerFirst": {
@@ -288,19 +308,26 @@
288
308
  "activation": {
289
309
  "type": "string",
290
310
  "description": "Activation strategy for full provider-first builds.",
291
- "enum": ["shadowDb"],
311
+ "enum": [
312
+ "shadowDb"
313
+ ],
292
314
  "default": "shadowDb"
293
315
  },
294
316
  "readyState": {
295
317
  "type": "string",
296
318
  "description": "Readiness gate for the first usable index state.",
297
- "enum": ["graphPlusAlgorithms"],
319
+ "enum": [
320
+ "graphPlusAlgorithms"
321
+ ],
298
322
  "default": "graphPlusAlgorithms"
299
323
  },
300
324
  "stagingFormat": {
301
325
  "type": "string",
302
326
  "description": "Preferred provider fact staging format for shadow bulk loads. CSV is the fallback when Parquet is unavailable.",
303
- "enum": ["parquet", "csv"],
327
+ "enum": [
328
+ "parquet",
329
+ "csv"
330
+ ],
304
331
  "default": "parquet"
305
332
  },
306
333
  "maxLegacyFallbackFiles": {
@@ -323,7 +350,9 @@
323
350
  "properties": {
324
351
  "mode": {
325
352
  "type": "string",
326
- "enum": ["primaryWithCaps"],
353
+ "enum": [
354
+ "primaryWithCaps"
355
+ ],
327
356
  "default": "primaryWithCaps"
328
357
  },
329
358
  "workspaceSymbolLimit": {
@@ -408,7 +437,12 @@
408
437
  "watchProvider": {
409
438
  "type": "string",
410
439
  "description": "File watcher event source. auto tries Watchman, then Chokidar, then fs.watch. Explicit providers fail visibly when unavailable.",
411
- "enum": ["auto", "watchman", "chokidar", "fsWatch"],
440
+ "enum": [
441
+ "auto",
442
+ "watchman",
443
+ "chokidar",
444
+ "fsWatch"
445
+ ],
412
446
  "default": "auto"
413
447
  },
414
448
  "concurrency": {
@@ -438,7 +472,10 @@
438
472
  "engine": {
439
473
  "type": "string",
440
474
  "description": "Pass-1 indexing engine implementation",
441
- "enum": ["typescript", "rust"],
475
+ "enum": [
476
+ "typescript",
477
+ "rust"
478
+ ],
442
479
  "default": "rust"
443
480
  },
444
481
  "watchDebounceMs": {
@@ -466,28 +503,44 @@
466
503
  "pageRank": {
467
504
  "type": "object",
468
505
  "properties": {
469
- "enabled": { "type": "boolean", "default": true }
506
+ "enabled": {
507
+ "type": "boolean",
508
+ "default": true
509
+ }
470
510
  },
471
- "default": { "enabled": true }
511
+ "default": {
512
+ "enabled": true
513
+ }
472
514
  },
473
515
  "kCore": {
474
516
  "type": "object",
475
517
  "properties": {
476
- "enabled": { "type": "boolean", "default": true }
518
+ "enabled": {
519
+ "type": "boolean",
520
+ "default": true
521
+ }
477
522
  },
478
- "default": { "enabled": true }
523
+ "default": {
524
+ "enabled": true
525
+ }
479
526
  },
480
527
  "louvain": {
481
528
  "type": "object",
482
529
  "properties": {
483
- "enabled": { "type": "boolean", "default": true },
530
+ "enabled": {
531
+ "type": "boolean",
532
+ "default": true
533
+ },
484
534
  "maxCallEdges": {
485
535
  "type": "integer",
486
536
  "minimum": 0,
487
537
  "default": 10000
488
538
  }
489
539
  },
490
- "default": { "enabled": true, "maxCallEdges": 10000 }
540
+ "default": {
541
+ "enabled": true,
542
+ "maxCallEdges": 10000
543
+ }
491
544
  },
492
545
  "workerTimeoutMs": {
493
546
  "type": "integer",
@@ -498,9 +551,16 @@
498
551
  },
499
552
  "default": {
500
553
  "enabled": true,
501
- "pageRank": { "enabled": true },
502
- "kCore": { "enabled": true },
503
- "louvain": { "enabled": true, "maxCallEdges": 10000 },
554
+ "pageRank": {
555
+ "enabled": true
556
+ },
557
+ "kCore": {
558
+ "enabled": true
559
+ },
560
+ "louvain": {
561
+ "enabled": true,
562
+ "maxCallEdges": 10000
563
+ },
504
564
  "workerTimeoutMs": 120000
505
565
  }
506
566
  }
@@ -534,9 +594,16 @@
534
594
  "pass2Concurrency": 1,
535
595
  "algorithmRefresh": {
536
596
  "enabled": true,
537
- "pageRank": { "enabled": true },
538
- "kCore": { "enabled": true },
539
- "louvain": { "enabled": true, "maxCallEdges": 10000 },
597
+ "pageRank": {
598
+ "enabled": true
599
+ },
600
+ "kCore": {
601
+ "enabled": true
602
+ },
603
+ "louvain": {
604
+ "enabled": true,
605
+ "maxCallEdges": 10000
606
+ },
540
607
  "workerTimeoutMs": 120000
541
608
  }
542
609
  }
@@ -663,7 +730,10 @@
663
730
  "mode": {
664
731
  "type": "string",
665
732
  "description": "Diagnostics mode",
666
- "enum": ["tsLS", "tsc"],
733
+ "enum": [
734
+ "tsLS",
735
+ "tsc"
736
+ ],
667
737
  "default": "tsLS"
668
738
  },
669
739
  "maxErrors": {
@@ -681,7 +751,10 @@
681
751
  "scope": {
682
752
  "type": "string",
683
753
  "description": "Diagnostics scope",
684
- "enum": ["changedFiles", "workspace"],
754
+ "enum": [
755
+ "changedFiles",
756
+ "workspace"
757
+ ],
685
758
  "default": "changedFiles"
686
759
  }
687
760
  },
@@ -784,25 +857,40 @@
784
857
  },
785
858
  "provider": {
786
859
  "type": "string",
787
- "enum": ["api", "local", "mock"],
860
+ "enum": [
861
+ "api",
862
+ "local",
863
+ "mock"
864
+ ],
788
865
  "default": "local"
789
866
  },
790
867
  "embeddingProfile": {
791
868
  "type": "string",
792
- "enum": ["specialized", "max-recall"],
869
+ "enum": [
870
+ "specialized",
871
+ "max-recall"
872
+ ],
793
873
  "default": "specialized",
794
874
  "description": "Semantic embedding model profile. 'specialized' embeds Symbols with Jina and FileSummary nodes with Nomic. 'max-recall' restores both supported models on both lanes."
795
875
  },
796
876
  "symbolEmbeddingModels": {
797
877
  "type": "array",
798
- "items": { "type": "string" },
799
- "default": ["jina-embeddings-v2-base-code"],
878
+ "items": {
879
+ "type": "string"
880
+ },
881
+ "default": [
882
+ "jina-embeddings-v2-base-code"
883
+ ],
800
884
  "description": "Embedding models to populate for Symbol nodes. Overrides embeddingProfile for the Symbol lane when set."
801
885
  },
802
886
  "fileSummaryEmbeddingModels": {
803
887
  "type": "array",
804
- "items": { "type": "string" },
805
- "default": ["nomic-embed-text-v1.5"],
888
+ "items": {
889
+ "type": "string"
890
+ },
891
+ "default": [
892
+ "nomic-embed-text-v1.5"
893
+ ],
806
894
  "description": "Embedding models to populate for FileSummary nodes. Overrides embeddingProfile for the FileSummary lane when set."
807
895
  },
808
896
  "model": {
@@ -811,7 +899,9 @@
811
899
  },
812
900
  "additionalModels": {
813
901
  "type": "array",
814
- "items": { "type": "string" },
902
+ "items": {
903
+ "type": "string"
904
+ },
815
905
  "description": "Deprecated legacy shared extra embedding models. Use embeddingProfile, symbolEmbeddingModels, or fileSummaryEmbeddingModels instead."
816
906
  },
817
907
  "modelCacheDir": {
@@ -823,13 +913,19 @@
823
913
  "default": true
824
914
  },
825
915
  "summaryProvider": {
826
- "type": ["string", "null"],
827
- "enum": ["api", "local", "mock", null],
916
+ "type": [
917
+ "string",
918
+ "null"
919
+ ],
920
+ "enum": [
921
+ "api",
922
+ "local",
923
+ "mock",
924
+ null
925
+ ],
828
926
  "default": "mock",
829
927
  "description": "Summary backend, independent from the embedding provider. 'api' = Anthropic, 'local' = OpenAI-compatible (Ollama), 'mock' = deterministic concise prose. Null is treated as unset and resolves to 'mock'."
830
928
  },
831
-
832
-
833
929
  "summaryModel": {
834
930
  "type": "string",
835
931
  "description": "Model name for summary generation. Defaults per-provider: 'api' uses 'claude-haiku-4-5-20251001', 'local' uses 'gpt-4o-mini'."
@@ -895,19 +991,33 @@
895
991
  },
896
992
  "executionProviders": {
897
993
  "type": "array",
898
- "items": { "type": "string" },
994
+ "items": {
995
+ "type": "string"
996
+ },
899
997
  "description": "ONNX Runtime execution providers in priority order. ORT tries them left-to-right; first one that initialises wins. Bundled with default onnxruntime-node npm package: Windows x64 ['cpu', 'dml', 'webgpu'], macOS ['cpu', 'coreml'], Linux x64 ['cpu', 'cuda', 'tensorrt'] (CUDA EP requires NVIDIA GPU + CUDA 12 + cuDNN on the host), Linux arm64 ['cpu']. DirectML covers any DX12 GPU including AMD Radeon, NVIDIA GeForce, Intel Arc. ROCm (AMD on Linux), OpenVINO, QNN need a custom ORT build. Unsupported entries on a given platform are dropped with a warning; 'cpu' is auto-appended as final fallback so session creation never strands.",
900
- "default": ["cpu"]
998
+ "default": [
999
+ "cpu"
1000
+ ]
901
1001
  },
902
1002
  "ann": {
903
1003
  "type": "object",
904
1004
  "description": "Deprecated — removed in v0.10.1. Silently ignored. Use retrieval.vector instead.",
905
1005
  "properties": {
906
- "enabled": { "type": "boolean" },
907
- "m": { "type": "integer" },
908
- "efConstruction": { "type": "integer" },
909
- "efSearch": { "type": "integer" },
910
- "maxElements": { "type": "integer" }
1006
+ "enabled": {
1007
+ "type": "boolean"
1008
+ },
1009
+ "m": {
1010
+ "type": "integer"
1011
+ },
1012
+ "efConstruction": {
1013
+ "type": "integer"
1014
+ },
1015
+ "efSearch": {
1016
+ "type": "integer"
1017
+ },
1018
+ "maxElements": {
1019
+ "type": "integer"
1020
+ }
911
1021
  }
912
1022
  },
913
1023
  "retrieval": {
@@ -916,7 +1026,10 @@
916
1026
  "properties": {
917
1027
  "mode": {
918
1028
  "type": "string",
919
- "enum": ["legacy", "hybrid"],
1029
+ "enum": [
1030
+ "legacy",
1031
+ "hybrid"
1032
+ ],
920
1033
  "default": "hybrid",
921
1034
  "description": "'legacy' = original semantic-only re-rank path; 'hybrid' = FTS + vector fusion pipeline."
922
1035
  },
@@ -990,7 +1103,9 @@
990
1103
  "description": "Per-model HNSW index config keyed by model name.",
991
1104
  "additionalProperties": {
992
1105
  "type": "object",
993
- "required": ["indexName"],
1106
+ "required": [
1107
+ "indexName"
1108
+ ],
994
1109
  "properties": {
995
1110
  "indexName": {
996
1111
  "type": "string",
@@ -1028,7 +1143,9 @@
1028
1143
  "properties": {
1029
1144
  "strategy": {
1030
1145
  "type": "string",
1031
- "enum": ["rrf"],
1146
+ "enum": [
1147
+ "rrf"
1148
+ ],
1032
1149
  "default": "rrf",
1033
1150
  "description": "Fusion strategy. 'rrf' = Reciprocal Rank Fusion."
1034
1151
  },
@@ -1085,8 +1202,12 @@
1085
1202
  "enabled": true,
1086
1203
  "provider": "local",
1087
1204
  "embeddingProfile": "specialized",
1088
- "symbolEmbeddingModels": ["jina-embeddings-v2-base-code"],
1089
- "fileSummaryEmbeddingModels": ["nomic-embed-text-v1.5"],
1205
+ "symbolEmbeddingModels": [
1206
+ "jina-embeddings-v2-base-code"
1207
+ ],
1208
+ "fileSummaryEmbeddingModels": [
1209
+ "nomic-embed-text-v1.5"
1210
+ ],
1090
1211
  "generateSummaries": true,
1091
1212
  "summaryProvider": "mock",
1092
1213
  "summaryModel": "claude-haiku-4-5-20251001",
@@ -1099,7 +1220,10 @@
1099
1220
  "type": "object",
1100
1221
  "description": "Provider-backed graph precision enrichment. Separate from semantic embeddings/retrieval.",
1101
1222
  "properties": {
1102
- "enabled": { "type": "boolean", "default": true },
1223
+ "enabled": {
1224
+ "type": "boolean",
1225
+ "default": true
1226
+ },
1103
1227
  "autoRunOnIndexRefresh": {
1104
1228
  "type": "boolean",
1105
1229
  "default": false,
@@ -1107,12 +1231,18 @@
1107
1231
  },
1108
1232
  "installPolicy": {
1109
1233
  "type": "string",
1110
- "enum": ["never", "verified"],
1234
+ "enum": [
1235
+ "never",
1236
+ "verified"
1237
+ ],
1111
1238
  "default": "never",
1112
1239
  "description": "Controls provider download behavior. 'verified' permits only checksum-verified downloads; package-manager install recipes are never executed automatically."
1113
1240
  },
1114
1241
  "cacheDir": {
1115
- "type": ["string", "null"],
1242
+ "type": [
1243
+ "string",
1244
+ "null"
1245
+ ],
1116
1246
  "default": null,
1117
1247
  "description": "Reserved cache root for future durable provider caches. V2 writes provider results to the graph and does not persist LSP response caches here."
1118
1248
  },
@@ -1131,7 +1261,9 @@
1131
1261
  },
1132
1262
  "languages": {
1133
1263
  "type": "array",
1134
- "items": { "type": "string" },
1264
+ "items": {
1265
+ "type": "string"
1266
+ },
1135
1267
  "default": [],
1136
1268
  "description": "Language IDs to enrich. Empty means all current tree-sitter-backed languages."
1137
1269
  },
@@ -1142,17 +1274,30 @@
1142
1274
  "scip": {
1143
1275
  "type": "object",
1144
1276
  "properties": {
1145
- "enabled": { "type": "boolean", "default": true },
1146
- "providerId": { "type": "string" },
1147
- "providerVersion": { "type": "string" },
1277
+ "enabled": {
1278
+ "type": "boolean",
1279
+ "default": true
1280
+ },
1281
+ "providerId": {
1282
+ "type": "string"
1283
+ },
1284
+ "providerVersion": {
1285
+ "type": "string"
1286
+ },
1148
1287
  "indexes": {
1149
1288
  "type": "array",
1150
1289
  "items": {
1151
1290
  "type": "object",
1152
- "required": ["path"],
1291
+ "required": [
1292
+ "path"
1293
+ ],
1153
1294
  "properties": {
1154
- "path": { "type": "string" },
1155
- "label": { "type": "string" }
1295
+ "path": {
1296
+ "type": "string"
1297
+ },
1298
+ "label": {
1299
+ "type": "string"
1300
+ }
1156
1301
  }
1157
1302
  },
1158
1303
  "default": []
@@ -1162,9 +1307,16 @@
1162
1307
  "lsp": {
1163
1308
  "type": "object",
1164
1309
  "properties": {
1165
- "enabled": { "type": "boolean", "default": true },
1166
- "providerId": { "type": "string" },
1167
- "providerVersion": { "type": "string" },
1310
+ "enabled": {
1311
+ "type": "boolean",
1312
+ "default": true
1313
+ },
1314
+ "providerId": {
1315
+ "type": "string"
1316
+ },
1317
+ "providerVersion": {
1318
+ "type": "string"
1319
+ },
1168
1320
  "confidence": {
1169
1321
  "type": "number",
1170
1322
  "minimum": 0.5,
@@ -1181,40 +1333,65 @@
1181
1333
  "type": "object",
1182
1334
  "additionalProperties": {
1183
1335
  "type": "object",
1184
- "required": ["serverId", "command"],
1336
+ "required": [
1337
+ "serverId",
1338
+ "command"
1339
+ ],
1185
1340
  "properties": {
1186
- "enabled": { "type": "boolean", "default": true },
1187
- "serverId": { "type": "string" },
1188
- "command": { "type": "string" },
1341
+ "enabled": {
1342
+ "type": "boolean",
1343
+ "default": true
1344
+ },
1345
+ "serverId": {
1346
+ "type": "string"
1347
+ },
1348
+ "command": {
1349
+ "type": "string"
1350
+ },
1189
1351
  "args": {
1190
1352
  "type": "array",
1191
- "items": { "type": "string" },
1353
+ "items": {
1354
+ "type": "string"
1355
+ },
1192
1356
  "default": []
1193
1357
  },
1194
1358
  "languages": {
1195
1359
  "type": "array",
1196
- "items": { "type": "string" },
1360
+ "items": {
1361
+ "type": "string"
1362
+ },
1197
1363
  "default": []
1198
1364
  },
1199
1365
  "documentLanguageIds": {
1200
1366
  "type": "array",
1201
- "items": { "type": "string" },
1367
+ "items": {
1368
+ "type": "string"
1369
+ },
1202
1370
  "default": []
1203
1371
  },
1204
1372
  "filePatterns": {
1205
1373
  "type": "array",
1206
- "items": { "type": "string" },
1374
+ "items": {
1375
+ "type": "string"
1376
+ },
1207
1377
  "default": []
1208
1378
  },
1209
1379
  "capabilities": {
1210
1380
  "type": "array",
1211
- "items": { "type": "string" },
1381
+ "items": {
1382
+ "type": "string"
1383
+ },
1212
1384
  "default": []
1213
1385
  },
1214
- "readiness": { "type": "string" },
1386
+ "readiness": {
1387
+ "type": "string"
1388
+ },
1215
1389
  "documentSessionMode": {
1216
1390
  "type": "string",
1217
- "enum": ["workspace", "document"]
1391
+ "enum": [
1392
+ "workspace",
1393
+ "document"
1394
+ ]
1218
1395
  },
1219
1396
  "documentSymbolRetryCount": {
1220
1397
  "type": "integer",
@@ -1228,9 +1405,13 @@
1228
1405
  },
1229
1406
  "env": {
1230
1407
  "type": "object",
1231
- "additionalProperties": { "type": "string" }
1408
+ "additionalProperties": {
1409
+ "type": "string"
1410
+ }
1232
1411
  },
1233
- "initializationOptions": { "type": "object" }
1412
+ "initializationOptions": {
1413
+ "type": "object"
1414
+ }
1234
1415
  }
1235
1416
  },
1236
1417
  "default": {}
@@ -1277,9 +1458,22 @@
1277
1458
  "description": "Outcome-trained predictive context policy. Safe mode can suppress, trim, or boost existing prefetch strategies but cannot invent new strategy types.",
1278
1459
  "additionalProperties": false,
1279
1460
  "properties": {
1280
- "enabled": { "type": "boolean", "default": true },
1281
- "mode": { "enum": ["observe", "safe"], "default": "safe" },
1282
- "minSamples": { "type": "integer", "minimum": 1, "default": 20 },
1461
+ "enabled": {
1462
+ "type": "boolean",
1463
+ "default": true
1464
+ },
1465
+ "mode": {
1466
+ "enum": [
1467
+ "observe",
1468
+ "safe"
1469
+ ],
1470
+ "default": "safe"
1471
+ },
1472
+ "minSamples": {
1473
+ "type": "integer",
1474
+ "minimum": 1,
1475
+ "default": 20
1476
+ },
1283
1477
  "suppressionWasteRate": {
1284
1478
  "type": "number",
1285
1479
  "minimum": 0,
@@ -1292,7 +1486,11 @@
1292
1486
  "maximum": 1,
1293
1487
  "default": 0.35
1294
1488
  },
1295
- "retentionDays": { "type": "integer", "minimum": 1, "default": 14 },
1489
+ "retentionDays": {
1490
+ "type": "integer",
1491
+ "minimum": 1,
1492
+ "default": 14
1493
+ },
1296
1494
  "maxPriorityBoost": {
1297
1495
  "type": "integer",
1298
1496
  "minimum": 0,
@@ -1430,7 +1628,11 @@
1430
1628
  "exporterType": {
1431
1629
  "type": "string",
1432
1630
  "description": "Exporter type for traces",
1433
- "enum": ["console", "otlp", "memory"],
1631
+ "enum": [
1632
+ "console",
1633
+ "otlp",
1634
+ "memory"
1635
+ ],
1434
1636
  "default": "console"
1435
1637
  },
1436
1638
  "otlpEndpoint": {
@@ -1483,7 +1685,10 @@
1483
1685
  "description": "LadybugDB graph database configuration for advanced graph queries",
1484
1686
  "properties": {
1485
1687
  "path": {
1486
- "type": ["string", "null"],
1688
+ "type": [
1689
+ "string",
1690
+ "null"
1691
+ ],
1487
1692
  "description": "Path to the LadybugDB database file",
1488
1693
  "default": null
1489
1694
  }
@@ -1549,13 +1754,23 @@
1549
1754
  "allowedRuntimes": {
1550
1755
  "type": "array",
1551
1756
  "description": "List of allowed runtime environments",
1552
- "items": { "type": "string" },
1553
- "default": ["node", "typescript", "python", "shell", "powershell"]
1757
+ "items": {
1758
+ "type": "string"
1759
+ },
1760
+ "default": [
1761
+ "node",
1762
+ "typescript",
1763
+ "python",
1764
+ "shell",
1765
+ "powershell"
1766
+ ]
1554
1767
  },
1555
1768
  "allowedExecutables": {
1556
1769
  "type": "array",
1557
1770
  "description": "List of allowed executable paths or patterns",
1558
- "items": { "type": "string" },
1771
+ "items": {
1772
+ "type": "string"
1773
+ },
1559
1774
  "default": []
1560
1775
  },
1561
1776
  "maxDurationMs": {
@@ -1623,13 +1838,21 @@
1623
1838
  "envAllowlist": {
1624
1839
  "type": "array",
1625
1840
  "description": "Environment variable names to pass through to sandboxed subprocesses",
1626
- "items": { "type": "string" },
1841
+ "items": {
1842
+ "type": "string"
1843
+ },
1627
1844
  "default": []
1628
1845
  }
1629
1846
  },
1630
1847
  "default": {
1631
1848
  "enabled": true,
1632
- "allowedRuntimes": ["node", "typescript", "python", "shell", "powershell"],
1849
+ "allowedRuntimes": [
1850
+ "node",
1851
+ "typescript",
1852
+ "python",
1853
+ "shell",
1854
+ "powershell"
1855
+ ],
1633
1856
  "allowedExecutables": [],
1634
1857
  "maxDurationMs": 30000,
1635
1858
  "maxConcurrentJobs": 2,
@@ -1643,7 +1866,9 @@
1643
1866
  "allowedRepoRoots": {
1644
1867
  "type": "array",
1645
1868
  "description": "Whitelist of allowed repository root path prefixes. Empty array allows any path.",
1646
- "items": { "type": "string" },
1869
+ "items": {
1870
+ "type": "string"
1871
+ },
1647
1872
  "default": []
1648
1873
  }
1649
1874
  },
@@ -1667,7 +1892,10 @@
1667
1892
  },
1668
1893
  "toolNameFormat": {
1669
1894
  "type": "string",
1670
- "enum": ["canonical", "openai"],
1895
+ "enum": [
1896
+ "canonical",
1897
+ "openai"
1898
+ ],
1671
1899
  "description": "Tool name format advertised to MCP clients. Use openai to replace dots with underscores for strict tool-name validators.",
1672
1900
  "default": "canonical"
1673
1901
  }
@@ -1688,7 +1916,10 @@
1688
1916
  "default": false
1689
1917
  },
1690
1918
  "token": {
1691
- "type": ["string", "null"],
1919
+ "type": [
1920
+ "string",
1921
+ "null"
1922
+ ],
1692
1923
  "description": "Static bearer token. When null a random token is generated at startup.",
1693
1924
  "minLength": 1,
1694
1925
  "default": null
@@ -1777,7 +2008,11 @@
1777
2008
  },
1778
2009
  "ladderValidation": {
1779
2010
  "type": "string",
1780
- "enum": ["off", "warn", "enforce"],
2011
+ "enum": [
2012
+ "off",
2013
+ "warn",
2014
+ "enforce"
2015
+ ],
1781
2016
  "description": "Context ladder validation mode",
1782
2017
  "default": "warn"
1783
2018
  },
@@ -1796,23 +2031,39 @@
1796
2031
  "type": "object",
1797
2032
  "description": "SCIP index ingestion configuration",
1798
2033
  "properties": {
1799
- "enabled": { "type": "boolean", "default": true },
2034
+ "enabled": {
2035
+ "type": "boolean",
2036
+ "default": true
2037
+ },
1800
2038
  "indexes": {
1801
2039
  "type": "array",
1802
2040
  "items": {
1803
2041
  "type": "object",
1804
2042
  "properties": {
1805
- "path": { "type": "string" },
1806
- "label": { "type": "string" }
2043
+ "path": {
2044
+ "type": "string"
2045
+ },
2046
+ "label": {
2047
+ "type": "string"
2048
+ }
1807
2049
  },
1808
- "required": ["path"]
2050
+ "required": [
2051
+ "path"
2052
+ ]
1809
2053
  },
1810
- "default": [{ "path": "index.scip" }]
2054
+ "default": [
2055
+ {
2056
+ "path": "index.scip"
2057
+ }
2058
+ ]
1811
2059
  },
1812
2060
  "externalSymbols": {
1813
2061
  "type": "object",
1814
2062
  "properties": {
1815
- "enabled": { "type": "boolean", "default": true },
2063
+ "enabled": {
2064
+ "type": "boolean",
2065
+ "default": true
2066
+ },
1816
2067
  "maxPerIndex": {
1817
2068
  "type": "integer",
1818
2069
  "minimum": 100,
@@ -1824,10 +2075,13 @@
1824
2075
  "confidence": {
1825
2076
  "type": "number",
1826
2077
  "minimum": 0.5,
1827
- "maximum": 1.0,
2078
+ "maximum": 1,
1828
2079
  "default": 0.95
1829
2080
  },
1830
- "autoIngestOnRefresh": { "type": "boolean", "default": true },
2081
+ "autoIngestOnRefresh": {
2082
+ "type": "boolean",
2083
+ "default": true
2084
+ },
1831
2085
  "ingestConcurrency": {
1832
2086
  "type": "integer",
1833
2087
  "description": "Number of SCIP indexes to ingest concurrently. Decode/parse overlaps; writes still serialise via writeLimiter. Default 1 (sequential).",
@@ -1839,14 +2093,29 @@
1839
2093
  "type": "object",
1840
2094
  "description": "Auto-generate index.scip via the scip-io CLI before each refresh. Has no effect unless scip.enabled is also true. When enabled and the binary is missing, sdl-mcp downloads it from GitHub releases into ~/.sdl-mcp/bin/ with mandatory SHA-256 verification against the release's SHA256SUMS.txt; installs are refused if the checksum file is absent.",
1841
2095
  "properties": {
1842
- "enabled": { "type": "boolean", "default": true },
1843
- "binary": { "type": "string", "default": "scip-io" },
2096
+ "enabled": {
2097
+ "type": "boolean",
2098
+ "default": true
2099
+ },
2100
+ "binary": {
2101
+ "type": "string",
2102
+ "default": "scip-io"
2103
+ },
1844
2104
  "args": {
1845
2105
  "type": "array",
1846
- "items": { "type": "string" },
1847
- "default": ["--include-additional-configs", "--timeout", "3600"]
2106
+ "items": {
2107
+ "type": "string"
2108
+ },
2109
+ "default": [
2110
+ "--include-additional-configs",
2111
+ "--timeout",
2112
+ "3600"
2113
+ ]
2114
+ },
2115
+ "autoInstall": {
2116
+ "type": "boolean",
2117
+ "default": true
1848
2118
  },
1849
- "autoInstall": { "type": "boolean", "default": true },
1850
2119
  "timeoutMs": {
1851
2120
  "type": "integer",
1852
2121
  "minimum": 1000,
@@ -1867,7 +2136,11 @@
1867
2136
  "default": {
1868
2137
  "enabled": true,
1869
2138
  "binary": "scip-io",
1870
- "args": ["--include-additional-configs", "--timeout", "3600"],
2139
+ "args": [
2140
+ "--include-additional-configs",
2141
+ "--timeout",
2142
+ "3600"
2143
+ ],
1871
2144
  "autoInstall": true,
1872
2145
  "timeoutMs": 18000000,
1873
2146
  "cleanupAfterIngest": true,
@@ -1948,7 +2221,11 @@
1948
2221
  },
1949
2222
  "defaultFormat": {
1950
2223
  "type": "string",
1951
- "enum": ["packed", "auto", "compact"],
2224
+ "enum": [
2225
+ "packed",
2226
+ "auto",
2227
+ "compact"
2228
+ ],
1952
2229
  "description": "Default wire format when client omits the field. Env var SDL_PACKED_DEFAULT_FORMAT overrides.",
1953
2230
  "default": "auto"
1954
2231
  },
@@ -1958,7 +2235,10 @@
1958
2235
  "additionalProperties": {
1959
2236
  "type": "object",
1960
2237
  "properties": {
1961
- "enabled": { "type": "boolean", "default": true }
2238
+ "enabled": {
2239
+ "type": "boolean",
2240
+ "default": true
2241
+ }
1962
2242
  },
1963
2243
  "additionalProperties": false
1964
2244
  }
@@ -1968,6 +2248,150 @@
1968
2248
  }
1969
2249
  },
1970
2250
  "additionalProperties": false
2251
+ },
2252
+ "viewer": {
2253
+ "type": "object",
2254
+ "description": "SDL Galaxy graph viewer configuration",
2255
+ "additionalProperties": false,
2256
+ "properties": {
2257
+ "enabled": {
2258
+ "type": "boolean",
2259
+ "default": true
2260
+ },
2261
+ "skinsDir": {
2262
+ "type": [
2263
+ "string",
2264
+ "null"
2265
+ ],
2266
+ "default": null,
2267
+ "description": "Directory containing declarative viewer skin zip files. Defaults to <configDir>/skins when omitted."
2268
+ },
2269
+ "fps": {
2270
+ "enum": [
2271
+ 15,
2272
+ 30,
2273
+ 60,
2274
+ 90,
2275
+ 120
2276
+ ],
2277
+ "default": 60
2278
+ },
2279
+ "ambient": {
2280
+ "type": "object",
2281
+ "additionalProperties": false,
2282
+ "properties": {
2283
+ "enabled": {
2284
+ "type": "boolean",
2285
+ "default": true
2286
+ },
2287
+ "idleSeconds": {
2288
+ "type": "integer",
2289
+ "minimum": 10,
2290
+ "maximum": 3600,
2291
+ "default": 180
2292
+ },
2293
+ "fps": {
2294
+ "enum": [
2295
+ 15,
2296
+ 30,
2297
+ 60,
2298
+ 90,
2299
+ 120
2300
+ ],
2301
+ "default": 30
2302
+ }
2303
+ },
2304
+ "default": {
2305
+ "enabled": true,
2306
+ "idleSeconds": 180,
2307
+ "fps": 30
2308
+ }
2309
+ },
2310
+ "layout": {
2311
+ "type": "object",
2312
+ "additionalProperties": false,
2313
+ "properties": {
2314
+ "engine": {
2315
+ "enum": [
2316
+ "auto",
2317
+ "typescript",
2318
+ "rust"
2319
+ ],
2320
+ "default": "auto"
2321
+ },
2322
+ "iterations": {
2323
+ "type": "integer",
2324
+ "minimum": 50,
2325
+ "maximum": 2000,
2326
+ "default": 300
2327
+ },
2328
+ "cacheDir": {
2329
+ "type": [
2330
+ "string",
2331
+ "null"
2332
+ ],
2333
+ "default": null,
2334
+ "description": "Directory for deterministic layout artifacts. Defaults to <configDir>/viewer-layout-cache when omitted."
2335
+ },
2336
+ "maxSymbolsPerClusterExpand": {
2337
+ "type": "integer",
2338
+ "minimum": 100,
2339
+ "maximum": 20000,
2340
+ "default": 5000
2341
+ }
2342
+ },
2343
+ "default": {
2344
+ "engine": "auto",
2345
+ "iterations": 300,
2346
+ "cacheDir": null,
2347
+ "maxSymbolsPerClusterExpand": 5000
2348
+ }
2349
+ },
2350
+ "skins": {
2351
+ "type": "object",
2352
+ "additionalProperties": false,
2353
+ "properties": {
2354
+ "maxZipBytes": {
2355
+ "type": "integer",
2356
+ "default": 52428800
2357
+ },
2358
+ "maxEntries": {
2359
+ "type": "integer",
2360
+ "default": 500
2361
+ },
2362
+ "maxDecompressedBytes": {
2363
+ "type": "integer",
2364
+ "default": 209715200
2365
+ }
2366
+ },
2367
+ "default": {
2368
+ "maxZipBytes": 52428800,
2369
+ "maxEntries": 500,
2370
+ "maxDecompressedBytes": 209715200
2371
+ }
2372
+ }
2373
+ },
2374
+ "default": {
2375
+ "enabled": true,
2376
+ "skinsDir": null,
2377
+ "fps": 60,
2378
+ "ambient": {
2379
+ "enabled": true,
2380
+ "idleSeconds": 180,
2381
+ "fps": 30
2382
+ },
2383
+ "layout": {
2384
+ "engine": "auto",
2385
+ "iterations": 300,
2386
+ "cacheDir": null,
2387
+ "maxSymbolsPerClusterExpand": 5000
2388
+ },
2389
+ "skins": {
2390
+ "maxZipBytes": 52428800,
2391
+ "maxEntries": 500,
2392
+ "maxDecompressedBytes": 209715200
2393
+ }
2394
+ }
1971
2395
  }
1972
2396
  }
1973
2397
  }