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,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* generateAMForRepo — full pipeline: L1→L2→L3→L4→LLM → writes architecture-map.json
|
|
4
|
+
* Used by the CLI command and the /api/generate-am server endpoint.
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.generateAMForRepo = generateAMForRepo;
|
|
41
|
+
const path = __importStar(require("path"));
|
|
42
|
+
const fs = __importStar(require("fs/promises"));
|
|
43
|
+
const child_process_1 = require("child_process");
|
|
44
|
+
const IntentionalStructure_1 = require("../IntentionalStructure");
|
|
45
|
+
const buildCodebaseGraph_1 = require("../graph/buildCodebaseGraph");
|
|
46
|
+
const RuntimeInference_1 = require("../RuntimeInference");
|
|
47
|
+
const SystemSynthesis_1 = require("../SystemSynthesis");
|
|
48
|
+
const generateAM_1 = require("./generateAM");
|
|
49
|
+
const enrichAMEdges_1 = require("./enrichAMEdges");
|
|
50
|
+
const selectStrategicFiles_1 = require("./selectStrategicFiles");
|
|
51
|
+
async function generateAMForRepo(repoRoot, apiKey, onProgress) {
|
|
52
|
+
const key = apiKey ?? process.env.ANTHROPIC_API_KEY;
|
|
53
|
+
if (!key)
|
|
54
|
+
throw new Error("ANTHROPIC_API_KEY not set");
|
|
55
|
+
const repoName = path.basename(repoRoot);
|
|
56
|
+
const log = (s) => onProgress?.(s);
|
|
57
|
+
// Read package.json for human-written description if available
|
|
58
|
+
let repoDescription;
|
|
59
|
+
try {
|
|
60
|
+
const pkg = JSON.parse(await fs.readFile(path.join(repoRoot, "package.json"), "utf8"));
|
|
61
|
+
const parts = [];
|
|
62
|
+
if (pkg.description)
|
|
63
|
+
parts.push(pkg.description);
|
|
64
|
+
if (pkg.keywords?.length)
|
|
65
|
+
parts.push(`Keywords: ${pkg.keywords.slice(0, 8).join(", ")}`);
|
|
66
|
+
if (parts.length)
|
|
67
|
+
repoDescription = parts.join(". ");
|
|
68
|
+
}
|
|
69
|
+
catch { /* no package.json or not parseable — fine */ }
|
|
70
|
+
log("L1 IntentionalStructure…");
|
|
71
|
+
const l1 = await (0, IntentionalStructure_1.detectIntentionalStructure)(repoRoot);
|
|
72
|
+
log("L2 buildCodebaseGraph…");
|
|
73
|
+
const layer1Paths = l1.systems.filter((s) => s.path !== null).map((s) => s.path);
|
|
74
|
+
const l2 = await (0, buildCodebaseGraph_1.buildCodebaseGraph)(repoRoot, [], layer1Paths);
|
|
75
|
+
log("L3 RuntimeInference…");
|
|
76
|
+
const l3 = await (0, RuntimeInference_1.detectRuntimeInference)(repoRoot, l2, l1);
|
|
77
|
+
log("L4 mergeLayerOutputs…");
|
|
78
|
+
const enriched = (0, SystemSynthesis_1.mergeLayerOutputs)(l1, l2, l3, { repoName });
|
|
79
|
+
// Emit deterministic intel before handing off to LLM
|
|
80
|
+
try {
|
|
81
|
+
const codeNodes = enriched.nodes.filter((n) => n.kind === "cluster" || n.kind === "package");
|
|
82
|
+
const hotspots = [...codeNodes]
|
|
83
|
+
.sort((a, b) => b.inDegree - a.inDegree)
|
|
84
|
+
.slice(0, 8)
|
|
85
|
+
.map((n) => ({ id: n.id, inDegree: n.inDegree }));
|
|
86
|
+
const routes = codeNodes
|
|
87
|
+
.flatMap((n) => n.routes)
|
|
88
|
+
.filter(Boolean)
|
|
89
|
+
.slice(0, 30);
|
|
90
|
+
const clusters = codeNodes.map((n) => {
|
|
91
|
+
let layer = "unknown";
|
|
92
|
+
if (n.routes.length > 0)
|
|
93
|
+
layer = "api";
|
|
94
|
+
else if (n.ormUses.length > 0)
|
|
95
|
+
layer = "data-client";
|
|
96
|
+
else if (n.inDegree > 5)
|
|
97
|
+
layer = "service";
|
|
98
|
+
return { id: n.id, layer, inDegree: n.inDegree };
|
|
99
|
+
});
|
|
100
|
+
const intel = {
|
|
101
|
+
techStack: enriched.meta.techStack ?? [],
|
|
102
|
+
dataModels: (enriched.meta.dataModels ?? []).slice(0, 12),
|
|
103
|
+
totalFiles: enriched.meta.totalFiles,
|
|
104
|
+
hotspots,
|
|
105
|
+
routes,
|
|
106
|
+
clusters,
|
|
107
|
+
};
|
|
108
|
+
log(`am-intel:${JSON.stringify(intel)}`);
|
|
109
|
+
}
|
|
110
|
+
catch { /* intel extraction is best-effort */ }
|
|
111
|
+
log("Generating Architecture Map via LLM…");
|
|
112
|
+
const am = await (0, generateAM_1.generateAM)(enriched, { repoRoot, repoName, repoDescription, apiKey: key });
|
|
113
|
+
log("Enriching edges deterministically…");
|
|
114
|
+
const manifests = await (0, selectStrategicFiles_1.readWorkspaceManifests)(repoRoot);
|
|
115
|
+
const enrichedAM = (0, enrichAMEdges_1.enrichAMEdges)(am, repoRoot, manifests);
|
|
116
|
+
let generatedAtCommit = "";
|
|
117
|
+
try {
|
|
118
|
+
generatedAtCommit = (0, child_process_1.execSync)(`git -C "${repoRoot}" rev-parse HEAD`, { encoding: "utf8" }).trim();
|
|
119
|
+
}
|
|
120
|
+
catch { /* not a git repo — fine */ }
|
|
121
|
+
const enrichedAMWithMeta = {
|
|
122
|
+
...enrichedAM,
|
|
123
|
+
_meta: { generatedAtCommit, generatedAt: new Date().toISOString() },
|
|
124
|
+
};
|
|
125
|
+
const memorDir = path.join(repoRoot, ".memor");
|
|
126
|
+
await fs.mkdir(memorDir, { recursive: true });
|
|
127
|
+
await fs.writeFile(path.join(memorDir, "architecture-map.json"), JSON.stringify(enrichedAMWithMeta, null, 2), "utf8");
|
|
128
|
+
log("Done.");
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=generateAMForRepo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateAMForRepo.js","sourceRoot":"","sources":["../../src/amGeneration/generateAMForRepo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* generateFlows — LLM narration layer on top of deterministic flow graphs.
|
|
3
|
+
*
|
|
4
|
+
* Input: FlowCandidate[] from buildFlowGraph (real traced call chains).
|
|
5
|
+
* Task: LLM only assigns human-readable names and action sentences.
|
|
6
|
+
* No discovery, no guessing — pure narration.
|
|
7
|
+
*
|
|
8
|
+
* Also keeps attachEvidenceFiles for backwards compat with stored flows.
|
|
9
|
+
*/
|
|
10
|
+
import type { RouteMap } from "../analysis/extractRouteMap";
|
|
11
|
+
import type { FlowCandidate } from "./buildFlowGraph";
|
|
12
|
+
export type FlowStep = {
|
|
13
|
+
system_id: string;
|
|
14
|
+
action: string;
|
|
15
|
+
is_external: boolean;
|
|
16
|
+
evidenceFiles?: string[];
|
|
17
|
+
};
|
|
18
|
+
export type GeneratedFlow = {
|
|
19
|
+
id: string;
|
|
20
|
+
name: string;
|
|
21
|
+
trigger: string;
|
|
22
|
+
steps: FlowStep[];
|
|
23
|
+
derivedFrom: "evidence";
|
|
24
|
+
};
|
|
25
|
+
export declare function generateFlows(candidatesOrRouteMap: FlowCandidate[] | RouteMap, systemIds: string[], externalIds: string[], apiKey: string, repoRoot?: string): Promise<GeneratedFlow[]>;
|
|
26
|
+
export declare function attachEvidenceFiles(flows: GeneratedFlow[], routeMap: RouteMap, repoRoot?: string): GeneratedFlow[];
|
|
27
|
+
//# sourceMappingURL=generateFlows.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateFlows.d.ts","sourceRoot":"","sources":["../../src/amGeneration/generateFlows.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,MAAM,QAAQ,GAAG;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,WAAW,EAAE,UAAU,CAAC;CACzB,CAAC;AA+BF,wBAAsB,aAAa,CACjC,oBAAoB,EAAE,aAAa,EAAE,GAAG,QAAQ,EAChD,SAAS,EAAE,MAAM,EAAE,EACnB,WAAW,EAAE,MAAM,EAAE,EACrB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,aAAa,EAAE,CAAC,CAiF1B;AAgHD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,aAAa,EAAE,EACtB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,CAAC,EAAE,MAAM,GAChB,aAAa,EAAE,CAoDjB"}
|
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* generateFlows — LLM narration layer on top of deterministic flow graphs.
|
|
4
|
+
*
|
|
5
|
+
* Input: FlowCandidate[] from buildFlowGraph (real traced call chains).
|
|
6
|
+
* Task: LLM only assigns human-readable names and action sentences.
|
|
7
|
+
* No discovery, no guessing — pure narration.
|
|
8
|
+
*
|
|
9
|
+
* Also keeps attachEvidenceFiles for backwards compat with stored flows.
|
|
10
|
+
*/
|
|
11
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
12
|
+
if (k2 === undefined) k2 = k;
|
|
13
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
14
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
15
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
16
|
+
}
|
|
17
|
+
Object.defineProperty(o, k2, desc);
|
|
18
|
+
}) : (function(o, m, k, k2) {
|
|
19
|
+
if (k2 === undefined) k2 = k;
|
|
20
|
+
o[k2] = m[k];
|
|
21
|
+
}));
|
|
22
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
23
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
24
|
+
}) : function(o, v) {
|
|
25
|
+
o["default"] = v;
|
|
26
|
+
});
|
|
27
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
28
|
+
var ownKeys = function(o) {
|
|
29
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
30
|
+
var ar = [];
|
|
31
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
32
|
+
return ar;
|
|
33
|
+
};
|
|
34
|
+
return ownKeys(o);
|
|
35
|
+
};
|
|
36
|
+
return function (mod) {
|
|
37
|
+
if (mod && mod.__esModule) return mod;
|
|
38
|
+
var result = {};
|
|
39
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
40
|
+
__setModuleDefault(result, mod);
|
|
41
|
+
return result;
|
|
42
|
+
};
|
|
43
|
+
})();
|
|
44
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
+
exports.generateFlows = generateFlows;
|
|
46
|
+
exports.attachEvidenceFiles = attachEvidenceFiles;
|
|
47
|
+
const anthropic_1 = require("../anthropic");
|
|
48
|
+
const path = __importStar(require("path"));
|
|
49
|
+
const fs = __importStar(require("fs"));
|
|
50
|
+
const extractRouteMap_1 = require("../analysis/extractRouteMap");
|
|
51
|
+
// ── Serialise FlowCandidate[] into a compact LLM prompt block ────────────────
|
|
52
|
+
function serializeFlowCandidates(candidates, systemIds, externalIds) {
|
|
53
|
+
const allSystemIds = [...systemIds, ...externalIds];
|
|
54
|
+
const lines = [
|
|
55
|
+
`VALID SYSTEM IDs (use these exactly in system_id fields):`,
|
|
56
|
+
allSystemIds.join(", "),
|
|
57
|
+
"",
|
|
58
|
+
`TRACED FLOWS (${candidates.length} entry points — real call chains from static analysis):`,
|
|
59
|
+
];
|
|
60
|
+
for (const c of candidates) {
|
|
61
|
+
lines.push(`\nFLOW: ${c.nameSeed} [${c.framework}] entry: ${c.entryFile}`);
|
|
62
|
+
for (let i = 0; i < c.steps.length; i++) {
|
|
63
|
+
const s = c.steps[i];
|
|
64
|
+
const sysHint = s.systemId ? ` [system: ${s.systemId}]` : " [system: ???]";
|
|
65
|
+
const extFlag = s.isExternal ? " ← EXTERNAL STEP" : "";
|
|
66
|
+
const db = s.dbAccess.length ? ` DB: ${s.dbAccess.slice(0, 3).join(", ")}` : "";
|
|
67
|
+
const ext = s.externalCalls.length ? ` sdk: ${s.externalCalls.slice(0, 3).join(", ")}` : "";
|
|
68
|
+
const ret = s.returnType && s.returnType !== "void" ? ` → ${s.returnType}` : "";
|
|
69
|
+
lines.push(` ${i + 1}. ${s.fn}() in ${s.file}${sysHint}${ret}${db}${ext}${extFlag}`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return lines.join("\n");
|
|
73
|
+
}
|
|
74
|
+
// ── Main export ───────────────────────────────────────────────────────────────
|
|
75
|
+
async function generateFlows(candidatesOrRouteMap, systemIds, externalIds, apiKey, repoRoot) {
|
|
76
|
+
const client = (0, anthropic_1.createAnthropicClient)(apiKey);
|
|
77
|
+
// Support both new FlowCandidate[] path and legacy RouteMap path
|
|
78
|
+
const isLegacy = !Array.isArray(candidatesOrRouteMap);
|
|
79
|
+
const inputBlock = isLegacy
|
|
80
|
+
? (0, extractRouteMap_1.serializeRouteMap)(candidatesOrRouteMap)
|
|
81
|
+
: serializeFlowCandidates(candidatesOrRouteMap, systemIds, externalIds);
|
|
82
|
+
const systemList = [...systemIds, ...externalIds].join(", ");
|
|
83
|
+
const prompt = isLegacy
|
|
84
|
+
? `You are analyzing a codebase. Below is a deterministic route map from static analysis — real file paths, real function names, real DB calls.
|
|
85
|
+
|
|
86
|
+
SYSTEM IDs available (use these exactly in system_id fields):
|
|
87
|
+
${systemList}
|
|
88
|
+
|
|
89
|
+
${inputBlock}
|
|
90
|
+
|
|
91
|
+
Generate 8-12 end-to-end user flows. Include:
|
|
92
|
+
- Read flows (GET) AND write flows (POST, PUT, DELETE, PATCH) — write paths are as important as reads
|
|
93
|
+
- Background job flows for any CRON, QUEUE, INTERVAL, or WORKER entries — these are write paths too
|
|
94
|
+
Each flow must trace from a real page, API route, or background job through to data.
|
|
95
|
+
Use only system_id values from the list above. Set is_external: true only for external service steps.`
|
|
96
|
+
: `You are given deterministically-traced call chains from a real codebase.
|
|
97
|
+
Each flow already has the exact functions called and files involved — do NOT invent steps.
|
|
98
|
+
|
|
99
|
+
Your ONLY job:
|
|
100
|
+
1. Give each flow a human-readable "name" (3-5 words, e.g. "User Login", "Create Order")
|
|
101
|
+
2. Write a one-sentence "trigger" describing what user action starts this flow
|
|
102
|
+
3. For each step, write a clear "action" sentence naming the function and what it does
|
|
103
|
+
|
|
104
|
+
${inputBlock}
|
|
105
|
+
|
|
106
|
+
Rules:
|
|
107
|
+
- system_id MUST come from the VALID SYSTEM IDs list above — pick the closest match to the [system: hint]
|
|
108
|
+
- is_external is ALREADY DETERMINED — steps marked "← EXTERNAL STEP" get is_external: true, all others get is_external: false. Do not change this.
|
|
109
|
+
- Keep action sentences concise but specific — include function names
|
|
110
|
+
- Do not add or remove steps`;
|
|
111
|
+
const msg = await client.messages.create({
|
|
112
|
+
model: "claude-haiku-4-5-20251001",
|
|
113
|
+
max_tokens: 4096,
|
|
114
|
+
messages: [{
|
|
115
|
+
role: "user",
|
|
116
|
+
content: `${prompt}
|
|
117
|
+
|
|
118
|
+
Respond with JSON only — no markdown, no explanation:
|
|
119
|
+
{
|
|
120
|
+
"flows": [
|
|
121
|
+
{
|
|
122
|
+
"id": "kebab-case-id",
|
|
123
|
+
"name": "Human readable name",
|
|
124
|
+
"trigger": "One sentence trigger description",
|
|
125
|
+
"steps": [
|
|
126
|
+
{
|
|
127
|
+
"system_id": "system-id",
|
|
128
|
+
"action": "Specific description of what this function does",
|
|
129
|
+
"is_external": false,
|
|
130
|
+
"evidenceFile": "relative/path/to/file.ts"
|
|
131
|
+
}
|
|
132
|
+
]
|
|
133
|
+
}
|
|
134
|
+
]
|
|
135
|
+
}`,
|
|
136
|
+
}],
|
|
137
|
+
});
|
|
138
|
+
const raw = msg.content[0].type === "text" ? msg.content[0].text.trim() : "{}";
|
|
139
|
+
const clean = raw.replace(/^```json?\s*/i, "").replace(/```\s*$/, "").trim();
|
|
140
|
+
const parsed = JSON.parse(clean);
|
|
141
|
+
const flows = (parsed.flows ?? []).map(f => ({ ...f, derivedFrom: "evidence" }));
|
|
142
|
+
// Attach evidence files deterministically
|
|
143
|
+
if (!isLegacy && Array.isArray(candidatesOrRouteMap)) {
|
|
144
|
+
return attachEvidenceFromCandidates(flows, candidatesOrRouteMap);
|
|
145
|
+
}
|
|
146
|
+
// Legacy: use route-map based evidence attachment
|
|
147
|
+
const routeMap = candidatesOrRouteMap;
|
|
148
|
+
return attachEvidenceFiles(flows, routeMap, repoRoot);
|
|
149
|
+
}
|
|
150
|
+
// ── Evidence file attachment (new path — from FlowCandidate steps) ────────────
|
|
151
|
+
function attachEvidenceFromCandidates(flows, candidates) {
|
|
152
|
+
// Match flows to candidates by position (LLM preserves order)
|
|
153
|
+
return flows.map((flow, fi) => {
|
|
154
|
+
const candidate = candidates[fi];
|
|
155
|
+
if (!candidate)
|
|
156
|
+
return flow;
|
|
157
|
+
return {
|
|
158
|
+
...flow,
|
|
159
|
+
steps: flow.steps.map((step, i) => {
|
|
160
|
+
const cs = candidate.steps[i];
|
|
161
|
+
if (!cs)
|
|
162
|
+
return step;
|
|
163
|
+
// Lock is_external from deterministic analysis, override LLM value
|
|
164
|
+
const lockedStep = { ...step, is_external: cs.isExternal };
|
|
165
|
+
const evidenceFiles = [cs.file].filter(Boolean);
|
|
166
|
+
return evidenceFiles.length ? { ...lockedStep, evidenceFiles } : lockedStep;
|
|
167
|
+
}),
|
|
168
|
+
};
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
// ── Deterministic file attachment ─────────────────────────────────────────────
|
|
172
|
+
const SKIP_SEGMENTS = new Set([
|
|
173
|
+
"app", "pages", "api", "route", "page", "layout", "src", "lib",
|
|
174
|
+
"service", "client", "ui", "portal", "interface", "index",
|
|
175
|
+
]);
|
|
176
|
+
const SKIP_ID_PARTS = new Set([
|
|
177
|
+
"api", "service", "client", "ui", "portal", "interface", "external", "system", "layer", "core",
|
|
178
|
+
]);
|
|
179
|
+
function indexFilePaths(filePaths) {
|
|
180
|
+
const index = new Map();
|
|
181
|
+
for (const filePath of filePaths) {
|
|
182
|
+
const segments = filePath
|
|
183
|
+
.replace(/\.(ts|tsx|js|jsx)$/, "")
|
|
184
|
+
.replace(/\\/g, "/")
|
|
185
|
+
.split("/")
|
|
186
|
+
.filter(s => s && !SKIP_SEGMENTS.has(s) && !s.startsWith("[[") && !s.startsWith("[") && !s.startsWith("("));
|
|
187
|
+
for (const seg of segments) {
|
|
188
|
+
const key = seg.toLowerCase();
|
|
189
|
+
if (!index.has(key))
|
|
190
|
+
index.set(key, []);
|
|
191
|
+
index.get(key).push(filePath);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
return index;
|
|
195
|
+
}
|
|
196
|
+
// Build route-path lookup: normalized path → file
|
|
197
|
+
function buildRoutePathIndex(routeMap) {
|
|
198
|
+
const index = new Map();
|
|
199
|
+
for (const r of routeMap.apiRoutes)
|
|
200
|
+
index.set(r.routePath, r.filePath);
|
|
201
|
+
for (const p of routeMap.pages)
|
|
202
|
+
index.set(p.routePath, p.filePath);
|
|
203
|
+
return index;
|
|
204
|
+
}
|
|
205
|
+
// Scan packages/ and apps/ dirs for .ts/.tsx entry points (monorepo strategy 3)
|
|
206
|
+
function buildPackageFileIndex(repoRoot) {
|
|
207
|
+
const collected = [];
|
|
208
|
+
for (const parentName of ["packages", "apps", "libs", "modules"]) {
|
|
209
|
+
const parentDir = path.join(repoRoot, parentName);
|
|
210
|
+
if (!fs.existsSync(parentDir))
|
|
211
|
+
continue;
|
|
212
|
+
let entries;
|
|
213
|
+
try {
|
|
214
|
+
entries = fs.readdirSync(parentDir, { withFileTypes: true });
|
|
215
|
+
}
|
|
216
|
+
catch {
|
|
217
|
+
continue;
|
|
218
|
+
}
|
|
219
|
+
for (const e of entries) {
|
|
220
|
+
if (!e.isDirectory())
|
|
221
|
+
continue;
|
|
222
|
+
const pkgDir = path.join(parentDir, e.name);
|
|
223
|
+
// Look for index.ts/tsx or main entry files in the package root
|
|
224
|
+
for (const candidate of ["index.ts", "index.tsx", "src/index.ts", "src/index.tsx"]) {
|
|
225
|
+
const abs = path.join(pkgDir, candidate);
|
|
226
|
+
if (fs.existsSync(abs)) {
|
|
227
|
+
collected.push(path.relative(repoRoot, abs).replace(/\\/g, "/"));
|
|
228
|
+
break;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
// Also index all .ts/.tsx files one level deep in src/ or lib/
|
|
232
|
+
for (const subDir of ["src", "lib", "."]) {
|
|
233
|
+
const srcDir = path.join(pkgDir, subDir);
|
|
234
|
+
if (!fs.existsSync(srcDir))
|
|
235
|
+
continue;
|
|
236
|
+
let srcEntries;
|
|
237
|
+
try {
|
|
238
|
+
srcEntries = fs.readdirSync(srcDir, { withFileTypes: true });
|
|
239
|
+
}
|
|
240
|
+
catch {
|
|
241
|
+
continue;
|
|
242
|
+
}
|
|
243
|
+
for (const sf of srcEntries) {
|
|
244
|
+
if (sf.isFile() && /\.(ts|tsx)$/.test(sf.name) && !sf.name.includes(".test.") && !sf.name.includes(".spec.")) {
|
|
245
|
+
collected.push(path.relative(repoRoot, path.join(srcDir, sf.name)).replace(/\\/g, "/"));
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
return indexFilePaths(collected);
|
|
252
|
+
}
|
|
253
|
+
// Extract a URL path from free-text action like "POST /api/admin/blocks/create returns block"
|
|
254
|
+
function extractRoutePath(action) {
|
|
255
|
+
const m = action.match(/\b(GET|POST|PUT|DELETE|PATCH)\s+(\/[^\s,)]+)/i);
|
|
256
|
+
if (m)
|
|
257
|
+
return m[2].split("?")[0];
|
|
258
|
+
const urlM = action.match(/(\/api\/[^\s,)]+|\/v2\/[^\s,)]+)/);
|
|
259
|
+
if (urlM)
|
|
260
|
+
return urlM[1].split("?")[0];
|
|
261
|
+
return null;
|
|
262
|
+
}
|
|
263
|
+
// Collect all matching files from an index for a token (deduped)
|
|
264
|
+
function allFromIndex(index, token) {
|
|
265
|
+
return index.get(token.toLowerCase()) ?? [];
|
|
266
|
+
}
|
|
267
|
+
const MAX_EVIDENCE_FILES = 4;
|
|
268
|
+
function attachEvidenceFiles(flows, routeMap, repoRoot) {
|
|
269
|
+
const routePathIndex = buildRoutePathIndex(routeMap);
|
|
270
|
+
const routeFileIndex = indexFilePaths([
|
|
271
|
+
...routeMap.apiRoutes.map(r => r.filePath),
|
|
272
|
+
...routeMap.pages.map(p => p.filePath),
|
|
273
|
+
]);
|
|
274
|
+
const pkgFileIndex = repoRoot ? buildPackageFileIndex(repoRoot) : new Map();
|
|
275
|
+
const fileExists = repoRoot
|
|
276
|
+
? (f) => fs.existsSync(path.join(repoRoot, f))
|
|
277
|
+
: (_f) => true;
|
|
278
|
+
return flows.map(flow => ({
|
|
279
|
+
...flow,
|
|
280
|
+
steps: flow.steps.map(step => {
|
|
281
|
+
// Only add paths that actually exist on disk
|
|
282
|
+
const seen = new Set();
|
|
283
|
+
const add = (f) => { if (f && !seen.has(f) && fileExists(f))
|
|
284
|
+
seen.add(f); };
|
|
285
|
+
if (step.evidenceFile)
|
|
286
|
+
add(step.evidenceFile);
|
|
287
|
+
(step.evidenceFiles ?? []).forEach(add);
|
|
288
|
+
// Strategy 1: parse route URL from action text → all prefix-matching route files
|
|
289
|
+
const routePath = extractRoutePath(step.action);
|
|
290
|
+
if (routePath) {
|
|
291
|
+
const exact = routePathIndex.get(routePath);
|
|
292
|
+
if (exact)
|
|
293
|
+
add(exact);
|
|
294
|
+
for (const [rp, fp] of routePathIndex) {
|
|
295
|
+
if (seen.size >= MAX_EVIDENCE_FILES)
|
|
296
|
+
break;
|
|
297
|
+
if ((rp.startsWith(routePath) || routePath.startsWith(rp)) && rp !== routePath)
|
|
298
|
+
add(fp);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
const parts = step.system_id.split("-").filter(p => !SKIP_ID_PARTS.has(p));
|
|
302
|
+
// Strategy 2: tokenize system_id → all matching route/page files
|
|
303
|
+
for (const part of parts) {
|
|
304
|
+
if (seen.size >= MAX_EVIDENCE_FILES)
|
|
305
|
+
break;
|
|
306
|
+
allFromIndex(routeFileIndex, part).forEach(add);
|
|
307
|
+
}
|
|
308
|
+
// Strategy 3: tokenize system_id → all matching package files (monorepo)
|
|
309
|
+
for (const part of parts) {
|
|
310
|
+
if (seen.size >= MAX_EVIDENCE_FILES)
|
|
311
|
+
break;
|
|
312
|
+
allFromIndex(pkgFileIndex, part).forEach(add);
|
|
313
|
+
}
|
|
314
|
+
const evidenceFiles = [...seen].slice(0, MAX_EVIDENCE_FILES);
|
|
315
|
+
const { evidenceFile: _drop, evidenceFiles: _drop2, ...rest } = step;
|
|
316
|
+
return evidenceFiles.length > 0 ? { ...rest, evidenceFiles } : rest;
|
|
317
|
+
}),
|
|
318
|
+
}));
|
|
319
|
+
}
|
|
320
|
+
//# sourceMappingURL=generateFlows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateFlows.js","sourceRoot":"","sources":["../../src/amGeneration/generateFlows.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDH,sCAuFC;AAgHD,kDAwDC;AAlTD,4CAAqD;AACrD,2CAA6B;AAC7B,uCAAyB;AAEzB,iEAAgE;AAkBhE,gFAAgF;AAEhF,SAAS,uBAAuB,CAAC,UAA2B,EAAE,SAAmB,EAAE,WAAqB;IACtG,MAAM,YAAY,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,WAAW,CAAC,CAAC;IACpD,MAAM,KAAK,GAAa;QACtB,2DAA2D;QAC3D,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;QACvB,EAAE;QACF,iBAAiB,UAAU,CAAC,MAAM,yDAAyD;KAC5F,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAC,SAAS,aAAa,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;QAC7E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACrB,MAAM,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC;YAC3E,MAAM,OAAO,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjF,MAAM,GAAG,GAAG,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7F,MAAM,GAAG,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjF,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,GAAG,OAAO,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,OAAO,EAAE,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,iFAAiF;AAE1E,KAAK,UAAU,aAAa,CACjC,oBAAgD,EAChD,SAAmB,EACnB,WAAqB,EACrB,MAAc,EACd,QAAiB;IAEjB,MAAM,MAAM,GAAG,IAAA,iCAAqB,EAAC,MAAM,CAAC,CAAC;IAE7C,iEAAiE;IACjE,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,QAAQ;QACzB,CAAC,CAAC,IAAA,mCAAiB,EAAC,oBAAgC,CAAC;QACrD,CAAC,CAAC,uBAAuB,CAAC,oBAAuC,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAE7F,MAAM,UAAU,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE7D,MAAM,MAAM,GAAG,QAAQ;QACrB,CAAC,CAAC;;;EAGJ,UAAU;;EAEV,UAAU;;;;;;sGAM0F;QAClG,CAAC,CAAC;;;;;;;;EAQJ,UAAU;;;;;;6BAMiB,CAAC;IAE5B,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QACvC,KAAK,EAAE,2BAA2B;QAClC,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,CAAC;gBACT,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,GAAG,MAAM;;;;;;;;;;;;;;;;;;;EAmBtB;aACG,CAAC;KACH,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/E,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7E,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAA+B,CAAC;IAC/D,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,WAAW,EAAE,UAAmB,EAAE,CAAC,CAAC,CAAC;IAE1F,0CAA0C;IAC1C,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC;QACrD,OAAO,4BAA4B,CAAC,KAAK,EAAE,oBAAuC,CAAC,CAAC;IACtF,CAAC;IAED,kDAAkD;IAClD,MAAM,QAAQ,GAAG,oBAAgC,CAAC;IAClD,OAAO,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACxD,CAAC;AAED,iFAAiF;AAEjF,SAAS,4BAA4B,CAAC,KAAsB,EAAE,UAA2B;IACvF,8DAA8D;IAC9D,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE;QAC5B,MAAM,SAAS,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC;QAE5B,OAAO;YACL,GAAG,IAAI;YACP,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;gBAChC,MAAM,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC9B,IAAI,CAAC,EAAE;oBAAE,OAAO,IAAI,CAAC;gBACrB,mEAAmE;gBACnE,MAAM,UAAU,GAAG,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC;gBAC3D,MAAM,aAAa,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAChD,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;YAC9E,CAAC,CAAC;SACH,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,iFAAiF;AAEjF,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC5B,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK;IAC9D,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO;CAC1D,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC5B,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM;CAC/F,CAAC,CAAC;AAEH,SAAS,cAAc,CAAC,SAAmB;IACzC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC1C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,QAAQ;aACtB,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC;aACjC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;aACnB,KAAK,CAAC,GAAG,CAAC;aACV,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9G,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACxC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,kDAAkD;AAClD,SAAS,mBAAmB,CAAC,QAAkB;IAC7C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,SAAS;QAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;IACvE,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,KAAK;QAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;IACxE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,gFAAgF;AAChF,SAAS,qBAAqB,CAAC,QAAgB;IAC7C,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,KAAK,MAAM,UAAU,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC;QACjE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAClD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,SAAS;QACxC,IAAI,OAAoB,CAAC;QACzB,IAAI,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,SAAS;QAAC,CAAC;QACzF,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE;gBAAE,SAAS;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YAC5C,gEAAgE;YAChE,KAAK,MAAM,SAAS,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,CAAC,EAAE,CAAC;gBACnF,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBACzC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACvB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;oBACjE,MAAM;gBACR,CAAC;YACH,CAAC;YACD,+DAA+D;YAC/D,KAAK,MAAM,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;gBACzC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBACzC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;oBAAE,SAAS;gBACrC,IAAI,UAAuB,CAAC;gBAC5B,IAAI,CAAC;oBAAC,UAAU,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC;oBAAC,SAAS;gBAAC,CAAC;gBACzF,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;oBAC5B,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAC7G,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;oBAC1F,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,cAAc,CAAC,SAAS,CAAC,CAAC;AACnC,CAAC;AAED,8FAA8F;AAC9F,SAAS,gBAAgB,CAAC,MAAc;IACtC,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACxE,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAC9D,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,iEAAiE;AACjE,SAAS,YAAY,CAAC,KAA4B,EAAE,KAAa;IAC/D,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;AAC9C,CAAC;AAED,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAE7B,SAAgB,mBAAmB,CACjC,KAAsB,EACtB,QAAkB,EAClB,QAAiB;IAEjB,MAAM,cAAc,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACrD,MAAM,cAAc,GAAG,cAAc,CAAC;QACpC,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC1C,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;KACvC,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAoB,CAAC;IAE9F,MAAM,UAAU,GAAG,QAAQ;QACzB,CAAC,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,CAAC;IAEzB,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxB,GAAG,IAAI;QACP,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC3B,6CAA6C;YAC7C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;YAC/B,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;gBAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAEpF,IAAK,IAAY,CAAC,YAAY;gBAAE,GAAG,CAAE,IAAY,CAAC,YAAY,CAAC,CAAC;YAChE,CAAE,IAAY,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAEjD,iFAAiF;YACjF,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAChD,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC5C,IAAI,KAAK;oBAAE,GAAG,CAAC,KAAK,CAAC,CAAC;gBACtB,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,cAAc,EAAE,CAAC;oBACtC,IAAI,IAAI,CAAC,IAAI,IAAI,kBAAkB;wBAAE,MAAM;oBAC3C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,SAAS;wBAAE,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC1F,CAAC;YACH,CAAC;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAE3E,iEAAiE;YACjE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,IAAI,CAAC,IAAI,IAAI,kBAAkB;oBAAE,MAAM;gBAC3C,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAClD,CAAC;YAED,yEAAyE;YACzE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,IAAI,CAAC,IAAI,IAAI,kBAAkB;oBAAE,MAAM;gBAC3C,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAChD,CAAC;YAED,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;YAC7D,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,IAAW,CAAC;YAC5E,OAAO,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACtE,CAAC,CAAC;KACH,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* promptBuilder — builds the LLM prompt for AM generation.
|
|
3
|
+
*
|
|
4
|
+
* Key upgrades over v1:
|
|
5
|
+
* - File tree in context: LLM sees every path, even files it can't read
|
|
6
|
+
* - layer field: forces explicit "user-facing | api | service | data-client" per system
|
|
7
|
+
* - functions field: real exported function signatures
|
|
8
|
+
* - observations field: architectural notes and gotchas
|
|
9
|
+
* - db_tables field: actual table/column schema for database externals
|
|
10
|
+
*/
|
|
11
|
+
import type { StrategicFile, WorkspaceManifest } from "./selectStrategicFiles";
|
|
12
|
+
import type { EnrichedGraph } from "../SystemSynthesis/types";
|
|
13
|
+
import type { AMRepoType } from "../amSections";
|
|
14
|
+
export type PromptContext = {
|
|
15
|
+
strategicFiles: StrategicFile[];
|
|
16
|
+
enriched: EnrichedGraph;
|
|
17
|
+
repoName: string;
|
|
18
|
+
repoDescription?: string;
|
|
19
|
+
repoType: AMRepoType;
|
|
20
|
+
fileTree?: string;
|
|
21
|
+
workspaceManifests?: WorkspaceManifest[];
|
|
22
|
+
};
|
|
23
|
+
export declare function buildAMPrompt(ctx: PromptContext): string;
|
|
24
|
+
//# sourceMappingURL=promptBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promptBuilder.d.ts","sourceRoot":"","sources":["../../src/amGeneration/promptBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,MAAM,aAAa,GAAG;IAC1B,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,QAAQ,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,UAAU,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAC1C,CAAC;AAyMF,wBAAgB,aAAa,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CA2FxD"}
|