@shapeshift-labs/frontier-lang-compiler 0.2.41 → 0.2.42

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 (658) hide show
  1. package/README.md +100 -0
  2. package/bench/compile-suite.mjs +31 -0
  3. package/bench/native-adapters.mjs +32 -0
  4. package/bench/native-import-suite.mjs +79 -0
  5. package/bench/native-matrix-suite.mjs +64 -0
  6. package/bench/native-transform-suite.mjs +125 -0
  7. package/bench/smoke.mjs +80 -375
  8. package/bench/source-change-suite.mjs +111 -0
  9. package/dist/coverage-matrix-profiles.js +19 -0
  10. package/dist/declarations/adapter-coverage.d.ts +181 -0
  11. package/dist/declarations/compile.d.ts +110 -0
  12. package/dist/declarations/import-adapter-core.d.ts +233 -0
  13. package/dist/declarations/import-adapter-options-native.d.ts +185 -0
  14. package/dist/declarations/import-adapter-options-platform.d.ts +204 -0
  15. package/dist/declarations/language-adapter-package-contracts.d.ts +190 -0
  16. package/dist/declarations/native-diff.d.ts +240 -0
  17. package/dist/declarations/native-import-contracts.d.ts +211 -0
  18. package/dist/declarations/native-import-coverage.d.ts +107 -0
  19. package/dist/declarations/native-import-losses.d.ts +199 -0
  20. package/dist/declarations/native-parser-features.d.ts +227 -0
  21. package/dist/declarations/native-parser-formats.d.ts +132 -0
  22. package/dist/declarations/native-project-admission.d.ts +160 -0
  23. package/dist/declarations/native-project.d.ts +209 -0
  24. package/dist/declarations/projection-coverage.d.ts +146 -0
  25. package/dist/declarations/projection-readiness.d.ts +115 -0
  26. package/dist/declarations/roundtrip.d.ts +200 -0
  27. package/dist/declarations/runtime.d.ts +135 -0
  28. package/dist/declarations/semantic-history.d.ts +188 -0
  29. package/dist/declarations/semantic-merge-conflicts.d.ts +82 -0
  30. package/dist/declarations/semantic-patch-bundle.d.ts +210 -0
  31. package/dist/declarations/semantic-sidecar-admission.d.ts +61 -0
  32. package/dist/declarations/semantic-sidecar.d.ts +317 -0
  33. package/dist/declarations/semantic-slice.d.ts +228 -0
  34. package/dist/declarations/source-preservation.d.ts +126 -0
  35. package/dist/declarations/target-adapters.d.ts +138 -0
  36. package/dist/declarations/universal-capability.d.ts +148 -0
  37. package/dist/declarations/universal-dialects.d.ts +242 -0
  38. package/dist/index.d.ts +28 -2570
  39. package/dist/index.js +76 -16575
  40. package/dist/internal/index-impl/ExternalSemanticIndexFormats.js +8 -0
  41. package/dist/internal/index-impl/FrontierCompileTargets.js +7 -0
  42. package/dist/internal/index-impl/NativeImportFeatureEvidencePolicies.js +111 -0
  43. package/dist/internal/index-impl/NativeImportLossKinds.js +24 -0
  44. package/dist/internal/index-impl/NativeImportReadinessBySeverity.js +6 -0
  45. package/dist/internal/index-impl/NativeImportRoundtripReadinessStatuses.js +7 -0
  46. package/dist/internal/index-impl/NativeImportTaxonomyKinds.js +19 -0
  47. package/dist/internal/index-impl/adapterCoverageCapabilityRow.js +13 -0
  48. package/dist/internal/index-impl/adapterCoverageSnapshotFromSummary.js +13 -0
  49. package/dist/internal/index-impl/adapterCoverageSourcePreservation.js +6 -0
  50. package/dist/internal/index-impl/adapterDiagnosticToLoss.js +23 -0
  51. package/dist/internal/index-impl/adapterDiagnosticsEvidence.js +27 -0
  52. package/dist/internal/index-impl/addLspSemanticTokens.js +32 -0
  53. package/dist/internal/index-impl/addLspSymbol.js +44 -0
  54. package/dist/internal/index-impl/addSet.js +5 -0
  55. package/dist/internal/index-impl/attachExternalOwnership.js +79 -0
  56. package/dist/internal/index-impl/attachNativeChangeRegionProjectionMetadata.js +13 -0
  57. package/dist/internal/index-impl/attachNativeImportLossSummary.js +11 -0
  58. package/dist/internal/index-impl/canonicalTargets.js +7 -0
  59. package/dist/internal/index-impl/clangAstChildEntries.js +9 -0
  60. package/dist/internal/index-impl/clangAstDeclaration.js +44 -0
  61. package/dist/internal/index-impl/clangAstKind.js +7 -0
  62. package/dist/internal/index-impl/clangAstNodeValue.js +7 -0
  63. package/dist/internal/index-impl/clangAstRoot.js +14 -0
  64. package/dist/internal/index-impl/clangDeclarationAction.js +7 -0
  65. package/dist/internal/index-impl/clangDeclarationName.js +10 -0
  66. package/dist/internal/index-impl/clangIncludePath.js +8 -0
  67. package/dist/internal/index-impl/clangLiteralValue.js +6 -0
  68. package/dist/internal/index-impl/clangLocPosition.js +12 -0
  69. package/dist/internal/index-impl/clangLocationKind.js +8 -0
  70. package/dist/internal/index-impl/clangPreprocessorKind.js +3 -0
  71. package/dist/internal/index-impl/clangPreprocessorRecords.js +8 -0
  72. package/dist/internal/index-impl/clangTypeName.js +9 -0
  73. package/dist/internal/index-impl/classifyNativeImportReadiness.js +9 -0
  74. package/dist/internal/index-impl/classifyNativeImportRoundtripReadiness.js +129 -0
  75. package/dist/internal/index-impl/compileFrontierDocument.js +28 -0
  76. package/dist/internal/index-impl/compileFrontierSource.js +8 -0
  77. package/dist/internal/index-impl/compileNativeSource.js +186 -0
  78. package/dist/internal/index-impl/compileTargetLanguage.js +5 -0
  79. package/dist/internal/index-impl/coverageMatrixContext.js +20 -0
  80. package/dist/internal/index-impl/createAstNormalizationContext.js +14 -0
  81. package/dist/internal/index-impl/createBabelNativeImporterAdapter.js +18 -0
  82. package/dist/internal/index-impl/createCSharpRoslynNativeImporterAdapter.js +68 -0
  83. package/dist/internal/index-impl/createClangAstNativeImporterAdapter.js +59 -0
  84. package/dist/internal/index-impl/createEstreeNativeImporterAdapter.js +12 -0
  85. package/dist/internal/index-impl/createGoAstNativeImporterAdapter.js +63 -0
  86. package/dist/internal/index-impl/createJavaAstNativeImporterAdapter.js +66 -0
  87. package/dist/internal/index-impl/createKotlinPsiNativeImporterAdapter.js +73 -0
  88. package/dist/internal/index-impl/createLightweightNativeImport.js +154 -0
  89. package/dist/internal/index-impl/createNativeImportCoverageMatrix.js +5 -0
  90. package/dist/internal/index-impl/createNativeImportFromCSharpRoslyn.js +39 -0
  91. package/dist/internal/index-impl/createNativeImportFromClangAst.js +36 -0
  92. package/dist/internal/index-impl/createNativeImportFromGoAst.js +35 -0
  93. package/dist/internal/index-impl/createNativeImportFromJavaAst.js +39 -0
  94. package/dist/internal/index-impl/createNativeImportFromKotlinPsi.js +47 -0
  95. package/dist/internal/index-impl/createNativeImportFromPythonAst.js +30 -0
  96. package/dist/internal/index-impl/createNativeImportFromRustSyn.js +30 -0
  97. package/dist/internal/index-impl/createNativeImportFromSwiftSyntax.js +37 -0
  98. package/dist/internal/index-impl/createNativeImportFromSyntaxAst.js +36 -0
  99. package/dist/internal/index-impl/createNativeImportFromTreeSitter.js +125 -0
  100. package/dist/internal/index-impl/createNativeImportFromTypeScriptAst.js +24 -0
  101. package/dist/internal/index-impl/createNativeImportResultContract.js +78 -0
  102. package/dist/internal/index-impl/createNativeParserAstFormatMatrix.js +5 -0
  103. package/dist/internal/index-impl/createNativeParserFeatureMatrix.js +5 -0
  104. package/dist/internal/index-impl/createNativeProjectImportResult.js +126 -0
  105. package/dist/internal/index-impl/createNativeRoundtripEvidence.js +117 -0
  106. package/dist/internal/index-impl/createNativeSourcePreservation.js +64 -0
  107. package/dist/internal/index-impl/createProjectImportAdmissionRecord.js +91 -0
  108. package/dist/internal/index-impl/createProjectionReadinessMatrix.js +5 -0
  109. package/dist/internal/index-impl/createProjectionTargetLossMatrix.js +5 -0
  110. package/dist/internal/index-impl/createPythonAstNativeImporterAdapter.js +52 -0
  111. package/dist/internal/index-impl/createRustSynNativeImporterAdapter.js +56 -0
  112. package/dist/internal/index-impl/createSemanticImportSidecar.js +105 -0
  113. package/dist/internal/index-impl/createSemanticImportSidecarAdmission.js +160 -0
  114. package/dist/internal/index-impl/createSemanticSlice.js +137 -0
  115. package/dist/internal/index-impl/createSwiftSyntaxNativeImporterAdapter.js +62 -0
  116. package/dist/internal/index-impl/createTreeSitterNativeImporterAdapter.js +58 -0
  117. package/dist/internal/index-impl/createTypeScriptCompilerNativeImporterAdapter.js +45 -0
  118. package/dist/internal/index-impl/createUniversalAstFromDocument.js +15 -0
  119. package/dist/internal/index-impl/createUniversalCapabilityMatrix.js +5 -0
  120. package/dist/internal/index-impl/csharpEvidenceSummary.js +18 -0
  121. package/dist/internal/index-impl/csharpGeneratedCodeLoss.js +20 -0
  122. package/dist/internal/index-impl/csharpGeneratedCodeMarker.js +16 -0
  123. package/dist/internal/index-impl/csharpGeneratedSourcePath.js +3 -0
  124. package/dist/internal/index-impl/csharpRoslynChildEntries.js +18 -0
  125. package/dist/internal/index-impl/csharpRoslynChildWithParent.js +6 -0
  126. package/dist/internal/index-impl/csharpRoslynDeclarationName.js +11 -0
  127. package/dist/internal/index-impl/csharpRoslynDeclarations.js +53 -0
  128. package/dist/internal/index-impl/csharpRoslynDirectiveKind.js +3 -0
  129. package/dist/internal/index-impl/csharpRoslynHasBody.js +3 -0
  130. package/dist/internal/index-impl/csharpRoslynKind.js +11 -0
  131. package/dist/internal/index-impl/csharpRoslynLiteralValue.js +5 -0
  132. package/dist/internal/index-impl/csharpRoslynMethodLikeKind.js +7 -0
  133. package/dist/internal/index-impl/csharpRoslynModifierNames.js +16 -0
  134. package/dist/internal/index-impl/csharpRoslynName.js +13 -0
  135. package/dist/internal/index-impl/csharpRoslynNodeValue.js +7 -0
  136. package/dist/internal/index-impl/csharpRoslynOperatorName.js +8 -0
  137. package/dist/internal/index-impl/csharpRoslynPosition.js +27 -0
  138. package/dist/internal/index-impl/csharpRoslynPositionKind.js +6 -0
  139. package/dist/internal/index-impl/csharpRoslynProblemNode.js +14 -0
  140. package/dist/internal/index-impl/csharpRoslynRecoveredKind.js +5 -0
  141. package/dist/internal/index-impl/csharpRoslynRoot.js +15 -0
  142. package/dist/internal/index-impl/csharpRoslynTypeDeclarationKind.js +8 -0
  143. package/dist/internal/index-impl/csharpRoslynTypeDeclarationSymbolKind.js +5 -0
  144. package/dist/internal/index-impl/csharpRoslynTypeName.js +19 -0
  145. package/dist/internal/index-impl/csharpRoslynUsingPath.js +5 -0
  146. package/dist/internal/index-impl/csharpRoslynVariableNames.js +10 -0
  147. package/dist/internal/index-impl/declarationRecord.js +11 -0
  148. package/dist/internal/index-impl/declarationSemanticCoverage.js +10 -0
  149. package/dist/internal/index-impl/diffNativeOwnershipRegions.js +19 -0
  150. package/dist/internal/index-impl/diffNativeSourceImports.js +166 -0
  151. package/dist/internal/index-impl/diffNativeSources.js +25 -0
  152. package/dist/internal/index-impl/diffNativeSymbols.js +41 -0
  153. package/dist/internal/index-impl/effectiveAdapterExactness.js +6 -0
  154. package/dist/internal/index-impl/effectiveNativeImporterAdapterCoverage.js +21 -0
  155. package/dist/internal/index-impl/emitForTarget.js +4 -0
  156. package/dist/internal/index-impl/emitForTargetWithSourceMap.js +11 -0
  157. package/dist/internal/index-impl/ensureTrailingNewline.js +4 -0
  158. package/dist/internal/index-impl/expandSemanticSliceSelection.js +51 -0
  159. package/dist/internal/index-impl/externalDiagnosticFact.js +22 -0
  160. package/dist/internal/index-impl/externalDiagnosticLoss.js +20 -0
  161. package/dist/internal/index-impl/externalDiagnosticSeverity.js +7 -0
  162. package/dist/internal/index-impl/externalDocument.js +12 -0
  163. package/dist/internal/index-impl/externalFact.js +10 -0
  164. package/dist/internal/index-impl/externalLanguageNameByNumber.js +23 -0
  165. package/dist/internal/index-impl/externalOccurrence.js +13 -0
  166. package/dist/internal/index-impl/externalRelation.js +10 -0
  167. package/dist/internal/index-impl/externalRelationPredicateForOccurrence.js +8 -0
  168. package/dist/internal/index-impl/externalSemanticBase.js +15 -0
  169. package/dist/internal/index-impl/externalSemanticCoverageLoss.js +17 -0
  170. package/dist/internal/index-impl/externalSemanticEvidence.js +16 -0
  171. package/dist/internal/index-impl/externalSemanticSourceMapMappings.js +26 -0
  172. package/dist/internal/index-impl/externalSymbol.js +14 -0
  173. package/dist/internal/index-impl/externalSymbolKindByNumber.js +32 -0
  174. package/dist/internal/index-impl/fileLevelNativeChangeRegion.js +23 -0
  175. package/dist/internal/index-impl/findSemanticImportRegion.js +6 -0
  176. package/dist/internal/index-impl/freezeNativeImporterAdapterCoverageSnapshot.js +13 -0
  177. package/dist/internal/index-impl/getNativeImportFeatureEvidencePolicy.js +5 -0
  178. package/dist/internal/index-impl/getNativeParserAstFormatProfile.js +4 -0
  179. package/dist/internal/index-impl/goAstChildEntries.js +23 -0
  180. package/dist/internal/index-impl/goAstDeclarationName.js +9 -0
  181. package/dist/internal/index-impl/goAstDeclarations.js +30 -0
  182. package/dist/internal/index-impl/goAstIdentName.js +5 -0
  183. package/dist/internal/index-impl/goAstImportPath.js +7 -0
  184. package/dist/internal/index-impl/goAstKind.js +15 -0
  185. package/dist/internal/index-impl/goAstLiteralValue.js +5 -0
  186. package/dist/internal/index-impl/goAstNodeValue.js +7 -0
  187. package/dist/internal/index-impl/goAstPackageName.js +5 -0
  188. package/dist/internal/index-impl/goAstPosition.js +30 -0
  189. package/dist/internal/index-impl/goAstPositionKind.js +6 -0
  190. package/dist/internal/index-impl/goAstReceiverName.js +8 -0
  191. package/dist/internal/index-impl/goAstRoot.js +12 -0
  192. package/dist/internal/index-impl/goAstTokenName.js +6 -0
  193. package/dist/internal/index-impl/goAstTypeName.js +27 -0
  194. package/dist/internal/index-impl/goAstTypeSpecSymbolKind.js +8 -0
  195. package/dist/internal/index-impl/goAstValueSpecName.js +4 -0
  196. package/dist/internal/index-impl/goAstValueSpecNames.js +7 -0
  197. package/dist/internal/index-impl/goBadAstKind.js +3 -0
  198. package/dist/internal/index-impl/goGeneratedCodeMarker.js +7 -0
  199. package/dist/internal/index-impl/goReceiverFieldCount.js +4 -0
  200. package/dist/internal/index-impl/goTypeEvidenceSummary.js +9 -0
  201. package/dist/internal/index-impl/hasNativeExactAstEvidence.js +13 -0
  202. package/dist/internal/index-impl/hashNativeSpanText.js +6 -0
  203. package/dist/internal/index-impl/identifierName.js +9 -0
  204. package/dist/internal/index-impl/ignoredCSharpRoslynField.js +31 -0
  205. package/dist/internal/index-impl/ignoredClangAstField.js +19 -0
  206. package/dist/internal/index-impl/ignoredGoAstField.js +23 -0
  207. package/dist/internal/index-impl/ignoredJavaAstField.js +29 -0
  208. package/dist/internal/index-impl/ignoredKotlinPsiField.js +26 -0
  209. package/dist/internal/index-impl/ignoredPythonAstField.js +17 -0
  210. package/dist/internal/index-impl/ignoredRustSynField.js +11 -0
  211. package/dist/internal/index-impl/ignoredSwiftSyntaxField.js +27 -0
  212. package/dist/internal/index-impl/ignoredSyntaxField.js +15 -0
  213. package/dist/internal/index-impl/importExternalSemanticIndex.js +141 -0
  214. package/dist/internal/index-impl/importNativeProject.js +26 -0
  215. package/dist/internal/index-impl/importNativeSource.js +317 -0
  216. package/dist/internal/index-impl/inferExternalSemanticIndexFormat.js +46 -0
  217. package/dist/internal/index-impl/inferredAdapterCoverageNotes.js +8 -0
  218. package/dist/internal/index-impl/inferredAdapterExactness.js +5 -0
  219. package/dist/internal/index-impl/inferredSemanticCoverageLevel.js +5 -0
  220. package/dist/internal/index-impl/isCSharpRoslynNode.js +4 -0
  221. package/dist/internal/index-impl/isClangAstNode.js +4 -0
  222. package/dist/internal/index-impl/isGoAstNode.js +4 -0
  223. package/dist/internal/index-impl/isJavaAstNode.js +4 -0
  224. package/dist/internal/index-impl/isKotlinPsiNode.js +4 -0
  225. package/dist/internal/index-impl/isNativeSourceImportResult.js +3 -0
  226. package/dist/internal/index-impl/isPythonAstNode.js +4 -0
  227. package/dist/internal/index-impl/isRustSynAstNode.js +4 -0
  228. package/dist/internal/index-impl/isSwiftSyntaxNode.js +4 -0
  229. package/dist/internal/index-impl/isSyntaxAstNode.js +3 -0
  230. package/dist/internal/index-impl/javaAnnotationProcessingSummary.js +13 -0
  231. package/dist/internal/index-impl/javaAstChildEntries.js +18 -0
  232. package/dist/internal/index-impl/javaAstChildWithParent.js +6 -0
  233. package/dist/internal/index-impl/javaAstDeclarationName.js +11 -0
  234. package/dist/internal/index-impl/javaAstDeclarations.js +35 -0
  235. package/dist/internal/index-impl/javaAstFieldNames.js +7 -0
  236. package/dist/internal/index-impl/javaAstHasBody.js +3 -0
  237. package/dist/internal/index-impl/javaAstImportPath.js +8 -0
  238. package/dist/internal/index-impl/javaAstKind.js +12 -0
  239. package/dist/internal/index-impl/javaAstLiteralValue.js +5 -0
  240. package/dist/internal/index-impl/javaAstModifierNames.js +16 -0
  241. package/dist/internal/index-impl/javaAstName.js +14 -0
  242. package/dist/internal/index-impl/javaAstNodeValue.js +8 -0
  243. package/dist/internal/index-impl/javaAstPackageName.js +5 -0
  244. package/dist/internal/index-impl/javaAstPosition.js +32 -0
  245. package/dist/internal/index-impl/javaAstPositionKind.js +7 -0
  246. package/dist/internal/index-impl/javaAstRoot.js +14 -0
  247. package/dist/internal/index-impl/javaAstTypeName.js +22 -0
  248. package/dist/internal/index-impl/javaBindingEvidenceSummary.js +10 -0
  249. package/dist/internal/index-impl/javaGeneratedCodeLoss.js +20 -0
  250. package/dist/internal/index-impl/javaGeneratedCodeMarker.js +16 -0
  251. package/dist/internal/index-impl/javaLombokAnnotationMarker.js +6 -0
  252. package/dist/internal/index-impl/javaPathEvidenceSummary.js +14 -0
  253. package/dist/internal/index-impl/javaProblemNode.js +3 -0
  254. package/dist/internal/index-impl/javaRecoveredAstKind.js +4 -0
  255. package/dist/internal/index-impl/javaTypeDeclarationKind.js +7 -0
  256. package/dist/internal/index-impl/javaTypeDeclarationSymbolKind.js +5 -0
  257. package/dist/internal/index-impl/kotlinCompilerPluginAnnotationNode.js +5 -0
  258. package/dist/internal/index-impl/kotlinContractNode.js +3 -0
  259. package/dist/internal/index-impl/kotlinCoroutineNode.js +8 -0
  260. package/dist/internal/index-impl/kotlinEvidenceSummary.js +21 -0
  261. package/dist/internal/index-impl/kotlinExpectActualNode.js +5 -0
  262. package/dist/internal/index-impl/kotlinGeneratedCodeLoss.js +22 -0
  263. package/dist/internal/index-impl/kotlinGeneratedCodeMarker.js +6 -0
  264. package/dist/internal/index-impl/kotlinGeneratedSourcePath.js +3 -0
  265. package/dist/internal/index-impl/kotlinPsiAnnotationNames.js +10 -0
  266. package/dist/internal/index-impl/kotlinPsiChildEntries.js +18 -0
  267. package/dist/internal/index-impl/kotlinPsiChildWithParent.js +6 -0
  268. package/dist/internal/index-impl/kotlinPsiDeclarationName.js +14 -0
  269. package/dist/internal/index-impl/kotlinPsiDeclarations.js +37 -0
  270. package/dist/internal/index-impl/kotlinPsiHasBody.js +3 -0
  271. package/dist/internal/index-impl/kotlinPsiImportPath.js +8 -0
  272. package/dist/internal/index-impl/kotlinPsiKind.js +13 -0
  273. package/dist/internal/index-impl/kotlinPsiModifiers.js +22 -0
  274. package/dist/internal/index-impl/kotlinPsiName.js +14 -0
  275. package/dist/internal/index-impl/kotlinPsiNodeValue.js +7 -0
  276. package/dist/internal/index-impl/kotlinPsiPackageName.js +8 -0
  277. package/dist/internal/index-impl/kotlinPsiPosition.js +27 -0
  278. package/dist/internal/index-impl/kotlinPsiPositionKind.js +6 -0
  279. package/dist/internal/index-impl/kotlinPsiProblemNode.js +10 -0
  280. package/dist/internal/index-impl/kotlinPsiRecoveredKind.js +5 -0
  281. package/dist/internal/index-impl/kotlinPsiRoot.js +15 -0
  282. package/dist/internal/index-impl/kotlinPsiTypeDeclarationKind.js +5 -0
  283. package/dist/internal/index-impl/kotlinPsiTypeDeclarationSymbolKind.js +8 -0
  284. package/dist/internal/index-impl/kotlinPsiTypeName.js +18 -0
  285. package/dist/internal/index-impl/kotlinPsiVariableNames.js +7 -0
  286. package/dist/internal/index-impl/kotlinScriptLoss.js +22 -0
  287. package/dist/internal/index-impl/kotlinUnsupportedSemanticLoss.js +23 -0
  288. package/dist/internal/index-impl/lineColumnForOffset.js +15 -0
  289. package/dist/internal/index-impl/literalSyntaxValue.js +4 -0
  290. package/dist/internal/index-impl/lossSeverityRank.js +6 -0
  291. package/dist/internal/index-impl/lspSymbolKindByNumber.js +19 -0
  292. package/dist/internal/index-impl/mapDiffSymbols.js +39 -0
  293. package/dist/internal/index-impl/matchingNativeTargetProjectionAdapter.js +4 -0
  294. package/dist/internal/index-impl/maxSemanticCoverageLevel.js +6 -0
  295. package/dist/internal/index-impl/mergeNativeLosses.js +12 -0
  296. package/dist/internal/index-impl/mergeSemanticIndexes.js +19 -0
  297. package/dist/internal/index-impl/mergeSemanticSliceSymbols.js +16 -0
  298. package/dist/internal/index-impl/missingInjectedParserResult.js +51 -0
  299. package/dist/internal/index-impl/nameFromExternalSymbol.js +10 -0
  300. package/dist/internal/index-impl/namedDeclaration.js +5 -0
  301. package/dist/internal/index-impl/nativeAstNodes.js +4 -0
  302. package/dist/internal/index-impl/nativeChangeMappingTouchesRegion.js +17 -0
  303. package/dist/internal/index-impl/nativeChangeProjectionEndpoint.js +28 -0
  304. package/dist/internal/index-impl/nativeChangeProjectionSourceMapLinks.js +33 -0
  305. package/dist/internal/index-impl/nativeChangeSpans.js +37 -0
  306. package/dist/internal/index-impl/nativeChangeSymbolTouchesRegion.js +10 -0
  307. package/dist/internal/index-impl/nativeChangeTouchedSymbol.js +21 -0
  308. package/dist/internal/index-impl/nativeChangedRegionProjectionAction.js +7 -0
  309. package/dist/internal/index-impl/nativeChangedRegionProjectionMetadata.js +49 -0
  310. package/dist/internal/index-impl/nativeChangedRegionProjectionSpanMetadata.js +12 -0
  311. package/dist/internal/index-impl/nativeCompileSourceLanguage.js +10 -0
  312. package/dist/internal/index-impl/nativeCompileTarget.js +10 -0
  313. package/dist/internal/index-impl/nativeDiffSymbolChanged.js +7 -0
  314. package/dist/internal/index-impl/nativeDiffSymbolKey.js +7 -0
  315. package/dist/internal/index-impl/nativeFeatureEvidenceRiskRank.js +6 -0
  316. package/dist/internal/index-impl/nativeImportCategoryForLossKind.js +16 -0
  317. package/dist/internal/index-impl/nativeImportEntries.js +4 -0
  318. package/dist/internal/index-impl/nativeImportFeatureEvidenceHasKey.js +5 -0
  319. package/dist/internal/index-impl/nativeImportFeatureEvidenceIds.js +10 -0
  320. package/dist/internal/index-impl/nativeImportFeatureEvidencePolicy.js +14 -0
  321. package/dist/internal/index-impl/nativeImportFeatureEvidenceReasons.js +8 -0
  322. package/dist/internal/index-impl/nativeImportFeatureEvidenceValue.js +11 -0
  323. package/dist/internal/index-impl/nativeImportFeatureEvidenceValuePresent.js +7 -0
  324. package/dist/internal/index-impl/nativeImportHasExactAstCoverage.js +5 -0
  325. package/dist/internal/index-impl/nativeImportProjectionContext.js +40 -0
  326. package/dist/internal/index-impl/nativeImportReadiness.js +6 -0
  327. package/dist/internal/index-impl/nativeImportReadinessReasons.js +16 -0
  328. package/dist/internal/index-impl/nativeImportRoundtripParser.js +10 -0
  329. package/dist/internal/index-impl/nativeImportRoundtripReasons.js +22 -0
  330. package/dist/internal/index-impl/nativeImportSourcePreservationRecord.js +6 -0
  331. package/dist/internal/index-impl/nativeImportSourceText.js +6 -0
  332. package/dist/internal/index-impl/nativeImporterAdapterCapabilityEvidence.js +59 -0
  333. package/dist/internal/index-impl/nativeImporterAdapterCoverage.js +12 -0
  334. package/dist/internal/index-impl/nativeJavaScriptImporterDeps.js +12 -0
  335. package/dist/internal/index-impl/nativeNodeId.js +8 -0
  336. package/dist/internal/index-impl/nativeProjectionDeclarationKind.js +12 -0
  337. package/dist/internal/index-impl/nativeProjectionDeclarations.js +48 -0
  338. package/dist/internal/index-impl/nativeProjectionImportOnlySymbol.js +5 -0
  339. package/dist/internal/index-impl/nativeProjectionKindForNode.js +12 -0
  340. package/dist/internal/index-impl/nativeProjectionLineComment.js +5 -0
  341. package/dist/internal/index-impl/nativeProjectionLoss.js +23 -0
  342. package/dist/internal/index-impl/nativeProjectionSourceCandidate.js +22 -0
  343. package/dist/internal/index-impl/nativeProjectionStubHeader.js +11 -0
  344. package/dist/internal/index-impl/nativeProjectionStubLosses.js +36 -0
  345. package/dist/internal/index-impl/nativeSourceChangeReasons.js +11 -0
  346. package/dist/internal/index-impl/nativeSourceChangeSummary.js +13 -0
  347. package/dist/internal/index-impl/nativeSourceCompileDeclarationGeneratedSpan.js +25 -0
  348. package/dist/internal/index-impl/nativeSourceCompileDeclarationMappings.js +31 -0
  349. package/dist/internal/index-impl/nativeSourceCompileEvidence.js +30 -0
  350. package/dist/internal/index-impl/nativeSourceCompileFileMapping.js +21 -0
  351. package/dist/internal/index-impl/nativeSourceCompileFullGeneratedSpan.js +16 -0
  352. package/dist/internal/index-impl/nativeSourceCompileGeneratedSpanForOffset.js +17 -0
  353. package/dist/internal/index-impl/nativeSourceCompileGeneratedSpanFromSource.js +13 -0
  354. package/dist/internal/index-impl/nativeSourceCompileMapTarget.js +6 -0
  355. package/dist/internal/index-impl/nativeSourceCompilePreservedMappings.js +51 -0
  356. package/dist/internal/index-impl/nativeSourceCompileSourceMaps.js +41 -0
  357. package/dist/internal/index-impl/nativeSourceCompileTargetCoverage.js +21 -0
  358. package/dist/internal/index-impl/nativeSourceCompileTargetExtension.js +10 -0
  359. package/dist/internal/index-impl/nativeSourceCompileTargetLoss.js +32 -0
  360. package/dist/internal/index-impl/nativeSourceCompileTargetLosses.js +43 -0
  361. package/dist/internal/index-impl/nativeSourceCompileTargetPath.js +9 -0
  362. package/dist/internal/index-impl/nativeTargetProjectionAdapterEvidence.js +26 -0
  363. package/dist/internal/index-impl/nativeTargetProjectionAdapterMatches.js +16 -0
  364. package/dist/internal/index-impl/nativeTargetProjectionDiagnosticToLoss.js +22 -0
  365. package/dist/internal/index-impl/normalizeAdapterDiagnostics.js +28 -0
  366. package/dist/internal/index-impl/normalizeArray.js +4 -0
  367. package/dist/internal/index-impl/normalizeCSharpRoslynKind.js +38 -0
  368. package/dist/internal/index-impl/normalizeCompileTarget.js +9 -0
  369. package/dist/internal/index-impl/normalizeDiagnosticSeverity.js +6 -0
  370. package/dist/internal/index-impl/normalizeExternalOccurrenceRole.js +9 -0
  371. package/dist/internal/index-impl/normalizeExternalSemanticIndexFormat.js +34 -0
  372. package/dist/internal/index-impl/normalizeExternalSemanticIndexPayload.js +10 -0
  373. package/dist/internal/index-impl/normalizeExternalSemanticLanguage.js +7 -0
  374. package/dist/internal/index-impl/normalizeExternalSpan.js +21 -0
  375. package/dist/internal/index-impl/normalizeExternalSymbolKind.js +6 -0
  376. package/dist/internal/index-impl/normalizeFrontierSemanticIndexPayload.js +14 -0
  377. package/dist/internal/index-impl/normalizeGenericExternalSemanticIndexPayload.js +15 -0
  378. package/dist/internal/index-impl/normalizeGleanPayload.js +210 -0
  379. package/dist/internal/index-impl/normalizeGoAstKind.js +14 -0
  380. package/dist/internal/index-impl/normalizeJavaAstKind.js +24 -0
  381. package/dist/internal/index-impl/normalizeKotlinPsiKind.js +54 -0
  382. package/dist/internal/index-impl/normalizeLossSeverity.js +6 -0
  383. package/dist/internal/index-impl/normalizeLsifPayload.js +91 -0
  384. package/dist/internal/index-impl/normalizeLspDocuments.js +15 -0
  385. package/dist/internal/index-impl/normalizeLspPayload.js +33 -0
  386. package/dist/internal/index-impl/normalizeLspSymbolKind.js +5 -0
  387. package/dist/internal/index-impl/normalizeNativeDiffImport.js +15 -0
  388. package/dist/internal/index-impl/normalizeNativeImporterAdapter.js +33 -0
  389. package/dist/internal/index-impl/normalizeNativeImporterAdapterCoverage.js +38 -0
  390. package/dist/internal/index-impl/normalizeNativeImporterAdapterObservedCoverage.js +43 -0
  391. package/dist/internal/index-impl/normalizeNativeImporterSemanticCoverage.js +18 -0
  392. package/dist/internal/index-impl/normalizeNativeLossKind.js +8 -0
  393. package/dist/internal/index-impl/normalizeNativeLossRecord.js +20 -0
  394. package/dist/internal/index-impl/normalizeNativeLossRecords.js +6 -0
  395. package/dist/internal/index-impl/normalizeNativeTargetProjectionAdapter.js +37 -0
  396. package/dist/internal/index-impl/normalizeNativeTargetProjectionAdapterCoverage.js +20 -0
  397. package/dist/internal/index-impl/normalizeParserErrors.js +18 -0
  398. package/dist/internal/index-impl/normalizeRustSynKind.js +32 -0
  399. package/dist/internal/index-impl/normalizeScipPayload.js +98 -0
  400. package/dist/internal/index-impl/normalizeSemanticDbPayload.js +57 -0
  401. package/dist/internal/index-impl/normalizeSemanticSliceRef.js +4 -0
  402. package/dist/internal/index-impl/normalizeSwiftSyntaxKind.js +45 -0
  403. package/dist/internal/index-impl/normalizeSyntaxAstRoot.js +5 -0
  404. package/dist/internal/index-impl/numberOrUndefined.js +3 -0
  405. package/dist/internal/index-impl/observeNativeImporterAdapterCoverage.js +24 -0
  406. package/dist/internal/index-impl/observeNativeImporterAdapterCoverageDetails.js +66 -0
  407. package/dist/internal/index-impl/observeNativeImporterSemanticEvidence.js +23 -0
  408. package/dist/internal/index-impl/observedAdapterExactness.js +6 -0
  409. package/dist/internal/index-impl/oneLine.js +3 -0
  410. package/dist/internal/index-impl/parseCSharpRoslynSource.js +15 -0
  411. package/dist/internal/index-impl/parseClangAstSource.js +16 -0
  412. package/dist/internal/index-impl/parseGoAstSource.js +15 -0
  413. package/dist/internal/index-impl/parseJavaAstSource.js +16 -0
  414. package/dist/internal/index-impl/parseKotlinPsiSource.js +16 -0
  415. package/dist/internal/index-impl/parsePythonAstSource.js +16 -0
  416. package/dist/internal/index-impl/parseRustSynSource.js +13 -0
  417. package/dist/internal/index-impl/parseSwiftSyntaxSource.js +15 -0
  418. package/dist/internal/index-impl/parseTreeSitterSource.js +6 -0
  419. package/dist/internal/index-impl/primitiveCSharpRoslynFields.js +23 -0
  420. package/dist/internal/index-impl/primitiveClangAstFields.js +31 -0
  421. package/dist/internal/index-impl/primitiveGoAstFields.js +22 -0
  422. package/dist/internal/index-impl/primitiveJavaAstFields.js +22 -0
  423. package/dist/internal/index-impl/primitiveKotlinPsiFields.js +24 -0
  424. package/dist/internal/index-impl/primitivePythonAstFields.js +18 -0
  425. package/dist/internal/index-impl/primitiveRustSynFields.js +16 -0
  426. package/dist/internal/index-impl/primitiveSwiftSyntaxFields.js +21 -0
  427. package/dist/internal/index-impl/primitiveSyntaxFields.js +13 -0
  428. package/dist/internal/index-impl/primitiveTypeScriptFields.js +9 -0
  429. package/dist/internal/index-impl/projectFrontierAst.js +6 -0
  430. package/dist/internal/index-impl/projectImportAdmissionDecision.js +27 -0
  431. package/dist/internal/index-impl/projectImportAdmissionMergeScore.js +316 -0
  432. package/dist/internal/index-impl/projectImportAdmissionSummaries.js +252 -0
  433. package/dist/internal/index-impl/projectNativeImportToSource.js +90 -0
  434. package/dist/internal/index-impl/projectors.js +8 -0
  435. package/dist/internal/index-impl/pythonAliasName.js +5 -0
  436. package/dist/internal/index-impl/pythonAssignmentName.js +9 -0
  437. package/dist/internal/index-impl/pythonAstChildEntries.js +11 -0
  438. package/dist/internal/index-impl/pythonAstDeclaration.js +18 -0
  439. package/dist/internal/index-impl/pythonAstKind.js +3 -0
  440. package/dist/internal/index-impl/pythonAstLiteralValue.js +6 -0
  441. package/dist/internal/index-impl/pythonAstNodeValue.js +4 -0
  442. package/dist/internal/index-impl/pythonAstRoot.js +9 -0
  443. package/dist/internal/index-impl/pythonTargetName.js +12 -0
  444. package/dist/internal/index-impl/queryNativeParserFeatureMatrix.js +5 -0
  445. package/dist/internal/index-impl/queryProjectionReadinessMatrix.js +5 -0
  446. package/dist/internal/index-impl/readSemanticSliceJson.js +7 -0
  447. package/dist/internal/index-impl/readStringArray.js +5 -0
  448. package/dist/internal/index-impl/readUniversalAstJson.js +9 -0
  449. package/dist/internal/index-impl/relationPredicateForDeclaration.js +5 -0
  450. package/dist/internal/index-impl/renderCProjectionStubs.js +11 -0
  451. package/dist/internal/index-impl/renderGenericProjectionStubs.js +5 -0
  452. package/dist/internal/index-impl/renderJavaScriptProjectionStubs.js +12 -0
  453. package/dist/internal/index-impl/renderNativeProjectionStubs.js +13 -0
  454. package/dist/internal/index-impl/renderPythonProjectionStubs.js +10 -0
  455. package/dist/internal/index-impl/renderRustProjectionStubs.js +11 -0
  456. package/dist/internal/index-impl/renderTargetAst.js +6 -0
  457. package/dist/internal/index-impl/renderTargetAstWithSourceMap.js +6 -0
  458. package/dist/internal/index-impl/renderTypeScriptProjectionStubs.js +14 -0
  459. package/dist/internal/index-impl/renderers.js +8 -0
  460. package/dist/internal/index-impl/resolveCapabilityAdapters.js +29 -0
  461. package/dist/internal/index-impl/resolveNativeProjectAdapter.js +11 -0
  462. package/dist/internal/index-impl/resolveNativeTargetProjectionAdapter.js +14 -0
  463. package/dist/internal/index-impl/runNativeImporterAdapter.js +130 -0
  464. package/dist/internal/index-impl/runNativeTargetProjectionAdapter.js +115 -0
  465. package/dist/internal/index-impl/rustSynAstRoot.js +11 -0
  466. package/dist/internal/index-impl/rustSynChildEntries.js +10 -0
  467. package/dist/internal/index-impl/rustSynColumnToOneBased.js +3 -0
  468. package/dist/internal/index-impl/rustSynDeclaration.js +40 -0
  469. package/dist/internal/index-impl/rustSynIdentName.js +12 -0
  470. package/dist/internal/index-impl/rustSynImplName.js +11 -0
  471. package/dist/internal/index-impl/rustSynKind.js +15 -0
  472. package/dist/internal/index-impl/rustSynLiteralValue.js +5 -0
  473. package/dist/internal/index-impl/rustSynMacroKind.js +3 -0
  474. package/dist/internal/index-impl/rustSynNodeValue.js +6 -0
  475. package/dist/internal/index-impl/rustSynPathName.js +21 -0
  476. package/dist/internal/index-impl/rustSynPayload.js +6 -0
  477. package/dist/internal/index-impl/rustSynSpanKind.js +5 -0
  478. package/dist/internal/index-impl/rustSynUseName.js +26 -0
  479. package/dist/internal/index-impl/rustSynVisibility.js +9 -0
  480. package/dist/internal/index-impl/rustSynWrapperKind.js +12 -0
  481. package/dist/internal/index-impl/safeNativeImporterAdapterSummary.js +8 -0
  482. package/dist/internal/index-impl/safeNativeTargetProjectionAdapterSummary.js +8 -0
  483. package/dist/internal/index-impl/safeProjectionIdentifier.js +5 -0
  484. package/dist/internal/index-impl/scipOccurrenceRole.js +8 -0
  485. package/dist/internal/index-impl/scipOccurrenceRoleSet.js +12 -0
  486. package/dist/internal/index-impl/scipRelationshipRelations.js +20 -0
  487. package/dist/internal/index-impl/scipSymbolFacts.js +31 -0
  488. package/dist/internal/index-impl/scipSymbolId.js +8 -0
  489. package/dist/internal/index-impl/scipSyntaxKind.js +8 -0
  490. package/dist/internal/index-impl/selectSemanticSliceRecords.js +70 -0
  491. package/dist/internal/index-impl/semanticDbOccurrenceRole.js +5 -0
  492. package/dist/internal/index-impl/semanticDbSymbolFacts.js +15 -0
  493. package/dist/internal/index-impl/semanticDbSymbolId.js +7 -0
  494. package/dist/internal/index-impl/semanticHistoryRecords.js +233 -0
  495. package/dist/internal/index-impl/semanticIndexFromNativeDeclarations.js +127 -0
  496. package/dist/internal/index-impl/semanticMergeAdmissionForSeverity.js +5 -0
  497. package/dist/internal/index-impl/semanticMergeConflicts.js +116 -0
  498. package/dist/internal/index-impl/semanticPatchBundleRecords.js +240 -0
  499. package/dist/internal/index-impl/semanticPredicateMatches.js +4 -0
  500. package/dist/internal/index-impl/semanticSliceAssertion.js +8 -0
  501. package/dist/internal/index-impl/semanticSliceContext.js +24 -0
  502. package/dist/internal/index-impl/semanticSliceCurrentSource.js +4 -0
  503. package/dist/internal/index-impl/semanticSliceExpectedAssertions.js +8 -0
  504. package/dist/internal/index-impl/semanticSliceImportResult.js +30 -0
  505. package/dist/internal/index-impl/semanticSliceMappingMatchesRef.js +15 -0
  506. package/dist/internal/index-impl/semanticSliceMappingTouchesSets.js +7 -0
  507. package/dist/internal/index-impl/semanticSliceNativeNodeMatchesRef.js +12 -0
  508. package/dist/internal/index-impl/semanticSliceNativeParentMap.js +7 -0
  509. package/dist/internal/index-impl/semanticSliceReadiness.js +14 -0
  510. package/dist/internal/index-impl/semanticSliceReasons.js +11 -0
  511. package/dist/internal/index-impl/semanticSliceRecords.js +62 -0
  512. package/dist/internal/index-impl/semanticSliceRegionFromMapping.js +16 -0
  513. package/dist/internal/index-impl/semanticSliceRegionFromSymbol.js +21 -0
  514. package/dist/internal/index-impl/semanticSliceRegionMatchesRef.js +12 -0
  515. package/dist/internal/index-impl/semanticSliceRegionTouchesSets.js +6 -0
  516. package/dist/internal/index-impl/semanticSliceSourceFiles.js +35 -0
  517. package/dist/internal/index-impl/semanticSliceSourceHashAssertions.js +27 -0
  518. package/dist/internal/index-impl/semanticSliceSourceHashMap.js +18 -0
  519. package/dist/internal/index-impl/semanticSliceSourceMapLinks.js +21 -0
  520. package/dist/internal/index-impl/semanticSliceSourceSpans.js +9 -0
  521. package/dist/internal/index-impl/semanticSliceSourceTextMap.js +19 -0
  522. package/dist/internal/index-impl/semanticSliceSpanTouchesSelection.js +6 -0
  523. package/dist/internal/index-impl/semanticSliceSpansOverlap.js +15 -0
  524. package/dist/internal/index-impl/semanticSliceSymbolMatchesRef.js +13 -0
  525. package/dist/internal/index-impl/semanticSliceSymbolSpan.js +3 -0
  526. package/dist/internal/index-impl/semanticSliceSymbolTouchesSets.js +7 -0
  527. package/dist/internal/index-impl/semanticSliceTouchedSymbol.js +16 -0
  528. package/dist/internal/index-impl/semanticSliceValueMatches.js +6 -0
  529. package/dist/internal/index-impl/semanticTokenModifiers.js +7 -0
  530. package/dist/internal/index-impl/serializableDiagnostic.js +13 -0
  531. package/dist/internal/index-impl/serializableIncludeGraphSummary.js +10 -0
  532. package/dist/internal/index-impl/shortNodeText.js +6 -0
  533. package/dist/internal/index-impl/sourceMapRenderers.js +8 -0
  534. package/dist/internal/index-impl/sourcePreservationFromProjectionContext.js +5 -0
  535. package/dist/internal/index-impl/sourceSpanPathMatches.js +4 -0
  536. package/dist/internal/index-impl/sourceTextForSpan.js +12 -0
  537. package/dist/internal/index-impl/spanFromCSharpLineFields.js +12 -0
  538. package/dist/internal/index-impl/spanFromCSharpLineSpan.js +18 -0
  539. package/dist/internal/index-impl/spanFromCSharpRoslynNode.js +19 -0
  540. package/dist/internal/index-impl/spanFromClangAstNode.js +17 -0
  541. package/dist/internal/index-impl/spanFromGoAstNode.js +14 -0
  542. package/dist/internal/index-impl/spanFromJavaAstNode.js +36 -0
  543. package/dist/internal/index-impl/spanFromJavaLineFields.js +12 -0
  544. package/dist/internal/index-impl/spanFromJavaRange.js +22 -0
  545. package/dist/internal/index-impl/spanFromKotlinLineFields.js +12 -0
  546. package/dist/internal/index-impl/spanFromKotlinPsiNode.js +19 -0
  547. package/dist/internal/index-impl/spanFromKotlinRange.js +18 -0
  548. package/dist/internal/index-impl/spanFromLoc.js +11 -0
  549. package/dist/internal/index-impl/spanFromLspRange.js +12 -0
  550. package/dist/internal/index-impl/spanFromPythonAstNode.js +15 -0
  551. package/dist/internal/index-impl/spanFromRustSynNode.js +20 -0
  552. package/dist/internal/index-impl/spanFromScipOccurrence.js +40 -0
  553. package/dist/internal/index-impl/spanFromSemanticDbRange.js +11 -0
  554. package/dist/internal/index-impl/spanFromSwiftLineFields.js +12 -0
  555. package/dist/internal/index-impl/spanFromSwiftRange.js +18 -0
  556. package/dist/internal/index-impl/spanFromSwiftSyntaxNode.js +19 -0
  557. package/dist/internal/index-impl/spanFromTreeSitterNode.js +13 -0
  558. package/dist/internal/index-impl/spanFromTypeScriptNode.js +15 -0
  559. package/dist/internal/index-impl/stringFromTsExpression.js +7 -0
  560. package/dist/internal/index-impl/summarizeNativeChangedRegionProjections.js +16 -0
  561. package/dist/internal/index-impl/summarizeNativeImportFeatureEvidence.js +60 -0
  562. package/dist/internal/index-impl/summarizeNativeImportLosses.js +65 -0
  563. package/dist/internal/index-impl/summarizeProjectSourcePreservation.js +15 -0
  564. package/dist/internal/index-impl/swiftEvidenceSummary.js +19 -0
  565. package/dist/internal/index-impl/swiftGeneratedCodeLoss.js +20 -0
  566. package/dist/internal/index-impl/swiftGeneratedCodeMarker.js +11 -0
  567. package/dist/internal/index-impl/swiftGeneratedSourcePath.js +3 -0
  568. package/dist/internal/index-impl/swiftSyntaxAttributeNames.js +10 -0
  569. package/dist/internal/index-impl/swiftSyntaxChildEntries.js +18 -0
  570. package/dist/internal/index-impl/swiftSyntaxChildWithParent.js +6 -0
  571. package/dist/internal/index-impl/swiftSyntaxConditionalCompilationKind.js +3 -0
  572. package/dist/internal/index-impl/swiftSyntaxDeclarationName.js +19 -0
  573. package/dist/internal/index-impl/swiftSyntaxDeclarations.js +38 -0
  574. package/dist/internal/index-impl/swiftSyntaxEnumCaseNames.js +7 -0
  575. package/dist/internal/index-impl/swiftSyntaxFunctionLikeKind.js +8 -0
  576. package/dist/internal/index-impl/swiftSyntaxHasBody.js +3 -0
  577. package/dist/internal/index-impl/swiftSyntaxImportPath.js +14 -0
  578. package/dist/internal/index-impl/swiftSyntaxKind.js +11 -0
  579. package/dist/internal/index-impl/swiftSyntaxLiteralValue.js +5 -0
  580. package/dist/internal/index-impl/swiftSyntaxMacroKind.js +3 -0
  581. package/dist/internal/index-impl/swiftSyntaxModifierNames.js +16 -0
  582. package/dist/internal/index-impl/swiftSyntaxName.js +14 -0
  583. package/dist/internal/index-impl/swiftSyntaxNodeValue.js +7 -0
  584. package/dist/internal/index-impl/swiftSyntaxOperatorName.js +6 -0
  585. package/dist/internal/index-impl/swiftSyntaxPatternName.js +6 -0
  586. package/dist/internal/index-impl/swiftSyntaxPosition.js +27 -0
  587. package/dist/internal/index-impl/swiftSyntaxPositionKind.js +6 -0
  588. package/dist/internal/index-impl/swiftSyntaxProblemNode.js +13 -0
  589. package/dist/internal/index-impl/swiftSyntaxRecoveredKind.js +7 -0
  590. package/dist/internal/index-impl/swiftSyntaxRoot.js +15 -0
  591. package/dist/internal/index-impl/swiftSyntaxTypeDeclarationKind.js +7 -0
  592. package/dist/internal/index-impl/swiftSyntaxTypeDeclarationSymbolKind.js +8 -0
  593. package/dist/internal/index-impl/swiftSyntaxTypeName.js +19 -0
  594. package/dist/internal/index-impl/swiftSyntaxVariableNames.js +7 -0
  595. package/dist/internal/index-impl/syntaxDeclaration.js +18 -0
  596. package/dist/internal/index-impl/testSemanticSlice.js +43 -0
  597. package/dist/internal/index-impl/treeSitterDeclaration.js +24 -0
  598. package/dist/internal/index-impl/treeSitterFieldText.js +5 -0
  599. package/dist/internal/index-impl/truncatedAstLoss.js +16 -0
  600. package/dist/internal/index-impl/typeScriptDeclaration.js +14 -0
  601. package/dist/internal/index-impl/typeScriptKindName.js +6 -0
  602. package/dist/internal/index-impl/typeScriptNodeValue.js +4 -0
  603. package/dist/internal/index-impl/uniqueNativeProjectionDeclarations.js +9 -0
  604. package/dist/internal/index-impl/uniqueSemanticSliceNativeNodes.js +11 -0
  605. package/dist/internal/index-impl/uniqueSemanticSliceRegions.js +15 -0
  606. package/dist/internal/index-impl/uniqueSemanticSliceSpans.js +21 -0
  607. package/dist/internal/index-impl/unverifiedNativeAstLosses.js +16 -0
  608. package/dist/internal/index-impl/uriToPath.js +11 -0
  609. package/dist/internal/index-impl/visitCSharpRoslynNode.js +87 -0
  610. package/dist/internal/index-impl/visitClangAstNode.js +62 -0
  611. package/dist/internal/index-impl/visitGoAstNode.js +99 -0
  612. package/dist/internal/index-impl/visitJavaAstNode.js +73 -0
  613. package/dist/internal/index-impl/visitKotlinPsiNode.js +108 -0
  614. package/dist/internal/index-impl/visitPythonAstNode.js +47 -0
  615. package/dist/internal/index-impl/visitRustSynNode.js +62 -0
  616. package/dist/internal/index-impl/visitSwiftSyntaxNode.js +103 -0
  617. package/dist/internal/index-impl/visitSyntaxAstNode.js +46 -0
  618. package/dist/internal/index-impl/visitTreeSitterNode.js +145 -0
  619. package/dist/internal/index-impl/visitTypeScriptAstNode.js +45 -0
  620. package/dist/internal/index-impl/withExternalEmptyLoss.js +32 -0
  621. package/dist/internal/index-impl/withNativeImportReadiness.js +53 -0
  622. package/dist/internal/index-impl/writeSemanticSliceJson.js +7 -0
  623. package/dist/internal/index-impl/writeUniversalAstJson.js +8 -0
  624. package/dist/language-adapter-package-contracts.js +289 -0
  625. package/dist/native-import-coverage-matrix.js +237 -0
  626. package/dist/native-import-language-profiles.js +169 -0
  627. package/dist/native-import-utils.js +143 -0
  628. package/dist/native-js-ts-importers.js +85 -0
  629. package/dist/native-parser-ast-format-matrix.js +147 -0
  630. package/dist/native-parser-ast-format-profiles.js +271 -0
  631. package/dist/native-parser-feature-assessment.js +118 -0
  632. package/dist/native-parser-feature-coverage.js +268 -0
  633. package/dist/native-parser-feature-matrix.js +92 -0
  634. package/dist/native-parser-feature-rows.js +219 -0
  635. package/dist/native-region-scanner-core.js +179 -0
  636. package/dist/native-region-scanner-dynamic.js +259 -0
  637. package/dist/native-region-scanner-functional.js +191 -0
  638. package/dist/native-region-scanner-js.js +310 -0
  639. package/dist/native-region-scanner-main.js +301 -0
  640. package/dist/native-region-scanner.js +62 -0
  641. package/dist/native-source-maps.js +260 -0
  642. package/dist/native-source-preservation-scanner.js +266 -0
  643. package/dist/native-source-preservation-types.d.ts +77 -0
  644. package/dist/projection-readiness-helpers.js +166 -0
  645. package/dist/projection-readiness-matrix.js +122 -0
  646. package/dist/projection-target-loss-matrix.js +318 -0
  647. package/dist/semantic-import-contract-summary.js +188 -0
  648. package/dist/semantic-import-layers.js +320 -0
  649. package/dist/semantic-import-regions.js +181 -0
  650. package/dist/semantic-import-sidecar-admission-types.d.ts +61 -0
  651. package/dist/semantic-import-sidecar-entry.js +78 -0
  652. package/dist/semantic-import-sidecar-types.d.ts +275 -0
  653. package/dist/semantic-import-source-preservation.js +198 -0
  654. package/dist/universal-capability-matrix.js +280 -0
  655. package/dist/universal-dialect-layer.js +74 -0
  656. package/dist/universal-dialect-registry.js +204 -0
  657. package/dist/universal-dialect-utils.js +110 -0
  658. package/package.json +1 -1
@@ -0,0 +1,70 @@
1
+ import{expandSemanticSliceSelection}from'./expandSemanticSliceSelection.js';import{semanticSliceMappingMatchesRef}from'./semanticSliceMappingMatchesRef.js';import{semanticSliceNativeNodeMatchesRef}from'./semanticSliceNativeNodeMatchesRef.js';import{semanticSliceRegionMatchesRef}from'./semanticSliceRegionMatchesRef.js';import{semanticSliceSpanTouchesSelection}from'./semanticSliceSpanTouchesSelection.js';import{semanticSliceSymbolMatchesRef}from'./semanticSliceSymbolMatchesRef.js';
2
+ export function selectSemanticSliceRecords(records, options) {
3
+ const selectedSymbols = new Set();
4
+ const selectedRegions = new Set();
5
+ const selectedNativeNodes = new Set();
6
+ const selectedMappings = new Set();
7
+ const selectedRelations = new Set();
8
+ const selectedOccurrences = new Set();
9
+ const matchedEntryRefs = [];
10
+ const entryRefs = options.entryRefs ?? [];
11
+ if (entryRefs.length === 0) {
12
+ for (const symbol of records.symbols) selectedSymbols.add(symbol.id);
13
+ for (const region of records.regions) selectedRegions.add(region.id);
14
+ for (const node of records.nativeNodes) selectedNativeNodes.add(node.id);
15
+ for (const mapping of records.mappings) selectedMappings.add(mapping.id);
16
+ } else {
17
+ for (const ref of entryRefs) {
18
+ let matched = false;
19
+ for (const symbol of records.symbols) {
20
+ if (!semanticSliceSymbolMatchesRef(symbol, ref)) continue;
21
+ selectedSymbols.add(symbol.id);
22
+ matched = true;
23
+ }
24
+ for (const region of records.regions) {
25
+ if (!semanticSliceRegionMatchesRef(region, ref)) continue;
26
+ selectedRegions.add(region.id);
27
+ matched = true;
28
+ }
29
+ for (const node of records.nativeNodes) {
30
+ if (!semanticSliceNativeNodeMatchesRef(node, ref)) continue;
31
+ selectedNativeNodes.add(node.id);
32
+ matched = true;
33
+ }
34
+ for (const mapping of records.mappings) {
35
+ if (!semanticSliceMappingMatchesRef(mapping, ref)) continue;
36
+ selectedMappings.add(mapping.id);
37
+ matched = true;
38
+ }
39
+ if (matched) matchedEntryRefs.push(ref);
40
+ }
41
+ }
42
+ expandSemanticSliceSelection(records, {
43
+ selectedSymbols,
44
+ selectedRegions,
45
+ selectedNativeNodes,
46
+ selectedMappings,
47
+ selectedRelations,
48
+ selectedOccurrences,
49
+ includeDependencies: options.includeDependencies,
50
+ maxDependencyDepth: options.maxDependencyDepth
51
+ });
52
+ const symbols = records.symbols.filter((symbol) => selectedSymbols.has(symbol.id));
53
+ const regions = records.regions.filter((region) => selectedRegions.has(region.id));
54
+ const nativeNodes = records.nativeNodes.filter((node) => selectedNativeNodes.has(node.id));
55
+ const mappings = records.mappings.filter((mapping) => selectedMappings.has(mapping.id));
56
+ const relations = records.relations.filter((relation) => selectedRelations.has(relation.id));
57
+ const occurrences = records.occurrences.filter((occurrence) => selectedOccurrences.has(occurrence.id));
58
+ const selectedNodeIds = new Set(nativeNodes.map((node) => node.id));
59
+ const losses = records.losses.filter((loss) => !loss.nodeId || selectedNodeIds.has(loss.nodeId) || semanticSliceSpanTouchesSelection(loss.span, mappings, regions));
60
+ return {
61
+ matchedEntryRefs,
62
+ symbols,
63
+ regions,
64
+ nativeNodes,
65
+ mappings,
66
+ relations,
67
+ occurrences,
68
+ losses
69
+ };
70
+ }
@@ -0,0 +1,5 @@
1
+ export function semanticDbOccurrenceRole(value) {
2
+ const role = String(value ?? 'reference').toLowerCase();
3
+ if (role === '2' || role.includes('definition')) return 'definition';
4
+ return 'reference';
5
+ }
@@ -0,0 +1,15 @@
1
+ import{idFragment}from'../../native-import-utils.js';
2
+ export function semanticDbSymbolFacts(symbolInfo, symbolId) {
3
+ const facts = [];
4
+ for (const key of ['signature', 'properties', 'annotations', 'access', 'language']) {
5
+ if (symbolInfo[key] !== undefined) {
6
+ facts.push({
7
+ id: `fact_${idFragment(symbolId)}_${idFragment(key)}`,
8
+ predicate: key,
9
+ subjectId: symbolId,
10
+ value: symbolInfo[key]
11
+ });
12
+ }
13
+ }
14
+ return facts;
15
+ }
@@ -0,0 +1,7 @@
1
+ import{idFragment}from'../../native-import-utils.js';
2
+ export function semanticDbSymbolId(symbol, context, documentId) {
3
+ if (!symbol) return `symbol:semanticdb:${context.idPart}:unknown`;
4
+ if (String(symbol).startsWith('symbol:')) return String(symbol);
5
+ const scope = /^local\d+$/i.test(String(symbol)) ? `${documentId}:` : '';
6
+ return `symbol:semanticdb:${idFragment(scope + symbol)}`;
7
+ }
@@ -0,0 +1,233 @@
1
+ import{ idFragment, maxSemanticMergeReadiness, normalizeSemanticMergeReadiness, uniqueStrings as uniqueRawStrings }from'../../native-import-utils.js';
2
+
3
+ export const SemanticHistoryAdmissionStatuses=Object.freeze(['proposed','queued','admitted','needs-review','blocked','rejected']);
4
+ export const SemanticHistoryReviewerStatuses=Object.freeze(['unreviewed','approved','changes-requested','reviewed','rejected']);
5
+ export const SemanticHistoryOverlapKinds=Object.freeze(['ownership','conflict-key','source','source-path','import','semantic-candidate','evidence','proof','replay','base-hash','target-hash']);
6
+ export const SemanticHistoryConflictReasons=Object.freeze(['ownership-overlap','semantic-conflict-key-overlap','base-hash-mismatch','target-hash-mismatch','admission-blocked','reviewer-rejected','source-path-overlap']);
7
+
8
+ export function createSemanticHistoryRecord(input={},options={}){
9
+ const imported=input.importResult??input.imported;
10
+ const sources=normalizeSources(input,imported);
11
+ const ownershipRegions=normalizeOwnershipRegions([...(array(input.ownershipRegions)),...(array(input.changedRegions)),...(array(input.changeSet?.changedRegions)),...(array(imported?.ownershipRegions))]);
12
+ const semanticCandidates=normalizeSemanticCandidates([...(array(input.semanticCandidates)),...(array(input.mergeCandidates)),...(array(input.mergeCandidate)),...(array(input.changeSet?.mergeCandidate)),...(array(imported?.mergeCandidates))]);
13
+ const replayLinks=normalizeReplayLinks(input.replayLinks??input.replay);
14
+ const baseHash=firstString(input.baseHash,input.beforeHash,...sources.map((source)=>source.baseHash),...semanticCandidates.map((candidate)=>candidate.baseHash));
15
+ const targetHash=firstString(input.targetHash,input.afterHash,...sources.map((source)=>source.targetHash),...semanticCandidates.map((candidate)=>candidate.targetHash));
16
+ const evidenceIds=uniqueStrings([...(strings(input.evidenceIds)),...(array(input.evidence)).map((record)=>record?.id),...(array(imported?.evidence)).map((record)=>record?.id),...semanticCandidates.flatMap((candidate)=>candidate.evidenceIds),...(strings(input.reviewer?.evidenceIds)),...(strings(input.admission?.evidenceIds))]);
17
+ const proofIds=uniqueStrings([...(strings(input.proofIds)),...(array(input.proofs)).map((record)=>record?.id),...semanticCandidates.flatMap((candidate)=>candidate.proofIds)]);
18
+ const sourceIds=uniqueStrings([input.sourceId,...strings(input.sourceIds),...sources.map((source)=>source.id)]);
19
+ const importIds=uniqueStrings([input.importId,input.importResultId,imported?.id,...strings(input.importIds),...sources.map((source)=>source.importId),...semanticCandidates.map((candidate)=>candidate.importResultId)]);
20
+ const sourcePaths=uniqueStrings([input.sourcePath,imported?.sourcePath,...sources.map((source)=>source.sourcePath),...ownershipRegions.map((region)=>region.sourcePath),...semanticCandidates.map((candidate)=>candidate.sourcePath)]);
21
+ const sourceHashes=uniqueStrings([input.sourceHash,imported?.sourceHash,...sources.map((source)=>source.sourceHash),...ownershipRegions.map((region)=>region.sourceHash)]);
22
+ const conflictKeys=uniqueStrings([...(strings(input.conflictKeys)),...semanticCandidates.flatMap((candidate)=>candidate.conflictKeys)]);
23
+ const reviewer=normalizeReviewer(input.reviewer);
24
+ const admission=normalizeAdmission(input.admission,semanticCandidates,reviewer);
25
+ return{
26
+ kind:'frontier.lang.semanticHistoryRecord',
27
+ version:1,
28
+ id:input.id??options.id??`semantic_history_${idFragment(firstString(sourcePaths[0],importIds[0],sourceIds[0],'record'))}`,
29
+ createdAt:input.createdAt??options.createdAt??Date.now(),
30
+ baseHash,
31
+ targetHash,
32
+ language:input.language??imported?.language??sources.find((source)=>source.language)?.language,
33
+ sourcePath:input.sourcePath??imported?.sourcePath??sourcePaths[0],
34
+ sourceIds,
35
+ importIds,
36
+ sources,
37
+ ownershipRegions,
38
+ semanticCandidates,
39
+ evidenceIds,
40
+ proofIds,
41
+ reviewer,
42
+ admission,
43
+ replayLinks,
44
+ index:{
45
+ baseHashes:uniqueStrings([baseHash,...sources.map((source)=>source.baseHash),...semanticCandidates.map((candidate)=>candidate.baseHash)]),
46
+ targetHashes:uniqueStrings([targetHash,...sources.map((source)=>source.targetHash),...semanticCandidates.map((candidate)=>candidate.targetHash)]),
47
+ sourceIds,
48
+ importIds,
49
+ sourcePaths,
50
+ sourceHashes,
51
+ ownershipKeys:uniqueStrings([...ownershipRegions.map((region)=>region.key),...semanticCandidates.flatMap((candidate)=>candidate.ownershipKeys)]),
52
+ semanticCandidateIds:uniqueStrings(semanticCandidates.map((candidate)=>candidate.id)),
53
+ conflictKeys,
54
+ evidenceIds,
55
+ proofIds,
56
+ replayIds:uniqueStrings(replayLinks.map((link)=>link.id))
57
+ },
58
+ metadata:compactRecord(input.metadata)
59
+ };
60
+ }
61
+
62
+ export function querySemanticHistoryRecordOverlaps(records,options={}){
63
+ const list=array(records).filter(Boolean);
64
+ const overlaps=[];
65
+ for(let leftIndex=0;leftIndex<list.length;leftIndex+=1){
66
+ for(let rightIndex=leftIndex+1;rightIndex<list.length;rightIndex+=1){
67
+ const overlap=semanticHistoryOverlap(list[leftIndex],list[rightIndex],options);
68
+ if(overlap.overlapKinds.length||overlap.conflictReasons.length)overlaps.push(overlap);
69
+ }
70
+ }
71
+ return overlaps.sort((left,right)=>Number(right.conflict)-Number(left.conflict)||left.leftId.localeCompare(right.leftId)||left.rightId.localeCompare(right.rightId));
72
+ }
73
+
74
+ export function semanticHistoryRecordsOverlap(left,right,options={}){
75
+ return semanticHistoryOverlap(left,right,options).overlapKinds.length>0;
76
+ }
77
+
78
+ export function semanticHistoryRecordsConflict(left,right,options={}){
79
+ return semanticHistoryOverlap(left,right,options).conflict;
80
+ }
81
+
82
+ function semanticHistoryOverlap(left,right,options){
83
+ const leftIndex=historyIndex(left);
84
+ const rightIndex=historyIndex(right);
85
+ const overlap=compactRecord({
86
+ ownership:intersect(leftIndex.ownershipKeys,rightIndex.ownershipKeys),
87
+ 'conflict-key':intersect(leftIndex.conflictKeys,rightIndex.conflictKeys),
88
+ source:intersect(leftIndex.sourceIds,rightIndex.sourceIds),
89
+ 'source-path':options.includeSourcePaths===false?[]:intersect(leftIndex.sourcePaths,rightIndex.sourcePaths),
90
+ import:intersect(leftIndex.importIds,rightIndex.importIds),
91
+ 'semantic-candidate':intersect(leftIndex.semanticCandidateIds,rightIndex.semanticCandidateIds),
92
+ evidence:options.includeEvidence?intersect(leftIndex.evidenceIds,rightIndex.evidenceIds):[],
93
+ proof:options.includeProofs?intersect(leftIndex.proofIds,rightIndex.proofIds):[],
94
+ replay:options.includeReplay?intersect(leftIndex.replayIds,rightIndex.replayIds):[],
95
+ 'base-hash':options.includeBaseHashes?intersect(leftIndex.baseHashes,rightIndex.baseHashes):[],
96
+ 'target-hash':options.includeTargetHashes?intersect(leftIndex.targetHashes,rightIndex.targetHashes):[]
97
+ });
98
+ const overlapKinds=Object.keys(overlap);
99
+ const semanticOverlap=Boolean(overlap.ownership?.length||overlap['conflict-key']?.length||overlap.source?.length||overlap['source-path']?.length||overlap.import?.length);
100
+ const conflictReasons=uniqueStrings([
101
+ overlap.ownership?.length?'ownership-overlap':undefined,
102
+ overlap['conflict-key']?.length?'semantic-conflict-key-overlap':undefined,
103
+ semanticOverlap&&disjointNonEmpty(leftIndex.baseHashes,rightIndex.baseHashes)?'base-hash-mismatch':undefined,
104
+ (overlap.ownership?.length||overlap['conflict-key']?.length)&&disjointNonEmpty(leftIndex.targetHashes,rightIndex.targetHashes)?'target-hash-mismatch':undefined,
105
+ semanticOverlap&&(blockedAdmission(left)||blockedAdmission(right))?'admission-blocked':undefined,
106
+ semanticOverlap&&(rejectedReview(left)||rejectedReview(right))?'reviewer-rejected':undefined,
107
+ options.conflictOnSourcePath&&overlap['source-path']?.length?'source-path-overlap':undefined
108
+ ]);
109
+ return{
110
+ schema:'frontier.lang.semanticHistoryOverlap.v1',
111
+ leftId:String(left?.id??'left'),
112
+ rightId:String(right?.id??'right'),
113
+ overlap,
114
+ overlapKinds,
115
+ conflict:conflictReasons.length>0,
116
+ conflictReasons,
117
+ admission:{left:left?.admission?.status,right:right?.admission?.status},
118
+ reviewer:{left:left?.reviewer?.status,right:right?.reviewer?.status}
119
+ };
120
+ }
121
+
122
+ function normalizeSources(input,imported){
123
+ const entries=[...(array(input.sources)),...(array(input.sourceRefs)),...(array(input.source)),...(array(imported))];
124
+ if(entries.length===0&&(input.sourcePath||input.sourceHash||input.baseHash||input.targetHash||input.sourceId||input.importId)){
125
+ entries.push(input);
126
+ }
127
+ return entries.map((source,index)=>compactRecord({
128
+ id:source?.id??source?.sourceId,
129
+ importId:source?.importId??source?.importResultId??(source?.kind==='frontier.lang.importResult'?source.id:undefined),
130
+ language:source?.language??input.language,
131
+ sourcePath:source?.sourcePath??source?.path??input.sourcePath,
132
+ sourceHash:source?.sourceHash??source?.hash,
133
+ baseHash:source?.baseHash??source?.beforeHash??input.baseHash??input.beforeHash,
134
+ targetHash:source?.targetHash??source?.afterHash??input.targetHash??input.afterHash,
135
+ metadata:source?.metadata,
136
+ ordinal:index
137
+ })).filter((source)=>source.id||source.importId||source.sourcePath||source.sourceHash||source.baseHash||source.targetHash);
138
+ }
139
+
140
+ function normalizeOwnershipRegions(regions){
141
+ const seen=new Set();
142
+ const normalized=[];
143
+ for(const region of regions){
144
+ const key=firstString(region?.key,region?.ownershipKey,region?.conflictKey,region?.id);
145
+ if(!key||seen.has(key))continue;
146
+ seen.add(key);
147
+ normalized.push(compactRecord({
148
+ id:region?.id,
149
+ key,
150
+ regionKind:region?.regionKind??region?.ownershipRegionKind,
151
+ granularity:region?.granularity??'semantic',
152
+ language:region?.language,
153
+ sourcePath:region?.sourcePath,
154
+ sourceHash:region?.sourceHash,
155
+ symbolId:region?.symbolId,
156
+ symbolName:region?.symbolName??region?.name,
157
+ sourceSpan:region?.sourceSpan??region?.span,
158
+ metadata:region?.metadata
159
+ }));
160
+ }
161
+ return normalized;
162
+ }
163
+
164
+ function normalizeSemanticCandidates(candidates){
165
+ return candidates.filter(Boolean).map((candidate,index)=>compactRecord({
166
+ id:candidate.id??candidate.candidateId??`semantic_candidate_${index+1}`,
167
+ importResultId:candidate.importResultId,
168
+ patchId:candidate.patchId,
169
+ sourcePath:candidate.sourcePath,
170
+ baseHash:candidate.baseHash,
171
+ targetHash:candidate.targetHash,
172
+ readiness:normalizeSemanticMergeReadiness(candidate.readiness)??candidate.readiness,
173
+ conflictKeys:uniqueStrings([...(strings(candidate.conflictKeys)),...(array(candidate.touchedSymbols)).map((entry)=>entry?.conflictKey),...(array(candidate.touchedSemanticNodes)).map((entry)=>entry?.conflictKey),...(array(candidate.nativeSpans)).map((entry)=>entry?.conflictKey),...(array(candidate.conflictClasses??candidate.metadata?.conflictClasses)).flatMap((entry)=>entry?.conflictKeys??[]),...(candidate.conflictSummary?.conflictKeys??candidate.metadata?.conflictSummary?.conflictKeys??[])]),
174
+ ownershipKeys:uniqueStrings([...(strings(candidate.ownershipKeys)),...(strings(candidate.regionKeys))]),
175
+ evidenceIds:uniqueStrings([...(strings(candidate.evidenceIds)),...(array(candidate.evidence)).map((record)=>record?.id),...(array(candidate.conflictClasses??candidate.metadata?.conflictClasses)).flatMap((entry)=>entry?.evidenceIds??[])]),
176
+ proofIds:uniqueStrings([...(strings(candidate.proofIds)),...(array(candidate.evidence)).filter((record)=>record?.kind==='proof').map((record)=>record?.id)]),
177
+ replayIds:uniqueStrings([...(strings(candidate.replayIds)),...(array(candidate.evidence)).filter((record)=>record?.kind==='replay').map((record)=>record?.id)]),
178
+ metadata:compactRecord({risk:candidate.risk,reasons:candidate.reasons,...candidate.metadata})
179
+ }));
180
+ }
181
+
182
+ function normalizeReplayLinks(value){
183
+ return array(value).filter(Boolean).map((link,index)=>{
184
+ const text=typeof link==='string'?link:undefined;
185
+ return compactRecord({
186
+ id:link?.id??(text?`replay_${idFragment(text)}`:`replay_${index+1}`),
187
+ kind:link?.kind??'replay',
188
+ href:link?.href??(text&&/^[a-z][a-z0-9+.-]*:/i.test(text)?text:undefined),
189
+ path:link?.path??(text&&!/^[a-z][a-z0-9+.-]*:/i.test(text)?text:undefined),
190
+ command:link?.command,
191
+ hash:link?.hash,
192
+ targetId:link?.targetId,
193
+ metadata:link?.metadata
194
+ });
195
+ });
196
+ }
197
+
198
+ function normalizeReviewer(reviewer){
199
+ if(typeof reviewer==='string')return{status:reviewer,evidenceIds:[]};
200
+ return compactRecord({status:reviewer?.status??'unreviewed',reviewerId:reviewer?.reviewerId??reviewer?.id,reviewedAt:reviewer?.reviewedAt,evidenceIds:uniqueStrings(reviewer?.evidenceIds),metadata:reviewer?.metadata});
201
+ }
202
+
203
+ function normalizeAdmission(admission,candidates,reviewer){
204
+ const readiness=candidates.reduce((current,candidate)=>maxSemanticMergeReadiness(current,normalizeSemanticMergeReadiness(candidate.readiness)??'needs-review'),normalizeSemanticMergeReadiness(admission?.readiness)??'ready');
205
+ return compactRecord({status:admission?.status??'proposed',readiness,admittedAt:admission?.admittedAt,reviewerId:admission?.reviewerId??reviewer.reviewerId,reasonCodes:uniqueStrings(admission?.reasonCodes),evidenceIds:uniqueStrings(admission?.evidenceIds),metadata:admission?.metadata});
206
+ }
207
+
208
+ function historyIndex(record){
209
+ return record?.index??{
210
+ baseHashes:uniqueStrings([record?.baseHash]),
211
+ targetHashes:uniqueStrings([record?.targetHash]),
212
+ sourceIds:uniqueStrings(record?.sourceIds),
213
+ importIds:uniqueStrings(record?.importIds),
214
+ sourcePaths:uniqueStrings([record?.sourcePath,...(record?.sources??[]).map((source)=>source.sourcePath)]),
215
+ sourceHashes:uniqueStrings((record?.sources??[]).map((source)=>source.sourceHash)),
216
+ ownershipKeys:uniqueStrings((record?.ownershipRegions??[]).map((region)=>region.key)),
217
+ semanticCandidateIds:uniqueStrings((record?.semanticCandidates??[]).map((candidate)=>candidate.id)),
218
+ conflictKeys:uniqueStrings((record?.semanticCandidates??[]).flatMap((candidate)=>candidate.conflictKeys??[])),
219
+ evidenceIds:uniqueStrings(record?.evidenceIds),
220
+ proofIds:uniqueStrings(record?.proofIds),
221
+ replayIds:uniqueStrings((record?.replayLinks??[]).map((link)=>link.id))
222
+ };
223
+ }
224
+
225
+ function blockedAdmission(record){return ['blocked','rejected'].includes(String(record?.admission?.status??''));}
226
+ function rejectedReview(record){return ['rejected','changes-requested'].includes(String(record?.reviewer?.status??''));}
227
+ function intersect(left,right){const rightSet=new Set(right??[]);return uniqueStrings((left??[]).filter((value)=>rightSet.has(value)));}
228
+ function disjointNonEmpty(left,right){return Boolean(left?.length&&right?.length&&intersect(left,right).length===0);}
229
+ function array(value){if(value===undefined||value===null)return[];return Array.isArray(value)?value:[value];}
230
+ function strings(value){return array(value).map((entry)=>String(entry??'')).filter(Boolean);}
231
+ function uniqueStrings(values){return uniqueRawStrings((values??[]).filter((entry)=>entry!==undefined&&entry!==null&&String(entry)!==''));}
232
+ function firstString(...values){return values.map((value)=>value===undefined||value===null?'':String(value)).find(Boolean);}
233
+ function compactRecord(value){return Object.fromEntries(Object.entries(value??{}).filter(([,entry])=>entry!==undefined&&(!Array.isArray(entry)||entry.length>0)));}
@@ -0,0 +1,127 @@
1
+ import{idFragment}from'../../native-import-utils.js';import{semanticOwnershipRegionForDeclaration}from'../../semantic-import-regions.js';import{createSemanticIndexRecord,hashSemanticValue}from'@shapeshift-labs/frontier-lang-kernel';
2
+ import{relationPredicateForDeclaration}from'./relationPredicateForDeclaration.js';
3
+ export function semanticIndexFromNativeDeclarations(declarations, input, options) {
4
+ const documentId = `doc_${idFragment(input.sourcePath ?? input.language)}_${idFragment(input.sourceHash)}`;
5
+ const evidenceId = `evidence_${idFragment(input.sourcePath ?? input.language)}_${idFragment(options.astFormat ?? options.parser)}_import`;
6
+ const symbols = [];
7
+ const occurrences = [];
8
+ const relations = [];
9
+ const facts = [];
10
+ const mappings = [];
11
+ for (const declaration of declarations) {
12
+ const symbolId = declaration.symbolId ?? `symbol:${input.language}:${declaration.role === 'import' ? 'import:' : ''}${idFragment(declaration.name)}`;
13
+ const occurrenceId = `occ_${idFragment(declaration.nativeNode.id)}_${declaration.role ?? 'definition'}`;
14
+ const ownershipRegion = semanticOwnershipRegionForDeclaration(input, {
15
+ ...declaration,
16
+ nodeId: declaration.nativeNode.id,
17
+ kind: declaration.nativeNode.kind,
18
+ languageKind: declaration.nativeNode.languageKind,
19
+ span: declaration.nativeNode.span,
20
+ symbolId
21
+ }, documentId);
22
+ declaration.nativeNode.metadata = {
23
+ ...declaration.nativeNode.metadata,
24
+ ownershipRegionId: ownershipRegion.id,
25
+ ownershipRegionKey: ownershipRegion.key,
26
+ ownershipRegionKind: ownershipRegion.regionKind
27
+ };
28
+ symbols.push({
29
+ id: symbolId,
30
+ scheme: 'frontier',
31
+ name: declaration.name,
32
+ kind: declaration.symbolKind,
33
+ language: input.language,
34
+ nativeAstNodeId: declaration.nativeNode.id,
35
+ signatureHash: hashSemanticValue([input.language, declaration.nativeNode.kind, declaration.name, declaration.nativeNode.fields ?? {}]),
36
+ definitionSpan: declaration.nativeNode.span,
37
+ metadata: {
38
+ ownershipRegionId: ownershipRegion.id,
39
+ ownershipRegionKey: ownershipRegion.key,
40
+ ownershipRegionKind: ownershipRegion.regionKind
41
+ }
42
+ });
43
+ occurrences.push({
44
+ id: occurrenceId,
45
+ documentId,
46
+ symbolId,
47
+ role: declaration.role ?? 'definition',
48
+ span: declaration.nativeNode.span,
49
+ nativeAstNodeId: declaration.nativeNode.id
50
+ });
51
+ relations.push({
52
+ id: `rel_${idFragment(documentId)}_${idFragment(declaration.nativeNode.id)}`,
53
+ sourceId: documentId,
54
+ predicate: relationPredicateForDeclaration(declaration),
55
+ targetId: symbolId
56
+ });
57
+ facts.push({
58
+ id: `fact_${idFragment(declaration.nativeNode.id)}_kind`,
59
+ predicate: 'nativeKind',
60
+ subjectId: symbolId,
61
+ value: declaration.nativeNode.languageKind
62
+ }, {
63
+ id: `fact_${idFragment(declaration.nativeNode.id)}_ownership_region`,
64
+ predicate: 'semanticOwnershipRegion',
65
+ subjectId: symbolId,
66
+ value: ownershipRegion
67
+ }, {
68
+ id: `fact_${idFragment(declaration.nativeNode.id)}_ownership_region_taxonomy`,
69
+ predicate: 'semanticOwnershipRegionTaxonomy',
70
+ subjectId: symbolId,
71
+ value: {
72
+ regionKind: ownershipRegion.regionKind,
73
+ granularity: ownershipRegion.granularity,
74
+ key: ownershipRegion.key
75
+ }
76
+ });
77
+ mappings.push({
78
+ id: `map_${idFragment(declaration.nativeNode.id)}`,
79
+ nativeAstNodeId: declaration.nativeNode.id,
80
+ semanticSymbolId: symbolId,
81
+ semanticOccurrenceId: occurrenceId,
82
+ sourceSpan: declaration.nativeNode.span,
83
+ evidenceIds: [evidenceId],
84
+ lossIds: [],
85
+ ownershipRegionId: ownershipRegion.id,
86
+ ownershipRegionKey: ownershipRegion.key,
87
+ ownershipRegionKind: ownershipRegion.regionKind,
88
+ precision: declaration.nativeNode.span ? 'declaration' : 'unknown'
89
+ });
90
+ }
91
+ const evidence = [{
92
+ id: evidenceId,
93
+ kind: 'import',
94
+ status: 'passed',
95
+ path: input.sourcePath,
96
+ summary: `Normalized ${options.astFormat ?? options.parser} native AST with ${declarations.length} declaration(s).`,
97
+ metadata: {
98
+ parser: options.parser,
99
+ astFormat: options.astFormat,
100
+ language: input.language,
101
+ sourceHash: input.sourceHash
102
+ }
103
+ }];
104
+ return {
105
+ semanticIndex: createSemanticIndexRecord({
106
+ id: `index_${idFragment(input.sourcePath ?? input.language)}_${idFragment(options.astFormat ?? options.parser)}`,
107
+ documents: [{
108
+ id: documentId,
109
+ path: input.sourcePath ?? `${input.language}:memory`,
110
+ language: input.language,
111
+ sourceHash: input.sourceHash
112
+ }],
113
+ symbols,
114
+ occurrences,
115
+ relations,
116
+ facts,
117
+ evidence,
118
+ metadata: {
119
+ parser: options.parser,
120
+ astFormat: options.astFormat,
121
+ coverage: 'native-ast-declarations'
122
+ }
123
+ }),
124
+ mappings,
125
+ evidence
126
+ };
127
+ }
@@ -0,0 +1,5 @@
1
+ export function semanticMergeAdmissionForSeverity(severity) {
2
+ if (severity === 'error') return 'blocked';
3
+ if (severity === 'warning') return 'review';
4
+ return 'disclose';
5
+ }
@@ -0,0 +1,116 @@
1
+ import{countBy,idFragment,maxSemanticMergeReadiness,normalizeSemanticMergeReadiness,uniqueStrings}from'../../native-import-utils.js';
2
+
3
+ export const SemanticMergeConflictClasses=Object.freeze(['same-symbol-edit','delete-modify','shifted-code','duplicate-signature','dependency-drift','behavior-evidence-needed']);
4
+ const riskRank=Object.freeze({low:1,medium:2,high:3});
5
+ const readinessRank=Object.freeze({ready:0,'ready-with-losses':1,'needs-review':2,blocked:3});
6
+ const classWeight=Object.freeze({'behavior-evidence-needed':10,'shifted-code':20,'same-symbol-edit':30,'dependency-drift':40,'duplicate-signature':50,'delete-modify':60});
7
+ const dependencyPredicates=/(?:import|call|depend|use|refer|require|include|extend|implement)/i;
8
+ const behaviorEvidenceKinds=/(?:test|trace|proof|verify|verification|benchmark|behavior|runtime|simulation|contract)/i;
9
+
10
+ export function classifyNativeSourceMergeConflicts(input){
11
+ const conflictClasses=dedupeConflictRecords([
12
+ ...sameSymbolEditConflicts(input),
13
+ ...deleteModifyConflicts(input),
14
+ ...shiftedCodeConflicts(input),
15
+ ...duplicateSignatureConflicts(input),
16
+ ...dependencyDriftConflicts(input),
17
+ ...behaviorEvidenceNeededConflicts(input)
18
+ ]);
19
+ return{conflictClasses,conflictSummary:summarizeSemanticMergeConflicts(conflictClasses,{readiness:input.readiness,conflictKeys:input.conflictKeys,sourcePath:input.sourcePath,language:input.language})};
20
+ }
21
+
22
+ export function summarizeSemanticMergeConflicts(conflictClasses=[],context={}){
23
+ const records=(conflictClasses??[]).filter(Boolean);
24
+ const readiness=records.reduce((current,record)=>maxSemanticMergeReadiness(current,normalizeSemanticMergeReadiness(record.readiness)??'ready'),normalizeSemanticMergeReadiness(context.readiness)??'ready');
25
+ return{schema:'frontier.lang.semanticMergeConflictSummary.v1',total:records.length,classes:uniqueStrings(records.map((record)=>record.class)),byClass:countBy(records.map((record)=>record.class)),byRisk:countBy(records.map((record)=>record.risk??'medium')),highestRisk:highestRisk(records),readiness,riskScore:semanticMergeConflictRiskScore({conflictClasses:records,conflictSummary:{readiness}}),conflictKeys:uniqueStrings([...(context.conflictKeys??[]),...records.flatMap((record)=>record.conflictKeys??[])]),language:context.language,sourcePath:context.sourcePath};
26
+ }
27
+
28
+ export function semanticMergeConflictRiskScore(candidateOrSummary){
29
+ const records=candidateOrSummary?.conflictClasses??candidateOrSummary?.metadata?.conflictClasses??[];
30
+ const summary=candidateOrSummary?.conflictSummary??candidateOrSummary?.metadata?.conflictSummary??candidateOrSummary;
31
+ const classScore=Math.max(0,...records.map((record)=>classWeight[record.class]??1));
32
+ const riskScore=Math.max(0,...records.map((record)=>riskRank[record.risk]??2));
33
+ const readinessScore=readinessRank[summary?.readiness??candidateOrSummary?.readiness]??2;
34
+ return classScore*100+riskScore*10+readinessScore;
35
+ }
36
+
37
+ export function querySemanticMergeConflictClasses(candidates,options={}){
38
+ const list=Array.isArray(candidates)?candidates:[candidates].filter(Boolean);
39
+ const classes=new Set(queryList(options.class??options.classes));
40
+ const risks=new Set(queryList(options.risk??options.risks));
41
+ const readinesses=new Set(queryList(options.readiness??options.readinesses));
42
+ const conflictKey=options.conflictKey?String(options.conflictKey):undefined;
43
+ const records=[];
44
+ for(const candidate of list){
45
+ for(const record of candidate?.conflictClasses??candidate?.metadata?.conflictClasses??[]){
46
+ if(classes.size&&!classes.has(record.class))continue;
47
+ if(risks.size&&!risks.has(record.risk))continue;
48
+ if(readinesses.size&&!readinesses.has(record.readiness))continue;
49
+ if(conflictKey&&!(record.conflictKeys??[]).includes(conflictKey))continue;
50
+ records.push({...record,candidateId:candidate.id,candidateReadiness:candidate.readiness,candidateRiskScore:semanticMergeConflictRiskScore(candidate)});
51
+ }
52
+ }
53
+ return options.sort===false?records:records.sort(compareConflictClassRecords);
54
+ }
55
+
56
+ export function sortSemanticMergeCandidatesByConflictRisk(candidates,options={}){
57
+ const sorted=[...(candidates??[])].sort((left,right)=>semanticMergeConflictRiskScore(right)-semanticMergeConflictRiskScore(left)||(readinessRank[right?.readiness]??2)-(readinessRank[left?.readiness]??2)||String(left?.id??'').localeCompare(String(right?.id??'')));
58
+ return options.desc===false?sorted.reverse():sorted;
59
+ }
60
+
61
+ function sameSymbolEditConflicts(input){
62
+ return(input.changedSymbols??[]).filter((symbol)=>symbol.changeKind==='modified').map((symbol)=>conflictRecord('same-symbol-edit',{id:`conflict_${idFragment(symbol.id??symbol.key)}_same_symbol_edit`,risk:'medium',readiness:symbol.readiness,conflictKeys:[symbol.conflictKey],symbolIds:[symbol.id],regionKeys:[symbol.beforeOwnershipKey,symbol.afterOwnershipKey,symbol.ownershipKey],evidenceIds:evidenceIds(input.evidence),reasonCode:'same-symbol-edited',language:input.language,sourcePath:input.sourcePath,metadata:{changeKind:symbol.changeKind,beforeSignatureHash:symbol.beforeSignatureHash,afterSignatureHash:symbol.afterSignatureHash,signatureChanged:hashChanged(symbol.beforeSignatureHash,symbol.afterSignatureHash),spanChanged:hashChanged(symbol.beforeSpanHash,symbol.afterSpanHash),ownershipChanged:(symbol.beforeOwnershipKey??'')!==(symbol.afterOwnershipKey??''),nativeAstNodeChanged:(symbol.beforeNativeAstNodeId??'')!==(symbol.afterNativeAstNodeId??'')}}));
63
+ }
64
+
65
+ function deleteModifyConflicts(input){
66
+ const records=(input.changedSymbols??[]).filter((symbol)=>symbol.changeKind==='removed').map((symbol)=>conflictRecord('delete-modify',{id:`conflict_${idFragment(symbol.id??symbol.key)}_delete_modify`,risk:'high',readiness:symbol.readiness,conflictKeys:[symbol.conflictKey],symbolIds:[symbol.id],regionKeys:[symbol.beforeOwnershipKey,symbol.ownershipKey],evidenceIds:evidenceIds(input.evidence),reasonCode:'symbol-deleted',language:input.language,sourcePath:input.sourcePath,metadata:{changeKind:symbol.changeKind,beforeSignatureHash:symbol.beforeSignatureHash}}));
67
+ for(const region of(input.changedRegions??[]).filter((entry)=>entry.changeKind==='removed'))records.push(conflictRecord('delete-modify',{id:`conflict_${idFragment(region.id??region.key)}_region_delete_modify`,risk:'high',readiness:input.readiness,conflictKeys:[region.conflictKey],symbolIds:[region.symbolId],regionKeys:[region.key],evidenceIds:evidenceIds(input.evidence),reasonCode:'ownership-region-deleted',language:input.language,sourcePath:input.sourcePath,metadata:{changeKind:region.changeKind,regionKind:region.regionKind}}));
68
+ if(input.before&&!input.after&&records.length===0)records.push(conflictRecord('delete-modify',{id:`conflict_${idFragment(input.sourcePath??input.language??'source')}_source_delete_modify`,risk:'high',readiness:input.readiness,conflictKeys:input.conflictKeys,evidenceIds:evidenceIds(input.evidence),reasonCode:'source-deleted',language:input.language,sourcePath:input.sourcePath,metadata:{beforeImportId:input.before?.id}}));
69
+ return records;
70
+ }
71
+
72
+ function shiftedCodeConflicts(input){
73
+ const records=(input.changedSymbols??[]).filter((symbol)=>symbol.changeKind==='modified'&&!hashChanged(symbol.beforeSignatureHash,symbol.afterSignatureHash)).filter((symbol)=>hashChanged(symbol.beforeSpanHash,symbol.afterSpanHash)||(symbol.beforeSourceSpan?.startLine??0)!==(symbol.afterSourceSpan?.startLine??0)||(symbol.beforeNativeAstNodeId??'')!==(symbol.afterNativeAstNodeId??'')||(symbol.beforeOwnershipKey??'')!==(symbol.afterOwnershipKey??'')).map((symbol)=>conflictRecord('shifted-code',{id:`conflict_${idFragment(symbol.id??symbol.key)}_shifted_code`,risk:'medium',readiness:symbol.readiness,conflictKeys:[symbol.conflictKey],symbolIds:[symbol.id],regionKeys:[symbol.beforeOwnershipKey,symbol.afterOwnershipKey,symbol.ownershipKey],evidenceIds:evidenceIds(input.evidence),reasonCode:'same-signature-location-shifted',language:input.language,sourcePath:input.sourcePath,metadata:{beforeSpanHash:symbol.beforeSpanHash,afterSpanHash:symbol.afterSpanHash,beforeLine:symbol.beforeSourceSpan?.startLine,afterLine:symbol.afterSourceSpan?.startLine,beforeNativeAstNodeId:symbol.beforeNativeAstNodeId,afterNativeAstNodeId:symbol.afterNativeAstNodeId}}));
74
+ if(input.sourceChanged&&(input.changedSymbols??[]).length===0)records.push(conflictRecord('shifted-code',{id:`conflict_${idFragment(input.sourcePath??input.language??'source')}_file_shifted_code`,risk:'medium',readiness:input.readiness,conflictKeys:input.conflictKeys,evidenceIds:evidenceIds(input.evidence),reasonCode:'source-hash-changed-without-symbol-anchor',language:input.language,sourcePath:input.sourcePath,metadata:{beforeHash:input.beforeHash,afterHash:input.afterHash}}));
75
+ return records;
76
+ }
77
+
78
+ function duplicateSignatureConflicts(input){
79
+ const changedKeys=new Set((input.changedSymbols??[]).map((symbol)=>symbol.key));
80
+ return duplicateSignatureGroups(input.afterSymbols??[]).filter((group)=>group.symbols.some((symbol)=>changedKeys.size===0||changedKeys.has(symbol.key))).map((group)=>conflictRecord('duplicate-signature',{id:`conflict_${idFragment(group.signatureHash)}_duplicate_signature`,risk:'high',readiness:input.readiness,conflictKeys:group.symbols.map((symbol)=>symbol.conflictKey),symbolIds:group.symbols.map((symbol)=>symbol.id),regionKeys:group.symbols.map((symbol)=>symbol.ownershipKey),evidenceIds:evidenceIds(input.evidence),reasonCode:'duplicate-signature-hash',language:input.language,sourcePath:input.sourcePath,metadata:{signatureHash:group.signatureHash,symbolNames:group.symbols.map((symbol)=>symbol.name).filter(Boolean),symbolCount:group.symbols.length}}));
81
+ }
82
+
83
+ function dependencyDriftConflicts(input){
84
+ const before=dependencyFingerprints(input.before);
85
+ const after=dependencyFingerprints(input.after);
86
+ const added=after.filter((fingerprint)=>!before.includes(fingerprint));
87
+ const removed=before.filter((fingerprint)=>!after.includes(fingerprint));
88
+ return!added.length&&!removed.length?[]:[conflictRecord('dependency-drift',{id:`conflict_${idFragment(input.sourcePath??input.language??'source')}_dependency_drift`,risk:'medium',readiness:input.readiness,conflictKeys:input.conflictKeys,evidenceIds:evidenceIds(input.evidence),reasonCode:'semantic-dependency-fingerprint-changed',language:input.language,sourcePath:input.sourcePath,metadata:{addedFingerprints:added,removedFingerprints:removed,beforeDependencyCount:before.length,afterDependencyCount:after.length}})];
89
+ }
90
+
91
+ function behaviorEvidenceNeededConflicts(input){
92
+ const changedSymbols=(input.changedSymbols??[]).filter((symbol)=>symbol.changeKind!=='unchanged');
93
+ if((!changedSymbols.length&&!input.sourceChanged)||hasBehaviorEvidence(input.evidence))return[];
94
+ return[conflictRecord('behavior-evidence-needed',{id:`conflict_${idFragment(input.sourcePath??input.language??'source')}_behavior_evidence_needed`,risk:'medium',readiness:maxSemanticMergeReadiness(input.readiness??'ready','needs-review'),conflictKeys:input.conflictKeys,symbolIds:changedSymbols.map((symbol)=>symbol.id),regionKeys:uniqueStrings([...changedSymbols.map((symbol)=>symbol.beforeOwnershipKey),...changedSymbols.map((symbol)=>symbol.afterOwnershipKey),...(input.changedRegions??[]).map((region)=>region.key)]),evidenceIds:evidenceIds(input.evidence),reasonCode:'missing-behavior-evidence',language:input.language,sourcePath:input.sourcePath,metadata:{changedSymbols:changedSymbols.length,changedRegions:input.changedRegions?.length??0,acceptedEvidenceKinds:['test','trace','proof','verification','benchmark','behavior']}})];
95
+ }
96
+
97
+ function conflictRecord(conflictClass,input){
98
+ return{schema:'frontier.lang.semanticMergeConflictClass.v1',id:input.id,class:conflictClass,risk:input.risk,readiness:normalizeSemanticMergeReadiness(input.readiness)??riskReadiness(input.risk),conflictKeys:uniqueStrings(input.conflictKeys),symbolIds:uniqueStrings(input.symbolIds),regionKeys:uniqueStrings(input.regionKeys),evidenceIds:uniqueStrings(input.evidenceIds),reasonCode:input.reasonCode,language:input.language,sourcePath:input.sourcePath,metadata:compactRecord(input.metadata)};
99
+ }
100
+
101
+ function dedupeConflictRecords(records){
102
+ const seen=new Set();
103
+ const result=[];
104
+ for(const record of records){const key=`${record.class}:${record.id}:${record.conflictKeys.join('|')}`;if(seen.has(key))continue;seen.add(key);result.push(record);}
105
+ return result.sort(compareConflictClassRecords);
106
+ }
107
+ function compareConflictClassRecords(left,right){return(riskRank[right.risk]??2)-(riskRank[left.risk]??2)||(classWeight[right.class]??1)-(classWeight[left.class]??1)||String(left.id??'').localeCompare(String(right.id??''));}
108
+ function duplicateSignatureGroups(symbols){const groups=new Map();for(const symbol of symbols??[]){if(!symbol?.signatureHash)continue;groups.set(symbol.signatureHash,[...(groups.get(symbol.signatureHash)??[]),symbol]);}return[...groups.entries()].filter(([,values])=>values.length>1).map(([signatureHash,values])=>({signatureHash,symbols:values}));}
109
+ function dependencyFingerprints(imported){return uniqueStrings((imported?.semanticIndex?.relations??[]).filter((relation)=>dependencyPredicates.test(String(relation.predicate??''))).map((relation)=>[relation.sourceId,relation.predicate,relation.targetId,relation.metadata?.module,relation.metadata?.importPath].map((part)=>String(part??'')).join('|'))).sort();}
110
+ function hasBehaviorEvidence(evidence){return(evidence??[]).some((record)=>record?.status!=='failed'&&(behaviorEvidenceKinds.test(String(record?.kind??record?.metadata?.kind??''))||record?.metadata?.behaviorEvidence===true||(Array.isArray(record?.metadata?.evidenceKinds)&&record.metadata.evidenceKinds.some((value)=>behaviorEvidenceKinds.test(String(value))))));}
111
+ function evidenceIds(evidence){return uniqueStrings((evidence??[]).map((record)=>record?.id));}
112
+ function highestRisk(records){const max=Math.max(0,...records.map((record)=>riskRank[record.risk]??2));return Object.keys(riskRank).find((risk)=>riskRank[risk]===max)??'low';}
113
+ function riskReadiness(risk){return risk==='high'||risk==='medium'?'needs-review':'ready-with-losses';}
114
+ function hashChanged(before,after){return Boolean(before||after)&&(before??'')!==(after??'');}
115
+ function queryList(value){if(value===undefined||value===null)return[];return Array.isArray(value)?value.map(String):[String(value)];}
116
+ function compactRecord(value){return Object.fromEntries(Object.entries(value??{}).filter(([,entry])=>entry!==undefined));}