@codeyam/codeyam-cli 0.1.0-staging.1669d45 → 0.1.0-staging.2a88920
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 +8 -8
- package/analyzer-template/log.txt +3 -3
- package/analyzer-template/package.json +5 -5
- package/analyzer-template/packages/ai/index.ts +15 -2
- package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +87 -51
- package/analyzer-template/packages/ai/src/lib/astScopes/arrayDerivationDetector.ts +199 -0
- package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +98 -9
- package/analyzer-template/packages/ai/src/lib/astScopes/methodSemantics.ts +139 -23
- package/analyzer-template/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.ts +6 -126
- package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +555 -28
- package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +88 -7
- package/analyzer-template/packages/ai/src/lib/completionCall.ts +198 -34
- package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +772 -243
- package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.ts +205 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.ts +10 -2
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.ts +16 -3
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.ts +6 -4
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +43 -1
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +122 -15
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.ts +160 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.ts +40 -30
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +319 -88
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.ts +129 -0
- package/analyzer-template/packages/ai/src/lib/dataStructureChunking.ts +156 -0
- package/analyzer-template/packages/ai/src/lib/e2eDataTracking.ts +334 -0
- package/analyzer-template/packages/ai/src/lib/extractCriticalDataKeys.ts +120 -0
- package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +642 -7
- package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +35 -6
- package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +383 -6
- package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.ts +1 -1
- package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionals.ts +1299 -51
- package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.ts +239 -0
- package/analyzer-template/packages/ai/src/lib/mergeStatements.ts +90 -96
- package/analyzer-template/packages/ai/src/lib/promptGenerators/gatherAttributesMap.ts +10 -7
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChunkPrompt.ts +82 -0
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateCriticalKeysPrompt.ts +103 -0
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.ts +23 -6
- package/analyzer-template/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.ts +391 -0
- package/analyzer-template/packages/ai/src/lib/resolvePathToControllable.ts +179 -45
- package/analyzer-template/packages/ai/src/lib/worker/SerializableDataStructure.ts +26 -4
- package/analyzer-template/packages/ai/src/lib/worker/analyzeScopeWorker.ts +114 -2
- package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +65 -59
- package/analyzer-template/packages/analyze/src/lib/ProjectAnalyzer.ts +113 -26
- package/analyzer-template/packages/analyze/src/lib/analysisContext.ts +44 -4
- package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.ts +19 -0
- package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.ts +19 -0
- package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllExports.ts +11 -0
- package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.ts +8 -0
- package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.ts +49 -1
- package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.ts +2 -1
- package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +30 -19
- package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +14 -4
- package/analyzer-template/packages/analyze/src/lib/files/analyze/dependencyResolver.ts +6 -0
- package/analyzer-template/packages/analyze/src/lib/files/analyze/gatherEntityMap.ts +4 -2
- package/analyzer-template/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.ts +33 -10
- package/analyzer-template/packages/analyze/src/lib/files/analyzeRemixRoute.ts +4 -5
- package/analyzer-template/packages/analyze/src/lib/files/getImportedExports.ts +14 -12
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +189 -76
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +29 -0
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +77 -9
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +118 -10
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +276 -17
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.ts +56 -11
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/propagateArrayItemSchemas.ts +474 -0
- package/analyzer-template/packages/analyze/src/lib/files/setImportedExports.ts +2 -1
- package/analyzer-template/packages/analyze/src/lib/utils/getFileByPath.ts +19 -0
- package/analyzer-template/packages/aws/package.json +2 -2
- package/analyzer-template/packages/database/src/lib/kysely/db.ts +8 -1
- package/analyzer-template/packages/database/src/lib/kysely/tables/commitsTable.ts +6 -0
- package/analyzer-template/packages/database/src/lib/loadAnalyses.ts +58 -1
- package/analyzer-template/packages/database/src/lib/loadAnalysis.ts +13 -0
- package/analyzer-template/packages/database/src/lib/loadBranch.ts +16 -1
- package/analyzer-template/packages/database/src/lib/loadCommit.ts +11 -0
- package/analyzer-template/packages/database/src/lib/loadCommits.ts +28 -0
- package/analyzer-template/packages/database/src/lib/loadEntities.ts +26 -3
- package/analyzer-template/packages/database/src/lib/loadEntityBranches.ts +12 -0
- package/analyzer-template/packages/database/src/lib/updateCommitMetadata.ts +7 -14
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +8 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.d.ts +1 -0
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.js +3 -0
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.d.ts +2 -0
- package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.js +45 -2
- package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js +8 -0
- package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadBranch.js +11 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadBranch.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.js +7 -0
- package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts +3 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js +22 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts +3 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js +23 -4
- package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.js +9 -0
- package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts +2 -2
- package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js +5 -4
- package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js.map +1 -1
- package/analyzer-template/packages/github/dist/types/index.d.ts +1 -1
- package/analyzer-template/packages/github/dist/types/index.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/types/index.js.map +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts +25 -1
- package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/Commit.d.ts +2 -0
- package/analyzer-template/packages/github/dist/types/src/types/Commit.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts +56 -6
- package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
- package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.d.ts +9 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.js +29 -3
- package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.js.map +1 -1
- package/analyzer-template/packages/github/package.json +1 -1
- package/analyzer-template/packages/types/index.ts +1 -0
- package/analyzer-template/packages/types/src/types/Analysis.ts +25 -0
- package/analyzer-template/packages/types/src/types/Commit.ts +2 -0
- package/analyzer-template/packages/types/src/types/ScenariosDataStructure.ts +70 -6
- package/analyzer-template/packages/types/src/types/ScopeAnalysis.ts +6 -1
- package/analyzer-template/packages/utils/dist/types/index.d.ts +1 -1
- package/analyzer-template/packages/utils/dist/types/index.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/types/index.js.map +1 -1
- package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts +25 -1
- package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/types/src/types/Commit.d.ts +2 -0
- package/analyzer-template/packages/utils/dist/types/src/types/Commit.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts +56 -6
- package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
- package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.d.ts +9 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.js +29 -3
- package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.js.map +1 -1
- package/analyzer-template/packages/utils/src/lib/safeFileName.ts +48 -3
- package/analyzer-template/playwright/capture.ts +20 -8
- package/analyzer-template/playwright/captureStatic.ts +1 -1
- package/analyzer-template/project/analyzeBaselineCommit.ts +5 -0
- package/analyzer-template/project/analyzeRegularCommit.ts +5 -0
- package/analyzer-template/project/captureLibraryFunctionDirect.ts +29 -26
- package/analyzer-template/project/constructMockCode.ts +367 -37
- package/analyzer-template/project/createEntitiesAndSortFiles.ts +83 -0
- package/analyzer-template/project/loadReadyToBeCaptured.ts +65 -41
- package/analyzer-template/project/orchestrateCapture/AwsCaptureTaskRunner.ts +12 -4
- package/analyzer-template/project/orchestrateCapture/SequentialCaptureTaskRunner.ts +18 -7
- package/analyzer-template/project/orchestrateCapture/taskRunner.ts +4 -2
- package/analyzer-template/project/orchestrateCapture.ts +71 -6
- package/analyzer-template/project/reconcileMockDataKeys.ts +152 -9
- package/analyzer-template/project/runAnalysis.ts +4 -0
- package/analyzer-template/project/start.ts +35 -11
- package/analyzer-template/project/writeMockDataTsx.ts +127 -4
- package/analyzer-template/project/writeScenarioComponents.ts +101 -8
- package/analyzer-template/scripts/comboWorkerLoop.cjs +98 -50
- package/background/src/lib/virtualized/project/analyzeBaselineCommit.js +5 -0
- package/background/src/lib/virtualized/project/analyzeBaselineCommit.js.map +1 -1
- package/background/src/lib/virtualized/project/analyzeRegularCommit.js +5 -0
- package/background/src/lib/virtualized/project/analyzeRegularCommit.js.map +1 -1
- package/background/src/lib/virtualized/project/captureLibraryFunctionDirect.js +3 -3
- package/background/src/lib/virtualized/project/captureLibraryFunctionDirect.js.map +1 -1
- package/background/src/lib/virtualized/project/constructMockCode.js +300 -7
- package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
- package/background/src/lib/virtualized/project/createEntitiesAndSortFiles.js +73 -1
- package/background/src/lib/virtualized/project/createEntitiesAndSortFiles.js.map +1 -1
- package/background/src/lib/virtualized/project/loadReadyToBeCaptured.js +19 -8
- package/background/src/lib/virtualized/project/loadReadyToBeCaptured.js.map +1 -1
- package/background/src/lib/virtualized/project/orchestrateCapture/AwsCaptureTaskRunner.js +2 -2
- package/background/src/lib/virtualized/project/orchestrateCapture/AwsCaptureTaskRunner.js.map +1 -1
- package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js +7 -5
- package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js.map +1 -1
- package/background/src/lib/virtualized/project/orchestrateCapture.js +58 -6
- package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
- package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +126 -9
- package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
- package/background/src/lib/virtualized/project/runAnalysis.js +3 -0
- package/background/src/lib/virtualized/project/runAnalysis.js.map +1 -1
- package/background/src/lib/virtualized/project/start.js +32 -11
- package/background/src/lib/virtualized/project/start.js.map +1 -1
- package/background/src/lib/virtualized/project/writeMockDataTsx.js +101 -4
- package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
- package/background/src/lib/virtualized/project/writeScenarioComponents.js +57 -8
- package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
- package/codeyam-cli/src/cli.js +2 -0
- package/codeyam-cli/src/cli.js.map +1 -1
- package/codeyam-cli/src/commands/debug.js +7 -5
- package/codeyam-cli/src/commands/debug.js.map +1 -1
- package/codeyam-cli/src/commands/memory.js +273 -0
- package/codeyam-cli/src/commands/memory.js.map +1 -0
- package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +4 -0
- package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
- package/codeyam-cli/src/utils/analysisRunner.js +21 -2
- package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
- package/codeyam-cli/src/utils/install-skills.js +42 -6
- package/codeyam-cli/src/utils/install-skills.js.map +1 -1
- package/codeyam-cli/src/utils/queue/job.js +1 -0
- package/codeyam-cli/src/utils/queue/job.js.map +1 -1
- package/codeyam-cli/src/utils/queue/manager.js +6 -0
- package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
- package/codeyam-cli/src/utils/rules/index.js +5 -0
- package/codeyam-cli/src/utils/rules/index.js.map +1 -0
- package/codeyam-cli/src/utils/rules/parser.js +106 -0
- package/codeyam-cli/src/utils/rules/parser.js.map +1 -0
- package/codeyam-cli/src/utils/rules/pathMatcher.js +18 -0
- package/codeyam-cli/src/utils/rules/pathMatcher.js.map +1 -0
- package/codeyam-cli/src/utils/rules/staleness.js +132 -0
- package/codeyam-cli/src/utils/rules/staleness.js.map +1 -0
- package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +2 -0
- package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
- package/codeyam-cli/src/webserver/app/lib/database.js +7 -3
- package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
- package/codeyam-cli/src/webserver/bootstrap.js +40 -0
- package/codeyam-cli/src/webserver/bootstrap.js.map +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/EntityItem-DsN1wKrm.js +11 -0
- package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-COi5OvsN.js → EntityTypeBadge-DLqD3qNt.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-BwdQv49w.js → EntityTypeIcon-Ba2JVPzP.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{InlineSpinner-CEleMv_j.js → InlineSpinner-C8lyxW9k.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-D68KarMg.js → InteractivePreview-aht4aafF.js} +2 -2
- package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-L75Wvqgw.js → LibraryFunctionPreview-CVtiBnY5.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-C53WM8qn.js → LoadingDots-B0GLXMsr.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-CrNkmy4i.js → LogViewer-xgeCVgSM.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-OApQuNyq.js +16 -0
- package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-CQifa1n-.js → SafeScreenshot-DuDvi0jm.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-CyaBFX7l.js → ScenarioViewer-DzccYyI8.js} +3 -13
- package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-D36O1rzU.js → TruncatedFilePath-DyFZkK0l.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/_index-BwqWJOgH.js +11 -0
- package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-BwavGCpm.js +32 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.health-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.memory-profile-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.restart-server-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-DgTPh8H-.js → chevron-down-Cx24_aWc.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{chunk-EPOLDU6W-DdQKK6on.js → chunk-EPOLDU6W-CXRTFQ3F.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{circle-check-Dmr2bb1R.js → circle-check-BOARzkeR.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/copy-Bb-80kDT.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-Do4ZLUYa.js → createLucideIcon-BdhJEx6B.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/dev.empty-BBnGWYga.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-CbdFyxZh.js → entity._sha._-BJUiQqZF.js} +12 -12
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha.scenarios._scenarioId.fullscreen-B4iCfs5M.js → entity._sha.scenarios._scenarioId.fullscreen-DavjRmOY.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.create-scenario-wDWZZO1W.js → entity._sha_.create-scenario-D1T4TGjf.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-BMbl7MeQ.js → entity._sha_.edit._scenarioId-CTBG2mmz.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entry.client-5wRKRIH9.js → entry.client-CS2cb_eZ.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/file-code-Dhef1kWN.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/{fileTableUtils-DD3SDH7t.js → fileTableUtils-DMJ7zii9.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/files-CJ6lTdTA.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{git-zXjT7J0G.js → git-CPTZZ-JZ.js} +8 -8
- package/codeyam-cli/src/webserver/build/client/assets/globals-D3yhhV8x.css +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{index-DLbXwndH.js → index-B1h680n5.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{index-gPZ-lad1.js → index-lzqtyFU8.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-BsPXJ81F.js → loader-circle-B7B9V-bu.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/manifest-a78b90a2.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/memory--GCbFsBE.js +92 -0
- package/codeyam-cli/src/webserver/build/client/assets/root-eVAaavTS.js +62 -0
- package/codeyam-cli/src/webserver/build/client/assets/{search-P2FKIUql.js → search-CxXUmBSd.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{settings-B2eDuBj8.js → settings-CS5f3WzT.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{simulations-L18M6-kN.js → simulations-DwFIBT09.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-BDz7kbVA.js → triangle-alert-B6LgvRJg.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{useCustomSizes-29dDmbH8.js → useCustomSizes-C1v1PQzo.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-BUm0UVJm.js → useLastLogLine-aSv48UbS.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{useReportContext-CkIOKTrZ.js → useReportContext-DYxHZQuP.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{useToast-KKw5kTn-.js → useToast-mBRpZPiu.js} +1 -1
- package/codeyam-cli/src/webserver/build/server/assets/index-BM6TDT1Y.js +1 -0
- package/codeyam-cli/src/webserver/build/server/assets/server-build-dYC34MHw.js +257 -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/templates/codeyam-memory-hook.sh +200 -0
- package/codeyam-cli/templates/codeyam:debug.md +47 -3
- package/codeyam-cli/templates/codeyam:diagnose.md +203 -25
- package/codeyam-cli/templates/codeyam:memory.md +341 -0
- package/codeyam-cli/templates/codeyam:new-rule.md +13 -0
- package/codeyam-cli/templates/rule-reflection-hook.py +160 -0
- package/codeyam-cli/templates/rules-instructions.md +93 -0
- package/package.json +8 -5
- package/packages/ai/index.js +7 -3
- package/packages/ai/index.js.map +1 -1
- package/packages/ai/src/lib/analyzeScope.js +70 -29
- package/packages/ai/src/lib/analyzeScope.js.map +1 -1
- package/packages/ai/src/lib/astScopes/arrayDerivationDetector.js +150 -0
- package/packages/ai/src/lib/astScopes/arrayDerivationDetector.js.map +1 -0
- package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +78 -8
- package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
- package/packages/ai/src/lib/astScopes/methodSemantics.js +109 -23
- package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
- package/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.js +1 -102
- package/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.js.map +1 -1
- package/packages/ai/src/lib/astScopes/processExpression.js +440 -27
- package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
- package/packages/ai/src/lib/completionCall.js +161 -30
- package/packages/ai/src/lib/completionCall.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +589 -166
- package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js +179 -0
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js +7 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js +13 -3
- package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js +6 -4
- package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +41 -1
- package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +104 -11
- package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js +159 -0
- package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js.map +1 -0
- package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js +37 -20
- package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +265 -79
- package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.js +107 -0
- package/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.js.map +1 -0
- package/packages/ai/src/lib/dataStructureChunking.js +111 -0
- package/packages/ai/src/lib/dataStructureChunking.js.map +1 -0
- package/packages/ai/src/lib/e2eDataTracking.js +241 -0
- package/packages/ai/src/lib/e2eDataTracking.js.map +1 -0
- package/packages/ai/src/lib/extractCriticalDataKeys.js +96 -0
- package/packages/ai/src/lib/extractCriticalDataKeys.js.map +1 -0
- package/packages/ai/src/lib/generateEntityScenarioData.js +525 -8
- package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
- package/packages/ai/src/lib/generateEntityScenarios.js +26 -2
- package/packages/ai/src/lib/generateEntityScenarios.js.map +1 -1
- package/packages/ai/src/lib/generateExecutionFlows.js +281 -4
- package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -1
- package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js +946 -42
- package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js.map +1 -1
- package/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.js +194 -0
- package/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.js.map +1 -0
- package/packages/ai/src/lib/mergeStatements.js +70 -51
- package/packages/ai/src/lib/mergeStatements.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js +10 -4
- package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateChunkPrompt.js +54 -0
- package/packages/ai/src/lib/promptGenerators/generateChunkPrompt.js.map +1 -0
- package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js +15 -7
- package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.js +335 -0
- package/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.js.map +1 -0
- package/packages/ai/src/lib/resolvePathToControllable.js +155 -41
- package/packages/ai/src/lib/resolvePathToControllable.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/ai/src/lib/worker/analyzeScopeWorker.js +94 -1
- package/packages/ai/src/lib/worker/analyzeScopeWorker.js.map +1 -1
- package/packages/analyze/src/lib/FileAnalyzer.js +60 -36
- package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
- package/packages/analyze/src/lib/ProjectAnalyzer.js +96 -26
- package/packages/analyze/src/lib/ProjectAnalyzer.js.map +1 -1
- package/packages/analyze/src/lib/analysisContext.js +30 -5
- package/packages/analyze/src/lib/analysisContext.js.map +1 -1
- package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js +14 -0
- package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js.map +1 -1
- package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js +14 -0
- package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js.map +1 -1
- package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js +6 -0
- package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js.map +1 -1
- package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js +6 -0
- package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js.map +1 -1
- package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js +39 -1
- package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js.map +1 -1
- package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js +2 -1
- package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +21 -9
- package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +14 -4
- package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/dependencyResolver.js +5 -0
- package/packages/analyze/src/lib/files/analyze/dependencyResolver.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js +2 -1
- package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js +31 -10
- package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js.map +1 -1
- package/packages/analyze/src/lib/files/analyzeRemixRoute.js +3 -2
- package/packages/analyze/src/lib/files/analyzeRemixRoute.js.map +1 -1
- package/packages/analyze/src/lib/files/getImportedExports.js +11 -7
- package/packages/analyze/src/lib/files/getImportedExports.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js +160 -68
- package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +25 -8
- package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +71 -9
- package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js +57 -9
- package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +233 -9
- package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.js +46 -9
- package/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.js.map +1 -1
- package/packages/analyze/src/lib/files/setImportedExports.js +2 -1
- package/packages/analyze/src/lib/files/setImportedExports.js.map +1 -1
- package/packages/analyze/src/lib/utils/getFileByPath.js +12 -0
- package/packages/analyze/src/lib/utils/getFileByPath.js.map +1 -0
- package/packages/database/src/lib/kysely/db.js +8 -1
- package/packages/database/src/lib/kysely/db.js.map +1 -1
- package/packages/database/src/lib/kysely/tables/commitsTable.js +3 -0
- package/packages/database/src/lib/kysely/tables/commitsTable.js.map +1 -1
- package/packages/database/src/lib/loadAnalyses.js +45 -2
- package/packages/database/src/lib/loadAnalyses.js.map +1 -1
- package/packages/database/src/lib/loadAnalysis.js +8 -0
- package/packages/database/src/lib/loadAnalysis.js.map +1 -1
- package/packages/database/src/lib/loadBranch.js +11 -1
- package/packages/database/src/lib/loadBranch.js.map +1 -1
- package/packages/database/src/lib/loadCommit.js +7 -0
- package/packages/database/src/lib/loadCommit.js.map +1 -1
- package/packages/database/src/lib/loadCommits.js +22 -1
- package/packages/database/src/lib/loadCommits.js.map +1 -1
- package/packages/database/src/lib/loadEntities.js +23 -4
- package/packages/database/src/lib/loadEntities.js.map +1 -1
- package/packages/database/src/lib/loadEntityBranches.js +9 -0
- package/packages/database/src/lib/loadEntityBranches.js.map +1 -1
- package/packages/database/src/lib/updateCommitMetadata.js +5 -4
- package/packages/database/src/lib/updateCommitMetadata.js.map +1 -1
- package/packages/types/index.js.map +1 -1
- package/packages/utils/src/lib/safeFileName.js +29 -3
- package/packages/utils/src/lib/safeFileName.js.map +1 -1
- package/scripts/finalize-analyzer.cjs +3 -3
- package/codeyam-cli/src/webserver/build/client/assets/EntityItem-vauWK972.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-DzJRkCkr.js +0 -11
- package/codeyam-cli/src/webserver/build/client/assets/_index-Be83mo_j.js +0 -11
- package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-BN6wu6Y-.js +0 -37
- package/codeyam-cli/src/webserver/build/client/assets/dev.empty-Bn6aCAy_.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/files-DKyMFI90.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/globals-DTTQ3gY7.css +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/manifest-22590fcf.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/root-BsAarjAM.js +0 -57
- package/codeyam-cli/src/webserver/build/server/assets/index-BND5I5fv.js +0 -1
- package/codeyam-cli/src/webserver/build/server/assets/server-build-CFXnd7MG.js +0 -228
|
@@ -6,7 +6,14 @@ type ImportsAnalysis = {
|
|
|
6
6
|
[importedFilePath: string]: ExportInfo[];
|
|
7
7
|
};
|
|
8
8
|
|
|
9
|
+
const importsAnalysisCache = new WeakMap<ts.SourceFile, ImportsAnalysis>();
|
|
10
|
+
|
|
9
11
|
export function getImportsAnalysis(sourceFile: ts.SourceFile): ImportsAnalysis {
|
|
12
|
+
const cached = importsAnalysisCache.get(sourceFile);
|
|
13
|
+
if (cached) {
|
|
14
|
+
return cached;
|
|
15
|
+
}
|
|
16
|
+
|
|
10
17
|
const importsMapEntries: [string, ExportInfo[]][] = [];
|
|
11
18
|
|
|
12
19
|
const importsVisitor = (node: ts.Node) => {
|
|
@@ -35,6 +42,7 @@ export function getImportsAnalysis(sourceFile: ts.SourceFile): ImportsAnalysis {
|
|
|
35
42
|
{} as ImportsAnalysis,
|
|
36
43
|
);
|
|
37
44
|
|
|
45
|
+
importsAnalysisCache.set(sourceFile, consolidatedImportsMapEntries);
|
|
38
46
|
return consolidatedImportsMapEntries;
|
|
39
47
|
}
|
|
40
48
|
|
|
@@ -2,21 +2,44 @@ import ts from 'typescript';
|
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import fs from 'fs';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Cache for nearest tsconfig lookups (keyed by directory).
|
|
7
|
+
* Speeds up repeated lookups during module resolution.
|
|
8
|
+
*/
|
|
9
|
+
const nearestTsConfigCache = new Map<string, string | undefined>();
|
|
10
|
+
|
|
5
11
|
/**
|
|
6
12
|
* Find the nearest tsconfig.json by walking up the directory tree from the source file
|
|
7
13
|
*/
|
|
8
14
|
function findNearestTsConfig(sourceFileName: string): string | undefined {
|
|
9
15
|
let currentDir = path.dirname(sourceFileName);
|
|
10
16
|
const root = path.parse(currentDir).root;
|
|
17
|
+
const visited: string[] = [];
|
|
11
18
|
|
|
12
19
|
while (currentDir !== root) {
|
|
20
|
+
const cached = nearestTsConfigCache.get(currentDir);
|
|
21
|
+
if (cached !== undefined || nearestTsConfigCache.has(currentDir)) {
|
|
22
|
+
for (const dir of visited) {
|
|
23
|
+
nearestTsConfigCache.set(dir, cached);
|
|
24
|
+
}
|
|
25
|
+
return cached;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
visited.push(currentDir);
|
|
13
29
|
const tsConfigPath = path.join(currentDir, 'tsconfig.json');
|
|
14
30
|
if (fs.existsSync(tsConfigPath)) {
|
|
31
|
+
for (const dir of visited) {
|
|
32
|
+
nearestTsConfigCache.set(dir, tsConfigPath);
|
|
33
|
+
}
|
|
15
34
|
return tsConfigPath;
|
|
16
35
|
}
|
|
17
36
|
currentDir = path.dirname(currentDir);
|
|
18
37
|
}
|
|
19
38
|
|
|
39
|
+
for (const dir of visited) {
|
|
40
|
+
nearestTsConfigCache.set(dir, undefined);
|
|
41
|
+
}
|
|
42
|
+
|
|
20
43
|
return undefined;
|
|
21
44
|
}
|
|
22
45
|
|
|
@@ -25,6 +48,14 @@ function findNearestTsConfig(sourceFileName: string): string | undefined {
|
|
|
25
48
|
*/
|
|
26
49
|
const tsConfigCache = new Map<string, ts.CompilerOptions>();
|
|
27
50
|
|
|
51
|
+
/**
|
|
52
|
+
* Cache resolved module lookups by program for fast repeat access.
|
|
53
|
+
*/
|
|
54
|
+
const resolvedModuleCacheByProgram = new WeakMap<
|
|
55
|
+
ts.Program,
|
|
56
|
+
Map<string, ts.ResolvedModuleFull | null>
|
|
57
|
+
>();
|
|
58
|
+
|
|
28
59
|
/**
|
|
29
60
|
* Get compiler options from a tsconfig file
|
|
30
61
|
*/
|
|
@@ -62,6 +93,19 @@ export function getResolvedModule(
|
|
|
62
93
|
// Try to find the nearest tsconfig for this source file
|
|
63
94
|
const nearestTsConfig = findNearestTsConfig(sourceFile.fileName);
|
|
64
95
|
|
|
96
|
+
const cacheForProgram =
|
|
97
|
+
resolvedModuleCacheByProgram.get(program) ??
|
|
98
|
+
new Map<string, ts.ResolvedModuleFull | null>();
|
|
99
|
+
if (!resolvedModuleCacheByProgram.has(program)) {
|
|
100
|
+
resolvedModuleCacheByProgram.set(program, cacheForProgram);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
const cacheKey = `${nearestTsConfig ?? ''}|${sourceFile.fileName}|${moduleName}`;
|
|
104
|
+
if (cacheForProgram.has(cacheKey)) {
|
|
105
|
+
const cached = cacheForProgram.get(cacheKey);
|
|
106
|
+
return cached ?? undefined;
|
|
107
|
+
}
|
|
108
|
+
|
|
65
109
|
// Start with the program's compiler options
|
|
66
110
|
let compilerOptions = program.getCompilerOptions();
|
|
67
111
|
|
|
@@ -90,6 +134,7 @@ export function getResolvedModule(
|
|
|
90
134
|
|
|
91
135
|
// If TypeScript's resolution succeeded, return it
|
|
92
136
|
if (result.resolvedModule) {
|
|
137
|
+
cacheForProgram.set(cacheKey, result.resolvedModule);
|
|
93
138
|
return result.resolvedModule;
|
|
94
139
|
}
|
|
95
140
|
|
|
@@ -105,14 +150,17 @@ export function getResolvedModule(
|
|
|
105
150
|
for (const ext of extensions) {
|
|
106
151
|
const testPath = absolutePath + ext;
|
|
107
152
|
if (fs.existsSync(testPath)) {
|
|
108
|
-
|
|
153
|
+
const resolved = {
|
|
109
154
|
resolvedFileName: testPath,
|
|
110
155
|
extension: ext.includes('/') ? path.extname(ext) : ext,
|
|
111
156
|
isExternalLibraryImport: false,
|
|
112
157
|
} as ts.ResolvedModuleFull;
|
|
158
|
+
cacheForProgram.set(cacheKey, resolved);
|
|
159
|
+
return resolved;
|
|
113
160
|
}
|
|
114
161
|
}
|
|
115
162
|
}
|
|
116
163
|
|
|
164
|
+
cacheForProgram.set(cacheKey, null);
|
|
117
165
|
return undefined;
|
|
118
166
|
}
|
package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.ts
CHANGED
|
@@ -21,5 +21,6 @@ export function getSourceFilesForAllImports(
|
|
|
21
21
|
|
|
22
22
|
visit(sourceFile); // Start visiting nodes from the root source file
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
const uniqueModuleNames = Array.from(new Set(moduleNames));
|
|
25
|
+
return getSourceFilesForImports(uniqueModuleNames, sourceFile, program);
|
|
25
26
|
}
|
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
getConditionalEffects,
|
|
18
18
|
getCompoundConditionals,
|
|
19
19
|
getChildBoundaryGatingConditions,
|
|
20
|
+
getJsxRenderingUsages,
|
|
20
21
|
} from '~codeyam/ai';
|
|
21
22
|
import type { AnalysisOptions } from '../analyzeEntities';
|
|
22
23
|
|
|
@@ -134,6 +135,8 @@ export default async function prepareEntityDataStructures(
|
|
|
134
135
|
// Include child boundary gating conditions for child component flow merging
|
|
135
136
|
childBoundaryGatingConditions:
|
|
136
137
|
isolatedDataStructure.childBoundaryGatingConditions,
|
|
138
|
+
// Include JSX rendering usages for array size and text length flow generation
|
|
139
|
+
jsxRenderingUsages: isolatedDataStructure.jsxRenderingUsages,
|
|
137
140
|
};
|
|
138
141
|
|
|
139
142
|
// Detect wrapper requirements (Context providers, etc.)
|
|
@@ -333,11 +336,23 @@ async function getEntityDataStructureAndFunctionCalls({
|
|
|
333
336
|
functionName: importedExport.name,
|
|
334
337
|
});
|
|
335
338
|
|
|
336
|
-
// If neither signature nor return value found, this function
|
|
337
|
-
//
|
|
338
|
-
//
|
|
339
|
+
// If neither signature nor return value found, check if this function has matching
|
|
340
|
+
// external function calls. External functions (like useLoaderData from react-router)
|
|
341
|
+
// don't have entries in functionResults, so getReturnValue returns null for them.
|
|
342
|
+
// But their return values ARE traced in externalFunctionCalls via perVariableSchemas.
|
|
343
|
+
// We need to check for matching calls before skipping.
|
|
339
344
|
if (!signatureSchema && !returnValueSchema) {
|
|
340
|
-
|
|
345
|
+
const hasMatchingExternalCall =
|
|
346
|
+
dataStructure.externalFunctionCalls?.some(
|
|
347
|
+
(fc) =>
|
|
348
|
+
fc.name === importedExport.name ||
|
|
349
|
+
fc.name.startsWith(importedExport.name + '<'),
|
|
350
|
+
);
|
|
351
|
+
|
|
352
|
+
// Only skip if there are no matching external function calls
|
|
353
|
+
if (!hasMatchingExternalCall) {
|
|
354
|
+
return acc;
|
|
355
|
+
}
|
|
341
356
|
}
|
|
342
357
|
|
|
343
358
|
// Clone schemas before deduplication to avoid mutating shared references
|
|
@@ -557,19 +572,6 @@ async function getEntityDataStructureAndFunctionCalls({
|
|
|
557
572
|
|
|
558
573
|
// Get compound conditionals (grouped conditions that must all be true)
|
|
559
574
|
const compoundConditionals = getCompoundConditionals(dataStructure);
|
|
560
|
-
|
|
561
|
-
console.log(
|
|
562
|
-
`[ConditionalEffects] prepareDataStructures for ${entity.name}:`,
|
|
563
|
-
`dataStructure.conditionalEffects=${(dataStructure as any).conditionalEffects?.length ?? 0}`,
|
|
564
|
-
`getConditionalEffects returned ${conditionalEffects.length} effects`,
|
|
565
|
-
conditionalEffects
|
|
566
|
-
.slice(0, 5)
|
|
567
|
-
.map(
|
|
568
|
-
(e: any) =>
|
|
569
|
-
`${e.effect?.setterName}(${e.effect?.value?.slice?.(0, 20) ?? e.effect?.value})`,
|
|
570
|
-
),
|
|
571
|
-
);
|
|
572
|
-
|
|
573
575
|
const rawUsageEquivalencies = getUsageEquivalencies(dataStructure);
|
|
574
576
|
const rawSourceEquivalencies = getSourceEquivalencies(dataStructure);
|
|
575
577
|
|
|
@@ -577,11 +579,16 @@ async function getEntityDataStructureAndFunctionCalls({
|
|
|
577
579
|
const childBoundaryGatingConditions =
|
|
578
580
|
getChildBoundaryGatingConditions(dataStructure);
|
|
579
581
|
|
|
582
|
+
// Get JSX rendering usages for array size and text length flow generation
|
|
583
|
+
const jsxRenderingUsages = getJsxRenderingUsages(dataStructure);
|
|
584
|
+
|
|
585
|
+
const equivalentSignatureVariables =
|
|
586
|
+
getEquivalentSignatureVariables(dataStructure);
|
|
587
|
+
|
|
580
588
|
const isolatedDataStructure = {
|
|
581
589
|
signatureSchema: deduplicateFunctionSchemas(clonedRawSignature),
|
|
582
590
|
returnValueSchema: deduplicateFunctionSchemas(clonedRawReturnValue),
|
|
583
|
-
equivalentSignatureVariables
|
|
584
|
-
getEquivalentSignatureVariables(dataStructure),
|
|
591
|
+
equivalentSignatureVariables,
|
|
585
592
|
dependencySchemas,
|
|
586
593
|
environmentVariables: dataStructure.environmentVariables,
|
|
587
594
|
conditionalUsages:
|
|
@@ -604,6 +611,10 @@ async function getEntityDataStructureAndFunctionCalls({
|
|
|
604
611
|
Object.keys(childBoundaryGatingConditions).length > 0
|
|
605
612
|
? childBoundaryGatingConditions
|
|
606
613
|
: undefined,
|
|
614
|
+
// Include JSX rendering usages for array size and text length flow generation
|
|
615
|
+
// These track arrays rendered via .map() and strings interpolated in JSX
|
|
616
|
+
jsxRenderingUsages:
|
|
617
|
+
jsxRenderingUsages.length > 0 ? jsxRenderingUsages : undefined,
|
|
607
618
|
};
|
|
608
619
|
|
|
609
620
|
const functionCalls: Record<string, string[]> = {};
|
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
measureAndReportExecutionTime,
|
|
6
6
|
ProjectAnalyzer,
|
|
7
7
|
} from '~codeyam/analyze';
|
|
8
|
+
import { getFileByPathSafe } from '../../utils/getFileByPath';
|
|
8
9
|
import trackEntityCircularDependencies from './trackEntityCircularDependencies';
|
|
9
10
|
import validateDependencyAnalyses from './validateDependencyAnalyses';
|
|
10
11
|
import extractClassMethods from './analyzeEntities/extractClassMethods';
|
|
@@ -388,10 +389,19 @@ export default async function analyzeEntities({
|
|
|
388
389
|
// Circular dependency detected in path - skip
|
|
389
390
|
continue;
|
|
390
391
|
}
|
|
391
|
-
// If already visited via another traversal path,
|
|
392
|
-
//
|
|
393
|
-
//
|
|
392
|
+
// If already visited via another traversal path, check if it's a leaf.
|
|
393
|
+
// If it's a leaf, we should still wait for it to complete.
|
|
394
|
+
// Only skip if we've already explored it and it's NOT a leaf (meaning it's
|
|
395
|
+
// blocked on something else - continuing to traverse would cause a deadlock).
|
|
394
396
|
if (visited.has(dependentEntityKey)) {
|
|
397
|
+
// If the visited entity is a leaf, we should wait for it to complete
|
|
398
|
+
// before processing this entity. Don't skip it!
|
|
399
|
+
if (leafKeys.has(dependentEntityKey)) {
|
|
400
|
+
// It's a leaf that hasn't completed yet - wait for it
|
|
401
|
+
isLeaf = false;
|
|
402
|
+
continue;
|
|
403
|
+
}
|
|
404
|
+
// If it's not a leaf, it's blocked on something else - skip to avoid deadlock
|
|
395
405
|
continue;
|
|
396
406
|
}
|
|
397
407
|
isLeaf = false;
|
|
@@ -426,7 +436,7 @@ export default async function analyzeEntities({
|
|
|
426
436
|
}
|
|
427
437
|
|
|
428
438
|
const file =
|
|
429
|
-
entity.file ||
|
|
439
|
+
entity.file || getFileByPathSafe(projectAnalyzer, entity.filePath);
|
|
430
440
|
if (!file) {
|
|
431
441
|
awsLog(
|
|
432
442
|
`CodeYam: analyzeEntities: File not found for entity: ${entityKey}`,
|
|
@@ -100,6 +100,12 @@ export function getCandidatesReadyForCapture(
|
|
|
100
100
|
continue;
|
|
101
101
|
}
|
|
102
102
|
|
|
103
|
+
// Skip notExported entities - they can't be imported into the simulation
|
|
104
|
+
// environment and will always fail capture. Don't mark them as ready.
|
|
105
|
+
if (candidate.entity?.metadata?.notExported) {
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
|
|
103
109
|
// Get all transitive dependencies
|
|
104
110
|
const candidateKey = `${candidate.filePath}:${candidate.entityName}`;
|
|
105
111
|
const { missingDependencies } = getTransitiveDependencies(
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Entity } from '~codeyam/types';
|
|
2
2
|
import findOrCreateEntity from './findOrCreateEntity';
|
|
3
3
|
import { ProjectAnalyzer } from '../../ProjectAnalyzer';
|
|
4
|
+
import { getFileByPathSafe } from '../../utils/getFileByPath';
|
|
4
5
|
import { AnalysisContext } from '../../analysisContext';
|
|
5
6
|
|
|
6
7
|
// Track files we've already warned about to avoid duplicate warnings
|
|
@@ -71,8 +72,9 @@ export default async function gatherEntityMap({
|
|
|
71
72
|
// ` → imported export ${importedExportFilePath}:${importedExportName}`,
|
|
72
73
|
// );
|
|
73
74
|
|
|
74
|
-
const importedFile =
|
|
75
|
-
|
|
75
|
+
const importedFile = getFileByPathSafe(
|
|
76
|
+
projectAnalyzer,
|
|
77
|
+
importedExportFilePath,
|
|
76
78
|
);
|
|
77
79
|
|
|
78
80
|
if (!importedFile) {
|
package/analyzer-template/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type {
|
|
2
2
|
Analysis,
|
|
3
|
+
Entity,
|
|
3
4
|
ReadonlyAnalysisMap,
|
|
4
5
|
ReadonlyAnalysis,
|
|
5
6
|
ReadonlyEntity,
|
|
@@ -61,13 +62,13 @@ export default function validateDependencyAnalyses({
|
|
|
61
62
|
for (const dependency of entity.metadata?.importedExports ?? []) {
|
|
62
63
|
const dependencyFilePath =
|
|
63
64
|
dependency.resolvedFilePath ?? dependency.filePath;
|
|
64
|
-
|
|
65
|
+
// Use the entity/import name, not the export name (resolvedName).
|
|
66
|
+
// For default exports, resolvedName is 'default' but the entity is stored
|
|
67
|
+
// under its actual identifier name (e.g., 'QuoteDetailsDrawer').
|
|
68
|
+
const dependencyName = dependency.name;
|
|
65
69
|
|
|
66
70
|
// if the entity has duplicate dependencies, handle gracefully
|
|
67
71
|
if (dependentAnalyses[dependencyFilePath]?.[dependencyName]) {
|
|
68
|
-
// console.log(
|
|
69
|
-
// `CodeYam: validateDependencyAnalyses: Entity ${entity.filePath}:${entity.name} has duplicate dependency ${dependencyFilePath}:${dependencyName}. Skipping...`,
|
|
70
|
-
// );
|
|
71
72
|
continue;
|
|
72
73
|
}
|
|
73
74
|
|
|
@@ -103,6 +104,23 @@ export default function validateDependencyAnalyses({
|
|
|
103
104
|
continue;
|
|
104
105
|
}
|
|
105
106
|
|
|
107
|
+
// Ensure the entity is attached to the analysis.
|
|
108
|
+
// The entity might not be attached if the analysis was loaded from the database
|
|
109
|
+
// without its entity being in the context's entity map.
|
|
110
|
+
// This is critical for generateDataStructure to merge child component tRPC calls.
|
|
111
|
+
let dependentEntity: ReadonlyEntity | undefined = dependentAnalysis.entity;
|
|
112
|
+
if (!dependentEntity) {
|
|
113
|
+
// Try to get the entity from the context
|
|
114
|
+
dependentEntity = context.getEntity(dependencyFilePath, dependencyName);
|
|
115
|
+
if (dependentEntity) {
|
|
116
|
+
// Attach the entity to the analysis (mutating, but necessary for downstream use)
|
|
117
|
+
// We need the double cast because ReadonlyEntity has readonly arrays that aren't
|
|
118
|
+
// assignable to Entity's mutable arrays.
|
|
119
|
+
(dependentAnalysis as unknown as Analysis).entity =
|
|
120
|
+
dependentEntity as unknown as Entity;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
106
124
|
// Store the dependent analysis
|
|
107
125
|
dependentAnalyses[dependencyFilePath] ||= {};
|
|
108
126
|
dependentAnalyses[dependencyFilePath][dependencyName] = dependentAnalysis;
|
|
@@ -125,12 +143,17 @@ export default function validateDependencyAnalyses({
|
|
|
125
143
|
}
|
|
126
144
|
}
|
|
127
145
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
146
|
+
// Only recurse if we have the entity. Without the entity, we can't process
|
|
147
|
+
// the dependency's own dependencies, but we can still use this dependency's
|
|
148
|
+
// analysis data (mergedDataStructure, etc.)
|
|
149
|
+
if (dependentEntity) {
|
|
150
|
+
validateDependencyAnalyses({
|
|
151
|
+
readonlyAnalysis: dependentAnalysis,
|
|
152
|
+
entity: dependentEntity,
|
|
153
|
+
context: context,
|
|
154
|
+
dependentAnalyses,
|
|
155
|
+
});
|
|
156
|
+
}
|
|
134
157
|
}
|
|
135
158
|
|
|
136
159
|
return { dependentAnalyses };
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Entity, EntityType, File, ProjectFramework } from '~codeyam/types';
|
|
2
2
|
import { ProjectAnalyzer } from '../ProjectAnalyzer';
|
|
3
|
+
import { getFileByPathSafe } from '../utils/getFileByPath';
|
|
3
4
|
import { generateSha } from '~codeyam/database';
|
|
4
5
|
import { isRemixRoute } from '~codeyam/utils';
|
|
5
6
|
|
|
@@ -88,11 +89,9 @@ export default function analyzeRemixRoute(
|
|
|
88
89
|
// Find root.tsx for this route's webapp and add as implicit dependency
|
|
89
90
|
// This ensures root.tsx dependencies (like useLoaderData in AppContent) get analyzed for mocking
|
|
90
91
|
const routeAppDir = file.path.split('/routes/')[0];
|
|
91
|
-
const rootFile =
|
|
92
|
-
(
|
|
93
|
-
|
|
94
|
-
f.path === `${routeAppDir}/root.jsx`,
|
|
95
|
-
);
|
|
92
|
+
const rootFile =
|
|
93
|
+
getFileByPathSafe(projectAnalyzer, `${routeAppDir}/root.tsx`) ??
|
|
94
|
+
getFileByPathSafe(projectAnalyzer, `${routeAppDir}/root.jsx`);
|
|
96
95
|
|
|
97
96
|
const rootDependencies: Entity['metadata']['importedExports'] = [];
|
|
98
97
|
if (rootFile) {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Entity, File, Project } from '~codeyam/types';
|
|
2
2
|
import { FileAnalyzer } from '../FileAnalyzer';
|
|
3
3
|
import { ProjectAnalyzer } from '../ProjectAnalyzer';
|
|
4
|
+
import { getFileByPathSafe } from '../utils/getFileByPath';
|
|
4
5
|
import type { FunctionDependenciesMap } from '../asts/sourceFiles/getPseudoFile';
|
|
5
6
|
// import { generateSha } from '~codeyam/database';
|
|
6
7
|
|
|
@@ -63,9 +64,7 @@ export default function getImportedExports(
|
|
|
63
64
|
imports[filePath].resolvedPath ??
|
|
64
65
|
filePath;
|
|
65
66
|
|
|
66
|
-
let importedExportFile =
|
|
67
|
-
(f) => f.path === searchPath,
|
|
68
|
-
);
|
|
67
|
+
let importedExportFile = getFileByPathSafe(projectAnalyzer, searchPath);
|
|
69
68
|
|
|
70
69
|
// Track the actual path we found (may differ from searchPath after dist->src mapping)
|
|
71
70
|
let actualResolvedPath = imports[filePath].resolvedPath;
|
|
@@ -84,7 +83,7 @@ export default function getImportedExports(
|
|
|
84
83
|
const srcPath = `${packagePath}/src/${relativePath}`
|
|
85
84
|
.replace(/\.d\.ts$/, '.ts')
|
|
86
85
|
.replace(/\.js$/, '.ts');
|
|
87
|
-
importedExportFile =
|
|
86
|
+
importedExportFile = getFileByPathSafe(projectAnalyzer, srcPath);
|
|
88
87
|
if (importedExportFile) {
|
|
89
88
|
actualResolvedPath = srcPath;
|
|
90
89
|
console.log(
|
|
@@ -97,7 +96,7 @@ export default function getImportedExports(
|
|
|
97
96
|
if (!importedExportFile) {
|
|
98
97
|
const srcPath = searchPath.replace('/dist/', '/src/');
|
|
99
98
|
// Try exact match first
|
|
100
|
-
importedExportFile =
|
|
99
|
+
importedExportFile = getFileByPathSafe(projectAnalyzer, srcPath);
|
|
101
100
|
if (importedExportFile) {
|
|
102
101
|
actualResolvedPath = srcPath;
|
|
103
102
|
console.log(
|
|
@@ -114,13 +113,16 @@ export default function getImportedExports(
|
|
|
114
113
|
const basePath = srcPath
|
|
115
114
|
.replace(/\.d\.ts$/, '')
|
|
116
115
|
.replace(/\.js$/, '');
|
|
117
|
-
importedExportFile =
|
|
118
|
-
(
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
116
|
+
importedExportFile =
|
|
117
|
+
getFileByPathSafe(projectAnalyzer, basePath + '.ts') ??
|
|
118
|
+
getFileByPathSafe(projectAnalyzer, basePath + '.tsx');
|
|
119
|
+
if (!importedExportFile) {
|
|
120
|
+
importedExportFile = project.files.find(
|
|
121
|
+
(f) =>
|
|
122
|
+
f.path.startsWith(basePath.replace('/index', '/')) &&
|
|
123
|
+
!f.path.includes('/dist/'),
|
|
124
|
+
);
|
|
125
|
+
}
|
|
124
126
|
if (importedExportFile) {
|
|
125
127
|
actualResolvedPath = importedExportFile.path;
|
|
126
128
|
console.log(
|