@shapeshift-labs/frontier-lang-compiler 0.2.40 → 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.
- package/README.md +100 -0
- package/bench/compile-suite.mjs +31 -0
- package/bench/native-adapters.mjs +32 -0
- package/bench/native-import-suite.mjs +79 -0
- package/bench/native-matrix-suite.mjs +64 -0
- package/bench/native-transform-suite.mjs +125 -0
- package/bench/smoke.mjs +80 -375
- package/bench/source-change-suite.mjs +111 -0
- package/dist/coverage-matrix-profiles.js +19 -0
- package/dist/declarations/adapter-coverage.d.ts +181 -0
- package/dist/declarations/compile.d.ts +110 -0
- package/dist/declarations/import-adapter-core.d.ts +233 -0
- package/dist/declarations/import-adapter-options-native.d.ts +185 -0
- package/dist/declarations/import-adapter-options-platform.d.ts +204 -0
- package/dist/declarations/language-adapter-package-contracts.d.ts +190 -0
- package/dist/declarations/native-diff.d.ts +240 -0
- package/dist/declarations/native-import-contracts.d.ts +211 -0
- package/dist/declarations/native-import-coverage.d.ts +107 -0
- package/dist/declarations/native-import-losses.d.ts +199 -0
- package/dist/declarations/native-parser-features.d.ts +227 -0
- package/dist/declarations/native-parser-formats.d.ts +132 -0
- package/dist/declarations/native-project-admission.d.ts +160 -0
- package/dist/declarations/native-project.d.ts +209 -0
- package/dist/declarations/projection-coverage.d.ts +146 -0
- package/dist/declarations/projection-readiness.d.ts +115 -0
- package/dist/declarations/roundtrip.d.ts +200 -0
- package/dist/declarations/runtime.d.ts +135 -0
- package/dist/declarations/semantic-history.d.ts +188 -0
- package/dist/declarations/semantic-merge-conflicts.d.ts +82 -0
- package/dist/declarations/semantic-patch-bundle.d.ts +210 -0
- package/dist/declarations/semantic-sidecar-admission.d.ts +61 -0
- package/dist/declarations/semantic-sidecar.d.ts +317 -0
- package/dist/declarations/semantic-slice.d.ts +228 -0
- package/dist/declarations/source-preservation.d.ts +126 -0
- package/dist/declarations/target-adapters.d.ts +138 -0
- package/dist/declarations/universal-capability.d.ts +148 -0
- package/dist/declarations/universal-dialects.d.ts +242 -0
- package/dist/index.d.ts +28 -2570
- package/dist/index.js +76 -16575
- package/dist/internal/index-impl/ExternalSemanticIndexFormats.js +8 -0
- package/dist/internal/index-impl/FrontierCompileTargets.js +7 -0
- package/dist/internal/index-impl/NativeImportFeatureEvidencePolicies.js +111 -0
- package/dist/internal/index-impl/NativeImportLossKinds.js +24 -0
- package/dist/internal/index-impl/NativeImportReadinessBySeverity.js +6 -0
- package/dist/internal/index-impl/NativeImportRoundtripReadinessStatuses.js +7 -0
- package/dist/internal/index-impl/NativeImportTaxonomyKinds.js +19 -0
- package/dist/internal/index-impl/adapterCoverageCapabilityRow.js +13 -0
- package/dist/internal/index-impl/adapterCoverageSnapshotFromSummary.js +13 -0
- package/dist/internal/index-impl/adapterCoverageSourcePreservation.js +6 -0
- package/dist/internal/index-impl/adapterDiagnosticToLoss.js +23 -0
- package/dist/internal/index-impl/adapterDiagnosticsEvidence.js +27 -0
- package/dist/internal/index-impl/addLspSemanticTokens.js +32 -0
- package/dist/internal/index-impl/addLspSymbol.js +44 -0
- package/dist/internal/index-impl/addSet.js +5 -0
- package/dist/internal/index-impl/attachExternalOwnership.js +79 -0
- package/dist/internal/index-impl/attachNativeChangeRegionProjectionMetadata.js +13 -0
- package/dist/internal/index-impl/attachNativeImportLossSummary.js +11 -0
- package/dist/internal/index-impl/canonicalTargets.js +7 -0
- package/dist/internal/index-impl/clangAstChildEntries.js +9 -0
- package/dist/internal/index-impl/clangAstDeclaration.js +44 -0
- package/dist/internal/index-impl/clangAstKind.js +7 -0
- package/dist/internal/index-impl/clangAstNodeValue.js +7 -0
- package/dist/internal/index-impl/clangAstRoot.js +14 -0
- package/dist/internal/index-impl/clangDeclarationAction.js +7 -0
- package/dist/internal/index-impl/clangDeclarationName.js +10 -0
- package/dist/internal/index-impl/clangIncludePath.js +8 -0
- package/dist/internal/index-impl/clangLiteralValue.js +6 -0
- package/dist/internal/index-impl/clangLocPosition.js +12 -0
- package/dist/internal/index-impl/clangLocationKind.js +8 -0
- package/dist/internal/index-impl/clangPreprocessorKind.js +3 -0
- package/dist/internal/index-impl/clangPreprocessorRecords.js +8 -0
- package/dist/internal/index-impl/clangTypeName.js +9 -0
- package/dist/internal/index-impl/classifyNativeImportReadiness.js +9 -0
- package/dist/internal/index-impl/classifyNativeImportRoundtripReadiness.js +129 -0
- package/dist/internal/index-impl/compileFrontierDocument.js +28 -0
- package/dist/internal/index-impl/compileFrontierSource.js +8 -0
- package/dist/internal/index-impl/compileNativeSource.js +186 -0
- package/dist/internal/index-impl/compileTargetLanguage.js +5 -0
- package/dist/internal/index-impl/coverageMatrixContext.js +20 -0
- package/dist/internal/index-impl/createAstNormalizationContext.js +14 -0
- package/dist/internal/index-impl/createBabelNativeImporterAdapter.js +18 -0
- package/dist/internal/index-impl/createCSharpRoslynNativeImporterAdapter.js +68 -0
- package/dist/internal/index-impl/createClangAstNativeImporterAdapter.js +59 -0
- package/dist/internal/index-impl/createEstreeNativeImporterAdapter.js +12 -0
- package/dist/internal/index-impl/createGoAstNativeImporterAdapter.js +63 -0
- package/dist/internal/index-impl/createJavaAstNativeImporterAdapter.js +66 -0
- package/dist/internal/index-impl/createKotlinPsiNativeImporterAdapter.js +73 -0
- package/dist/internal/index-impl/createLightweightNativeImport.js +154 -0
- package/dist/internal/index-impl/createNativeImportCoverageMatrix.js +5 -0
- package/dist/internal/index-impl/createNativeImportFromCSharpRoslyn.js +39 -0
- package/dist/internal/index-impl/createNativeImportFromClangAst.js +36 -0
- package/dist/internal/index-impl/createNativeImportFromGoAst.js +35 -0
- package/dist/internal/index-impl/createNativeImportFromJavaAst.js +39 -0
- package/dist/internal/index-impl/createNativeImportFromKotlinPsi.js +47 -0
- package/dist/internal/index-impl/createNativeImportFromPythonAst.js +30 -0
- package/dist/internal/index-impl/createNativeImportFromRustSyn.js +30 -0
- package/dist/internal/index-impl/createNativeImportFromSwiftSyntax.js +37 -0
- package/dist/internal/index-impl/createNativeImportFromSyntaxAst.js +36 -0
- package/dist/internal/index-impl/createNativeImportFromTreeSitter.js +125 -0
- package/dist/internal/index-impl/createNativeImportFromTypeScriptAst.js +24 -0
- package/dist/internal/index-impl/createNativeImportResultContract.js +78 -0
- package/dist/internal/index-impl/createNativeParserAstFormatMatrix.js +5 -0
- package/dist/internal/index-impl/createNativeParserFeatureMatrix.js +5 -0
- package/dist/internal/index-impl/createNativeProjectImportResult.js +126 -0
- package/dist/internal/index-impl/createNativeRoundtripEvidence.js +117 -0
- package/dist/internal/index-impl/createNativeSourcePreservation.js +64 -0
- package/dist/internal/index-impl/createProjectImportAdmissionRecord.js +91 -0
- package/dist/internal/index-impl/createProjectionReadinessMatrix.js +5 -0
- package/dist/internal/index-impl/createProjectionTargetLossMatrix.js +5 -0
- package/dist/internal/index-impl/createPythonAstNativeImporterAdapter.js +52 -0
- package/dist/internal/index-impl/createRustSynNativeImporterAdapter.js +56 -0
- package/dist/internal/index-impl/createSemanticImportSidecar.js +105 -0
- package/dist/internal/index-impl/createSemanticImportSidecarAdmission.js +160 -0
- package/dist/internal/index-impl/createSemanticSlice.js +137 -0
- package/dist/internal/index-impl/createSwiftSyntaxNativeImporterAdapter.js +62 -0
- package/dist/internal/index-impl/createTreeSitterNativeImporterAdapter.js +58 -0
- package/dist/internal/index-impl/createTypeScriptCompilerNativeImporterAdapter.js +45 -0
- package/dist/internal/index-impl/createUniversalAstFromDocument.js +15 -0
- package/dist/internal/index-impl/createUniversalCapabilityMatrix.js +5 -0
- package/dist/internal/index-impl/csharpEvidenceSummary.js +18 -0
- package/dist/internal/index-impl/csharpGeneratedCodeLoss.js +20 -0
- package/dist/internal/index-impl/csharpGeneratedCodeMarker.js +16 -0
- package/dist/internal/index-impl/csharpGeneratedSourcePath.js +3 -0
- package/dist/internal/index-impl/csharpRoslynChildEntries.js +18 -0
- package/dist/internal/index-impl/csharpRoslynChildWithParent.js +6 -0
- package/dist/internal/index-impl/csharpRoslynDeclarationName.js +11 -0
- package/dist/internal/index-impl/csharpRoslynDeclarations.js +53 -0
- package/dist/internal/index-impl/csharpRoslynDirectiveKind.js +3 -0
- package/dist/internal/index-impl/csharpRoslynHasBody.js +3 -0
- package/dist/internal/index-impl/csharpRoslynKind.js +11 -0
- package/dist/internal/index-impl/csharpRoslynLiteralValue.js +5 -0
- package/dist/internal/index-impl/csharpRoslynMethodLikeKind.js +7 -0
- package/dist/internal/index-impl/csharpRoslynModifierNames.js +16 -0
- package/dist/internal/index-impl/csharpRoslynName.js +13 -0
- package/dist/internal/index-impl/csharpRoslynNodeValue.js +7 -0
- package/dist/internal/index-impl/csharpRoslynOperatorName.js +8 -0
- package/dist/internal/index-impl/csharpRoslynPosition.js +27 -0
- package/dist/internal/index-impl/csharpRoslynPositionKind.js +6 -0
- package/dist/internal/index-impl/csharpRoslynProblemNode.js +14 -0
- package/dist/internal/index-impl/csharpRoslynRecoveredKind.js +5 -0
- package/dist/internal/index-impl/csharpRoslynRoot.js +15 -0
- package/dist/internal/index-impl/csharpRoslynTypeDeclarationKind.js +8 -0
- package/dist/internal/index-impl/csharpRoslynTypeDeclarationSymbolKind.js +5 -0
- package/dist/internal/index-impl/csharpRoslynTypeName.js +19 -0
- package/dist/internal/index-impl/csharpRoslynUsingPath.js +5 -0
- package/dist/internal/index-impl/csharpRoslynVariableNames.js +10 -0
- package/dist/internal/index-impl/declarationRecord.js +11 -0
- package/dist/internal/index-impl/declarationSemanticCoverage.js +10 -0
- package/dist/internal/index-impl/diffNativeOwnershipRegions.js +19 -0
- package/dist/internal/index-impl/diffNativeSourceImports.js +166 -0
- package/dist/internal/index-impl/diffNativeSources.js +25 -0
- package/dist/internal/index-impl/diffNativeSymbols.js +41 -0
- package/dist/internal/index-impl/effectiveAdapterExactness.js +6 -0
- package/dist/internal/index-impl/effectiveNativeImporterAdapterCoverage.js +21 -0
- package/dist/internal/index-impl/emitForTarget.js +4 -0
- package/dist/internal/index-impl/emitForTargetWithSourceMap.js +11 -0
- package/dist/internal/index-impl/ensureTrailingNewline.js +4 -0
- package/dist/internal/index-impl/expandSemanticSliceSelection.js +51 -0
- package/dist/internal/index-impl/externalDiagnosticFact.js +22 -0
- package/dist/internal/index-impl/externalDiagnosticLoss.js +20 -0
- package/dist/internal/index-impl/externalDiagnosticSeverity.js +7 -0
- package/dist/internal/index-impl/externalDocument.js +12 -0
- package/dist/internal/index-impl/externalFact.js +10 -0
- package/dist/internal/index-impl/externalLanguageNameByNumber.js +23 -0
- package/dist/internal/index-impl/externalOccurrence.js +13 -0
- package/dist/internal/index-impl/externalRelation.js +10 -0
- package/dist/internal/index-impl/externalRelationPredicateForOccurrence.js +8 -0
- package/dist/internal/index-impl/externalSemanticBase.js +15 -0
- package/dist/internal/index-impl/externalSemanticCoverageLoss.js +17 -0
- package/dist/internal/index-impl/externalSemanticEvidence.js +16 -0
- package/dist/internal/index-impl/externalSemanticSourceMapMappings.js +26 -0
- package/dist/internal/index-impl/externalSymbol.js +14 -0
- package/dist/internal/index-impl/externalSymbolKindByNumber.js +32 -0
- package/dist/internal/index-impl/fileLevelNativeChangeRegion.js +23 -0
- package/dist/internal/index-impl/findSemanticImportRegion.js +6 -0
- package/dist/internal/index-impl/freezeNativeImporterAdapterCoverageSnapshot.js +13 -0
- package/dist/internal/index-impl/getNativeImportFeatureEvidencePolicy.js +5 -0
- package/dist/internal/index-impl/getNativeParserAstFormatProfile.js +4 -0
- package/dist/internal/index-impl/goAstChildEntries.js +23 -0
- package/dist/internal/index-impl/goAstDeclarationName.js +9 -0
- package/dist/internal/index-impl/goAstDeclarations.js +30 -0
- package/dist/internal/index-impl/goAstIdentName.js +5 -0
- package/dist/internal/index-impl/goAstImportPath.js +7 -0
- package/dist/internal/index-impl/goAstKind.js +15 -0
- package/dist/internal/index-impl/goAstLiteralValue.js +5 -0
- package/dist/internal/index-impl/goAstNodeValue.js +7 -0
- package/dist/internal/index-impl/goAstPackageName.js +5 -0
- package/dist/internal/index-impl/goAstPosition.js +30 -0
- package/dist/internal/index-impl/goAstPositionKind.js +6 -0
- package/dist/internal/index-impl/goAstReceiverName.js +8 -0
- package/dist/internal/index-impl/goAstRoot.js +12 -0
- package/dist/internal/index-impl/goAstTokenName.js +6 -0
- package/dist/internal/index-impl/goAstTypeName.js +27 -0
- package/dist/internal/index-impl/goAstTypeSpecSymbolKind.js +8 -0
- package/dist/internal/index-impl/goAstValueSpecName.js +4 -0
- package/dist/internal/index-impl/goAstValueSpecNames.js +7 -0
- package/dist/internal/index-impl/goBadAstKind.js +3 -0
- package/dist/internal/index-impl/goGeneratedCodeMarker.js +7 -0
- package/dist/internal/index-impl/goReceiverFieldCount.js +4 -0
- package/dist/internal/index-impl/goTypeEvidenceSummary.js +9 -0
- package/dist/internal/index-impl/hasNativeExactAstEvidence.js +13 -0
- package/dist/internal/index-impl/hashNativeSpanText.js +6 -0
- package/dist/internal/index-impl/identifierName.js +9 -0
- package/dist/internal/index-impl/ignoredCSharpRoslynField.js +31 -0
- package/dist/internal/index-impl/ignoredClangAstField.js +19 -0
- package/dist/internal/index-impl/ignoredGoAstField.js +23 -0
- package/dist/internal/index-impl/ignoredJavaAstField.js +29 -0
- package/dist/internal/index-impl/ignoredKotlinPsiField.js +26 -0
- package/dist/internal/index-impl/ignoredPythonAstField.js +17 -0
- package/dist/internal/index-impl/ignoredRustSynField.js +11 -0
- package/dist/internal/index-impl/ignoredSwiftSyntaxField.js +27 -0
- package/dist/internal/index-impl/ignoredSyntaxField.js +15 -0
- package/dist/internal/index-impl/importExternalSemanticIndex.js +141 -0
- package/dist/internal/index-impl/importNativeProject.js +26 -0
- package/dist/internal/index-impl/importNativeSource.js +317 -0
- package/dist/internal/index-impl/inferExternalSemanticIndexFormat.js +46 -0
- package/dist/internal/index-impl/inferredAdapterCoverageNotes.js +8 -0
- package/dist/internal/index-impl/inferredAdapterExactness.js +5 -0
- package/dist/internal/index-impl/inferredSemanticCoverageLevel.js +5 -0
- package/dist/internal/index-impl/isCSharpRoslynNode.js +4 -0
- package/dist/internal/index-impl/isClangAstNode.js +4 -0
- package/dist/internal/index-impl/isGoAstNode.js +4 -0
- package/dist/internal/index-impl/isJavaAstNode.js +4 -0
- package/dist/internal/index-impl/isKotlinPsiNode.js +4 -0
- package/dist/internal/index-impl/isNativeSourceImportResult.js +3 -0
- package/dist/internal/index-impl/isPythonAstNode.js +4 -0
- package/dist/internal/index-impl/isRustSynAstNode.js +4 -0
- package/dist/internal/index-impl/isSwiftSyntaxNode.js +4 -0
- package/dist/internal/index-impl/isSyntaxAstNode.js +3 -0
- package/dist/internal/index-impl/javaAnnotationProcessingSummary.js +13 -0
- package/dist/internal/index-impl/javaAstChildEntries.js +18 -0
- package/dist/internal/index-impl/javaAstChildWithParent.js +6 -0
- package/dist/internal/index-impl/javaAstDeclarationName.js +11 -0
- package/dist/internal/index-impl/javaAstDeclarations.js +35 -0
- package/dist/internal/index-impl/javaAstFieldNames.js +7 -0
- package/dist/internal/index-impl/javaAstHasBody.js +3 -0
- package/dist/internal/index-impl/javaAstImportPath.js +8 -0
- package/dist/internal/index-impl/javaAstKind.js +12 -0
- package/dist/internal/index-impl/javaAstLiteralValue.js +5 -0
- package/dist/internal/index-impl/javaAstModifierNames.js +16 -0
- package/dist/internal/index-impl/javaAstName.js +14 -0
- package/dist/internal/index-impl/javaAstNodeValue.js +8 -0
- package/dist/internal/index-impl/javaAstPackageName.js +5 -0
- package/dist/internal/index-impl/javaAstPosition.js +32 -0
- package/dist/internal/index-impl/javaAstPositionKind.js +7 -0
- package/dist/internal/index-impl/javaAstRoot.js +14 -0
- package/dist/internal/index-impl/javaAstTypeName.js +22 -0
- package/dist/internal/index-impl/javaBindingEvidenceSummary.js +10 -0
- package/dist/internal/index-impl/javaGeneratedCodeLoss.js +20 -0
- package/dist/internal/index-impl/javaGeneratedCodeMarker.js +16 -0
- package/dist/internal/index-impl/javaLombokAnnotationMarker.js +6 -0
- package/dist/internal/index-impl/javaPathEvidenceSummary.js +14 -0
- package/dist/internal/index-impl/javaProblemNode.js +3 -0
- package/dist/internal/index-impl/javaRecoveredAstKind.js +4 -0
- package/dist/internal/index-impl/javaTypeDeclarationKind.js +7 -0
- package/dist/internal/index-impl/javaTypeDeclarationSymbolKind.js +5 -0
- package/dist/internal/index-impl/kotlinCompilerPluginAnnotationNode.js +5 -0
- package/dist/internal/index-impl/kotlinContractNode.js +3 -0
- package/dist/internal/index-impl/kotlinCoroutineNode.js +8 -0
- package/dist/internal/index-impl/kotlinEvidenceSummary.js +21 -0
- package/dist/internal/index-impl/kotlinExpectActualNode.js +5 -0
- package/dist/internal/index-impl/kotlinGeneratedCodeLoss.js +22 -0
- package/dist/internal/index-impl/kotlinGeneratedCodeMarker.js +6 -0
- package/dist/internal/index-impl/kotlinGeneratedSourcePath.js +3 -0
- package/dist/internal/index-impl/kotlinPsiAnnotationNames.js +10 -0
- package/dist/internal/index-impl/kotlinPsiChildEntries.js +18 -0
- package/dist/internal/index-impl/kotlinPsiChildWithParent.js +6 -0
- package/dist/internal/index-impl/kotlinPsiDeclarationName.js +14 -0
- package/dist/internal/index-impl/kotlinPsiDeclarations.js +37 -0
- package/dist/internal/index-impl/kotlinPsiHasBody.js +3 -0
- package/dist/internal/index-impl/kotlinPsiImportPath.js +8 -0
- package/dist/internal/index-impl/kotlinPsiKind.js +13 -0
- package/dist/internal/index-impl/kotlinPsiModifiers.js +22 -0
- package/dist/internal/index-impl/kotlinPsiName.js +14 -0
- package/dist/internal/index-impl/kotlinPsiNodeValue.js +7 -0
- package/dist/internal/index-impl/kotlinPsiPackageName.js +8 -0
- package/dist/internal/index-impl/kotlinPsiPosition.js +27 -0
- package/dist/internal/index-impl/kotlinPsiPositionKind.js +6 -0
- package/dist/internal/index-impl/kotlinPsiProblemNode.js +10 -0
- package/dist/internal/index-impl/kotlinPsiRecoveredKind.js +5 -0
- package/dist/internal/index-impl/kotlinPsiRoot.js +15 -0
- package/dist/internal/index-impl/kotlinPsiTypeDeclarationKind.js +5 -0
- package/dist/internal/index-impl/kotlinPsiTypeDeclarationSymbolKind.js +8 -0
- package/dist/internal/index-impl/kotlinPsiTypeName.js +18 -0
- package/dist/internal/index-impl/kotlinPsiVariableNames.js +7 -0
- package/dist/internal/index-impl/kotlinScriptLoss.js +22 -0
- package/dist/internal/index-impl/kotlinUnsupportedSemanticLoss.js +23 -0
- package/dist/internal/index-impl/lineColumnForOffset.js +15 -0
- package/dist/internal/index-impl/literalSyntaxValue.js +4 -0
- package/dist/internal/index-impl/lossSeverityRank.js +6 -0
- package/dist/internal/index-impl/lspSymbolKindByNumber.js +19 -0
- package/dist/internal/index-impl/mapDiffSymbols.js +39 -0
- package/dist/internal/index-impl/matchingNativeTargetProjectionAdapter.js +4 -0
- package/dist/internal/index-impl/maxSemanticCoverageLevel.js +6 -0
- package/dist/internal/index-impl/mergeNativeLosses.js +12 -0
- package/dist/internal/index-impl/mergeSemanticIndexes.js +19 -0
- package/dist/internal/index-impl/mergeSemanticSliceSymbols.js +16 -0
- package/dist/internal/index-impl/missingInjectedParserResult.js +51 -0
- package/dist/internal/index-impl/nameFromExternalSymbol.js +10 -0
- package/dist/internal/index-impl/namedDeclaration.js +5 -0
- package/dist/internal/index-impl/nativeAstNodes.js +4 -0
- package/dist/internal/index-impl/nativeChangeMappingTouchesRegion.js +17 -0
- package/dist/internal/index-impl/nativeChangeProjectionEndpoint.js +28 -0
- package/dist/internal/index-impl/nativeChangeProjectionSourceMapLinks.js +33 -0
- package/dist/internal/index-impl/nativeChangeSpans.js +37 -0
- package/dist/internal/index-impl/nativeChangeSymbolTouchesRegion.js +10 -0
- package/dist/internal/index-impl/nativeChangeTouchedSymbol.js +21 -0
- package/dist/internal/index-impl/nativeChangedRegionProjectionAction.js +7 -0
- package/dist/internal/index-impl/nativeChangedRegionProjectionMetadata.js +49 -0
- package/dist/internal/index-impl/nativeChangedRegionProjectionSpanMetadata.js +12 -0
- package/dist/internal/index-impl/nativeCompileSourceLanguage.js +10 -0
- package/dist/internal/index-impl/nativeCompileTarget.js +10 -0
- package/dist/internal/index-impl/nativeDiffSymbolChanged.js +7 -0
- package/dist/internal/index-impl/nativeDiffSymbolKey.js +7 -0
- package/dist/internal/index-impl/nativeFeatureEvidenceRiskRank.js +6 -0
- package/dist/internal/index-impl/nativeImportCategoryForLossKind.js +16 -0
- package/dist/internal/index-impl/nativeImportEntries.js +4 -0
- package/dist/internal/index-impl/nativeImportFeatureEvidenceHasKey.js +5 -0
- package/dist/internal/index-impl/nativeImportFeatureEvidenceIds.js +10 -0
- package/dist/internal/index-impl/nativeImportFeatureEvidencePolicy.js +14 -0
- package/dist/internal/index-impl/nativeImportFeatureEvidenceReasons.js +8 -0
- package/dist/internal/index-impl/nativeImportFeatureEvidenceValue.js +11 -0
- package/dist/internal/index-impl/nativeImportFeatureEvidenceValuePresent.js +7 -0
- package/dist/internal/index-impl/nativeImportHasExactAstCoverage.js +5 -0
- package/dist/internal/index-impl/nativeImportProjectionContext.js +40 -0
- package/dist/internal/index-impl/nativeImportReadiness.js +6 -0
- package/dist/internal/index-impl/nativeImportReadinessReasons.js +16 -0
- package/dist/internal/index-impl/nativeImportRoundtripParser.js +10 -0
- package/dist/internal/index-impl/nativeImportRoundtripReasons.js +22 -0
- package/dist/internal/index-impl/nativeImportSourcePreservationRecord.js +6 -0
- package/dist/internal/index-impl/nativeImportSourceText.js +6 -0
- package/dist/internal/index-impl/nativeImporterAdapterCapabilityEvidence.js +59 -0
- package/dist/internal/index-impl/nativeImporterAdapterCoverage.js +12 -0
- package/dist/internal/index-impl/nativeJavaScriptImporterDeps.js +12 -0
- package/dist/internal/index-impl/nativeNodeId.js +8 -0
- package/dist/internal/index-impl/nativeProjectionDeclarationKind.js +12 -0
- package/dist/internal/index-impl/nativeProjectionDeclarations.js +48 -0
- package/dist/internal/index-impl/nativeProjectionImportOnlySymbol.js +5 -0
- package/dist/internal/index-impl/nativeProjectionKindForNode.js +12 -0
- package/dist/internal/index-impl/nativeProjectionLineComment.js +5 -0
- package/dist/internal/index-impl/nativeProjectionLoss.js +23 -0
- package/dist/internal/index-impl/nativeProjectionSourceCandidate.js +22 -0
- package/dist/internal/index-impl/nativeProjectionStubHeader.js +11 -0
- package/dist/internal/index-impl/nativeProjectionStubLosses.js +36 -0
- package/dist/internal/index-impl/nativeSourceChangeReasons.js +11 -0
- package/dist/internal/index-impl/nativeSourceChangeSummary.js +13 -0
- package/dist/internal/index-impl/nativeSourceCompileDeclarationGeneratedSpan.js +25 -0
- package/dist/internal/index-impl/nativeSourceCompileDeclarationMappings.js +31 -0
- package/dist/internal/index-impl/nativeSourceCompileEvidence.js +30 -0
- package/dist/internal/index-impl/nativeSourceCompileFileMapping.js +21 -0
- package/dist/internal/index-impl/nativeSourceCompileFullGeneratedSpan.js +16 -0
- package/dist/internal/index-impl/nativeSourceCompileGeneratedSpanForOffset.js +17 -0
- package/dist/internal/index-impl/nativeSourceCompileGeneratedSpanFromSource.js +13 -0
- package/dist/internal/index-impl/nativeSourceCompileMapTarget.js +6 -0
- package/dist/internal/index-impl/nativeSourceCompilePreservedMappings.js +51 -0
- package/dist/internal/index-impl/nativeSourceCompileSourceMaps.js +41 -0
- package/dist/internal/index-impl/nativeSourceCompileTargetCoverage.js +21 -0
- package/dist/internal/index-impl/nativeSourceCompileTargetExtension.js +10 -0
- package/dist/internal/index-impl/nativeSourceCompileTargetLoss.js +32 -0
- package/dist/internal/index-impl/nativeSourceCompileTargetLosses.js +43 -0
- package/dist/internal/index-impl/nativeSourceCompileTargetPath.js +9 -0
- package/dist/internal/index-impl/nativeTargetProjectionAdapterEvidence.js +26 -0
- package/dist/internal/index-impl/nativeTargetProjectionAdapterMatches.js +16 -0
- package/dist/internal/index-impl/nativeTargetProjectionDiagnosticToLoss.js +22 -0
- package/dist/internal/index-impl/normalizeAdapterDiagnostics.js +28 -0
- package/dist/internal/index-impl/normalizeArray.js +4 -0
- package/dist/internal/index-impl/normalizeCSharpRoslynKind.js +38 -0
- package/dist/internal/index-impl/normalizeCompileTarget.js +9 -0
- package/dist/internal/index-impl/normalizeDiagnosticSeverity.js +6 -0
- package/dist/internal/index-impl/normalizeExternalOccurrenceRole.js +9 -0
- package/dist/internal/index-impl/normalizeExternalSemanticIndexFormat.js +34 -0
- package/dist/internal/index-impl/normalizeExternalSemanticIndexPayload.js +10 -0
- package/dist/internal/index-impl/normalizeExternalSemanticLanguage.js +7 -0
- package/dist/internal/index-impl/normalizeExternalSpan.js +21 -0
- package/dist/internal/index-impl/normalizeExternalSymbolKind.js +6 -0
- package/dist/internal/index-impl/normalizeFrontierSemanticIndexPayload.js +14 -0
- package/dist/internal/index-impl/normalizeGenericExternalSemanticIndexPayload.js +15 -0
- package/dist/internal/index-impl/normalizeGleanPayload.js +210 -0
- package/dist/internal/index-impl/normalizeGoAstKind.js +14 -0
- package/dist/internal/index-impl/normalizeJavaAstKind.js +24 -0
- package/dist/internal/index-impl/normalizeKotlinPsiKind.js +54 -0
- package/dist/internal/index-impl/normalizeLossSeverity.js +6 -0
- package/dist/internal/index-impl/normalizeLsifPayload.js +91 -0
- package/dist/internal/index-impl/normalizeLspDocuments.js +15 -0
- package/dist/internal/index-impl/normalizeLspPayload.js +33 -0
- package/dist/internal/index-impl/normalizeLspSymbolKind.js +5 -0
- package/dist/internal/index-impl/normalizeNativeDiffImport.js +15 -0
- package/dist/internal/index-impl/normalizeNativeImporterAdapter.js +33 -0
- package/dist/internal/index-impl/normalizeNativeImporterAdapterCoverage.js +38 -0
- package/dist/internal/index-impl/normalizeNativeImporterAdapterObservedCoverage.js +43 -0
- package/dist/internal/index-impl/normalizeNativeImporterSemanticCoverage.js +18 -0
- package/dist/internal/index-impl/normalizeNativeLossKind.js +8 -0
- package/dist/internal/index-impl/normalizeNativeLossRecord.js +20 -0
- package/dist/internal/index-impl/normalizeNativeLossRecords.js +6 -0
- package/dist/internal/index-impl/normalizeNativeTargetProjectionAdapter.js +37 -0
- package/dist/internal/index-impl/normalizeNativeTargetProjectionAdapterCoverage.js +20 -0
- package/dist/internal/index-impl/normalizeParserErrors.js +18 -0
- package/dist/internal/index-impl/normalizeRustSynKind.js +32 -0
- package/dist/internal/index-impl/normalizeScipPayload.js +98 -0
- package/dist/internal/index-impl/normalizeSemanticDbPayload.js +57 -0
- package/dist/internal/index-impl/normalizeSemanticSliceRef.js +4 -0
- package/dist/internal/index-impl/normalizeSwiftSyntaxKind.js +45 -0
- package/dist/internal/index-impl/normalizeSyntaxAstRoot.js +5 -0
- package/dist/internal/index-impl/numberOrUndefined.js +3 -0
- package/dist/internal/index-impl/observeNativeImporterAdapterCoverage.js +24 -0
- package/dist/internal/index-impl/observeNativeImporterAdapterCoverageDetails.js +66 -0
- package/dist/internal/index-impl/observeNativeImporterSemanticEvidence.js +23 -0
- package/dist/internal/index-impl/observedAdapterExactness.js +6 -0
- package/dist/internal/index-impl/oneLine.js +3 -0
- package/dist/internal/index-impl/parseCSharpRoslynSource.js +15 -0
- package/dist/internal/index-impl/parseClangAstSource.js +16 -0
- package/dist/internal/index-impl/parseGoAstSource.js +15 -0
- package/dist/internal/index-impl/parseJavaAstSource.js +16 -0
- package/dist/internal/index-impl/parseKotlinPsiSource.js +16 -0
- package/dist/internal/index-impl/parsePythonAstSource.js +16 -0
- package/dist/internal/index-impl/parseRustSynSource.js +13 -0
- package/dist/internal/index-impl/parseSwiftSyntaxSource.js +15 -0
- package/dist/internal/index-impl/parseTreeSitterSource.js +6 -0
- package/dist/internal/index-impl/primitiveCSharpRoslynFields.js +23 -0
- package/dist/internal/index-impl/primitiveClangAstFields.js +31 -0
- package/dist/internal/index-impl/primitiveGoAstFields.js +22 -0
- package/dist/internal/index-impl/primitiveJavaAstFields.js +22 -0
- package/dist/internal/index-impl/primitiveKotlinPsiFields.js +24 -0
- package/dist/internal/index-impl/primitivePythonAstFields.js +18 -0
- package/dist/internal/index-impl/primitiveRustSynFields.js +16 -0
- package/dist/internal/index-impl/primitiveSwiftSyntaxFields.js +21 -0
- package/dist/internal/index-impl/primitiveSyntaxFields.js +13 -0
- package/dist/internal/index-impl/primitiveTypeScriptFields.js +9 -0
- package/dist/internal/index-impl/projectFrontierAst.js +6 -0
- package/dist/internal/index-impl/projectImportAdmissionDecision.js +27 -0
- package/dist/internal/index-impl/projectImportAdmissionMergeScore.js +316 -0
- package/dist/internal/index-impl/projectImportAdmissionSummaries.js +252 -0
- package/dist/internal/index-impl/projectNativeImportToSource.js +90 -0
- package/dist/internal/index-impl/projectors.js +8 -0
- package/dist/internal/index-impl/pythonAliasName.js +5 -0
- package/dist/internal/index-impl/pythonAssignmentName.js +9 -0
- package/dist/internal/index-impl/pythonAstChildEntries.js +11 -0
- package/dist/internal/index-impl/pythonAstDeclaration.js +18 -0
- package/dist/internal/index-impl/pythonAstKind.js +3 -0
- package/dist/internal/index-impl/pythonAstLiteralValue.js +6 -0
- package/dist/internal/index-impl/pythonAstNodeValue.js +4 -0
- package/dist/internal/index-impl/pythonAstRoot.js +9 -0
- package/dist/internal/index-impl/pythonTargetName.js +12 -0
- package/dist/internal/index-impl/queryNativeParserFeatureMatrix.js +5 -0
- package/dist/internal/index-impl/queryProjectionReadinessMatrix.js +5 -0
- package/dist/internal/index-impl/readSemanticSliceJson.js +7 -0
- package/dist/internal/index-impl/readStringArray.js +5 -0
- package/dist/internal/index-impl/readUniversalAstJson.js +9 -0
- package/dist/internal/index-impl/relationPredicateForDeclaration.js +5 -0
- package/dist/internal/index-impl/renderCProjectionStubs.js +11 -0
- package/dist/internal/index-impl/renderGenericProjectionStubs.js +5 -0
- package/dist/internal/index-impl/renderJavaScriptProjectionStubs.js +12 -0
- package/dist/internal/index-impl/renderNativeProjectionStubs.js +13 -0
- package/dist/internal/index-impl/renderPythonProjectionStubs.js +10 -0
- package/dist/internal/index-impl/renderRustProjectionStubs.js +11 -0
- package/dist/internal/index-impl/renderTargetAst.js +6 -0
- package/dist/internal/index-impl/renderTargetAstWithSourceMap.js +6 -0
- package/dist/internal/index-impl/renderTypeScriptProjectionStubs.js +14 -0
- package/dist/internal/index-impl/renderers.js +8 -0
- package/dist/internal/index-impl/resolveCapabilityAdapters.js +29 -0
- package/dist/internal/index-impl/resolveNativeProjectAdapter.js +11 -0
- package/dist/internal/index-impl/resolveNativeTargetProjectionAdapter.js +14 -0
- package/dist/internal/index-impl/runNativeImporterAdapter.js +130 -0
- package/dist/internal/index-impl/runNativeTargetProjectionAdapter.js +115 -0
- package/dist/internal/index-impl/rustSynAstRoot.js +11 -0
- package/dist/internal/index-impl/rustSynChildEntries.js +10 -0
- package/dist/internal/index-impl/rustSynColumnToOneBased.js +3 -0
- package/dist/internal/index-impl/rustSynDeclaration.js +40 -0
- package/dist/internal/index-impl/rustSynIdentName.js +12 -0
- package/dist/internal/index-impl/rustSynImplName.js +11 -0
- package/dist/internal/index-impl/rustSynKind.js +15 -0
- package/dist/internal/index-impl/rustSynLiteralValue.js +5 -0
- package/dist/internal/index-impl/rustSynMacroKind.js +3 -0
- package/dist/internal/index-impl/rustSynNodeValue.js +6 -0
- package/dist/internal/index-impl/rustSynPathName.js +21 -0
- package/dist/internal/index-impl/rustSynPayload.js +6 -0
- package/dist/internal/index-impl/rustSynSpanKind.js +5 -0
- package/dist/internal/index-impl/rustSynUseName.js +26 -0
- package/dist/internal/index-impl/rustSynVisibility.js +9 -0
- package/dist/internal/index-impl/rustSynWrapperKind.js +12 -0
- package/dist/internal/index-impl/safeNativeImporterAdapterSummary.js +8 -0
- package/dist/internal/index-impl/safeNativeTargetProjectionAdapterSummary.js +8 -0
- package/dist/internal/index-impl/safeProjectionIdentifier.js +5 -0
- package/dist/internal/index-impl/scipOccurrenceRole.js +8 -0
- package/dist/internal/index-impl/scipOccurrenceRoleSet.js +12 -0
- package/dist/internal/index-impl/scipRelationshipRelations.js +20 -0
- package/dist/internal/index-impl/scipSymbolFacts.js +31 -0
- package/dist/internal/index-impl/scipSymbolId.js +8 -0
- package/dist/internal/index-impl/scipSyntaxKind.js +8 -0
- package/dist/internal/index-impl/selectSemanticSliceRecords.js +70 -0
- package/dist/internal/index-impl/semanticDbOccurrenceRole.js +5 -0
- package/dist/internal/index-impl/semanticDbSymbolFacts.js +15 -0
- package/dist/internal/index-impl/semanticDbSymbolId.js +7 -0
- package/dist/internal/index-impl/semanticHistoryRecords.js +233 -0
- package/dist/internal/index-impl/semanticIndexFromNativeDeclarations.js +127 -0
- package/dist/internal/index-impl/semanticMergeAdmissionForSeverity.js +5 -0
- package/dist/internal/index-impl/semanticMergeConflicts.js +116 -0
- package/dist/internal/index-impl/semanticPatchBundleRecords.js +240 -0
- package/dist/internal/index-impl/semanticPredicateMatches.js +4 -0
- package/dist/internal/index-impl/semanticSliceAssertion.js +8 -0
- package/dist/internal/index-impl/semanticSliceContext.js +24 -0
- package/dist/internal/index-impl/semanticSliceCurrentSource.js +4 -0
- package/dist/internal/index-impl/semanticSliceExpectedAssertions.js +8 -0
- package/dist/internal/index-impl/semanticSliceImportResult.js +30 -0
- package/dist/internal/index-impl/semanticSliceMappingMatchesRef.js +15 -0
- package/dist/internal/index-impl/semanticSliceMappingTouchesSets.js +7 -0
- package/dist/internal/index-impl/semanticSliceNativeNodeMatchesRef.js +12 -0
- package/dist/internal/index-impl/semanticSliceNativeParentMap.js +7 -0
- package/dist/internal/index-impl/semanticSliceReadiness.js +14 -0
- package/dist/internal/index-impl/semanticSliceReasons.js +11 -0
- package/dist/internal/index-impl/semanticSliceRecords.js +62 -0
- package/dist/internal/index-impl/semanticSliceRegionFromMapping.js +16 -0
- package/dist/internal/index-impl/semanticSliceRegionFromSymbol.js +21 -0
- package/dist/internal/index-impl/semanticSliceRegionMatchesRef.js +12 -0
- package/dist/internal/index-impl/semanticSliceRegionTouchesSets.js +6 -0
- package/dist/internal/index-impl/semanticSliceSourceFiles.js +35 -0
- package/dist/internal/index-impl/semanticSliceSourceHashAssertions.js +27 -0
- package/dist/internal/index-impl/semanticSliceSourceHashMap.js +18 -0
- package/dist/internal/index-impl/semanticSliceSourceMapLinks.js +21 -0
- package/dist/internal/index-impl/semanticSliceSourceSpans.js +9 -0
- package/dist/internal/index-impl/semanticSliceSourceTextMap.js +19 -0
- package/dist/internal/index-impl/semanticSliceSpanTouchesSelection.js +6 -0
- package/dist/internal/index-impl/semanticSliceSpansOverlap.js +15 -0
- package/dist/internal/index-impl/semanticSliceSymbolMatchesRef.js +13 -0
- package/dist/internal/index-impl/semanticSliceSymbolSpan.js +3 -0
- package/dist/internal/index-impl/semanticSliceSymbolTouchesSets.js +7 -0
- package/dist/internal/index-impl/semanticSliceTouchedSymbol.js +16 -0
- package/dist/internal/index-impl/semanticSliceValueMatches.js +6 -0
- package/dist/internal/index-impl/semanticTokenModifiers.js +7 -0
- package/dist/internal/index-impl/serializableDiagnostic.js +13 -0
- package/dist/internal/index-impl/serializableIncludeGraphSummary.js +10 -0
- package/dist/internal/index-impl/shortNodeText.js +6 -0
- package/dist/internal/index-impl/sourceMapRenderers.js +8 -0
- package/dist/internal/index-impl/sourcePreservationFromProjectionContext.js +5 -0
- package/dist/internal/index-impl/sourceSpanPathMatches.js +4 -0
- package/dist/internal/index-impl/sourceTextForSpan.js +12 -0
- package/dist/internal/index-impl/spanFromCSharpLineFields.js +12 -0
- package/dist/internal/index-impl/spanFromCSharpLineSpan.js +18 -0
- package/dist/internal/index-impl/spanFromCSharpRoslynNode.js +19 -0
- package/dist/internal/index-impl/spanFromClangAstNode.js +17 -0
- package/dist/internal/index-impl/spanFromGoAstNode.js +14 -0
- package/dist/internal/index-impl/spanFromJavaAstNode.js +36 -0
- package/dist/internal/index-impl/spanFromJavaLineFields.js +12 -0
- package/dist/internal/index-impl/spanFromJavaRange.js +22 -0
- package/dist/internal/index-impl/spanFromKotlinLineFields.js +12 -0
- package/dist/internal/index-impl/spanFromKotlinPsiNode.js +19 -0
- package/dist/internal/index-impl/spanFromKotlinRange.js +18 -0
- package/dist/internal/index-impl/spanFromLoc.js +11 -0
- package/dist/internal/index-impl/spanFromLspRange.js +12 -0
- package/dist/internal/index-impl/spanFromPythonAstNode.js +15 -0
- package/dist/internal/index-impl/spanFromRustSynNode.js +20 -0
- package/dist/internal/index-impl/spanFromScipOccurrence.js +40 -0
- package/dist/internal/index-impl/spanFromSemanticDbRange.js +11 -0
- package/dist/internal/index-impl/spanFromSwiftLineFields.js +12 -0
- package/dist/internal/index-impl/spanFromSwiftRange.js +18 -0
- package/dist/internal/index-impl/spanFromSwiftSyntaxNode.js +19 -0
- package/dist/internal/index-impl/spanFromTreeSitterNode.js +13 -0
- package/dist/internal/index-impl/spanFromTypeScriptNode.js +15 -0
- package/dist/internal/index-impl/stringFromTsExpression.js +7 -0
- package/dist/internal/index-impl/summarizeNativeChangedRegionProjections.js +16 -0
- package/dist/internal/index-impl/summarizeNativeImportFeatureEvidence.js +60 -0
- package/dist/internal/index-impl/summarizeNativeImportLosses.js +65 -0
- package/dist/internal/index-impl/summarizeProjectSourcePreservation.js +15 -0
- package/dist/internal/index-impl/swiftEvidenceSummary.js +19 -0
- package/dist/internal/index-impl/swiftGeneratedCodeLoss.js +20 -0
- package/dist/internal/index-impl/swiftGeneratedCodeMarker.js +11 -0
- package/dist/internal/index-impl/swiftGeneratedSourcePath.js +3 -0
- package/dist/internal/index-impl/swiftSyntaxAttributeNames.js +10 -0
- package/dist/internal/index-impl/swiftSyntaxChildEntries.js +18 -0
- package/dist/internal/index-impl/swiftSyntaxChildWithParent.js +6 -0
- package/dist/internal/index-impl/swiftSyntaxConditionalCompilationKind.js +3 -0
- package/dist/internal/index-impl/swiftSyntaxDeclarationName.js +19 -0
- package/dist/internal/index-impl/swiftSyntaxDeclarations.js +38 -0
- package/dist/internal/index-impl/swiftSyntaxEnumCaseNames.js +7 -0
- package/dist/internal/index-impl/swiftSyntaxFunctionLikeKind.js +8 -0
- package/dist/internal/index-impl/swiftSyntaxHasBody.js +3 -0
- package/dist/internal/index-impl/swiftSyntaxImportPath.js +14 -0
- package/dist/internal/index-impl/swiftSyntaxKind.js +11 -0
- package/dist/internal/index-impl/swiftSyntaxLiteralValue.js +5 -0
- package/dist/internal/index-impl/swiftSyntaxMacroKind.js +3 -0
- package/dist/internal/index-impl/swiftSyntaxModifierNames.js +16 -0
- package/dist/internal/index-impl/swiftSyntaxName.js +14 -0
- package/dist/internal/index-impl/swiftSyntaxNodeValue.js +7 -0
- package/dist/internal/index-impl/swiftSyntaxOperatorName.js +6 -0
- package/dist/internal/index-impl/swiftSyntaxPatternName.js +6 -0
- package/dist/internal/index-impl/swiftSyntaxPosition.js +27 -0
- package/dist/internal/index-impl/swiftSyntaxPositionKind.js +6 -0
- package/dist/internal/index-impl/swiftSyntaxProblemNode.js +13 -0
- package/dist/internal/index-impl/swiftSyntaxRecoveredKind.js +7 -0
- package/dist/internal/index-impl/swiftSyntaxRoot.js +15 -0
- package/dist/internal/index-impl/swiftSyntaxTypeDeclarationKind.js +7 -0
- package/dist/internal/index-impl/swiftSyntaxTypeDeclarationSymbolKind.js +8 -0
- package/dist/internal/index-impl/swiftSyntaxTypeName.js +19 -0
- package/dist/internal/index-impl/swiftSyntaxVariableNames.js +7 -0
- package/dist/internal/index-impl/syntaxDeclaration.js +18 -0
- package/dist/internal/index-impl/testSemanticSlice.js +43 -0
- package/dist/internal/index-impl/treeSitterDeclaration.js +24 -0
- package/dist/internal/index-impl/treeSitterFieldText.js +5 -0
- package/dist/internal/index-impl/truncatedAstLoss.js +16 -0
- package/dist/internal/index-impl/typeScriptDeclaration.js +14 -0
- package/dist/internal/index-impl/typeScriptKindName.js +6 -0
- package/dist/internal/index-impl/typeScriptNodeValue.js +4 -0
- package/dist/internal/index-impl/uniqueNativeProjectionDeclarations.js +9 -0
- package/dist/internal/index-impl/uniqueSemanticSliceNativeNodes.js +11 -0
- package/dist/internal/index-impl/uniqueSemanticSliceRegions.js +15 -0
- package/dist/internal/index-impl/uniqueSemanticSliceSpans.js +21 -0
- package/dist/internal/index-impl/unverifiedNativeAstLosses.js +16 -0
- package/dist/internal/index-impl/uriToPath.js +11 -0
- package/dist/internal/index-impl/visitCSharpRoslynNode.js +87 -0
- package/dist/internal/index-impl/visitClangAstNode.js +62 -0
- package/dist/internal/index-impl/visitGoAstNode.js +99 -0
- package/dist/internal/index-impl/visitJavaAstNode.js +73 -0
- package/dist/internal/index-impl/visitKotlinPsiNode.js +108 -0
- package/dist/internal/index-impl/visitPythonAstNode.js +47 -0
- package/dist/internal/index-impl/visitRustSynNode.js +62 -0
- package/dist/internal/index-impl/visitSwiftSyntaxNode.js +103 -0
- package/dist/internal/index-impl/visitSyntaxAstNode.js +46 -0
- package/dist/internal/index-impl/visitTreeSitterNode.js +145 -0
- package/dist/internal/index-impl/visitTypeScriptAstNode.js +45 -0
- package/dist/internal/index-impl/withExternalEmptyLoss.js +32 -0
- package/dist/internal/index-impl/withNativeImportReadiness.js +53 -0
- package/dist/internal/index-impl/writeSemanticSliceJson.js +7 -0
- package/dist/internal/index-impl/writeUniversalAstJson.js +8 -0
- package/dist/language-adapter-package-contracts.js +289 -0
- package/dist/native-import-coverage-matrix.js +237 -0
- package/dist/native-import-language-profiles.js +169 -0
- package/dist/native-import-utils.js +143 -0
- package/dist/native-js-ts-importers.js +85 -0
- package/dist/native-parser-ast-format-matrix.js +147 -0
- package/dist/native-parser-ast-format-profiles.js +271 -0
- package/dist/native-parser-feature-assessment.js +118 -0
- package/dist/native-parser-feature-coverage.js +268 -0
- package/dist/native-parser-feature-matrix.js +92 -0
- package/dist/native-parser-feature-rows.js +219 -0
- package/dist/native-region-scanner-core.js +179 -0
- package/dist/native-region-scanner-dynamic.js +259 -0
- package/dist/native-region-scanner-functional.js +191 -0
- package/dist/native-region-scanner-js.js +310 -0
- package/dist/native-region-scanner-main.js +301 -0
- package/dist/native-region-scanner.js +62 -0
- package/dist/native-source-maps.js +260 -0
- package/dist/native-source-preservation-scanner.js +266 -0
- package/dist/native-source-preservation-types.d.ts +77 -0
- package/dist/projection-readiness-helpers.js +166 -0
- package/dist/projection-readiness-matrix.js +122 -0
- package/dist/projection-target-loss-matrix.js +318 -0
- package/dist/semantic-import-contract-summary.js +188 -0
- package/dist/semantic-import-layers.js +320 -0
- package/dist/semantic-import-regions.js +181 -0
- package/dist/semantic-import-sidecar-admission-types.d.ts +61 -0
- package/dist/semantic-import-sidecar-entry.js +78 -0
- package/dist/semantic-import-sidecar-types.d.ts +275 -0
- package/dist/semantic-import-source-preservation.js +198 -0
- package/dist/universal-capability-matrix.js +280 -0
- package/dist/universal-dialect-layer.js +74 -0
- package/dist/universal-dialect-registry.js +204 -0
- package/dist/universal-dialect-utils.js +110 -0
- package/package.json +9 -9
|
@@ -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,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,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));}
|