@codeyam/codeyam-cli 0.1.0-staging.8aea589 → 0.1.0-staging.bbe4da9
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/analyzer-template/.build-info.json +7 -7
- package/analyzer-template/log.txt +3 -3
- package/analyzer-template/package.json +8 -7
- package/analyzer-template/packages/ai/index.ts +6 -2
- package/analyzer-template/packages/ai/package.json +2 -2
- package/analyzer-template/packages/ai/scripts/ai-test-matrix.mjs +424 -0
- package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +24 -0
- package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +6 -16
- package/analyzer-template/packages/ai/src/lib/astScopes/methodSemantics.ts +197 -0
- package/analyzer-template/packages/ai/src/lib/astScopes/paths.ts +28 -2
- package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +145 -4
- package/analyzer-template/packages/ai/src/lib/checkAllAttributes.ts +1 -3
- package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +1877 -542
- package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/FunctionCallManager.ts +138 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.ts +1 -1
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.ts +139 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/DebugTracer.ts +224 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/PathManager.ts +203 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/README.md +294 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.ts +161 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/VisitedTracker.ts +235 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +64 -1
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +14 -6
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/selectBestValue.ts +70 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/uniqueIdUtils.ts +113 -0
- package/analyzer-template/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.ts +36 -0
- package/analyzer-template/packages/ai/src/lib/generateChangesEntityDocumentation.ts +20 -2
- package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarioData.ts +56 -160
- package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarios.ts +79 -265
- package/analyzer-template/packages/ai/src/lib/generateEntityDocumentation.ts +16 -2
- package/analyzer-template/packages/ai/src/lib/generateEntityKeyAttributes.ts +32 -8
- package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +53 -154
- package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +84 -254
- package/analyzer-template/packages/ai/src/lib/generateStatementAnalysis.ts +48 -71
- package/analyzer-template/packages/ai/src/lib/getConditionalUsagesFromCode.ts +27 -6
- package/analyzer-template/packages/ai/src/lib/getLLMCallStats.ts +0 -14
- package/analyzer-template/packages/ai/src/lib/modelInfo.ts +15 -0
- package/analyzer-template/packages/ai/src/lib/promptGenerators/gatherAttributesMap.ts +42 -4
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityDocumentationGenerator.ts +8 -33
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.ts +54 -62
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.ts +93 -109
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityDocumentationGenerator.ts +8 -27
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.ts +33 -38
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.ts +30 -30
- package/analyzer-template/packages/ai/src/lib/types/index.ts +2 -0
- package/analyzer-template/packages/ai/src/lib/worker/SerializableDataStructure.ts +41 -0
- package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +47 -8
- package/analyzer-template/packages/analyze/src/lib/asts/nodes/getNodeType.ts +1 -1
- package/analyzer-template/packages/analyze/src/lib/asts/nodes/index.ts +2 -1
- package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllExportedNodes.ts +4 -2
- package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllExports.ts +5 -3
- package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +8 -10
- package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +6 -1
- package/analyzer-template/packages/analyze/src/lib/files/analyze/gatherEntityMap.ts +8 -6
- package/analyzer-template/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.ts +5 -13
- package/analyzer-template/packages/analyze/src/lib/files/analyzeChange.ts +34 -15
- package/analyzer-template/packages/analyze/src/lib/files/analyzeEntity.ts +17 -3
- package/analyzer-template/packages/analyze/src/lib/files/analyzeInitial.ts +35 -16
- package/analyzer-template/packages/analyze/src/lib/files/analyzeRemixRoute.ts +21 -33
- package/analyzer-template/packages/analyze/src/lib/files/getImportedExports.ts +75 -10
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +26 -0
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +7 -1
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.ts +9 -1
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarioData.ts +6 -1
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarios.ts +9 -1
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +15 -7
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.ts +12 -2
- package/analyzer-template/packages/aws/dist/src/lib/s3/getPresignedUrl.d.ts +23 -0
- package/analyzer-template/packages/aws/dist/src/lib/s3/getPresignedUrl.d.ts.map +1 -0
- package/analyzer-template/packages/aws/dist/src/lib/s3/getPresignedUrl.js +30 -0
- package/analyzer-template/packages/aws/dist/src/lib/s3/getPresignedUrl.js.map +1 -0
- package/analyzer-template/packages/aws/package.json +5 -4
- package/analyzer-template/packages/aws/s3/index.ts +4 -0
- package/analyzer-template/packages/aws/src/lib/s3/getPresignedUrl.ts +62 -0
- package/analyzer-template/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.ts +28 -21
- package/analyzer-template/packages/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.ts +18 -11
- package/analyzer-template/packages/generate/src/lib/scenarioComponent.ts +6 -3
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +28 -21
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.js +18 -11
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.js.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponent.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponent.js +5 -3
- package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponent.js.map +1 -1
- package/analyzer-template/packages/github/dist/supabase/src/lib/kysely/db.d.ts +2 -0
- package/analyzer-template/packages/github/dist/supabase/src/lib/kysely/db.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/supabase/src/lib/kysely/db.js +3 -0
- package/analyzer-template/packages/github/dist/supabase/src/lib/kysely/db.js.map +1 -1
- package/analyzer-template/packages/github/dist/supabase/src/lib/kysely/tableRelations.d.ts +2 -0
- package/analyzer-template/packages/github/dist/supabase/src/lib/kysely/tableRelations.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/supabase/src/lib/kysely/tables/debugReportsTable.d.ts +37 -0
- package/analyzer-template/packages/github/dist/supabase/src/lib/kysely/tables/debugReportsTable.d.ts.map +1 -0
- package/analyzer-template/packages/github/dist/supabase/src/lib/kysely/tables/debugReportsTable.js +27 -0
- package/analyzer-template/packages/github/dist/supabase/src/lib/kysely/tables/debugReportsTable.js.map +1 -0
- package/analyzer-template/packages/github/dist/supabase/src/lib/scenarioToDb.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/supabase/src/lib/scenarioToDb.js +1 -1
- package/analyzer-template/packages/github/dist/supabase/src/lib/scenarioToDb.js.map +1 -1
- package/analyzer-template/packages/github/dist/utils/index.d.ts +2 -0
- package/analyzer-template/packages/github/dist/utils/index.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/utils/index.js +2 -0
- package/analyzer-template/packages/github/dist/utils/index.js.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/Semaphore.d.ts +25 -0
- package/analyzer-template/packages/github/dist/utils/src/lib/Semaphore.d.ts.map +1 -0
- package/analyzer-template/packages/github/dist/utils/src/lib/Semaphore.js +40 -0
- package/analyzer-template/packages/github/dist/utils/src/lib/Semaphore.js.map +1 -0
- package/analyzer-template/packages/github/dist/utils/src/lib/applyUniversalMocks.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/applyUniversalMocks.js +39 -5
- package/analyzer-template/packages/github/dist/utils/src/lib/applyUniversalMocks.js.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getNextRoutePath.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getNextRoutePath.js +2 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getNextRoutePath.js.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getRemixRoutePath.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getRemixRoutePath.js +2 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getRemixRoutePath.js.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.js +2 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.js.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.js +1 -0
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.js.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.d.ts +12 -0
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.d.ts.map +1 -0
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.js +32 -0
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.js.map +1 -0
- package/analyzer-template/packages/github/dist/utils/src/lib/lightweightEntityExtractor.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/lightweightEntityExtractor.js +17 -0
- package/analyzer-template/packages/github/dist/utils/src/lib/lightweightEntityExtractor.js.map +1 -1
- package/analyzer-template/packages/supabase/src/lib/kysely/db.ts +6 -0
- package/analyzer-template/packages/supabase/src/lib/kysely/tableRelations.ts +3 -0
- package/analyzer-template/packages/supabase/src/lib/kysely/tables/debugReportsTable.ts +61 -0
- package/analyzer-template/packages/supabase/src/lib/scenarioToDb.ts +1 -0
- package/analyzer-template/packages/ui-components/src/scenario-editor/components/DataItemEditor.tsx +1 -1
- package/analyzer-template/packages/utils/dist/utils/index.d.ts +2 -0
- package/analyzer-template/packages/utils/dist/utils/index.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/index.js +2 -0
- package/analyzer-template/packages/utils/dist/utils/index.js.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/Semaphore.d.ts +25 -0
- package/analyzer-template/packages/utils/dist/utils/src/lib/Semaphore.d.ts.map +1 -0
- package/analyzer-template/packages/utils/dist/utils/src/lib/Semaphore.js +40 -0
- package/analyzer-template/packages/utils/dist/utils/src/lib/Semaphore.js.map +1 -0
- package/analyzer-template/packages/utils/dist/utils/src/lib/applyUniversalMocks.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/applyUniversalMocks.js +39 -5
- package/analyzer-template/packages/utils/dist/utils/src/lib/applyUniversalMocks.js.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getNextRoutePath.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getNextRoutePath.js +2 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getNextRoutePath.js.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getRemixRoutePath.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getRemixRoutePath.js +2 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getRemixRoutePath.js.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.js +2 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.js.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.js +1 -0
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.js.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.d.ts +12 -0
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.d.ts.map +1 -0
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.js +32 -0
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.js.map +1 -0
- package/analyzer-template/packages/utils/dist/utils/src/lib/lightweightEntityExtractor.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/lightweightEntityExtractor.js +17 -0
- package/analyzer-template/packages/utils/dist/utils/src/lib/lightweightEntityExtractor.js.map +1 -1
- package/analyzer-template/packages/utils/index.ts +2 -0
- package/analyzer-template/packages/utils/src/lib/Semaphore.ts +42 -0
- package/analyzer-template/packages/utils/src/lib/applyUniversalMocks.ts +46 -7
- package/analyzer-template/packages/utils/src/lib/frameworks/getNextRoutePath.ts +2 -1
- package/analyzer-template/packages/utils/src/lib/frameworks/getRemixRoutePath.ts +2 -1
- package/analyzer-template/packages/utils/src/lib/frameworks/nextRouteFileNameToRoute.ts +2 -1
- package/analyzer-template/packages/utils/src/lib/frameworks/remixRouteFileNameToRoute.ts +1 -0
- package/analyzer-template/packages/utils/src/lib/frameworks/sanitizeNextRouteSegments.ts +33 -0
- package/analyzer-template/packages/utils/src/lib/lightweightEntityExtractor.ts +16 -0
- package/analyzer-template/project/constructMockCode.ts +199 -9
- package/analyzer-template/project/reconcileMockDataKeys.ts +13 -0
- package/analyzer-template/project/runMultiScenarioServer.ts +0 -4
- package/analyzer-template/project/runScenarioServer.ts +0 -4
- package/analyzer-template/project/start.ts +1 -11
- package/analyzer-template/project/startScenarioCapture.ts +24 -0
- package/analyzer-template/project/startServer.ts +50 -70
- package/analyzer-template/project/trackGeneratedFiles.ts +41 -0
- package/analyzer-template/project/writeMockDataTsx.ts +191 -7
- package/analyzer-template/project/writeScenarioComponents.ts +643 -63
- package/analyzer-template/project/writeUniversalMocks.ts +66 -8
- package/analyzer-template/scripts/postbuild.cjs +12 -1
- package/background/src/lib/virtualized/project/constructMockCode.js +183 -11
- package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
- package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +12 -0
- package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
- package/background/src/lib/virtualized/project/runMultiScenarioServer.js +0 -3
- package/background/src/lib/virtualized/project/runMultiScenarioServer.js.map +1 -1
- package/background/src/lib/virtualized/project/start.js +1 -8
- package/background/src/lib/virtualized/project/start.js.map +1 -1
- package/background/src/lib/virtualized/project/startScenarioCapture.js +18 -0
- package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
- package/background/src/lib/virtualized/project/startServer.js +40 -68
- package/background/src/lib/virtualized/project/startServer.js.map +1 -1
- package/background/src/lib/virtualized/project/trackGeneratedFiles.js +30 -0
- package/background/src/lib/virtualized/project/trackGeneratedFiles.js.map +1 -0
- package/background/src/lib/virtualized/project/writeMockDataTsx.js +156 -6
- package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
- package/background/src/lib/virtualized/project/writeScenarioComponents.js +433 -41
- package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
- package/background/src/lib/virtualized/project/writeUniversalMocks.js +56 -7
- package/background/src/lib/virtualized/project/writeUniversalMocks.js.map +1 -1
- package/codeyam-cli/src/cli.js +6 -0
- package/codeyam-cli/src/cli.js.map +1 -1
- package/codeyam-cli/src/codeyam-cli.js +0 -0
- package/codeyam-cli/src/commands/debug.js +222 -0
- package/codeyam-cli/src/commands/debug.js.map +1 -0
- package/codeyam-cli/src/commands/init.js +4 -23
- package/codeyam-cli/src/commands/init.js.map +1 -1
- package/codeyam-cli/src/commands/report.js +102 -0
- package/codeyam-cli/src/commands/report.js.map +1 -0
- package/codeyam-cli/src/commands/setup-sandbox.js +165 -0
- package/codeyam-cli/src/commands/setup-sandbox.js.map +1 -0
- package/codeyam-cli/src/commands/test-startup.js +14 -5
- package/codeyam-cli/src/commands/test-startup.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/cleanupAnalysisFiles.test.js +6 -6
- package/codeyam-cli/src/utils/__tests__/cleanupAnalysisFiles.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +8 -0
- package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
- package/codeyam-cli/src/utils/analysisRunner.js +2 -1
- package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
- package/codeyam-cli/src/utils/analyzer.js +24 -2
- package/codeyam-cli/src/utils/analyzer.js.map +1 -1
- package/codeyam-cli/src/utils/cleanupAnalysisFiles.js +2 -2
- package/codeyam-cli/src/utils/cleanupAnalysisFiles.js.map +1 -1
- package/codeyam-cli/src/utils/generateReport.js +219 -0
- package/codeyam-cli/src/utils/generateReport.js.map +1 -0
- package/codeyam-cli/src/utils/install-skills.js +7 -0
- package/codeyam-cli/src/utils/install-skills.js.map +1 -1
- package/codeyam-cli/src/utils/queue/__tests__/job.pidTracking.test.js +1 -0
- package/codeyam-cli/src/utils/queue/__tests__/job.pidTracking.test.js.map +1 -1
- package/codeyam-cli/src/utils/queue/job.js +10 -5
- package/codeyam-cli/src/utils/queue/job.js.map +1 -1
- package/codeyam-cli/src/utils/sandbox.js +190 -0
- package/codeyam-cli/src/utils/sandbox.js.map +1 -0
- package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +4 -0
- package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
- package/codeyam-cli/src/utils/webappDetection.js +2 -1
- package/codeyam-cli/src/utils/webappDetection.js.map +1 -1
- package/codeyam-cli/src/webserver/app/lib/database.js +50 -2
- package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-Dp_FTAs1.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-TlHocYno.js +26 -0
- package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-CVMmGuIc.js +3 -0
- package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-BKKG1s2B.js → LogViewer-JkfQ-VaI.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-Cqce0_KG.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-BrMAP1nP.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/ScenarioPreview-Bi-__7HT.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-XmIpHcLJ.js +5 -0
- package/codeyam-cli/src/webserver/build/client/assets/_index-BmfhU6CA.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-Dm8lM73z.js +10 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.generate-report-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/chart-column-kA4jn9if.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/chunk-WWGJGFF6-CgXbbZRx.js +26 -0
- package/codeyam-cli/src/webserver/build/client/assets/circle-check-B2oHQ-zo.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/clock-BAfbP_iK.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/codeyam-name-logo-CvKwUgHo.svg +9 -0
- package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-BBYuR56H.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/dev.empty-BgPXZbm0.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-BHiWkb_W.js → entity._sha._-BkoAXaOa.js} +10 -10
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-Bj5GHkhb.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-eW5z9AyZ.js +5 -0
- package/codeyam-cli/src/webserver/build/client/assets/entityStatus-C5Okl18j.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{entityVersioning-Bk_YB1jM.js → entityVersioning-CU_Lchhc.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/entry.client-B9tSboXM.js +5 -0
- package/codeyam-cli/src/webserver/build/client/assets/file-text-18aYHZGd.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/files-Df79EyEb.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/git-CDEwTVH_.js +12 -0
- package/codeyam-cli/src/webserver/build/client/assets/globals-DXRB6jBc.css +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/html2canvas-pro.esm-XQCGvadH.js +5 -0
- package/codeyam-cli/src/webserver/build/client/assets/index-_LjBsTxX.js +8 -0
- package/codeyam-cli/src/webserver/build/client/assets/loader-circle-D_EGChhq.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/manifest-3e0ffbcc.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/root-CGyT4J4b.js +16 -0
- package/codeyam-cli/src/webserver/build/client/assets/settings-CEPbAsom.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/settings-R8QF_mHX.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/simulations-B_PXvFom.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/triangle-alert-BthANBVv.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-Lumm1t01.js → useLastLogLine-Blr5oZDE.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/useReportContext-CANr3QJ5.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/useToast-Bbf4Hokd.js +1 -0
- package/codeyam-cli/src/webserver/build/server/assets/index-vf1FETCO.js +1 -0
- package/codeyam-cli/src/webserver/build/server/assets/server-build-B5s58TvB.js +169 -0
- package/codeyam-cli/src/webserver/build/server/index.js +1 -1
- package/codeyam-cli/src/webserver/build-info.json +5 -5
- package/codeyam-cli/src/webserver/server.js +1 -1
- package/codeyam-cli/src/webserver/server.js.map +1 -1
- package/codeyam-cli/templates/codeyam-setup-skill.md +70 -85
- package/codeyam-cli/templates/debug-command.md +125 -0
- package/package.json +9 -11
- package/packages/ai/index.js +2 -3
- package/packages/ai/index.js.map +1 -1
- package/packages/ai/src/lib/analyzeScope.js +13 -0
- package/packages/ai/src/lib/analyzeScope.js.map +1 -1
- package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +6 -15
- package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
- package/packages/ai/src/lib/astScopes/methodSemantics.js +134 -0
- package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
- package/packages/ai/src/lib/astScopes/paths.js +28 -3
- package/packages/ai/src/lib/astScopes/paths.js.map +1 -1
- package/packages/ai/src/lib/astScopes/processExpression.js +123 -3
- package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
- package/packages/ai/src/lib/checkAllAttributes.js +1 -3
- package/packages/ai/src/lib/checkAllAttributes.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +1358 -396
- package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/FunctionCallManager.js +137 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/FunctionCallManager.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js +1 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js +112 -0
- package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js.map +1 -0
- package/packages/ai/src/lib/dataStructure/helpers/DebugTracer.js +176 -0
- package/packages/ai/src/lib/dataStructure/helpers/DebugTracer.js.map +1 -0
- package/packages/ai/src/lib/dataStructure/helpers/PathManager.js +178 -0
- package/packages/ai/src/lib/dataStructure/helpers/PathManager.js.map +1 -0
- package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js +138 -0
- package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js.map +1 -0
- package/packages/ai/src/lib/dataStructure/helpers/VisitedTracker.js +199 -0
- package/packages/ai/src/lib/dataStructure/helpers/VisitedTracker.js.map +1 -0
- package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +55 -1
- package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +14 -6
- package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/selectBestValue.js +62 -0
- package/packages/ai/src/lib/dataStructure/helpers/selectBestValue.js.map +1 -0
- package/packages/ai/src/lib/dataStructure/helpers/uniqueIdUtils.js +90 -0
- package/packages/ai/src/lib/dataStructure/helpers/uniqueIdUtils.js.map +1 -0
- package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js +22 -0
- package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js.map +1 -1
- package/packages/ai/src/lib/generateChangesEntityDocumentation.js +19 -1
- package/packages/ai/src/lib/generateChangesEntityDocumentation.js.map +1 -1
- package/packages/ai/src/lib/generateChangesEntityScenarioData.js +55 -156
- package/packages/ai/src/lib/generateChangesEntityScenarioData.js.map +1 -1
- package/packages/ai/src/lib/generateChangesEntityScenarios.js +79 -262
- package/packages/ai/src/lib/generateChangesEntityScenarios.js.map +1 -1
- package/packages/ai/src/lib/generateEntityDocumentation.js +15 -1
- package/packages/ai/src/lib/generateEntityDocumentation.js.map +1 -1
- package/packages/ai/src/lib/generateEntityKeyAttributes.js +32 -8
- package/packages/ai/src/lib/generateEntityKeyAttributes.js.map +1 -1
- package/packages/ai/src/lib/generateEntityScenarioData.js +52 -152
- package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
- package/packages/ai/src/lib/generateEntityScenarios.js +88 -258
- package/packages/ai/src/lib/generateEntityScenarios.js.map +1 -1
- package/packages/ai/src/lib/generateStatementAnalysis.js +46 -71
- package/packages/ai/src/lib/generateStatementAnalysis.js.map +1 -1
- package/packages/ai/src/lib/getConditionalUsagesFromCode.js +13 -8
- package/packages/ai/src/lib/getConditionalUsagesFromCode.js.map +1 -1
- package/packages/ai/src/lib/getLLMCallStats.js +0 -14
- package/packages/ai/src/lib/getLLMCallStats.js.map +1 -1
- package/packages/ai/src/lib/modelInfo.js +15 -0
- package/packages/ai/src/lib/modelInfo.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js +36 -3
- package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityDocumentationGenerator.js +8 -33
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityDocumentationGenerator.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js +35 -41
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js +59 -72
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateEntityDocumentationGenerator.js +8 -27
- package/packages/ai/src/lib/promptGenerators/generateEntityDocumentationGenerator.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js +24 -27
- package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js +21 -22
- package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js.map +1 -1
- package/packages/ai/src/lib/types/index.js +2 -0
- package/packages/ai/src/lib/types/index.js.map +1 -1
- package/packages/ai/src/lib/worker/SerializableDataStructure.js +7 -0
- package/packages/ai/src/lib/worker/SerializableDataStructure.js.map +1 -1
- package/packages/analyze/src/lib/FileAnalyzer.js +39 -7
- package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
- package/packages/analyze/src/lib/asts/nodes/getNodeType.js +1 -1
- package/packages/analyze/src/lib/asts/nodes/getNodeType.js.map +1 -1
- package/packages/analyze/src/lib/asts/nodes/index.js +2 -1
- package/packages/analyze/src/lib/asts/nodes/index.js.map +1 -1
- package/packages/analyze/src/lib/asts/sourceFiles/getAllExportedNodes.js +3 -2
- package/packages/analyze/src/lib/asts/sourceFiles/getAllExportedNodes.js.map +1 -1
- package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js +4 -3
- package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +6 -8
- package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +5 -1
- package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js +8 -2
- package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.js +5 -8
- package/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.js.map +1 -1
- package/packages/analyze/src/lib/files/analyzeChange.js +21 -9
- package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
- package/packages/analyze/src/lib/files/analyzeEntity.js +10 -4
- package/packages/analyze/src/lib/files/analyzeEntity.js.map +1 -1
- package/packages/analyze/src/lib/files/analyzeInitial.js +21 -9
- package/packages/analyze/src/lib/files/analyzeInitial.js.map +1 -1
- package/packages/analyze/src/lib/files/analyzeRemixRoute.js +18 -23
- package/packages/analyze/src/lib/files/analyzeRemixRoute.js.map +1 -1
- package/packages/analyze/src/lib/files/getImportedExports.js +56 -4
- package/packages/analyze/src/lib/files/getImportedExports.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +24 -0
- package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +6 -1
- package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js +9 -1
- package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js +5 -1
- package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateScenarios.js +9 -1
- package/packages/analyze/src/lib/files/scenarios/generateScenarios.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +16 -7
- package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.js +8 -2
- package/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.js.map +1 -1
- package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +28 -21
- package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
- package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.js +18 -11
- package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.js.map +1 -1
- package/packages/generate/src/lib/scenarioComponent.js +5 -3
- package/packages/generate/src/lib/scenarioComponent.js.map +1 -1
- package/packages/supabase/src/lib/kysely/db.js +3 -0
- package/packages/supabase/src/lib/kysely/db.js.map +1 -1
- package/packages/supabase/src/lib/kysely/tables/debugReportsTable.js +27 -0
- package/packages/supabase/src/lib/kysely/tables/debugReportsTable.js.map +1 -0
- package/packages/supabase/src/lib/scenarioToDb.js +1 -1
- package/packages/supabase/src/lib/scenarioToDb.js.map +1 -1
- package/packages/utils/index.js +2 -0
- package/packages/utils/index.js.map +1 -1
- package/packages/utils/src/lib/Semaphore.js +40 -0
- package/packages/utils/src/lib/Semaphore.js.map +1 -0
- package/packages/utils/src/lib/applyUniversalMocks.js +39 -5
- package/packages/utils/src/lib/applyUniversalMocks.js.map +1 -1
- package/packages/utils/src/lib/frameworks/getNextRoutePath.js +2 -1
- package/packages/utils/src/lib/frameworks/getNextRoutePath.js.map +1 -1
- package/packages/utils/src/lib/frameworks/getRemixRoutePath.js +2 -1
- package/packages/utils/src/lib/frameworks/getRemixRoutePath.js.map +1 -1
- package/packages/utils/src/lib/frameworks/nextRouteFileNameToRoute.js +2 -1
- package/packages/utils/src/lib/frameworks/nextRouteFileNameToRoute.js.map +1 -1
- package/packages/utils/src/lib/frameworks/remixRouteFileNameToRoute.js +1 -0
- package/packages/utils/src/lib/frameworks/remixRouteFileNameToRoute.js.map +1 -1
- package/packages/utils/src/lib/frameworks/sanitizeNextRouteSegments.js +32 -0
- package/packages/utils/src/lib/frameworks/sanitizeNextRouteSegments.js.map +1 -0
- package/packages/utils/src/lib/lightweightEntityExtractor.js +17 -0
- package/packages/utils/src/lib/lightweightEntityExtractor.js.map +1 -1
- package/analyzer-template/packages/ai/src/lib/generateEntityDataMap.ts +0 -375
- package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-rqv54FUY.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-B0oiPem-.js +0 -26
- package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-DqXXjAJ7.js +0 -3
- package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-DU_jxCPD.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/ScenarioPreview-5DY-YIxu.js +0 -6
- package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-DmjXUj6m.js +0 -5
- package/codeyam-cli/src/webserver/build/client/assets/_index-DvSrcxsk.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-CsaMd9mb.js +0 -10
- package/codeyam-cli/src/webserver/build/client/assets/chart-column-VXBS6qOn.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/circle-alert-n5GUC2AS.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/clock-DKqtX8js.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/components-Dj-Ggnl2.js +0 -40
- package/codeyam-cli/src/webserver/build/client/assets/dev.empty-BbR3FwNc.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-L7M9Vr5z.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-C9w-q7P3.js +0 -5
- package/codeyam-cli/src/webserver/build/client/assets/entry.client-CdGoUs8A.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/file-text-B6Er7j5k.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/files-KcDVw1FY.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/git-B9uZ8eSJ.js +0 -12
- package/codeyam-cli/src/webserver/build/client/assets/globals-B0f88RTV.css +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/loader-circle-v3c6DFp4.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/manifest-fca08d7e.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/root-Cf8VBqIb.js +0 -16
- package/codeyam-cli/src/webserver/build/client/assets/search-DA14wXpu.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/settings-COJUrwGu.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/settings-NU_ZquhK.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/simulations-CNaMJ-nR.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/useToast-BRShB17p.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/zap-BvukH0eN.js +0 -1
- package/codeyam-cli/src/webserver/build/client/cy-logo-cli.svg +0 -13
- package/codeyam-cli/src/webserver/build/client/favicon.svg +0 -13
- package/codeyam-cli/src/webserver/build/server/assets/index-DHr4rT4u.js +0 -1
- package/codeyam-cli/src/webserver/build/server/assets/server-build-Bi1mj14J.js +0 -166
- package/codeyam-cli/src/webserver/public/cy-logo-cli.svg +0 -13
- package/codeyam-cli/src/webserver/public/favicon.svg +0 -13
- package/packages/ai/src/lib/generateEntityDataMap.js +0 -335
- package/packages/ai/src/lib/generateEntityDataMap.js.map +0 -1
- package/packages/ai/src/lib/promptGenerators/generateEntityDataMapGenerator.js +0 -17
- package/packages/ai/src/lib/promptGenerators/generateEntityDataMapGenerator.js.map +0 -1
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
getReturnValue,
|
|
13
13
|
getSourceEquivalencies,
|
|
14
14
|
getUsageEquivalencies,
|
|
15
|
-
|
|
15
|
+
getConditionalUsages,
|
|
16
16
|
detectWrapperRequirements,
|
|
17
17
|
} from '~codeyam/ai';
|
|
18
18
|
import type { AnalysisOptions } from '../analyzeEntities';
|
|
@@ -94,11 +94,6 @@ export default async function prepareEntityDataStructures(
|
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
96
|
|
|
97
|
-
// Extract conditional usages from the entity code for key attribute detection
|
|
98
|
-
const conditionalUsages = entity.code
|
|
99
|
-
? getConditionalUsagesFromCode(entity.code)
|
|
100
|
-
: {};
|
|
101
|
-
|
|
102
97
|
entity.metadata.isolatedDataStructure = {
|
|
103
98
|
signatureSchema: deduplicateFunctionSchemas(
|
|
104
99
|
isolatedDataStructure.signatureSchema,
|
|
@@ -110,10 +105,8 @@ export default async function prepareEntityDataStructures(
|
|
|
110
105
|
isolatedDataStructure.equivalentSignatureVariables,
|
|
111
106
|
dependencySchemas: clonedDependencySchemas,
|
|
112
107
|
environmentVariables: isolatedDataStructure.environmentVariables,
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
? conditionalUsages
|
|
116
|
-
: undefined,
|
|
108
|
+
// Use enriched conditional usages with source tracing from analysis
|
|
109
|
+
conditionalUsages: isolatedDataStructure.conditionalUsages,
|
|
117
110
|
};
|
|
118
111
|
|
|
119
112
|
// Detect wrapper requirements (Context providers, etc.)
|
|
@@ -290,6 +283,9 @@ async function getEntityDataStructureAndFunctionCalls({
|
|
|
290
283
|
const clonedRawSignature = { ...rawSignature };
|
|
291
284
|
const clonedRawReturnValue = { ...rawReturnValue };
|
|
292
285
|
|
|
286
|
+
// Get enriched conditional usages with source tracing
|
|
287
|
+
const conditionalUsages = getConditionalUsages(dataStructure);
|
|
288
|
+
|
|
293
289
|
const isolatedDataStructure = {
|
|
294
290
|
signatureSchema: deduplicateFunctionSchemas(clonedRawSignature),
|
|
295
291
|
returnValueSchema: deduplicateFunctionSchemas(clonedRawReturnValue),
|
|
@@ -297,6 +293,8 @@ async function getEntityDataStructureAndFunctionCalls({
|
|
|
297
293
|
getEquivalentSignatureVariables(dataStructure),
|
|
298
294
|
dependencySchemas,
|
|
299
295
|
environmentVariables: dataStructure.environmentVariables,
|
|
296
|
+
conditionalUsages:
|
|
297
|
+
Object.keys(conditionalUsages).length > 0 ? conditionalUsages : undefined,
|
|
300
298
|
};
|
|
301
299
|
|
|
302
300
|
const functionCalls: Record<string, string[]> = {};
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
upsertEntities,
|
|
19
19
|
} from '~codeyam/supabase';
|
|
20
20
|
import { getCandidatesReadyForCapture as getAnalysesReadyForCapture } from './dependencyResolver';
|
|
21
|
-
import { awsLog, awsLogDebugLevel } from '~codeyam/utils';
|
|
21
|
+
import { awsLog, awsLogDebugLevel, Semaphore } from '~codeyam/utils';
|
|
22
22
|
|
|
23
23
|
const MAX_CONCURRENT_ANALYSES = 100; // fairly arbitrary, but more isn't necessarily better
|
|
24
24
|
|
|
@@ -133,6 +133,10 @@ export default async function analyzeEntities({
|
|
|
133
133
|
const markedReady = new Set<string>(); // Analyses we've attempted to mark ready
|
|
134
134
|
const analyses: Analysis[] = [];
|
|
135
135
|
|
|
136
|
+
// Semaphore to serialize CPU-intensive Structure phase while allowing
|
|
137
|
+
// I/O-bound KeyAttributes LLM calls to run in parallel
|
|
138
|
+
const structureSemaphore = new Semaphore(1);
|
|
139
|
+
|
|
136
140
|
const analysesAlreadyCompletedAtStart =
|
|
137
141
|
commit?.metadata?.currentRun?.analysesCompleted ?? 0;
|
|
138
142
|
|
|
@@ -442,6 +446,7 @@ export default async function analyzeEntities({
|
|
|
442
446
|
analyzeAsDependency: !allRootEntities.some(
|
|
443
447
|
(e) => e.filePath === entity.filePath && e.name === entity.name,
|
|
444
448
|
),
|
|
449
|
+
structureSemaphore,
|
|
445
450
|
...options,
|
|
446
451
|
force,
|
|
447
452
|
}),
|
|
@@ -73,14 +73,16 @@ export default async function gatherEntityMap({
|
|
|
73
73
|
);
|
|
74
74
|
|
|
75
75
|
if (!importedFile) {
|
|
76
|
+
// Skip dependencies when the file is not found in project.files.
|
|
77
|
+
// This commonly happens when a universal mock intercepts the import:
|
|
78
|
+
// 1. TypeScript resolves @formbricks/types/errors to the mock file
|
|
79
|
+
// 2. The original packages/types/errors.ts is never imported
|
|
80
|
+
// 3. So it's not in getSourceFiles() and thus not in project.files
|
|
81
|
+
// 4. Since the mock handles the import, we don't need to analyze the original
|
|
76
82
|
console.log(
|
|
77
|
-
`CodeYam
|
|
78
|
-
entity.filePath,
|
|
79
|
-
entity.name,
|
|
80
|
-
);
|
|
81
|
-
throw new Error(
|
|
82
|
-
`File not found while gathering entity map: ${importedExportFilePath}`,
|
|
83
|
+
`CodeYam Warning: Skipping dependency - file not in project.files (likely mocked): ${importedExportFilePath}`,
|
|
83
84
|
);
|
|
85
|
+
continue;
|
|
84
86
|
}
|
|
85
87
|
|
|
86
88
|
let importedEntity = context.getEntity(
|
package/analyzer-template/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.ts
CHANGED
|
@@ -99,19 +99,11 @@ function traverseEntity(
|
|
|
99
99
|
);
|
|
100
100
|
|
|
101
101
|
if (!dependentEntity) {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
dependencyFilePath,
|
|
108
|
-
dependencyName,
|
|
109
|
-
fileEntities: context.getEntityNamesForFile(dependencyFilePath),
|
|
110
|
-
},
|
|
111
|
-
);
|
|
112
|
-
throw new Error(
|
|
113
|
-
'trackEntityCircularDependencies: Dependent entity not found',
|
|
114
|
-
);
|
|
102
|
+
// Skip dependencies when the entity is not found in context.
|
|
103
|
+
// This commonly happens when a universal mock intercepts the import:
|
|
104
|
+
// - gatherEntityMap skips adding the entity because the file isn't in project.files
|
|
105
|
+
// - The mock handles the import at runtime, so we don't need to track it
|
|
106
|
+
continue;
|
|
115
107
|
}
|
|
116
108
|
|
|
117
109
|
// Recursively traverse (will skip if already visited)
|
|
@@ -16,7 +16,12 @@ import { AI } from '~codeyam/ai';
|
|
|
16
16
|
import extractDiffLines from './extractDiffLines';
|
|
17
17
|
import analyzeCodeChange from './analyzeCodeChange';
|
|
18
18
|
import relevantDiffPart from './relevantDiffPart';
|
|
19
|
-
import {
|
|
19
|
+
import {
|
|
20
|
+
awsLog,
|
|
21
|
+
awsLogDebugLevel,
|
|
22
|
+
pushAnalysisError,
|
|
23
|
+
Semaphore,
|
|
24
|
+
} from '~codeyam/utils';
|
|
20
25
|
|
|
21
26
|
export interface AnalyzeChangeArgs {
|
|
22
27
|
previousAnalysis: Analysis;
|
|
@@ -29,6 +34,8 @@ export interface AnalyzeChangeArgs {
|
|
|
29
34
|
steps?: string[];
|
|
30
35
|
updateProgress?: (detail: string) => void;
|
|
31
36
|
model: AI.Model;
|
|
37
|
+
/** Semaphore to serialize CPU-intensive Structure phase */
|
|
38
|
+
structureSemaphore?: Semaphore;
|
|
32
39
|
}
|
|
33
40
|
|
|
34
41
|
export default async function analyzeChange({
|
|
@@ -42,6 +49,7 @@ export default async function analyzeChange({
|
|
|
42
49
|
steps,
|
|
43
50
|
updateProgress,
|
|
44
51
|
model,
|
|
52
|
+
structureSemaphore,
|
|
45
53
|
}: AnalyzeChangeArgs) {
|
|
46
54
|
analysis.entity = entity;
|
|
47
55
|
awsLog('CodeYam: Analyzing change entity', {
|
|
@@ -79,24 +87,35 @@ export default async function analyzeChange({
|
|
|
79
87
|
});
|
|
80
88
|
}
|
|
81
89
|
|
|
90
|
+
// Structure phase: CPU-intensive, serialize via semaphore if provided
|
|
82
91
|
if (!steps || steps.includes(Step.Structure)) {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
92
|
+
if (structureSemaphore) {
|
|
93
|
+
await structureSemaphore.acquire();
|
|
94
|
+
}
|
|
95
|
+
try {
|
|
96
|
+
awsLogDebugLevel(
|
|
97
|
+
1,
|
|
98
|
+
`Merging dependent data structures for ${entity.name}...`,
|
|
99
|
+
);
|
|
87
100
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
101
|
+
const { step: dataStructureStep } = await recordStep(
|
|
102
|
+
'generateDataStructure',
|
|
103
|
+
() =>
|
|
104
|
+
generateDataStructure({
|
|
105
|
+
entity,
|
|
106
|
+
dependentAnalyses,
|
|
107
|
+
analysis,
|
|
108
|
+
}),
|
|
109
|
+
);
|
|
110
|
+
analysis.status.steps.push(dataStructureStep);
|
|
111
|
+
} finally {
|
|
112
|
+
if (structureSemaphore) {
|
|
113
|
+
structureSemaphore.release();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
98
116
|
}
|
|
99
117
|
|
|
118
|
+
// KeyAttributes phase: I/O-bound LLM call, can run in parallel with other entities' Structure
|
|
100
119
|
if (!steps || steps.includes(Step.KeyAttributes)) {
|
|
101
120
|
awsLogDebugLevel(1, `Determining key attributes for ${entity.name}...`);
|
|
102
121
|
|
|
@@ -31,7 +31,12 @@ import relevantDiffPart from './relevantDiffPart';
|
|
|
31
31
|
import { Step } from './enums/steps';
|
|
32
32
|
import { ImmutableAnalysisContext } from '../analysisContext';
|
|
33
33
|
import generateAnalyzedTreeSha from './analyze/generateAnalyzedTreeSha';
|
|
34
|
-
import {
|
|
34
|
+
import {
|
|
35
|
+
awsLog,
|
|
36
|
+
awsLogDebugLevel,
|
|
37
|
+
pushAnalysisError,
|
|
38
|
+
Semaphore,
|
|
39
|
+
} from '~codeyam/utils';
|
|
35
40
|
|
|
36
41
|
export interface AnalyzeEntityArgs {
|
|
37
42
|
project: Project;
|
|
@@ -50,6 +55,8 @@ export interface AnalyzeEntityArgs {
|
|
|
50
55
|
forceAll?: boolean;
|
|
51
56
|
updateProgress?: (detail: string) => void;
|
|
52
57
|
modelString?: string;
|
|
58
|
+
/** Semaphore to serialize CPU-intensive Structure phase */
|
|
59
|
+
structureSemaphore?: Semaphore;
|
|
53
60
|
}
|
|
54
61
|
|
|
55
62
|
/**
|
|
@@ -77,6 +84,7 @@ export default async function analyzeEntity({
|
|
|
77
84
|
forceAll,
|
|
78
85
|
updateProgress,
|
|
79
86
|
modelString,
|
|
87
|
+
structureSemaphore,
|
|
80
88
|
}: AnalyzeEntityArgs): Promise<{
|
|
81
89
|
analysis: Analysis;
|
|
82
90
|
dependentAnalyses?: ReadonlyAnalysisMap;
|
|
@@ -476,6 +484,7 @@ export default async function analyzeEntity({
|
|
|
476
484
|
steps,
|
|
477
485
|
updateProgress,
|
|
478
486
|
model,
|
|
487
|
+
structureSemaphore,
|
|
479
488
|
})
|
|
480
489
|
: analyzeInitial({
|
|
481
490
|
analysis,
|
|
@@ -485,6 +494,7 @@ export default async function analyzeEntity({
|
|
|
485
494
|
steps,
|
|
486
495
|
updateProgress,
|
|
487
496
|
model,
|
|
497
|
+
structureSemaphore,
|
|
488
498
|
}),
|
|
489
499
|
]);
|
|
490
500
|
|
|
@@ -498,8 +508,12 @@ export default async function analyzeEntity({
|
|
|
498
508
|
analysis = analysisResult.analysis;
|
|
499
509
|
|
|
500
510
|
analysis.completedAt = new Date().toISOString();
|
|
501
|
-
// Don't set analyzedTreeSha when
|
|
502
|
-
|
|
511
|
+
// Don't set analyzedTreeSha when:
|
|
512
|
+
// 1. ONLY_DATA_STRUCTURE=true - so full analysis can re-analyze later
|
|
513
|
+
// 2. analyzeAsDependency=true - dependency analyses only generate Structure+KeyAttributes,
|
|
514
|
+
// not scenarios. Leaving analyzedTreeSha unset allows partial analysis detection to work
|
|
515
|
+
// when the entity is later analyzed directly.
|
|
516
|
+
if (process.env.ONLY_DATA_STRUCTURE !== 'true' && !analyzeAsDependency) {
|
|
503
517
|
analysis.analyzedTreeSha = generateAnalyzedTreeSha(analysis);
|
|
504
518
|
}
|
|
505
519
|
} catch (error) {
|
|
@@ -12,7 +12,12 @@ import {
|
|
|
12
12
|
type ReadonlyAnalysisMap,
|
|
13
13
|
} from '~codeyam/types';
|
|
14
14
|
import { upsertAnalysesWithScenarios } from '~codeyam/supabase';
|
|
15
|
-
import {
|
|
15
|
+
import {
|
|
16
|
+
awsLog,
|
|
17
|
+
awsLogDebugLevel,
|
|
18
|
+
pushAnalysisError,
|
|
19
|
+
Semaphore,
|
|
20
|
+
} from '~codeyam/utils';
|
|
16
21
|
import generateKeyAttributes from './scenarios/generateKeyAttributes';
|
|
17
22
|
|
|
18
23
|
export interface AnalyzeInitialArgs {
|
|
@@ -23,6 +28,8 @@ export interface AnalyzeInitialArgs {
|
|
|
23
28
|
steps?: string[];
|
|
24
29
|
updateProgress?: (detail: string) => void;
|
|
25
30
|
model: AI.Model;
|
|
31
|
+
/** Semaphore to serialize CPU-intensive Structure phase */
|
|
32
|
+
structureSemaphore?: Semaphore;
|
|
26
33
|
}
|
|
27
34
|
|
|
28
35
|
export default async function analyzeInitial({
|
|
@@ -33,6 +40,7 @@ export default async function analyzeInitial({
|
|
|
33
40
|
steps,
|
|
34
41
|
updateProgress,
|
|
35
42
|
model,
|
|
43
|
+
structureSemaphore,
|
|
36
44
|
}: AnalyzeInitialArgs) {
|
|
37
45
|
analysis.entity = entity;
|
|
38
46
|
awsLog('CodeYam: Analyzing initial entity', {
|
|
@@ -47,22 +55,32 @@ export default async function analyzeInitial({
|
|
|
47
55
|
});
|
|
48
56
|
|
|
49
57
|
try {
|
|
58
|
+
// Structure phase: CPU-intensive, serialize via semaphore if provided
|
|
50
59
|
if (!steps || steps.includes(Step.Structure)) {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
60
|
+
if (structureSemaphore) {
|
|
61
|
+
await structureSemaphore.acquire();
|
|
62
|
+
}
|
|
63
|
+
try {
|
|
64
|
+
awsLogDebugLevel(
|
|
65
|
+
1,
|
|
66
|
+
`Merging dependent data structures for ${entity.name}...`,
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
const { step: dataStructureStep } = await recordStep(
|
|
70
|
+
'generateDataStructure',
|
|
71
|
+
() =>
|
|
72
|
+
generateDataStructure({
|
|
73
|
+
entity,
|
|
74
|
+
dependentAnalyses,
|
|
75
|
+
analysis,
|
|
76
|
+
}),
|
|
77
|
+
);
|
|
78
|
+
analysis.status.steps.push(dataStructureStep);
|
|
79
|
+
} finally {
|
|
80
|
+
if (structureSemaphore) {
|
|
81
|
+
structureSemaphore.release();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
66
84
|
}
|
|
67
85
|
|
|
68
86
|
// Short-circuit for test mocking: only generate data structure, skip key attributes and scenarios
|
|
@@ -73,6 +91,7 @@ export default async function analyzeInitial({
|
|
|
73
91
|
return { analysis };
|
|
74
92
|
}
|
|
75
93
|
|
|
94
|
+
// KeyAttributes phase: I/O-bound LLM call, can run in parallel with other entities' Structure
|
|
76
95
|
if (!steps || steps.includes(Step.KeyAttributes)) {
|
|
77
96
|
awsLogDebugLevel(1, `Determining key attributes for ${entity.name}...`);
|
|
78
97
|
|
|
@@ -48,29 +48,20 @@ export default function analyzeRemixRoute(
|
|
|
48
48
|
const implicitRouteFileAnalyzer =
|
|
49
49
|
projectAnalyzer.getFileAnalyzer(implicitRoute);
|
|
50
50
|
const exports = implicitRouteFileAnalyzer.getAllExports();
|
|
51
|
-
const defaultExport = Object.values(exports).find(
|
|
52
|
-
(e) => e.isDefaultExport,
|
|
53
|
-
);
|
|
54
|
-
|
|
55
|
-
// Ensure entities array exists before trying to use it
|
|
56
|
-
if (!implicitRoute.entities) {
|
|
57
|
-
console.log(
|
|
58
|
-
`CodeYam Warning: implicitRoute.entities not populated for ${implicitRoute.path}, skipping implicit dependency`,
|
|
59
|
-
);
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
51
|
|
|
63
|
-
|
|
64
|
-
|
|
52
|
+
// Find the default export entry - the key is the entity name
|
|
53
|
+
const defaultExportEntry = Object.entries(exports).find(
|
|
54
|
+
([, e]) => e.isDefaultExport,
|
|
65
55
|
);
|
|
66
56
|
|
|
67
|
-
if (!
|
|
57
|
+
if (!defaultExportEntry) return;
|
|
68
58
|
|
|
59
|
+
const [entityName, defaultExport] = defaultExportEntry;
|
|
69
60
|
const code = defaultExport.code;
|
|
70
61
|
return {
|
|
71
62
|
code: code,
|
|
72
63
|
// sha: generateSha(implicitRoute.path, 'default', code),
|
|
73
|
-
name:
|
|
64
|
+
name: entityName,
|
|
74
65
|
filePath: implicitRoute.path,
|
|
75
66
|
projectId: entity.projectId,
|
|
76
67
|
entityType: 'visual' as EntityType,
|
|
@@ -108,26 +99,23 @@ export default function analyzeRemixRoute(
|
|
|
108
99
|
try {
|
|
109
100
|
const rootFileAnalyzer = projectAnalyzer.getFileAnalyzer(rootFile);
|
|
110
101
|
const exports = rootFileAnalyzer.getAllExports();
|
|
111
|
-
const defaultExport = Object.values(exports).find(
|
|
112
|
-
(e) => e.isDefaultExport,
|
|
113
|
-
);
|
|
114
102
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
103
|
+
// Find the default export entry - the key is the entity name
|
|
104
|
+
const defaultExportEntry = Object.entries(exports).find(
|
|
105
|
+
([, e]) => e.isDefaultExport,
|
|
106
|
+
);
|
|
119
107
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
}
|
|
108
|
+
if (defaultExportEntry) {
|
|
109
|
+
const [entityName, defaultExport] = defaultExportEntry;
|
|
110
|
+
rootDependencies.push({
|
|
111
|
+
code: defaultExport.code,
|
|
112
|
+
name: entityName,
|
|
113
|
+
filePath: rootFile.path,
|
|
114
|
+
entityType: 'visual' as EntityType,
|
|
115
|
+
isDefault: true,
|
|
116
|
+
isImplicitDependency: true,
|
|
117
|
+
isMocked: false,
|
|
118
|
+
});
|
|
131
119
|
}
|
|
132
120
|
} catch (e) {
|
|
133
121
|
console.log(
|
|
@@ -63,18 +63,83 @@ export default function getImportedExports(
|
|
|
63
63
|
imports[filePath].resolvedPath ??
|
|
64
64
|
filePath;
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
let importedExportFile = project.files.find(
|
|
67
67
|
(f) => f.path === searchPath,
|
|
68
68
|
);
|
|
69
69
|
|
|
70
|
+
// Track the actual path we found (may differ from searchPath after dist->src mapping)
|
|
71
|
+
let actualResolvedPath = imports[filePath].resolvedPath;
|
|
72
|
+
|
|
73
|
+
// Workspace packages often resolve to dist/ paths (from package.json "types" or "main"),
|
|
74
|
+
// but our project.files contains source files in src/. Try mapping dist -> src.
|
|
75
|
+
if (!importedExportFile && searchPath.includes('/dist/')) {
|
|
76
|
+
const srcPath = searchPath.replace('/dist/', '/src/');
|
|
77
|
+
// Try exact match first
|
|
78
|
+
importedExportFile = project.files.find((f) => f.path === srcPath);
|
|
79
|
+
if (importedExportFile) {
|
|
80
|
+
actualResolvedPath = srcPath;
|
|
81
|
+
console.log(
|
|
82
|
+
`CodeYam: Mapped dist->src path: ${searchPath} -> ${srcPath}`,
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// If not found, the dist file might be index.d.ts but src might be index.ts
|
|
87
|
+
// or the export might be re-exported from another file
|
|
88
|
+
if (!importedExportFile) {
|
|
89
|
+
// Try removing .d.ts extension and finding any matching src file
|
|
90
|
+
const basePath = srcPath
|
|
91
|
+
.replace(/\.d\.ts$/, '')
|
|
92
|
+
.replace(/\.js$/, '');
|
|
93
|
+
importedExportFile = project.files.find(
|
|
94
|
+
(f) =>
|
|
95
|
+
f.path === basePath + '.ts' ||
|
|
96
|
+
f.path === basePath + '.tsx' ||
|
|
97
|
+
(f.path.startsWith(basePath.replace('/index', '/')) &&
|
|
98
|
+
!f.path.includes('/dist/')),
|
|
99
|
+
);
|
|
100
|
+
if (importedExportFile) {
|
|
101
|
+
actualResolvedPath = importedExportFile.path;
|
|
102
|
+
console.log(
|
|
103
|
+
`CodeYam: Mapped dist->src path (extension): ${searchPath} -> ${importedExportFile.path}`,
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
70
109
|
if (!importedExportFile) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
110
|
+
// Check if this is a workspace package import (scoped npm package like @scope/package)
|
|
111
|
+
// but NOT a path alias like @/path or @components/...
|
|
112
|
+
// Scoped packages have format: @scope/package where scope is alphanumeric with hyphens
|
|
113
|
+
const isScopedPackage =
|
|
114
|
+
filePath.startsWith('@') &&
|
|
115
|
+
!filePath.startsWith('@/') && // Not a path alias like @/modules/...
|
|
116
|
+
!filePath.startsWith('@types/') &&
|
|
117
|
+
/^@[a-z0-9-]+\/[a-z0-9-]/.test(filePath); // Matches @scope/package pattern
|
|
118
|
+
if (isScopedPackage) {
|
|
119
|
+
// Treat unresolved scoped packages like node modules so they get mocked
|
|
120
|
+
// instead of being silently ignored
|
|
121
|
+
const name =
|
|
122
|
+
importedExportInfo.importName ?? importedExportInfo.importAlias;
|
|
123
|
+
console.log(
|
|
124
|
+
`CodeYam: Treating unresolved scoped package as node module: ${filePath} -> ${name}`,
|
|
125
|
+
);
|
|
126
|
+
return {
|
|
127
|
+
filePath,
|
|
128
|
+
name,
|
|
129
|
+
isDefault: importedExportInfo.isImportDefault,
|
|
130
|
+
isNodeModule: true, // Mark as node module so it gets mocked
|
|
131
|
+
entityType: 'library' as const, // Default to library since we can't determine the actual type
|
|
132
|
+
// No code since we couldn't resolve the source file
|
|
133
|
+
};
|
|
134
|
+
} else {
|
|
135
|
+
console.log(
|
|
136
|
+
'CodeYam Error: File not found for imported export',
|
|
137
|
+
file.path,
|
|
138
|
+
filePath,
|
|
139
|
+
importedExportInfo,
|
|
140
|
+
imports[filePath],
|
|
141
|
+
);
|
|
142
|
+
}
|
|
78
143
|
return;
|
|
79
144
|
}
|
|
80
145
|
|
|
@@ -96,10 +161,10 @@ export default function getImportedExports(
|
|
|
96
161
|
|
|
97
162
|
return {
|
|
98
163
|
fileId: importedExportFile.id,
|
|
99
|
-
filePath:
|
|
164
|
+
filePath: actualResolvedPath,
|
|
100
165
|
isDefault: importedExportInfo.isImportDefault,
|
|
101
166
|
resolvedFilePath:
|
|
102
|
-
resolvedFilePath ===
|
|
167
|
+
resolvedFilePath === actualResolvedPath
|
|
103
168
|
? undefined
|
|
104
169
|
: resolvedFilePath,
|
|
105
170
|
resolvedName: resolvedName === name ? undefined : resolvedName,
|
|
@@ -132,6 +132,32 @@ export default function gatherDataForMocks(
|
|
|
132
132
|
preprocessedSchema = mergedSchema;
|
|
133
133
|
}
|
|
134
134
|
|
|
135
|
+
// Merge generic call (e.g., "foo()") data into specific argument calls (e.g., "foo(arg1, arg2)")
|
|
136
|
+
// This handles the case where the generic schema has richer nested data than the specific call
|
|
137
|
+
if (callName.includes('(') && !callName.includes('<')) {
|
|
138
|
+
// Extract the base function name and create generic call
|
|
139
|
+
const baseFunctionName = callName.split('(')[0];
|
|
140
|
+
const genericCall = baseFunctionName + '()';
|
|
141
|
+
|
|
142
|
+
// Only merge if the callName has arguments (not just empty parens)
|
|
143
|
+
if (callName !== genericCall) {
|
|
144
|
+
const mergedSchema: Record<string, string> = {
|
|
145
|
+
...preprocessedSchema,
|
|
146
|
+
};
|
|
147
|
+
for (const path of Object.keys(preprocessedSchema)) {
|
|
148
|
+
if (path.startsWith(genericCall)) {
|
|
149
|
+
// Create corresponding specific path
|
|
150
|
+
const specificPath = callName + path.slice(genericCall.length);
|
|
151
|
+
// Only add if the specific path doesn't already exist
|
|
152
|
+
if (!mergedSchema[specificPath]) {
|
|
153
|
+
mergedSchema[specificPath] = preprocessedSchema[path];
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
preprocessedSchema = mergedSchema;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
135
161
|
const relevantMergedDependencySchema = Object.keys(
|
|
136
162
|
preprocessedSchema,
|
|
137
163
|
).reduce(
|
|
@@ -54,8 +54,14 @@ export default function generateDataStructure({
|
|
|
54
54
|
const nonMockedDependentAnalyses: ReadonlyAnalysisMap =
|
|
55
55
|
allImportedExports.reduce((acc, importedExport) => {
|
|
56
56
|
if (importedExport.isMocked) return acc;
|
|
57
|
+
// Use resolvedFilePath when available (for re-exports from index files)
|
|
58
|
+
// to find the actual analysis of the component
|
|
59
|
+
const lookupPath =
|
|
60
|
+
('resolvedFilePath' in importedExport &&
|
|
61
|
+
importedExport.resolvedFilePath) ||
|
|
62
|
+
importedExport.filePath;
|
|
57
63
|
const relevantDependencyAnalysis =
|
|
58
|
-
dependentAnalyses[
|
|
64
|
+
dependentAnalyses[lookupPath]?.[importedExport.name];
|
|
59
65
|
|
|
60
66
|
if (!relevantDependencyAnalysis) {
|
|
61
67
|
// console.info(
|
|
@@ -8,6 +8,7 @@ import measureAndReportExecutionTime from '../../utils/measureAndReportExecution
|
|
|
8
8
|
import { AI, generateEntityKeyAttributes } from '~codeyam/ai';
|
|
9
9
|
import { awsLog } from '~codeyam/utils';
|
|
10
10
|
import { gatherRelevantDependentKeyAttributes } from '~codeyam/ai';
|
|
11
|
+
import { gatherDataForMocks } from './generateScenarioData';
|
|
11
12
|
|
|
12
13
|
export interface GenerateEntityKeyAttributesArgs {
|
|
13
14
|
entity: Entity;
|
|
@@ -28,7 +29,14 @@ export default async function generateKeyAttributes({
|
|
|
28
29
|
}: GenerateEntityKeyAttributesArgs): Promise<void> {
|
|
29
30
|
if (!['visual', 'library'].includes(entity.entityType)) return;
|
|
30
31
|
|
|
31
|
-
|
|
32
|
+
// Merge direct dataForMocks with recursively gathered data from dependencies
|
|
33
|
+
const structure = {
|
|
34
|
+
arguments: analysis.metadata.scenariosDataStructure?.arguments ?? [],
|
|
35
|
+
dataForMocks: {
|
|
36
|
+
...(analysis.metadata.scenariosDataStructure?.dataForMocks ?? {}),
|
|
37
|
+
...gatherDataForMocks(analysis, dependentAnalyses),
|
|
38
|
+
},
|
|
39
|
+
};
|
|
32
40
|
|
|
33
41
|
awsLog(`🔮 Generating ${error ? 'error ' : ''}scenarios for`, {
|
|
34
42
|
filePath: entity.filePath,
|
|
@@ -104,8 +104,13 @@ export function gatherDataForMocks(
|
|
|
104
104
|
// regardless of whether we found a relevantKey above.
|
|
105
105
|
// This ensures transitive dependencies are included.
|
|
106
106
|
// For example: Activity -> CurrentActivityTab -> useLastLogLine
|
|
107
|
+
// Use resolvedFilePath when available (for re-exports from index files)
|
|
108
|
+
const lookupPath =
|
|
109
|
+
('resolvedFilePath' in importedExport &&
|
|
110
|
+
importedExport.resolvedFilePath) ||
|
|
111
|
+
importedExport.filePath;
|
|
107
112
|
const dependentAnalysis =
|
|
108
|
-
dependentAnalyses?.[
|
|
113
|
+
dependentAnalyses?.[lookupPath]?.[importedExport.name];
|
|
109
114
|
|
|
110
115
|
if (dependentAnalysis && !analysesGathered.has(dependentAnalysis.id)) {
|
|
111
116
|
analysesGathered.add(dependentAnalysis.id);
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
import measureAndReportExecutionTime from '../../utils/measureAndReportExecutionTime';
|
|
8
8
|
import { AI, generateEntityScenarios } from '~codeyam/ai';
|
|
9
9
|
import { awsLog } from '~codeyam/utils';
|
|
10
|
+
import { gatherDataForMocks } from './generateScenarioData';
|
|
10
11
|
|
|
11
12
|
export interface GenerateScenariosArgs {
|
|
12
13
|
entity: Entity;
|
|
@@ -27,7 +28,14 @@ export default async function generateScenarios({
|
|
|
27
28
|
}: GenerateScenariosArgs): Promise<void> {
|
|
28
29
|
if (!['visual', 'library'].includes(entity.entityType)) return;
|
|
29
30
|
|
|
30
|
-
|
|
31
|
+
// Merge direct dataForMocks with recursively gathered data from dependencies
|
|
32
|
+
const structure = {
|
|
33
|
+
arguments: analysis.metadata.scenariosDataStructure?.arguments ?? [],
|
|
34
|
+
dataForMocks: {
|
|
35
|
+
...(analysis.metadata.scenariosDataStructure?.dataForMocks ?? {}),
|
|
36
|
+
...gatherDataForMocks(analysis, dependentAnalyses),
|
|
37
|
+
},
|
|
38
|
+
};
|
|
31
39
|
|
|
32
40
|
awsLog(`🔮 Generating ${error ? 'error ' : ''}scenarios for`, {
|
|
33
41
|
filePath: entity.filePath,
|