sysmledgraph 0.7.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 (309) hide show
  1. package/README.md +71 -0
  2. package/dist/bin/cli.d.ts +6 -0
  3. package/dist/bin/cli.d.ts.map +1 -0
  4. package/dist/bin/cli.js +61 -0
  5. package/dist/bin/cli.js.map +1 -0
  6. package/dist/mcp/index.d.ts +3 -0
  7. package/dist/mcp/index.d.ts.map +1 -0
  8. package/dist/mcp/index.js +8 -0
  9. package/dist/mcp/index.js.map +1 -0
  10. package/dist/src/cli/commands.d.ts +22 -0
  11. package/dist/src/cli/commands.d.ts.map +1 -0
  12. package/dist/src/cli/commands.js +87 -0
  13. package/dist/src/cli/commands.js.map +1 -0
  14. package/dist/src/discovery/find-sysml.d.ts +16 -0
  15. package/dist/src/discovery/find-sysml.d.ts.map +1 -0
  16. package/dist/src/discovery/find-sysml.js +30 -0
  17. package/dist/src/discovery/find-sysml.js.map +1 -0
  18. package/dist/src/discovery/load-order.d.ts +11 -0
  19. package/dist/src/discovery/load-order.d.ts.map +1 -0
  20. package/dist/src/discovery/load-order.js +85 -0
  21. package/dist/src/discovery/load-order.js.map +1 -0
  22. package/dist/src/graph/connection.d.ts +6 -0
  23. package/dist/src/graph/connection.d.ts.map +1 -0
  24. package/dist/src/graph/connection.js +7 -0
  25. package/dist/src/graph/connection.js.map +1 -0
  26. package/dist/src/graph/graph-store.d.ts +37 -0
  27. package/dist/src/graph/graph-store.d.ts.map +1 -0
  28. package/dist/src/graph/graph-store.js +108 -0
  29. package/dist/src/graph/graph-store.js.map +1 -0
  30. package/dist/src/graph/schema.d.ts +13 -0
  31. package/dist/src/graph/schema.d.ts.map +1 -0
  32. package/dist/src/graph/schema.js +21 -0
  33. package/dist/src/graph/schema.js.map +1 -0
  34. package/dist/src/index.d.ts +14 -0
  35. package/dist/src/index.d.ts.map +1 -0
  36. package/dist/src/index.js +14 -0
  37. package/dist/src/index.js.map +1 -0
  38. package/dist/src/indexer/indexer.d.ts +20 -0
  39. package/dist/src/indexer/indexer.d.ts.map +1 -0
  40. package/dist/src/indexer/indexer.js +56 -0
  41. package/dist/src/indexer/indexer.js.map +1 -0
  42. package/dist/src/indexer/pipeline-phases.d.ts +8 -0
  43. package/dist/src/indexer/pipeline-phases.d.ts.map +1 -0
  44. package/dist/src/indexer/pipeline-phases.js +14 -0
  45. package/dist/src/indexer/pipeline-phases.js.map +1 -0
  46. package/dist/src/mcp/resources/context.d.ts +6 -0
  47. package/dist/src/mcp/resources/context.d.ts.map +1 -0
  48. package/dist/src/mcp/resources/context.js +45 -0
  49. package/dist/src/mcp/resources/context.js.map +1 -0
  50. package/dist/src/mcp/resources/schema.d.ts +6 -0
  51. package/dist/src/mcp/resources/schema.d.ts.map +1 -0
  52. package/dist/src/mcp/resources/schema.js +14 -0
  53. package/dist/src/mcp/resources/schema.js.map +1 -0
  54. package/dist/src/mcp/server.d.ts +8 -0
  55. package/dist/src/mcp/server.d.ts.map +1 -0
  56. package/dist/src/mcp/server.js +175 -0
  57. package/dist/src/mcp/server.js.map +1 -0
  58. package/dist/src/mcp/tools/clean-index.d.ts +12 -0
  59. package/dist/src/mcp/tools/clean-index.d.ts.map +1 -0
  60. package/dist/src/mcp/tools/clean-index.js +22 -0
  61. package/dist/src/mcp/tools/clean-index.js.map +1 -0
  62. package/dist/src/mcp/tools/context.d.ts +14 -0
  63. package/dist/src/mcp/tools/context.d.ts.map +1 -0
  64. package/dist/src/mcp/tools/context.js +51 -0
  65. package/dist/src/mcp/tools/context.js.map +1 -0
  66. package/dist/src/mcp/tools/cypher.d.ts +13 -0
  67. package/dist/src/mcp/tools/cypher.d.ts.map +1 -0
  68. package/dist/src/mcp/tools/cypher.js +25 -0
  69. package/dist/src/mcp/tools/cypher.js.map +1 -0
  70. package/dist/src/mcp/tools/generate-map.d.ts +13 -0
  71. package/dist/src/mcp/tools/generate-map.d.ts.map +1 -0
  72. package/dist/src/mcp/tools/generate-map.js +96 -0
  73. package/dist/src/mcp/tools/generate-map.js.map +1 -0
  74. package/dist/src/mcp/tools/impact.d.ts +14 -0
  75. package/dist/src/mcp/tools/impact.d.ts.map +1 -0
  76. package/dist/src/mcp/tools/impact.js +47 -0
  77. package/dist/src/mcp/tools/impact.js.map +1 -0
  78. package/dist/src/mcp/tools/index-db-graph.d.ts +14 -0
  79. package/dist/src/mcp/tools/index-db-graph.d.ts.map +1 -0
  80. package/dist/src/mcp/tools/index-db-graph.js +32 -0
  81. package/dist/src/mcp/tools/index-db-graph.js.map +1 -0
  82. package/dist/src/mcp/tools/list-indexed.d.ts +9 -0
  83. package/dist/src/mcp/tools/list-indexed.d.ts.map +1 -0
  84. package/dist/src/mcp/tools/list-indexed.js +14 -0
  85. package/dist/src/mcp/tools/list-indexed.js.map +1 -0
  86. package/dist/src/mcp/tools/query.d.ts +14 -0
  87. package/dist/src/mcp/tools/query.d.ts.map +1 -0
  88. package/dist/src/mcp/tools/query.js +47 -0
  89. package/dist/src/mcp/tools/query.js.map +1 -0
  90. package/dist/src/mcp/tools/rename.d.ts +19 -0
  91. package/dist/src/mcp/tools/rename.d.ts.map +1 -0
  92. package/dist/src/mcp/tools/rename.js +46 -0
  93. package/dist/src/mcp/tools/rename.js.map +1 -0
  94. package/dist/src/parser/lsp-client.d.ts +52 -0
  95. package/dist/src/parser/lsp-client.d.ts.map +1 -0
  96. package/dist/src/parser/lsp-client.js +230 -0
  97. package/dist/src/parser/lsp-client.js.map +1 -0
  98. package/dist/src/parser/lsp-server-path.d.ts +10 -0
  99. package/dist/src/parser/lsp-server-path.d.ts.map +1 -0
  100. package/dist/src/parser/lsp-server-path.js +29 -0
  101. package/dist/src/parser/lsp-server-path.js.map +1 -0
  102. package/dist/src/parser/symbols.d.ts +13 -0
  103. package/dist/src/parser/symbols.d.ts.map +1 -0
  104. package/dist/src/parser/symbols.js +150 -0
  105. package/dist/src/parser/symbols.js.map +1 -0
  106. package/dist/src/parser/sysml-mcp-client.d.ts +109 -0
  107. package/dist/src/parser/sysml-mcp-client.d.ts.map +1 -0
  108. package/dist/src/parser/sysml-mcp-client.js +185 -0
  109. package/dist/src/parser/sysml-mcp-client.js.map +1 -0
  110. package/dist/src/storage/clean.d.ts +15 -0
  111. package/dist/src/storage/clean.d.ts.map +1 -0
  112. package/dist/src/storage/clean.js +44 -0
  113. package/dist/src/storage/clean.js.map +1 -0
  114. package/dist/src/storage/list.d.ts +9 -0
  115. package/dist/src/storage/list.d.ts.map +1 -0
  116. package/dist/src/storage/list.js +12 -0
  117. package/dist/src/storage/list.js.map +1 -0
  118. package/dist/src/storage/location.d.ts +22 -0
  119. package/dist/src/storage/location.d.ts.map +1 -0
  120. package/dist/src/storage/location.js +36 -0
  121. package/dist/src/storage/location.js.map +1 -0
  122. package/dist/src/storage/registry.d.ts +14 -0
  123. package/dist/src/storage/registry.d.ts.map +1 -0
  124. package/dist/src/storage/registry.js +59 -0
  125. package/dist/src/storage/registry.js.map +1 -0
  126. package/dist/src/symbol-to-graph/mapping.d.ts +17 -0
  127. package/dist/src/symbol-to-graph/mapping.d.ts.map +1 -0
  128. package/dist/src/symbol-to-graph/mapping.js +102 -0
  129. package/dist/src/symbol-to-graph/mapping.js.map +1 -0
  130. package/dist/src/types.d.ts +40 -0
  131. package/dist/src/types.d.ts.map +1 -0
  132. package/dist/src/types.js +35 -0
  133. package/dist/src/types.js.map +1 -0
  134. package/dist/src/worker/client.d.ts +21 -0
  135. package/dist/src/worker/client.d.ts.map +1 -0
  136. package/dist/src/worker/client.js +126 -0
  137. package/dist/src/worker/client.js.map +1 -0
  138. package/dist/src/worker/gateway.d.ts +79 -0
  139. package/dist/src/worker/gateway.d.ts.map +1 -0
  140. package/dist/src/worker/gateway.js +93 -0
  141. package/dist/src/worker/gateway.js.map +1 -0
  142. package/dist/src/worker/graph-worker.d.ts +7 -0
  143. package/dist/src/worker/graph-worker.d.ts.map +1 -0
  144. package/dist/src/worker/graph-worker.js +91 -0
  145. package/dist/src/worker/graph-worker.js.map +1 -0
  146. package/dist/src/worker/protocol.d.ts +21 -0
  147. package/dist/src/worker/protocol.d.ts.map +1 -0
  148. package/dist/src/worker/protocol.js +9 -0
  149. package/dist/src/worker/protocol.js.map +1 -0
  150. package/docs/INSTALL.md +16 -0
  151. package/docs/MCP_CLIENT_TEMPLATE_ANALYSIS.md +196 -0
  152. package/docs/MCP_INTERACTION_GUIDE.md +201 -0
  153. package/docs/MCP_SERVER_FOR_CURSOR.md +124 -0
  154. package/docs/PLAN.md +58 -0
  155. package/docs/PLAN_INDEPENDENT_LSP.md +145 -0
  156. package/docs/SKILL_DESIGN_PATTERNS.md +305 -0
  157. package/docs/TOOLS.md +317 -0
  158. package/lsp/README.md +41 -0
  159. package/lsp/node_modules/.bin/sysml-mcp +12 -0
  160. package/lsp/node_modules/.bin/sysml-mcp.cmd +9 -0
  161. package/lsp/node_modules/.bin/sysml-mcp.ps1 +16 -0
  162. package/lsp/node_modules/.package-lock.json +22 -0
  163. package/lsp/node_modules/sysml-v2-lsp/CHANGELOG.md +188 -0
  164. package/lsp/node_modules/sysml-v2-lsp/LICENSE +21 -0
  165. package/lsp/node_modules/sysml-v2-lsp/README.md +172 -0
  166. package/lsp/node_modules/sysml-v2-lsp/dist/server/mcpServer.js +167 -0
  167. package/lsp/node_modules/sysml-v2-lsp/dist/server/server.js +142 -0
  168. package/lsp/node_modules/sysml-v2-lsp/index.cjs +23 -0
  169. package/lsp/node_modules/sysml-v2-lsp/package.json +131 -0
  170. package/lsp/node_modules/sysml-v2-lsp/sysml.library/.project +17 -0
  171. package/lsp/node_modules/sysml-v2-lsp/sysml.library/.settings/org.eclipse.jdt.core.prefs +11 -0
  172. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Analysis/.meta.json +10 -0
  173. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Analysis/.project.json +27 -0
  174. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Analysis/AnalysisTooling.sysml +34 -0
  175. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Analysis/SampledFunctions.sysml +119 -0
  176. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Analysis/StateSpaceRepresentation.sysml +143 -0
  177. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Analysis/TradeStudies.sysml +171 -0
  178. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Cause and Effect/.meta.json +8 -0
  179. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Cause and Effect/.project.json +23 -0
  180. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Cause and Effect/CausationConnections.sysml +83 -0
  181. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Cause and Effect/CauseAndEffect.sysml +81 -0
  182. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Geometry/.meta.json +8 -0
  183. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Geometry/.project.json +27 -0
  184. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Geometry/ShapeItems.sysml +899 -0
  185. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Geometry/SpatialItems.sysml +168 -0
  186. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Metadata/.meta.json +10 -0
  187. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Metadata/.project.json +19 -0
  188. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Metadata/ImageMetadata.sysml +78 -0
  189. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Metadata/ModelingMetadata.sysml +143 -0
  190. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Metadata/ParametersOfInterestMetadata.sysml +39 -0
  191. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Metadata/RiskMetadata.sysml +100 -0
  192. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/.meta.json +29 -0
  193. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/.project.json +23 -0
  194. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/ISQ.sysml +42 -0
  195. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/ISQAcoustics.sysml +439 -0
  196. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/ISQAtomicNuclear.sysml +2726 -0
  197. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/ISQBase.sysml +206 -0
  198. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/ISQCharacteristicNumbers.sysml +1991 -0
  199. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/ISQChemistryMolecular.sysml +1353 -0
  200. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/ISQCondensedMatter.sysml +1223 -0
  201. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/ISQElectromagnetism.sysml +2333 -0
  202. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/ISQInformation.sysml +958 -0
  203. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/ISQLight.sysml +1537 -0
  204. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/ISQMechanics.sysml +1564 -0
  205. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/ISQSpaceTime.sysml +1169 -0
  206. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/ISQThermodynamics.sysml +1256 -0
  207. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/MeasurementRefCalculations.sysml +30 -0
  208. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/MeasurementReferences.sysml +526 -0
  209. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/Quantities.sysml +107 -0
  210. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/QuantityCalculations.sysml +70 -0
  211. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/SI.sysml +378 -0
  212. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/SIPrefixes.sysml +48 -0
  213. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/TensorCalculations.sysml +50 -0
  214. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/Time.sysml +274 -0
  215. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/USCustomaryUnits.sysml +260 -0
  216. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Quantities and Units/VectorCalculations.sysml +62 -0
  217. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Requirement Derivation/.meta.json +8 -0
  218. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Requirement Derivation/.project.json +19 -0
  219. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Requirement Derivation/DerivationConnections.sysml +63 -0
  220. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Domain Libraries/Requirement Derivation/RequirementDerivation.sysml +39 -0
  221. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Data Type Library/.meta.json +9 -0
  222. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Data Type Library/.project.json +11 -0
  223. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Data Type Library/Collections.kerml +147 -0
  224. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Data Type Library/ScalarValues.kerml +23 -0
  225. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Data Type Library/VectorValues.kerml +64 -0
  226. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/.meta.json +23 -0
  227. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/.project.json +15 -0
  228. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/BaseFunctions.kerml +80 -0
  229. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/BooleanFunctions.kerml +22 -0
  230. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/CollectionFunctions.kerml +68 -0
  231. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/ComplexFunctions.kerml +47 -0
  232. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/ControlFunctions.kerml +117 -0
  233. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/DataFunctions.kerml +43 -0
  234. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/IntegerFunctions.kerml +43 -0
  235. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/NaturalFunctions.kerml +27 -0
  236. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/NumericalFunctions.kerml +43 -0
  237. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/OccurrenceFunctions.kerml +154 -0
  238. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/RationalFunctions.kerml +49 -0
  239. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/RealFunctions.kerml +56 -0
  240. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/ScalarFunctions.kerml +33 -0
  241. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/SequenceFunctions.kerml +111 -0
  242. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/StringFunctions.kerml +25 -0
  243. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/TrigFunctions.kerml +35 -0
  244. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Function Library/VectorFunctions.kerml +273 -0
  245. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Semantic Library/.meta.json +22 -0
  246. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Semantic Library/.project.json +15 -0
  247. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Semantic Library/Base.kerml +95 -0
  248. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Semantic Library/Clocks.kerml +156 -0
  249. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Semantic Library/ControlPerformances.kerml +135 -0
  250. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Semantic Library/FeatureReferencingPerformances.kerml +190 -0
  251. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Semantic Library/KerML.kerml +483 -0
  252. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Semantic Library/Links.kerml +67 -0
  253. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Semantic Library/Metaobjects.kerml +58 -0
  254. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Semantic Library/Objects.kerml +212 -0
  255. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Semantic Library/Observation.kerml +161 -0
  256. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Semantic Library/Occurrences.kerml +992 -0
  257. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Semantic Library/Performances.kerml +293 -0
  258. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Semantic Library/SpatialFrames.kerml +197 -0
  259. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Semantic Library/StatePerformances.kerml +145 -0
  260. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Semantic Library/Transfers.kerml +281 -0
  261. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Semantic Library/TransitionPerformances.kerml +66 -0
  262. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Kernel Libraries/Kernel Semantic Library/Triggers.kerml +188 -0
  263. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/.meta.json +27 -0
  264. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/.project.json +19 -0
  265. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/Actions.sysml +552 -0
  266. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/Allocations.sysml +29 -0
  267. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/AnalysisCases.sysml +38 -0
  268. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/Attributes.sysml +25 -0
  269. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/Calculations.sysml +37 -0
  270. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/Cases.sysml +71 -0
  271. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/Connections.sysml +60 -0
  272. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/Constraints.sysml +44 -0
  273. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/Flows.sysml +126 -0
  274. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/Interfaces.sysml +89 -0
  275. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/Items.sysml +153 -0
  276. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/Metadata.sysml +32 -0
  277. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/Parts.sysml +81 -0
  278. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/Ports.sysml +54 -0
  279. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/Requirements.sysml +194 -0
  280. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/StandardViewDefinitions.sysml +123 -0
  281. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/States.sysml +103 -0
  282. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/SysML.sysml +539 -0
  283. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/UseCases.sysml +57 -0
  284. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/VerificationCases.sysml +103 -0
  285. package/lsp/node_modules/sysml-v2-lsp/sysml.library/Systems Library/Views.sysml +164 -0
  286. package/lsp/package-lock.json +30 -0
  287. package/lsp/package.json +15 -0
  288. package/lsp/test-server.mjs +120 -0
  289. package/package.json +61 -0
  290. package/scripts/access-sysml-mcp.mjs +45 -0
  291. package/scripts/check-sysml-v2-lsp-version.mjs +39 -0
  292. package/scripts/clean.mjs +14 -0
  293. package/scripts/compare-mcp-vs-lsp-symbols.mjs +76 -0
  294. package/scripts/debug-index.mjs +23 -0
  295. package/scripts/debug-lsp-symbols.mjs +62 -0
  296. package/scripts/deploy-skills.mjs +43 -0
  297. package/scripts/example-sysml-mcp.mjs +27 -0
  298. package/scripts/export-graph.mjs +80 -0
  299. package/scripts/generate-map.mjs +110 -0
  300. package/scripts/index-and-map.mjs +43 -0
  301. package/scripts/index-and-query.mjs +39 -0
  302. package/scripts/query-one.mjs +34 -0
  303. package/scripts/setup-lsp.mjs +36 -0
  304. package/scripts/test-lsp.mjs +55 -0
  305. package/scripts/test-mcp-debug.mjs +32 -0
  306. package/scripts/test-mcp-sysml.mjs +75 -0
  307. package/scripts/test-mcp-tools.mjs +185 -0
  308. package/scripts/test-sysml-mcp-from-node_modules.mjs +56 -0
  309. package/scripts/validate-sysml-file.mjs +69 -0
@@ -0,0 +1,230 @@
1
+ /**
2
+ * SysML LSP integration: stdio client (JSON-RPC over Content-Length framing).
3
+ *
4
+ * **MCP Client Pattern**: This follows MCP client lifecycle (initialize → initialized → requests),
5
+ * but uses LSP protocol messages (textDocument/documentSymbol) instead of MCP tools/call.
6
+ * The server uses Content-Length framing (LSP-style), not newline-delimited (MCP SDK style),
7
+ * so we implement a custom transport rather than using @modelcontextprotocol/sdk StdioClientTransport.
8
+ *
9
+ * Reference: https://github.com/andrea9293/mcp-client-template for MCP client patterns.
10
+ *
11
+ * Spawns an external **server.js** — this repo does **not** bundle sysml-v2-lsp.
12
+ * Set **SYSMLLSP_SERVER_PATH** to a built [daltskin/sysml-v2-lsp](https://github.com/daltskin/sysml-v2-lsp)
13
+ * `dist/server/server.js` (from a separate install or wherever your SysML MCP/LSP provides it).
14
+ */
15
+ import { spawn } from 'child_process';
16
+ import { pathToFileURL } from 'url';
17
+ import { dirname, resolve } from 'path';
18
+ import { getDefaultLspServerPath } from './lsp-server-path.js';
19
+ /** Absolute path to LSP server script, or null if none found. Uses getDefaultLspServerPath (env → lsp/ → root). */
20
+ export function resolveLspServerPath() {
21
+ return getDefaultLspServerPath();
22
+ }
23
+ function sendLspMessage(proc, body) {
24
+ const buf = Buffer.from(body, 'utf8');
25
+ proc.stdin?.write(`Content-Length: ${buf.length}\r\n\r\n`, 'utf8');
26
+ proc.stdin?.write(buf, 'utf8');
27
+ }
28
+ /** Create a reader that yields one LSP message at a time from stdout. Rejects on stream close/error or process exit. */
29
+ function createMessageReader(proc) {
30
+ let buffer = '';
31
+ let contentLength = null;
32
+ let waiting = null;
33
+ function rejectWaiting(err) {
34
+ if (waiting) {
35
+ waiting.reject(err);
36
+ waiting = null;
37
+ }
38
+ }
39
+ proc.stdout?.setEncoding('utf8');
40
+ proc.stdout?.on('data', (chunk) => {
41
+ buffer += chunk;
42
+ for (;;) {
43
+ if (contentLength === null) {
44
+ const idx = buffer.indexOf('\r\n\r\n');
45
+ if (idx === -1)
46
+ break;
47
+ const header = buffer.slice(0, idx);
48
+ const m = header.match(/Content-Length:\s*(\d+)/i);
49
+ contentLength = m ? parseInt(m[1], 10) : 0;
50
+ buffer = buffer.slice(idx + 4);
51
+ }
52
+ if (contentLength !== null && buffer.length >= contentLength) {
53
+ const body = buffer.slice(0, contentLength);
54
+ buffer = buffer.slice(contentLength);
55
+ contentLength = null;
56
+ if (waiting) {
57
+ waiting.resolve(body);
58
+ waiting = null;
59
+ }
60
+ }
61
+ else
62
+ break;
63
+ }
64
+ });
65
+ proc.stdout?.on('close', () => rejectWaiting(new Error('LSP stdout closed')));
66
+ proc.stdout?.on('error', (err) => rejectWaiting(err instanceof Error ? err : new Error(String(err))));
67
+ proc.on('exit', (code, signal) => {
68
+ rejectWaiting(new Error(`LSP process exited (code=${code}, signal=${signal})`));
69
+ });
70
+ proc.on('error', (err) => rejectWaiting(err instanceof Error ? err : new Error(String(err))));
71
+ return () => new Promise((resolve, reject) => {
72
+ if (buffer.length > 0 && contentLength !== null && buffer.length >= contentLength) {
73
+ const body = buffer.slice(0, contentLength);
74
+ buffer = buffer.slice(contentLength);
75
+ contentLength = null;
76
+ resolve(body);
77
+ return;
78
+ }
79
+ waiting = { resolve, reject };
80
+ });
81
+ }
82
+ const LSP_REQUEST_TIMEOUT_MS = 30000;
83
+ function runLspRequest(proc, readNext, method, params, id, onNotification) {
84
+ const body = JSON.stringify({ jsonrpc: '2.0', id, method, params });
85
+ sendLspMessage(proc, body);
86
+ return (async () => {
87
+ const deadline = Date.now() + LSP_REQUEST_TIMEOUT_MS;
88
+ for (;;) {
89
+ const raw = await Promise.race([
90
+ readNext(),
91
+ new Promise((_, rej) => setTimeout(() => rej(new Error(`LSP ${method} timeout after ${LSP_REQUEST_TIMEOUT_MS}ms`)), Math.max(100, deadline - Date.now()))),
92
+ ]);
93
+ let msg;
94
+ try {
95
+ msg = JSON.parse(raw);
96
+ }
97
+ catch {
98
+ continue; // skip malformed message (e.g. server log line)
99
+ }
100
+ if (msg.id === id) {
101
+ if (msg.error)
102
+ throw new Error(msg.error.message || JSON.stringify(msg.error));
103
+ return msg.result;
104
+ }
105
+ // Server sent a notification (no id) or response for another request
106
+ if (msg.id === undefined && msg.method && onNotification) {
107
+ onNotification(msg.method, msg.params ?? {});
108
+ }
109
+ }
110
+ })();
111
+ }
112
+ function sendNotification(proc, method, params) {
113
+ sendLspMessage(proc, JSON.stringify({ jsonrpc: '2.0', method, params }));
114
+ }
115
+ let requestId = 1;
116
+ function nextId() {
117
+ return requestId++;
118
+ }
119
+ export async function createLspClient() {
120
+ const path = resolveLspServerPath();
121
+ if (!path) {
122
+ throw new Error('SysML LSP server path not set. Set SYSMLLSP_SERVER_PATH to the absolute or cwd-relative path ' +
123
+ 'to sysml-v2-lsp dist/server/server.js (install [daltskin/sysml-v2-lsp](https://github.com/daltskin/sysml-v2-lsp) ' +
124
+ 'separately or via your SysML MCP setup). This package no longer bundles sysml-v2-lsp.');
125
+ }
126
+ // Run from package root when path is .../dist/server/server.js so sysml-v2-lsp finds sysml.library.
127
+ // If path is under repo/lsp/node_modules/..., use repo/lsp as cwd (dedicated LSP init folder).
128
+ const serverDir = dirname(path);
129
+ const pathNorm = path.replace(/\\/g, '/');
130
+ const lspNodeModules = '/lsp/node_modules/';
131
+ const lspNodeModulesWin = '\\lsp\\node_modules\\';
132
+ const underLsp = pathNorm.includes(lspNodeModules) ||
133
+ path.includes(lspNodeModulesWin);
134
+ const distServer = 'dist' + (serverDir.includes('\\') ? '\\' : '/') + 'server';
135
+ const cwd = underLsp
136
+ ? resolve(process.cwd(), 'lsp')
137
+ : serverDir.endsWith(distServer)
138
+ ? dirname(serverDir)
139
+ : serverDir;
140
+ // On Windows, spawn via cmd /c so Node runs the script (avoids "open with" for .js)
141
+ const isWin = process.platform === 'win32';
142
+ const proc = isWin
143
+ ? spawn('cmd', ['/c', process.execPath, path, '--stdio'], { stdio: ['pipe', 'pipe', 'pipe'], cwd })
144
+ : spawn(process.execPath, [path, '--stdio'], { stdio: ['pipe', 'pipe', 'pipe'], cwd });
145
+ proc.stderr?.on('data', () => { });
146
+ const readNext = createMessageReader(proc);
147
+ const onNotification = (method, params) => {
148
+ if (process.env.DEBUG_LSP_NOTIFICATIONS === '1' && (method === 'window/logMessage' || method === 'window/showMessage')) {
149
+ const p = params;
150
+ process.stderr.write(`[LSP ${method}] ${p?.message ?? JSON.stringify(params)}\n`);
151
+ }
152
+ };
153
+ // MCP client lifecycle: 1) initialize request
154
+ const rootUri = pathToFileURL(resolve(cwd, '.')).href;
155
+ await runLspRequest(proc, readNext, 'initialize', {
156
+ processId: process.pid,
157
+ rootUri,
158
+ capabilities: {
159
+ textDocument: {
160
+ documentSymbol: { hierarchicalDocumentSymbolSupport: true },
161
+ },
162
+ },
163
+ workspaceFolders: [{ uri: rootUri, name: 'workspace' }],
164
+ }, nextId(), onNotification);
165
+ // MCP client lifecycle: 2) initialized notification (after initialize response)
166
+ sendNotification(proc, 'initialized', {});
167
+ await new Promise((r) => setTimeout(r, 200));
168
+ async function getDocumentSymbols(uri, content) {
169
+ const docUri = uri.startsWith('file:') ? uri : pathToFileURL(uri).href;
170
+ sendNotification(proc, 'textDocument/didOpen', {
171
+ textDocument: { uri: docUri, languageId: 'sysml', version: 1, text: content },
172
+ });
173
+ await new Promise((r) => setTimeout(r, 500));
174
+ const result = await runLspRequest(proc, readNext, 'textDocument/documentSymbol', { textDocument: { uri: docUri } }, nextId(), onNotification);
175
+ if (result == null)
176
+ return [];
177
+ let arr = [];
178
+ if (Array.isArray(result))
179
+ arr = result;
180
+ else if (typeof result === 'object' && 'data' in result && Array.isArray(result.data)) {
181
+ arr = result.data;
182
+ }
183
+ if (arr.length === 0)
184
+ return [];
185
+ // Normalize SymbolInformation (location, name, kind, containerName) → DocumentSymbol-like (range, name, kind)
186
+ const first = arr[0];
187
+ if (first?.location && !first?.range) {
188
+ return arr.map((item) => {
189
+ const i = item;
190
+ return {
191
+ name: String(i.name ?? ''),
192
+ detail: i.detail != null ? String(i.detail) : undefined,
193
+ kind: Number(i.kind ?? 0),
194
+ range: i.location?.range ?? { start: { line: 0, character: 0 }, end: { line: 0, character: 0 } },
195
+ selectionRange: i.location?.range,
196
+ children: undefined,
197
+ containerName: i.containerName != null ? String(i.containerName) : undefined,
198
+ };
199
+ });
200
+ }
201
+ return arr;
202
+ }
203
+ function close() {
204
+ proc.kill('SIGTERM');
205
+ }
206
+ return { getDocumentSymbols, close };
207
+ }
208
+ let sharedClient = null;
209
+ const LSP_INIT_RETRY_DELAY_MS = 1500;
210
+ /** Spawns external LSP (SYSMLLSP_SERVER_PATH). Throws if unset or startup fails. Retries once on transient failure. */
211
+ export async function getDocumentSymbolsFromLsp(filePath, content) {
212
+ if (!sharedClient) {
213
+ try {
214
+ sharedClient = await createLspClient();
215
+ }
216
+ catch (firstErr) {
217
+ await new Promise((r) => setTimeout(r, LSP_INIT_RETRY_DELAY_MS));
218
+ sharedClient = await createLspClient();
219
+ }
220
+ }
221
+ const uri = pathToFileURL(filePath).href;
222
+ return await sharedClient.getDocumentSymbols(uri, content);
223
+ }
224
+ export function closeLspClient() {
225
+ if (sharedClient) {
226
+ sharedClient.close();
227
+ sharedClient = null;
228
+ }
229
+ }
230
+ //# sourceMappingURL=lsp-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lsp-client.js","sourceRoot":"","sources":["../../../src/parser/lsp-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Default LSP server path: env override, then lsp/ then root node_modules.
3
+ * Single source for "independent LSP" used only by sysmledgraph (see docs/PLAN_INDEPENDENT_LSP.md).
4
+ */
5
+ /**
6
+ * Resolved path to the LSP server script, or null if none found.
7
+ * Order: SYSMLLSP_SERVER_PATH (if set) → lsp/.../server.js → root node_modules/.../server.js.
8
+ */
9
+ export declare function getDefaultLspServerPath(): string | null;
10
+ //# sourceMappingURL=lsp-server-path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lsp-server-path.d.ts","sourceRoot":"","sources":["../../../src/parser/lsp-server-path.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,GAAG,IAAI,CAYvD"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Default LSP server path: env override, then lsp/ then root node_modules.
3
+ * Single source for "independent LSP" used only by sysmledgraph (see docs/PLAN_INDEPENDENT_LSP.md).
4
+ */
5
+ import { resolve } from 'path';
6
+ import { existsSync } from 'fs';
7
+ const LSP_RELATIVE_PATHS = [
8
+ 'lsp/node_modules/sysml-v2-lsp/dist/server/server.js',
9
+ 'node_modules/sysml-v2-lsp/dist/server/server.js',
10
+ ];
11
+ /**
12
+ * Resolved path to the LSP server script, or null if none found.
13
+ * Order: SYSMLLSP_SERVER_PATH (if set) → lsp/.../server.js → root node_modules/.../server.js.
14
+ */
15
+ export function getDefaultLspServerPath() {
16
+ const env = process.env.SYSMLLSP_SERVER_PATH?.trim();
17
+ if (env) {
18
+ const isAbsolute = env.startsWith('/') || /^[A-Za-z]:[/\\]/.test(env);
19
+ return isAbsolute ? env : resolve(process.cwd(), env);
20
+ }
21
+ const cwd = process.cwd();
22
+ for (const rel of LSP_RELATIVE_PATHS) {
23
+ const p = resolve(cwd, rel);
24
+ if (existsSync(p))
25
+ return p;
26
+ }
27
+ return null;
28
+ }
29
+ //# sourceMappingURL=lsp-server-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lsp-server-path.js","sourceRoot":"","sources":["../../../src/parser/lsp-server-path.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEhC,MAAM,kBAAkB,GAAG;IACzB,qDAAqD;IACrD,iDAAiD;CACzC,CAAC;AAEX;;;GAGG;AACH,MAAM,UAAU,uBAAuB;IACrC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAC;IACrD,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtE,OAAO,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,KAAK,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC5B,IAAI,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Normalized symbol/relation shape for the graph.
3
+ * Maps LSP DocumentSymbol → NormalizedSymbol. LSP is an external process (SYSMLLSP_SERVER_PATH); not bundled.
4
+ */
5
+ import type { NormalizedSymbol } from '../types.js';
6
+ /**
7
+ * Get symbols and relations for a single file. Tries LSP documentSymbol first when SYSMLLSP_SERVER_PATH is set;
8
+ * if LSP returns no symbols (or is unset), uses MCP getSymbols (one shared client per index run).
9
+ */
10
+ export declare function getSymbolsForFile(filePath: string, content?: string): Promise<NormalizedSymbol[]>;
11
+ /** Call after indexing to close the shared LSP and MCP clients. */
12
+ export declare function closeLspClient(): void;
13
+ //# sourceMappingURL=symbols.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbols.d.ts","sourceRoot":"","sources":["../../../src/parser/symbols.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAA0C,MAAM,aAAa,CAAC;AA2G5F;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAgCvG;AAUD,mEAAmE;AACnE,wBAAgB,cAAc,IAAI,IAAI,CAGrC"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Normalized symbol/relation shape for the graph.
3
+ * Maps LSP DocumentSymbol → NormalizedSymbol. LSP is an external process (SYSMLLSP_SERVER_PATH); not bundled.
4
+ */
5
+ import { readFile } from 'fs/promises';
6
+ import { symbolKindToNodeLabel, lspSymbolKindToNodeLabel } from '../symbol-to-graph/mapping.js';
7
+ import { getDocumentSymbolsFromLsp, closeLspClient as closeLspClientImpl, resolveLspServerPath, } from './lsp-client.js';
8
+ function flattenSymbols(symbols, parentQualifiedName) {
9
+ const out = [];
10
+ for (const sym of symbols) {
11
+ const qualifiedName = parentQualifiedName ? `${parentQualifiedName}::${sym.name}` : sym.name;
12
+ out.push({ sym, qualifiedName });
13
+ if (sym.children && sym.children.length > 0) {
14
+ out.push(...flattenSymbols(sym.children, qualifiedName));
15
+ }
16
+ }
17
+ return out;
18
+ }
19
+ /**
20
+ * Map LSP DocumentSymbol to NormalizedSymbol (label, props, relations).
21
+ * Uses detail (metaclass name) for label; builds IN_PACKAGE to parent.
22
+ */
23
+ function documentSymbolToNormalized(item, documentPath, parentQualifiedName) {
24
+ const label = symbolKindToNodeLabel(item.sym.detail ?? '') ??
25
+ (typeof item.sym.kind === 'number' ? lspSymbolKindToNodeLabel(item.sym.kind) : undefined);
26
+ if (!label)
27
+ return null;
28
+ const props = {
29
+ name: item.sym.name,
30
+ qualifiedName: item.qualifiedName,
31
+ path: documentPath,
32
+ };
33
+ const relations = [];
34
+ relations.push({ from: item.qualifiedName, to: documentPath, type: 'IN_DOCUMENT' });
35
+ const parent = parentQualifiedName ?? item.sym.containerName;
36
+ if (parent) {
37
+ relations.push({ from: item.qualifiedName, to: parent, type: 'IN_PACKAGE' });
38
+ }
39
+ return { label, props, relations };
40
+ }
41
+ let sharedMcpClient = null;
42
+ async function createMcpClient() {
43
+ const { createSysmlMcpClient, getMcpServerPath } = await import('./sysml-mcp-client.js');
44
+ const serverPath = getMcpServerPath();
45
+ if (!serverPath)
46
+ return null;
47
+ const client = await createSysmlMcpClient({ serverPath, initTimeout: 60000 });
48
+ return {
49
+ async getSymbols(content, uri, filePath) {
50
+ const { symbols } = await client.getSymbols(content, uri);
51
+ const normalized = [];
52
+ for (const sym of symbols ?? []) {
53
+ const label = symbolKindToNodeLabel(sym.kind ?? '');
54
+ if (!label)
55
+ continue;
56
+ const qualifiedName = sym.qualifiedName ?? sym.name;
57
+ const relations = [{ from: qualifiedName, to: filePath, type: 'IN_DOCUMENT' }];
58
+ if (sym.parent)
59
+ relations.push({ from: qualifiedName, to: sym.parent, type: 'IN_PACKAGE' });
60
+ normalized.push({
61
+ label,
62
+ props: { name: sym.name, qualifiedName, path: filePath },
63
+ relations,
64
+ });
65
+ }
66
+ return normalized;
67
+ },
68
+ close: () => {
69
+ client.close();
70
+ },
71
+ };
72
+ }
73
+ const MCP_RETRY_DELAY_MS = 1000;
74
+ /** Use shared MCP client for getSymbols (one init per index run). Returns [] if MCP unavailable or fails. Retries once on failure. */
75
+ async function getSymbolsFromMcp(filePath, content) {
76
+ const attempt = async () => {
77
+ if (!sharedMcpClient)
78
+ sharedMcpClient = await createMcpClient();
79
+ if (!sharedMcpClient)
80
+ return [];
81
+ const uri = `file:///${filePath.replace(/\\/g, '/')}`;
82
+ return await sharedMcpClient.getSymbols(content, uri, filePath);
83
+ };
84
+ try {
85
+ return await attempt();
86
+ }
87
+ catch {
88
+ await new Promise((r) => setTimeout(r, MCP_RETRY_DELAY_MS));
89
+ try {
90
+ return await attempt();
91
+ }
92
+ catch {
93
+ return [];
94
+ }
95
+ }
96
+ }
97
+ /** When set, log to stderr whether symbols came from LSP or MCP (per file). */
98
+ const DEBUG_SYMBOL_SOURCE = process.env.DEBUG_SYSMLEGRAPH_SYMBOLS === '1';
99
+ /**
100
+ * Get symbols and relations for a single file. Tries LSP documentSymbol first when SYSMLLSP_SERVER_PATH is set;
101
+ * if LSP returns no symbols (or is unset), uses MCP getSymbols (one shared client per index run).
102
+ */
103
+ export async function getSymbolsForFile(filePath, content) {
104
+ const text = content ?? await readFile(filePath, 'utf-8').catch(() => '');
105
+ const LSP_SYMBOL_TIMEOUT_MS = 20000;
106
+ if (resolveLspServerPath()) {
107
+ try {
108
+ const lspSymbols = await Promise.race([
109
+ getDocumentSymbolsFromLsp(filePath, text),
110
+ new Promise((_, rej) => setTimeout(() => rej(new Error('LSP documentSymbol timeout')), LSP_SYMBOL_TIMEOUT_MS)),
111
+ ]);
112
+ if (lspSymbols.length > 0) {
113
+ if (DEBUG_SYMBOL_SOURCE)
114
+ process.stderr.write(`[sysmledgraph] symbols from LSP: ${filePath}\n`);
115
+ const flat = flattenSymbols(lspSymbols, null);
116
+ const normalized = [];
117
+ for (const item of flat) {
118
+ const qualifiedName = item.sym.containerName
119
+ ? `${item.sym.containerName}::${item.sym.name}`
120
+ : item.qualifiedName;
121
+ const parentQ = qualifiedName.includes('::') ? qualifiedName.slice(0, qualifiedName.lastIndexOf('::')) : null;
122
+ const n = documentSymbolToNormalized({ sym: item.sym, qualifiedName }, filePath, parentQ);
123
+ if (n)
124
+ normalized.push(n);
125
+ }
126
+ return normalized;
127
+ }
128
+ }
129
+ catch {
130
+ // LSP failed or unavailable; fall through to MCP
131
+ }
132
+ }
133
+ const mcpSymbols = await getSymbolsFromMcp(filePath, text);
134
+ if (DEBUG_SYMBOL_SOURCE)
135
+ process.stderr.write(`[sysmledgraph] symbols from MCP: ${filePath} (${mcpSymbols.length})\n`);
136
+ return mcpSymbols;
137
+ }
138
+ /** Close shared MCP client (used when LSP returned no symbols). */
139
+ function closeMcpClient() {
140
+ if (sharedMcpClient) {
141
+ sharedMcpClient.close();
142
+ sharedMcpClient = null;
143
+ }
144
+ }
145
+ /** Call after indexing to close the shared LSP and MCP clients. */
146
+ export function closeLspClient() {
147
+ closeMcpClient();
148
+ closeLspClientImpl();
149
+ }
150
+ //# sourceMappingURL=symbols.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbols.js","sourceRoot":"","sources":["../../../src/parser/symbols.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * SysML MCP client: spawns sysml-v2-lsp MCP server and exposes tools as a callable API.
3
+ * Use this when you want to call parse, validate, getSymbols, etc. from code (e.g. tests or scripts).
4
+ *
5
+ * Requires sysml-v2-lsp as a dependency. Uses the same Content-Length framing as the MCP server.
6
+ */
7
+ /** Resolved path to mcpServer.js (from sysml-v2-lsp package). */
8
+ export declare function getMcpServerPath(): string;
9
+ export interface SysmlMcpClientOptions {
10
+ /** Override path to mcpServer.js. Default: from sysml-v2-lsp package. */
11
+ serverPath?: string;
12
+ /** Timeout in ms for initialize. Default 20000. */
13
+ initTimeout?: number;
14
+ /** Log raw stdout/stderr for debugging. */
15
+ debug?: boolean;
16
+ }
17
+ export interface ParseResult {
18
+ uri: string;
19
+ symbolCount: number;
20
+ errorCount: number;
21
+ timing?: {
22
+ lex: number;
23
+ parse: number;
24
+ };
25
+ errors?: Array<{
26
+ line: number;
27
+ column: number;
28
+ message: string;
29
+ length?: number;
30
+ }>;
31
+ topLevelElements?: string[];
32
+ }
33
+ export interface ValidateResult {
34
+ valid: boolean;
35
+ syntaxErrors: Array<{
36
+ line: number;
37
+ column: number;
38
+ message: string;
39
+ length?: number;
40
+ }>;
41
+ semanticIssues: Array<{
42
+ line: number;
43
+ column: number;
44
+ message: string;
45
+ severity?: string;
46
+ code?: string;
47
+ }>;
48
+ totalIssues: number;
49
+ }
50
+ export interface SymbolInfo {
51
+ name: string;
52
+ kind: string;
53
+ qualifiedName?: string;
54
+ documentation?: string;
55
+ parent?: string;
56
+ location?: {
57
+ uri: string;
58
+ range: {
59
+ start: {
60
+ line: number;
61
+ character: number;
62
+ };
63
+ end: {
64
+ line: number;
65
+ character: number;
66
+ };
67
+ };
68
+ };
69
+ }
70
+ export interface GetSymbolsResult {
71
+ count: number;
72
+ symbols: SymbolInfo[];
73
+ }
74
+ /**
75
+ * Client that talks to sysml-v2-lsp MCP server over stdio.
76
+ * Call createSysmlMcpClient(), then use the returned methods, then close().
77
+ */
78
+ export declare function createSysmlMcpClient(options?: SysmlMcpClientOptions): Promise<{
79
+ parse: (code: string, uri?: string) => Promise<ParseResult>;
80
+ validate: (code: string, uri?: string) => Promise<ValidateResult>;
81
+ getDiagnostics: (code: string, uri?: string) => Promise<{
82
+ uri: string;
83
+ diagnostics: unknown[];
84
+ summary?: Record<string, number>;
85
+ }>;
86
+ validateFile: (code: string, uri?: string) => Promise<ValidateResult>;
87
+ getSymbols: (code: string, uri?: string) => Promise<GetSymbolsResult>;
88
+ getDefinition: (name: string, code: string, uri?: string) => Promise<{
89
+ found: boolean;
90
+ count: number;
91
+ symbols: SymbolInfo[];
92
+ }>;
93
+ getReferences: (name: string, code: string, uri?: string) => Promise<{
94
+ name: string;
95
+ referenceCount: number;
96
+ references: SymbolInfo[];
97
+ }>;
98
+ getHierarchy: (name: string, code: string, uri?: string) => Promise<{
99
+ element: unknown;
100
+ ancestors: unknown[];
101
+ children: unknown[];
102
+ }>;
103
+ getModelSummary: (code: string, uri?: string) => Promise<unknown>;
104
+ getComplexity: (code: string, uri?: string) => Promise<unknown>;
105
+ preview: (code: string, uri?: string) => Promise<unknown>;
106
+ callTool: (name: string, args: Record<string, unknown>) => Promise<unknown>;
107
+ close: () => void;
108
+ }>;
109
+ //# sourceMappingURL=sysml-mcp-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sysml-mcp-client.d.ts","sourceRoot":"","sources":["../../../src/parser/sysml-mcp-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,iEAAiE;AACjE,wBAAgB,gBAAgB,IAAI,MAAM,CAQzC;AA+DD,MAAM,WAAW,qBAAqB;IACpC,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnF,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxF,cAAc,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3G,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE;YAAE,KAAK,EAAE;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,SAAS,EAAE,MAAM,CAAA;aAAE,CAAC;YAAC,GAAG,EAAE;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,SAAS,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,CAAA;KAAE,CAAC;CAC7H;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC;IACvF,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5D,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IAClE,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,OAAO,EAAE,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC,CAAC;IACnI,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IACtE,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACtE,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,UAAU,EAAE,CAAA;KAAE,CAAC,CAAC;IAC/H,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,UAAU,EAAE,CAAA;KAAE,CAAC,CAAC;IACzI,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,OAAO,EAAE,CAAC;QAAC,QAAQ,EAAE,OAAO,EAAE,CAAA;KAAE,CAAC,CAAC;IACrI,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAClE,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAChE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1D,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5E,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC,CAgHD"}