@codeyam/codeyam-cli 0.1.0-staging.1669d45 → 0.1.0-staging.1a2737b
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 +19 -19
- package/analyzer-template/packages/ai/index.ts +16 -2
- package/analyzer-template/packages/ai/package.json +2 -2
- package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +110 -52
- 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/forInStatementHandler.ts +10 -17
- package/analyzer-template/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.ts +6 -126
- package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +656 -28
- package/analyzer-template/packages/ai/src/lib/astScopes/sharedPatterns.ts +28 -0
- package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +94 -7
- package/analyzer-template/packages/ai/src/lib/completionCall.ts +198 -34
- package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +1331 -254
- package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.ts +5 -1
- 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 +54 -3
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +124 -17
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.ts +70 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.ts +140 -14
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.ts +179 -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 +393 -97
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.ts +129 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.ts +35 -0
- package/analyzer-template/packages/ai/src/lib/dataStructureChunking.ts +183 -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/generateEntityDataStructure.ts +58 -3
- package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +936 -7
- package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +35 -6
- package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +515 -6
- package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.ts +1 -1
- package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionals.ts +1540 -75
- package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.ts +239 -0
- package/analyzer-template/packages/ai/src/lib/isolateScopes.ts +51 -3
- package/analyzer-template/packages/ai/src/lib/mergeJsonTypeDefinitions.ts +5 -0
- package/analyzer-template/packages/ai/src/lib/mergeStatements.ts +90 -96
- package/analyzer-template/packages/ai/src/lib/promptGenerators/collapseNullableObjects.ts +118 -0
- 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 +44 -7
- 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/index.ts +2 -0
- 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/nodes/getNodeType.ts +1 -0
- 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 +99 -22
- package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +19 -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/TransformationTracer.ts +1315 -0
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +193 -76
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +87 -25
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +269 -22
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +118 -10
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +647 -73
- 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/index.ts +1 -0
- package/analyzer-template/packages/analyze/src/lib/utils/getFileByPath.ts +19 -0
- package/analyzer-template/packages/aws/package.json +10 -10
- package/analyzer-template/packages/database/package.json +1 -1
- package/analyzer-template/packages/database/src/lib/analysisBranchToDb.ts +1 -1
- package/analyzer-template/packages/database/src/lib/analysisToDb.ts +1 -1
- package/analyzer-template/packages/database/src/lib/branchToDb.ts +1 -1
- package/analyzer-template/packages/database/src/lib/commitBranchToDb.ts +1 -1
- package/analyzer-template/packages/database/src/lib/commitToDb.ts +1 -1
- package/analyzer-template/packages/database/src/lib/fileToDb.ts +1 -1
- package/analyzer-template/packages/database/src/lib/kysely/db.ts +14 -1
- package/analyzer-template/packages/database/src/lib/kysely/tables/commitsTable.ts +6 -0
- package/analyzer-template/packages/database/src/lib/kysely/tables/debugReportsTable.ts +1 -1
- package/analyzer-template/packages/database/src/lib/kysely/tables/labsRequestsTable.ts +52 -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/projectToDb.ts +1 -1
- package/analyzer-template/packages/database/src/lib/saveFiles.ts +1 -1
- package/analyzer-template/packages/database/src/lib/scenarioToDb.ts +1 -1
- package/analyzer-template/packages/database/src/lib/updateCommitMetadata.ts +7 -14
- package/analyzer-template/packages/database/src/lib/userScenarioToDb.ts +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +2 -0
- 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 +11 -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/kysely/tables/debugReportsTable.d.ts +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts +23 -0
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts.map +1 -0
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
- 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/projectToDb.js +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.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/ProjectMetadata.d.ts +7 -0
- package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.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/ProjectMetadata.ts +7 -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/ProjectMetadata.d.ts +7 -0
- package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.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/fs/rsyncCopy.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +93 -2
- package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.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/fs/rsyncCopy.ts +108 -2
- 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 +436 -44
- 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 +75 -7
- 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 +295 -10
- package/analyzer-template/project/writeScenarioComponents.ts +237 -32
- package/analyzer-template/project/writeSimpleRoot.ts +21 -11
- package/analyzer-template/scripts/comboWorkerLoop.cjs +98 -50
- package/background/src/lib/local/createLocalAnalyzer.js +1 -1
- package/background/src/lib/local/createLocalAnalyzer.js.map +1 -1
- 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 +359 -14
- 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 +62 -7
- 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 +251 -6
- package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
- package/background/src/lib/virtualized/project/writeScenarioComponents.js +173 -30
- package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
- package/background/src/lib/virtualized/project/writeSimpleRoot.js +21 -11
- package/background/src/lib/virtualized/project/writeSimpleRoot.js.map +1 -1
- package/codeyam-cli/scripts/apply-setup.js +180 -0
- package/codeyam-cli/scripts/apply-setup.js.map +1 -1
- package/codeyam-cli/src/cli.js +32 -18
- package/codeyam-cli/src/cli.js.map +1 -1
- package/codeyam-cli/src/codeyam-cli.js +18 -2
- package/codeyam-cli/src/codeyam-cli.js.map +1 -1
- package/codeyam-cli/src/commands/analyze.js +4 -2
- package/codeyam-cli/src/commands/analyze.js.map +1 -1
- package/codeyam-cli/src/commands/baseline.js +2 -0
- package/codeyam-cli/src/commands/baseline.js.map +1 -1
- package/codeyam-cli/src/commands/debug.js +9 -5
- package/codeyam-cli/src/commands/debug.js.map +1 -1
- package/codeyam-cli/src/commands/default.js +31 -20
- package/codeyam-cli/src/commands/default.js.map +1 -1
- package/codeyam-cli/src/commands/detect-universal-mocks.js +2 -0
- package/codeyam-cli/src/commands/detect-universal-mocks.js.map +1 -1
- package/codeyam-cli/src/commands/init.js +49 -257
- package/codeyam-cli/src/commands/init.js.map +1 -1
- package/codeyam-cli/src/commands/memory.js +307 -0
- package/codeyam-cli/src/commands/memory.js.map +1 -0
- package/codeyam-cli/src/commands/recapture.js +2 -0
- package/codeyam-cli/src/commands/recapture.js.map +1 -1
- package/codeyam-cli/src/commands/setup-sandbox.js +2 -0
- package/codeyam-cli/src/commands/setup-sandbox.js.map +1 -1
- package/codeyam-cli/src/commands/setup-simulations.js +284 -0
- package/codeyam-cli/src/commands/setup-simulations.js.map +1 -0
- package/codeyam-cli/src/commands/test-startup.js +2 -0
- package/codeyam-cli/src/commands/test-startup.js.map +1 -1
- package/codeyam-cli/src/commands/verify.js +14 -2
- package/codeyam-cli/src/commands/verify.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js +179 -0
- package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js.map +1 -0
- package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +128 -82
- 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/analyzer.js +7 -0
- package/codeyam-cli/src/utils/analyzer.js.map +1 -1
- package/codeyam-cli/src/utils/backgroundServer.js +90 -19
- package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
- package/codeyam-cli/src/utils/generateReport.js +2 -2
- package/codeyam-cli/src/utils/install-skills.js +77 -38
- package/codeyam-cli/src/utils/install-skills.js.map +1 -1
- package/codeyam-cli/src/utils/labsAutoCheck.js +19 -0
- package/codeyam-cli/src/utils/labsAutoCheck.js.map +1 -0
- package/codeyam-cli/src/utils/npmVersionCheck.js +76 -0
- package/codeyam-cli/src/utils/npmVersionCheck.js.map +1 -0
- package/codeyam-cli/src/utils/progress.js +7 -0
- package/codeyam-cli/src/utils/progress.js.map +1 -1
- package/codeyam-cli/src/utils/queue/job.js +5 -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/requireSimulations.js +10 -0
- package/codeyam-cli/src/utils/requireSimulations.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js +82 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js +230 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js +67 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js +105 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js +34 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js +162 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js +74 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js +376 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js +116 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js +127 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js +50 -0
- package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js +116 -0
- package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/index.js +5 -0
- package/codeyam-cli/src/utils/ruleReflection/index.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js +44 -0
- package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js +85 -0
- package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/types.js +5 -0
- package/codeyam-cli/src/utils/ruleReflection/types.js.map +1 -0
- package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js +293 -0
- package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js.map +1 -0
- package/codeyam-cli/src/utils/rules/index.js +6 -0
- package/codeyam-cli/src/utils/rules/index.js.map +1 -0
- package/codeyam-cli/src/utils/rules/parser.js +83 -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/ruleState.js +150 -0
- package/codeyam-cli/src/utils/rules/ruleState.js.map +1 -0
- package/codeyam-cli/src/utils/rules/staleness.js +137 -0
- package/codeyam-cli/src/utils/rules/staleness.js.map +1 -0
- package/codeyam-cli/src/utils/serverState.js +37 -10
- package/codeyam-cli/src/utils/serverState.js.map +1 -1
- package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +21 -42
- package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
- package/codeyam-cli/src/utils/simulationGateMiddleware.js +138 -0
- package/codeyam-cli/src/utils/simulationGateMiddleware.js.map +1 -0
- package/codeyam-cli/src/utils/syncMocksMiddleware.js +5 -24
- package/codeyam-cli/src/utils/syncMocksMiddleware.js.map +1 -1
- package/codeyam-cli/src/utils/versionInfo.js +25 -0
- package/codeyam-cli/src/utils/versionInfo.js.map +1 -1
- package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js +66 -0
- package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js.map +1 -0
- package/codeyam-cli/src/webserver/app/lib/database.js +22 -6
- package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
- package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
- package/codeyam-cli/src/webserver/backgroundServer.js +50 -0
- package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
- package/codeyam-cli/src/webserver/bootstrap.js +51 -0
- package/codeyam-cli/src/webserver/bootstrap.js.map +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/CopyButton-jNYXRRNI.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/EntityItem-bwuHPyTa.js +11 -0
- package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-COi5OvsN.js → EntityTypeBadge-CvzqMxcu.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-BwdQv49w.js → EntityTypeIcon-BH0XDim7.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{InlineSpinner-CEleMv_j.js → InlineSpinner-EhOseatT.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-D68KarMg.js → InteractivePreview-yjIHlOGa.js} +2 -2
- package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-L75Wvqgw.js → LibraryFunctionPreview-Cq5o8jL4.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-C53WM8qn.js → LoadingDots-BvMu2i-g.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-CrNkmy4i.js → LogViewer-kgBTLoJD.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-BzPgx-xO.js +11 -0
- package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-CQifa1n-.js → SafeScreenshot-CwZrv-Ok.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-CyaBFX7l.js → ScenarioViewer-BX2Ny2Qj.js} +3 -13
- package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-D36O1rzU.js → TruncatedFilePath-CDpEprKa.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/_index-BRx8ZGZo.js +11 -0
- package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-4S4yPfFw.js +27 -0
- package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-DHKuQSmR.js +17 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.agent-transcripts-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.health-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.labs-unlock-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/api.save-fixture-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/book-open-D4IPYH_y.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-DgTPh8H-.js → chevron-down-CG65viiV.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{chunk-EPOLDU6W-DdQKK6on.js → chunk-JZWAC4HX-DB3aFuEO.js} +12 -12
- package/codeyam-cli/src/webserver/build/client/assets/{circle-check-Dmr2bb1R.js → circle-check-igfMr5DY.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/copy-Coc4o_8c.js +11 -0
- package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-Do4ZLUYa.js → createLucideIcon-D1zB-pYc.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/dev.empty-JTAjQ54M.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-CbdFyxZh.js → entity._sha._-B0h9AqE6.js} +12 -12
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha.scenarios._scenarioId.fullscreen-B4iCfs5M.js → entity._sha.scenarios._scenarioId.fullscreen-DjLxr2JB.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.create-scenario-wDWZZO1W.js → entity._sha_.create-scenario-CtYowLOt.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-BMbl7MeQ.js → entity._sha_.edit._scenarioId-PePWg17F.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entry.client-5wRKRIH9.js → entry.client-I-Wo99C_.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{fileTableUtils-DD3SDH7t.js → fileTableUtils-9sMMAiWJ.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/files-Co65J0s3.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{git-zXjT7J0G.js → git-BdHOxVfg.js} +8 -8
- package/codeyam-cli/src/webserver/build/client/assets/globals-BSZfYCkU.css +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{index-DLbXwndH.js → index-CUM5iXwc.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{index-gPZ-lad1.js → index-_417gcQW.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/labs-BK0C1H1T.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-BsPXJ81F.js → loader-circle-TzRHMVog.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/manifest-040dab1c.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/memory-UIDVz141.js +92 -0
- package/codeyam-cli/src/webserver/build/client/assets/pause-hjzB7t2z.js +11 -0
- package/codeyam-cli/src/webserver/build/client/assets/root-D1WadSdf.js +62 -0
- package/codeyam-cli/src/webserver/build/client/assets/{search-P2FKIUql.js → search-DcAwD_Ln.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/settings-CclxrcPK.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{simulations-L18M6-kN.js → simulations-DVNJVQgD.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/terminal-DbEAHMbA.js +11 -0
- package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-BDz7kbVA.js → triangle-alert-CAD5b1o_.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{useCustomSizes-29dDmbH8.js → useCustomSizes-BqgrAzs3.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-BUm0UVJm.js → useLastLogLine-DAFqfEDH.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{useReportContext-CkIOKTrZ.js → useReportContext-DZlYx2c4.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{useToast-KKw5kTn-.js → useToast-ihdMtlf6.js} +1 -1
- package/codeyam-cli/src/webserver/build/server/assets/index-B3dE0r28.js +1 -0
- package/codeyam-cli/src/webserver/build/server/assets/server-build-DYbfdxa3.js +273 -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:debug.md → codeyam-debug.md} +48 -4
- package/codeyam-cli/templates/codeyam-diagnose.md +481 -0
- package/codeyam-cli/templates/codeyam-memory-hook.sh +199 -0
- package/codeyam-cli/templates/codeyam-memory.md +396 -0
- package/codeyam-cli/templates/codeyam-new-rule.md +13 -0
- package/codeyam-cli/templates/{codeyam:setup.md → codeyam-setup.md} +13 -1
- package/codeyam-cli/templates/{codeyam:sim.md → codeyam-sim.md} +1 -1
- package/codeyam-cli/templates/{codeyam:test.md → codeyam-test.md} +1 -1
- package/codeyam-cli/templates/{codeyam:verify.md → codeyam-verify.md} +1 -1
- package/codeyam-cli/templates/rule-notification-hook.py +56 -0
- package/codeyam-cli/templates/rule-reflection-hook.py +627 -0
- package/codeyam-cli/templates/rules-instructions.md +132 -0
- package/package.json +18 -15
- package/packages/ai/index.js +7 -3
- package/packages/ai/index.js.map +1 -1
- package/packages/ai/src/lib/analyzeScope.js +91 -30
- 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/forInStatementHandler.js +10 -14
- package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.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 +518 -28
- package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
- package/packages/ai/src/lib/astScopes/sharedPatterns.js +25 -0
- package/packages/ai/src/lib/astScopes/sharedPatterns.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 +1061 -174
- package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js +5 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.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 +52 -3
- package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +106 -13
- package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js +63 -0
- package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js.map +1 -0
- package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js +122 -12
- package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js +173 -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 +333 -86
- 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 +130 -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/generateEntityDataStructure.js +46 -2
- package/packages/ai/src/lib/generateEntityDataStructure.js.map +1 -1
- package/packages/ai/src/lib/generateEntityScenarioData.js +734 -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 +376 -4
- package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -1
- package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js +1124 -59
- 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/isolateScopes.js +39 -3
- package/packages/ai/src/lib/isolateScopes.js.map +1 -1
- package/packages/ai/src/lib/mergeJsonTypeDefinitions.js +5 -0
- package/packages/ai/src/lib/mergeJsonTypeDefinitions.js.map +1 -1
- 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/collapseNullableObjects.js +97 -0
- package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js.map +1 -0
- 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 +30 -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/index.js +1 -0
- package/packages/analyze/index.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/nodes/getNodeType.js +1 -0
- package/packages/analyze/src/lib/asts/nodes/getNodeType.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 +72 -10
- package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +17 -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/TransformationTracer.js +880 -0
- package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js.map +1 -0
- package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js +164 -68
- package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +75 -21
- package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +185 -20
- 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 +542 -53
- 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/index.js +1 -0
- package/packages/analyze/src/lib/index.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/analysisBranchToDb.js +1 -1
- package/packages/database/src/lib/analysisBranchToDb.js.map +1 -1
- package/packages/database/src/lib/analysisToDb.js +1 -1
- package/packages/database/src/lib/analysisToDb.js.map +1 -1
- package/packages/database/src/lib/branchToDb.js +1 -1
- package/packages/database/src/lib/branchToDb.js.map +1 -1
- package/packages/database/src/lib/commitBranchToDb.js +1 -1
- package/packages/database/src/lib/commitBranchToDb.js.map +1 -1
- package/packages/database/src/lib/commitToDb.js +1 -1
- package/packages/database/src/lib/commitToDb.js.map +1 -1
- package/packages/database/src/lib/fileToDb.js +1 -1
- package/packages/database/src/lib/fileToDb.js.map +1 -1
- package/packages/database/src/lib/kysely/db.js +11 -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/kysely/tables/labsRequestsTable.js +35 -0
- package/packages/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
- 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/projectToDb.js +1 -1
- package/packages/database/src/lib/projectToDb.js.map +1 -1
- package/packages/database/src/lib/saveFiles.js +1 -1
- package/packages/database/src/lib/saveFiles.js.map +1 -1
- package/packages/database/src/lib/scenarioToDb.js +1 -1
- package/packages/database/src/lib/scenarioToDb.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/fs/rsyncCopy.js +93 -2
- package/packages/utils/src/lib/fs/rsyncCopy.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 +8 -76
- 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/client/assets/settings-B2eDuBj8.js +0 -1
- 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
- package/codeyam-cli/templates/codeyam:diagnose.md +0 -625
|
@@ -336,6 +336,7 @@ function findControllablePrefix(
|
|
|
336
336
|
// Check direct match in attributesMap
|
|
337
337
|
if (prefix in attributesMap) {
|
|
338
338
|
const type = attributesMap[prefix];
|
|
339
|
+
|
|
339
340
|
// For objects, arrays, or unknown types, nested property access is controllable
|
|
340
341
|
if (
|
|
341
342
|
isArrayType(type) ||
|
|
@@ -375,16 +376,6 @@ function findControllableBaseForDerivedPath(
|
|
|
375
376
|
path: string,
|
|
376
377
|
attributesMap: Record<string, string>,
|
|
377
378
|
): string | null {
|
|
378
|
-
// Use cleanPathOfNonTransformingFunctions to strip non-transforming methods
|
|
379
|
-
// like .filter(), .sort(), .slice() etc. This handles all method calls generically
|
|
380
|
-
// without hardcoding specific method names.
|
|
381
|
-
const cleanedPath = cleanPathOfNonTransformingFunctions(path);
|
|
382
|
-
|
|
383
|
-
// If the path wasn't changed, there are no non-transforming functions to strip
|
|
384
|
-
if (cleanedPath === path) {
|
|
385
|
-
return null;
|
|
386
|
-
}
|
|
387
|
-
|
|
388
379
|
// Helper to check if a path is in attributesMap
|
|
389
380
|
const checkInAttributesMap = (pathToCheck: string): string | null => {
|
|
390
381
|
// Direct match
|
|
@@ -401,21 +392,121 @@ function findControllableBaseForDerivedPath(
|
|
|
401
392
|
return null;
|
|
402
393
|
};
|
|
403
394
|
|
|
404
|
-
//
|
|
395
|
+
// Use cleanPathOfNonTransformingFunctions to strip non-transforming methods
|
|
396
|
+
// like .filter(), .sort(), .slice() etc. This handles all method calls generically
|
|
397
|
+
// without hardcoding specific method names.
|
|
398
|
+
const cleanedPath = cleanPathOfNonTransformingFunctions(path);
|
|
399
|
+
|
|
400
|
+
// Check the cleaned path directly (even if unchanged, later steps may find something)
|
|
405
401
|
const directResult = checkInAttributesMap(cleanedPath);
|
|
406
402
|
if (directResult) {
|
|
407
403
|
return directResult;
|
|
408
404
|
}
|
|
409
405
|
|
|
410
|
-
//
|
|
411
|
-
|
|
406
|
+
// Fix 38: For controllability purposes, strip ALL derivation operations
|
|
407
|
+
// including transforming methods like .split(...) and array indices.
|
|
408
|
+
// The key insight is: if we control the base, we control all derived values.
|
|
409
|
+
//
|
|
410
|
+
// Pattern: base.split('...').filter(...)[N] → find base
|
|
411
|
+
// We progressively strip: [N] → filter(...) → split(...) → until we find something controllable
|
|
412
|
+
|
|
413
|
+
// Methods that derive new values (should be stripped for controllability)
|
|
414
|
+
const derivingMethods = [
|
|
415
|
+
'split',
|
|
416
|
+
'match',
|
|
417
|
+
'filter',
|
|
418
|
+
'map',
|
|
419
|
+
'find',
|
|
420
|
+
'findIndex',
|
|
421
|
+
'slice',
|
|
422
|
+
'substring',
|
|
423
|
+
'substr',
|
|
424
|
+
'trim',
|
|
425
|
+
'trimStart',
|
|
426
|
+
'trimEnd',
|
|
427
|
+
'toLowerCase',
|
|
428
|
+
'toUpperCase',
|
|
429
|
+
'replace',
|
|
430
|
+
'replaceAll',
|
|
431
|
+
'sort',
|
|
432
|
+
'reverse',
|
|
433
|
+
'flat',
|
|
434
|
+
'flatMap',
|
|
435
|
+
];
|
|
436
|
+
|
|
437
|
+
// Build regex to match method calls: .methodName(...)
|
|
438
|
+
// Use a simpler approach: progressively strip trailing derivations
|
|
439
|
+
let workingPath = cleanedPath;
|
|
440
|
+
|
|
441
|
+
// Keep stripping derivations until we find something controllable or can't strip anymore
|
|
442
|
+
// Max 20 iterations to prevent infinite loops
|
|
443
|
+
for (let iteration = 0; iteration < 20; iteration++) {
|
|
444
|
+
// Try current path
|
|
445
|
+
const result = checkInAttributesMap(workingPath);
|
|
446
|
+
if (result) {
|
|
447
|
+
return result;
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
// Also check via functionCallReturnValue extraction
|
|
451
|
+
// Note: We return workingPath (the FULL path) if the short path is found,
|
|
452
|
+
// because the full path is more meaningful for execution flows
|
|
453
|
+
const functionReturnMatch = workingPath.match(
|
|
454
|
+
/\.functionCallReturnValue\.(.+)$/,
|
|
455
|
+
);
|
|
456
|
+
if (functionReturnMatch) {
|
|
457
|
+
const shortPath = functionReturnMatch[1];
|
|
458
|
+
const shortResult = checkInAttributesMap(shortPath);
|
|
459
|
+
if (shortResult) {
|
|
460
|
+
// Return the full path, not just the short result
|
|
461
|
+
// This ensures execution flows have meaningful paths like
|
|
462
|
+
// "useParams().functionCallReturnValue.*" instead of just "*"
|
|
463
|
+
return workingPath;
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
// Try to strip trailing array index: path[0] → path
|
|
468
|
+
const arrayIndexMatch = workingPath.match(/^(.+)\[\d+\]$/);
|
|
469
|
+
if (arrayIndexMatch) {
|
|
470
|
+
workingPath = arrayIndexMatch[1];
|
|
471
|
+
continue;
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
// Try to strip trailing method call: path.method(...) → path
|
|
475
|
+
let strippedMethod = false;
|
|
476
|
+
for (const method of derivingMethods) {
|
|
477
|
+
// Match .method(...) at the end, handling nested parentheses
|
|
478
|
+
const methodRegex = new RegExp(
|
|
479
|
+
`\\.${method}\\([^()]*(?:\\([^()]*\\)[^()]*)*\\)$`,
|
|
480
|
+
);
|
|
481
|
+
if (methodRegex.test(workingPath)) {
|
|
482
|
+
workingPath = workingPath.replace(methodRegex, '');
|
|
483
|
+
strippedMethod = true;
|
|
484
|
+
break;
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
if (!strippedMethod) {
|
|
489
|
+
// Can't strip anymore
|
|
490
|
+
break;
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
// Final check after stripping
|
|
495
|
+
const finalResult = checkInAttributesMap(workingPath);
|
|
496
|
+
if (finalResult) {
|
|
497
|
+
return finalResult;
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
// Also check via functionCallReturnValue extraction for final path
|
|
501
|
+
const finalFunctionReturnMatch = workingPath.match(
|
|
412
502
|
/\.functionCallReturnValue\.(.+)$/,
|
|
413
503
|
);
|
|
414
|
-
if (
|
|
415
|
-
const shortPath =
|
|
504
|
+
if (finalFunctionReturnMatch) {
|
|
505
|
+
const shortPath = finalFunctionReturnMatch[1];
|
|
416
506
|
const shortResult = checkInAttributesMap(shortPath);
|
|
417
507
|
if (shortResult) {
|
|
418
|
-
|
|
508
|
+
// Return the full path, not just the short result
|
|
509
|
+
return workingPath;
|
|
419
510
|
}
|
|
420
511
|
}
|
|
421
512
|
|
|
@@ -434,7 +525,7 @@ function findControllableBaseForDerivedPath(
|
|
|
434
525
|
export default function resolvePathToControllable(
|
|
435
526
|
localPath: string,
|
|
436
527
|
attributesMap: Record<string, string>,
|
|
437
|
-
equivalentSignatureVariables: Record<string, string>,
|
|
528
|
+
equivalentSignatureVariables: Record<string, string | string[]>,
|
|
438
529
|
fullToShortPathMap: Record<string, string>,
|
|
439
530
|
): PathResolutionResult {
|
|
440
531
|
const chain: string[] = [localPath];
|
|
@@ -509,7 +600,11 @@ export default function resolvePathToControllable(
|
|
|
509
600
|
|
|
510
601
|
// 4. Equivalent variable resolution
|
|
511
602
|
const localVarName = extractLocalVariableName(localPath);
|
|
512
|
-
|
|
603
|
+
// Handle array case (OR expressions) - use first element if array
|
|
604
|
+
const rawDataSourceBase = equivalentSignatureVariables[localVarName];
|
|
605
|
+
const dataSourceBase = Array.isArray(rawDataSourceBase)
|
|
606
|
+
? rawDataSourceBase[0]
|
|
607
|
+
: rawDataSourceBase;
|
|
513
608
|
|
|
514
609
|
if (dataSourceBase) {
|
|
515
610
|
chain.push(`equivalent var: ${localVarName} → ${dataSourceBase}`);
|
|
@@ -535,18 +630,26 @@ export default function resolvePathToControllable(
|
|
|
535
630
|
baseVarName in equivalentSignatureVariables &&
|
|
536
631
|
baseVarName !== localVarName
|
|
537
632
|
) {
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
633
|
+
// Handle array case (OR expressions) - use first element if array
|
|
634
|
+
const rawBaseDataSource = equivalentSignatureVariables[baseVarName];
|
|
635
|
+
const baseDataSource = Array.isArray(rawBaseDataSource)
|
|
636
|
+
? rawBaseDataSource[0]
|
|
637
|
+
: rawBaseDataSource;
|
|
638
|
+
if (baseDataSource) {
|
|
639
|
+
chain.push(
|
|
640
|
+
`transitive resolution: ${baseVarName} → ${baseDataSource}`,
|
|
641
|
+
);
|
|
642
|
+
// Append the array access suffix to the resolved base
|
|
643
|
+
if (baseDataSource.endsWith('()')) {
|
|
644
|
+
fullResolvedPath =
|
|
645
|
+
baseDataSource + '.functionCallReturnValue' + accessSuffix;
|
|
646
|
+
} else if (baseDataSource.endsWith('.functionCallReturnValue')) {
|
|
647
|
+
fullResolvedPath = baseDataSource + accessSuffix;
|
|
648
|
+
} else {
|
|
649
|
+
fullResolvedPath = baseDataSource + accessSuffix;
|
|
650
|
+
}
|
|
651
|
+
chain.push(`transitively resolved: ${fullResolvedPath}`);
|
|
548
652
|
}
|
|
549
|
-
chain.push(`transitively resolved: ${fullResolvedPath}`);
|
|
550
653
|
}
|
|
551
654
|
}
|
|
552
655
|
|
|
@@ -593,10 +696,11 @@ export default function resolvePathToControllable(
|
|
|
593
696
|
};
|
|
594
697
|
}
|
|
595
698
|
|
|
596
|
-
// Fix 34: Handle derived paths from controllable bases
|
|
699
|
+
// Fix 34/38: Handle derived paths from controllable bases
|
|
597
700
|
// Paths like "useParams().functionCallReturnValue.*.split('/').filter(Boolean)[0]"
|
|
598
701
|
// are derived from "useParams().functionCallReturnValue.*" via string methods.
|
|
599
|
-
// If the base path is controllable, the
|
|
702
|
+
// If the base path is controllable, return the BASE path (not the derived path)
|
|
703
|
+
// because that's what we need to mock in the data structure.
|
|
600
704
|
const derivedBaseResult = findControllableBaseForDerivedPath(
|
|
601
705
|
fullResolvedPath,
|
|
602
706
|
attributesMap,
|
|
@@ -604,7 +708,9 @@ export default function resolvePathToControllable(
|
|
|
604
708
|
if (derivedBaseResult) {
|
|
605
709
|
chain.push(`derived from controllable base: ${derivedBaseResult}`);
|
|
606
710
|
return {
|
|
607
|
-
|
|
711
|
+
// Return the controllable BASE path, not the derived path
|
|
712
|
+
// This ensures execution flows contain paths that exist in attributesMap
|
|
713
|
+
resolvedPath: derivedBaseResult,
|
|
608
714
|
resolutionChain: chain,
|
|
609
715
|
isControllable: true,
|
|
610
716
|
};
|
|
@@ -632,21 +738,48 @@ export default function resolvePathToControllable(
|
|
|
632
738
|
// 5. Fix 35: Check for controllable prefix on the local path directly
|
|
633
739
|
// This handles cases where the localPath itself (before any resolution)
|
|
634
740
|
// has a controllable prefix in attributesMap
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
741
|
+
//
|
|
742
|
+
// IMPORTANT: Only do prefix matching if:
|
|
743
|
+
// a) The root variable is known in equivalentSignatureVariables, OR
|
|
744
|
+
// b) The path looks like an already-translated path (contains .functionCallReturnValue.)
|
|
745
|
+
//
|
|
746
|
+
// If the root variable is NOT known AND it's not an already-translated path, it's likely
|
|
747
|
+
// from an internal scope (callback, async function) and shouldn't be matched
|
|
748
|
+
// against similarly-named variables from different scopes.
|
|
749
|
+
// For example, "data.status" from inside `await response.json()` should NOT
|
|
750
|
+
// match the "data" from a useFetcher hook.
|
|
751
|
+
const localVarNameForPrefix = extractLocalVariableName(localPath);
|
|
752
|
+
const isKnownVariable = localVarNameForPrefix in equivalentSignatureVariables;
|
|
753
|
+
|
|
754
|
+
// Fix 35b: Also allow prefix matching for already-translated paths from child components
|
|
755
|
+
// These paths start with hook patterns like useLoaderData<...>().functionCallReturnValue
|
|
756
|
+
// and should be checked for controllable prefixes even if the hook itself isn't
|
|
757
|
+
// in equivalentSignatureVariables (because it's a fully resolved path, not a local variable)
|
|
758
|
+
const isAlreadyTranslatedPath = localPath.includes(
|
|
759
|
+
'.functionCallReturnValue.',
|
|
639
760
|
);
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
761
|
+
|
|
762
|
+
if (isKnownVariable || isAlreadyTranslatedPath) {
|
|
763
|
+
const localPrefixResult = findControllablePrefix(
|
|
764
|
+
localPath,
|
|
765
|
+
attributesMap,
|
|
766
|
+
fullToShortPathMap,
|
|
767
|
+
);
|
|
768
|
+
if (localPrefixResult) {
|
|
769
|
+
chain.push(`nested property of controllable prefix (direct)`);
|
|
770
|
+
return {
|
|
771
|
+
resolvedPath: localPath,
|
|
772
|
+
resolutionChain: chain,
|
|
773
|
+
isControllable: true,
|
|
774
|
+
};
|
|
775
|
+
}
|
|
776
|
+
} else {
|
|
777
|
+
chain.push(
|
|
778
|
+
`root variable '${localVarNameForPrefix}' not in equivalentSignatureVariables - skipping prefix match`,
|
|
779
|
+
);
|
|
647
780
|
}
|
|
648
781
|
|
|
649
|
-
// 5b. Fix 36: Check for derived paths on localPath directly
|
|
782
|
+
// 5b. Fix 36/38: Check for derived paths on localPath directly
|
|
650
783
|
// When localPath contains derivation methods like .filter(cyScope()), check if
|
|
651
784
|
// the base path (before .filter()) is controllable
|
|
652
785
|
const localDerivedResult = findControllableBaseForDerivedPath(
|
|
@@ -658,7 +791,8 @@ export default function resolvePathToControllable(
|
|
|
658
791
|
`derived from controllable base (direct): ${localDerivedResult}`,
|
|
659
792
|
);
|
|
660
793
|
return {
|
|
661
|
-
|
|
794
|
+
// Return the controllable BASE path, not the derived path
|
|
795
|
+
resolvedPath: localDerivedResult,
|
|
662
796
|
resolutionChain: chain,
|
|
663
797
|
isControllable: true,
|
|
664
798
|
};
|
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
import type {
|
|
14
14
|
ConditionalEffect,
|
|
15
15
|
CompoundConditional,
|
|
16
|
+
JsxRenderingUsage,
|
|
16
17
|
} from '../astScopes/types';
|
|
17
18
|
|
|
18
19
|
export interface SerializableScopeVariable {
|
|
@@ -62,7 +63,7 @@ export interface EnrichedConditionalUsage {
|
|
|
62
63
|
/** For comparison conditions, the literal values being compared against */
|
|
63
64
|
comparedValues?: string[];
|
|
64
65
|
/** Where this conditional usage occurs */
|
|
65
|
-
location: 'if' | 'ternary' | 'logical-and' | 'switch';
|
|
66
|
+
location: 'if' | 'ternary' | 'logical-and' | 'switch' | 'unconditional';
|
|
66
67
|
/**
|
|
67
68
|
* The traced source data path in the format "scopeName.path"
|
|
68
69
|
* e.g., "useParams().functionCallReturnValue['*']"
|
|
@@ -101,7 +102,8 @@ export interface EnrichedConditionalUsage {
|
|
|
101
102
|
| 'and'
|
|
102
103
|
| 'arrayIncludes'
|
|
103
104
|
| 'arraySome'
|
|
104
|
-
| 'arrayEvery'
|
|
105
|
+
| 'arrayEvery'
|
|
106
|
+
| 'arrayLength';
|
|
105
107
|
/** For comparison operations, the value being compared to */
|
|
106
108
|
comparedValue?: string;
|
|
107
109
|
};
|
|
@@ -118,7 +120,8 @@ export interface SerializableDataStructure {
|
|
|
118
120
|
functionResults: Record<string, SerializableFunctionResult>;
|
|
119
121
|
|
|
120
122
|
// Equivalent signature variables for root scope
|
|
121
|
-
|
|
123
|
+
// Values can be arrays for OR expressions where a variable maps to multiple sources
|
|
124
|
+
equivalentSignatureVariables: Record<string, string | string[]>;
|
|
122
125
|
|
|
123
126
|
environmentVariables: string[];
|
|
124
127
|
|
|
@@ -154,6 +157,15 @@ export interface SerializableDataStructure {
|
|
|
154
157
|
* This allows us to merge child component execution flows with parent gating conditions.
|
|
155
158
|
*/
|
|
156
159
|
childBoundaryGatingConditions?: Record<string, EnrichedConditionalUsage[]>;
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* JSX rendering usages - tracks arrays rendered via .map() and strings interpolated in JSX.
|
|
163
|
+
* Used to generate execution flows for array sizes and text lengths without explicit conditionals.
|
|
164
|
+
*
|
|
165
|
+
* Example:
|
|
166
|
+
* {items.map(i => <Item {...i} />)} produces an array-map usage for 'items'
|
|
167
|
+
*/
|
|
168
|
+
jsxRenderingUsages?: JsxRenderingUsage[];
|
|
157
169
|
}
|
|
158
170
|
|
|
159
171
|
/**
|
|
@@ -285,7 +297,7 @@ export function getSourceEquivalencies(
|
|
|
285
297
|
|
|
286
298
|
export function getEquivalentSignatureVariables(
|
|
287
299
|
dataStructure: SerializableDataStructure,
|
|
288
|
-
): Record<string, string> {
|
|
300
|
+
): Record<string, string | string[]> {
|
|
289
301
|
return dataStructure.equivalentSignatureVariables;
|
|
290
302
|
}
|
|
291
303
|
|
|
@@ -329,3 +341,13 @@ export function getChildBoundaryGatingConditions(
|
|
|
329
341
|
): Record<string, EnrichedConditionalUsage[]> {
|
|
330
342
|
return dataStructure.childBoundaryGatingConditions ?? {};
|
|
331
343
|
}
|
|
344
|
+
|
|
345
|
+
/**
|
|
346
|
+
* Get JSX rendering usages (arrays rendered via .map() and strings interpolated in JSX).
|
|
347
|
+
* Returns the array of JSX rendering usages, or empty array if not available.
|
|
348
|
+
*/
|
|
349
|
+
export function getJsxRenderingUsages(
|
|
350
|
+
dataStructure: SerializableDataStructure,
|
|
351
|
+
): JsxRenderingUsage[] {
|
|
352
|
+
return dataStructure.jsxRenderingUsages ?? [];
|
|
353
|
+
}
|
|
@@ -9,13 +9,14 @@ import { Entity } from '~codeyam/types';
|
|
|
9
9
|
import { FileAnalyzer, ProjectAnalyzer } from '~codeyam/analyze';
|
|
10
10
|
import { analyzeScopeLocal } from '../analyzeScope';
|
|
11
11
|
import {
|
|
12
|
-
ScopeInfo,
|
|
13
12
|
resetScopeDataStructureMetrics,
|
|
13
|
+
ScopeInfo,
|
|
14
14
|
} from '../dataStructure/ScopeDataStructure';
|
|
15
15
|
import { SerializableDataStructure } from './SerializableDataStructure';
|
|
16
16
|
import { AI } from '~codeyam/ai';
|
|
17
17
|
import { setThreadContext } from '~codeyam/utils';
|
|
18
18
|
import { threadId } from 'worker_threads';
|
|
19
|
+
import v8 from 'v8';
|
|
19
20
|
|
|
20
21
|
// Set thread context for logging
|
|
21
22
|
setThreadContext(`<worker-${threadId}>`);
|
|
@@ -45,6 +46,80 @@ let projectAnalyzerKey: string | null = null;
|
|
|
45
46
|
let fileAnalyzer: FileAnalyzer | null = null;
|
|
46
47
|
let fileAnalyzerPath: string | null = null;
|
|
47
48
|
|
|
49
|
+
// Memory tracking
|
|
50
|
+
let entitiesProcessed = 0;
|
|
51
|
+
let lastMemoryLogAt = 0;
|
|
52
|
+
const MEMORY_LOG_INTERVAL = 100; // Log every N entities
|
|
53
|
+
const MEMORY_LOG_TIME_INTERVAL = 60_000; // Or every 60 seconds
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Get memory stats for logging
|
|
57
|
+
*/
|
|
58
|
+
function getWorkerMemoryStats() {
|
|
59
|
+
const mem = process.memoryUsage();
|
|
60
|
+
const heapStats = v8.getHeapStatistics();
|
|
61
|
+
return {
|
|
62
|
+
rss: `${Math.round(mem.rss / 1024 / 1024)}MB`,
|
|
63
|
+
heapUsed: `${Math.round(mem.heapUsed / 1024 / 1024)}MB`,
|
|
64
|
+
heapTotal: `${Math.round(mem.heapTotal / 1024 / 1024)}MB`,
|
|
65
|
+
external: `${Math.round(mem.external / 1024 / 1024)}MB`,
|
|
66
|
+
// V8 heap stats give more detail
|
|
67
|
+
v8TotalHeapSize: `${Math.round(heapStats.total_heap_size / 1024 / 1024)}MB`,
|
|
68
|
+
v8UsedHeapSize: `${Math.round(heapStats.used_heap_size / 1024 / 1024)}MB`,
|
|
69
|
+
v8HeapSizeLimit: `${Math.round(heapStats.heap_size_limit / 1024 / 1024)}MB`,
|
|
70
|
+
v8MallocedMemory: `${Math.round(heapStats.malloced_memory / 1024 / 1024)}MB`,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Get ts.Program stats for understanding TypeScript memory usage
|
|
76
|
+
*/
|
|
77
|
+
function getTsProgramStats(pa: ProjectAnalyzer) {
|
|
78
|
+
const sourceFiles = pa.program.getSourceFiles();
|
|
79
|
+
const projectSourceFiles = sourceFiles.filter(
|
|
80
|
+
(sf) => !sf.fileName.includes('node_modules'),
|
|
81
|
+
);
|
|
82
|
+
const nodeModulesFiles = sourceFiles.filter((sf) =>
|
|
83
|
+
sf.fileName.includes('node_modules'),
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
// Estimate AST size by sampling text length (rough proxy)
|
|
87
|
+
let totalProjectTextLength = 0;
|
|
88
|
+
for (const sf of projectSourceFiles) {
|
|
89
|
+
totalProjectTextLength += sf.getFullText().length;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
return {
|
|
93
|
+
totalSourceFiles: sourceFiles.length,
|
|
94
|
+
projectSourceFiles: projectSourceFiles.length,
|
|
95
|
+
nodeModulesFiles: nodeModulesFiles.length,
|
|
96
|
+
projectTextSizeMB: `${(totalProjectTextLength / 1024 / 1024).toFixed(1)}MB`,
|
|
97
|
+
// Note: Actual AST memory is typically 10-20x the source text size
|
|
98
|
+
estimatedAstSizeMB: `${((totalProjectTextLength * 15) / 1024 / 1024).toFixed(0)}MB`,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Write a heap snapshot for detailed profiling.
|
|
104
|
+
* The snapshot can be loaded in Chrome DevTools for analysis.
|
|
105
|
+
*
|
|
106
|
+
* TODO: Once we understand memory usage, change this back to env-var controlled
|
|
107
|
+
*/
|
|
108
|
+
const HEAP_SNAPSHOT_MODE: 'off' | 'once' | 'periodic' = 'off';
|
|
109
|
+
|
|
110
|
+
function maybeWriteHeapSnapshot(label: string) {
|
|
111
|
+
if (HEAP_SNAPSHOT_MODE === 'off') return;
|
|
112
|
+
|
|
113
|
+
try {
|
|
114
|
+
const filename = v8.writeHeapSnapshot();
|
|
115
|
+
console.log(
|
|
116
|
+
`CodeYam Worker: Heap snapshot written (${label}): ${filename}`,
|
|
117
|
+
);
|
|
118
|
+
} catch (error) {
|
|
119
|
+
console.error('CodeYam Worker: Failed to write heap snapshot:', error);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
48
123
|
/**
|
|
49
124
|
* Main worker function called by Piscina
|
|
50
125
|
*/
|
|
@@ -61,8 +136,25 @@ export default async function runAnalyzeScope(
|
|
|
61
136
|
// Create or reuse ProjectAnalyzer
|
|
62
137
|
const paKey = `${dirPath}`;
|
|
63
138
|
if (!projectAnalyzer || projectAnalyzerKey !== paKey) {
|
|
64
|
-
|
|
139
|
+
const memBefore = process.memoryUsage();
|
|
140
|
+
console.log('CodeYam Worker: Creating ProjectAnalyzer (ts.Program)...', {
|
|
141
|
+
memBefore: getWorkerMemoryStats(),
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
projectAnalyzer = ProjectAnalyzer.from({ project, dirPath });
|
|
65
145
|
projectAnalyzerKey = paKey;
|
|
146
|
+
|
|
147
|
+
const memAfter = process.memoryUsage();
|
|
148
|
+
const tsProgramStats = getTsProgramStats(projectAnalyzer);
|
|
149
|
+
console.log('CodeYam Worker: ProjectAnalyzer created', {
|
|
150
|
+
memAfter: getWorkerMemoryStats(),
|
|
151
|
+
rssDelta: `+${Math.round((memAfter.rss - memBefore.rss) / 1024 / 1024)}MB`,
|
|
152
|
+
heapDelta: `+${Math.round((memAfter.heapUsed - memBefore.heapUsed) / 1024 / 1024)}MB`,
|
|
153
|
+
tsProgramStats,
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
// Optionally write heap snapshot after ts.Program creation
|
|
157
|
+
maybeWriteHeapSnapshot('after-ts-program');
|
|
66
158
|
}
|
|
67
159
|
|
|
68
160
|
// Create or reuse FileAnalyzer
|
|
@@ -95,6 +187,26 @@ export default async function runAnalyzeScope(
|
|
|
95
187
|
);
|
|
96
188
|
}
|
|
97
189
|
|
|
190
|
+
// Periodic memory logging
|
|
191
|
+
entitiesProcessed++;
|
|
192
|
+
const now = Date.now();
|
|
193
|
+
const shouldLogMemory =
|
|
194
|
+
entitiesProcessed % MEMORY_LOG_INTERVAL === 0 ||
|
|
195
|
+
now - lastMemoryLogAt > MEMORY_LOG_TIME_INTERVAL;
|
|
196
|
+
|
|
197
|
+
if (shouldLogMemory) {
|
|
198
|
+
lastMemoryLogAt = now;
|
|
199
|
+
console.log('CodeYam Worker: Memory stats', {
|
|
200
|
+
entitiesProcessed,
|
|
201
|
+
...getWorkerMemoryStats(),
|
|
202
|
+
});
|
|
203
|
+
|
|
204
|
+
// Optionally write periodic heap snapshots
|
|
205
|
+
if (HEAP_SNAPSHOT_MODE === 'periodic' && entitiesProcessed % 500 === 0) {
|
|
206
|
+
maybeWriteHeapSnapshot(`after-${entitiesProcessed}-entities`);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
|
|
98
210
|
return { dataStructure: dataStructure.toSerializable() };
|
|
99
211
|
} catch (error) {
|
|
100
212
|
console.error(
|
|
@@ -41,6 +41,8 @@ export { default as mergeValidatedDataStructures } from './src/lib/files/scenari
|
|
|
41
41
|
|
|
42
42
|
export { discoverDirectDependencies } from './src/lib/files/analyze/dependencyResolver';
|
|
43
43
|
|
|
44
|
+
export { transformationTracer } from './src/lib/files/scenarios/TransformationTracer';
|
|
45
|
+
|
|
44
46
|
export { default as getAnalysisError } from './src/lib/utils/getAnalysisError';
|
|
45
47
|
export { default as measureAndReportExecutionTime } from './src/lib/utils/measureAndReportExecutionTime';
|
|
46
48
|
|