code-auditor-mcp 4.1.1 → 5.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +381 -0
- package/README.md +4 -4
- package/configs/hhra-compat.json +0 -8
- package/dist/__tests__/fixtures/spec-52/item-03-exec-in-loop.d.ts +1 -1
- package/dist/__tests__/fixtures/spec-52/item-03-exec-in-loop.d.ts.map +1 -1
- package/dist/__tests__/fixtures/spec-52/item-03-exec-in-loop.js +7 -1
- package/dist/__tests__/fixtures/spec-52/item-03-exec-in-loop.js.map +1 -1
- package/dist/__tests__/fixtures/spec-52/item-04-storage-sql-exec-in-loop.d.ts +2 -8
- package/dist/__tests__/fixtures/spec-52/item-04-storage-sql-exec-in-loop.d.ts.map +1 -1
- package/dist/__tests__/fixtures/spec-52/item-04-storage-sql-exec-in-loop.js +4 -4
- package/dist/__tests__/fixtures/spec-52/item-04-storage-sql-exec-in-loop.js.map +1 -1
- package/dist/__tests__/fixtures/spec-52/item-06-chained-prepare-run-in-loop.d.ts +1 -1
- package/dist/__tests__/fixtures/spec-52/item-06-chained-prepare-run-in-loop.d.ts.map +1 -1
- package/dist/__tests__/fixtures/spec-52/item-06-chained-prepare-run-in-loop.js.map +1 -1
- package/dist/__tests__/fixtures/spec-52/item-07-chained-prepare-bind-first-in-loop.d.ts +2 -2
- package/dist/__tests__/fixtures/spec-52/item-07-chained-prepare-bind-first-in-loop.d.ts.map +1 -1
- package/dist/__tests__/fixtures/spec-52/item-07-chained-prepare-bind-first-in-loop.js.map +1 -1
- package/dist/__tests__/fixtures/spec-52/item-10-promise-all-map-of-eager-all-in-loop.d.ts +1 -1
- package/dist/__tests__/fixtures/spec-52/item-10-promise-all-map-of-eager-all-in-loop.d.ts.map +1 -1
- package/dist/__tests__/fixtures/spec-52/item-10-promise-all-map-of-eager-all-in-loop.js.map +1 -1
- package/dist/analyzers/applicability.d.ts +42 -0
- package/dist/analyzers/applicability.d.ts.map +1 -1
- package/dist/analyzers/applicability.js +74 -0
- package/dist/analyzers/applicability.js.map +1 -1
- package/dist/analyzers/cross-language/APIContractAnalyzer.js +18 -24
- package/dist/analyzers/cross-language/APIContractAnalyzer.js.map +1 -1
- package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts +30 -23
- package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts.map +1 -1
- package/dist/analyzers/cross-language/DependencyGraphBuilder.js +113 -76
- package/dist/analyzers/cross-language/DependencyGraphBuilder.js.map +1 -1
- package/dist/analyzers/cross-language/SchemaValidator.d.ts +2 -0
- package/dist/analyzers/cross-language/SchemaValidator.d.ts.map +1 -1
- package/dist/analyzers/cross-language/SchemaValidator.js +8 -3
- package/dist/analyzers/cross-language/SchemaValidator.js.map +1 -1
- package/dist/analyzers/crossDomain/CrossDomainAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js +210 -148
- package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js.map +1 -1
- package/dist/analyzers/documentationAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/documentationAnalyzer.js +23 -28
- package/dist/analyzers/documentationAnalyzer.js.map +1 -1
- package/dist/analyzers/handleIdentification.d.ts +356 -0
- package/dist/analyzers/handleIdentification.d.ts.map +1 -0
- package/dist/analyzers/handleIdentification.js +427 -0
- package/dist/analyzers/handleIdentification.js.map +1 -0
- package/dist/analyzers/manifestStaleness.d.ts +64 -0
- package/dist/analyzers/manifestStaleness.d.ts.map +1 -0
- package/dist/analyzers/manifestStaleness.js +115 -0
- package/dist/analyzers/manifestStaleness.js.map +1 -0
- package/dist/analyzers/orgFilterTiers.d.ts +73 -1
- package/dist/analyzers/orgFilterTiers.d.ts.map +1 -1
- package/dist/analyzers/orgFilterTiers.js +166 -1
- package/dist/analyzers/orgFilterTiers.js.map +1 -1
- package/dist/analyzers/provenance.d.ts +251 -57
- package/dist/analyzers/provenance.d.ts.map +1 -1
- package/dist/analyzers/provenance.js +1109 -429
- package/dist/analyzers/provenance.js.map +1 -1
- package/dist/analyzers/reactAnalyzer.d.ts +2 -0
- package/dist/analyzers/reactAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/reactAnalyzer.js +2 -0
- package/dist/analyzers/reactAnalyzer.js.map +1 -1
- package/dist/analyzers/receiverResolution.d.ts +183 -0
- package/dist/analyzers/receiverResolution.d.ts.map +1 -0
- package/dist/analyzers/receiverResolution.js +540 -0
- package/dist/analyzers/receiverResolution.js.map +1 -0
- package/dist/analyzers/receiverRoot.d.ts +348 -0
- package/dist/analyzers/receiverRoot.d.ts.map +1 -0
- package/dist/analyzers/receiverRoot.js +1032 -0
- package/dist/analyzers/receiverRoot.js.map +1 -0
- package/dist/analyzers/ruleRegistry.d.ts +12 -68
- package/dist/analyzers/ruleRegistry.d.ts.map +1 -1
- package/dist/analyzers/ruleRegistry.js +32 -342
- package/dist/analyzers/ruleRegistry.js.map +1 -1
- package/dist/analyzers/ruleTiming.d.ts +10 -0
- package/dist/analyzers/ruleTiming.d.ts.map +1 -1
- package/dist/analyzers/ruleTiming.js +20 -0
- package/dist/analyzers/ruleTiming.js.map +1 -1
- package/dist/analyzers/sqlLiteral.d.ts +76 -0
- package/dist/analyzers/sqlLiteral.d.ts.map +1 -0
- package/dist/analyzers/sqlLiteral.js +419 -0
- package/dist/analyzers/sqlLiteral.js.map +1 -0
- package/dist/analyzers/tsEcosystem.d.ts +115 -0
- package/dist/analyzers/tsEcosystem.d.ts.map +1 -0
- package/dist/analyzers/tsEcosystem.js +241 -0
- package/dist/analyzers/tsEcosystem.js.map +1 -0
- package/dist/analyzers/tsExpressionDescriptor.d.ts +156 -0
- package/dist/analyzers/tsExpressionDescriptor.d.ts.map +1 -0
- package/dist/analyzers/tsExpressionDescriptor.js +374 -0
- package/dist/analyzers/tsExpressionDescriptor.js.map +1 -0
- package/dist/analyzers/universal/UniversalConventionsAnalyzer.d.ts +6 -0
- package/dist/analyzers/universal/UniversalConventionsAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalConventionsAnalyzer.js +107 -44
- package/dist/analyzers/universal/UniversalConventionsAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalDRYAnalyzer.js +23 -35
- package/dist/analyzers/universal/UniversalDRYAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts +287 -49
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js +2130 -512
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js +2 -18
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts +0 -33
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js +20 -143
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts +4 -3
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.js +36 -13
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalSecretsAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalSecretsAnalyzer.js +6 -0
- package/dist/analyzers/universal/UniversalSecretsAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalSecurityAnalyzer.d.ts +15 -0
- package/dist/analyzers/universal/UniversalSecurityAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalSecurityAnalyzer.js +25 -0
- package/dist/analyzers/universal/UniversalSecurityAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts +21 -32
- package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalStylesAnalyzer.js +166 -196
- package/dist/analyzers/universal/UniversalStylesAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/functionConcerns.d.ts +3 -0
- package/dist/analyzers/universal/functionConcerns.d.ts.map +1 -1
- package/dist/analyzers/universal/functionConcerns.js +4 -1
- package/dist/analyzers/universal/functionConcerns.js.map +1 -1
- package/dist/analyzers/universal/schema/codeAnalysis.d.ts +310 -69
- package/dist/analyzers/universal/schema/codeAnalysis.d.ts.map +1 -1
- package/dist/analyzers/universal/schema/codeAnalysis.js +709 -383
- package/dist/analyzers/universal/schema/codeAnalysis.js.map +1 -1
- package/dist/analyzers/universal/schema/config.d.ts +3 -14
- package/dist/analyzers/universal/schema/config.d.ts.map +1 -1
- package/dist/analyzers/universal/schema/config.js +3 -16
- package/dist/analyzers/universal/schema/config.js.map +1 -1
- package/dist/analyzers/universal/schema/discovery.d.ts +22 -1
- package/dist/analyzers/universal/schema/discovery.d.ts.map +1 -1
- package/dist/analyzers/universal/schema/discovery.js +36 -20
- package/dist/analyzers/universal/schema/discovery.js.map +1 -1
- package/dist/analyzers/universal/schema/jsonSchema.d.ts.map +1 -1
- package/dist/analyzers/universal/schema/jsonSchema.js +13 -3
- package/dist/analyzers/universal/schema/jsonSchema.js.map +1 -1
- package/dist/analyzers/universal/schema/migrations.d.ts +187 -27
- package/dist/analyzers/universal/schema/migrations.d.ts.map +1 -1
- package/dist/analyzers/universal/schema/migrations.js +443 -186
- package/dist/analyzers/universal/schema/migrations.js.map +1 -1
- package/dist/analyzers/universal/schema/types.d.ts +17 -3
- package/dist/analyzers/universal/schema/types.d.ts.map +1 -1
- package/dist/analyzers/universal/schema/violations.js +1 -1
- package/dist/analyzers/universal/schema/violations.js.map +1 -1
- package/dist/analyzers/universal/styleScale.d.ts +52 -0
- package/dist/analyzers/universal/styleScale.d.ts.map +1 -0
- package/dist/analyzers/universal/styleScale.js +95 -0
- package/dist/analyzers/universal/styleScale.js.map +1 -0
- package/dist/applyDataDirEnv.js +1 -1
- package/dist/applyDataDirEnv.js.map +1 -1
- package/dist/auditRouter.d.ts +26 -30
- package/dist/auditRouter.d.ts.map +1 -1
- package/dist/auditRouter.js +373 -143
- package/dist/auditRouter.js.map +1 -1
- package/dist/auditRunner.d.ts +66 -1
- package/dist/auditRunner.d.ts.map +1 -1
- package/dist/auditRunner.js +1544 -1034
- package/dist/auditRunner.js.map +1 -1
- package/dist/baseline.d.ts +30 -3
- package/dist/baseline.d.ts.map +1 -1
- package/dist/baseline.js +70 -9
- package/dist/baseline.js.map +1 -1
- package/dist/cli.js +983 -821
- package/dist/cli.js.map +1 -1
- package/dist/codeIndex/analyzerConfig.d.ts +60 -0
- package/dist/codeIndex/analyzerConfig.d.ts.map +1 -0
- package/dist/codeIndex/analyzerConfig.js +98 -0
- package/dist/codeIndex/analyzerConfig.js.map +1 -0
- package/dist/codeIndex/auditResults.d.ts +39 -0
- package/dist/codeIndex/auditResults.d.ts.map +1 -0
- package/dist/codeIndex/auditResults.js +99 -0
- package/dist/codeIndex/auditResults.js.map +1 -0
- package/dist/codeIndex/codeMap.d.ts +59 -0
- package/dist/codeIndex/codeMap.d.ts.map +1 -0
- package/dist/codeIndex/codeMap.js +72 -0
- package/dist/codeIndex/codeMap.js.map +1 -0
- package/dist/codeIndex/conventions.d.ts +33 -0
- package/dist/codeIndex/conventions.d.ts.map +1 -0
- package/dist/codeIndex/conventions.js +84 -0
- package/dist/codeIndex/conventions.js.map +1 -0
- package/dist/codeIndex/coverage.d.ts +78 -0
- package/dist/codeIndex/coverage.d.ts.map +1 -0
- package/dist/codeIndex/coverage.js +164 -0
- package/dist/codeIndex/coverage.js.map +1 -0
- package/dist/codeIndex/dependencyGraph.d.ts +97 -0
- package/dist/codeIndex/dependencyGraph.d.ts.map +1 -0
- package/dist/codeIndex/dependencyGraph.js +241 -0
- package/dist/codeIndex/dependencyGraph.js.map +1 -0
- package/dist/codeIndex/functionIndex.d.ts +111 -0
- package/dist/codeIndex/functionIndex.d.ts.map +1 -0
- package/dist/codeIndex/functionIndex.js +306 -0
- package/dist/codeIndex/functionIndex.js.map +1 -0
- package/dist/codeIndex/inferredReceivers.d.ts +32 -0
- package/dist/codeIndex/inferredReceivers.d.ts.map +1 -0
- package/dist/codeIndex/inferredReceivers.js +41 -0
- package/dist/codeIndex/inferredReceivers.js.map +1 -0
- package/dist/codeIndex/meta.d.ts +30 -0
- package/dist/codeIndex/meta.d.ts.map +1 -0
- package/dist/codeIndex/meta.js +37 -0
- package/dist/codeIndex/meta.js.map +1 -0
- package/dist/codeIndex/migrations.d.ts +96 -0
- package/dist/codeIndex/migrations.d.ts.map +1 -0
- package/dist/codeIndex/migrations.js +1302 -0
- package/dist/codeIndex/migrations.js.map +1 -0
- package/dist/codeIndex/projectTasks.d.ts +54 -0
- package/dist/codeIndex/projectTasks.d.ts.map +1 -0
- package/dist/codeIndex/projectTasks.js +81 -0
- package/dist/codeIndex/projectTasks.js.map +1 -0
- package/dist/codeIndex/provenance.d.ts +47 -0
- package/dist/codeIndex/provenance.d.ts.map +1 -0
- package/dist/codeIndex/provenance.js +48 -0
- package/dist/codeIndex/provenance.js.map +1 -0
- package/dist/codeIndex/rawSql.d.ts +54 -0
- package/dist/codeIndex/rawSql.d.ts.map +1 -0
- package/dist/codeIndex/rawSql.js +71 -0
- package/dist/codeIndex/rawSql.js.map +1 -0
- package/dist/codeIndex/schema.d.ts +99 -0
- package/dist/codeIndex/schema.d.ts.map +1 -0
- package/dist/codeIndex/schema.js +174 -0
- package/dist/codeIndex/schema.js.map +1 -0
- package/dist/codeIndex/search.d.ts +40 -0
- package/dist/codeIndex/search.d.ts.map +1 -0
- package/dist/codeIndex/search.js +316 -0
- package/dist/codeIndex/search.js.map +1 -0
- package/dist/codeIndex/shared.d.ts +27 -0
- package/dist/codeIndex/shared.d.ts.map +1 -0
- package/dist/codeIndex/shared.js +46 -0
- package/dist/codeIndex/shared.js.map +1 -0
- package/dist/codeIndex/sqliteCollection.d.ts +81 -0
- package/dist/codeIndex/sqliteCollection.d.ts.map +1 -0
- package/dist/codeIndex/sqliteCollection.js +250 -0
- package/dist/codeIndex/sqliteCollection.js.map +1 -0
- package/dist/codeIndex/whitelist.d.ts +59 -0
- package/dist/codeIndex/whitelist.d.ts.map +1 -0
- package/dist/codeIndex/whitelist.js +188 -0
- package/dist/codeIndex/whitelist.js.map +1 -0
- package/dist/codeIndexDB.d.ts +132 -271
- package/dist/codeIndexDB.d.ts.map +1 -1
- package/dist/codeIndexDB.js +365 -2729
- package/dist/codeIndexDB.js.map +1 -1
- package/dist/codeIndexService.d.ts +87 -12
- package/dist/codeIndexService.d.ts.map +1 -1
- package/dist/codeIndexService.js +110 -34
- package/dist/codeIndexService.js.map +1 -1
- package/dist/componentScanner.d.ts +35 -0
- package/dist/componentScanner.d.ts.map +1 -1
- package/dist/componentScanner.js +114 -80
- package/dist/componentScanner.js.map +1 -1
- package/dist/config/configGeneratePath.d.ts +4 -0
- package/dist/config/configGeneratePath.d.ts.map +1 -1
- package/dist/config/configGeneratePath.js +4 -0
- package/dist/config/configGeneratePath.js.map +1 -1
- package/dist/config/configLoader.d.ts +15 -0
- package/dist/config/configLoader.d.ts.map +1 -1
- package/dist/config/configLoader.js +15 -16
- package/dist/config/configLoader.js.map +1 -1
- package/dist/config/defaults.d.ts +11 -7
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +16 -14
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/effectiveConfig.d.ts +17 -2
- package/dist/config/effectiveConfig.d.ts.map +1 -1
- package/dist/config/effectiveConfig.js +32 -25
- package/dist/config/effectiveConfig.js.map +1 -1
- package/dist/config/lintConfigReader.d.ts +6 -0
- package/dist/config/lintConfigReader.d.ts.map +1 -1
- package/dist/config/lintConfigReader.js +6 -0
- package/dist/config/lintConfigReader.js.map +1 -1
- package/dist/config/staticObjectExtract.d.ts +4 -0
- package/dist/config/staticObjectExtract.d.ts.map +1 -1
- package/dist/config/staticObjectExtract.js +7 -3
- package/dist/config/staticObjectExtract.js.map +1 -1
- package/dist/config/thresholdRationales.d.ts +2 -0
- package/dist/config/thresholdRationales.d.ts.map +1 -1
- package/dist/config/thresholdRationales.js +5 -2
- package/dist/config/thresholdRationales.js.map +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/conventions/conventionMiner.d.ts +105 -2
- package/dist/conventions/conventionMiner.d.ts.map +1 -1
- package/dist/conventions/conventionMiner.js +334 -259
- package/dist/conventions/conventionMiner.js.map +1 -1
- package/dist/coverage/coverageService.js +4 -4
- package/dist/coverage/coverageService.js.map +1 -1
- package/dist/daemon/args.d.ts +3 -0
- package/dist/daemon/args.d.ts.map +1 -1
- package/dist/daemon/args.js +3 -0
- package/dist/daemon/args.js.map +1 -1
- package/dist/daemon/core.d.ts +33 -27
- package/dist/daemon/core.d.ts.map +1 -1
- package/dist/daemon/core.js +198 -162
- package/dist/daemon/core.js.map +1 -1
- package/dist/daemon/lspServer.d.ts +8 -0
- package/dist/daemon/lspServer.d.ts.map +1 -1
- package/dist/daemon/lspServer.js +8 -0
- package/dist/daemon/lspServer.js.map +1 -1
- package/dist/daemon/main.d.ts +2 -0
- package/dist/daemon/main.d.ts.map +1 -1
- package/dist/daemon/main.js +22 -4
- package/dist/daemon/main.js.map +1 -1
- package/dist/daemon/resolve.d.ts +18 -3
- package/dist/daemon/resolve.d.ts.map +1 -1
- package/dist/daemon/resolve.js +25 -4
- package/dist/daemon/resolve.js.map +1 -1
- package/dist/daemon/socketClient.d.ts +10 -1
- package/dist/daemon/socketClient.d.ts.map +1 -1
- package/dist/daemon/socketClient.js +10 -1
- package/dist/daemon/socketClient.js.map +1 -1
- package/dist/daemon/socketServer.d.ts +13 -0
- package/dist/daemon/socketServer.d.ts.map +1 -1
- package/dist/daemon/socketServer.js +13 -0
- package/dist/daemon/socketServer.js.map +1 -1
- package/dist/dataPaths.d.ts +17 -8
- package/dist/dataPaths.d.ts.map +1 -1
- package/dist/dataPaths.js +16 -44
- package/dist/dataPaths.js.map +1 -1
- package/dist/dismissals.d.ts +22 -1
- package/dist/dismissals.d.ts.map +1 -1
- package/dist/dismissals.js +22 -1
- package/dist/dismissals.js.map +1 -1
- package/dist/enforcement/gate.d.ts +1 -0
- package/dist/enforcement/gate.d.ts.map +1 -1
- package/dist/enforcement/gate.js +1 -0
- package/dist/enforcement/gate.js.map +1 -1
- package/dist/fingerprint.d.ts +6 -0
- package/dist/fingerprint.d.ts.map +1 -1
- package/dist/fingerprint.js +46 -1
- package/dist/fingerprint.js.map +1 -1
- package/dist/functionScanner.d.ts +30 -1
- package/dist/functionScanner.d.ts.map +1 -1
- package/dist/functionScanner.js +258 -256
- package/dist/functionScanner.js.map +1 -1
- package/dist/generators/AWSQConfigGenerator.d.ts +23 -0
- package/dist/generators/AWSQConfigGenerator.d.ts.map +1 -1
- package/dist/generators/AWSQConfigGenerator.js +23 -0
- package/dist/generators/AWSQConfigGenerator.js.map +1 -1
- package/dist/generators/BaseConfigGenerator.d.ts +7 -0
- package/dist/generators/BaseConfigGenerator.d.ts.map +1 -1
- package/dist/generators/BaseConfigGenerator.js +7 -0
- package/dist/generators/BaseConfigGenerator.js.map +1 -1
- package/dist/generators/ClaudeConfigGenerator.d.ts +23 -0
- package/dist/generators/ClaudeConfigGenerator.d.ts.map +1 -1
- package/dist/generators/ClaudeConfigGenerator.js +23 -0
- package/dist/generators/ClaudeConfigGenerator.js.map +1 -1
- package/dist/generators/ClineConfigGenerator.d.ts +23 -0
- package/dist/generators/ClineConfigGenerator.d.ts.map +1 -1
- package/dist/generators/ClineConfigGenerator.js +23 -0
- package/dist/generators/ClineConfigGenerator.js.map +1 -1
- package/dist/generators/CodeiumConfigGenerator.d.ts +23 -0
- package/dist/generators/CodeiumConfigGenerator.d.ts.map +1 -1
- package/dist/generators/CodeiumConfigGenerator.js +23 -0
- package/dist/generators/CodeiumConfigGenerator.js.map +1 -1
- package/dist/generators/CodexConfigGenerator.d.ts +23 -0
- package/dist/generators/CodexConfigGenerator.d.ts.map +1 -1
- package/dist/generators/CodexConfigGenerator.js +23 -0
- package/dist/generators/CodexConfigGenerator.js.map +1 -1
- package/dist/generators/ConfigGeneratorFactory.d.ts +9 -0
- package/dist/generators/ConfigGeneratorFactory.d.ts.map +1 -1
- package/dist/generators/ConfigGeneratorFactory.js +9 -0
- package/dist/generators/ConfigGeneratorFactory.js.map +1 -1
- package/dist/generators/ContinueConfigGenerator.d.ts +23 -0
- package/dist/generators/ContinueConfigGenerator.d.ts.map +1 -1
- package/dist/generators/ContinueConfigGenerator.js +23 -0
- package/dist/generators/ContinueConfigGenerator.js.map +1 -1
- package/dist/generators/CopilotConfigGenerator.d.ts +23 -0
- package/dist/generators/CopilotConfigGenerator.d.ts.map +1 -1
- package/dist/generators/CopilotConfigGenerator.js +23 -0
- package/dist/generators/CopilotConfigGenerator.js.map +1 -1
- package/dist/generators/CursorConfigGenerator.d.ts +23 -0
- package/dist/generators/CursorConfigGenerator.d.ts.map +1 -1
- package/dist/generators/CursorConfigGenerator.js +23 -0
- package/dist/generators/CursorConfigGenerator.js.map +1 -1
- package/dist/generators/GeminiConfigGenerator.d.ts +23 -0
- package/dist/generators/GeminiConfigGenerator.d.ts.map +1 -1
- package/dist/generators/GeminiConfigGenerator.js +23 -0
- package/dist/generators/GeminiConfigGenerator.js.map +1 -1
- package/dist/generators/VSCodeConfigGenerator.d.ts +23 -0
- package/dist/generators/VSCodeConfigGenerator.d.ts.map +1 -1
- package/dist/generators/VSCodeConfigGenerator.js +23 -0
- package/dist/generators/VSCodeConfigGenerator.js.map +1 -1
- package/dist/generators/ZCodeConfigGenerator.d.ts +23 -0
- package/dist/generators/ZCodeConfigGenerator.d.ts.map +1 -1
- package/dist/generators/ZCodeConfigGenerator.js +23 -0
- package/dist/generators/ZCodeConfigGenerator.js.map +1 -1
- package/dist/graph/blastRadius.d.ts.map +1 -1
- package/dist/graph/blastRadius.js +12 -7
- package/dist/graph/blastRadius.js.map +1 -1
- package/dist/graph/callGraph.d.ts +31 -0
- package/dist/graph/callGraph.d.ts.map +1 -1
- package/dist/graph/callGraph.js +62 -32
- package/dist/graph/callGraph.js.map +1 -1
- package/dist/graph/importClassification.d.ts +28 -0
- package/dist/graph/importClassification.d.ts.map +1 -1
- package/dist/graph/importClassification.js +57 -0
- package/dist/graph/importClassification.js.map +1 -1
- package/dist/graph/importGraph.d.ts +38 -0
- package/dist/graph/importGraph.d.ts.map +1 -1
- package/dist/graph/importGraph.js +38 -0
- package/dist/graph/importGraph.js.map +1 -1
- package/dist/graph/outputFormatter.d.ts +12 -4
- package/dist/graph/outputFormatter.d.ts.map +1 -1
- package/dist/graph/outputFormatter.js +12 -62
- package/dist/graph/outputFormatter.js.map +1 -1
- package/dist/graph/resolutionEnvironment.d.ts +61 -0
- package/dist/graph/resolutionEnvironment.d.ts.map +1 -0
- package/dist/graph/resolutionEnvironment.js +57 -0
- package/dist/graph/resolutionEnvironment.js.map +1 -0
- package/dist/hooks/codex.d.ts +8 -1
- package/dist/hooks/codex.d.ts.map +1 -1
- package/dist/hooks/codex.js +7 -0
- package/dist/hooks/codex.js.map +1 -1
- package/dist/hooks/core.d.ts +6 -0
- package/dist/hooks/core.d.ts.map +1 -1
- package/dist/hooks/core.js +6 -1
- package/dist/hooks/core.js.map +1 -1
- package/dist/hooks/cursor.d.ts +11 -1
- package/dist/hooks/cursor.d.ts.map +1 -1
- package/dist/hooks/cursor.js +10 -0
- package/dist/hooks/cursor.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/installConfig.d.ts +23 -5
- package/dist/installConfig.d.ts.map +1 -1
- package/dist/installConfig.js +23 -5
- package/dist/installConfig.js.map +1 -1
- package/dist/installer.d.ts +6 -0
- package/dist/installer.d.ts.map +1 -1
- package/dist/installer.js +6 -0
- package/dist/installer.js.map +1 -1
- package/dist/invariants/ruleEngine.d.ts +3 -0
- package/dist/invariants/ruleEngine.d.ts.map +1 -1
- package/dist/invariants/ruleEngine.js +156 -119
- package/dist/invariants/ruleEngine.js.map +1 -1
- package/dist/invariants/ruleValidator.d.ts +3 -0
- package/dist/invariants/ruleValidator.d.ts.map +1 -1
- package/dist/invariants/ruleValidator.js +185 -178
- package/dist/invariants/ruleValidator.js.map +1 -1
- package/dist/languages/LanguageOrchestrator.d.ts +4 -1
- package/dist/languages/LanguageOrchestrator.d.ts.map +1 -1
- package/dist/languages/LanguageOrchestrator.js +8 -19
- package/dist/languages/LanguageOrchestrator.js.map +1 -1
- package/dist/languages/RuntimeManager.d.ts +8 -0
- package/dist/languages/RuntimeManager.d.ts.map +1 -1
- package/dist/languages/RuntimeManager.js +55 -5
- package/dist/languages/RuntimeManager.js.map +1 -1
- package/dist/languages/UniversalAnalyzer.js +1 -1
- package/dist/languages/UniversalAnalyzer.js.map +1 -1
- package/dist/languages/adapterBridge.d.ts +4 -0
- package/dist/languages/adapterBridge.d.ts.map +1 -1
- package/dist/languages/adapterBridge.js +37 -3
- package/dist/languages/adapterBridge.js.map +1 -1
- package/dist/languages/go/GoAdapter.d.ts.map +1 -1
- package/dist/languages/go/GoAdapter.js +11 -14
- package/dist/languages/go/GoAdapter.js.map +1 -1
- package/dist/languages/go/analyzer-darwin-amd64 +0 -0
- package/dist/languages/go/analyzer-darwin-arm64 +0 -0
- package/dist/languages/go/analyzer-linux-amd64 +0 -0
- package/dist/languages/go/analyzer-linux-arm64 +0 -0
- package/dist/languages/go/analyzer-src/analyzer.go +2 -0
- package/dist/languages/go/analyzer-src/dataaccess.go +388 -0
- package/dist/languages/go/analyzer-src/types.go +8 -0
- package/dist/languages/go/analyzer-windows-amd64.exe +0 -0
- package/dist/languages/go/database-packages.json +8 -0
- package/dist/languages/go/goResolution.d.ts +229 -0
- package/dist/languages/go/goResolution.d.ts.map +1 -0
- package/dist/languages/go/goResolution.js +799 -0
- package/dist/languages/go/goResolution.js.map +1 -0
- package/dist/languages/go/stdlib-packages.json +353 -0
- package/dist/languages/go/tenantInputs.d.ts +37 -0
- package/dist/languages/go/tenantInputs.d.ts.map +1 -0
- package/dist/languages/go/tenantInputs.js +121 -0
- package/dist/languages/go/tenantInputs.js.map +1 -0
- package/dist/languages/index.d.ts +1 -0
- package/dist/languages/index.d.ts.map +1 -1
- package/dist/languages/index.js +5 -0
- package/dist/languages/index.js.map +1 -1
- package/dist/languages/json/JsonAdapter.d.ts +177 -0
- package/dist/languages/json/JsonAdapter.d.ts.map +1 -0
- package/dist/languages/json/JsonAdapter.js +531 -0
- package/dist/languages/json/JsonAdapter.js.map +1 -0
- package/dist/languages/locationIndex.d.ts +41 -0
- package/dist/languages/locationIndex.d.ts.map +1 -0
- package/dist/languages/locationIndex.js +42 -0
- package/dist/languages/locationIndex.js.map +1 -0
- package/dist/languages/sql/dialectDetection.d.ts +57 -0
- package/dist/languages/sql/dialectDetection.d.ts.map +1 -0
- package/dist/languages/sql/dialectDetection.js +135 -0
- package/dist/languages/sql/dialectDetection.js.map +1 -0
- package/dist/languages/sql/sqlAst.d.ts +494 -0
- package/dist/languages/sql/sqlAst.d.ts.map +1 -0
- package/dist/languages/sql/sqlAst.js +1817 -0
- package/dist/languages/sql/sqlAst.js.map +1 -0
- package/dist/languages/testConventions.d.ts +12 -1
- package/dist/languages/testConventions.d.ts.map +1 -1
- package/dist/languages/testConventions.js +13 -1
- package/dist/languages/testConventions.js.map +1 -1
- package/dist/languages/tree-sitter/TreeSitterCssAdapter.js +1 -1
- package/dist/languages/tree-sitter/TreeSitterCssAdapter.js.map +1 -1
- package/dist/languages/tree-sitter/converter.js +2 -2
- package/dist/languages/tree-sitter/converter.js.map +1 -1
- package/dist/languages/tree-sitter/parser.d.ts +3 -4
- package/dist/languages/tree-sitter/parser.d.ts.map +1 -1
- package/dist/languages/tree-sitter/parser.js +10 -4
- package/dist/languages/tree-sitter/parser.js.map +1 -1
- package/dist/languages/tree-sitter/rawNode.d.ts +3 -0
- package/dist/languages/tree-sitter/rawNode.d.ts.map +1 -1
- package/dist/languages/tree-sitter/rawNode.js +3 -0
- package/dist/languages/tree-sitter/rawNode.js.map +1 -1
- package/dist/languages/types.d.ts +7 -0
- package/dist/languages/types.d.ts.map +1 -1
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts +36 -0
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts.map +1 -1
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js +168 -45
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js.map +1 -1
- package/dist/languages/typescript/database-packages.json +19 -0
- package/dist/ledger.d.ts +118 -2
- package/dist/ledger.d.ts.map +1 -1
- package/dist/ledger.js +167 -45
- package/dist/ledger.js.map +1 -1
- package/dist/legacyIndexNotice.d.ts +32 -0
- package/dist/legacyIndexNotice.d.ts.map +1 -0
- package/dist/legacyIndexNotice.js +89 -0
- package/dist/legacyIndexNotice.js.map +1 -0
- package/dist/mcp-tools/discoveryQueries.d.ts +55 -0
- package/dist/mcp-tools/discoveryQueries.d.ts.map +1 -0
- package/dist/mcp-tools/discoveryQueries.js +157 -0
- package/dist/mcp-tools/discoveryQueries.js.map +1 -0
- package/dist/mcp-tools/projectTasks.d.ts +9 -123
- package/dist/mcp-tools/projectTasks.d.ts.map +1 -1
- package/dist/mcp-tools/projectTasks.js +180 -170
- package/dist/mcp-tools/projectTasks.js.map +1 -1
- package/dist/mcp-tools/whitelistTools.d.ts +20 -0
- package/dist/mcp-tools/whitelistTools.d.ts.map +1 -1
- package/dist/mcp-tools/whitelistTools.js +20 -0
- package/dist/mcp-tools/whitelistTools.js.map +1 -1
- package/dist/mcp-tools/workflowGuide.d.ts +9 -0
- package/dist/mcp-tools/workflowGuide.d.ts.map +1 -1
- package/dist/mcp-tools/workflowGuide.js +13 -5
- package/dist/mcp-tools/workflowGuide.js.map +1 -1
- package/dist/mcp-tools-shared.d.ts +78 -0
- package/dist/mcp-tools-shared.d.ts.map +1 -1
- package/dist/mcp-tools-shared.js +203 -340
- package/dist/mcp-tools-shared.js.map +1 -1
- package/dist/mcp-ui-simple.d.ts +2 -0
- package/dist/mcp-ui-simple.d.ts.map +1 -1
- package/dist/mcp-ui-simple.js +12 -5
- package/dist/mcp-ui-simple.js.map +1 -1
- package/dist/mcp.d.ts +6 -0
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +827 -850
- package/dist/mcp.js.map +1 -1
- package/dist/mcpAuditJobs.d.ts +29 -33
- package/dist/mcpAuditJobs.d.ts.map +1 -1
- package/dist/mcpAuditJobs.js +102 -791
- package/dist/mcpAuditJobs.js.map +1 -1
- package/dist/mcpAutoIndex.d.ts +5 -0
- package/dist/mcpAutoIndex.d.ts.map +1 -1
- package/dist/mcpAutoIndex.js +7 -2
- package/dist/mcpAutoIndex.js.map +1 -1
- package/dist/mcpDiagnostics.d.ts +7 -0
- package/dist/mcpDiagnostics.d.ts.map +1 -1
- package/dist/mcpDiagnostics.js +34 -9
- package/dist/mcpDiagnostics.js.map +1 -1
- package/dist/mcpToolErrors.d.ts +16 -0
- package/dist/mcpToolErrors.d.ts.map +1 -1
- package/dist/mcpToolErrors.js +16 -0
- package/dist/mcpToolErrors.js.map +1 -1
- package/dist/nextFile.d.ts +6 -0
- package/dist/nextFile.d.ts.map +1 -1
- package/dist/nextFile.js +6 -0
- package/dist/nextFile.js.map +1 -1
- package/dist/nextFileIncremental.d.ts +44 -4
- package/dist/nextFileIncremental.d.ts.map +1 -1
- package/dist/nextFileIncremental.js +47 -7
- package/dist/nextFileIncremental.js.map +1 -1
- package/dist/phase/batchFunctions.d.ts +38 -0
- package/dist/phase/batchFunctions.d.ts.map +1 -0
- package/dist/phase/batchFunctions.js +64 -0
- package/dist/phase/batchFunctions.js.map +1 -0
- package/dist/phase/checks.d.ts +39 -0
- package/dist/phase/checks.d.ts.map +1 -0
- package/dist/phase/checks.js +48 -0
- package/dist/phase/checks.js.map +1 -0
- package/dist/phase/codeBlocks.d.ts +25 -0
- package/dist/phase/codeBlocks.d.ts.map +1 -0
- package/dist/phase/codeBlocks.js +268 -0
- package/dist/phase/codeBlocks.js.map +1 -0
- package/dist/phase/colorMath.d.ts +41 -0
- package/dist/phase/colorMath.d.ts.map +1 -0
- package/dist/phase/colorMath.js +109 -0
- package/dist/phase/colorMath.js.map +1 -0
- package/dist/phase/config.d.ts +29 -0
- package/dist/phase/config.d.ts.map +1 -0
- package/dist/phase/config.js +54 -0
- package/dist/phase/config.js.map +1 -0
- package/dist/phase/consumed.d.ts +47 -0
- package/dist/phase/consumed.d.ts.map +1 -0
- package/dist/phase/consumed.js +22 -0
- package/dist/phase/consumed.js.map +1 -0
- package/dist/phase/conventionMining.d.ts +59 -0
- package/dist/phase/conventionMining.d.ts.map +1 -0
- package/dist/phase/conventionMining.js +152 -0
- package/dist/phase/conventionMining.js.map +1 -0
- package/dist/phase/coverage.d.ts +65 -0
- package/dist/phase/coverage.d.ts.map +1 -0
- package/dist/phase/coverage.js +121 -0
- package/dist/phase/coverage.js.map +1 -0
- package/dist/phase/dag.d.ts +49 -0
- package/dist/phase/dag.d.ts.map +1 -0
- package/dist/phase/dag.js +120 -0
- package/dist/phase/dag.js.map +1 -0
- package/dist/phase/dataAccessCalls.d.ts +33 -0
- package/dist/phase/dataAccessCalls.d.ts.map +1 -0
- package/dist/phase/dataAccessCalls.js +42 -0
- package/dist/phase/dataAccessCalls.js.map +1 -0
- package/dist/phase/dataAccessCallsCandidates.d.ts +25 -0
- package/dist/phase/dataAccessCallsCandidates.d.ts.map +1 -0
- package/dist/phase/dataAccessCallsCandidates.js +27 -0
- package/dist/phase/dataAccessCallsCandidates.js.map +1 -0
- package/dist/phase/dynamicSql.d.ts +18 -0
- package/dist/phase/dynamicSql.d.ts.map +1 -0
- package/dist/phase/dynamicSql.js +20 -0
- package/dist/phase/dynamicSql.js.map +1 -0
- package/dist/phase/exportForm.d.ts +23 -0
- package/dist/phase/exportForm.d.ts.map +1 -0
- package/dist/phase/exportForm.js +29 -0
- package/dist/phase/exportForm.js.map +1 -0
- package/dist/phase/exportSymbols.d.ts +21 -0
- package/dist/phase/exportSymbols.d.ts.map +1 -0
- package/dist/phase/exportSymbols.js +28 -0
- package/dist/phase/exportSymbols.js.map +1 -0
- package/dist/phase/fileHeader.d.ts +15 -0
- package/dist/phase/fileHeader.d.ts.map +1 -0
- package/dist/phase/fileHeader.js +33 -0
- package/dist/phase/fileHeader.js.map +1 -0
- package/dist/phase/fileImports.d.ts +39 -0
- package/dist/phase/fileImports.d.ts.map +1 -0
- package/dist/phase/fileImports.js +138 -0
- package/dist/phase/fileImports.js.map +1 -0
- package/dist/phase/fileSymbols.d.ts +25 -0
- package/dist/phase/fileSymbols.d.ts.map +1 -0
- package/dist/phase/fileSymbols.js +302 -0
- package/dist/phase/fileSymbols.js.map +1 -0
- package/dist/phase/functionBodies.d.ts +28 -0
- package/dist/phase/functionBodies.d.ts.map +1 -0
- package/dist/phase/functionBodies.js +67 -0
- package/dist/phase/functionBodies.js.map +1 -0
- package/dist/phase/functionIndex.d.ts +28 -0
- package/dist/phase/functionIndex.d.ts.map +1 -0
- package/dist/phase/functionIndex.js +152 -0
- package/dist/phase/functionIndex.js.map +1 -0
- package/dist/phase/goFunctionAnalysis.d.ts +47 -0
- package/dist/phase/goFunctionAnalysis.d.ts.map +1 -0
- package/dist/phase/goFunctionAnalysis.js +291 -0
- package/dist/phase/goFunctionAnalysis.js.map +1 -0
- package/dist/phase/goFunctions.d.ts +38 -0
- package/dist/phase/goFunctions.d.ts.map +1 -0
- package/dist/phase/goFunctions.js +154 -0
- package/dist/phase/goFunctions.js.map +1 -0
- package/dist/phase/goImports.d.ts +29 -0
- package/dist/phase/goImports.d.ts.map +1 -0
- package/dist/phase/goImports.js +68 -0
- package/dist/phase/goImports.js.map +1 -0
- package/dist/phase/goPackageBindings.d.ts +22 -0
- package/dist/phase/goPackageBindings.d.ts.map +1 -0
- package/dist/phase/goPackageBindings.js +30 -0
- package/dist/phase/goPackageBindings.js.map +1 -0
- package/dist/phase/goSwitches.d.ts +28 -0
- package/dist/phase/goSwitches.d.ts.map +1 -0
- package/dist/phase/goSwitches.js +52 -0
- package/dist/phase/goSwitches.js.map +1 -0
- package/dist/phase/importForm.d.ts +20 -0
- package/dist/phase/importForm.d.ts.map +1 -0
- package/dist/phase/importForm.js +27 -0
- package/dist/phase/importForm.js.map +1 -0
- package/dist/phase/importSpecifiers.d.ts +20 -0
- package/dist/phase/importSpecifiers.d.ts.map +1 -0
- package/dist/phase/importSpecifiers.js +30 -0
- package/dist/phase/importSpecifiers.js.map +1 -0
- package/dist/phase/imports.d.ts +18 -0
- package/dist/phase/imports.d.ts.map +1 -0
- package/dist/phase/imports.js +25 -0
- package/dist/phase/imports.js.map +1 -0
- package/dist/phase/jsonDocument.d.ts +26 -0
- package/dist/phase/jsonDocument.d.ts.map +1 -0
- package/dist/phase/jsonDocument.js +36 -0
- package/dist/phase/jsonDocument.js.map +1 -0
- package/dist/phase/localBinding.d.ts +33 -0
- package/dist/phase/localBinding.d.ts.map +1 -0
- package/dist/phase/localBinding.js +208 -0
- package/dist/phase/localBinding.js.map +1 -0
- package/dist/phase/loopQueries.d.ts +31 -0
- package/dist/phase/loopQueries.d.ts.map +1 -0
- package/dist/phase/loopQueries.js +44 -0
- package/dist/phase/loopQueries.js.map +1 -0
- package/dist/phase/loopQueryCandidates.d.ts +26 -0
- package/dist/phase/loopQueryCandidates.d.ts.map +1 -0
- package/dist/phase/loopQueryCandidates.js +28 -0
- package/dist/phase/loopQueryCandidates.js.map +1 -0
- package/dist/phase/oracles.d.ts +216 -0
- package/dist/phase/oracles.d.ts.map +1 -0
- package/dist/phase/oracles.js +484 -0
- package/dist/phase/oracles.js.map +1 -0
- package/dist/phase/phaseModel.d.ts +190 -0
- package/dist/phase/phaseModel.d.ts.map +1 -0
- package/dist/phase/phaseModel.js +491 -0
- package/dist/phase/phaseModel.js.map +1 -0
- package/dist/phase/producers.d.ts +450 -0
- package/dist/phase/producers.d.ts.map +1 -0
- package/dist/phase/producers.js +1030 -0
- package/dist/phase/producers.js.map +1 -0
- package/dist/phase/querySiteCandidates.d.ts +27 -0
- package/dist/phase/querySiteCandidates.d.ts.map +1 -0
- package/dist/phase/querySiteCandidates.js +66 -0
- package/dist/phase/querySiteCandidates.js.map +1 -0
- package/dist/phase/querySites.d.ts +30 -0
- package/dist/phase/querySites.d.ts.map +1 -0
- package/dist/phase/querySites.js +93 -0
- package/dist/phase/querySites.js.map +1 -0
- package/dist/phase/reachability.d.ts +61 -0
- package/dist/phase/reachability.d.ts.map +1 -0
- package/dist/phase/reachability.js +104 -0
- package/dist/phase/reachability.js.map +1 -0
- package/dist/phase/reactComponents.d.ts +33 -0
- package/dist/phase/reactComponents.d.ts.map +1 -0
- package/dist/phase/reactComponents.js +47 -0
- package/dist/phase/reactComponents.js.map +1 -0
- package/dist/phase/receiverActivity.d.ts +35 -0
- package/dist/phase/receiverActivity.d.ts.map +1 -0
- package/dist/phase/receiverActivity.js +66 -0
- package/dist/phase/receiverActivity.js.map +1 -0
- package/dist/phase/receiverConsumers.d.ts +207 -0
- package/dist/phase/receiverConsumers.d.ts.map +1 -0
- package/dist/phase/receiverConsumers.js +1063 -0
- package/dist/phase/receiverConsumers.js.map +1 -0
- package/dist/phase/receiverProvenance.d.ts +120 -0
- package/dist/phase/receiverProvenance.d.ts.map +1 -0
- package/dist/phase/receiverProvenance.js +377 -0
- package/dist/phase/receiverProvenance.js.map +1 -0
- package/dist/phase/routing.d.ts +47 -0
- package/dist/phase/routing.d.ts.map +1 -0
- package/dist/phase/routing.js +62 -0
- package/dist/phase/routing.js.map +1 -0
- package/dist/phase/rules/conventions.d.ts +61 -0
- package/dist/phase/rules/conventions.d.ts.map +1 -0
- package/dist/phase/rules/conventions.js +403 -0
- package/dist/phase/rules/conventions.js.map +1 -0
- package/dist/phase/rules/crossDomain.d.ts +102 -0
- package/dist/phase/rules/crossDomain.d.ts.map +1 -0
- package/dist/phase/rules/crossDomain.js +918 -0
- package/dist/phase/rules/crossDomain.js.map +1 -0
- package/dist/phase/rules/dataAccess.d.ts +62 -0
- package/dist/phase/rules/dataAccess.d.ts.map +1 -0
- package/dist/phase/rules/dataAccess.js +480 -0
- package/dist/phase/rules/dataAccess.js.map +1 -0
- package/dist/phase/rules/dependencyGraph.d.ts +44 -0
- package/dist/phase/rules/dependencyGraph.d.ts.map +1 -0
- package/dist/phase/rules/dependencyGraph.js +260 -0
- package/dist/phase/rules/dependencyGraph.js.map +1 -0
- package/dist/phase/rules/documentation.d.ts +45 -0
- package/dist/phase/rules/documentation.d.ts.map +1 -0
- package/dist/phase/rules/documentation.js +340 -0
- package/dist/phase/rules/documentation.js.map +1 -0
- package/dist/phase/rules/dry.d.ts +109 -0
- package/dist/phase/rules/dry.d.ts.map +1 -0
- package/dist/phase/rules/dry.js +803 -0
- package/dist/phase/rules/dry.js.map +1 -0
- package/dist/phase/rules/fileDocumentation.d.ts +36 -0
- package/dist/phase/rules/fileDocumentation.d.ts.map +1 -0
- package/dist/phase/rules/fileDocumentation.js +134 -0
- package/dist/phase/rules/fileDocumentation.js.map +1 -0
- package/dist/phase/rules/functionBodies.d.ts +33 -0
- package/dist/phase/rules/functionBodies.d.ts.map +1 -0
- package/dist/phase/rules/functionBodies.js +71 -0
- package/dist/phase/rules/functionBodies.js.map +1 -0
- package/dist/phase/rules/goRules.d.ts +49 -0
- package/dist/phase/rules/goRules.d.ts.map +1 -0
- package/dist/phase/rules/goRules.js +209 -0
- package/dist/phase/rules/goRules.js.map +1 -0
- package/dist/phase/rules/querySites.d.ts +29 -0
- package/dist/phase/rules/querySites.d.ts.map +1 -0
- package/dist/phase/rules/querySites.js +94 -0
- package/dist/phase/rules/querySites.js.map +1 -0
- package/dist/phase/rules/react.d.ts +38 -0
- package/dist/phase/rules/react.d.ts.map +1 -0
- package/dist/phase/rules/react.js +202 -0
- package/dist/phase/rules/react.js.map +1 -0
- package/dist/phase/rules/registry.d.ts +170 -0
- package/dist/phase/rules/registry.d.ts.map +1 -0
- package/dist/phase/rules/registry.js +103 -0
- package/dist/phase/rules/registry.js.map +1 -0
- package/dist/phase/rules/schema.d.ts +79 -0
- package/dist/phase/rules/schema.d.ts.map +1 -0
- package/dist/phase/rules/schema.js +273 -0
- package/dist/phase/rules/schema.js.map +1 -0
- package/dist/phase/rules/schemaJson.d.ts +32 -0
- package/dist/phase/rules/schemaJson.d.ts.map +1 -0
- package/dist/phase/rules/schemaJson.js +81 -0
- package/dist/phase/rules/schemaJson.js.map +1 -0
- package/dist/phase/rules/schemaValidator.d.ts +38 -0
- package/dist/phase/rules/schemaValidator.d.ts.map +1 -0
- package/dist/phase/rules/schemaValidator.js +107 -0
- package/dist/phase/rules/schemaValidator.js.map +1 -0
- package/dist/phase/rules/secrets.d.ts +34 -0
- package/dist/phase/rules/secrets.d.ts.map +1 -0
- package/dist/phase/rules/secrets.js +208 -0
- package/dist/phase/rules/secrets.js.map +1 -0
- package/dist/phase/rules/security.d.ts +30 -0
- package/dist/phase/rules/security.d.ts.map +1 -0
- package/dist/phase/rules/security.js +85 -0
- package/dist/phase/rules/security.js.map +1 -0
- package/dist/phase/rules/securityDefects.d.ts +37 -0
- package/dist/phase/rules/securityDefects.d.ts.map +1 -0
- package/dist/phase/rules/securityDefects.js +167 -0
- package/dist/phase/rules/securityDefects.js.map +1 -0
- package/dist/phase/rules/solid.d.ts +61 -0
- package/dist/phase/rules/solid.d.ts.map +1 -0
- package/dist/phase/rules/solid.js +562 -0
- package/dist/phase/rules/solid.js.map +1 -0
- package/dist/phase/rules/styles.d.ts +77 -0
- package/dist/phase/rules/styles.d.ts.map +1 -0
- package/dist/phase/rules/styles.js +868 -0
- package/dist/phase/rules/styles.js.map +1 -0
- package/dist/phase/rules/unreferencedModule.d.ts +26 -0
- package/dist/phase/rules/unreferencedModule.d.ts.map +1 -0
- package/dist/phase/rules/unreferencedModule.js +61 -0
- package/dist/phase/rules/unreferencedModule.js.map +1 -0
- package/dist/phase/runner.d.ts +549 -0
- package/dist/phase/runner.d.ts.map +1 -0
- package/dist/phase/runner.js +1098 -0
- package/dist/phase/runner.js.map +1 -0
- package/dist/phase/schemaCode.d.ts +34 -0
- package/dist/phase/schemaCode.d.ts.map +1 -0
- package/dist/phase/schemaCode.js +53 -0
- package/dist/phase/schemaCode.js.map +1 -0
- package/dist/phase/schemaObjects.d.ts +37 -0
- package/dist/phase/schemaObjects.d.ts.map +1 -0
- package/dist/phase/schemaObjects.js +139 -0
- package/dist/phase/schemaObjects.js.map +1 -0
- package/dist/phase/schemaUsage.d.ts +30 -0
- package/dist/phase/schemaUsage.d.ts.map +1 -0
- package/dist/phase/schemaUsage.js +99 -0
- package/dist/phase/schemaUsage.js.map +1 -0
- package/dist/phase/schemaUsageCandidates.d.ts +32 -0
- package/dist/phase/schemaUsageCandidates.d.ts.map +1 -0
- package/dist/phase/schemaUsageCandidates.js +165 -0
- package/dist/phase/schemaUsageCandidates.js.map +1 -0
- package/dist/phase/schemaValidations.d.ts +34 -0
- package/dist/phase/schemaValidations.d.ts.map +1 -0
- package/dist/phase/schemaValidations.js +53 -0
- package/dist/phase/schemaValidations.js.map +1 -0
- package/dist/phase/secretCandidates.d.ts +28 -0
- package/dist/phase/secretCandidates.d.ts.map +1 -0
- package/dist/phase/secretCandidates.js +132 -0
- package/dist/phase/secretCandidates.js.map +1 -0
- package/dist/phase/securityCandidates.d.ts +29 -0
- package/dist/phase/securityCandidates.d.ts.map +1 -0
- package/dist/phase/securityCandidates.js +469 -0
- package/dist/phase/securityCandidates.js.map +1 -0
- package/dist/phase/seeded-defects.d.ts +18 -0
- package/dist/phase/seeded-defects.d.ts.map +1 -0
- package/dist/phase/seeded-defects.js +61 -0
- package/dist/phase/seeded-defects.js.map +1 -0
- package/dist/phase/stringLiterals.d.ts +24 -0
- package/dist/phase/stringLiterals.d.ts.map +1 -0
- package/dist/phase/stringLiterals.js +35 -0
- package/dist/phase/stringLiterals.js.map +1 -0
- package/dist/phase/stylesCss.d.ts +25 -0
- package/dist/phase/stylesCss.d.ts.map +1 -0
- package/dist/phase/stylesCss.js +34 -0
- package/dist/phase/stylesCss.js.map +1 -0
- package/dist/phase/stylesMarkup.d.ts +31 -0
- package/dist/phase/stylesMarkup.d.ts.map +1 -0
- package/dist/phase/stylesMarkup.js +48 -0
- package/dist/phase/stylesMarkup.js.map +1 -0
- package/dist/phase/stylesSource.d.ts +36 -0
- package/dist/phase/stylesSource.d.ts.map +1 -0
- package/dist/phase/stylesSource.js +50 -0
- package/dist/phase/stylesSource.js.map +1 -0
- package/dist/phase/typeDeclarations.d.ts +33 -0
- package/dist/phase/typeDeclarations.d.ts.map +1 -0
- package/dist/phase/typeDeclarations.js +76 -0
- package/dist/phase/typeDeclarations.js.map +1 -0
- package/dist/phase/types.d.ts +2199 -0
- package/dist/phase/types.d.ts.map +1 -0
- package/dist/phase/types.js +27 -0
- package/dist/phase/types.js.map +1 -0
- package/dist/phase/withinFileProvenance.d.ts +50 -0
- package/dist/phase/withinFileProvenance.d.ts.map +1 -0
- package/dist/phase/withinFileProvenance.js +112 -0
- package/dist/phase/withinFileProvenance.js.map +1 -0
- package/dist/pipeline.d.ts +37 -30
- package/dist/pipeline.d.ts.map +1 -1
- package/dist/pipeline.js +131 -326
- package/dist/pipeline.js.map +1 -1
- package/dist/pipelineAdapters.d.ts +104 -21
- package/dist/pipelineAdapters.d.ts.map +1 -1
- package/dist/pipelineAdapters.js +1144 -984
- package/dist/pipelineAdapters.js.map +1 -1
- package/dist/pipelineTypes.d.ts +21 -0
- package/dist/pipelineTypes.d.ts.map +1 -1
- package/dist/pipelineTypes.js +21 -10
- package/dist/pipelineTypes.js.map +1 -1
- package/dist/presets/presets.d.ts +9 -2
- package/dist/presets/presets.d.ts.map +1 -1
- package/dist/presets/presets.js +15 -26
- package/dist/presets/presets.js.map +1 -1
- package/dist/reporting/csvReportGenerator.d.ts +14 -3
- package/dist/reporting/csvReportGenerator.d.ts.map +1 -1
- package/dist/reporting/csvReportGenerator.js +14 -3
- package/dist/reporting/csvReportGenerator.js.map +1 -1
- package/dist/reporting/htmlReportGenerator.d.ts +5 -1
- package/dist/reporting/htmlReportGenerator.d.ts.map +1 -1
- package/dist/reporting/htmlReportGenerator.js +5 -1
- package/dist/reporting/htmlReportGenerator.js.map +1 -1
- package/dist/reporting/jsonReportGenerator.d.ts +9 -2
- package/dist/reporting/jsonReportGenerator.d.ts.map +1 -1
- package/dist/reporting/jsonReportGenerator.js +19 -5
- package/dist/reporting/jsonReportGenerator.js.map +1 -1
- package/dist/reporting/reportGenerator.d.ts +9 -2
- package/dist/reporting/reportGenerator.d.ts.map +1 -1
- package/dist/reporting/reportGenerator.js +9 -2
- package/dist/reporting/reportGenerator.js.map +1 -1
- package/dist/reporting/sarifReportGenerator.d.ts +14 -0
- package/dist/reporting/sarifReportGenerator.d.ts.map +1 -1
- package/dist/reporting/sarifReportGenerator.js +14 -0
- package/dist/reporting/sarifReportGenerator.js.map +1 -1
- package/dist/reporting/sizeDistribution.d.ts +19 -2
- package/dist/reporting/sizeDistribution.d.ts.map +1 -1
- package/dist/reporting/sizeDistribution.js +23 -5
- package/dist/reporting/sizeDistribution.js.map +1 -1
- package/dist/ruleAliases.d.ts +6 -8
- package/dist/ruleAliases.d.ts.map +1 -1
- package/dist/ruleAliases.js +29 -4
- package/dist/ruleAliases.js.map +1 -1
- package/dist/search/QueryParser.d.ts +1 -0
- package/dist/search/QueryParser.d.ts.map +1 -1
- package/dist/search/QueryParser.js +32 -91
- package/dist/search/QueryParser.js.map +1 -1
- package/dist/services/CodeMapGenerator.d.ts +19 -20
- package/dist/services/CodeMapGenerator.d.ts.map +1 -1
- package/dist/services/CodeMapGenerator.js +214 -194
- package/dist/services/CodeMapGenerator.js.map +1 -1
- package/dist/services/ProjectTaskRepository.d.ts +65 -3
- package/dist/services/ProjectTaskRepository.d.ts.map +1 -1
- package/dist/services/ProjectTaskRepository.js +94 -25
- package/dist/services/ProjectTaskRepository.js.map +1 -1
- package/dist/services/auditJobService.d.ts +17 -1
- package/dist/services/auditJobService.d.ts.map +1 -1
- package/dist/services/auditJobService.js +16 -0
- package/dist/services/auditJobService.js.map +1 -1
- package/dist/services/fileAccounting.d.ts +43 -5
- package/dist/services/fileAccounting.d.ts.map +1 -1
- package/dist/services/fileAccounting.js +48 -9
- package/dist/services/fileAccounting.js.map +1 -1
- package/dist/services/projectTaskHelpers.d.ts +45 -0
- package/dist/services/projectTaskHelpers.d.ts.map +1 -1
- package/dist/services/projectTaskHelpers.js +45 -0
- package/dist/services/projectTaskHelpers.js.map +1 -1
- package/dist/services/whitelistService.d.ts +40 -5
- package/dist/services/whitelistService.d.ts.map +1 -1
- package/dist/services/whitelistService.js +87 -46
- package/dist/services/whitelistService.js.map +1 -1
- package/dist/sqlite/betterSqlite3.d.ts +35 -1
- package/dist/sqlite/betterSqlite3.d.ts.map +1 -1
- package/dist/sqlite/betterSqlite3.js +35 -1
- package/dist/sqlite/betterSqlite3.js.map +1 -1
- package/dist/sqlite/driver.d.ts +23 -0
- package/dist/sqlite/driver.d.ts.map +1 -1
- package/dist/sqlite/driver.js +23 -0
- package/dist/sqlite/driver.js.map +1 -1
- package/dist/sqlite/nodeSqlite.d.ts +35 -1
- package/dist/sqlite/nodeSqlite.d.ts.map +1 -1
- package/dist/sqlite/nodeSqlite.js +35 -1
- package/dist/sqlite/nodeSqlite.js.map +1 -1
- package/dist/structuralSignature.d.ts +9 -0
- package/dist/structuralSignature.d.ts.map +1 -1
- package/dist/structuralSignature.js +9 -0
- package/dist/structuralSignature.js.map +1 -1
- package/dist/styles/cssAstExtractor.d.ts +15 -0
- package/dist/styles/cssAstExtractor.d.ts.map +1 -1
- package/dist/styles/cssAstExtractor.js +15 -0
- package/dist/styles/cssAstExtractor.js.map +1 -1
- package/dist/styles/normalizer.d.ts +6 -0
- package/dist/styles/normalizer.d.ts.map +1 -1
- package/dist/styles/normalizer.js +6 -0
- package/dist/styles/normalizer.js.map +1 -1
- package/dist/styles/styleExtractor.d.ts +29 -2
- package/dist/styles/styleExtractor.d.ts.map +1 -1
- package/dist/styles/styleExtractor.js +67 -48
- package/dist/styles/styleExtractor.js.map +1 -1
- package/dist/styles/styleIndexer.d.ts +8 -0
- package/dist/styles/styleIndexer.d.ts.map +1 -1
- package/dist/styles/styleIndexer.js +135 -138
- package/dist/styles/styleIndexer.js.map +1 -1
- package/dist/styles/tailwindConfigLoader.d.ts +12 -0
- package/dist/styles/tailwindConfigLoader.d.ts.map +1 -1
- package/dist/styles/tailwindConfigLoader.js +12 -0
- package/dist/styles/tailwindConfigLoader.js.map +1 -1
- package/dist/styles/tailwindExpander.d.ts +3 -0
- package/dist/styles/tailwindExpander.d.ts.map +1 -1
- package/dist/styles/tailwindExpander.js +8 -4
- package/dist/styles/tailwindExpander.js.map +1 -1
- package/dist/styles/tailwindProbe.d.ts +9 -0
- package/dist/styles/tailwindProbe.d.ts.map +1 -1
- package/dist/styles/tailwindProbe.js +181 -166
- package/dist/styles/tailwindProbe.js.map +1 -1
- package/dist/styles/tailwindUtilityExpander.d.ts +13 -0
- package/dist/styles/tailwindUtilityExpander.d.ts.map +1 -1
- package/dist/styles/tailwindUtilityExpander.js +13 -0
- package/dist/styles/tailwindUtilityExpander.js.map +1 -1
- package/dist/symbols.d.ts +13 -11
- package/dist/symbols.d.ts.map +1 -1
- package/dist/symbols.js +14 -21
- package/dist/symbols.js.map +1 -1
- package/dist/telemetry.d.ts +31 -3
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +31 -3
- package/dist/telemetry.js.map +1 -1
- package/dist/tool-registry.d.ts +37 -1
- package/dist/tool-registry.d.ts.map +1 -1
- package/dist/tool-registry.js +37 -1
- package/dist/tool-registry.js.map +1 -1
- package/dist/types.d.ts +114 -71
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +7 -16
- package/dist/types.js.map +1 -1
- package/dist/ui/InteractivePrompts.d.ts +12 -0
- package/dist/ui/InteractivePrompts.d.ts.map +1 -1
- package/dist/ui/InteractivePrompts.js +12 -0
- package/dist/ui/InteractivePrompts.js.map +1 -1
- package/dist/utils/astParser.d.ts +15 -0
- package/dist/utils/astParser.d.ts.map +1 -1
- package/dist/utils/astParser.js +15 -0
- package/dist/utils/astParser.js.map +1 -1
- package/dist/utils/astUtils.d.ts +60 -0
- package/dist/utils/astUtils.d.ts.map +1 -1
- package/dist/utils/astUtils.js +350 -362
- package/dist/utils/astUtils.js.map +1 -1
- package/dist/utils/contentHash.d.ts +22 -0
- package/dist/utils/contentHash.d.ts.map +1 -0
- package/dist/utils/contentHash.js +26 -0
- package/dist/utils/contentHash.js.map +1 -0
- package/dist/utils/dependencyExtractor.d.ts +28 -0
- package/dist/utils/dependencyExtractor.d.ts.map +1 -1
- package/dist/utils/dependencyExtractor.js +28 -1
- package/dist/utils/dependencyExtractor.js.map +1 -1
- package/dist/utils/errorMessage.d.ts +10 -0
- package/dist/utils/errorMessage.d.ts.map +1 -0
- package/dist/utils/errorMessage.js +12 -0
- package/dist/utils/errorMessage.js.map +1 -0
- package/dist/utils/fileDiscovery.d.ts +61 -2
- package/dist/utils/fileDiscovery.d.ts.map +1 -1
- package/dist/utils/fileDiscovery.js +131 -23
- package/dist/utils/fileDiscovery.js.map +1 -1
- package/dist/utils/reactDetection.d.ts +34 -5
- package/dist/utils/reactDetection.d.ts.map +1 -1
- package/dist/utils/reactDetection.js +73 -52
- package/dist/utils/reactDetection.js.map +1 -1
- package/dist/version.generated.d.ts +1 -1
- package/dist/version.generated.js +1 -1
- package/dist/workers/auditWorker.js +7 -3
- package/dist/workers/auditWorker.js.map +1 -1
- package/examples/.auditrc.example.json +0 -8
- package/examples/.auditrc.json +0 -11
- package/examples/.code-auditor.json +0 -2
- package/examples/nextjs.auditrc.json +0 -8
- package/examples/node-api.auditrc.json +0 -7
- package/examples/react.auditrc.json +0 -6
- package/examples/tolerant-solid.auditrc.json +0 -5
- package/package.json +18 -9
- package/plugin/.claude-plugin/manifest.json +16 -0
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/hooks/hooks.json +7 -3
- package/plugin/scripts/hook-audit.sh +46 -16
- package/plugin/scripts/hook-common.sh +81 -12
- package/plugin/scripts/hook-drift-check.sh +76 -0
- package/plugin/scripts/hook-self-audit.sh +22 -14
- package/plugin/scripts/hook-warm.sh +5 -6
- package/plugin/skills/code-auditor/SKILL.md +1 -1
- package/server.json +10 -4
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spec 68 §3.2 — the `mined-conventions` corpus producer.
|
|
3
|
+
*
|
|
4
|
+
* The conventions analyzer is the third index-backed analyzer whose *rule* half
|
|
5
|
+
* moves onto the phase model (after styles and cross-domain). Its input is the
|
|
6
|
+
* mined-conventions set — a derived fact — so the producer is a corpus
|
|
7
|
+
* processor: `function-index` (the per-file fact) reduces to `mined-conventions`
|
|
8
|
+
* through the three pure miners that also back the SQLite path.
|
|
9
|
+
*
|
|
10
|
+
* The pure miners (`mineUsagePairsFromFacts` / `mineErrorHandlingFromFacts` /
|
|
11
|
+
* `mineNamingFromFacts` / `mineExportShapeFromFacts` /
|
|
12
|
+
* `mineImportFormFromFacts` in conventionMiner.ts) are byte-identical to the DB
|
|
13
|
+
* miners the legacy pipeline ran; the DB miners are now thin wrappers that
|
|
14
|
+
* project `functions`/`function_calls` rows into the same row types and call the
|
|
15
|
+
* pure function. So the corpus fact produced here is, for the five domains the
|
|
16
|
+
* `function-index` (+ `export-form` + `import-form`) facts can serve, the same
|
|
17
|
+
* set the SQLite `conventions` table held. `import-form` reads the `import-form`
|
|
18
|
+
* fact — a distinct per-file fact (regex-parsed source, not the AST `imports`
|
|
19
|
+
* fact) — but is still driven off the `function-index` distinct-file set, so a
|
|
20
|
+
* file with imports but no indexed function contributes nothing on either path.
|
|
21
|
+
*
|
|
22
|
+
* The DB-assigned `id` is dropped (a function's identity is `(file, name, line)`),
|
|
23
|
+
* so the array index stands in for it here; the miner uses `id` only to key the
|
|
24
|
+
* caller→function and caller→call-set maps, so 0-based indices are equivalent to
|
|
25
|
+
* 1-based auto-increments as long as the array order mirrors the DB row order.
|
|
26
|
+
* `hash`/`created_at` are storage-only fields the phase model has no analogue of.
|
|
27
|
+
*/
|
|
28
|
+
import type { ConventionMiningConfig } from '../types.js';
|
|
29
|
+
import type { ExportFormFact, FunctionIndexFact, ImportFormFact, MinedConvention } from './types.js';
|
|
30
|
+
/**
|
|
31
|
+
* The mining thresholds the production pipeline runs. `mineAllConventions`
|
|
32
|
+
* (codeIndexDB.ts) mines with exactly these values; keeping the phase producer's
|
|
33
|
+
* default identical means the corpus fact matches the SQLite `conventions` table
|
|
34
|
+
* on a real index-synced corpus.
|
|
35
|
+
*/
|
|
36
|
+
export declare const DEFAULT_MINING_CONFIG: ConventionMiningConfig;
|
|
37
|
+
/**
|
|
38
|
+
* Mine the function-index-servable domains from the assembled fact and reduce
|
|
39
|
+
* them to the `mined-conventions` fact. The array index is the synthetic `id`
|
|
40
|
+
* (see the header) — the miner's exemplar anchor is `(file, line)`, so the
|
|
41
|
+
* numbering is only a key, never a finding field.
|
|
42
|
+
*
|
|
43
|
+
* `usage-pair` / `error-handling` / `naming` are servable from `function-index`
|
|
44
|
+
* alone. `export-shape` additionally needs the `export-form` fact (the
|
|
45
|
+
* AST-extracted `(name, isDefault)` exports the legacy reducer read as
|
|
46
|
+
* `exportsMap`), so it is mined only when `exportForms` is provided. `import-form`
|
|
47
|
+
* additionally needs the `import-form` fact (regex-parsed source), so it is mined
|
|
48
|
+
* only when `importForms` is provided — a caller that has not assembled those
|
|
49
|
+
* facts (the three-domain parity seed) simply gets the three domains, never a
|
|
50
|
+
* half-formed export-shape or import-form convention.
|
|
51
|
+
*
|
|
52
|
+
* @param facts - The assembled `function-index` facts to mine from.
|
|
53
|
+
* @param exportForms - The `export-form` facts (enables `export-shape` mining).
|
|
54
|
+
* @param importForms - The `import-form` facts (enables `import-form` mining).
|
|
55
|
+
* @param config - The mining thresholds (defaults to {@link DEFAULT_MINING_CONFIG}).
|
|
56
|
+
* @returns The mined conventions, capped per domain and stripped of DB-only fields.
|
|
57
|
+
*/
|
|
58
|
+
export declare function mineConventionsFromFunctionIndex(facts: readonly FunctionIndexFact[], exportForms?: readonly ExportFormFact[], importForms?: readonly ImportFormFact[], config?: ConventionMiningConfig): MinedConvention[];
|
|
59
|
+
//# sourceMappingURL=conventionMining.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conventionMining.d.ts","sourceRoot":"","sources":["../../src/phase/conventionMining.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAc,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAerG;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,sBAKnC,CAAC;AAsBF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,SAAS,iBAAiB,EAAE,EACnC,WAAW,GAAE,SAAS,cAAc,EAAO,EAC3C,WAAW,GAAE,SAAS,cAAc,EAAO,EAC3C,MAAM,GAAE,sBAA8C,GACrD,eAAe,EAAE,CA2EnB"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spec 68 §3.2 — the `mined-conventions` corpus producer.
|
|
3
|
+
*
|
|
4
|
+
* The conventions analyzer is the third index-backed analyzer whose *rule* half
|
|
5
|
+
* moves onto the phase model (after styles and cross-domain). Its input is the
|
|
6
|
+
* mined-conventions set — a derived fact — so the producer is a corpus
|
|
7
|
+
* processor: `function-index` (the per-file fact) reduces to `mined-conventions`
|
|
8
|
+
* through the three pure miners that also back the SQLite path.
|
|
9
|
+
*
|
|
10
|
+
* The pure miners (`mineUsagePairsFromFacts` / `mineErrorHandlingFromFacts` /
|
|
11
|
+
* `mineNamingFromFacts` / `mineExportShapeFromFacts` /
|
|
12
|
+
* `mineImportFormFromFacts` in conventionMiner.ts) are byte-identical to the DB
|
|
13
|
+
* miners the legacy pipeline ran; the DB miners are now thin wrappers that
|
|
14
|
+
* project `functions`/`function_calls` rows into the same row types and call the
|
|
15
|
+
* pure function. So the corpus fact produced here is, for the five domains the
|
|
16
|
+
* `function-index` (+ `export-form` + `import-form`) facts can serve, the same
|
|
17
|
+
* set the SQLite `conventions` table held. `import-form` reads the `import-form`
|
|
18
|
+
* fact — a distinct per-file fact (regex-parsed source, not the AST `imports`
|
|
19
|
+
* fact) — but is still driven off the `function-index` distinct-file set, so a
|
|
20
|
+
* file with imports but no indexed function contributes nothing on either path.
|
|
21
|
+
*
|
|
22
|
+
* The DB-assigned `id` is dropped (a function's identity is `(file, name, line)`),
|
|
23
|
+
* so the array index stands in for it here; the miner uses `id` only to key the
|
|
24
|
+
* caller→function and caller→call-set maps, so 0-based indices are equivalent to
|
|
25
|
+
* 1-based auto-increments as long as the array order mirrors the DB row order.
|
|
26
|
+
* `hash`/`created_at` are storage-only fields the phase model has no analogue of.
|
|
27
|
+
*/
|
|
28
|
+
import { mineUsagePairsFromFacts, mineErrorHandlingFromFacts, mineNamingFromFacts, mineExportShapeFromFacts, mineImportFormFromFacts, capPerDomain, } from '../conventions/conventionMiner.js';
|
|
29
|
+
/**
|
|
30
|
+
* The mining thresholds the production pipeline runs. `mineAllConventions`
|
|
31
|
+
* (codeIndexDB.ts) mines with exactly these values; keeping the phase producer's
|
|
32
|
+
* default identical means the corpus fact matches the SQLite `conventions` table
|
|
33
|
+
* on a real index-synced corpus.
|
|
34
|
+
*/
|
|
35
|
+
export const DEFAULT_MINING_CONFIG = {
|
|
36
|
+
minCorpus: 20,
|
|
37
|
+
pairConfidence: 0.9,
|
|
38
|
+
modeShare: 0.8,
|
|
39
|
+
maxConventionsPerDomain: 200,
|
|
40
|
+
};
|
|
41
|
+
/** Strip the DB-only fields, keeping the detection projection. */
|
|
42
|
+
function toMinedConvention(c) {
|
|
43
|
+
return {
|
|
44
|
+
domain: c.domain,
|
|
45
|
+
rule_id: c.rule_id,
|
|
46
|
+
antecedent: c.antecedent,
|
|
47
|
+
consequent: c.consequent,
|
|
48
|
+
pattern: c.pattern,
|
|
49
|
+
directory: c.directory,
|
|
50
|
+
file_path: c.file_path,
|
|
51
|
+
line: c.line,
|
|
52
|
+
support: c.support,
|
|
53
|
+
total_cases: c.total_cases,
|
|
54
|
+
confidence: c.confidence,
|
|
55
|
+
exemplar_file: c.exemplar_file,
|
|
56
|
+
exemplar_line: c.exemplar_line,
|
|
57
|
+
export_kind: c.export_kind ?? null,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Mine the function-index-servable domains from the assembled fact and reduce
|
|
62
|
+
* them to the `mined-conventions` fact. The array index is the synthetic `id`
|
|
63
|
+
* (see the header) — the miner's exemplar anchor is `(file, line)`, so the
|
|
64
|
+
* numbering is only a key, never a finding field.
|
|
65
|
+
*
|
|
66
|
+
* `usage-pair` / `error-handling` / `naming` are servable from `function-index`
|
|
67
|
+
* alone. `export-shape` additionally needs the `export-form` fact (the
|
|
68
|
+
* AST-extracted `(name, isDefault)` exports the legacy reducer read as
|
|
69
|
+
* `exportsMap`), so it is mined only when `exportForms` is provided. `import-form`
|
|
70
|
+
* additionally needs the `import-form` fact (regex-parsed source), so it is mined
|
|
71
|
+
* only when `importForms` is provided — a caller that has not assembled those
|
|
72
|
+
* facts (the three-domain parity seed) simply gets the three domains, never a
|
|
73
|
+
* half-formed export-shape or import-form convention.
|
|
74
|
+
*
|
|
75
|
+
* @param facts - The assembled `function-index` facts to mine from.
|
|
76
|
+
* @param exportForms - The `export-form` facts (enables `export-shape` mining).
|
|
77
|
+
* @param importForms - The `import-form` facts (enables `import-form` mining).
|
|
78
|
+
* @param config - The mining thresholds (defaults to {@link DEFAULT_MINING_CONFIG}).
|
|
79
|
+
* @returns The mined conventions, capped per domain and stripped of DB-only fields.
|
|
80
|
+
*/
|
|
81
|
+
export function mineConventionsFromFunctionIndex(facts, exportForms = [], importForms = [], config = DEFAULT_MINING_CONFIG) {
|
|
82
|
+
const usageFuncs = [];
|
|
83
|
+
const errFuncs = [];
|
|
84
|
+
const namingFuncs = [];
|
|
85
|
+
const exportShapeFuncs = [];
|
|
86
|
+
const calls = [];
|
|
87
|
+
facts.forEach((f, i) => {
|
|
88
|
+
// usage-pair reads every function (projectSymbols + exemplar anchor), no
|
|
89
|
+
// is_exported filter — mirrors `SELECT … FROM functions`.
|
|
90
|
+
usageFuncs.push({ id: i, name: f.name, file_path: f.file, line_number: f.line });
|
|
91
|
+
// error-handling reads only functions with a body — mirrors `WHERE body IS NOT NULL`.
|
|
92
|
+
if (f.body != null) {
|
|
93
|
+
errFuncs.push({ id: i, name: f.name, file_path: f.file, line_number: f.line, body: f.body });
|
|
94
|
+
}
|
|
95
|
+
// naming and export-shape read only exported functions — mirror
|
|
96
|
+
// `WHERE is_exported = 1`. The export-shape row projection is the same
|
|
97
|
+
// `SELECT id, name, file_path, line_number` the DB miner reads; the form
|
|
98
|
+
// comes from the export-form fact at reduction time.
|
|
99
|
+
if (f.isExported) {
|
|
100
|
+
namingFuncs.push({
|
|
101
|
+
id: i,
|
|
102
|
+
name: f.name,
|
|
103
|
+
file_path: f.file,
|
|
104
|
+
line_number: f.line,
|
|
105
|
+
entity_type: f.entityType,
|
|
106
|
+
component_type: f.componentType,
|
|
107
|
+
});
|
|
108
|
+
exportShapeFuncs.push({ id: i, name: f.name, file_path: f.file, line_number: f.line });
|
|
109
|
+
}
|
|
110
|
+
for (const callee of f.functionCalls) {
|
|
111
|
+
calls.push({ caller_id: i, callee_name: callee });
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
// file → exports (the export-form fact projected to the lookup `getExportForm`
|
|
115
|
+
// consumes). The fact is flat ({file, name, isDefault}[]), so group it.
|
|
116
|
+
const exportFormByFile = new Map();
|
|
117
|
+
for (const e of exportForms) {
|
|
118
|
+
const list = exportFormByFile.get(e.file);
|
|
119
|
+
if (list)
|
|
120
|
+
list.push({ name: e.name, isDefault: e.isDefault });
|
|
121
|
+
else
|
|
122
|
+
exportFormByFile.set(e.file, [{ name: e.name, isDefault: e.isDefault }]);
|
|
123
|
+
}
|
|
124
|
+
const mined = [
|
|
125
|
+
...mineUsagePairsFromFacts(usageFuncs, calls, config),
|
|
126
|
+
...mineErrorHandlingFromFacts(errFuncs, config),
|
|
127
|
+
...mineNamingFromFacts(namingFuncs, config),
|
|
128
|
+
];
|
|
129
|
+
if (exportForms.length > 0) {
|
|
130
|
+
mined.push(...mineExportShapeFromFacts(exportShapeFuncs, config, (fp) => exportFormByFile.get(fp)));
|
|
131
|
+
}
|
|
132
|
+
if (importForms.length > 0) {
|
|
133
|
+
// The legacy import-form miner read `SELECT DISTINCT file_path FROM functions`
|
|
134
|
+
// — the *distinct* file set in first-appearance order. The `function-index`
|
|
135
|
+
// fact is flat (one element per function), so derive that same distinct set
|
|
136
|
+
// here and drive the pure miner off it. A file with imports but no indexed
|
|
137
|
+
// function contributes nothing on either path (its imports are dropped by
|
|
138
|
+
// the distinct-file filter, matching the DB miner's source read).
|
|
139
|
+
const distinctFiles = [...new Set(facts.map((f) => f.file))];
|
|
140
|
+
const importFormByFile = new Map();
|
|
141
|
+
for (const imp of importForms) {
|
|
142
|
+
const list = importFormByFile.get(imp.file);
|
|
143
|
+
if (list)
|
|
144
|
+
list.push({ source: imp.source, form: imp.form, line: imp.line });
|
|
145
|
+
else
|
|
146
|
+
importFormByFile.set(imp.file, [{ source: imp.source, form: imp.form, line: imp.line }]);
|
|
147
|
+
}
|
|
148
|
+
mined.push(...mineImportFormFromFacts(distinctFiles, (fp) => importFormByFile.get(fp), config));
|
|
149
|
+
}
|
|
150
|
+
return capPerDomain(mined, config.maxConventionsPerDomain).map(toMinedConvention);
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=conventionMining.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conventionMining.js","sourceRoot":"","sources":["../../src/phase/conventionMining.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spec 68 §8 — derived coverage.
|
|
3
|
+
*
|
|
4
|
+
* The legacy pipeline derived per-rule coverage by cross-referencing the
|
|
5
|
+
* registry against the analyzer-results map, a visitor/reducer status machine,
|
|
6
|
+
* and a per-rule `input` mapping (`buildCoverageReport` in pipeline.ts). That
|
|
7
|
+
* required a hand-maintained `input` list per rule — the exact "there is a
|
|
8
|
+
* list to be omitted from" defect class §0 exists to remove — and could only
|
|
9
|
+
* say `unassessed` for a rule with no mapping.
|
|
10
|
+
*
|
|
11
|
+
* Derived coverage inverts the direction: a rule's `needs` *declaration* is the
|
|
12
|
+
* whole story. Every rule already declares the formats it can evaluate and the
|
|
13
|
+
* fact kinds it reads (enforced by the type), so its coverage state is a pure
|
|
14
|
+
* function of (a) whether it fired, (b) whether any of its declared formats was
|
|
15
|
+
* present, (c) whether every declared fact has a producer able to serve a
|
|
16
|
+
* declared format, and (d) whether every declared fact was complete for every
|
|
17
|
+
* file. No per-rule list, no status machine — the declaration is the input.
|
|
18
|
+
*
|
|
19
|
+
* Five states, resolved in precedence order (first match wins):
|
|
20
|
+
*
|
|
21
|
+
* | # | State | Trigger |
|
|
22
|
+
* |---|----------------|----------------------------------------------------------------|
|
|
23
|
+
* | 1 | `fired` | ≥1 finding carries this rule's id |
|
|
24
|
+
* | 2 | `notApplicable`| rule not enabled, or no file of a declared format present |
|
|
25
|
+
* | 3 | `cannot-fire` | a declared fact has no producer for any declared format |
|
|
26
|
+
* | 4 | `incomplete` | a declared fact is missing for ≥1 file (parse/producer/worker) |
|
|
27
|
+
* | 5 | `clean` | otherwise — could have fired, produced nothing |
|
|
28
|
+
*
|
|
29
|
+
* `incomplete` is §8's replacement for the legacy `unassessed`: it names the
|
|
30
|
+
* *fact* and the *files* that went missing, so a partial run is observable
|
|
31
|
+
* rather than silently recorded as either `clean` (a false negative) or
|
|
32
|
+
* `unassessed` (no provenance). The precedence puts `cannot-fire` above
|
|
33
|
+
* `incomplete` — a structurally broken rule is broken whether or not its input
|
|
34
|
+
* was complete — and `incomplete` above `clean`, because a rule whose declared
|
|
35
|
+
* fact is partially absent cannot honestly assert "could have fired".
|
|
36
|
+
*/
|
|
37
|
+
import type { FactKind, Format, Finding, RuleDefinition } from './types.js';
|
|
38
|
+
import type { RuleCoverage } from '../types.js';
|
|
39
|
+
export interface CoverageInput {
|
|
40
|
+
/** The rules in scope (the migrated set, or the whole registry). */
|
|
41
|
+
rules: readonly RuleDefinition<any>[];
|
|
42
|
+
/** The findings produced this run. */
|
|
43
|
+
findings: readonly Finding[];
|
|
44
|
+
/** Formats present in the corpus (discovered files), regardless of parse success. */
|
|
45
|
+
presentFormats: ReadonlySet<Format>;
|
|
46
|
+
/** The enabled rule subset; undefined runs every rule. Disabled rules read
|
|
47
|
+
* `notApplicable` — a stated skip, not silence (Spec 66 R6). */
|
|
48
|
+
enabledRules?: ReadonlySet<string>;
|
|
49
|
+
/** Fact kind → files whose fact is incomplete (parse dropped, producer threw,
|
|
50
|
+
* or a worker shard was lost). Absent = every declared fact was complete. */
|
|
51
|
+
incompleteFacts?: ReadonlyMap<FactKind, ReadonlySet<string>>;
|
|
52
|
+
/** Resolve a rule's analyzer/group label for {@link RuleCoverage.analyzer}.
|
|
53
|
+
* Defaults to the rule id (the registry mapping is deleted in §15). */
|
|
54
|
+
groupOf?: (ruleId: string) => string;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Derive per-rule coverage from the rules' declarations and the run's findings.
|
|
58
|
+
*
|
|
59
|
+
* @param input - The run's rules, findings, present formats, and completeness map.
|
|
60
|
+
* @returns One `RuleCoverage` per rule, in the input rule order.
|
|
61
|
+
*/
|
|
62
|
+
export declare function deriveCoverage(input: CoverageInput): RuleCoverage[];
|
|
63
|
+
/** The formats present in a discovered file list, for feeding {@link CoverageInput}. */
|
|
64
|
+
export declare function presentFormatsOf(filePaths: readonly string[]): ReadonlySet<Format>;
|
|
65
|
+
//# sourceMappingURL=coverage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coverage.d.ts","sourceRoot":"","sources":["../../src/phase/coverage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAoBhD,MAAM,WAAW,aAAa;IAC5B,oEAAoE;IACpE,KAAK,EAAE,SAAS,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;IACtC,sCAAsC;IACtC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IAC7B,qFAAqF;IACrF,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC;qEACiE;IACjE,YAAY,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC;kFAC8E;IAC9E,eAAe,CAAC,EAAE,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7D;4EACwE;IACxE,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;CACtC;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,YAAY,EAAE,CA6DnE;AAED,wFAAwF;AACxF,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,CAElF"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spec 68 §8 — derived coverage.
|
|
3
|
+
*
|
|
4
|
+
* The legacy pipeline derived per-rule coverage by cross-referencing the
|
|
5
|
+
* registry against the analyzer-results map, a visitor/reducer status machine,
|
|
6
|
+
* and a per-rule `input` mapping (`buildCoverageReport` in pipeline.ts). That
|
|
7
|
+
* required a hand-maintained `input` list per rule — the exact "there is a
|
|
8
|
+
* list to be omitted from" defect class §0 exists to remove — and could only
|
|
9
|
+
* say `unassessed` for a rule with no mapping.
|
|
10
|
+
*
|
|
11
|
+
* Derived coverage inverts the direction: a rule's `needs` *declaration* is the
|
|
12
|
+
* whole story. Every rule already declares the formats it can evaluate and the
|
|
13
|
+
* fact kinds it reads (enforced by the type), so its coverage state is a pure
|
|
14
|
+
* function of (a) whether it fired, (b) whether any of its declared formats was
|
|
15
|
+
* present, (c) whether every declared fact has a producer able to serve a
|
|
16
|
+
* declared format, and (d) whether every declared fact was complete for every
|
|
17
|
+
* file. No per-rule list, no status machine — the declaration is the input.
|
|
18
|
+
*
|
|
19
|
+
* Five states, resolved in precedence order (first match wins):
|
|
20
|
+
*
|
|
21
|
+
* | # | State | Trigger |
|
|
22
|
+
* |---|----------------|----------------------------------------------------------------|
|
|
23
|
+
* | 1 | `fired` | ≥1 finding carries this rule's id |
|
|
24
|
+
* | 2 | `notApplicable`| rule not enabled, or no file of a declared format present |
|
|
25
|
+
* | 3 | `cannot-fire` | a declared fact has no producer for any declared format |
|
|
26
|
+
* | 4 | `incomplete` | a declared fact is missing for ≥1 file (parse/producer/worker) |
|
|
27
|
+
* | 5 | `clean` | otherwise — could have fired, produced nothing |
|
|
28
|
+
*
|
|
29
|
+
* `incomplete` is §8's replacement for the legacy `unassessed`: it names the
|
|
30
|
+
* *fact* and the *files* that went missing, so a partial run is observable
|
|
31
|
+
* rather than silently recorded as either `clean` (a false negative) or
|
|
32
|
+
* `unassessed` (no provenance). The precedence puts `cannot-fire` above
|
|
33
|
+
* `incomplete` — a structurally broken rule is broken whether or not its input
|
|
34
|
+
* was complete — and `incomplete` above `clean`, because a rule whose declared
|
|
35
|
+
* fact is partially absent cannot honestly assert "could have fired".
|
|
36
|
+
*/
|
|
37
|
+
import { PRODUCERS, CORPUS_PRODUCERS } from './producers.js';
|
|
38
|
+
import { formatFor } from './runner.js';
|
|
39
|
+
/** Producer availability: the formats each *file* fact kind can be supplied by. */
|
|
40
|
+
function producerFormats(kind) {
|
|
41
|
+
const formats = PRODUCERS[kind];
|
|
42
|
+
return new Set(formats ? Object.keys(formats) : []);
|
|
43
|
+
}
|
|
44
|
+
/** True when `kind` is corpus-produced (format-independent), not a file fact. */
|
|
45
|
+
function isCorpusFact(kind) {
|
|
46
|
+
return Object.prototype.hasOwnProperty.call(CORPUS_PRODUCERS, kind);
|
|
47
|
+
}
|
|
48
|
+
/** The declared fact kinds a producer can serve for a present declared format. */
|
|
49
|
+
function servable(kind, presentDeclared) {
|
|
50
|
+
if (isCorpusFact(kind))
|
|
51
|
+
return true;
|
|
52
|
+
const formats = producerFormats(kind);
|
|
53
|
+
return presentDeclared.some((f) => formats.has(f));
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Derive per-rule coverage from the rules' declarations and the run's findings.
|
|
57
|
+
*
|
|
58
|
+
* @param input - The run's rules, findings, present formats, and completeness map.
|
|
59
|
+
* @returns One `RuleCoverage` per rule, in the input rule order.
|
|
60
|
+
*/
|
|
61
|
+
export function deriveCoverage(input) {
|
|
62
|
+
const countByRule = new Map();
|
|
63
|
+
for (const f of input.findings) {
|
|
64
|
+
countByRule.set(f.ruleId, (countByRule.get(f.ruleId) ?? 0) + 1);
|
|
65
|
+
}
|
|
66
|
+
return input.rules.map((rule) => {
|
|
67
|
+
const group = input.groupOf?.(rule.id) ?? rule.id;
|
|
68
|
+
const count = countByRule.get(rule.id) ?? 0;
|
|
69
|
+
if (count > 0)
|
|
70
|
+
return { ruleId: rule.id, analyzer: group, state: 'fired', count };
|
|
71
|
+
if (input.enabledRules && !input.enabledRules.has(rule.id)) {
|
|
72
|
+
return {
|
|
73
|
+
ruleId: rule.id,
|
|
74
|
+
analyzer: group,
|
|
75
|
+
state: 'notApplicable',
|
|
76
|
+
count: 0,
|
|
77
|
+
reason: `rule "${rule.id}" not enabled`,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
const declared = rule.needs.formats;
|
|
81
|
+
const presentDeclared = declared.filter((f) => input.presentFormats.has(f));
|
|
82
|
+
if (presentDeclared.length === 0) {
|
|
83
|
+
return {
|
|
84
|
+
ruleId: rule.id,
|
|
85
|
+
analyzer: group,
|
|
86
|
+
state: 'notApplicable',
|
|
87
|
+
count: 0,
|
|
88
|
+
reason: `no file of a declared format present (declares: ${declared.join(', ')})`,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
const facts = rule.needs.facts;
|
|
92
|
+
const unservable = facts.filter((fact) => !servable(fact, presentDeclared));
|
|
93
|
+
if (unservable.length > 0) {
|
|
94
|
+
return {
|
|
95
|
+
ruleId: rule.id,
|
|
96
|
+
analyzer: group,
|
|
97
|
+
state: 'cannot-fire',
|
|
98
|
+
count: 0,
|
|
99
|
+
reason: `fact(s) ${unservable.join(', ')} have no producer for declared format(s) ${presentDeclared.join(', ')}`,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
for (const fact of facts) {
|
|
103
|
+
const files = input.incompleteFacts?.get(fact);
|
|
104
|
+
if (files && files.size > 0) {
|
|
105
|
+
return {
|
|
106
|
+
ruleId: rule.id,
|
|
107
|
+
analyzer: group,
|
|
108
|
+
state: 'incomplete',
|
|
109
|
+
count: 0,
|
|
110
|
+
reason: `fact "${fact}" incomplete for ${files.size} file(s)`,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return { ruleId: rule.id, analyzer: group, state: 'clean', count: 0 };
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
/** The formats present in a discovered file list, for feeding {@link CoverageInput}. */
|
|
118
|
+
export function presentFormatsOf(filePaths) {
|
|
119
|
+
return new Set(filePaths.map((p) => formatFor(p)));
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=coverage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coverage.js","sourceRoot":"","sources":["../../src/phase/coverage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spec 68 §5 — the fact DAG.
|
|
3
|
+
*
|
|
4
|
+
* `CorpusProcessor.needs` forms a directed graph over fact kinds: an edge
|
|
5
|
+
* `produces → need` means "this fact depends on that fact, so that fact must
|
|
6
|
+
* complete first." Topological levels over this graph are the schedule — every
|
|
7
|
+
* producer in a level runs concurrently, and a level begins only when the
|
|
8
|
+
* previous level has completed for every file.
|
|
9
|
+
*
|
|
10
|
+
* A cycle in this graph is a real defect (a fact that transitively depends on
|
|
11
|
+
* itself), and it is caught here by a DFS that returns the cycle path so the
|
|
12
|
+
* guard test can name both ends of the back edge (§16 guard 4, criterion 5) —
|
|
13
|
+
* rather than a boolean "has a cycle" that leaves the offending edge to be
|
|
14
|
+
* found by hand.
|
|
15
|
+
*/
|
|
16
|
+
import type { FactKind } from './types.js';
|
|
17
|
+
/** The minimal producer projection the graph walks: what it makes, what it needs. */
|
|
18
|
+
export type FactProducer = {
|
|
19
|
+
readonly produces: FactKind;
|
|
20
|
+
readonly needs?: readonly FactKind[];
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Every dependency edge in the graph, as `[produces, needs]` pairs.
|
|
24
|
+
*
|
|
25
|
+
* @param producers - The producer map whose `needs` edges are enumerated.
|
|
26
|
+
* @returns One `[produces, needs]` pair per declared dependency.
|
|
27
|
+
*/
|
|
28
|
+
export declare function factEdges(producers: Readonly<Record<string, FactProducer>>): ReadonlyArray<readonly [FactKind, FactKind]>;
|
|
29
|
+
/**
|
|
30
|
+
* Detects a cycle in the producer dependency graph, returning the cycle path
|
|
31
|
+
* (which repeats its first node at the end, so both ends of the back edge are
|
|
32
|
+
* named) or `null` when the graph is acyclic.
|
|
33
|
+
*
|
|
34
|
+
* @param producers - The producer map whose dependency graph is inspected.
|
|
35
|
+
* @returns The cycle path (first node repeated at the end), or `null` if acyclic.
|
|
36
|
+
*/
|
|
37
|
+
export declare function detectFactCycle(producers: Readonly<Record<string, FactProducer>>): FactKind[] | null;
|
|
38
|
+
/**
|
|
39
|
+
* The schedule: fact kinds grouped into topological levels. A producer with no
|
|
40
|
+
* `needs` is level 0 (nothing precedes it); a corpus producer's level is one
|
|
41
|
+
* past the deepest of its needs' levels. A cycle makes the level-set infinite
|
|
42
|
+
* and is a defect — callers are expected to have run {@link detectFactCycle}
|
|
43
|
+
* first; this function returns `null` on a cycle rather than looping.
|
|
44
|
+
*
|
|
45
|
+
* @param producers - The producer map whose fact kinds are scheduled.
|
|
46
|
+
* @returns A `factKind` → level map, or `null` when the graph has a cycle.
|
|
47
|
+
*/
|
|
48
|
+
export declare function topologicalLevels(producers: Readonly<Record<string, FactProducer>>): Map<FactKind, number> | null;
|
|
49
|
+
//# sourceMappingURL=dag.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dag.d.ts","sourceRoot":"","sources":["../../src/phase/dag.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,qFAAqF;AACrF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;CACtC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAMzH;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,GAAG,QAAQ,EAAE,GAAG,IAAI,CA0CpG;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,GAAG,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,IAAI,CAkBjH"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spec 68 §5 — the fact DAG.
|
|
3
|
+
*
|
|
4
|
+
* `CorpusProcessor.needs` forms a directed graph over fact kinds: an edge
|
|
5
|
+
* `produces → need` means "this fact depends on that fact, so that fact must
|
|
6
|
+
* complete first." Topological levels over this graph are the schedule — every
|
|
7
|
+
* producer in a level runs concurrently, and a level begins only when the
|
|
8
|
+
* previous level has completed for every file.
|
|
9
|
+
*
|
|
10
|
+
* A cycle in this graph is a real defect (a fact that transitively depends on
|
|
11
|
+
* itself), and it is caught here by a DFS that returns the cycle path so the
|
|
12
|
+
* guard test can name both ends of the back edge (§16 guard 4, criterion 5) —
|
|
13
|
+
* rather than a boolean "has a cycle" that leaves the offending edge to be
|
|
14
|
+
* found by hand.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Every dependency edge in the graph, as `[produces, needs]` pairs.
|
|
18
|
+
*
|
|
19
|
+
* @param producers - The producer map whose `needs` edges are enumerated.
|
|
20
|
+
* @returns One `[produces, needs]` pair per declared dependency.
|
|
21
|
+
*/
|
|
22
|
+
export function factEdges(producers) {
|
|
23
|
+
const edges = [];
|
|
24
|
+
for (const p of Object.values(producers)) {
|
|
25
|
+
for (const need of p.needs ?? [])
|
|
26
|
+
edges.push([p.produces, need]);
|
|
27
|
+
}
|
|
28
|
+
return edges;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Detects a cycle in the producer dependency graph, returning the cycle path
|
|
32
|
+
* (which repeats its first node at the end, so both ends of the back edge are
|
|
33
|
+
* named) or `null` when the graph is acyclic.
|
|
34
|
+
*
|
|
35
|
+
* @param producers - The producer map whose dependency graph is inspected.
|
|
36
|
+
* @returns The cycle path (first node repeated at the end), or `null` if acyclic.
|
|
37
|
+
*/
|
|
38
|
+
export function detectFactCycle(producers) {
|
|
39
|
+
const adj = new Map();
|
|
40
|
+
for (const p of Object.values(producers)) {
|
|
41
|
+
const list = adj.get(p.produces) ?? [];
|
|
42
|
+
for (const need of p.needs ?? [])
|
|
43
|
+
list.push(need);
|
|
44
|
+
adj.set(p.produces, list);
|
|
45
|
+
}
|
|
46
|
+
const WHITE = 0;
|
|
47
|
+
const GRAY = 1;
|
|
48
|
+
const BLACK = 2;
|
|
49
|
+
const color = new Map();
|
|
50
|
+
const stack = [];
|
|
51
|
+
const visit = (node) => {
|
|
52
|
+
color.set(node, GRAY);
|
|
53
|
+
stack.push(node);
|
|
54
|
+
for (const next of adj.get(node) ?? []) {
|
|
55
|
+
const c = color.get(next) ?? WHITE;
|
|
56
|
+
if (c === GRAY) {
|
|
57
|
+
// Back edge: `next` is already on the DFS stack, so `stack.slice(idx)`
|
|
58
|
+
// is the path from `next` back to itself — both ends of the edge named.
|
|
59
|
+
const idx = stack.indexOf(next);
|
|
60
|
+
return [...stack.slice(idx), next];
|
|
61
|
+
}
|
|
62
|
+
if (c === WHITE) {
|
|
63
|
+
const cycle = visit(next);
|
|
64
|
+
if (cycle)
|
|
65
|
+
return cycle;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
stack.pop();
|
|
69
|
+
color.set(node, BLACK);
|
|
70
|
+
return null;
|
|
71
|
+
};
|
|
72
|
+
for (const node of adj.keys()) {
|
|
73
|
+
if ((color.get(node) ?? WHITE) === WHITE) {
|
|
74
|
+
const cycle = visit(node);
|
|
75
|
+
if (cycle)
|
|
76
|
+
return cycle;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* The schedule: fact kinds grouped into topological levels. A producer with no
|
|
83
|
+
* `needs` is level 0 (nothing precedes it); a corpus producer's level is one
|
|
84
|
+
* past the deepest of its needs' levels. A cycle makes the level-set infinite
|
|
85
|
+
* and is a defect — callers are expected to have run {@link detectFactCycle}
|
|
86
|
+
* first; this function returns `null` on a cycle rather than looping.
|
|
87
|
+
*
|
|
88
|
+
* @param producers - The producer map whose fact kinds are scheduled.
|
|
89
|
+
* @returns A `factKind` → level map, or `null` when the graph has a cycle.
|
|
90
|
+
*/
|
|
91
|
+
export function topologicalLevels(producers) {
|
|
92
|
+
if (detectFactCycle(producers))
|
|
93
|
+
return null;
|
|
94
|
+
const level = new Map();
|
|
95
|
+
const resolve = (node) => {
|
|
96
|
+
const memo = level.get(node);
|
|
97
|
+
if (memo !== undefined)
|
|
98
|
+
return memo;
|
|
99
|
+
const p = producers[findProducerFor(node, producers)];
|
|
100
|
+
const needs = p?.needs ?? [];
|
|
101
|
+
const depth = needs.length === 0 ? 0 : 1 + Math.max(...needs.map(resolve));
|
|
102
|
+
level.set(node, depth);
|
|
103
|
+
return depth;
|
|
104
|
+
};
|
|
105
|
+
for (const node of Object.keys(producers).map((k) => producers[k].produces)) {
|
|
106
|
+
resolve(node);
|
|
107
|
+
}
|
|
108
|
+
return level;
|
|
109
|
+
}
|
|
110
|
+
function findProducerFor(node, producers) {
|
|
111
|
+
for (const [id, p] of Object.entries(producers)) {
|
|
112
|
+
if (p.produces === node)
|
|
113
|
+
return id;
|
|
114
|
+
}
|
|
115
|
+
// A `needs` target with no producer is a residue defect caught elsewhere
|
|
116
|
+
// (checks.ts `_allProduced`); here it just has no deeper dependencies, so it
|
|
117
|
+
// resolves at level 0.
|
|
118
|
+
return '';
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=dag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dag.js","sourceRoot":"","sources":["../../src/phase/dag.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spec 68 §3.2 — the `data-access-calls` FileProcessor extraction.
|
|
3
|
+
*
|
|
4
|
+
* Re-homes the "extract resolved calls" half of `UniversalDataAccessAnalyzer`
|
|
5
|
+
* as a pure per-file processor. The analyzer's `analyzeWithFacts` did two jobs:
|
|
6
|
+
* extract `DatabaseCall[]` and derive violations from them. The producer keeps
|
|
7
|
+
* only the extraction — the calls the missing-org-filter / unfiltered-query /
|
|
8
|
+
* sql-injection-risk rules read. The analyzer's `extractDataAccessCalls` export
|
|
9
|
+
* is the synchronous extraction (its body was never actually awaited), run on
|
|
10
|
+
* {@link DEFAULT_DATA_ACCESS_CONFIG} since config is the §10 tuning surface and
|
|
11
|
+
* is not available to a `process(file)` call.
|
|
12
|
+
*
|
|
13
|
+
* `DatabaseCall` is structurally identical to the `ResolvedQuery` fact, so the
|
|
14
|
+
* mapping is the identity — this module owns only the `AstFile` → fact
|
|
15
|
+
* unwrapping, and the fact shape is pinned in `phase/types.ts`.
|
|
16
|
+
*/
|
|
17
|
+
import type { AstFile, ResolvedQuery } from './types.js';
|
|
18
|
+
/** Extract the per-file resolved DB calls from one parsed file.
|
|
19
|
+
*
|
|
20
|
+
* Spec 69 §10 S5a — when the legacy pipeline's cross-file resolution pre-pass
|
|
21
|
+
* seeded this file's provenanced identifiers (`file.receiverProvenance`), thread
|
|
22
|
+
* them as the extraction's provenance seed. This makes the finding path's
|
|
23
|
+
* "proven handle" notion identical to the disposition classifier's, so a
|
|
24
|
+
* query-shaped call on a proven handle is extracted (and can fire), a
|
|
25
|
+
* proven-not-a-handle is skipped, and an unproven receiver is not silently
|
|
26
|
+
* clean. Absent a seed (slice tests), the extraction runs on the default
|
|
27
|
+
* config exactly as before.
|
|
28
|
+
*
|
|
29
|
+
* @param file the parsed file to extract DB calls from
|
|
30
|
+
* @returns the file's resolved DB calls
|
|
31
|
+
*/
|
|
32
|
+
export declare function extractDataAccessCalls(file: AstFile): ResolvedQuery[];
|
|
33
|
+
//# sourceMappingURL=dataAccessCalls.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataAccessCalls.d.ts","sourceRoot":"","sources":["../../src/phase/dataAccessCalls.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAMzD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAG,aAAa,EAAE,CASrE"}
|