@codeyam/codeyam-cli 0.1.0-staging.15d0f46 → 0.1.0-staging.1669d45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/analyzer-template/.build-info.json +7 -7
- package/analyzer-template/common/execAsync.ts +1 -1
- package/analyzer-template/log.txt +3 -3
- package/analyzer-template/package.json +9 -5
- package/analyzer-template/packages/ai/index.ts +5 -3
- package/analyzer-template/packages/ai/package.json +1 -1
- package/analyzer-template/packages/ai/src/lib/__mocks__/completionCall.ts +122 -0
- package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +152 -6
- package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +107 -1
- package/analyzer-template/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.ts +644 -0
- package/analyzer-template/packages/ai/src/lib/astScopes/methodSemantics.ts +42 -0
- package/analyzer-template/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.ts +18 -0
- package/analyzer-template/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.ts +38 -1
- package/analyzer-template/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.ts +301 -1
- package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +972 -106
- package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +232 -0
- package/analyzer-template/packages/ai/src/lib/checkAllAttributes.ts +29 -10
- package/analyzer-template/packages/ai/src/lib/completionCall.ts +18 -2
- package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +1409 -138
- package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.ts +2 -1
- package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.ts +771 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.ts +233 -75
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +19 -1
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +39 -4
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.ts +23 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.ts +98 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +42 -2
- package/analyzer-template/packages/ai/src/lib/deepEqual.ts +30 -0
- package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarioData.ts +74 -7
- package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarios.ts +89 -112
- package/analyzer-template/packages/ai/src/lib/generateEntityDataStructure.ts +6 -0
- package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +486 -86
- package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +182 -104
- package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +201 -0
- package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.ts +528 -0
- package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionals.ts +1019 -0
- package/analyzer-template/packages/ai/src/lib/getConditionalUsagesFromCode.ts +143 -31
- package/analyzer-template/packages/ai/src/lib/guessScenarioDataFromDescription.ts +8 -2
- package/analyzer-template/packages/ai/src/lib/isolateScopes.ts +276 -3
- package/analyzer-template/packages/ai/src/lib/mergeStatements.ts +33 -3
- package/analyzer-template/packages/ai/src/lib/promptGenerators/gatherAttributesMap.ts +7 -0
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.ts +1 -1
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.ts +32 -102
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.ts +71 -4
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.ts +14 -53
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.ts +58 -0
- package/analyzer-template/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.ts +28 -2
- package/analyzer-template/packages/ai/src/lib/resolvePathToControllable.ts +690 -0
- package/analyzer-template/packages/ai/src/lib/splitOutsideParentheses.ts +5 -1
- package/analyzer-template/packages/ai/src/lib/validateExecutionFlowPaths.ts +531 -0
- package/analyzer-template/packages/ai/src/lib/worker/SerializableDataStructure.ts +102 -0
- package/analyzer-template/packages/ai/src/lib/worker/analyzeScopeWorker.ts +8 -1
- package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +14 -0
- package/analyzer-template/packages/analyze/src/lib/asts/nodes/index.ts +1 -0
- package/analyzer-template/packages/analyze/src/lib/asts/nodes/isAsyncFunction.ts +67 -0
- package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +458 -267
- package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +18 -0
- package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +3 -0
- package/analyzer-template/packages/analyze/src/lib/files/analyzeChange.ts +31 -15
- package/analyzer-template/packages/analyze/src/lib/files/analyzeEntity.ts +11 -7
- package/analyzer-template/packages/analyze/src/lib/files/analyzeInitial.ts +11 -12
- package/analyzer-template/packages/analyze/src/lib/files/enums/steps.ts +1 -1
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +196 -0
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.ts +102 -0
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +588 -52
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateChangesScenarioData.ts +1 -1
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.ts +28 -62
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +299 -133
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +156 -0
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarioData.ts +78 -83
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarios.ts +4 -8
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +384 -94
- package/analyzer-template/packages/aws/codebuild/index.ts +1 -0
- package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.d.ts +11 -1
- package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.d.ts.map +1 -1
- package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.js +29 -18
- package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.js.map +1 -1
- package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.d.ts +2 -2
- package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.d.ts.map +1 -1
- package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.js +2 -2
- package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.js.map +1 -1
- package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.d.ts +8 -18
- package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.d.ts.map +1 -1
- package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.js +17 -61
- package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.js.map +1 -1
- package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.d.ts +15 -0
- package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.d.ts.map +1 -0
- package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.js +31 -0
- package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.js.map +1 -0
- package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.d.ts.map +1 -1
- package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.js +8 -1
- package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.js.map +1 -1
- package/analyzer-template/packages/aws/package.json +2 -2
- package/analyzer-template/packages/aws/s3/index.ts +1 -0
- package/analyzer-template/packages/aws/src/lib/codebuild/waitForBuild.ts +43 -19
- package/analyzer-template/packages/aws/src/lib/ecs/ecsDefineContainer.ts +3 -3
- package/analyzer-template/packages/aws/src/lib/ecs/ecsTaskFactory.ts +17 -69
- package/analyzer-template/packages/aws/src/lib/s3/checkS3ObjectExists.ts +47 -0
- package/analyzer-template/packages/aws/src/lib/s3/uploadFileToS3.ts +8 -1
- package/analyzer-template/packages/database/src/lib/kysely/db.ts +4 -4
- package/analyzer-template/packages/database/src/lib/kysely/tableRelations.ts +2 -2
- package/analyzer-template/packages/database/src/lib/kysely/tables/debugReportsTable.ts +36 -9
- package/analyzer-template/packages/database/src/lib/loadReadyToBeCapturedAnalyses.ts +7 -3
- package/analyzer-template/packages/generate/index.ts +3 -0
- package/analyzer-template/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.ts +17 -1
- package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.ts +193 -0
- package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.ts +73 -0
- package/analyzer-template/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.ts +9 -4
- package/analyzer-template/packages/generate/src/lib/deepMerge.ts +26 -1
- package/analyzer-template/packages/generate/src/lib/scenarioComponentForServer.ts +114 -0
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +2 -2
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +2 -2
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tableRelations.d.ts +2 -2
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts +1 -11
- 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/debugReportsTable.d.ts +30 -7
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.js +9 -3
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/entitiesTable.d.ts +1 -0
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/entitiesTable.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +2 -6
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js +7 -4
- package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
- package/analyzer-template/packages/github/dist/generate/index.d.ts +3 -0
- package/analyzer-template/packages/github/dist/generate/index.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/generate/index.js +3 -0
- package/analyzer-template/packages/github/dist/generate/index.js.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +16 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts +9 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts.map +1 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +189 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.d.ts +20 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.d.ts.map +1 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js +53 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js.map +1 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +8 -4
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/deepMerge.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/deepMerge.js +27 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/deepMerge.js.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.d.ts +8 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.d.ts.map +1 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.js +89 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.js.map +1 -0
- package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.js +10 -0
- package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.js.map +1 -1
- package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.js +3 -0
- package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.js.map +1 -1
- package/analyzer-template/packages/github/dist/types/index.d.ts +2 -2
- 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 +63 -13
- package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/Entity.d.ts +2 -0
- package/analyzer-template/packages/github/dist/types/src/types/Entity.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +11 -6
- package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts +146 -0
- package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/StatementInfo.d.ts +2 -0
- package/analyzer-template/packages/github/dist/types/src/types/StatementInfo.d.ts.map +1 -1
- package/analyzer-template/packages/github/src/lib/loadOrCreateCommit.ts +14 -0
- package/analyzer-template/packages/github/src/lib/syncPrimaryBranch.ts +2 -0
- package/analyzer-template/packages/process/index.ts +2 -0
- package/analyzer-template/packages/process/package.json +12 -0
- package/analyzer-template/packages/process/tsconfig.json +8 -0
- package/analyzer-template/packages/types/index.ts +4 -0
- package/analyzer-template/packages/types/src/types/Analysis.ts +79 -13
- package/analyzer-template/packages/types/src/types/Entity.ts +2 -0
- package/analyzer-template/packages/types/src/types/Scenario.ts +11 -10
- package/analyzer-template/packages/types/src/types/ScenariosDataStructure.ts +161 -0
- package/analyzer-template/packages/types/src/types/StatementInfo.ts +2 -0
- package/analyzer-template/packages/utils/dist/types/index.d.ts +2 -2
- 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 +63 -13
- package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/types/src/types/Entity.d.ts +2 -0
- package/analyzer-template/packages/utils/dist/types/src/types/Entity.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +11 -6
- package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts +146 -0
- package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/types/src/types/StatementInfo.d.ts +2 -0
- package/analyzer-template/packages/utils/dist/types/src/types/StatementInfo.d.ts.map +1 -1
- package/analyzer-template/playwright/capture.ts +37 -18
- package/analyzer-template/playwright/getCodeYamInfo.ts +12 -7
- package/analyzer-template/playwright/takeElementScreenshot.ts +26 -11
- package/analyzer-template/playwright/waitForServer.ts +21 -6
- package/analyzer-template/project/analyzeBaselineCommit.ts +4 -0
- package/analyzer-template/project/analyzeBranchCommit.ts +4 -0
- package/analyzer-template/project/analyzeFileEntities.ts +4 -0
- package/analyzer-template/project/analyzeRegularCommit.ts +4 -0
- package/analyzer-template/project/constructMockCode.ts +868 -132
- package/analyzer-template/project/controller/startController.ts +16 -1
- package/analyzer-template/project/executeLibraryFunctionDirect.ts +7 -3
- package/analyzer-template/project/mocks/analyzeFileMock.ts +8 -7
- package/analyzer-template/project/orchestrateCapture/KyselyAnalysisLoader.ts +3 -6
- package/analyzer-template/project/orchestrateCapture/SequentialCaptureTaskRunner.ts +49 -33
- package/analyzer-template/project/orchestrateCapture.ts +10 -3
- package/analyzer-template/project/reconcileMockDataKeys.ts +102 -2
- package/analyzer-template/project/runAnalysis.ts +7 -0
- package/analyzer-template/project/serverOnlyModules.ts +127 -2
- package/analyzer-template/project/start.ts +26 -4
- package/analyzer-template/project/startScenarioCapture.ts +72 -40
- package/analyzer-template/project/writeMockDataTsx.ts +118 -55
- package/analyzer-template/project/writeScenarioClientWrapper.ts +21 -0
- package/analyzer-template/project/writeScenarioComponents.ts +263 -92
- package/analyzer-template/project/writeScenarioFiles.ts +26 -0
- package/analyzer-template/project/writeSimpleRoot.ts +13 -15
- package/analyzer-template/scripts/comboWorkerLoop.cjs +1 -0
- package/analyzer-template/scripts/defaultCmd.sh +9 -0
- package/analyzer-template/tsconfig.json +2 -1
- package/background/src/lib/local/createLocalAnalyzer.js +1 -29
- package/background/src/lib/local/createLocalAnalyzer.js.map +1 -1
- package/background/src/lib/local/execAsync.js +1 -1
- package/background/src/lib/local/execAsync.js.map +1 -1
- package/background/src/lib/virtualized/common/execAsync.js +1 -1
- package/background/src/lib/virtualized/common/execAsync.js.map +1 -1
- package/background/src/lib/virtualized/project/analyzeBaselineCommit.js +2 -1
- package/background/src/lib/virtualized/project/analyzeBaselineCommit.js.map +1 -1
- package/background/src/lib/virtualized/project/analyzeBranchCommit.js +2 -1
- package/background/src/lib/virtualized/project/analyzeBranchCommit.js.map +1 -1
- package/background/src/lib/virtualized/project/analyzeFileEntities.js +2 -1
- package/background/src/lib/virtualized/project/analyzeFileEntities.js.map +1 -1
- package/background/src/lib/virtualized/project/analyzeRegularCommit.js +2 -1
- package/background/src/lib/virtualized/project/analyzeRegularCommit.js.map +1 -1
- package/background/src/lib/virtualized/project/constructMockCode.js +799 -121
- package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
- package/background/src/lib/virtualized/project/controller/startController.js +11 -1
- package/background/src/lib/virtualized/project/controller/startController.js.map +1 -1
- package/background/src/lib/virtualized/project/executeLibraryFunctionDirect.js +6 -3
- package/background/src/lib/virtualized/project/executeLibraryFunctionDirect.js.map +1 -1
- package/background/src/lib/virtualized/project/mocks/analyzeFileMock.js +7 -7
- package/background/src/lib/virtualized/project/mocks/analyzeFileMock.js.map +1 -1
- package/background/src/lib/virtualized/project/orchestrateCapture/KyselyAnalysisLoader.js +3 -2
- package/background/src/lib/virtualized/project/orchestrateCapture/KyselyAnalysisLoader.js.map +1 -1
- package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js +42 -28
- package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js.map +1 -1
- package/background/src/lib/virtualized/project/orchestrateCapture.js +7 -4
- package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
- package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +87 -2
- package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
- package/background/src/lib/virtualized/project/runAnalysis.js +6 -0
- package/background/src/lib/virtualized/project/runAnalysis.js.map +1 -1
- package/background/src/lib/virtualized/project/serverOnlyModules.js +106 -3
- package/background/src/lib/virtualized/project/serverOnlyModules.js.map +1 -1
- package/background/src/lib/virtualized/project/start.js +21 -4
- package/background/src/lib/virtualized/project/start.js.map +1 -1
- package/background/src/lib/virtualized/project/startScenarioCapture.js +56 -30
- package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
- package/background/src/lib/virtualized/project/writeMockDataTsx.js +110 -48
- package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
- package/background/src/lib/virtualized/project/writeScenarioClientWrapper.js +15 -0
- package/background/src/lib/virtualized/project/writeScenarioClientWrapper.js.map +1 -0
- package/background/src/lib/virtualized/project/writeScenarioComponents.js +211 -75
- package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
- package/background/src/lib/virtualized/project/writeScenarioFiles.js +19 -0
- package/background/src/lib/virtualized/project/writeScenarioFiles.js.map +1 -1
- package/background/src/lib/virtualized/project/writeSimpleRoot.js +13 -13
- package/background/src/lib/virtualized/project/writeSimpleRoot.js.map +1 -1
- package/codeyam-cli/src/cli.js +5 -1
- package/codeyam-cli/src/cli.js.map +1 -1
- package/codeyam-cli/src/commands/analyze.js +1 -1
- package/codeyam-cli/src/commands/analyze.js.map +1 -1
- package/codeyam-cli/src/commands/baseline.js +174 -0
- package/codeyam-cli/src/commands/baseline.js.map +1 -0
- package/codeyam-cli/src/commands/debug.js +28 -18
- package/codeyam-cli/src/commands/debug.js.map +1 -1
- package/codeyam-cli/src/commands/default.js +0 -15
- package/codeyam-cli/src/commands/default.js.map +1 -1
- package/codeyam-cli/src/commands/recapture.js +44 -23
- package/codeyam-cli/src/commands/recapture.js.map +1 -1
- package/codeyam-cli/src/commands/report.js +72 -24
- package/codeyam-cli/src/commands/report.js.map +1 -1
- package/codeyam-cli/src/commands/start.js +8 -12
- package/codeyam-cli/src/commands/start.js.map +1 -1
- package/codeyam-cli/src/commands/status.js +23 -1
- package/codeyam-cli/src/commands/status.js.map +1 -1
- package/codeyam-cli/src/commands/test-startup.js +1 -1
- package/codeyam-cli/src/commands/test-startup.js.map +1 -1
- package/codeyam-cli/src/commands/wipe.js +108 -0
- package/codeyam-cli/src/commands/wipe.js.map +1 -0
- package/codeyam-cli/src/utils/__tests__/serverVersionStaleness.test.js +81 -0
- package/codeyam-cli/src/utils/__tests__/serverVersionStaleness.test.js.map +1 -0
- package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +27 -27
- package/codeyam-cli/src/utils/analysisRunner.js +8 -13
- package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
- package/codeyam-cli/src/utils/backgroundServer.js +12 -2
- package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
- package/codeyam-cli/src/utils/database.js +91 -5
- package/codeyam-cli/src/utils/database.js.map +1 -1
- package/codeyam-cli/src/utils/generateReport.js +253 -106
- package/codeyam-cli/src/utils/generateReport.js.map +1 -1
- package/codeyam-cli/src/utils/git.js +79 -0
- package/codeyam-cli/src/utils/git.js.map +1 -0
- package/codeyam-cli/src/utils/install-skills.js +11 -11
- package/codeyam-cli/src/utils/install-skills.js.map +1 -1
- package/codeyam-cli/src/utils/queue/__tests__/manager.test.js +38 -0
- package/codeyam-cli/src/utils/queue/__tests__/manager.test.js.map +1 -1
- package/codeyam-cli/src/utils/queue/job.js +239 -16
- package/codeyam-cli/src/utils/queue/job.js.map +1 -1
- package/codeyam-cli/src/utils/queue/manager.js +19 -7
- package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
- package/codeyam-cli/src/utils/queue/persistence.js.map +1 -1
- package/codeyam-cli/src/utils/serverState.js.map +1 -1
- package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +5 -5
- package/codeyam-cli/src/utils/versionInfo.js +25 -19
- package/codeyam-cli/src/utils/versionInfo.js.map +1 -1
- package/codeyam-cli/src/utils/wipe.js +128 -0
- package/codeyam-cli/src/utils/wipe.js.map +1 -0
- package/codeyam-cli/src/webserver/app/lib/database.js +96 -0
- 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 +2 -5
- package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/EntityItem-vauWK972.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-DKdsUF7Y.js → EntityTypeBadge-COi5OvsN.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-BwdQv49w.js +41 -0
- package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-CEleMv_j.js +34 -0
- package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-D68KarMg.js +25 -0
- package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-L75Wvqgw.js +3 -0
- package/codeyam-cli/src/webserver/build/client/assets/LoadingDots-C53WM8qn.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/LogViewer-CrNkmy4i.js +3 -0
- package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-DzJRkCkr.js +11 -0
- package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-CQifa1n-.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-CyaBFX7l.js +20 -0
- package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-CWjSsLqY.js → TruncatedFilePath-D36O1rzU.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/_index-Be83mo_j.js +11 -0
- package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-BN6wu6Y-.js +37 -0
- package/codeyam-cli/src/webserver/build/client/assets/chevron-down-DgTPh8H-.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/chunk-EPOLDU6W-DdQKK6on.js +51 -0
- package/codeyam-cli/src/webserver/build/client/assets/circle-check-Dmr2bb1R.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-Do4ZLUYa.js +21 -0
- package/codeyam-cli/src/webserver/build/client/assets/{cy-logo-cli-C1gnJVOL.svg → cy-logo-cli-CCKUIm0S.svg} +2 -2
- package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-DcX-ZS3p.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/dev.empty-Bn6aCAy_.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha._-CbdFyxZh.js +23 -0
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-B4iCfs5M.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-wDWZZO1W.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-BMbl7MeQ.js +5 -0
- package/codeyam-cli/src/webserver/build/client/assets/entry.client-5wRKRIH9.js +29 -0
- package/codeyam-cli/src/webserver/build/client/assets/executionFlowCoverage-BWhdfn70.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-DD3SDH7t.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/files-DKyMFI90.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/git-zXjT7J0G.js +15 -0
- package/codeyam-cli/src/webserver/build/client/assets/globals-DTTQ3gY7.css +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/html2canvas-pro.esm-fmIEn3Bc.js +9 -0
- package/codeyam-cli/src/webserver/build/client/assets/index-DLbXwndH.js +9 -0
- package/codeyam-cli/src/webserver/build/client/assets/index-gPZ-lad1.js +3 -0
- package/codeyam-cli/src/webserver/build/client/assets/loader-circle-BsPXJ81F.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/manifest-22590fcf.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/preload-helper-ckwbz45p.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/root-BsAarjAM.js +57 -0
- package/codeyam-cli/src/webserver/build/client/assets/scenarioStatus-B_8jpV3e.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/search-P2FKIUql.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/settings-B2eDuBj8.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/simulations-L18M6-kN.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/triangle-alert-BDz7kbVA.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-29dDmbH8.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-CmrTPlIB.js → useLastLogLine-BUm0UVJm.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/useReportContext-CkIOKTrZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{useToast-C1ig_BmP.js → useToast-KKw5kTn-.js} +1 -1
- package/codeyam-cli/src/webserver/build/server/assets/index-BND5I5fv.js +1 -0
- package/codeyam-cli/src/webserver/build/server/assets/server-build-CFXnd7MG.js +228 -0
- package/codeyam-cli/src/webserver/build/server/index.js +1 -1
- package/codeyam-cli/src/webserver/build-info.json +5 -5
- package/codeyam-cli/src/webserver/devServer.js +1 -3
- package/codeyam-cli/src/webserver/devServer.js.map +1 -1
- package/codeyam-cli/src/webserver/server.js +35 -25
- package/codeyam-cli/src/webserver/server.js.map +1 -1
- package/codeyam-cli/templates/{codeyam-debug-skill.md → codeyam:debug.md} +1 -1
- package/codeyam-cli/templates/codeyam:diagnose.md +625 -0
- package/codeyam-cli/templates/{codeyam-setup-skill.md → codeyam:setup.md} +139 -4
- package/codeyam-cli/templates/{codeyam-sim-skill.md → codeyam:sim.md} +1 -1
- package/codeyam-cli/templates/{codeyam-test-skill.md → codeyam:test.md} +1 -1
- package/codeyam-cli/templates/{codeyam-verify-skill.md → codeyam:verify.md} +1 -1
- package/package.json +8 -8
- package/packages/ai/index.js +2 -4
- package/packages/ai/index.js.map +1 -1
- package/packages/ai/src/lib/analyzeScope.js +107 -0
- package/packages/ai/src/lib/analyzeScope.js.map +1 -1
- package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +76 -1
- package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
- package/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.js +435 -0
- package/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.js.map +1 -0
- package/packages/ai/src/lib/astScopes/methodSemantics.js +29 -0
- package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
- package/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.js +8 -0
- package/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.js.map +1 -1
- package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js +23 -0
- package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js.map +1 -1
- package/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.js +239 -1
- package/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.js.map +1 -1
- package/packages/ai/src/lib/astScopes/processExpression.js +728 -87
- package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
- package/packages/ai/src/lib/checkAllAttributes.js +24 -9
- package/packages/ai/src/lib/checkAllAttributes.js.map +1 -1
- package/packages/ai/src/lib/completionCall.js +17 -1
- package/packages/ai/src/lib/completionCall.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +1126 -82
- package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js +2 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js +482 -0
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js.map +1 -0
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js +173 -55
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +16 -1
- package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +35 -2
- package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js +20 -0
- package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.js +86 -0
- package/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.js.map +1 -0
- package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +34 -3
- package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
- package/packages/ai/src/lib/deepEqual.js +32 -0
- package/packages/ai/src/lib/deepEqual.js.map +1 -0
- package/packages/ai/src/lib/generateChangesEntityScenarioData.js +62 -5
- package/packages/ai/src/lib/generateChangesEntityScenarioData.js.map +1 -1
- package/packages/ai/src/lib/generateChangesEntityScenarios.js +81 -90
- package/packages/ai/src/lib/generateChangesEntityScenarios.js.map +1 -1
- package/packages/ai/src/lib/generateEntityDataStructure.js +5 -0
- package/packages/ai/src/lib/generateEntityDataStructure.js.map +1 -1
- package/packages/ai/src/lib/generateEntityScenarioData.js +398 -81
- package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
- package/packages/ai/src/lib/generateEntityScenarios.js +168 -82
- package/packages/ai/src/lib/generateEntityScenarios.js.map +1 -1
- package/packages/ai/src/lib/generateExecutionFlows.js +123 -0
- package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -0
- package/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.js +380 -0
- package/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.js.map +1 -0
- package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js +742 -0
- package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js.map +1 -0
- package/packages/ai/src/lib/getConditionalUsagesFromCode.js +84 -14
- package/packages/ai/src/lib/getConditionalUsagesFromCode.js.map +1 -1
- package/packages/ai/src/lib/guessScenarioDataFromDescription.js +2 -1
- package/packages/ai/src/lib/guessScenarioDataFromDescription.js.map +1 -1
- package/packages/ai/src/lib/isolateScopes.js +231 -4
- package/packages/ai/src/lib/isolateScopes.js.map +1 -1
- package/packages/ai/src/lib/mergeStatements.js +26 -3
- package/packages/ai/src/lib/mergeStatements.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js +6 -0
- package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js +1 -1
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js +21 -64
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js +58 -4
- package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js +10 -34
- package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.js +45 -0
- package/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.js.map +1 -0
- package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js +16 -3
- package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js.map +1 -1
- package/packages/ai/src/lib/resolvePathToControllable.js +563 -0
- package/packages/ai/src/lib/resolvePathToControllable.js.map +1 -0
- package/packages/ai/src/lib/splitOutsideParentheses.js +3 -1
- package/packages/ai/src/lib/splitOutsideParentheses.js.map +1 -1
- package/packages/ai/src/lib/worker/SerializableDataStructure.js +22 -0
- package/packages/ai/src/lib/worker/SerializableDataStructure.js.map +1 -1
- package/packages/ai/src/lib/worker/analyzeScopeWorker.js +4 -0
- package/packages/ai/src/lib/worker/analyzeScopeWorker.js.map +1 -1
- package/packages/analyze/src/lib/FileAnalyzer.js +15 -0
- package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
- package/packages/analyze/src/lib/asts/nodes/index.js +1 -0
- package/packages/analyze/src/lib/asts/nodes/index.js.map +1 -1
- package/packages/analyze/src/lib/asts/nodes/isAsyncFunction.js +52 -0
- package/packages/analyze/src/lib/asts/nodes/isAsyncFunction.js.map +1 -0
- package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +214 -50
- package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +10 -0
- package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +2 -0
- package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
- package/packages/analyze/src/lib/files/analyzeChange.js +21 -11
- package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
- package/packages/analyze/src/lib/files/analyzeEntity.js +9 -8
- package/packages/analyze/src/lib/files/analyzeEntity.js.map +1 -1
- package/packages/analyze/src/lib/files/analyzeInitial.js +9 -10
- package/packages/analyze/src/lib/files/analyzeInitial.js.map +1 -1
- package/packages/analyze/src/lib/files/enums/steps.js +1 -1
- package/packages/analyze/src/lib/files/enums/steps.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js +159 -0
- package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -0
- package/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.js +85 -0
- package/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.js.map +1 -0
- package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +458 -48
- package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateChangesScenarioData.js +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateChangesScenarioData.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.js +29 -34
- package/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +235 -81
- package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js +96 -0
- package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js.map +1 -0
- package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js +56 -69
- package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateScenarios.js +4 -8
- package/packages/analyze/src/lib/files/scenarios/generateScenarios.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +307 -89
- package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
- package/packages/aws/src/lib/ecs/ecsDefineContainer.js +2 -2
- package/packages/aws/src/lib/ecs/ecsDefineContainer.js.map +1 -1
- package/packages/aws/src/lib/ecs/ecsTaskFactory.js +17 -61
- package/packages/aws/src/lib/ecs/ecsTaskFactory.js.map +1 -1
- package/packages/database/src/lib/kysely/db.js +2 -2
- package/packages/database/src/lib/kysely/tables/debugReportsTable.js +9 -3
- package/packages/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
- package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js +7 -4
- package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
- package/packages/generate/index.js +3 -0
- package/packages/generate/index.js.map +1 -1
- package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +16 -1
- package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
- package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +189 -0
- package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -0
- package/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js +53 -0
- package/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js.map +1 -0
- package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +8 -4
- package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
- package/packages/generate/src/lib/deepMerge.js +27 -1
- package/packages/generate/src/lib/deepMerge.js.map +1 -1
- package/packages/generate/src/lib/scenarioComponentForServer.js +89 -0
- package/packages/generate/src/lib/scenarioComponentForServer.js.map +1 -0
- package/packages/github/src/lib/loadOrCreateCommit.js +10 -0
- package/packages/github/src/lib/loadOrCreateCommit.js.map +1 -1
- package/packages/github/src/lib/syncPrimaryBranch.js +3 -0
- package/packages/github/src/lib/syncPrimaryBranch.js.map +1 -1
- package/packages/process/index.js +3 -0
- package/packages/process/index.js.map +1 -0
- package/packages/process/src/GlobalProcessManager.js.map +1 -0
- package/{background/src/lib/process → packages/process/src}/ProcessManager.js +1 -1
- package/packages/process/src/ProcessManager.js.map +1 -0
- package/packages/process/src/index.js.map +1 -0
- package/packages/process/src/managedExecAsync.js.map +1 -0
- package/packages/types/index.js.map +1 -1
- package/scripts/finalize-analyzer.cjs +3 -1
- package/analyzer-template/packages/ai/src/lib/findMatchingAttribute.ts +0 -102
- package/analyzer-template/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.ts +0 -197
- package/analyzer-template/packages/ai/src/lib/generateChangesEntityKeyAttributes.ts +0 -271
- package/analyzer-template/packages/ai/src/lib/generateEntityKeyAttributes.ts +0 -294
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.ts +0 -67
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.ts +0 -115
- package/analyzer-template/process/INTEGRATION_COMPLETE.md +0 -333
- package/analyzer-template/process/INTEGRATION_EXAMPLE.md +0 -525
- package/analyzer-template/process/README.md +0 -507
- package/background/src/lib/process/GlobalProcessManager.js.map +0 -1
- package/background/src/lib/process/ProcessManager.js.map +0 -1
- package/background/src/lib/process/index.js.map +0 -1
- package/background/src/lib/process/managedExecAsync.js.map +0 -1
- package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js +0 -238
- package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js.map +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/EntityItem-D0VW1-W7.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-BAk4S4pI.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-Y756iZxZ.js +0 -25
- package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-zzrrjW1p.js +0 -3
- package/codeyam-cli/src/webserver/build/client/assets/LogViewer-QMn7bJg6.js +0 -3
- package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-DmP5mRxX.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-BXwvsbLw.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-DAmUX_1y.js +0 -5
- package/codeyam-cli/src/webserver/build/client/assets/_index-Df-nk4J5.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-_ZUyFdie.js +0 -7
- package/codeyam-cli/src/webserver/build/client/assets/chevron-down-Eoh0PhcW.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/chunk-WWGJGFF6-CZgPLy5i.js +0 -26
- package/codeyam-cli/src/webserver/build/client/assets/circle-check-DI-p9ZLZ.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-DvyV2x6y.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/dev.empty-DURu2qlF.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha._-DDobn9Xh.js +0 -16
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-CGdWnLD_.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-DgMmzrKs.js +0 -5
- package/codeyam-cli/src/webserver/build/client/assets/entry.client-DEVXuhkn.js +0 -13
- package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-WPRQyc68.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/files-B9u3lJer.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/git-YGnKIuHU.js +0 -11
- package/codeyam-cli/src/webserver/build/client/assets/globals-28lrWTTo.css +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/html2canvas-pro.esm-XQCGvadH.js +0 -5
- package/codeyam-cli/src/webserver/build/client/assets/index-CJ0uPJjV.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/index-CfqeA2XG.js +0 -3
- package/codeyam-cli/src/webserver/build/client/assets/loader-circle-DIjSvh6B.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/manifest-8125c15c.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/preload-helper-BXl3LOEh.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/root-C-g286WP.js +0 -16
- package/codeyam-cli/src/webserver/build/client/assets/search-xBKWfOxd.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/settings-DVY_wGOx.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/simulations-Be1pJo5A.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/triangle-alert-CR-FkSvx.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/useReportContext-DABetnSj.js +0 -1
- package/codeyam-cli/src/webserver/build/server/assets/index-DcR7DH9q.js +0 -1
- package/codeyam-cli/src/webserver/build/server/assets/server-build-BDBrfp7e.js +0 -175
- package/codeyam-cli/templates/debug-codeyam.md +0 -527
- package/packages/ai/src/lib/findMatchingAttribute.js +0 -77
- package/packages/ai/src/lib/findMatchingAttribute.js.map +0 -1
- package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js +0 -136
- package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js.map +0 -1
- package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js +0 -220
- package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js.map +0 -1
- package/packages/ai/src/lib/generateEntityKeyAttributes.js +0 -241
- package/packages/ai/src/lib/generateEntityKeyAttributes.js.map +0 -1
- package/packages/ai/src/lib/isFrontend.js +0 -5
- package/packages/ai/src/lib/isFrontend.js.map +0 -1
- package/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.js +0 -40
- package/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.js.map +0 -1
- package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js +0 -72
- package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js.map +0 -1
- /package/analyzer-template/{process → packages/process/src}/GlobalProcessManager.ts +0 -0
- /package/analyzer-template/{process → packages/process/src}/ProcessManager.ts +0 -0
- /package/analyzer-template/{process → packages/process/src}/index.ts +0 -0
- /package/analyzer-template/{process → packages/process/src}/managedExecAsync.ts +0 -0
- /package/{background/src/lib/process → packages/process/src}/GlobalProcessManager.js +0 -0
- /package/{background/src/lib/process → packages/process/src}/index.js +0 -0
- /package/{background/src/lib/process → packages/process/src}/managedExecAsync.js +0 -0
|
@@ -5,11 +5,10 @@ import generateEntityScenariosGenerator from './promptGenerators/generateEntityS
|
|
|
5
5
|
import {
|
|
6
6
|
Analysis,
|
|
7
7
|
Entity,
|
|
8
|
+
ExecutionFlow,
|
|
8
9
|
PlaywrightInstruction,
|
|
9
|
-
ReadonlyAnalysisMap,
|
|
10
10
|
Scenario,
|
|
11
11
|
} from '~codeyam/types';
|
|
12
|
-
// import findMatchingAttribute from './findMatchingAttribute';
|
|
13
12
|
import { awsLog } from '~codeyam/utils';
|
|
14
13
|
import { sanitizePlaywrightInstructions } from './validatePlaywrightInstructions';
|
|
15
14
|
import { AI, DEFAULT_LARGER_MODEL, parseJsonSafe } from '~codeyam/ai';
|
|
@@ -18,31 +17,21 @@ export interface ScenarioResult {
|
|
|
18
17
|
name: string;
|
|
19
18
|
testName: string;
|
|
20
19
|
description: string;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
};
|
|
31
|
-
codeSnippet: string;
|
|
32
|
-
fix: string;
|
|
33
|
-
fixSnippet: string;
|
|
34
|
-
likelihood: number;
|
|
35
|
-
likelihoodDescription: string;
|
|
36
|
-
severity: number;
|
|
37
|
-
severityDescription: string;
|
|
38
|
-
dataMapping: { [key: string]: string };
|
|
20
|
+
/** IDs of execution flows this scenario covers */
|
|
21
|
+
coveredFlows: string[];
|
|
22
|
+
codeSnippet?: string;
|
|
23
|
+
fix?: string;
|
|
24
|
+
fixSnippet?: string;
|
|
25
|
+
likelihood?: number;
|
|
26
|
+
likelihoodDescription?: string;
|
|
27
|
+
severity?: number;
|
|
28
|
+
severityDescription?: string;
|
|
39
29
|
playwrightInstructions?: PlaywrightInstruction[];
|
|
40
30
|
}
|
|
41
31
|
|
|
42
32
|
interface GenerateEntityScenariosArgs {
|
|
43
33
|
entity: Pick<Entity, 'projectId' | 'filePath' | 'name' | 'code' | 'metadata'>;
|
|
44
|
-
|
|
45
|
-
dependentAnalyses?: ReadonlyAnalysisMap;
|
|
34
|
+
executionFlows?: ExecutionFlow[];
|
|
46
35
|
analysis: Analysis;
|
|
47
36
|
error?: boolean;
|
|
48
37
|
model?: AI.Model;
|
|
@@ -52,7 +41,7 @@ const DEFAULT_SCENARIO_NAME = 'Default Scenario';
|
|
|
52
41
|
|
|
53
42
|
export default async function generateEntityScenarios({
|
|
54
43
|
entity,
|
|
55
|
-
|
|
44
|
+
executionFlows,
|
|
56
45
|
analysis,
|
|
57
46
|
error,
|
|
58
47
|
model,
|
|
@@ -62,9 +51,33 @@ export default async function generateEntityScenarios({
|
|
|
62
51
|
entityName: entity.name,
|
|
63
52
|
});
|
|
64
53
|
|
|
54
|
+
// If no execution flows are available (and not generating error scenarios),
|
|
55
|
+
// return only the Default Scenario without calling LLM
|
|
56
|
+
if (!error && (!executionFlows || executionFlows.length === 0)) {
|
|
57
|
+
console.log(
|
|
58
|
+
`CodeYam: No execution flows available for ${entity.filePath} ${entity.name}, creating Default Scenario only`,
|
|
59
|
+
);
|
|
60
|
+
const defaultScenario: Scenario = {
|
|
61
|
+
projectId: entity.projectId,
|
|
62
|
+
analysisId: analysis.id,
|
|
63
|
+
name: DEFAULT_SCENARIO_NAME,
|
|
64
|
+
description: 'Default component rendering with standard data',
|
|
65
|
+
metadata: {
|
|
66
|
+
testName: 'it("renders the component with default data")',
|
|
67
|
+
error: false,
|
|
68
|
+
coveredFlows: [],
|
|
69
|
+
playwrightInstructions: [],
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
return {
|
|
73
|
+
scenarios: [defaultScenario],
|
|
74
|
+
llmCall: null,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
|
|
65
78
|
const prompt = generateEntityScenariosGenerator({
|
|
66
79
|
entity,
|
|
67
|
-
|
|
80
|
+
executionFlows,
|
|
68
81
|
error,
|
|
69
82
|
});
|
|
70
83
|
|
|
@@ -93,14 +106,14 @@ export default async function generateEntityScenarios({
|
|
|
93
106
|
filePath: entity.filePath,
|
|
94
107
|
code: entity.code,
|
|
95
108
|
},
|
|
96
|
-
|
|
109
|
+
executionFlows,
|
|
97
110
|
analysis: {
|
|
98
111
|
id: analysis.id,
|
|
99
112
|
metadata: {
|
|
100
113
|
isolatedDataStructure: {
|
|
101
114
|
equivalentSignatureVariables:
|
|
102
115
|
entity.metadata.isolatedDataStructure
|
|
103
|
-
|
|
116
|
+
?.equivalentSignatureVariables,
|
|
104
117
|
},
|
|
105
118
|
},
|
|
106
119
|
},
|
|
@@ -159,23 +172,7 @@ export default async function generateEntityScenarios({
|
|
|
159
172
|
likelihoodDescription: scenarioInfo.likelihoodDescription,
|
|
160
173
|
severity: scenarioInfo.severity,
|
|
161
174
|
severityDescription: scenarioInfo.severityDescription,
|
|
162
|
-
|
|
163
|
-
keyAttributeInstructions: scenarioInfo.keyAttributeInstructions,
|
|
164
|
-
// Object.keys(
|
|
165
|
-
// scenarioInfo.keyAttributeInstructions,
|
|
166
|
-
// ).reduce((acc, key) => {
|
|
167
|
-
// const attributesList = keyAttributes.map(
|
|
168
|
-
// (attr) => attr.internalPath,
|
|
169
|
-
// );
|
|
170
|
-
// const matchingKey = findMatchingAttribute(
|
|
171
|
-
// key,
|
|
172
|
-
// attributesList,
|
|
173
|
-
// entity.metadata.isolatedDataStructure
|
|
174
|
-
// .equivalentSignatureVariables,
|
|
175
|
-
// );
|
|
176
|
-
// acc[matchingKey] = scenarioInfo.keyAttributeInstructions[key];
|
|
177
|
-
// return acc;
|
|
178
|
-
// }, {}),
|
|
175
|
+
coveredFlows: scenarioInfo.coveredFlows || [],
|
|
179
176
|
playwrightInstructions: sanitizePlaywrightInstructions(
|
|
180
177
|
scenarioInfo.playwrightInstructions || [],
|
|
181
178
|
entity.name,
|
|
@@ -197,7 +194,7 @@ function generateSystemMessage(
|
|
|
197
194
|
): string {
|
|
198
195
|
const scenarioCountText = scenarioCount
|
|
199
196
|
? `Generate exactly ${scenarioCount} scenario${scenarioCount > 1 ? 's' : ''}.`
|
|
200
|
-
: 'Generate
|
|
197
|
+
: 'Generate 3-6 scenarios MAXIMUM. Do NOT exceed 6 scenarios.';
|
|
201
198
|
|
|
202
199
|
const contextSection = context
|
|
203
200
|
? `## Business Context
|
|
@@ -208,35 +205,136 @@ Focus scenarios on demonstrating this specific behavior change.
|
|
|
208
205
|
`
|
|
209
206
|
: '';
|
|
210
207
|
|
|
211
|
-
return `You are a test scenario designer. Generate data scenarios that demonstrate a function's behavior.
|
|
208
|
+
return `You are a test scenario designer. Generate data scenarios that demonstrate a function's behavior by covering its execution flows.
|
|
212
209
|
|
|
213
210
|
${contextSection}${scenarioCountText}
|
|
214
211
|
|
|
215
|
-
##
|
|
216
|
-
|
|
217
|
-
-
|
|
218
|
-
-
|
|
219
|
-
-
|
|
220
|
-
-
|
|
221
|
-
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
-
|
|
225
|
-
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
212
|
+
## Your Primary Goal: Cover ALL Execution Flows EFFICIENTLY
|
|
213
|
+
|
|
214
|
+
You are given \`executionFlows\` - all the distinct outcomes/behaviors this component can produce. Each flow has:
|
|
215
|
+
- \`id\`: Unique identifier
|
|
216
|
+
- \`name\`: Human-readable name (e.g., "Modal visible", "Loading state")
|
|
217
|
+
- \`description\`: What the user sees or what behavior occurs
|
|
218
|
+
- \`requiredValues\`: Attribute values needed to produce this outcome
|
|
219
|
+
- \`impact\`: Visual/behavioral importance ("high", "medium", "low")
|
|
220
|
+
- \`blocksOtherFlows\`: If true, this outcome hides other content (modals, overlays)
|
|
221
|
+
- \`isError\`: If true, this represents an error/exception scenario
|
|
222
|
+
- \`exclusiveGroup\`: If set, flows with the same group are MUTUALLY EXCLUSIVE (only one can be active)
|
|
223
|
+
|
|
224
|
+
**Your job**: Create the MINIMUM number of scenarios that cover ALL execution flows.
|
|
225
|
+
|
|
226
|
+
## CRITICAL: Understanding Exclusive Groups
|
|
227
|
+
|
|
228
|
+
Flows with the same \`exclusiveGroup\` are MUTUALLY EXCLUSIVE - only ONE can be active at a time.
|
|
229
|
+
|
|
230
|
+
**Example exclusive groups:**
|
|
231
|
+
- \`"status-badge"\`: loading, success, error, pending - only ONE badge shows
|
|
232
|
+
- \`"active-tab"\`: users, settings, profile - only ONE tab is visible
|
|
233
|
+
- \`"modal"\`: settings-modal, confirm-modal - only ONE modal at a time
|
|
234
|
+
|
|
235
|
+
5. **Maximize visual diversity**: For attributes that control what content is displayed (rather than just styling), vary values across scenarios so screenshots show meaningfully different views:
|
|
236
|
+
- Don't use the same display-controlling value in every scenario
|
|
237
|
+
- Ensure at least one scenario shows the primary content view
|
|
238
|
+
- Other scenarios can demonstrate alternative display states
|
|
239
|
+
|
|
240
|
+
**Key insight**: You don't need a separate scenario for each flow in an exclusive group!
|
|
241
|
+
- Pick the PRIMARY/DEFAULT option for the Default Scenario
|
|
242
|
+
- Only create additional scenarios for IMPORTANT alternative states (e.g., error states, loading states)
|
|
243
|
+
- Skip scenarios for minor variations within a group
|
|
244
|
+
|
|
245
|
+
## Scenario Strategy
|
|
246
|
+
|
|
247
|
+
### 1. Default Scenario (REQUIRED - must be first, named exactly "${DEFAULT_SCENARIO_NAME}")
|
|
248
|
+
- For each exclusive group, pick the PRIMARY/HAPPY-PATH option:
|
|
249
|
+
- Status: "success" or "ready" (not loading, not error)
|
|
250
|
+
- Tabs: The main/first tab
|
|
251
|
+
- View modes: The default view
|
|
252
|
+
- Combine as many NON-BLOCKING, NON-ERROR, NON-EXCLUSIVE-CONFLICT flows as possible
|
|
253
|
+
- AVOID flows with \`blocksOtherFlows: true\`
|
|
254
|
+
- NEVER include \`playwrightInstructions\`
|
|
255
|
+
|
|
256
|
+
### 2. Blocking Flow Scenarios (ONE per blocking flow)
|
|
257
|
+
Each flow with \`blocksOtherFlows: true\` gets its OWN scenario.
|
|
258
|
+
- Modals, overlays, drawers hide other content
|
|
259
|
+
- Don't combine blocking flows
|
|
260
|
+
|
|
261
|
+
### 3. Important Alternative States (SELECTIVE)
|
|
262
|
+
Only create scenarios for IMPORTANT alternatives within exclusive groups:
|
|
263
|
+
- ✅ Loading state (if exists) - important UX state
|
|
264
|
+
- ✅ Error state (if exists) - important UX state
|
|
265
|
+
- ✅ Empty state (if exists) - important UX state
|
|
266
|
+
- ❌ Each individual tab - NOT needed (tabs are just navigation)
|
|
267
|
+
- ❌ Each status badge variant - just pick the important ones
|
|
268
|
+
|
|
269
|
+
### 4. CRITICAL: Skip Low-Value Scenarios
|
|
270
|
+
Do NOT create separate scenarios for:
|
|
271
|
+
- **Different tabs** - Tabs are just navigation. The Default Scenario covers the main tab. SKIP others.
|
|
272
|
+
- **Status badge variants** - Only need: Default (success/ready) + Loading + Error. SKIP queued, pending, etc.
|
|
273
|
+
- **Banner variants** - Pick ONE important banner if any. SKIP creating a scenario for each banner type.
|
|
274
|
+
- **Minor variations** - If two flows show essentially the same UI with small differences, combine them or skip one.
|
|
275
|
+
|
|
276
|
+
**Remember**: Including a flow in the Default Scenario COUNTS as covering it. You don't need a dedicated scenario for each flow.
|
|
277
|
+
|
|
278
|
+
## Combining Flows
|
|
279
|
+
|
|
280
|
+
Flows can combine if:
|
|
281
|
+
1. They have DIFFERENT \`exclusiveGroup\` values (or no exclusiveGroup)
|
|
282
|
+
2. Their \`requiredValues\` don't conflict on the same attribute
|
|
283
|
+
|
|
284
|
+
Flows CANNOT combine if:
|
|
285
|
+
1. They have the SAME \`exclusiveGroup\` - they're mutually exclusive
|
|
286
|
+
2. Their \`requiredValues\` conflict (same attribute, different required value)
|
|
287
|
+
|
|
288
|
+
When combining flows, the scenario's mock data must satisfy ALL the requiredValues from ALL covered flows.
|
|
289
|
+
|
|
290
|
+
## Output Format
|
|
291
|
+
|
|
230
292
|
\`\`\`json
|
|
231
293
|
{
|
|
232
|
-
"
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
294
|
+
"dataScenarios": [
|
|
295
|
+
{
|
|
296
|
+
"name": "${DEFAULT_SCENARIO_NAME}",
|
|
297
|
+
"testName": "it(\\"displays primary content with all features visible\\")",
|
|
298
|
+
"description": "Main content view: success status, main tab selected, user logged in",
|
|
299
|
+
"coveredFlows": ["status-success", "tab-main", "user-authenticated", "content-loaded"]
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
"name": "Loading State",
|
|
303
|
+
"testName": "it(\\"shows loading spinner while fetching data\\")",
|
|
304
|
+
"description": "Data is being loaded, loading badge visible",
|
|
305
|
+
"coveredFlows": ["status-loading", "tab-main"]
|
|
306
|
+
},
|
|
307
|
+
{
|
|
308
|
+
"name": "Empty State",
|
|
309
|
+
"testName": "it(\\"shows empty message when no items\\")",
|
|
310
|
+
"description": "No items to display, empty state UI shown",
|
|
311
|
+
"coveredFlows": ["status-success", "tab-main", "empty-list"]
|
|
312
|
+
},
|
|
313
|
+
{
|
|
314
|
+
"name": "Settings Modal",
|
|
315
|
+
"testName": "it(\\"displays settings modal overlay\\")",
|
|
316
|
+
"description": "Settings modal is open and visible",
|
|
317
|
+
"coveredFlows": ["modal-settings"]
|
|
318
|
+
}
|
|
319
|
+
]
|
|
236
320
|
}
|
|
237
321
|
\`\`\`
|
|
238
322
|
|
|
239
|
-
|
|
323
|
+
**Note:** This example has ~20 flows but only 4 scenarios because:
|
|
324
|
+
- Exclusive groups (status, tabs) only need ONE representative in Default Scenario
|
|
325
|
+
- We don't create scenarios for every tab - they're just navigation
|
|
326
|
+
- Only important states (loading, empty, modal) get dedicated scenarios
|
|
327
|
+
|
|
328
|
+
## Field Descriptions
|
|
329
|
+
|
|
330
|
+
- **name**: Human-readable scenario name (letters, numbers, spaces only - no special characters)
|
|
331
|
+
- **testName**: Jest-style test description, e.g. \`it("displays error when email invalid")\`
|
|
332
|
+
- **description**: What the user sees or what behavior occurs in this scenario
|
|
333
|
+
- **coveredFlows**: Array of execution flow IDs this scenario covers (from the executionFlows list)
|
|
334
|
+
- **playwrightInstructions**: (optional) User interactions needed to reach this state
|
|
335
|
+
|
|
336
|
+
## playwrightInstructions Format (when needed)
|
|
337
|
+
|
|
240
338
|
\`\`\`json
|
|
241
339
|
{
|
|
242
340
|
"playwrightInstructions": [
|
|
@@ -247,45 +345,27 @@ Use \`dataStructurePath\` as key, include both variable name and instruction:
|
|
|
247
345
|
\`\`\`
|
|
248
346
|
Note: selectorArgs values must be JSON strings, not JavaScript regex literals.
|
|
249
347
|
|
|
250
|
-
Use when: data only appears after user action (button click, form submit), or key attribute isn't in data structure.
|
|
251
|
-
|
|
252
348
|
## Rules
|
|
253
|
-
- Relative dates OK in instructions: "today", "tomorrow", "last month"
|
|
254
|
-
- React elements: use simple elements (\`<div>\`, \`<span>\`) - no custom JSX
|
|
255
|
-
- No external library references - plain JS/TS values only
|
|
256
|
-
- Scenario names: letters, numbers, spaces only (no special characters)
|
|
257
|
-
- testName: Jest style with specific expectations, e.g. \`it("displays error when email invalid")\`
|
|
258
|
-
- All values must be valid JSON (strings, numbers, booleans, arrays, objects) - no JavaScript literals like regex
|
|
259
349
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
"description": "User has no notifications",
|
|
277
|
-
"keyAttributeInstructions": {
|
|
278
|
-
"useNotifications().notifications[]": { "localVariable": "notifications[]", "instruction": "Empty array" }
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
]
|
|
282
|
-
}
|
|
283
|
-
\`\`\`
|
|
350
|
+
1. **HARD LIMIT: 3-6 scenarios only** - If you generate more than 6 scenarios, you're doing it wrong. Aim for the minimum that covers important states.
|
|
351
|
+
2. **${DEFAULT_SCENARIO_NAME}** must be first and named exactly that (case-sensitive)
|
|
352
|
+
3. **Exclusive groups**: Pick ONE flow per group for Default Scenario. DON'T create scenarios for each option.
|
|
353
|
+
4. **Blocking flows** (blocksOtherFlows: true) get dedicated scenarios
|
|
354
|
+
5. **Only 2-3 additional scenarios**: Loading State, Empty State, maybe one Error or Modal
|
|
355
|
+
6. **DO NOT cover every flow** - Many flows are fine being represented only in the Default Scenario
|
|
356
|
+
7. Scenario names: letters, numbers, spaces only (no special characters)
|
|
357
|
+
8. All values must be valid JSON
|
|
358
|
+
|
|
359
|
+
**Example for a component with 27 flows:**
|
|
360
|
+
- Default Scenario (covers 10+ flows including: success status, main tab, content loaded, etc.)
|
|
361
|
+
- Loading State (covers loading flow)
|
|
362
|
+
- Empty State (covers empty flow)
|
|
363
|
+
- Modal Open (if there's an important modal)
|
|
364
|
+
- Error State (if there's a critical error state)
|
|
365
|
+
= 4-5 scenarios total, NOT 27
|
|
284
366
|
`;
|
|
285
367
|
}
|
|
286
368
|
|
|
287
|
-
const SYSTEM_MESSAGE = generateSystemMessage();
|
|
288
|
-
|
|
289
369
|
const ERROR_SYSTEM_MESSAGE = `You are a security/reliability analyst. Identify data inputs that will cause UNCAUGHT ERRORS in this function.
|
|
290
370
|
|
|
291
371
|
## What Qualifies as an Error Scenario
|
|
@@ -320,19 +400,17 @@ Note: In JS/TS, any non-zero value satisfies a boolean check—this won't error.
|
|
|
320
400
|
{
|
|
321
401
|
"errorDataScenarios": [
|
|
322
402
|
{
|
|
323
|
-
"dataMapping": { "notifications array": "arguments - notifications" },
|
|
324
403
|
"name": "Non-utf8 message encoding",
|
|
325
|
-
"
|
|
404
|
+
"testName": "it(\\"throws on non-utf8 characters\\")",
|
|
326
405
|
"description": "encodeURIComponent throws on non-utf8 characters",
|
|
406
|
+
"codeSnippet": "const encoded = encodeURIComponent(message);",
|
|
327
407
|
"fix": "Wrap in try/catch",
|
|
328
408
|
"fixSnippet": "try {\\n encoded = encodeURIComponent(message);\\n} catch (e) {\\n // handle\\n}",
|
|
329
409
|
"likelihood": 7,
|
|
330
410
|
"likelihoodDescription": "International users may input non-utf8 characters",
|
|
331
411
|
"severity": 2,
|
|
332
412
|
"severityDescription": "Function throws uncaught error",
|
|
333
|
-
"
|
|
334
|
-
"notifications[]": "Array with message containing non-utf8 characters"
|
|
335
|
-
}
|
|
413
|
+
"coveredFlows": []
|
|
336
414
|
}
|
|
337
415
|
]
|
|
338
416
|
}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates execution flows using pure static analysis.
|
|
3
|
+
*
|
|
4
|
+
* This module has been refactored to use deterministic flow generation
|
|
5
|
+
* instead of LLM calls. Flows are derived from:
|
|
6
|
+
* 1. conditionalUsages - variables used in if/ternary/&&/switch
|
|
7
|
+
* 2. conditionalEffects - setter calls inside conditionals
|
|
8
|
+
*
|
|
9
|
+
* Only paths that resolve to controllable data sources produce flows,
|
|
10
|
+
* eliminating the problem of invalid paths like useState variables.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import {
|
|
14
|
+
DataStructure,
|
|
15
|
+
Entity,
|
|
16
|
+
ExecutionFlow,
|
|
17
|
+
ConditionalEffect,
|
|
18
|
+
} from '~codeyam/types';
|
|
19
|
+
import { awsLog } from '~codeyam/utils';
|
|
20
|
+
import { gatherAttributesMap } from './promptGenerators/gatherAttributesMap';
|
|
21
|
+
import { fillInDirectSchemaGapsAndUnknowns } from './dataStructure/helpers/fillInSchemaGapsAndUnknowns';
|
|
22
|
+
import { clearAttributesFromMapping } from './dataStructure/helpers/cleanNonObjectFunctions';
|
|
23
|
+
import type { CompoundConditional, ConditionalUsage } from '~codeyam/types';
|
|
24
|
+
import { LlmCall } from '~codeyam/types';
|
|
25
|
+
import generateExecutionFlowsFromConditionalEffects from './generateExecutionFlowsFromConditionalEffects';
|
|
26
|
+
import generateExecutionFlowsFromConditionals, {
|
|
27
|
+
ChildComponentConditionalData,
|
|
28
|
+
} from './generateExecutionFlowsFromConditionals';
|
|
29
|
+
import { AI } from '~codeyam/ai';
|
|
30
|
+
|
|
31
|
+
interface GenerateExecutionFlowsArgs {
|
|
32
|
+
entity: Pick<Entity, 'sha' | 'name' | 'filePath' | 'code' | 'metadata'>;
|
|
33
|
+
mergedDataStructure: Omit<DataStructure, 'equivalentSignatureVariables'>;
|
|
34
|
+
/** @deprecated Model is no longer used - execution flows are generated via static analysis */
|
|
35
|
+
model?: AI.Model;
|
|
36
|
+
/**
|
|
37
|
+
* Optional map of child entity names to their metadata.
|
|
38
|
+
* Used for merging child component execution flows into the parent.
|
|
39
|
+
* The caller should:
|
|
40
|
+
* 1. Look at childBoundaryGatingConditions to see which children need metadata
|
|
41
|
+
* 2. Find those entities (via importedExports or database lookup)
|
|
42
|
+
* 3. Pass their metadata here
|
|
43
|
+
*/
|
|
44
|
+
childEntityMetadata?: Record<string, Entity['metadata']>;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export default function generateExecutionFlows({
|
|
48
|
+
entity,
|
|
49
|
+
mergedDataStructure,
|
|
50
|
+
childEntityMetadata,
|
|
51
|
+
}: GenerateExecutionFlowsArgs) {
|
|
52
|
+
awsLog(`CodeYam: Generating execution flows (static analysis)`, {
|
|
53
|
+
filePath: entity.filePath,
|
|
54
|
+
entityName: entity.name,
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
const isolatedDataStructure = entity.metadata?.isolatedDataStructure;
|
|
58
|
+
const equivalentSignatureVariables =
|
|
59
|
+
isolatedDataStructure?.equivalentSignatureVariables ?? {};
|
|
60
|
+
const { attributesMap, associationMap } = gatherAttributesMap(
|
|
61
|
+
isolatedDataStructure ?? mergedDataStructure,
|
|
62
|
+
mergedDataStructure,
|
|
63
|
+
equivalentSignatureVariables,
|
|
64
|
+
true,
|
|
65
|
+
);
|
|
66
|
+
|
|
67
|
+
// Clean the attributes map to remove primitive-returning array method paths
|
|
68
|
+
clearAttributesFromMapping(attributesMap);
|
|
69
|
+
|
|
70
|
+
if (Object.keys(attributesMap).length === 0) {
|
|
71
|
+
console.log(
|
|
72
|
+
`CodeYam: No valid attributes found for ${entity.filePath} ${entity.name}`,
|
|
73
|
+
);
|
|
74
|
+
return {
|
|
75
|
+
executionFlows: [],
|
|
76
|
+
llmCall: null as LlmCall | null,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// Build merged schema for type inference
|
|
81
|
+
const mergedSchemaForTypeLookup = Object.fromEntries(
|
|
82
|
+
Object.entries(mergedDataStructure.signatureSchema ?? {})
|
|
83
|
+
.filter(([k]) => k.startsWith('signature['))
|
|
84
|
+
.map(([k, v]) => [k.replace(/^signature\[\d+\]\./, ''), v]),
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
// Resolve unknown types using heuristics
|
|
88
|
+
const resolvedAttributesMap = fillInDirectSchemaGapsAndUnknowns({
|
|
89
|
+
scopeName: entity.name,
|
|
90
|
+
schema: { ...attributesMap },
|
|
91
|
+
mergedSchema: mergedSchemaForTypeLookup,
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
// Build fullToShortPathMap from associationMap
|
|
95
|
+
// associationMap maps full paths → short paths (e.g., "useFetcher<...>().functionCallReturnValue.state" → "state")
|
|
96
|
+
// fullToShortPathMap is the same mapping (we just use associationMap directly)
|
|
97
|
+
const fullToShortPathMap: Record<string, string> = {};
|
|
98
|
+
for (const [fullPath, shortPath] of Object.entries(associationMap)) {
|
|
99
|
+
fullToShortPathMap[fullPath] = shortPath;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// Get pre-computed conditional data from metadata
|
|
103
|
+
const conditionalUsages: Record<string, ConditionalUsage[]> =
|
|
104
|
+
entity.metadata?.isolatedDataStructure?.conditionalUsages ?? {};
|
|
105
|
+
const compoundConditionals: CompoundConditional[] =
|
|
106
|
+
entity.metadata?.isolatedDataStructure?.compoundConditionals ?? [];
|
|
107
|
+
const conditionalEffects: ConditionalEffect[] =
|
|
108
|
+
entity.metadata?.isolatedDataStructure?.conditionalEffects ?? [];
|
|
109
|
+
|
|
110
|
+
// Build child component data for merging child flows into parent
|
|
111
|
+
// This requires:
|
|
112
|
+
// 1. childBoundaryGatingConditions - which parent conditions gate each child
|
|
113
|
+
// 2. childEntityMetadata - passed by caller after looking up child entities
|
|
114
|
+
const childBoundaryGatingConditions: Record<string, ConditionalUsage[]> =
|
|
115
|
+
entity.metadata?.isolatedDataStructure?.childBoundaryGatingConditions ?? {};
|
|
116
|
+
|
|
117
|
+
// Build childComponentData using the provided childEntityMetadata
|
|
118
|
+
// The caller is responsible for looking up child entities (via importedExports
|
|
119
|
+
// or database) and passing their metadata here
|
|
120
|
+
const childComponentData: Record<string, ChildComponentConditionalData> = {};
|
|
121
|
+
if (childEntityMetadata) {
|
|
122
|
+
for (const [childName, gatingConditions] of Object.entries(
|
|
123
|
+
childBoundaryGatingConditions,
|
|
124
|
+
)) {
|
|
125
|
+
const childMeta = childEntityMetadata[childName];
|
|
126
|
+
const childIsolated = childMeta?.isolatedDataStructure;
|
|
127
|
+
|
|
128
|
+
if (childIsolated) {
|
|
129
|
+
childComponentData[childName] = {
|
|
130
|
+
conditionalUsages: childIsolated.conditionalUsages ?? {},
|
|
131
|
+
equivalentSignatureVariables:
|
|
132
|
+
childIsolated.equivalentSignatureVariables ?? {},
|
|
133
|
+
compoundConditionals: childIsolated.compoundConditionals ?? [],
|
|
134
|
+
gatingConditions,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
const conditionalsBasedFlows = generateExecutionFlowsFromConditionals({
|
|
141
|
+
conditionalUsages,
|
|
142
|
+
compoundConditionals,
|
|
143
|
+
attributesMap: resolvedAttributesMap,
|
|
144
|
+
equivalentSignatureVariables,
|
|
145
|
+
fullToShortPathMap,
|
|
146
|
+
childComponentData:
|
|
147
|
+
Object.keys(childComponentData).length > 0
|
|
148
|
+
? childComponentData
|
|
149
|
+
: undefined,
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
console.log(
|
|
153
|
+
`CodeYam: Generated ${conditionalsBasedFlows.length} flows from conditional usages`,
|
|
154
|
+
);
|
|
155
|
+
|
|
156
|
+
// Generate flows from conditional effects (setter calls inside conditionals)
|
|
157
|
+
// Pass resolution context so paths can be resolved to controllable data sources
|
|
158
|
+
const effectsBasedFlows = generateExecutionFlowsFromConditionalEffects(
|
|
159
|
+
conditionalEffects,
|
|
160
|
+
{
|
|
161
|
+
attributesMap: resolvedAttributesMap,
|
|
162
|
+
equivalentSignatureVariables,
|
|
163
|
+
fullToShortPathMap,
|
|
164
|
+
conditionalUsages,
|
|
165
|
+
},
|
|
166
|
+
);
|
|
167
|
+
|
|
168
|
+
console.log(
|
|
169
|
+
`CodeYam: Generated ${effectsBasedFlows.length} flows from conditional effects`,
|
|
170
|
+
);
|
|
171
|
+
|
|
172
|
+
// Merge all flows, deduplicating by ID
|
|
173
|
+
// Effects-based flows take precedence as they have precise data source paths
|
|
174
|
+
const allFlows: ExecutionFlow[] = [];
|
|
175
|
+
const seenIds = new Set<string>();
|
|
176
|
+
|
|
177
|
+
// Add effects-based flows first (higher priority)
|
|
178
|
+
for (const flow of effectsBasedFlows) {
|
|
179
|
+
if (!seenIds.has(flow.id)) {
|
|
180
|
+
seenIds.add(flow.id);
|
|
181
|
+
allFlows.push(flow);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
// Add conditionals-based flows
|
|
186
|
+
for (const flow of conditionalsBasedFlows) {
|
|
187
|
+
if (!seenIds.has(flow.id)) {
|
|
188
|
+
seenIds.add(flow.id);
|
|
189
|
+
allFlows.push(flow);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
console.log(
|
|
194
|
+
`CodeYam: Total execution flows for ${entity.name}: ${allFlows.length}`,
|
|
195
|
+
);
|
|
196
|
+
|
|
197
|
+
return {
|
|
198
|
+
executionFlows: allFlows,
|
|
199
|
+
llmCall: null as LlmCall | null, // No LLM calls in static analysis mode
|
|
200
|
+
};
|
|
201
|
+
}
|