@archpilotlabs/archpilot 0.2.2 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (296) hide show
  1. package/dist/archpilot-cli.js +516 -105
  2. package/dist/cli/src/archpilot-cli.js +5523 -0
  3. package/dist/cli/src/archpilot-cli.js.map +1 -0
  4. package/dist/core/src/adr/adrLoader.js +97 -0
  5. package/dist/core/src/adr/adrLoader.js.map +1 -0
  6. package/dist/core/src/adr/adrParser.js +77 -0
  7. package/dist/core/src/adr/adrParser.js.map +1 -0
  8. package/dist/core/src/adr/adrTemplate.js +45 -0
  9. package/dist/core/src/adr/adrTemplate.js.map +1 -0
  10. package/dist/core/src/adr/adrTypes.js +3 -0
  11. package/dist/core/src/adr/adrTypes.js.map +1 -0
  12. package/dist/core/src/adr/adrValidation.js +160 -0
  13. package/dist/core/src/adr/adrValidation.js.map +1 -0
  14. package/dist/core/src/adr/index.js +9 -0
  15. package/dist/core/src/adr/index.js.map +1 -0
  16. package/dist/core/src/adrManagement.js +174 -0
  17. package/dist/core/src/adrManagement.js.map +1 -0
  18. package/dist/core/src/adrRequirementStatus.js +62 -0
  19. package/dist/core/src/adrRequirementStatus.js.map +1 -0
  20. package/dist/core/src/adrScaffoldGeneration.js +325 -0
  21. package/dist/core/src/adrScaffoldGeneration.js.map +1 -0
  22. package/dist/core/src/apiDesignAnalysis.js +869 -0
  23. package/dist/core/src/apiDesignAnalysis.js.map +1 -0
  24. package/dist/core/src/applicationLayeringAnalysis.js +920 -0
  25. package/dist/core/src/applicationLayeringAnalysis.js.map +1 -0
  26. package/dist/core/src/applyRulePack.js +117 -0
  27. package/dist/core/src/applyRulePack.js.map +1 -0
  28. package/dist/core/src/architectureBaseline.js +271 -0
  29. package/dist/core/src/architectureBaseline.js.map +1 -0
  30. package/dist/core/src/architectureComponentDiscoveryDefaults.js +139 -0
  31. package/dist/core/src/architectureComponentDiscoveryDefaults.js.map +1 -0
  32. package/dist/core/src/architectureDependencyContext.js +316 -0
  33. package/dist/core/src/architectureDependencyContext.js.map +1 -0
  34. package/dist/core/src/architectureDriftDetection.js +96 -0
  35. package/dist/core/src/architectureDriftDetection.js.map +1 -0
  36. package/dist/core/src/architectureDriftTimeline.js +221 -0
  37. package/dist/core/src/architectureDriftTimeline.js.map +1 -0
  38. package/dist/core/src/architectureGovernanceBaseline.js +469 -0
  39. package/dist/core/src/architectureGovernanceBaseline.js.map +1 -0
  40. package/dist/core/src/architectureHealthHistory.js +208 -0
  41. package/dist/core/src/architectureHealthHistory.js.map +1 -0
  42. package/dist/core/src/architectureHealthScore.js +657 -0
  43. package/dist/core/src/architectureHealthScore.js.map +1 -0
  44. package/dist/core/src/architectureInit.js +826 -0
  45. package/dist/core/src/architectureInit.js.map +1 -0
  46. package/dist/core/src/architectureMap.js +727 -0
  47. package/dist/core/src/architectureMap.js.map +1 -0
  48. package/dist/core/src/architectureMigrationPreview.js +467 -0
  49. package/dist/core/src/architectureMigrationPreview.js.map +1 -0
  50. package/dist/core/src/architectureModelRefresh.js +209 -0
  51. package/dist/core/src/architectureModelRefresh.js.map +1 -0
  52. package/dist/core/src/architectureReportWorkflow.js +139 -0
  53. package/dist/core/src/architectureReportWorkflow.js.map +1 -0
  54. package/dist/core/src/architectureValidation.js +3879 -0
  55. package/dist/core/src/architectureValidation.js.map +1 -0
  56. package/dist/core/src/architectureWorkspaceModel.js +166 -0
  57. package/dist/core/src/architectureWorkspaceModel.js.map +1 -0
  58. package/dist/core/src/authorizationTenantAnalysis.js +652 -0
  59. package/dist/core/src/authorizationTenantAnalysis.js.map +1 -0
  60. package/dist/core/src/bootstrapArchitectureConfig.js +150 -0
  61. package/dist/core/src/bootstrapArchitectureConfig.js.map +1 -0
  62. package/dist/core/src/changeRisk/changeRiskAssessment.js +251 -0
  63. package/dist/core/src/changeRisk/changeRiskAssessment.js.map +1 -0
  64. package/dist/core/src/changeRisk/changeRiskTypes.js +3 -0
  65. package/dist/core/src/changeRisk/changeRiskTypes.js.map +1 -0
  66. package/dist/core/src/changeRisk/index.js +6 -0
  67. package/dist/core/src/changeRisk/index.js.map +1 -0
  68. package/dist/core/src/ci/githubInlineAnnotations.js +245 -0
  69. package/dist/core/src/ci/githubInlineAnnotations.js.map +1 -0
  70. package/dist/core/src/ci/githubPrCommentAdapter.js +232 -0
  71. package/dist/core/src/ci/githubPrCommentAdapter.js.map +1 -0
  72. package/dist/core/src/ciWorkflowTemplates.js +1042 -0
  73. package/dist/core/src/ciWorkflowTemplates.js.map +1 -0
  74. package/dist/core/src/compliance/complianceExportBuilder.js +122 -0
  75. package/dist/core/src/compliance/complianceExportBuilder.js.map +1 -0
  76. package/dist/core/src/compliance/complianceExportTypes.js +3 -0
  77. package/dist/core/src/compliance/complianceExportTypes.js.map +1 -0
  78. package/dist/core/src/compliance/complianceExportWriter.js +48 -0
  79. package/dist/core/src/compliance/complianceExportWriter.js.map +1 -0
  80. package/dist/core/src/compliance/complianceRulePackResolver.js +62 -0
  81. package/dist/core/src/compliance/complianceRulePackResolver.js.map +1 -0
  82. package/dist/core/src/config/index.js +17 -0
  83. package/dist/core/src/config/index.js.map +1 -0
  84. package/dist/core/src/config/projectConfig.js +224 -0
  85. package/dist/core/src/config/projectConfig.js.map +1 -0
  86. package/dist/core/src/config/projectIdentity.js +160 -0
  87. package/dist/core/src/config/projectIdentity.js.map +1 -0
  88. package/dist/core/src/dataQueryRiskDetection.js +1203 -0
  89. package/dist/core/src/dataQueryRiskDetection.js.map +1 -0
  90. package/dist/core/src/dependencyValidation.js +2557 -0
  91. package/dist/core/src/dependencyValidation.js.map +1 -0
  92. package/dist/core/src/discoverAdrs.js +15 -0
  93. package/dist/core/src/discoverAdrs.js.map +1 -0
  94. package/dist/core/src/drift/driftComparator.js +49 -0
  95. package/dist/core/src/drift/driftComparator.js.map +1 -0
  96. package/dist/core/src/drift/driftSnapshotLoader.js +136 -0
  97. package/dist/core/src/drift/driftSnapshotLoader.js.map +1 -0
  98. package/dist/core/src/drift/driftSnapshotTypes.js +3 -0
  99. package/dist/core/src/drift/driftSnapshotTypes.js.map +1 -0
  100. package/dist/core/src/drift/driftSnapshotWriter.js +48 -0
  101. package/dist/core/src/drift/driftSnapshotWriter.js.map +1 -0
  102. package/dist/core/src/drift/index.js +6 -0
  103. package/dist/core/src/drift/index.js.map +1 -0
  104. package/dist/core/src/eventArchitectureAnalysis.js +925 -0
  105. package/dist/core/src/eventArchitectureAnalysis.js.map +1 -0
  106. package/dist/core/src/findingTargetResolution.js +117 -0
  107. package/dist/core/src/findingTargetResolution.js.map +1 -0
  108. package/dist/core/src/generateArchitectureDiagrams.js +57 -0
  109. package/dist/core/src/generateArchitectureDiagrams.js.map +1 -0
  110. package/dist/core/src/generateImpactAnalysis.js +366 -0
  111. package/dist/core/src/generateImpactAnalysis.js.map +1 -0
  112. package/dist/core/src/generateOnboardingDocs.js +262 -0
  113. package/dist/core/src/generateOnboardingDocs.js.map +1 -0
  114. package/dist/core/src/governance/cloudConnection.js +203 -0
  115. package/dist/core/src/governance/cloudConnection.js.map +1 -0
  116. package/dist/core/src/governance/governanceContracts.js +129 -0
  117. package/dist/core/src/governance/governanceContracts.js.map +1 -0
  118. package/dist/core/src/governance/governanceGitMetadata.js +78 -0
  119. package/dist/core/src/governance/governanceGitMetadata.js.map +1 -0
  120. package/dist/core/src/governance/governanceUploadClient.js +119 -0
  121. package/dist/core/src/governance/governanceUploadClient.js.map +1 -0
  122. package/dist/core/src/governance/governanceUploadLimitErrorFormatting.js +155 -0
  123. package/dist/core/src/governance/governanceUploadLimitErrorFormatting.js.map +1 -0
  124. package/dist/core/src/governance/governanceUploadPayload.js +439 -0
  125. package/dist/core/src/governance/governanceUploadPayload.js.map +1 -0
  126. package/dist/core/src/governance/runGovernanceUpload.js +103 -0
  127. package/dist/core/src/governance/runGovernanceUpload.js.map +1 -0
  128. package/dist/core/src/impactAnalysisEngine.js +376 -0
  129. package/dist/core/src/impactAnalysisEngine.js.map +1 -0
  130. package/dist/core/src/initializationState.js +99 -0
  131. package/dist/core/src/initializationState.js.map +1 -0
  132. package/dist/core/src/managedArtifacts.js +151 -0
  133. package/dist/core/src/managedArtifacts.js.map +1 -0
  134. package/dist/core/src/moduleContractValidation.js +266 -0
  135. package/dist/core/src/moduleContractValidation.js.map +1 -0
  136. package/dist/core/src/moduleContractsGenerator.js +337 -0
  137. package/dist/core/src/moduleContractsGenerator.js.map +1 -0
  138. package/dist/core/src/moduleDiscovery.js +416 -0
  139. package/dist/core/src/moduleDiscovery.js.map +1 -0
  140. package/dist/core/src/moduleScope.js +426 -0
  141. package/dist/core/src/moduleScope.js.map +1 -0
  142. package/dist/core/src/onboardingGuidance.js +74 -0
  143. package/dist/core/src/onboardingGuidance.js.map +1 -0
  144. package/dist/core/src/operationalLogging.js +7 -0
  145. package/dist/core/src/operationalLogging.js.map +1 -0
  146. package/dist/core/src/packageVersion.js +52 -0
  147. package/dist/core/src/packageVersion.js.map +1 -0
  148. package/dist/core/src/policy/effectivePolicyResolver.js +91 -0
  149. package/dist/core/src/policy/effectivePolicyResolver.js.map +1 -0
  150. package/dist/core/src/policy/exceptionLoader.js +285 -0
  151. package/dist/core/src/policy/exceptionLoader.js.map +1 -0
  152. package/dist/core/src/policy/remotePolicyLoader.js +227 -0
  153. package/dist/core/src/policy/remotePolicyLoader.js.map +1 -0
  154. package/dist/core/src/policy/remotePolicyTypes.js +3 -0
  155. package/dist/core/src/policy/remotePolicyTypes.js.map +1 -0
  156. package/dist/core/src/policy/riskPolicyConfig.js +206 -0
  157. package/dist/core/src/policy/riskPolicyConfig.js.map +1 -0
  158. package/dist/core/src/policy/riskPolicyEnforcement.js +203 -0
  159. package/dist/core/src/policy/riskPolicyEnforcement.js.map +1 -0
  160. package/dist/core/src/policy/riskPolicyExitCode.js +16 -0
  161. package/dist/core/src/policy/riskPolicyExitCode.js.map +1 -0
  162. package/dist/core/src/policy/riskPolicyInitializer.js +90 -0
  163. package/dist/core/src/policy/riskPolicyInitializer.js.map +1 -0
  164. package/dist/core/src/quickFix/quickFixEngine.js +132 -0
  165. package/dist/core/src/quickFix/quickFixEngine.js.map +1 -0
  166. package/dist/core/src/quickFix/quickFixMessaging.js +15 -0
  167. package/dist/core/src/quickFix/quickFixMessaging.js.map +1 -0
  168. package/dist/core/src/quickFix/quickFixProviders.js +87 -0
  169. package/dist/core/src/quickFix/quickFixProviders.js.map +1 -0
  170. package/dist/core/src/quickFix/quickFixTypes.js +3 -0
  171. package/dist/core/src/quickFix/quickFixTypes.js.map +1 -0
  172. package/dist/core/src/remediation/fileHelpers.js +86 -0
  173. package/dist/core/src/remediation/fileHelpers.js.map +1 -0
  174. package/dist/core/src/remediation/fixRegistry.js +645 -0
  175. package/dist/core/src/remediation/fixRegistry.js.map +1 -0
  176. package/dist/core/src/remediation/index.js +8 -0
  177. package/dist/core/src/remediation/index.js.map +1 -0
  178. package/dist/core/src/remediation/remediationEngine.js +207 -0
  179. package/dist/core/src/remediation/remediationEngine.js.map +1 -0
  180. package/dist/core/src/reporting/adrReporter.js +59 -0
  181. package/dist/core/src/reporting/adrReporter.js.map +1 -0
  182. package/dist/core/src/reporting/architectureBaselineReporter.js +64 -0
  183. package/dist/core/src/reporting/architectureBaselineReporter.js.map +1 -0
  184. package/dist/core/src/reporting/architectureDiagramReporter.js +148 -0
  185. package/dist/core/src/reporting/architectureDiagramReporter.js.map +1 -0
  186. package/dist/core/src/reporting/architectureDriftTimelineReporter.js +44 -0
  187. package/dist/core/src/reporting/architectureDriftTimelineReporter.js.map +1 -0
  188. package/dist/core/src/reporting/architectureHealthHistoryReporter.js +51 -0
  189. package/dist/core/src/reporting/architectureHealthHistoryReporter.js.map +1 -0
  190. package/dist/core/src/reporting/architectureMapReporter.js +228 -0
  191. package/dist/core/src/reporting/architectureMapReporter.js.map +1 -0
  192. package/dist/core/src/reporting/architecturePrCommentReporter.js +324 -0
  193. package/dist/core/src/reporting/architecturePrCommentReporter.js.map +1 -0
  194. package/dist/core/src/reporting/architecturePrReviewReporter.js +389 -0
  195. package/dist/core/src/reporting/architecturePrReviewReporter.js.map +1 -0
  196. package/dist/core/src/reporting/architectureReportArtifacts.js +166 -0
  197. package/dist/core/src/reporting/architectureReportArtifacts.js.map +1 -0
  198. package/dist/core/src/reporting/architectureReviewReportGenerator.js +382 -0
  199. package/dist/core/src/reporting/architectureReviewReportGenerator.js.map +1 -0
  200. package/dist/core/src/reporting/architectureReviewReporter.js +1633 -0
  201. package/dist/core/src/reporting/architectureReviewReporter.js.map +1 -0
  202. package/dist/core/src/reporting/architectureRiskAssessment.js +101 -0
  203. package/dist/core/src/reporting/architectureRiskAssessment.js.map +1 -0
  204. package/dist/core/src/reporting/architectureScoreBadge.js +177 -0
  205. package/dist/core/src/reporting/architectureScoreBadge.js.map +1 -0
  206. package/dist/core/src/reporting/architectureSupplementalReporters.js +124 -0
  207. package/dist/core/src/reporting/architectureSupplementalReporters.js.map +1 -0
  208. package/dist/core/src/reporting/changeRiskAssessment.js +6 -0
  209. package/dist/core/src/reporting/changeRiskAssessment.js.map +1 -0
  210. package/dist/core/src/reporting/changeRiskTypes.js +3 -0
  211. package/dist/core/src/reporting/changeRiskTypes.js.map +1 -0
  212. package/dist/core/src/reporting/impactAnalysisReporter.js +111 -0
  213. package/dist/core/src/reporting/impactAnalysisReporter.js.map +1 -0
  214. package/dist/core/src/reporting/onboardingDocsReporter.js +113 -0
  215. package/dist/core/src/reporting/onboardingDocsReporter.js.map +1 -0
  216. package/dist/core/src/reporting/rulePackReporter.js +61 -0
  217. package/dist/core/src/reporting/rulePackReporter.js.map +1 -0
  218. package/dist/core/src/reporting/safetyControlsDetection.js +343 -0
  219. package/dist/core/src/reporting/safetyControlsDetection.js.map +1 -0
  220. package/dist/core/src/resolveRuleAdrs.js +31 -0
  221. package/dist/core/src/resolveRuleAdrs.js.map +1 -0
  222. package/dist/core/src/reviewGenerationWorkflow.js +220 -0
  223. package/dist/core/src/reviewGenerationWorkflow.js.map +1 -0
  224. package/dist/core/src/rulePacks/index.js +17 -0
  225. package/dist/core/src/rulePacks/index.js.map +1 -0
  226. package/dist/core/src/rulePacks/layeredMonolithRulePack.js +45 -0
  227. package/dist/core/src/rulePacks/layeredMonolithRulePack.js.map +1 -0
  228. package/dist/core/src/rulePacks/modularMonolithRulePack.js +41 -0
  229. package/dist/core/src/rulePacks/modularMonolithRulePack.js.map +1 -0
  230. package/dist/core/src/rulePacks/types.js +3 -0
  231. package/dist/core/src/rulePacks/types.js.map +1 -0
  232. package/dist/core/src/setupNextSteps.js +939 -0
  233. package/dist/core/src/setupNextSteps.js.map +1 -0
  234. package/dist/core/src/setupRefresh.js +152 -0
  235. package/dist/core/src/setupRefresh.js.map +1 -0
  236. package/dist/core/src/smartInit/apiDbHintDetection.js +836 -0
  237. package/dist/core/src/smartInit/apiDbHintDetection.js.map +1 -0
  238. package/dist/core/src/smartInit/architectureProposalBuilder.js +1215 -0
  239. package/dist/core/src/smartInit/architectureProposalBuilder.js.map +1 -0
  240. package/dist/core/src/smartInit/architectureStyleDetection.js +472 -0
  241. package/dist/core/src/smartInit/architectureStyleDetection.js.map +1 -0
  242. package/dist/core/src/smartInit/archpilotIgnore.js +139 -0
  243. package/dist/core/src/smartInit/archpilotIgnore.js.map +1 -0
  244. package/dist/core/src/smartInit/componentDetection.js +1084 -0
  245. package/dist/core/src/smartInit/componentDetection.js.map +1 -0
  246. package/dist/core/src/smartInit/implementationProfileResolution.js +53 -0
  247. package/dist/core/src/smartInit/implementationProfileResolution.js.map +1 -0
  248. package/dist/core/src/smartInit/index.js +31 -0
  249. package/dist/core/src/smartInit/index.js.map +1 -0
  250. package/dist/core/src/smartInit/moduleDetection.js +982 -0
  251. package/dist/core/src/smartInit/moduleDetection.js.map +1 -0
  252. package/dist/core/src/smartInit/projectKindDetection.js +437 -0
  253. package/dist/core/src/smartInit/projectKindDetection.js.map +1 -0
  254. package/dist/core/src/smartInit/repoTopologyDetection.js +470 -0
  255. package/dist/core/src/smartInit/repoTopologyDetection.js.map +1 -0
  256. package/dist/core/src/smartInit/runContext.js +112 -0
  257. package/dist/core/src/smartInit/runContext.js.map +1 -0
  258. package/dist/core/src/smartInit/smartInitEngine.js +94 -0
  259. package/dist/core/src/smartInit/smartInitEngine.js.map +1 -0
  260. package/dist/core/src/smartInit/stackDetection.js +503 -0
  261. package/dist/core/src/smartInit/stackDetection.js.map +1 -0
  262. package/dist/core/src/smartInit/toolingHintDetection.js +345 -0
  263. package/dist/core/src/smartInit/toolingHintDetection.js.map +1 -0
  264. package/dist/core/src/sourceScopeClassification.js +83 -0
  265. package/dist/core/src/sourceScopeClassification.js.map +1 -0
  266. package/dist/core/src/stackAdapters.js +2475 -0
  267. package/dist/core/src/stackAdapters.js.map +1 -0
  268. package/dist/core/src/stackMetadata.js +157 -0
  269. package/dist/core/src/stackMetadata.js.map +1 -0
  270. package/dist/core/src/suppressions/index.js +3 -0
  271. package/dist/core/src/suppressions/index.js.map +1 -0
  272. package/dist/core/src/suppressions/suppressionReporter.js +38 -0
  273. package/dist/core/src/suppressions/suppressionReporter.js.map +1 -0
  274. package/dist/core/src/suppressions/suppressionTypes.js +3 -0
  275. package/dist/core/src/suppressions/suppressionTypes.js.map +1 -0
  276. package/dist/core/src/suppressions/suppressionValidator.js +119 -0
  277. package/dist/core/src/suppressions/suppressionValidator.js.map +1 -0
  278. package/dist/core/src/transactionDomainAnalysis.js +1416 -0
  279. package/dist/core/src/transactionDomainAnalysis.js.map +1 -0
  280. package/dist/core/src/validation/changedFilesResolver.js +165 -0
  281. package/dist/core/src/validation/changedFilesResolver.js.map +1 -0
  282. package/dist/core/src/validationProfiling.js +33 -0
  283. package/dist/core/src/validationProfiling.js.map +1 -0
  284. package/dist/core/src/validationRuleExplanations.js +69 -0
  285. package/dist/core/src/validationRuleExplanations.js.map +1 -0
  286. package/dist/core/src/validationSourceInventory.js +200 -0
  287. package/dist/core/src/validationSourceInventory.js.map +1 -0
  288. package/dist/core/src/validationSuppressions.js +231 -0
  289. package/dist/core/src/validationSuppressions.js.map +1 -0
  290. package/dist/core/src/validationTypeScriptAstCache.js +82 -0
  291. package/dist/core/src/validationTypeScriptAstCache.js.map +1 -0
  292. package/dist/core/src/validationWorkflow.js +222 -0
  293. package/dist/core/src/validationWorkflow.js.map +1 -0
  294. package/dist/core/src/workspaceRoot.js +68 -0
  295. package/dist/core/src/workspaceRoot.js.map +1 -0
  296. package/package.json +1 -1
@@ -0,0 +1,470 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.detectRepoTopology = detectRepoTopology;
37
+ exports.debugTestTopologyDetection = debugTestTopologyDetection;
38
+ const fs = __importStar(require("node:fs"));
39
+ const path = __importStar(require("node:path"));
40
+ const manifestFileNames = [
41
+ 'package.json',
42
+ 'pom.xml',
43
+ 'requirements.txt',
44
+ 'go.mod',
45
+ 'composer.json',
46
+ ];
47
+ const workspaceConfigFileNames = [
48
+ 'pnpm-workspace.yaml',
49
+ 'lerna.json',
50
+ 'nx.json',
51
+ 'turbo.json',
52
+ 'rush.json',
53
+ ];
54
+ const monorepoRootDirectorySignals = ['apps', 'packages', 'libs', 'services', 'tools'];
55
+ const ignoredDirectoryNames = new Set([
56
+ '.git',
57
+ '.archpilot',
58
+ '.vscode-test',
59
+ 'node_modules',
60
+ 'dist',
61
+ 'build',
62
+ 'out',
63
+ 'coverage',
64
+ '.next',
65
+ 'target',
66
+ 'vendor',
67
+ '.venv',
68
+ 'venv',
69
+ '__pycache__',
70
+ ]);
71
+ const ignoredRootPathPrefixes = [
72
+ 'tests',
73
+ 'test',
74
+ 'fixtures',
75
+ 'examples',
76
+ 'example',
77
+ 'spec',
78
+ '__tests__',
79
+ '.vscode-test',
80
+ 'public',
81
+ 'static',
82
+ 'assets',
83
+ 'vendor',
84
+ 'plugins',
85
+ 'plugin',
86
+ 'themes',
87
+ 'theme',
88
+ 'generated',
89
+ 'storage',
90
+ ];
91
+ function normalizeRelativePath(value) {
92
+ return value.replaceAll('\\', '/');
93
+ }
94
+ function isUnderJvmResourceRoot(relativePath) {
95
+ return /(^|\/)src\/main\/resources(?:\/|$)/u.test(normalizeRelativePath(relativePath).toLowerCase());
96
+ }
97
+ function sortUnique(values) {
98
+ return [...new Set(values)].sort((left, right) => left.localeCompare(right));
99
+ }
100
+ function pushEvidence(evidence, message) {
101
+ if (!evidence.includes(message)) {
102
+ evidence.push(message);
103
+ }
104
+ }
105
+ function safeReadDirectoryEntries(directoryPath) {
106
+ try {
107
+ return fs.readdirSync(directoryPath, { withFileTypes: true });
108
+ }
109
+ catch {
110
+ return [];
111
+ }
112
+ }
113
+ function safeReadJsonFile(jsonPath) {
114
+ try {
115
+ return JSON.parse(fs.readFileSync(jsonPath, { encoding: 'utf8' }));
116
+ }
117
+ catch {
118
+ return undefined;
119
+ }
120
+ }
121
+ function hasNonEmptyWorkspaceField(value) {
122
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
123
+ return false;
124
+ }
125
+ const typed = value;
126
+ const workspaces = typed.workspaces;
127
+ if (Array.isArray(workspaces)) {
128
+ return workspaces.length > 0;
129
+ }
130
+ if (!workspaces || typeof workspaces !== 'object' || Array.isArray(workspaces)) {
131
+ return false;
132
+ }
133
+ const packages = workspaces.packages;
134
+ return Array.isArray(packages) && packages.length > 0;
135
+ }
136
+ function isIgnoredRelativePath(relativePath) {
137
+ const normalized = normalizeRelativePath(relativePath).replace(/^\.\/+/u, '');
138
+ if (normalized.length === 0 || normalized === '.') {
139
+ return false;
140
+ }
141
+ const segments = normalized.split('/').filter((segment) => segment.length > 0);
142
+ const rootSegment = segments[0];
143
+ if (!rootSegment || ignoredRootPathPrefixes.includes(rootSegment)) {
144
+ return Boolean(rootSegment);
145
+ }
146
+ return segments.some((segment) => [
147
+ 'node_modules',
148
+ 'vendor',
149
+ 'public',
150
+ 'static',
151
+ 'assets',
152
+ 'plugins',
153
+ 'plugin',
154
+ 'themes',
155
+ 'theme',
156
+ 'generated',
157
+ 'dist',
158
+ 'build',
159
+ 'coverage',
160
+ 'storage',
161
+ ].includes(segment.toLowerCase()));
162
+ }
163
+ function scanWorkspace(workspaceRoot, options) {
164
+ const maxDepth = options?.maxDepth ?? 6;
165
+ const rootEntries = safeReadDirectoryEntries(workspaceRoot)
166
+ .sort((left, right) => left.name.localeCompare(right.name));
167
+ const rootDirectoryNames = new Set(rootEntries.filter((entry) => entry.isDirectory()).map((entry) => entry.name));
168
+ const rootFileNames = new Set(rootEntries.filter((entry) => entry.isFile()).map((entry) => entry.name));
169
+ const manifestPathsByName = {
170
+ 'package.json': [],
171
+ 'pom.xml': [],
172
+ 'requirements.txt': [],
173
+ 'go.mod': [],
174
+ 'composer.json': [],
175
+ };
176
+ const srcDirectoryPaths = [];
177
+ const workspaceConfigFiles = [...workspaceConfigFileNames]
178
+ .filter((fileName) => rootFileNames.has(fileName))
179
+ .sort((left, right) => left.localeCompare(right));
180
+ const queue = [
181
+ { absolutePath: workspaceRoot, relativePath: '', depth: 0 },
182
+ ];
183
+ while (queue.length > 0) {
184
+ const current = queue.shift();
185
+ if (!current) {
186
+ continue;
187
+ }
188
+ const entries = safeReadDirectoryEntries(current.absolutePath)
189
+ .sort((left, right) => left.name.localeCompare(right.name));
190
+ for (const entry of entries) {
191
+ const absoluteEntryPath = path.join(current.absolutePath, entry.name);
192
+ const relativeEntryPath = current.relativePath.length > 0
193
+ ? `${current.relativePath}/${entry.name}`
194
+ : entry.name;
195
+ const normalizedRelativeEntryPath = normalizeRelativePath(relativeEntryPath);
196
+ if (options?.ignoreMatcher?.isIgnored(normalizedRelativeEntryPath)) {
197
+ continue;
198
+ }
199
+ if (entry.isDirectory()) {
200
+ if (current.depth >= maxDepth || ignoredDirectoryNames.has(entry.name)) {
201
+ continue;
202
+ }
203
+ if (entry.name === 'src') {
204
+ srcDirectoryPaths.push(normalizedRelativeEntryPath);
205
+ }
206
+ queue.push({
207
+ absolutePath: absoluteEntryPath,
208
+ relativePath: normalizedRelativeEntryPath,
209
+ depth: current.depth + 1,
210
+ });
211
+ continue;
212
+ }
213
+ if (!entry.isFile()) {
214
+ continue;
215
+ }
216
+ const fileName = entry.name;
217
+ if (manifestFileNames.includes(fileName)) {
218
+ manifestPathsByName[fileName].push(normalizedRelativeEntryPath);
219
+ }
220
+ }
221
+ }
222
+ const rootPackageHasWorkspaces = rootFileNames.has('package.json')
223
+ ? hasNonEmptyWorkspaceField(safeReadJsonFile(path.join(workspaceRoot, 'package.json')))
224
+ : false;
225
+ return {
226
+ rootDirectoryNames,
227
+ rootFileNames,
228
+ manifestPathsByName,
229
+ workspaceConfigFiles,
230
+ srcDirectoryPaths: sortUnique(srcDirectoryPaths),
231
+ rootPackageHasWorkspaces,
232
+ };
233
+ }
234
+ function collectDetectedRoots(scan) {
235
+ const roots = new Set();
236
+ for (const manifestName of manifestFileNames) {
237
+ for (const manifestPath of scan.manifestPathsByName[manifestName]) {
238
+ if (isIgnoredRelativePath(manifestPath) || isUnderJvmResourceRoot(manifestPath)) {
239
+ continue;
240
+ }
241
+ const containingDirectory = normalizeRelativePath(path.dirname(manifestPath));
242
+ if (containingDirectory !== '.' && containingDirectory.length > 0) {
243
+ roots.add(containingDirectory);
244
+ }
245
+ }
246
+ }
247
+ return sortUnique(roots);
248
+ }
249
+ function buildResultFromScan(scan) {
250
+ const evidence = [];
251
+ const detectedRoots = collectDetectedRoots(scan);
252
+ const filteredManifestPathsByName = {
253
+ 'package.json': scan.manifestPathsByName['package.json'].filter((entry) => !isIgnoredRelativePath(entry) && !isUnderJvmResourceRoot(entry)),
254
+ 'pom.xml': scan.manifestPathsByName['pom.xml'].filter((entry) => !isIgnoredRelativePath(entry) && !isUnderJvmResourceRoot(entry)),
255
+ 'requirements.txt': scan.manifestPathsByName['requirements.txt'].filter((entry) => !isIgnoredRelativePath(entry) && !isUnderJvmResourceRoot(entry)),
256
+ 'go.mod': scan.manifestPathsByName['go.mod'].filter((entry) => !isIgnoredRelativePath(entry) && !isUnderJvmResourceRoot(entry)),
257
+ 'composer.json': scan.manifestPathsByName['composer.json'].filter((entry) => !isIgnoredRelativePath(entry) && !isUnderJvmResourceRoot(entry)),
258
+ };
259
+ let monorepoStrongSignals = 0;
260
+ let monorepoWeakSignals = 0;
261
+ let singleStrongSignals = 0;
262
+ let singleWeakSignals = 0;
263
+ for (const fileName of scan.workspaceConfigFiles) {
264
+ pushEvidence(evidence, `Found ${fileName}`);
265
+ monorepoStrongSignals += 1;
266
+ }
267
+ if (scan.rootPackageHasWorkspaces) {
268
+ pushEvidence(evidence, 'Found workspaces definition in root package.json');
269
+ monorepoStrongSignals += 1;
270
+ }
271
+ const presentMonorepoDirectories = [...monorepoRootDirectorySignals]
272
+ .filter((directoryName) => scan.rootDirectoryNames.has(directoryName));
273
+ for (const directoryName of presentMonorepoDirectories) {
274
+ pushEvidence(evidence, `Found ${directoryName}/ directory`);
275
+ monorepoWeakSignals += 1;
276
+ }
277
+ if (presentMonorepoDirectories.includes('apps') && presentMonorepoDirectories.includes('packages')) {
278
+ pushEvidence(evidence, 'Detected project roots in apps/ and packages/');
279
+ monorepoStrongSignals += 1;
280
+ }
281
+ if (scan.rootDirectoryNames.has('backend') && scan.rootDirectoryNames.has('frontend')) {
282
+ pushEvidence(evidence, 'Found backend/ and frontend/ directories at repository root');
283
+ monorepoStrongSignals += 1;
284
+ }
285
+ const multiManifestTypes = manifestFileNames.filter((manifestName) => filteredManifestPathsByName[manifestName].length > 0);
286
+ if (multiManifestTypes.length > 1) {
287
+ pushEvidence(evidence, 'Multiple language manifests detected');
288
+ monorepoWeakSignals += 1;
289
+ }
290
+ let nonRootManifestCount = 0;
291
+ for (const manifestName of manifestFileNames) {
292
+ const paths = filteredManifestPathsByName[manifestName];
293
+ if (paths.length > 1) {
294
+ pushEvidence(evidence, `Multiple ${manifestName} files detected (${paths.length})`);
295
+ monorepoStrongSignals += 1;
296
+ }
297
+ const rootCount = paths.filter((entry) => normalizeRelativePath(entry) === manifestName).length;
298
+ const nestedCount = Math.max(0, paths.length - rootCount);
299
+ nonRootManifestCount += nestedCount;
300
+ if (rootCount === 1 && nestedCount === 0) {
301
+ pushEvidence(evidence, `Single ${manifestName} at root`);
302
+ singleStrongSignals += 1;
303
+ }
304
+ }
305
+ if (nonRootManifestCount >= 2) {
306
+ pushEvidence(evidence, `Multiple project manifests detected (${nonRootManifestCount} nested manifests)`);
307
+ monorepoStrongSignals += 1;
308
+ }
309
+ if (detectedRoots.length > 1) {
310
+ pushEvidence(evidence, `Detected multiple project roots (${detectedRoots.length})`);
311
+ monorepoStrongSignals += 1;
312
+ }
313
+ const filteredSrcDirectoryPaths = scan.srcDirectoryPaths.filter((entry) => !isIgnoredRelativePath(entry));
314
+ if (scan.rootDirectoryNames.has('src')) {
315
+ pushEvidence(evidence, 'Found src/ directory at root');
316
+ singleWeakSignals += 1;
317
+ }
318
+ if (filteredSrcDirectoryPaths.length > 1) {
319
+ pushEvidence(evidence, `Detected multiple src/ directories (${filteredSrcDirectoryPaths.length})`);
320
+ monorepoWeakSignals += 1;
321
+ }
322
+ const noMonorepoFoldersPresent = presentMonorepoDirectories.length === 0 &&
323
+ !(scan.rootDirectoryNames.has('backend') && scan.rootDirectoryNames.has('frontend'));
324
+ if (scan.workspaceConfigFiles.length === 0 && noMonorepoFoldersPresent) {
325
+ singleWeakSignals += 1;
326
+ pushEvidence(evidence, 'No workspace config files or monorepo root folders detected');
327
+ }
328
+ const monorepoScore = monorepoStrongSignals * 3 + monorepoWeakSignals;
329
+ const singleProjectScore = singleStrongSignals * 3 + singleWeakSignals;
330
+ if (monorepoScore === 0 && singleProjectScore === 0) {
331
+ return {
332
+ topology: 'unknown',
333
+ confidence: 'low',
334
+ evidence: ['No strong monorepo or single-project signals detected'],
335
+ };
336
+ }
337
+ let topology = 'unknown';
338
+ if (monorepoScore > singleProjectScore) {
339
+ topology = 'monorepo';
340
+ }
341
+ else if (singleProjectScore > monorepoScore) {
342
+ topology = 'single_project';
343
+ }
344
+ else if (detectedRoots.length > 1 || monorepoStrongSignals > singleStrongSignals) {
345
+ topology = 'monorepo';
346
+ }
347
+ else if (singleStrongSignals > 0 || singleWeakSignals > 0) {
348
+ topology = 'single_project';
349
+ }
350
+ if (topology === 'unknown') {
351
+ return {
352
+ topology: 'unknown',
353
+ confidence: 'low',
354
+ evidence,
355
+ };
356
+ }
357
+ let confidence = 'low';
358
+ if (topology === 'monorepo') {
359
+ if (monorepoStrongSignals >= 2) {
360
+ confidence = 'high';
361
+ }
362
+ else if (monorepoStrongSignals >= 1 || monorepoWeakSignals >= 2) {
363
+ confidence = 'medium';
364
+ }
365
+ }
366
+ else {
367
+ if (singleStrongSignals >= 2) {
368
+ confidence = 'high';
369
+ }
370
+ else if (singleStrongSignals >= 1 || singleWeakSignals >= 2) {
371
+ confidence = 'medium';
372
+ }
373
+ }
374
+ if ((topology === 'monorepo' && singleProjectScore > 0) ||
375
+ (topology === 'single_project' && monorepoScore > 0)) {
376
+ confidence = confidence === 'high' ? 'medium' : confidence;
377
+ }
378
+ return {
379
+ topology,
380
+ confidence,
381
+ evidence,
382
+ ...(topology === 'monorepo' && detectedRoots.length > 0 ? { detectedRoots } : {}),
383
+ ...(topology === 'single_project' && detectedRoots.length === 0 ? { detectedRoots: ['.'] } : {}),
384
+ };
385
+ }
386
+ function detectRepoTopology(workspaceRoot, options) {
387
+ return buildResultFromScan(scanWorkspace(workspaceRoot, options));
388
+ }
389
+ function debugTestTopologyDetection() {
390
+ const scenarios = [
391
+ {
392
+ name: 'Single Node Project',
393
+ expected: 'single_project',
394
+ scan: {
395
+ rootDirectoryNames: new Set(['src']),
396
+ rootFileNames: new Set(['package.json']),
397
+ manifestPathsByName: {
398
+ 'package.json': ['package.json'],
399
+ 'pom.xml': [],
400
+ 'requirements.txt': [],
401
+ 'go.mod': [],
402
+ 'composer.json': [],
403
+ },
404
+ workspaceConfigFiles: [],
405
+ srcDirectoryPaths: ['src'],
406
+ rootPackageHasWorkspaces: false,
407
+ },
408
+ },
409
+ {
410
+ name: 'Apps + Packages Monorepo',
411
+ expected: 'monorepo',
412
+ scan: {
413
+ rootDirectoryNames: new Set(['apps', 'packages']),
414
+ rootFileNames: new Set(['pnpm-workspace.yaml', 'package.json']),
415
+ manifestPathsByName: {
416
+ 'package.json': ['package.json', 'apps/api/package.json', 'apps/web/package.json', 'packages/shared/package.json'],
417
+ 'pom.xml': [],
418
+ 'requirements.txt': [],
419
+ 'go.mod': [],
420
+ 'composer.json': [],
421
+ },
422
+ workspaceConfigFiles: ['pnpm-workspace.yaml'],
423
+ srcDirectoryPaths: ['apps/api/src', 'apps/web/src', 'packages/shared/src'],
424
+ rootPackageHasWorkspaces: true,
425
+ },
426
+ },
427
+ {
428
+ name: 'Backend + Frontend Repo',
429
+ expected: 'monorepo',
430
+ scan: {
431
+ rootDirectoryNames: new Set(['backend', 'frontend']),
432
+ rootFileNames: new Set(['package.json']),
433
+ manifestPathsByName: {
434
+ 'package.json': ['package.json', 'backend/package.json', 'frontend/package.json'],
435
+ 'pom.xml': [],
436
+ 'requirements.txt': [],
437
+ 'go.mod': [],
438
+ 'composer.json': [],
439
+ },
440
+ workspaceConfigFiles: [],
441
+ srcDirectoryPaths: ['backend/src', 'frontend/src'],
442
+ rootPackageHasWorkspaces: false,
443
+ },
444
+ },
445
+ {
446
+ name: 'Empty Repo',
447
+ expected: 'unknown',
448
+ scan: {
449
+ rootDirectoryNames: new Set(),
450
+ rootFileNames: new Set(),
451
+ manifestPathsByName: {
452
+ 'package.json': [],
453
+ 'pom.xml': [],
454
+ 'requirements.txt': [],
455
+ 'go.mod': [],
456
+ 'composer.json': [],
457
+ },
458
+ workspaceConfigFiles: [],
459
+ srcDirectoryPaths: [],
460
+ rootPackageHasWorkspaces: false,
461
+ },
462
+ },
463
+ ];
464
+ for (const scenario of scenarios) {
465
+ const result = buildResultFromScan(scenario.scan);
466
+ console.log(`Test Scenario: ${scenario.name} -> ${scenario.expected}`);
467
+ console.log(JSON.stringify(result, null, 2));
468
+ }
469
+ }
470
+ //# sourceMappingURL=repoTopologyDetection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repoTopologyDetection.js","sourceRoot":"","sources":["../../../../../core/src/smartInit/repoTopologyDetection.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiZA,gDAKC;AAED,gEAiFC;AAzeD,4CAA8B;AAC9B,gDAAkC;AA0BlC,MAAM,iBAAiB,GAAgC;IACtD,cAAc;IACd,SAAS;IACT,kBAAkB;IAClB,QAAQ;IACR,eAAe;CACf,CAAC;AACF,MAAM,wBAAwB,GAAG;IAChC,qBAAqB;IACrB,YAAY;IACZ,SAAS;IACT,YAAY;IACZ,WAAW;CACF,CAAC;AACX,MAAM,4BAA4B,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAU,CAAC;AAChG,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAS;IAC7C,MAAM;IACN,YAAY;IACZ,cAAc;IACd,cAAc;IACd,MAAM;IACN,OAAO;IACP,KAAK;IACL,UAAU;IACV,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,MAAM;IACN,aAAa;CACb,CAAC,CAAC;AACH,MAAM,uBAAuB,GAAG;IAC/B,OAAO;IACP,MAAM;IACN,UAAU;IACV,UAAU;IACV,SAAS;IACT,MAAM;IACN,WAAW;IACX,cAAc;IACd,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,WAAW;IACX,SAAS;CACT,CAAC;AAEF,SAAS,qBAAqB,CAAC,KAAa;IAC3C,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,sBAAsB,CAAC,YAAoB;IACnD,OAAO,qCAAqC,CAAC,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AACtG,CAAC;AAED,SAAS,UAAU,CAAC,MAAwB;IAC3C,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,YAAY,CAAC,QAAkB,EAAE,OAAe;IACxD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACjC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;AACF,CAAC;AAED,SAAS,wBAAwB,CAAC,aAAqB;IACtD,IAAI,CAAC;QACJ,OAAO,EAAE,CAAC,WAAW,CAAC,aAAa,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,EAAE,CAAC;IACX,CAAC;AACF,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAgB;IACzC,IAAI,CAAC;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAY,CAAC;IAC/E,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,SAAS,CAAC;IAClB,CAAC;AACF,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAc;IAChD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjE,OAAO,KAAK,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAG,KAAgC,CAAC;IAC/C,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IACpC,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAChF,OAAO,KAAK,CAAC;IACd,CAAC;IACD,MAAM,QAAQ,GAAI,UAAsC,CAAC,QAAQ,CAAC;IAClE,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,qBAAqB,CAAC,YAAoB;IAClD,MAAM,UAAU,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC9E,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACnD,OAAO,KAAK,CAAC;IACd,CAAC;IACD,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/E,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,CAAC,WAAW,IAAI,uBAAuB,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACnE,OAAO,OAAO,CAAC,WAAW,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAChC;QACC,cAAc;QACd,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,SAAS;QACT,QAAQ;QACR,QAAQ;QACR,OAAO;QACP,WAAW;QACX,MAAM;QACN,OAAO;QACP,UAAU;QACV,SAAS;KACT,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CACjC,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CACrB,aAAqB,EACrB,OAAuE;IAEvE,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,wBAAwB,CAAC,aAAa,CAAC;SACzD,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7D,MAAM,kBAAkB,GAAG,IAAI,GAAG,CACjC,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAC7E,CAAC;IACF,MAAM,aAAa,GAAG,IAAI,GAAG,CAC5B,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CACxE,CAAC;IACF,MAAM,mBAAmB,GAAuC;QAC/D,cAAc,EAAE,EAAE;QAClB,SAAS,EAAE,EAAE;QACb,kBAAkB,EAAE,EAAE;QACtB,QAAQ,EAAE,EAAE;QACZ,eAAe,EAAE,EAAE;KACnB,CAAC;IACF,MAAM,iBAAiB,GAAa,EAAE,CAAC;IACvC,MAAM,oBAAoB,GAAG,CAAC,GAAG,wBAAwB,CAAC;SACxD,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;SACjD,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IACnD,MAAM,KAAK,GAAyE;QACnF,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;KAC3D,CAAC;IACF,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,SAAS;QACV,CAAC;QACD,MAAM,OAAO,GAAG,wBAAwB,CAAC,OAAO,CAAC,YAAY,CAAC;aAC5D,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACtE,MAAM,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;gBACxD,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,IAAI,KAAK,CAAC,IAAI,EAAE;gBACzC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;YACd,MAAM,2BAA2B,GAAG,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;YAC7E,IAAI,OAAO,EAAE,aAAa,EAAE,SAAS,CAAC,2BAA2B,CAAC,EAAE,CAAC;gBACpE,SAAS;YACV,CAAC;YACD,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACzB,IAAI,OAAO,CAAC,KAAK,IAAI,QAAQ,IAAI,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBACxE,SAAS;gBACV,CAAC;gBACD,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;oBAC1B,iBAAiB,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;gBACrD,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC;oBACV,YAAY,EAAE,iBAAiB;oBAC/B,YAAY,EAAE,2BAA2B;oBACzC,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC;iBACxB,CAAC,CAAC;gBACH,SAAS;YACV,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBACrB,SAAS;YACV,CAAC;YACD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAwB,CAAC;YAChD,IAAI,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1C,mBAAmB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YACjE,CAAC;QACF,CAAC;IACF,CAAC;IACD,MAAM,wBAAwB,GAAG,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC;QACjE,CAAC,CAAC,yBAAyB,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC;QACvF,CAAC,CAAC,KAAK,CAAC;IACT,OAAO;QACN,kBAAkB;QAClB,aAAa;QACb,mBAAmB;QACnB,oBAAoB;QACpB,iBAAiB,EAAE,UAAU,CAAC,iBAAiB,CAAC;QAChD,wBAAwB;KACxB,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAuB;IACpD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,YAAY,IAAI,iBAAiB,EAAE,CAAC;QAC9C,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,EAAE,CAAC;YACnE,IAAI,qBAAqB,CAAC,YAAY,CAAC,IAAI,sBAAsB,CAAC,YAAY,CAAC,EAAE,CAAC;gBACjF,SAAS;YACV,CAAC;YACD,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;YAC9E,IAAI,mBAAmB,KAAK,GAAG,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnE,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YAChC,CAAC;QACF,CAAC;IACF,CAAC;IACD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAuB;IACnD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,aAAa,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,2BAA2B,GAAG;QACnC,cAAc,EAAE,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC3I,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACjI,kBAAkB,EAAE,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACnJ,QAAQ,EAAE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC/H,eAAe,EAAE,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;KAC7I,CAAC;IAEF,IAAI,qBAAqB,GAAG,CAAC,CAAC;IAC9B,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAE1B,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAClD,YAAY,CAAC,QAAQ,EAAE,SAAS,QAAQ,EAAE,CAAC,CAAC;QAC5C,qBAAqB,IAAI,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;QACnC,YAAY,CAAC,QAAQ,EAAE,kDAAkD,CAAC,CAAC;QAC3E,qBAAqB,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,0BAA0B,GAAG,CAAC,GAAG,4BAA4B,CAAC;SAClE,MAAM,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;IACxE,KAAK,MAAM,aAAa,IAAI,0BAA0B,EAAE,CAAC;QACxD,YAAY,CAAC,QAAQ,EAAE,SAAS,aAAa,aAAa,CAAC,CAAC;QAC5D,mBAAmB,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,0BAA0B,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,0BAA0B,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACpG,YAAY,CAAC,QAAQ,EAAE,+CAA+C,CAAC,CAAC;QACxE,qBAAqB,IAAI,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QACvF,YAAY,CAAC,QAAQ,EAAE,6DAA6D,CAAC,CAAC;QACtF,qBAAqB,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,2BAA2B,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC5H,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,YAAY,CAAC,QAAQ,EAAE,sCAAsC,CAAC,CAAC;QAC/D,mBAAmB,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,oBAAoB,GAAG,CAAC,CAAC;IAC7B,KAAK,MAAM,YAAY,IAAI,iBAAiB,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,2BAA2B,CAAC,YAAY,CAAC,CAAC;QACxD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,YAAY,CAAC,QAAQ,EAAE,YAAY,YAAY,oBAAoB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YACpF,qBAAqB,IAAI,CAAC,CAAC;QAC5B,CAAC;QACD,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,qBAAqB,CAAC,KAAK,CAAC,KAAK,YAAY,CAAC,CAAC,MAAM,CAAC;QAChG,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;QAC1D,oBAAoB,IAAI,WAAW,CAAC;QACpC,IAAI,SAAS,KAAK,CAAC,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;YAC1C,YAAY,CAAC,QAAQ,EAAE,UAAU,YAAY,UAAU,CAAC,CAAC;YACzD,mBAAmB,IAAI,CAAC,CAAC;QAC1B,CAAC;IACF,CAAC;IACD,IAAI,oBAAoB,IAAI,CAAC,EAAE,CAAC;QAC/B,YAAY,CAAC,QAAQ,EAAE,wCAAwC,oBAAoB,oBAAoB,CAAC,CAAC;QACzG,qBAAqB,IAAI,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,YAAY,CAAC,QAAQ,EAAE,oCAAoC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;QACpF,qBAAqB,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,yBAAyB,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1G,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACxC,YAAY,CAAC,QAAQ,EAAE,8BAA8B,CAAC,CAAC;QACvD,iBAAiB,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,yBAAyB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,YAAY,CAAC,QAAQ,EAAE,uCAAuC,yBAAyB,CAAC,MAAM,GAAG,CAAC,CAAC;QACnG,mBAAmB,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,wBAAwB,GAAG,0BAA0B,CAAC,MAAM,KAAK,CAAC;QACvE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IACtF,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,KAAK,CAAC,IAAI,wBAAwB,EAAE,CAAC;QACxE,iBAAiB,IAAI,CAAC,CAAC;QACvB,YAAY,CAAC,QAAQ,EAAE,6DAA6D,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,aAAa,GAAG,qBAAqB,GAAG,CAAC,GAAG,mBAAmB,CAAC;IACtE,MAAM,kBAAkB,GAAG,mBAAmB,GAAG,CAAC,GAAG,iBAAiB,CAAC;IAEvE,IAAI,aAAa,KAAK,CAAC,IAAI,kBAAkB,KAAK,CAAC,EAAE,CAAC;QACrD,OAAO;YACN,QAAQ,EAAE,SAAS;YACnB,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,CAAC,uDAAuD,CAAC;SACnE,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,GAAiB,SAAS,CAAC;IACvC,IAAI,aAAa,GAAG,kBAAkB,EAAE,CAAC;QACxC,QAAQ,GAAG,UAAU,CAAC;IACvB,CAAC;SAAM,IAAI,kBAAkB,GAAG,aAAa,EAAE,CAAC;QAC/C,QAAQ,GAAG,gBAAgB,CAAC;IAC7B,CAAC;SAAM,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,qBAAqB,GAAG,mBAAmB,EAAE,CAAC;QACpF,QAAQ,GAAG,UAAU,CAAC;IACvB,CAAC;SAAM,IAAI,mBAAmB,GAAG,CAAC,IAAI,iBAAiB,GAAG,CAAC,EAAE,CAAC;QAC7D,QAAQ,GAAG,gBAAgB,CAAC;IAC7B,CAAC;IAED,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO;YACN,QAAQ,EAAE,SAAS;YACnB,UAAU,EAAE,KAAK;YACjB,QAAQ;SACR,CAAC;IACH,CAAC;IAED,IAAI,UAAU,GAA8B,KAAK,CAAC;IAClD,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;QAC7B,IAAI,qBAAqB,IAAI,CAAC,EAAE,CAAC;YAChC,UAAU,GAAG,MAAM,CAAC;QACrB,CAAC;aAAM,IAAI,qBAAqB,IAAI,CAAC,IAAI,mBAAmB,IAAI,CAAC,EAAE,CAAC;YACnE,UAAU,GAAG,QAAQ,CAAC;QACvB,CAAC;IACF,CAAC;SAAM,CAAC;QACP,IAAI,mBAAmB,IAAI,CAAC,EAAE,CAAC;YAC9B,UAAU,GAAG,MAAM,CAAC;QACrB,CAAC;aAAM,IAAI,mBAAmB,IAAI,CAAC,IAAI,iBAAiB,IAAI,CAAC,EAAE,CAAC;YAC/D,UAAU,GAAG,QAAQ,CAAC;QACvB,CAAC;IACF,CAAC;IACD,IACC,CAAC,QAAQ,KAAK,UAAU,IAAI,kBAAkB,GAAG,CAAC,CAAC;QACnD,CAAC,QAAQ,KAAK,gBAAgB,IAAI,aAAa,GAAG,CAAC,CAAC,EACnD,CAAC;QACF,UAAU,GAAG,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC;IAC5D,CAAC;IAED,OAAO;QACN,QAAQ;QACR,UAAU;QACV,QAAQ;QACR,GAAG,CAAC,QAAQ,KAAK,UAAU,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,GAAG,CAAC,QAAQ,KAAK,gBAAgB,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChG,CAAC;AACH,CAAC;AAED,SAAgB,kBAAkB,CACjC,aAAqB,EACrB,OAAoD;IAEpD,OAAO,mBAAmB,CAAC,aAAa,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,SAAgB,0BAA0B;IACzC,MAAM,SAAS,GAA6E;QAC3F;YACC,IAAI,EAAE,qBAAqB;YAC3B,QAAQ,EAAE,gBAAgB;YAC1B,IAAI,EAAE;gBACL,kBAAkB,EAAE,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;gBACpC,aAAa,EAAE,IAAI,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC;gBACxC,mBAAmB,EAAE;oBACpB,cAAc,EAAE,CAAC,cAAc,CAAC;oBAChC,SAAS,EAAE,EAAE;oBACb,kBAAkB,EAAE,EAAE;oBACtB,QAAQ,EAAE,EAAE;oBACZ,eAAe,EAAE,EAAE;iBACnB;gBACD,oBAAoB,EAAE,EAAE;gBACxB,iBAAiB,EAAE,CAAC,KAAK,CAAC;gBAC1B,wBAAwB,EAAE,KAAK;aAC/B;SACD;QACD;YACC,IAAI,EAAE,0BAA0B;YAChC,QAAQ,EAAE,UAAU;YACpB,IAAI,EAAE;gBACL,kBAAkB,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;gBACjD,aAAa,EAAE,IAAI,GAAG,CAAC,CAAC,qBAAqB,EAAE,cAAc,CAAC,CAAC;gBAC/D,mBAAmB,EAAE;oBACpB,cAAc,EAAE,CAAC,cAAc,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,8BAA8B,CAAC;oBAClH,SAAS,EAAE,EAAE;oBACb,kBAAkB,EAAE,EAAE;oBACtB,QAAQ,EAAE,EAAE;oBACZ,eAAe,EAAE,EAAE;iBACnB;gBACD,oBAAoB,EAAE,CAAC,qBAAqB,CAAC;gBAC7C,iBAAiB,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,qBAAqB,CAAC;gBAC1E,wBAAwB,EAAE,IAAI;aAC9B;SACD;QACD;YACC,IAAI,EAAE,yBAAyB;YAC/B,QAAQ,EAAE,UAAU;YACpB,IAAI,EAAE;gBACL,kBAAkB,EAAE,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;gBACpD,aAAa,EAAE,IAAI,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC;gBACxC,mBAAmB,EAAE;oBACpB,cAAc,EAAE,CAAC,cAAc,EAAE,sBAAsB,EAAE,uBAAuB,CAAC;oBACjF,SAAS,EAAE,EAAE;oBACb,kBAAkB,EAAE,EAAE;oBACtB,QAAQ,EAAE,EAAE;oBACZ,eAAe,EAAE,EAAE;iBACnB;gBACD,oBAAoB,EAAE,EAAE;gBACxB,iBAAiB,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC;gBAClD,wBAAwB,EAAE,KAAK;aAC/B;SACD;QACD;YACC,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE;gBACL,kBAAkB,EAAE,IAAI,GAAG,EAAU;gBACrC,aAAa,EAAE,IAAI,GAAG,EAAU;gBAChC,mBAAmB,EAAE;oBACpB,cAAc,EAAE,EAAE;oBAClB,SAAS,EAAE,EAAE;oBACb,kBAAkB,EAAE,EAAE;oBACtB,QAAQ,EAAE,EAAE;oBACZ,eAAe,EAAE,EAAE;iBACnB;gBACD,oBAAoB,EAAE,EAAE;gBACxB,iBAAiB,EAAE,EAAE;gBACrB,wBAAwB,EAAE,KAAK;aAC/B;SACD;KACD,CAAC;IAEF,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,kBAAkB,QAAQ,CAAC,IAAI,OAAO,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;AACF,CAAC"}
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.createSmartInitRunContext = createSmartInitRunContext;
37
+ const path = __importStar(require("node:path"));
38
+ const apiDbHintDetection_1 = require("./apiDbHintDetection");
39
+ const projectKindDetection_1 = require("./projectKindDetection");
40
+ const stackDetection_1 = require("./stackDetection");
41
+ function normalizeRoot(workspaceRoot) {
42
+ const resolved = path.resolve(workspaceRoot);
43
+ return process.platform === 'win32' ? resolved.toLowerCase() : resolved;
44
+ }
45
+ function createSmartInitRunContext() {
46
+ const stackResults = new Map();
47
+ const projectKindResults = new Map();
48
+ const apiDbResults = new Map();
49
+ const ignoreMatcherIds = new WeakMap();
50
+ let nextIgnoreMatcherId = 1;
51
+ const counts = {
52
+ stacks: 0,
53
+ projectKinds: 0,
54
+ apiDbHints: 0,
55
+ };
56
+ const matcherKey = (ignoreMatcher) => {
57
+ if (!ignoreMatcher) {
58
+ return 'ignore:none';
59
+ }
60
+ const existing = ignoreMatcherIds.get(ignoreMatcher);
61
+ if (existing) {
62
+ return `ignore:${existing}`;
63
+ }
64
+ const id = nextIgnoreMatcherId;
65
+ nextIgnoreMatcherId += 1;
66
+ ignoreMatcherIds.set(ignoreMatcher, id);
67
+ return `ignore:${id}`;
68
+ };
69
+ const cacheKey = (workspaceRoot, options) => `${normalizeRoot(workspaceRoot)}|${matcherKey(options?.ignoreMatcher)}`;
70
+ return {
71
+ detectStacks(workspaceRoot, options) {
72
+ const key = cacheKey(workspaceRoot, options);
73
+ const cached = stackResults.get(key);
74
+ if (cached) {
75
+ return cached;
76
+ }
77
+ counts.stacks += 1;
78
+ const result = (0, stackDetection_1.detectStacks)(workspaceRoot, options);
79
+ stackResults.set(key, result);
80
+ return result;
81
+ },
82
+ detectProjectKinds(workspaceRoot, options) {
83
+ const key = cacheKey(workspaceRoot, options);
84
+ const cached = projectKindResults.get(key);
85
+ if (cached) {
86
+ return cached;
87
+ }
88
+ counts.projectKinds += 1;
89
+ const result = (0, projectKindDetection_1.detectProjectKinds)(workspaceRoot, options);
90
+ projectKindResults.set(key, result);
91
+ return result;
92
+ },
93
+ detectApiDbHints(workspaceRoot, options) {
94
+ const key = cacheKey(workspaceRoot, options);
95
+ const cached = apiDbResults.get(key);
96
+ if (cached) {
97
+ return cached;
98
+ }
99
+ counts.apiDbHints += 1;
100
+ const result = (0, apiDbHintDetection_1.detectApiDbHints)(workspaceRoot, {
101
+ ...(options?.ignoreMatcher ? { ignoreMatcher: options.ignoreMatcher } : {}),
102
+ projectKinds: this.detectProjectKinds(workspaceRoot, options),
103
+ });
104
+ apiDbResults.set(key, result);
105
+ return result;
106
+ },
107
+ getDetectorCallCounts() {
108
+ return { ...counts };
109
+ },
110
+ };
111
+ }
112
+ //# sourceMappingURL=runContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runContext.js","sourceRoot":"","sources":["../../../../../core/src/smartInit/runContext.ts"],"names":[],"mappings":"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"}