memor-code-cli 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +109 -0
- package/dist/IntentionalStructure/index.d.ts +13 -0
- package/dist/IntentionalStructure/index.d.ts.map +1 -0
- package/dist/IntentionalStructure/index.js +46 -0
- package/dist/IntentionalStructure/index.js.map +1 -0
- package/dist/IntentionalStructure/parseCompose.d.ts +13 -0
- package/dist/IntentionalStructure/parseCompose.d.ts.map +1 -0
- package/dist/IntentionalStructure/parseCompose.js +234 -0
- package/dist/IntentionalStructure/parseCompose.js.map +1 -0
- package/dist/IntentionalStructure/parseDeployConfigs.d.ts +7 -0
- package/dist/IntentionalStructure/parseDeployConfigs.d.ts.map +1 -0
- package/dist/IntentionalStructure/parseDeployConfigs.js +168 -0
- package/dist/IntentionalStructure/parseDeployConfigs.js.map +1 -0
- package/dist/IntentionalStructure/parseEnvWiring.d.ts +7 -0
- package/dist/IntentionalStructure/parseEnvWiring.d.ts.map +1 -0
- package/dist/IntentionalStructure/parseEnvWiring.js +159 -0
- package/dist/IntentionalStructure/parseEnvWiring.js.map +1 -0
- package/dist/IntentionalStructure/parseWorkspaces.d.ts +8 -0
- package/dist/IntentionalStructure/parseWorkspaces.d.ts.map +1 -0
- package/dist/IntentionalStructure/parseWorkspaces.js +179 -0
- package/dist/IntentionalStructure/parseWorkspaces.js.map +1 -0
- package/dist/IntentionalStructure/types.d.ts +34 -0
- package/dist/IntentionalStructure/types.d.ts.map +1 -0
- package/dist/IntentionalStructure/types.js +8 -0
- package/dist/IntentionalStructure/types.js.map +1 -0
- package/dist/RepoTypeDetection/applyRepoModeConsistency.d.ts +11 -0
- package/dist/RepoTypeDetection/applyRepoModeConsistency.d.ts.map +1 -0
- package/dist/RepoTypeDetection/applyRepoModeConsistency.js +53 -0
- package/dist/RepoTypeDetection/applyRepoModeConsistency.js.map +1 -0
- package/dist/RepoTypeDetection/detectAppArchetype.d.ts +12 -0
- package/dist/RepoTypeDetection/detectAppArchetype.d.ts.map +1 -0
- package/dist/RepoTypeDetection/detectAppArchetype.js +162 -0
- package/dist/RepoTypeDetection/detectAppArchetype.js.map +1 -0
- package/dist/RepoTypeDetection/detectPackageArchetype.d.ts +10 -0
- package/dist/RepoTypeDetection/detectPackageArchetype.d.ts.map +1 -0
- package/dist/RepoTypeDetection/detectPackageArchetype.js +149 -0
- package/dist/RepoTypeDetection/detectPackageArchetype.js.map +1 -0
- package/dist/RepoTypeDetection/detectRepoCenterSystems.d.ts +11 -0
- package/dist/RepoTypeDetection/detectRepoCenterSystems.d.ts.map +1 -0
- package/dist/RepoTypeDetection/detectRepoCenterSystems.js +123 -0
- package/dist/RepoTypeDetection/detectRepoCenterSystems.js.map +1 -0
- package/dist/RepoTypeDetection/detectRepoMode.d.ts +16 -0
- package/dist/RepoTypeDetection/detectRepoMode.d.ts.map +1 -0
- package/dist/RepoTypeDetection/detectRepoMode.js +338 -0
- package/dist/RepoTypeDetection/detectRepoMode.js.map +1 -0
- package/dist/RepoTypeDetection/detectRepoSignals.d.ts +13 -0
- package/dist/RepoTypeDetection/detectRepoSignals.d.ts.map +1 -0
- package/dist/RepoTypeDetection/detectRepoSignals.js +451 -0
- package/dist/RepoTypeDetection/detectRepoSignals.js.map +1 -0
- package/dist/RepoTypeDetection/inferSupportRole.d.ts +8 -0
- package/dist/RepoTypeDetection/inferSupportRole.d.ts.map +1 -0
- package/dist/RepoTypeDetection/inferSupportRole.js +177 -0
- package/dist/RepoTypeDetection/inferSupportRole.js.map +1 -0
- package/dist/RuntimeInference/detectEnvConsumers.d.ts +7 -0
- package/dist/RuntimeInference/detectEnvConsumers.d.ts.map +1 -0
- package/dist/RuntimeInference/detectEnvConsumers.js +108 -0
- package/dist/RuntimeInference/detectEnvConsumers.js.map +1 -0
- package/dist/RuntimeInference/detectHttpEdges.d.ts +4 -0
- package/dist/RuntimeInference/detectHttpEdges.d.ts.map +1 -0
- package/dist/RuntimeInference/detectHttpEdges.js +146 -0
- package/dist/RuntimeInference/detectHttpEdges.js.map +1 -0
- package/dist/RuntimeInference/detectOrmConsumers.d.ts +5 -0
- package/dist/RuntimeInference/detectOrmConsumers.d.ts.map +1 -0
- package/dist/RuntimeInference/detectOrmConsumers.js +117 -0
- package/dist/RuntimeInference/detectOrmConsumers.js.map +1 -0
- package/dist/RuntimeInference/detectProxyRewrites.d.ts +5 -0
- package/dist/RuntimeInference/detectProxyRewrites.d.ts.map +1 -0
- package/dist/RuntimeInference/detectProxyRewrites.js +137 -0
- package/dist/RuntimeInference/detectProxyRewrites.js.map +1 -0
- package/dist/RuntimeInference/detectTrpcEdges.d.ts +4 -0
- package/dist/RuntimeInference/detectTrpcEdges.d.ts.map +1 -0
- package/dist/RuntimeInference/detectTrpcEdges.js +137 -0
- package/dist/RuntimeInference/detectTrpcEdges.js.map +1 -0
- package/dist/RuntimeInference/index.d.ts +17 -0
- package/dist/RuntimeInference/index.d.ts.map +1 -0
- package/dist/RuntimeInference/index.js +32 -0
- package/dist/RuntimeInference/index.js.map +1 -0
- package/dist/RuntimeInference/types.d.ts +8 -0
- package/dist/RuntimeInference/types.d.ts.map +1 -0
- package/dist/RuntimeInference/types.js +3 -0
- package/dist/RuntimeInference/types.js.map +1 -0
- package/dist/SystemSynthesis/index.d.ts +27 -0
- package/dist/SystemSynthesis/index.d.ts.map +1 -0
- package/dist/SystemSynthesis/index.js +31 -0
- package/dist/SystemSynthesis/index.js.map +1 -0
- package/dist/SystemSynthesis/mergeLayerOutputs.d.ts +13 -0
- package/dist/SystemSynthesis/mergeLayerOutputs.d.ts.map +1 -0
- package/dist/SystemSynthesis/mergeLayerOutputs.js +220 -0
- package/dist/SystemSynthesis/mergeLayerOutputs.js.map +1 -0
- package/dist/SystemSynthesis/stampDeterministic.d.ts +11 -0
- package/dist/SystemSynthesis/stampDeterministic.d.ts.map +1 -0
- package/dist/SystemSynthesis/stampDeterministic.js +177 -0
- package/dist/SystemSynthesis/stampDeterministic.js.map +1 -0
- package/dist/SystemSynthesis/synthesize.d.ts +15 -0
- package/dist/SystemSynthesis/synthesize.d.ts.map +1 -0
- package/dist/SystemSynthesis/synthesize.js +258 -0
- package/dist/SystemSynthesis/synthesize.js.map +1 -0
- package/dist/SystemSynthesis/types.d.ts +110 -0
- package/dist/SystemSynthesis/types.d.ts.map +1 -0
- package/dist/SystemSynthesis/types.js +12 -0
- package/dist/SystemSynthesis/types.js.map +1 -0
- package/dist/amGeneration/buildFlowGraph.d.ts +39 -0
- package/dist/amGeneration/buildFlowGraph.d.ts.map +1 -0
- package/dist/amGeneration/buildFlowGraph.js +643 -0
- package/dist/amGeneration/buildFlowGraph.js.map +1 -0
- package/dist/amGeneration/enrichAMEdges.d.ts +16 -0
- package/dist/amGeneration/enrichAMEdges.d.ts.map +1 -0
- package/dist/amGeneration/enrichAMEdges.js +291 -0
- package/dist/amGeneration/enrichAMEdges.js.map +1 -0
- package/dist/amGeneration/generateAM.d.ts +23 -0
- package/dist/amGeneration/generateAM.d.ts.map +1 -0
- package/dist/amGeneration/generateAM.js +131 -0
- package/dist/amGeneration/generateAM.js.map +1 -0
- package/dist/amGeneration/generateAMForRepo.d.ts +6 -0
- package/dist/amGeneration/generateAMForRepo.d.ts.map +1 -0
- package/dist/amGeneration/generateAMForRepo.js +130 -0
- package/dist/amGeneration/generateAMForRepo.js.map +1 -0
- package/dist/amGeneration/generateFlows.d.ts +27 -0
- package/dist/amGeneration/generateFlows.d.ts.map +1 -0
- package/dist/amGeneration/generateFlows.js +320 -0
- package/dist/amGeneration/generateFlows.js.map +1 -0
- package/dist/amGeneration/promptBuilder.d.ts +24 -0
- package/dist/amGeneration/promptBuilder.d.ts.map +1 -0
- package/dist/amGeneration/promptBuilder.js +299 -0
- package/dist/amGeneration/promptBuilder.js.map +1 -0
- package/dist/amGeneration/selectStrategicFiles.d.ts +42 -0
- package/dist/amGeneration/selectStrategicFiles.d.ts.map +1 -0
- package/dist/amGeneration/selectStrategicFiles.js +672 -0
- package/dist/amGeneration/selectStrategicFiles.js.map +1 -0
- package/dist/amGeneration/types.d.ts +83 -0
- package/dist/amGeneration/types.d.ts.map +1 -0
- package/dist/amGeneration/types.js +9 -0
- package/dist/amGeneration/types.js.map +1 -0
- package/dist/amSections.d.ts +29 -0
- package/dist/amSections.d.ts.map +1 -0
- package/dist/amSections.js +424 -0
- package/dist/amSections.js.map +1 -0
- package/dist/analysis/analysisCache.d.ts +4 -0
- package/dist/analysis/analysisCache.d.ts.map +1 -0
- package/dist/analysis/analysisCache.js +92 -0
- package/dist/analysis/analysisCache.js.map +1 -0
- package/dist/analysis/buildBranchStory.d.ts +95 -0
- package/dist/analysis/buildBranchStory.d.ts.map +1 -0
- package/dist/analysis/buildBranchStory.js +1264 -0
- package/dist/analysis/buildBranchStory.js.map +1 -0
- package/dist/analysis/buildDetailedFileXRay.d.ts +49 -0
- package/dist/analysis/buildDetailedFileXRay.d.ts.map +1 -0
- package/dist/analysis/buildDetailedFileXRay.js +607 -0
- package/dist/analysis/buildDetailedFileXRay.js.map +1 -0
- package/dist/analysis/buildFileXRay.d.ts +35 -0
- package/dist/analysis/buildFileXRay.d.ts.map +1 -0
- package/dist/analysis/buildFileXRay.js +305 -0
- package/dist/analysis/buildFileXRay.js.map +1 -0
- package/dist/analysis/classifySilentKiller.d.ts +14 -0
- package/dist/analysis/classifySilentKiller.d.ts.map +1 -0
- package/dist/analysis/classifySilentKiller.js +235 -0
- package/dist/analysis/classifySilentKiller.js.map +1 -0
- package/dist/analysis/diffChunks.d.ts +21 -0
- package/dist/analysis/diffChunks.d.ts.map +1 -0
- package/dist/analysis/diffChunks.js +302 -0
- package/dist/analysis/diffChunks.js.map +1 -0
- package/dist/analysis/extractRouteMap.d.ts +49 -0
- package/dist/analysis/extractRouteMap.d.ts.map +1 -0
- package/dist/analysis/extractRouteMap.js +354 -0
- package/dist/analysis/extractRouteMap.js.map +1 -0
- package/dist/analysis/generateFileInsight.d.ts +19 -0
- package/dist/analysis/generateFileInsight.d.ts.map +1 -0
- package/dist/analysis/generateFileInsight.js +103 -0
- package/dist/analysis/generateFileInsight.js.map +1 -0
- package/dist/analysis/llmXRay.d.ts +39 -0
- package/dist/analysis/llmXRay.d.ts.map +1 -0
- package/dist/analysis/llmXRay.js +208 -0
- package/dist/analysis/llmXRay.js.map +1 -0
- package/dist/analysis/simulateFailure.d.ts +44 -0
- package/dist/analysis/simulateFailure.d.ts.map +1 -0
- package/dist/analysis/simulateFailure.js +407 -0
- package/dist/analysis/simulateFailure.js.map +1 -0
- package/dist/anthropic.d.ts +3 -0
- package/dist/anthropic.d.ts.map +1 -0
- package/dist/anthropic.js +16 -0
- package/dist/anthropic.js.map +1 -0
- package/dist/app/buildAppPage.d.ts +34 -0
- package/dist/app/buildAppPage.d.ts.map +1 -0
- package/dist/app/buildAppPage.js +3085 -0
- package/dist/app/buildAppPage.js.map +1 -0
- package/dist/app-bundle.js +122 -0
- package/dist/buildAppData.d.ts +3 -0
- package/dist/buildAppData.d.ts.map +1 -0
- package/dist/buildAppData.js +207 -0
- package/dist/buildAppData.js.map +1 -0
- package/dist/builders/analyzeRepo.d.ts +25 -0
- package/dist/builders/analyzeRepo.d.ts.map +1 -0
- package/dist/builders/analyzeRepo.js +873 -0
- package/dist/builders/analyzeRepo.js.map +1 -0
- package/dist/builders/buildSystemConnections.d.ts +3 -0
- package/dist/builders/buildSystemConnections.d.ts.map +1 -0
- package/dist/builders/buildSystemConnections.js +388 -0
- package/dist/builders/buildSystemConnections.js.map +1 -0
- package/dist/builders/buildTextSummary.d.ts +61 -0
- package/dist/builders/buildTextSummary.d.ts.map +1 -0
- package/dist/builders/buildTextSummary.js +178 -0
- package/dist/builders/buildTextSummary.js.map +1 -0
- package/dist/builders/deriveRecommendedStartPath.d.ts +11 -0
- package/dist/builders/deriveRecommendedStartPath.d.ts.map +1 -0
- package/dist/builders/deriveRecommendedStartPath.js +140 -0
- package/dist/builders/deriveRecommendedStartPath.js.map +1 -0
- package/dist/builders/deriveRuntimeRole.d.ts +4 -0
- package/dist/builders/deriveRuntimeRole.d.ts.map +1 -0
- package/dist/builders/deriveRuntimeRole.js +30 -0
- package/dist/builders/deriveRuntimeRole.js.map +1 -0
- package/dist/builders/detectRunCommands.d.ts +16 -0
- package/dist/builders/detectRunCommands.d.ts.map +1 -0
- package/dist/builders/detectRunCommands.js +285 -0
- package/dist/builders/detectRunCommands.js.map +1 -0
- package/dist/builders/generateSystemNarrative.d.ts +12 -0
- package/dist/builders/generateSystemNarrative.d.ts.map +1 -0
- package/dist/builders/generateSystemNarrative.js +474 -0
- package/dist/builders/generateSystemNarrative.js.map +1 -0
- package/dist/builders/gitLogParser.d.ts +15 -0
- package/dist/builders/gitLogParser.d.ts.map +1 -0
- package/dist/builders/gitLogParser.js +116 -0
- package/dist/builders/gitLogParser.js.map +1 -0
- package/dist/builders/readRepoContext.d.ts +30 -0
- package/dist/builders/readRepoContext.d.ts.map +1 -0
- package/dist/builders/readRepoContext.js +323 -0
- package/dist/builders/readRepoContext.js.map +1 -0
- package/dist/builders/readSystemReadme.d.ts +39 -0
- package/dist/builders/readSystemReadme.d.ts.map +1 -0
- package/dist/builders/readSystemReadme.js +133 -0
- package/dist/builders/readSystemReadme.js.map +1 -0
- package/dist/builders/systemRanking.d.ts +24 -0
- package/dist/builders/systemRanking.d.ts.map +1 -0
- package/dist/builders/systemRanking.js +153 -0
- package/dist/builders/systemRanking.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +170 -0
- package/dist/cli.js.map +1 -0
- package/dist/detectors/applyRunnableConfidenceGate.d.ts +8 -0
- package/dist/detectors/applyRunnableConfidenceGate.d.ts.map +1 -0
- package/dist/detectors/applyRunnableConfidenceGate.js +166 -0
- package/dist/detectors/applyRunnableConfidenceGate.js.map +1 -0
- package/dist/detectors/classifySystemType.d.ts +17 -0
- package/dist/detectors/classifySystemType.d.ts.map +1 -0
- package/dist/detectors/classifySystemType.js +460 -0
- package/dist/detectors/classifySystemType.js.map +1 -0
- package/dist/detectors/detectAppInternalUnits.d.ts +20 -0
- package/dist/detectors/detectAppInternalUnits.d.ts.map +1 -0
- package/dist/detectors/detectAppInternalUnits.js +454 -0
- package/dist/detectors/detectAppInternalUnits.js.map +1 -0
- package/dist/detectors/detectBlocks.d.ts +6 -0
- package/dist/detectors/detectBlocks.d.ts.map +1 -0
- package/dist/detectors/detectBlocks.js +354 -0
- package/dist/detectors/detectBlocks.js.map +1 -0
- package/dist/detectors/detectComposeServices.d.ts +23 -0
- package/dist/detectors/detectComposeServices.d.ts.map +1 -0
- package/dist/detectors/detectComposeServices.js +255 -0
- package/dist/detectors/detectComposeServices.js.map +1 -0
- package/dist/detectors/detectEntryPoints.d.ts +6 -0
- package/dist/detectors/detectEntryPoints.d.ts.map +1 -0
- package/dist/detectors/detectEntryPoints.js +376 -0
- package/dist/detectors/detectEntryPoints.js.map +1 -0
- package/dist/detectors/detectSubsystems.d.ts +6 -0
- package/dist/detectors/detectSubsystems.d.ts.map +1 -0
- package/dist/detectors/detectSubsystems.js +376 -0
- package/dist/detectors/detectSubsystems.js.map +1 -0
- package/dist/detectors/detectSystemCandidates.d.ts +3 -0
- package/dist/detectors/detectSystemCandidates.d.ts.map +1 -0
- package/dist/detectors/detectSystemCandidates.js +577 -0
- package/dist/detectors/detectSystemCandidates.js.map +1 -0
- package/dist/devWatcher.d.ts +14 -0
- package/dist/devWatcher.d.ts.map +1 -0
- package/dist/devWatcher.js +96 -0
- package/dist/devWatcher.js.map +1 -0
- package/dist/graph/buildCodebaseGraph.d.ts +3 -0
- package/dist/graph/buildCodebaseGraph.d.ts.map +1 -0
- package/dist/graph/buildCodebaseGraph.js +602 -0
- package/dist/graph/buildCodebaseGraph.js.map +1 -0
- package/dist/graph/buildLLMPayload.d.ts +89 -0
- package/dist/graph/buildLLMPayload.d.ts.map +1 -0
- package/dist/graph/buildLLMPayload.js +715 -0
- package/dist/graph/buildLLMPayload.js.map +1 -0
- package/dist/graph/callLLM.d.ts +16 -0
- package/dist/graph/callLLM.d.ts.map +1 -0
- package/dist/graph/callLLM.js +274 -0
- package/dist/graph/callLLM.js.map +1 -0
- package/dist/graph/types.d.ts +76 -0
- package/dist/graph/types.d.ts.map +1 -0
- package/dist/graph/types.js +5 -0
- package/dist/graph/types.js.map +1 -0
- package/dist/graph/walkExports.d.ts +2 -0
- package/dist/graph/walkExports.d.ts.map +1 -0
- package/dist/graph/walkExports.js +172 -0
- package/dist/graph/walkExports.js.map +1 -0
- package/dist/heuristics/file-patterns.json +325 -0
- package/dist/heuristics/known-packages.json +1022 -0
- package/dist/heuristics/loader.d.ts +121 -0
- package/dist/heuristics/loader.d.ts.map +1 -0
- package/dist/heuristics/loader.js +196 -0
- package/dist/heuristics/loader.js.map +1 -0
- package/dist/heuristics/repo-mode-signals.json +248 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +93 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp.d.ts +3 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +356 -0
- package/dist/mcp.js.map +1 -0
- package/dist/scanner/buildImportGraph.d.ts +23 -0
- package/dist/scanner/buildImportGraph.d.ts.map +1 -0
- package/dist/scanner/buildImportGraph.js +186 -0
- package/dist/scanner/buildImportGraph.js.map +1 -0
- package/dist/scanner/detectDBOps.d.ts +21 -0
- package/dist/scanner/detectDBOps.d.ts.map +1 -0
- package/dist/scanner/detectDBOps.js +346 -0
- package/dist/scanner/detectDBOps.js.map +1 -0
- package/dist/scanner/detectOutbound.d.ts +6 -0
- package/dist/scanner/detectOutbound.d.ts.map +1 -0
- package/dist/scanner/detectOutbound.js +101 -0
- package/dist/scanner/detectOutbound.js.map +1 -0
- package/dist/scanner/detectRepoPurpose.d.ts +19 -0
- package/dist/scanner/detectRepoPurpose.d.ts.map +1 -0
- package/dist/scanner/detectRepoPurpose.js +335 -0
- package/dist/scanner/detectRepoPurpose.js.map +1 -0
- package/dist/scanner/detectRoutes.d.ts +22 -0
- package/dist/scanner/detectRoutes.d.ts.map +1 -0
- package/dist/scanner/detectRoutes.js +406 -0
- package/dist/scanner/detectRoutes.js.map +1 -0
- package/dist/scanner/filterNoise.d.ts +4 -0
- package/dist/scanner/filterNoise.d.ts.map +1 -0
- package/dist/scanner/filterNoise.js +95 -0
- package/dist/scanner/filterNoise.js.map +1 -0
- package/dist/scanner/loadTsAliases.d.ts +20 -0
- package/dist/scanner/loadTsAliases.d.ts.map +1 -0
- package/dist/scanner/loadTsAliases.js +135 -0
- package/dist/scanner/loadTsAliases.js.map +1 -0
- package/dist/scanner/routeHandlers.d.ts +15 -0
- package/dist/scanner/routeHandlers.d.ts.map +1 -0
- package/dist/scanner/routeHandlers.js +154 -0
- package/dist/scanner/routeHandlers.js.map +1 -0
- package/dist/scanner/scanRepo.d.ts +10 -0
- package/dist/scanner/scanRepo.d.ts.map +1 -0
- package/dist/scanner/scanRepo.js +165 -0
- package/dist/scanner/scanRepo.js.map +1 -0
- package/dist/scanner/walkImports.d.ts +14 -0
- package/dist/scanner/walkImports.d.ts.map +1 -0
- package/dist/scanner/walkImports.js +162 -0
- package/dist/scanner/walkImports.js.map +1 -0
- package/dist/server.d.ts +2 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +956 -0
- package/dist/server.js.map +1 -0
- package/dist/session/diff.d.ts +4 -0
- package/dist/session/diff.d.ts.map +1 -0
- package/dist/session/diff.js +150 -0
- package/dist/session/diff.js.map +1 -0
- package/dist/session/snapshot.d.ts +5 -0
- package/dist/session/snapshot.d.ts.map +1 -0
- package/dist/session/snapshot.js +114 -0
- package/dist/session/snapshot.js.map +1 -0
- package/dist/session/store.d.ts +8 -0
- package/dist/session/store.d.ts.map +1 -0
- package/dist/session/store.js +101 -0
- package/dist/session/store.js.map +1 -0
- package/dist/session/types.d.ts +46 -0
- package/dist/session/types.d.ts.map +1 -0
- package/dist/session/types.js +4 -0
- package/dist/session/types.js.map +1 -0
- package/dist/types.d.ts +350 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/file.d.ts +5 -0
- package/dist/utils/file.d.ts.map +1 -0
- package/dist/utils/file.js +76 -0
- package/dist/utils/file.js.map +1 -0
- package/dist/utils/path.d.ts +7 -0
- package/dist/utils/path.d.ts.map +1 -0
- package/dist/utils/path.js +62 -0
- package/dist/utils/path.js.map +1 -0
- package/dist/utils/text.d.ts +5 -0
- package/dist/utils/text.d.ts.map +1 -0
- package/dist/utils/text.js +29 -0
- package/dist/utils/text.js.map +1 -0
- package/dist/viewBuilders/buildSystemFolders.d.ts +39 -0
- package/dist/viewBuilders/buildSystemFolders.d.ts.map +1 -0
- package/dist/viewBuilders/buildSystemFolders.js +198 -0
- package/dist/viewBuilders/buildSystemFolders.js.map +1 -0
- package/dist/watcher/repoWatcher.d.ts +17 -0
- package/dist/watcher/repoWatcher.d.ts.map +1 -0
- package/dist/watcher/repoWatcher.js +87 -0
- package/dist/watcher/repoWatcher.js.map +1 -0
- package/package.json +102 -0
- package/public/memor_logo.svg +18 -0
- package/public/memor_transparent_logo.svg +25 -0
- package/public/tIcons/bun.svg +1 -0
- package/public/tIcons/css.svg +1 -0
- package/public/tIcons/docker.svg +3 -0
- package/public/tIcons/expressjs.svg +1 -0
- package/public/tIcons/html5.svg +6 -0
- package/public/tIcons/javascript.svg +1 -0
- package/public/tIcons/jest.svg +4 -0
- package/public/tIcons/json.svg +1 -0
- package/public/tIcons/markdown-light.svg +1 -0
- package/public/tIcons/nestjs.svg +1 -0
- package/public/tIcons/nextjs_icon_dark.svg +1 -0
- package/public/tIcons/npm.svg +1 -0
- package/public/tIcons/pnpm.svg +1 -0
- package/public/tIcons/prisma.svg +1 -0
- package/public/tIcons/react_dark.svg +11 -0
- package/public/tIcons/supabase.svg +15 -0
- package/public/tIcons/tailwindcss.svg +1 -0
- package/public/tIcons/turborepo-icon-light.svg +1 -0
- package/public/tIcons/typescript.svg +1 -0
- package/public/tIcons/vite.svg +1 -0
- package/public/tIcons/yarn.svg +1 -0
|
@@ -0,0 +1,460 @@
|
|
|
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.folderNameSuggestsBackendService = folderNameSuggestsBackendService;
|
|
37
|
+
exports.classifySystemType = classifySystemType;
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const file_1 = require("../utils/file");
|
|
40
|
+
const text_1 = require("../utils/text");
|
|
41
|
+
const path_1 = require("../utils/path");
|
|
42
|
+
function relUnderSystem(systemRoot, flat) {
|
|
43
|
+
const norm = path.normalize(systemRoot);
|
|
44
|
+
return flat.filter((e) => {
|
|
45
|
+
const fp = path.normalize(e.fullPath);
|
|
46
|
+
return fp === norm || fp.startsWith(norm + path.sep);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
function sysRel(systemRoot, e) {
|
|
50
|
+
return (0, path_1.relativeFromDir)(systemRoot, e.fullPath);
|
|
51
|
+
}
|
|
52
|
+
function hasFile(systemRoot, under, predicate) {
|
|
53
|
+
return under.some((e) => {
|
|
54
|
+
if (e.isDirectory)
|
|
55
|
+
return false;
|
|
56
|
+
return predicate(sysRel(systemRoot, e));
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
function hasDirName(systemRoot, under, dirname) {
|
|
60
|
+
return under.some((e) => e.isDirectory &&
|
|
61
|
+
(e.name === dirname ||
|
|
62
|
+
sysRel(systemRoot, e).split("/").includes(dirname)));
|
|
63
|
+
}
|
|
64
|
+
function hasDirMatching(systemRoot, under, re) {
|
|
65
|
+
return under.some((e) => e.isDirectory && re.test(sysRel(systemRoot, e).split("/").pop() || ""));
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Folder basename hints backend / jobs — used to suppress weak web-app guesses.
|
|
69
|
+
* Uses path segments so "typescript" does not match "script".
|
|
70
|
+
*/
|
|
71
|
+
function folderNameSuggestsBackendService(folderName) {
|
|
72
|
+
const n = folderName.toLowerCase();
|
|
73
|
+
const segments = n.split(/[-_/]/).filter(Boolean);
|
|
74
|
+
const segHit = (s) => segments.includes(s);
|
|
75
|
+
return (segHit("api") ||
|
|
76
|
+
segHit("server") ||
|
|
77
|
+
segHit("backend") ||
|
|
78
|
+
segHit("worker") ||
|
|
79
|
+
segHit("workers") ||
|
|
80
|
+
segHit("jobs") ||
|
|
81
|
+
segHit("queue") ||
|
|
82
|
+
segHit("cli") ||
|
|
83
|
+
segHit("ctl") ||
|
|
84
|
+
segHit("script") ||
|
|
85
|
+
segHit("migration") ||
|
|
86
|
+
segHit("migrations"));
|
|
87
|
+
}
|
|
88
|
+
function clamp01(x) {
|
|
89
|
+
return Math.max(0, Math.min(1, x));
|
|
90
|
+
}
|
|
91
|
+
function emptyScores() {
|
|
92
|
+
return {
|
|
93
|
+
"web-app": 0,
|
|
94
|
+
"api-service": 0,
|
|
95
|
+
"ui-library": 0,
|
|
96
|
+
"docs-site": 0,
|
|
97
|
+
"shared-package": 0,
|
|
98
|
+
infra: 0,
|
|
99
|
+
worker: 0,
|
|
100
|
+
"support-system": 0,
|
|
101
|
+
unknown: 0,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
function pickWinner(scores) {
|
|
105
|
+
let best = "unknown";
|
|
106
|
+
let bestV = scores.unknown;
|
|
107
|
+
Object.keys(scores).forEach((t) => {
|
|
108
|
+
if (scores[t] > bestV) {
|
|
109
|
+
bestV = scores[t];
|
|
110
|
+
best = t;
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
return { type: best, raw: bestV };
|
|
114
|
+
}
|
|
115
|
+
function scoreToConfidence(raw, maxExpected = 1.2) {
|
|
116
|
+
if (raw <= 0)
|
|
117
|
+
return 0.38;
|
|
118
|
+
return clamp01(0.42 + (raw / maxExpected) * 0.48);
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Scored classifier: only strong in-system evidence may label web-app.
|
|
122
|
+
* Monorepo root deps do not count — only this candidate's subtree + its package.json.
|
|
123
|
+
*/
|
|
124
|
+
async function classifySystemType(systemRoot, repoRoot, flatIndex, ctx) {
|
|
125
|
+
const under = relUnderSystem(systemRoot, flatIndex);
|
|
126
|
+
const pkgPath = path.join(systemRoot, "package.json");
|
|
127
|
+
const pkgRaw = await (0, file_1.readTextSafe)(pkgPath);
|
|
128
|
+
const pkg = pkgRaw ? (0, text_1.parseJsonLoose)(pkgRaw) : null;
|
|
129
|
+
const deps = pkg
|
|
130
|
+
? {
|
|
131
|
+
...(pkg.dependencies || {}),
|
|
132
|
+
...(pkg.devDependencies || {}),
|
|
133
|
+
...(pkg.peerDependencies || {}),
|
|
134
|
+
}
|
|
135
|
+
: {};
|
|
136
|
+
// Direct + dev deps only (not peerDeps) — used for strong "this IS the framework" signals.
|
|
137
|
+
// peerDeps mean "host app must provide this", not "this package IS built on it".
|
|
138
|
+
const directDeps = pkg
|
|
139
|
+
? {
|
|
140
|
+
...(pkg.dependencies || {}),
|
|
141
|
+
...(pkg.devDependencies || {}),
|
|
142
|
+
}
|
|
143
|
+
: {};
|
|
144
|
+
// Runtime deps only (dependencies field, not devDeps or peerDeps).
|
|
145
|
+
// An app built ON a framework lists it in dependencies at runtime.
|
|
146
|
+
// A framework package building itself lists it in devDeps (for tests/build), not runtime deps.
|
|
147
|
+
const runtimeDeps = pkg?.dependencies || {};
|
|
148
|
+
const hasDep = (n) => Object.prototype.hasOwnProperty.call(deps, n);
|
|
149
|
+
const hasDirectDep = (n) => Object.prototype.hasOwnProperty.call(directDeps, n);
|
|
150
|
+
const hasRuntimeDep = (n) => Object.prototype.hasOwnProperty.call(runtimeDeps, n);
|
|
151
|
+
const relFromRepo = path.relative(repoRoot, systemRoot);
|
|
152
|
+
const posixRel = relFromRepo === "" ? "." : relFromRepo.split(path.sep).join("/");
|
|
153
|
+
// Directories that are unconventional monorepo source roots (e.g., storybook uses `code/`,
|
|
154
|
+
// some repos use `libs/`, `modules/`, `crates/`). Packages nested inside these dirs are
|
|
155
|
+
// monorepo sub-packages, not standalone services.
|
|
156
|
+
const UNCONVENTIONAL_MONO_TOPS = new Set(["code", "libs", "modules", "crates"]);
|
|
157
|
+
const firstSegment = posixRel.split("/")[0];
|
|
158
|
+
const isUnderUnconventionalMonorepoDir = UNCONVENTIONAL_MONO_TOPS.has(firstSegment) && posixRel.includes("/");
|
|
159
|
+
const isUnderPackages = posixRel.startsWith("packages/") ||
|
|
160
|
+
posixRel.split("/")[0] === "packages" ||
|
|
161
|
+
posixRel.includes("/packages/") || // nested monorepos: code/packages/foo, apps/packages/foo
|
|
162
|
+
isUnderUnconventionalMonorepoDir; // storybook: code/lib/cli-sb, code/renderers/server
|
|
163
|
+
const folderBackendHint = folderNameSuggestsBackendService(ctx.candidateFolderName);
|
|
164
|
+
const hasNextConfigInSystem = under.some((e) => !e.isDirectory && /^next\.config\.(mjs|js|cjs|ts)$/.test(e.name));
|
|
165
|
+
const nextAppRouter = hasFile(systemRoot, under, (r) => /(^|\/)app\/(layout|page)\.(tsx|jsx|js|ts)$/.test(r.replace(/\\/g, "/")));
|
|
166
|
+
// Next.js pages/ dir is at root or src/ only — never nested deeper (e.g. src/mobile/pages/).
|
|
167
|
+
// Restrict to at most one path segment prefix to avoid false positives.
|
|
168
|
+
const nextPages = hasFile(systemRoot, under, (r) => /^(?:src\/)?pages\/(_app|index)\.(tsx|jsx|js|ts)$/.test(r.replace(/\\/g, "/")));
|
|
169
|
+
const hasViteConfig = hasFile(systemRoot, under, (r) => /(^|\/)vite\.config\.(ts|js|mjs|cjs)$/.test(r));
|
|
170
|
+
const hasRootOrSrcIndexHtml = hasFile(systemRoot, under, (r) => /^(index\.html|src\/index\.html)$/.test(r));
|
|
171
|
+
const hasClientMainTsx = hasFile(systemRoot, under, (r) => /^src\/main\.(tsx|jsx)$/.test(r));
|
|
172
|
+
/** SPA/web surface: Vite needs an HTML shell or clear client entry, not deps alone */
|
|
173
|
+
const viteWebSurface = hasViteConfig &&
|
|
174
|
+
(hasDep("react") || hasDep("vue") || hasDep("svelte") || hasDep("preact")) &&
|
|
175
|
+
(hasRootOrSrcIndexHtml || hasClientMainTsx);
|
|
176
|
+
// Electron desktop app: main process has electron-updater in runtime deps (not dev)
|
|
177
|
+
// or a forge.config.* at the root. These are standalone runnable desktop apps,
|
|
178
|
+
// even when nested under packages/ in a monorepo.
|
|
179
|
+
const electronApp = hasRuntimeDep("electron-updater") ||
|
|
180
|
+
hasFile(systemRoot, under, (r) => /^forge\.config\.(mjs|js|ts|cjs)$/.test(r));
|
|
181
|
+
// Capacitor mobile app (iOS/Android): identified by capacitor.config.ts at the root.
|
|
182
|
+
// Capacitor wraps a web app in a native shell — these are standalone runnable apps.
|
|
183
|
+
const capacitorApp = hasFile(systemRoot, under, (r) => /^capacitor\.config\.(ts|js|json)$/.test(r));
|
|
184
|
+
/**
|
|
185
|
+
* Minimum bar for web-app: Next physical signals, Vite+UI+entry, Electron, or Capacitor app.
|
|
186
|
+
*/
|
|
187
|
+
const qualifiesWebApp = hasNextConfigInSystem ||
|
|
188
|
+
nextAppRouter ||
|
|
189
|
+
nextPages ||
|
|
190
|
+
viteWebSurface ||
|
|
191
|
+
electronApp ||
|
|
192
|
+
capacitorApp;
|
|
193
|
+
const nest = under.some((e) => e.name === "nest-cli.json" && !e.isDirectory) ||
|
|
194
|
+
hasRuntimeDep("@nestjs/core"); // runtime dep only — framework pkgs list it in devDeps/peerDeps, not dependencies
|
|
195
|
+
// Runtime deps only — express/fastify/koa/hono in devDeps means the package
|
|
196
|
+
// is testing against or building these frameworks, not running as one.
|
|
197
|
+
// The express repo itself lists express in devDeps for its own tests.
|
|
198
|
+
// Known-packages.json documents this rule; the enforcement is here.
|
|
199
|
+
const expressLike = hasRuntimeDep("express") ||
|
|
200
|
+
hasRuntimeDep("fastify") ||
|
|
201
|
+
hasRuntimeDep("koa") ||
|
|
202
|
+
hasRuntimeDep("hono") ||
|
|
203
|
+
hasRuntimeDep("elysia") ||
|
|
204
|
+
hasRuntimeDep("@adonisjs/core");
|
|
205
|
+
const serverishEntry = hasFile(systemRoot, under, (r) => {
|
|
206
|
+
const n = r.replace(/\\/g, "/").split("/").pop() || "";
|
|
207
|
+
return /^(main|index|server|app)\.(ts|js|mts|cts)$/.test(n);
|
|
208
|
+
});
|
|
209
|
+
const versionedApi = hasDirMatching(systemRoot, under, /^v\d+$/i);
|
|
210
|
+
const apiStructure = hasDirName(systemRoot, under, "routes") ||
|
|
211
|
+
hasDirName(systemRoot, under, "controllers") ||
|
|
212
|
+
hasDirName(systemRoot, under, "handlers") ||
|
|
213
|
+
hasDirName(systemRoot, under, "middleware") ||
|
|
214
|
+
hasFile(systemRoot, under, (r) => /(^|\/)routes?\//.test(r));
|
|
215
|
+
const hasWebRouterDirs = hasDirName(systemRoot, under, "app") || hasDirName(systemRoot, under, "pages");
|
|
216
|
+
const storybook = hasDep("@storybook/react") ||
|
|
217
|
+
hasDep("storybook") ||
|
|
218
|
+
hasDirName(systemRoot, under, ".storybook");
|
|
219
|
+
// Packages under packages/ whose name suggests a build/dev-server tool rather
|
|
220
|
+
// than a standalone running service (e.g. cli-sb, server-webpack, builder-vite).
|
|
221
|
+
const nameParts = ctx.candidateFolderName.toLowerCase().split(/[-_]/);
|
|
222
|
+
const isNamedBuildToolUnderPackages = isUnderPackages &&
|
|
223
|
+
(nameParts.includes("cli") ||
|
|
224
|
+
nameParts.includes("builder") ||
|
|
225
|
+
nameParts.includes("preset") ||
|
|
226
|
+
nameParts.includes("addon") ||
|
|
227
|
+
// "server" under packages/ is a dev-server tool, not a standalone service
|
|
228
|
+
// unless it also reads like an API (api-server, app-server)
|
|
229
|
+
(nameParts.includes("server") &&
|
|
230
|
+
!nameParts.some((p) => /^(api|app|web|gateway)$/.test(p))));
|
|
231
|
+
const isBuildTool = storybook ||
|
|
232
|
+
isNamedBuildToolUnderPackages ||
|
|
233
|
+
hasDep("webpack-dev-server") ||
|
|
234
|
+
hasDep("@storybook/builder-webpack5") ||
|
|
235
|
+
hasDep("@storybook/builder-vite") ||
|
|
236
|
+
(hasDep("webpack") && hasDep("express") && isUnderPackages) ||
|
|
237
|
+
(hasDep("vite") && hasDep("express") && isUnderPackages);
|
|
238
|
+
const docFramework = hasDep("@docusaurus/core") ||
|
|
239
|
+
hasDep("nextra") ||
|
|
240
|
+
hasFile(systemRoot, under, (r) => /(^|\/)docusaurus\.config\.(js|ts)$/.test(r));
|
|
241
|
+
const docsFolder = hasDirName(systemRoot, under, "docs") &&
|
|
242
|
+
hasFile(systemRoot, under, (r) => /\.(md|mdx)$/.test(r));
|
|
243
|
+
const hasSrcTree = hasDirName(systemRoot, under, "src");
|
|
244
|
+
const hasPythonManifest = hasFile(systemRoot, under, (r) => /^(pyproject\.toml|setup\.py|setup\.cfg)$/.test(r));
|
|
245
|
+
// A docs folder alongside a dominant source tree or Python manifest
|
|
246
|
+
// is normal project documentation, not a docs site
|
|
247
|
+
const docsSite = docFramework || (docsFolder && !hasSrcTree && !hasPythonManifest);
|
|
248
|
+
const infra = hasFile(systemRoot, under, (r) => /(^|\/)(Dockerfile|docker-compose\.ya?ml)$/.test(r.replace(/\\/g, "/"))) ||
|
|
249
|
+
// Terraform files at any depth (.tf, .tfvars) — the repo itself IS the terraform project
|
|
250
|
+
under.some((e) => !e.isDirectory && /\.tf(vars)?$/.test(e.name)) ||
|
|
251
|
+
hasDirName(systemRoot, under, "terraform") ||
|
|
252
|
+
hasDirName(systemRoot, under, "k8s") ||
|
|
253
|
+
hasDirName(systemRoot, under, "kubernetes") ||
|
|
254
|
+
hasDirName(systemRoot, under, "helm");
|
|
255
|
+
// Worker path check: only look at shallow paths (≤ 2 segments deep).
|
|
256
|
+
// Prevents false positives from content dirs like src/content/jobs/ (a blog listing)
|
|
257
|
+
// matching the same regex as a real workers/ job-processing directory.
|
|
258
|
+
const shallowPaths = under
|
|
259
|
+
.filter((e) => sysRel(systemRoot, e).replace(/\\/g, "/").split("/").length <= 2)
|
|
260
|
+
.map((e) => sysRel(systemRoot, e))
|
|
261
|
+
.join("|");
|
|
262
|
+
const workerHints = /(^|\/)(worker|workers|jobs|queues)\//i.test(shallowPaths) ||
|
|
263
|
+
hasDep("bullmq") ||
|
|
264
|
+
hasDep("bull") ||
|
|
265
|
+
hasDep("@temporalio/worker");
|
|
266
|
+
const s = emptyScores();
|
|
267
|
+
// --- Definitive / high-signal overrides ---
|
|
268
|
+
if (nest) {
|
|
269
|
+
return {
|
|
270
|
+
type: "api-service",
|
|
271
|
+
confidence: 0.92,
|
|
272
|
+
description: "NestJS (`@nestjs/core` or `nest-cli.json`) inside this system — classified as an API/backend service.",
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
// --- API scoring ---
|
|
276
|
+
if (folderBackendHint)
|
|
277
|
+
s["api-service"] += 0.38;
|
|
278
|
+
if (versionedApi)
|
|
279
|
+
s["api-service"] += 0.22;
|
|
280
|
+
if (apiStructure)
|
|
281
|
+
s["api-service"] += 0.28;
|
|
282
|
+
if (expressLike && serverishEntry)
|
|
283
|
+
s["api-service"] += 0.52;
|
|
284
|
+
else if (expressLike)
|
|
285
|
+
s["api-service"] += 0.2;
|
|
286
|
+
if (serverishEntry && !nextAppRouter && !nextPages)
|
|
287
|
+
s["api-service"] += 0.18;
|
|
288
|
+
if (serverishEntry && apiStructure)
|
|
289
|
+
s["api-service"] += 0.12;
|
|
290
|
+
/** main.ts without Next pages/app suggests server, not browser app */
|
|
291
|
+
if (hasFile(systemRoot, under, (r) => /^src\/main\.(ts|mts|cts)$/.test(r)) &&
|
|
292
|
+
!nextAppRouter &&
|
|
293
|
+
!nextPages) {
|
|
294
|
+
s["api-service"] += 0.25;
|
|
295
|
+
s["web-app"] -= 0.15;
|
|
296
|
+
}
|
|
297
|
+
// --- Web scoring (strict) ---
|
|
298
|
+
if (qualifiesWebApp) {
|
|
299
|
+
if (hasNextConfigInSystem)
|
|
300
|
+
s["web-app"] += 0.32;
|
|
301
|
+
if (nextAppRouter)
|
|
302
|
+
s["web-app"] += 0.55;
|
|
303
|
+
if (nextPages)
|
|
304
|
+
s["web-app"] += 0.48;
|
|
305
|
+
if (viteWebSurface)
|
|
306
|
+
s["web-app"] += 0.5;
|
|
307
|
+
if (hasDep("next") && !hasNextConfigInSystem && !nextAppRouter && !nextPages) {
|
|
308
|
+
s["web-app"] += 0.04;
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
else if (hasDep("next") || hasDep("react")) {
|
|
312
|
+
/** deps without in-system UI surface — do not become web-app */
|
|
313
|
+
s["web-app"] += 0;
|
|
314
|
+
if (hasDep("react") && isUnderPackages)
|
|
315
|
+
s["ui-library"] += 0.25;
|
|
316
|
+
}
|
|
317
|
+
if (folderBackendHint) {
|
|
318
|
+
/** Anti-false-positive: api-like folders need overwhelming web proof */
|
|
319
|
+
const overwhelmingWeb = nextAppRouter ||
|
|
320
|
+
nextPages ||
|
|
321
|
+
(hasNextConfigInSystem && (nextAppRouter || nextPages || hasWebRouterDirs));
|
|
322
|
+
if (!overwhelmingWeb) {
|
|
323
|
+
s["web-app"] *= 0.12;
|
|
324
|
+
s["web-app"] = Math.min(s["web-app"], 0.08);
|
|
325
|
+
}
|
|
326
|
+
else {
|
|
327
|
+
s["web-app"] *= 0.85;
|
|
328
|
+
}
|
|
329
|
+
s["api-service"] += 0.08;
|
|
330
|
+
}
|
|
331
|
+
if (apiStructure && !nextAppRouter && !nextPages) {
|
|
332
|
+
s["api-service"] += 0.15;
|
|
333
|
+
s["web-app"] *= 0.7;
|
|
334
|
+
}
|
|
335
|
+
// --- Other types ---
|
|
336
|
+
if (storybook)
|
|
337
|
+
s["ui-library"] += 0.55;
|
|
338
|
+
if (docsSite)
|
|
339
|
+
s["docs-site"] += 0.62;
|
|
340
|
+
if (infra)
|
|
341
|
+
s.infra += 0.58;
|
|
342
|
+
if (workerHints)
|
|
343
|
+
s.worker += 0.5;
|
|
344
|
+
// Electron and Capacitor apps are standalone runnable surfaces, not shared packages.
|
|
345
|
+
// Strong score: these are as definitive as Next.js for detecting a runnable app.
|
|
346
|
+
if (electronApp) {
|
|
347
|
+
s["web-app"] += 0.72;
|
|
348
|
+
s["shared-package"] -= 0.3;
|
|
349
|
+
}
|
|
350
|
+
if (capacitorApp) {
|
|
351
|
+
s["web-app"] += 0.65;
|
|
352
|
+
s["shared-package"] -= 0.25;
|
|
353
|
+
}
|
|
354
|
+
if (isUnderPackages && pkg && !qualifiesWebApp && !nest && !expressLike && !electronApp && !capacitorApp) {
|
|
355
|
+
s["shared-package"] += 0.35;
|
|
356
|
+
}
|
|
357
|
+
// Build tools under packages/ should never be api-service — they use express for
|
|
358
|
+
// their dev server but are consumed as packages, not run as standalone services.
|
|
359
|
+
if (isUnderPackages && isBuildTool && !nest) {
|
|
360
|
+
s["shared-package"] += 0.55;
|
|
361
|
+
s["api-service"] *= 0.25;
|
|
362
|
+
s["worker"] *= 0.25;
|
|
363
|
+
}
|
|
364
|
+
// Python/polyglot packages: pyproject.toml or setup.py with src/ is a
|
|
365
|
+
// library/package, not a docs site or unknown
|
|
366
|
+
if (hasPythonManifest && hasSrcTree) {
|
|
367
|
+
s["shared-package"] += 0.4;
|
|
368
|
+
s["docs-site"] *= 0.2;
|
|
369
|
+
}
|
|
370
|
+
else if (hasPythonManifest) {
|
|
371
|
+
s["shared-package"] += 0.25;
|
|
372
|
+
s["docs-site"] *= 0.4;
|
|
373
|
+
}
|
|
374
|
+
// Packages with Storybook stories files are UI component packages, even without
|
|
375
|
+
// a full Storybook dev dep (they export components consumed by a stories runner).
|
|
376
|
+
// Guard: only boost small packages (≤15 JS/TS files). Large packages (framework
|
|
377
|
+
// internals, renderers, addons) also contain stories as examples/tests but are NOT
|
|
378
|
+
// UI libraries — their file count reveals the difference.
|
|
379
|
+
const hasStoriesFiles = under.some((e) => !e.isDirectory && /\.stories\.(jsx?|tsx?|mdx)$/.test(e.name));
|
|
380
|
+
const totalCodeFiles = under.filter((e) => !e.isDirectory && /\.(tsx?|jsx?)$/.test(e.name)).length;
|
|
381
|
+
if (hasStoriesFiles && isUnderPackages && !nest && totalCodeFiles <= 15) {
|
|
382
|
+
s["ui-library"] += 0.42;
|
|
383
|
+
s["shared-package"] -= 0.1;
|
|
384
|
+
}
|
|
385
|
+
if (hasDep("react") ||
|
|
386
|
+
hasDep("vue") ||
|
|
387
|
+
hasDep("svelte")) {
|
|
388
|
+
if (!qualifiesWebApp && isUnderPackages)
|
|
389
|
+
s["ui-library"] += 0.28;
|
|
390
|
+
else if (!qualifiesWebApp && !folderBackendHint)
|
|
391
|
+
s["ui-library"] += 0.12;
|
|
392
|
+
}
|
|
393
|
+
/** packages/* default to consumable unless there is unmistakable runnable structure here */
|
|
394
|
+
if (isUnderPackages) {
|
|
395
|
+
const unmistakableRunnable = nextAppRouter ||
|
|
396
|
+
nextPages ||
|
|
397
|
+
hasNextConfigInSystem || // next.config.* alone is enough — it is a Next.js app
|
|
398
|
+
nest ||
|
|
399
|
+
(expressLike && serverishEntry) ||
|
|
400
|
+
docFramework ||
|
|
401
|
+
electronApp || // Electron desktop app (forge.config.* or electron-updater)
|
|
402
|
+
capacitorApp; // Capacitor iOS/Android app (capacitor.config.ts)
|
|
403
|
+
if (!unmistakableRunnable) {
|
|
404
|
+
s["web-app"] *= 0.4;
|
|
405
|
+
s["api-service"] *= 0.5;
|
|
406
|
+
s["docs-site"] *= 0.45;
|
|
407
|
+
s["worker"] *= 0.45;
|
|
408
|
+
s["shared-package"] += 0.2;
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
// --- Tie-break: API vs web when both positive ---
|
|
412
|
+
if (s["web-app"] > 0 && s["api-service"] > 0) {
|
|
413
|
+
if (s["api-service"] >= s["web-app"] - 0.02) {
|
|
414
|
+
if (folderBackendHint || apiStructure || versionedApi) {
|
|
415
|
+
s["web-app"] *= 0.35;
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
Object.keys(s).forEach((t) => {
|
|
420
|
+
s[t] = Math.max(0, s[t]);
|
|
421
|
+
});
|
|
422
|
+
let { type: winnerType, raw: winnerRaw } = pickWinner(s);
|
|
423
|
+
/** Never emit web-app without in-system UI/router evidence */
|
|
424
|
+
if (winnerType === "web-app" && !qualifiesWebApp) {
|
|
425
|
+
s["web-app"] = 0;
|
|
426
|
+
const again = pickWinner(s);
|
|
427
|
+
winnerType = again.type;
|
|
428
|
+
winnerRaw = again.raw;
|
|
429
|
+
}
|
|
430
|
+
if (winnerRaw <= 0.08) {
|
|
431
|
+
return {
|
|
432
|
+
type: "unknown",
|
|
433
|
+
confidence: 0.4,
|
|
434
|
+
description: "No strong in-system signature matched; Memor still lists entry points and blocks. (Root-level monorepo signals are not applied to this folder.)",
|
|
435
|
+
};
|
|
436
|
+
}
|
|
437
|
+
const confidence = scoreToConfidence(winnerRaw);
|
|
438
|
+
const descriptions = {
|
|
439
|
+
"web-app": qualifiesWebApp
|
|
440
|
+
? `Web app: Next.js/Vite-style UI evidence inside this folder (config, app/pages, or SPA entry), not package.json alone.`
|
|
441
|
+
: `Web app (unexpected — low structural match; verify manually).`,
|
|
442
|
+
"api-service": folderBackendHint
|
|
443
|
+
? `API/backend service: folder name and/or routes/controllers/versioned API layout suggest a server, not a browser app.`
|
|
444
|
+
: `API/backend service: HTTP framework, Nest-style layout, or server entries in this system.`,
|
|
445
|
+
"ui-library": `UI library or design-system style package (Storybook or UI-heavy dependency without a runnable app here).`,
|
|
446
|
+
"docs-site": `Documentation site (Docusaurus/Nextra or docs content) in this system.`,
|
|
447
|
+
"shared-package": `Shared package under packages/ without a dedicated app shell in this subtree.`,
|
|
448
|
+
infra: `Infrastructure (Docker, Terraform, K8s/Helm) detected here.`,
|
|
449
|
+
worker: `Worker or background-job style layout or dependencies.`,
|
|
450
|
+
"support-system": `Architecturally significant directory without its own package.json.`,
|
|
451
|
+
unknown: ``,
|
|
452
|
+
};
|
|
453
|
+
return {
|
|
454
|
+
type: winnerType,
|
|
455
|
+
confidence,
|
|
456
|
+
description: descriptions[winnerType] ||
|
|
457
|
+
"Heuristic classification from folder and file signals inside this system only.",
|
|
458
|
+
};
|
|
459
|
+
}
|
|
460
|
+
//# sourceMappingURL=classifySystemType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classifySystemType.js","sourceRoot":"","sources":["../../src/detectors/classifySystemType.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { MemorSystem, FlatScanEntry } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* For single-app web repos (product-web-app mode), decompose the app's
|
|
4
|
+
* internal directories into pseudo-systems that represent architectural
|
|
5
|
+
* units: route surfaces, shared UI, API/BFF layer, data/lib layer, etc.
|
|
6
|
+
*
|
|
7
|
+
* These pseudo-systems are injected into the main systems array so that
|
|
8
|
+
* all downstream analysis (zones, flows, couplings, impact) works.
|
|
9
|
+
*/
|
|
10
|
+
export type AppUnit = {
|
|
11
|
+
name: string;
|
|
12
|
+
unitType: AppUnitType;
|
|
13
|
+
description: string;
|
|
14
|
+
rootPath: string;
|
|
15
|
+
fileCount: number;
|
|
16
|
+
routeFiles: string[];
|
|
17
|
+
};
|
|
18
|
+
export type AppUnitType = "route-surface" | "api-layer" | "shared-ui" | "data-layer" | "state-layer" | "integration-layer" | "support-layer";
|
|
19
|
+
export declare function detectAppInternalUnits(mainSystem: MemorSystem, repoRoot: string, flat: FlatScanEntry[]): MemorSystem[];
|
|
20
|
+
//# sourceMappingURL=detectAppInternalUnits.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detectAppInternalUnits.d.ts","sourceRoot":"","sources":["../../src/detectors/detectAppInternalUnits.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAc,aAAa,EAAE,MAAM,UAAU,CAAC;AAGvE;;;;;;;GAOG;AAEH,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,WAAW,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,WAAW,GACnB,eAAe,GACf,WAAW,GACX,WAAW,GACX,YAAY,GACZ,aAAa,GACb,mBAAmB,GACnB,eAAe,CAAC;AAOpB,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,WAAW,EACvB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,aAAa,EAAE,GACpB,WAAW,EAAE,CAyDf"}
|