@codeyam/codeyam-cli 0.1.0-staging.b8a55ba → 0.1.0-staging.c90f8c9
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/common/execAsync.ts +1 -1
- package/analyzer-template/log.txt +3 -3
- package/analyzer-template/package.json +9 -6
- package/analyzer-template/packages/ai/index.ts +10 -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 +126 -6
- package/analyzer-template/packages/ai/src/lib/astScopes/arrayDerivationDetector.ts +199 -0
- package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +116 -1
- package/analyzer-template/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.ts +644 -0
- package/analyzer-template/packages/ai/src/lib/astScopes/methodSemantics.ts +140 -6
- package/analyzer-template/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.ts +18 -0
- package/analyzer-template/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.ts +15 -0
- package/analyzer-template/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.ts +181 -1
- package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +849 -9
- package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +244 -0
- package/analyzer-template/packages/ai/src/lib/checkAllAttributes.ts +29 -10
- package/analyzer-template/packages/ai/src/lib/completionCall.ts +216 -36
- package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +892 -117
- 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 +296 -35
- package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.ts +120 -76
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +80 -5
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.ts +98 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +8 -1
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.ts +129 -0
- package/analyzer-template/packages/ai/src/lib/dataStructureChunking.ts +156 -0
- package/analyzer-template/packages/ai/src/lib/deepEqual.ts +30 -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/generateChangesEntityScenarioData.ts +74 -7
- package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarios.ts +86 -142
- package/analyzer-template/packages/ai/src/lib/generateEntityDataStructure.ts +1 -0
- package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +1111 -87
- package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +191 -191
- package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +570 -0
- package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.ts +528 -0
- package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionals.ts +1977 -0
- package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.ts +239 -0
- package/analyzer-template/packages/ai/src/lib/guessScenarioDataFromDescription.ts +5 -5
- 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/generateChangesEntityScenarioDataGenerator.ts +1 -1
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.ts +32 -142
- 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 +90 -6
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.ts +14 -89
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.ts +58 -0
- package/analyzer-template/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.ts +11 -11
- package/analyzer-template/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.ts +391 -0
- package/analyzer-template/packages/ai/src/lib/resolvePathToControllable.ts +812 -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 +118 -0
- package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +14 -0
- package/analyzer-template/packages/analyze/src/lib/analysisContext.ts +44 -4
- 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 +381 -265
- 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/analyze/validateDependencyAnalyses.ts +33 -7
- 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 +148 -41
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.ts +102 -0
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +506 -59
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.ts +28 -62
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +157 -74
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +156 -0
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarioData.ts +35 -129
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarios.ts +2 -3
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +420 -87
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.ts +56 -11
- 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/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 +3 -3
- 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/uploadFileToS3.ts +8 -1
- package/analyzer-template/packages/database/src/lib/kysely/tables/debugReportsTable.ts +17 -1
- package/analyzer-template/packages/database/src/lib/loadAnalyses.ts +58 -1
- package/analyzer-template/packages/database/src/lib/loadCommits.ts +16 -0
- package/analyzer-template/packages/database/src/lib/loadEntities.ts +26 -3
- 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/scenarioComponentForServer.ts +114 -0
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts +1 -18
- 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 +17 -1
- 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.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/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/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 +13 -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/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/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 +3 -4
- package/analyzer-template/packages/github/dist/types/index.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/types/index.js +0 -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 +71 -27
- 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 +9 -54
- package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/Scenario.js +1 -21
- package/analyzer-template/packages/github/dist/types/src/types/Scenario.js.map +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts +148 -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/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/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 +3 -6
- package/analyzer-template/packages/types/src/types/Analysis.ts +87 -27
- package/analyzer-template/packages/types/src/types/Entity.ts +2 -0
- package/analyzer-template/packages/types/src/types/Scenario.ts +9 -77
- package/analyzer-template/packages/types/src/types/ScenariosDataStructure.ts +175 -0
- package/analyzer-template/packages/types/src/types/StatementInfo.ts +2 -0
- package/analyzer-template/packages/utils/dist/types/index.d.ts +3 -4
- package/analyzer-template/packages/utils/dist/types/index.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/types/index.js +0 -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 +71 -27
- 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 +9 -54
- package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/types/src/types/Scenario.js +1 -21
- package/analyzer-template/packages/utils/dist/types/src/types/Scenario.js.map +1 -1
- package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts +148 -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/packages/utils/dist/utils/src/lib/safeFileName.d.ts +9 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.js +29 -3
- package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.js.map +1 -1
- package/analyzer-template/packages/utils/src/lib/safeFileName.ts +48 -3
- package/analyzer-template/playwright/capture.ts +37 -18
- package/analyzer-template/playwright/getCodeYamInfo.ts +12 -7
- 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 +1112 -169
- 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 +7 -1
- package/analyzer-template/project/orchestrateCapture.ts +36 -3
- package/analyzer-template/project/reconcileMockDataKeys.ts +220 -78
- package/analyzer-template/project/runAnalysis.ts +11 -0
- package/analyzer-template/project/serverOnlyModules.ts +127 -2
- package/analyzer-template/project/start.ts +16 -4
- package/analyzer-template/project/startScenarioCapture.ts +6 -0
- package/analyzer-template/project/writeMockDataTsx.ts +164 -24
- package/analyzer-template/project/writeScenarioClientWrapper.ts +21 -0
- package/analyzer-template/project/writeScenarioComponents.ts +304 -112
- package/analyzer-template/project/writeScenarioFiles.ts +26 -0
- package/analyzer-template/project/writeSimpleRoot.ts +11 -35
- 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 +987 -130
- 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 +3 -1
- package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js.map +1 -1
- package/background/src/lib/virtualized/project/orchestrateCapture.js +27 -4
- package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
- package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +188 -47
- package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
- package/background/src/lib/virtualized/project/runAnalysis.js +9 -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 +15 -4
- package/background/src/lib/virtualized/project/start.js.map +1 -1
- package/background/src/lib/virtualized/project/startScenarioCapture.js +7 -0
- package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
- package/background/src/lib/virtualized/project/writeMockDataTsx.js +139 -23
- 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 +228 -95
- 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 +11 -34
- 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 +29 -18
- package/codeyam-cli/src/commands/recapture.js.map +1 -1
- package/codeyam-cli/src/commands/report.js +46 -1
- 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 +31 -27
- package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
- package/codeyam-cli/src/utils/analysisRunner.js +28 -14
- 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 +4 -3
- 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 +31 -17
- package/codeyam-cli/src/utils/install-skills.js.map +1 -1
- package/codeyam-cli/src/utils/queue/job.js +105 -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/queue/persistence.js.map +1 -1
- package/codeyam-cli/src/utils/serverState.js.map +1 -1
- package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +7 -5
- package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
- 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 +73 -20
- package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
- package/codeyam-cli/src/webserver/bootstrap.js +40 -0
- package/codeyam-cli/src/webserver/bootstrap.js.map +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/EntityItem-BXhEawa3.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-CzGX-miz.js → EntityTypeBadge-DLqD3qNt.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-Ba2JVPzP.js +41 -0
- package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-C8lyxW9k.js +34 -0
- package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-aht4aafF.js +25 -0
- package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-CBQPrpT0.js → LibraryFunctionPreview-CVtiBnY5.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-D1CdlbrV.js → LoadingDots-B0GLXMsr.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-wDPcZNKx.js → LogViewer-xgeCVgSM.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-D4TZhLuw.js +21 -0
- package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-BfmDgXxG.js → SafeScreenshot-DuDvi0jm.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-DEx02QDa.js +10 -0
- package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-6J7zDUD5.js → TruncatedFilePath-DyFZkK0l.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/_index-BwqWJOgH.js +11 -0
- package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-DoLIqZX2.js +37 -0
- package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-BYimnrHg.js → chevron-down-Cx24_aWc.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/chunk-EPOLDU6W-CXRTFQ3F.js +51 -0
- package/codeyam-cli/src/webserver/build/client/assets/{circle-check-CaVsIRxt.js → circle-check-BOARzkeR.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-CgUsG7ib.js → createLucideIcon-BdhJEx6B.js} +1 -1
- 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-BRb-0kQl.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-zUEpfPsu.js → entity._sha._-C2N4Op8e.js} +12 -12
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DavjRmOY.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-D1T4TGjf.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-CfLCUi9S.js → entity._sha_.edit._scenarioId-CTBG2mmz.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entry.client-DKJyZfAY.js → entry.client-CS2cb_eZ.js} +6 -6
- package/codeyam-cli/src/webserver/build/client/assets/executionFlowCoverage-BWhdfn70.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{fileTableUtils-DAtOlaWE.js → fileTableUtils-DMJ7zii9.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/files-Cs4MdYtv.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{git-D62Lxxmv.js → git-B4RJRvYB.js} +2 -2
- package/codeyam-cli/src/webserver/build/client/assets/git-commit-horizontal-CysbcZxi.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/globals-DMUaGAqV.css +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{index-CzNNiTkw.js → index-B1h680n5.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{index-BosqDOlH.js → index-lzqtyFU8.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-CNp9QFCX.js → loader-circle-B7B9V-bu.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/manifest-f874c610.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/root-Bz5TunQg.js +57 -0
- package/codeyam-cli/src/webserver/build/client/assets/rules-hEkvVw2-.js +97 -0
- package/codeyam-cli/src/webserver/build/client/assets/{search-DDGjYAMJ.js → search-CxXUmBSd.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/settings-CS5f3WzT.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/simulations-DwFIBT09.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-CBc5dE1s.js → triangle-alert-B6LgvRJg.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-C1v1PQzo.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-BqPPNjAl.js → useLastLogLine-aSv48UbS.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/useReportContext-DYxHZQuP.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{useToast-DWHcCcl1.js → useToast-mBRpZPiu.js} +1 -1
- package/codeyam-cli/src/webserver/build/server/assets/index-uNNbimct.js +1 -0
- package/codeyam-cli/src/webserver/build/server/assets/server-build-B08qC4Y7.js +257 -0
- package/codeyam-cli/src/webserver/build/server/index.js +1 -1
- package/codeyam-cli/src/webserver/build-info.json +5 -5
- package/codeyam-cli/src/webserver/server.js +35 -25
- package/codeyam-cli/src/webserver/server.js.map +1 -1
- package/codeyam-cli/templates/codeyam-power-rules-hook.sh +200 -0
- package/codeyam-cli/templates/{codeyam-debug-skill.md → codeyam:debug.md} +48 -4
- package/codeyam-cli/templates/{debug-codeyam.md → codeyam:diagnose.md} +185 -23
- package/codeyam-cli/templates/codeyam:new-rule.md +13 -0
- package/codeyam-cli/templates/codeyam:power-rules.md +449 -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 +6 -5
- package/packages/ai/index.js +5 -4
- package/packages/ai/index.js.map +1 -1
- package/packages/ai/src/lib/analyzeScope.js +97 -0
- 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 +84 -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 +97 -6
- 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 +7 -0
- package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js.map +1 -1
- package/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.js +138 -1
- package/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.js.map +1 -1
- package/packages/ai/src/lib/astScopes/processExpression.js +654 -13
- 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 +178 -31
- package/packages/ai/src/lib/completionCall.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +715 -64
- 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 +230 -23
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js +77 -55
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +67 -3
- package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.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 +6 -1
- package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.js +107 -0
- package/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.js.map +1 -0
- package/packages/ai/src/lib/dataStructureChunking.js +111 -0
- package/packages/ai/src/lib/dataStructureChunking.js.map +1 -0
- package/packages/ai/src/lib/deepEqual.js +32 -0
- package/packages/ai/src/lib/deepEqual.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/generateChangesEntityScenarioData.js +62 -5
- package/packages/ai/src/lib/generateChangesEntityScenarioData.js.map +1 -1
- package/packages/ai/src/lib/generateChangesEntityScenarios.js +78 -120
- package/packages/ai/src/lib/generateChangesEntityScenarios.js.map +1 -1
- package/packages/ai/src/lib/generateEntityDataStructure.js +1 -0
- package/packages/ai/src/lib/generateEntityDataStructure.js.map +1 -1
- package/packages/ai/src/lib/generateEntityScenarioData.js +906 -82
- package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
- package/packages/ai/src/lib/generateEntityScenarios.js +170 -162
- package/packages/ai/src/lib/generateEntityScenarios.js.map +1 -1
- package/packages/ai/src/lib/generateExecutionFlows.js +392 -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 +1440 -0
- package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js.map +1 -0
- package/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.js +194 -0
- package/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.js.map +1 -0
- package/packages/ai/src/lib/guessScenarioDataFromDescription.js +2 -2
- 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/generateChangesEntityScenarioDataGenerator.js +1 -1
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js +21 -100
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.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 +68 -6
- package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js +10 -70
- 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 +9 -9
- package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.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 +667 -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 +29 -0
- package/packages/ai/src/lib/worker/SerializableDataStructure.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/analysisContext.js +30 -5
- package/packages/analyze/src/lib/analysisContext.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 +151 -52
- 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/analyze/validateDependencyAnalyses.js +31 -7
- package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.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 +121 -37
- package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -1
- 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 +410 -55
- package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.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 +126 -57
- 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 +27 -98
- package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateScenarios.js +2 -3
- package/packages/analyze/src/lib/files/scenarios/generateScenarios.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +342 -83
- 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/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/tables/debugReportsTable.js.map +1 -1
- package/packages/database/src/lib/loadAnalyses.js +45 -2
- package/packages/database/src/lib/loadAnalyses.js.map +1 -1
- package/packages/database/src/lib/loadCommits.js +13 -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/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/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 +0 -1
- package/packages/types/index.js.map +1 -1
- package/packages/types/src/types/Scenario.js +1 -21
- package/packages/types/src/types/Scenario.js.map +1 -1
- package/packages/utils/src/lib/safeFileName.js +29 -3
- package/packages/utils/src/lib/safeFileName.js.map +1 -1
- package/scripts/finalize-analyzer.cjs +3 -3
- package/analyzer-template/packages/ai/src/lib/findMatchingAttribute.ts +0 -102
- package/analyzer-template/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.ts +0 -409
- package/analyzer-template/packages/ai/src/lib/generateChangesEntityKeyAttributes.ts +0 -288
- package/analyzer-template/packages/ai/src/lib/generateEntityKeyAttributes.ts +0 -495
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.ts +0 -67
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.ts +0 -120
- 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/scripts/fixtures/formbricks/universal-mocks/apps/web/lib/instance/service.js +0 -7
- package/codeyam-cli/scripts/fixtures/formbricks/universal-mocks/apps/web/lib/instance/service.js.map +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/EntityItem-wXL1Z2Aq.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-CXFKsCOD.js +0 -41
- package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-D-9pXIaY.js +0 -25
- package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-4lcOlid-.js +0 -11
- package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-CUxUNEEC.js +0 -15
- package/codeyam-cli/src/webserver/build/client/assets/_index-DHImXdXq.js +0 -11
- package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-2mG6mjVb.js +0 -32
- package/codeyam-cli/src/webserver/build/client/assets/chunk-JMJ3UQ3L-BambyYE_.js +0 -51
- package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-CKnwPCDr.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/dev.empty-DW_hdGUc.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DyB90fWk.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-D_3ero5o.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/files-ClR0d32A.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/globals-C6vQASxy.css +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/keyAttributeCoverage-CTlFMihX.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/manifest-09d684be.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/root-BxJUvKau.js +0 -56
- package/codeyam-cli/src/webserver/build/client/assets/settings-DgTyB-Wg.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/simulations-CoNWGt0K.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-BMIGFP-m.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/useInteractiveMode-Dk_FQqWJ.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/useReportContext-DsJbgMY9.js +0 -1
- package/codeyam-cli/src/webserver/build/server/assets/index-CV6i1S1A.js +0 -1
- package/codeyam-cli/src/webserver/build/server/assets/server-build-BDlyhfrv.js +0 -175
- 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 -298
- package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js.map +0 -1
- package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js +0 -226
- package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js.map +0 -1
- package/packages/ai/src/lib/generateEntityKeyAttributes.js +0 -408
- 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 -77
- 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/codeyam-cli/src/webserver/build/client/assets/{api.link-scenario-value-l0sNRNKZ.js → api.health-l0sNRNKZ.js} +0 -0
- /package/codeyam-cli/src/webserver/build/client/assets/{api.update-key-attributes-l0sNRNKZ.js → api.restart-server-l0sNRNKZ.js} +0 -0
- /package/codeyam-cli/src/webserver/build/client/assets/{api.update-valid-values-l0sNRNKZ.js → api.rules-l0sNRNKZ.js} +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
package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts
CHANGED
|
@@ -119,6 +119,17 @@ const stringMethodsSet = new Set([
|
|
|
119
119
|
]);
|
|
120
120
|
export const allMethodsSet = new Set([...arrayMethodsSet, ...stringMethodsSet]);
|
|
121
121
|
|
|
122
|
+
// Methods that exist in both stringMethodsSet and arrayMethodsSet.
|
|
123
|
+
// When ONLY these methods are called on an object, we can't determine if it's a string or array.
|
|
124
|
+
// Don't infer 'string' type from these alone - leave as 'unknown' for other type resolution.
|
|
125
|
+
const stringArrayAmbiguousMethodsSet = new Set([
|
|
126
|
+
'includes', // exists in both String.includes() and Array.includes()
|
|
127
|
+
'indexOf', // exists in both String.indexOf() and Array.indexOf()
|
|
128
|
+
'lastIndexOf', // exists in both String.lastIndexOf() and Array.lastIndexOf()
|
|
129
|
+
'concat', // exists in both String.concat() and Array.concat()
|
|
130
|
+
'slice', // exists in both String.slice() and Array.slice()
|
|
131
|
+
]);
|
|
132
|
+
|
|
122
133
|
const signatureKeyWord = 'signature';
|
|
123
134
|
const returnValueKeyWord = 'functionCallReturnValue';
|
|
124
135
|
|
|
@@ -128,12 +139,14 @@ const signatureRegExp = new RegExp(`^${signatureKeyWord}\\[\\d+\\]$`);
|
|
|
128
139
|
|
|
129
140
|
// --- Caching splitOutsideParentheses ---
|
|
130
141
|
// Instead of splitting the same string repeatedly, we cache the result.
|
|
142
|
+
// IMPORTANT: Do NOT strip ::cyDuplicateKey:: markers - they are critical for
|
|
143
|
+
// distinguishing variable reassignments (e.g., fetcher vs fetcher::cyDuplicateKey1::).
|
|
144
|
+
// Stripping them causes schema contamination where fields from one type-parameterized
|
|
145
|
+
// call get incorrectly attributed to another.
|
|
131
146
|
const splitCache = new Map<string, string[]>();
|
|
132
147
|
function cachedSplit(str: string): string[] {
|
|
133
148
|
if (splitCache.has(str)) return splitCache.get(str)!;
|
|
134
|
-
const parts = splitOutsideParentheses(str)
|
|
135
|
-
p.replace(/::cyDuplicateKey\d+::/g, ''),
|
|
136
|
-
);
|
|
149
|
+
const parts = splitOutsideParentheses(str);
|
|
137
150
|
splitCache.set(str, parts);
|
|
138
151
|
return parts;
|
|
139
152
|
}
|
|
@@ -695,7 +708,14 @@ function handleFunctionMapping(
|
|
|
695
708
|
allProperties.every((prop) => stringMethodsSet.has(getMethodName(prop)))
|
|
696
709
|
) {
|
|
697
710
|
if (allProperties.every((prop) => isValidStringMethod(prop))) {
|
|
698
|
-
|
|
711
|
+
// Don't infer string if ALL methods are ambiguous between string and array
|
|
712
|
+
// (like includes, indexOf, concat, slice - these exist on both types)
|
|
713
|
+
const hasOnlyStringArrayAmbiguousMethods = allProperties.every(
|
|
714
|
+
(prop) => stringArrayAmbiguousMethodsSet.has(getMethodName(prop)),
|
|
715
|
+
);
|
|
716
|
+
if (!hasOnlyStringArrayAmbiguousMethods) {
|
|
717
|
+
keyMapping[previousPath] = 'string';
|
|
718
|
+
}
|
|
699
719
|
} else {
|
|
700
720
|
return false;
|
|
701
721
|
}
|
|
@@ -716,19 +736,36 @@ function handleFunctionMapping(
|
|
|
716
736
|
|
|
717
737
|
// Don't add [] element for ambiguous methods without other array evidence
|
|
718
738
|
// Also don't add [] if the path was already identified as a string type
|
|
739
|
+
// Also don't add [] if the method is ambiguous between string and array (like includes)
|
|
719
740
|
const methodName = getMethodName(lastPart);
|
|
720
741
|
const isAmbiguousMethod = ambiguousArrayMethodsSet.has(methodName);
|
|
742
|
+
const isStringArrayAmbiguous =
|
|
743
|
+
stringArrayAmbiguousMethodsSet.has(methodName);
|
|
721
744
|
const isStringType = keyMapping[previousPath] === 'string';
|
|
722
745
|
if (
|
|
723
746
|
!isValidFunctionCall(previousPart) &&
|
|
724
747
|
arrayMethodsSet.has(methodName) &&
|
|
725
748
|
!keyMapping[previousPath + '[]'] &&
|
|
726
749
|
!isAmbiguousMethod &&
|
|
750
|
+
!isStringArrayAmbiguous &&
|
|
727
751
|
!isStringType
|
|
728
752
|
) {
|
|
729
753
|
keyMapping[previousPath + '[]'] = 'unknown';
|
|
730
754
|
}
|
|
731
755
|
|
|
756
|
+
// For primitive-returning methods (like includes, indexOf, some, every),
|
|
757
|
+
// also delete the .functionCallReturnValue children since the return value
|
|
758
|
+
// is just a primitive (boolean/number) and not useful data.
|
|
759
|
+
// For other methods (like filter, map), keep children for transformation.
|
|
760
|
+
const isPrimitiveReturning = primitiveReturningMethodsSet.has(methodName);
|
|
761
|
+
if (isPrimitiveReturning) {
|
|
762
|
+
for (const otherPath of Object.keys(keyMapping)) {
|
|
763
|
+
if (otherPath.startsWith(path + '.')) {
|
|
764
|
+
delete keyMapping[otherPath];
|
|
765
|
+
}
|
|
766
|
+
}
|
|
767
|
+
}
|
|
768
|
+
|
|
732
769
|
delete keyMapping[path];
|
|
733
770
|
return true;
|
|
734
771
|
}
|
|
@@ -954,14 +991,34 @@ function clearAttributes(
|
|
|
954
991
|
}
|
|
955
992
|
}
|
|
956
993
|
|
|
994
|
+
// Track paths that have primitive-returning method calls (like includes, some, every)
|
|
995
|
+
// These need cleanup even if we can't determine the base type
|
|
996
|
+
const pathsWithPrimitiveReturningMethods = new Set<string>();
|
|
997
|
+
|
|
957
998
|
for (const key in functionCallsOnObjects) {
|
|
958
999
|
const functionCalls = functionCallsOnObjects[key];
|
|
1000
|
+
|
|
1001
|
+
// Check if any method calls are primitive-returning
|
|
1002
|
+
const hasPrimitiveReturningMethods = functionCalls.some((f) =>
|
|
1003
|
+
primitiveReturningMethodsSet.has(getMethodName(f)),
|
|
1004
|
+
);
|
|
1005
|
+
if (hasPrimitiveReturningMethods) {
|
|
1006
|
+
pathsWithPrimitiveReturningMethods.add(key);
|
|
1007
|
+
}
|
|
1008
|
+
|
|
959
1009
|
if (
|
|
960
1010
|
functionCalls.every(
|
|
961
1011
|
(f) => stringMethodsSet.has(getMethodName(f)) && isValidStringMethod(f),
|
|
962
1012
|
)
|
|
963
1013
|
) {
|
|
964
|
-
|
|
1014
|
+
// Don't infer string if ALL methods are ambiguous between string and array
|
|
1015
|
+
// (like includes, indexOf, concat, slice - these exist on both types)
|
|
1016
|
+
const hasOnlyStringArrayAmbiguousMethods = functionCalls.every((f) =>
|
|
1017
|
+
stringArrayAmbiguousMethodsSet.has(getMethodName(f)),
|
|
1018
|
+
);
|
|
1019
|
+
if (!hasOnlyStringArrayAmbiguousMethods) {
|
|
1020
|
+
mapping[key] = 'string';
|
|
1021
|
+
}
|
|
965
1022
|
} else if (
|
|
966
1023
|
functionCalls.every(
|
|
967
1024
|
(f) => arrayMethodsSet.has(getMethodName(f)) && isValidArrayMethod(f),
|
|
@@ -983,10 +1040,28 @@ function clearAttributes(
|
|
|
983
1040
|
for (const key in mapping) {
|
|
984
1041
|
const value = mapping[key];
|
|
985
1042
|
if (knownTypes.has(value)) {
|
|
1043
|
+
// Don't add string-typed array element paths (ending with []) to knownBasePaths.
|
|
1044
|
+
// When an array element is typed as 'string' but has child paths (like data[].id),
|
|
1045
|
+
// it's actually an object - the 'string' type is incorrect. The child paths
|
|
1046
|
+
// describe the array element structure and should not be deleted.
|
|
1047
|
+
//
|
|
1048
|
+
// However, array-typed [] paths (like matrix[] where matrix is array of arrays)
|
|
1049
|
+
// should still be in knownBasePaths so their method calls (filter, map, etc.)
|
|
1050
|
+
// get cleaned up properly.
|
|
1051
|
+
if (key.endsWith('[]') && value === 'string') {
|
|
1052
|
+
continue;
|
|
1053
|
+
}
|
|
986
1054
|
knownBasePaths.add(key);
|
|
987
1055
|
}
|
|
988
1056
|
}
|
|
989
1057
|
|
|
1058
|
+
// Also add paths with primitive-returning method calls (like includes, some, every)
|
|
1059
|
+
// to knownBasePaths so their method call paths get cleaned up, even if we couldn't
|
|
1060
|
+
// determine the base type (e.g., when only ambiguous methods like includes are used)
|
|
1061
|
+
for (const path of pathsWithPrimitiveReturningMethods) {
|
|
1062
|
+
knownBasePaths.add(path);
|
|
1063
|
+
}
|
|
1064
|
+
|
|
990
1065
|
for (const key in mapping) {
|
|
991
1066
|
const keyParts = cachedSplit(key);
|
|
992
1067
|
for (const basePath of knownBasePaths) {
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts null values to undefined (removes them) based on schema type constraints.
|
|
3
|
+
*
|
|
4
|
+
* When the LLM generates mock data, it uses `null` to represent "no value" because
|
|
5
|
+
* JSON doesn't support `undefined`. However, TypeScript types like `string | undefined`
|
|
6
|
+
* don't accept `null`.
|
|
7
|
+
*
|
|
8
|
+
* This function traverses data and schema together:
|
|
9
|
+
* - If schema type is "T | undefined" (but NOT "T | null"), convert null → undefined (delete key)
|
|
10
|
+
* - If schema type includes "null" (e.g., "T | null" or "T | null | undefined"), preserve null
|
|
11
|
+
* - If field not in schema, preserve as-is
|
|
12
|
+
*
|
|
13
|
+
* @param data The data object with potential null values
|
|
14
|
+
* @param schema The schema describing expected types
|
|
15
|
+
* @returns The data with null→undefined conversions applied (mutates original)
|
|
16
|
+
*/
|
|
17
|
+
export default function convertNullToUndefinedBySchema<T>(
|
|
18
|
+
data: T,
|
|
19
|
+
schema: unknown,
|
|
20
|
+
): T {
|
|
21
|
+
// Handle null/undefined data
|
|
22
|
+
if (data === null || data === undefined) {
|
|
23
|
+
return data;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Only process objects
|
|
27
|
+
if (typeof data !== 'object') {
|
|
28
|
+
return data;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// Handle arrays
|
|
32
|
+
if (Array.isArray(data)) {
|
|
33
|
+
// For arrays, the schema should be an array with one element describing the item type
|
|
34
|
+
const itemSchema = Array.isArray(schema) ? schema[0] : undefined;
|
|
35
|
+
for (let i = 0; i < data.length; i++) {
|
|
36
|
+
data[i] = convertNullToUndefinedBySchema(data[i], itemSchema);
|
|
37
|
+
}
|
|
38
|
+
return data;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Handle objects
|
|
42
|
+
const dataObj = data as Record<string, unknown>;
|
|
43
|
+
const schemaObj = schema as Record<string, unknown> | undefined;
|
|
44
|
+
|
|
45
|
+
for (const key of Object.keys(dataObj)) {
|
|
46
|
+
const value = dataObj[key];
|
|
47
|
+
const fieldSchema = schemaObj?.[key];
|
|
48
|
+
|
|
49
|
+
if (value === null) {
|
|
50
|
+
// Check if schema allows null
|
|
51
|
+
if (shouldConvertNullToUndefined(fieldSchema)) {
|
|
52
|
+
// Delete the key (converts null to undefined)
|
|
53
|
+
delete dataObj[key];
|
|
54
|
+
}
|
|
55
|
+
// If schema allows null, preserve it
|
|
56
|
+
} else if (typeof value === 'object' && value !== null) {
|
|
57
|
+
// Recursively process nested objects/arrays
|
|
58
|
+
convertNullToUndefinedBySchema(value, fieldSchema);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return data;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Determines if a null value should be converted to undefined based on schema type.
|
|
67
|
+
*
|
|
68
|
+
* @param fieldSchema The schema type string or object for the field
|
|
69
|
+
* @returns true if null should be converted to undefined, false if null should be preserved
|
|
70
|
+
*/
|
|
71
|
+
function shouldConvertNullToUndefined(fieldSchema: unknown): boolean {
|
|
72
|
+
// If no schema for this field, preserve null (be conservative)
|
|
73
|
+
if (fieldSchema === undefined || fieldSchema === null) {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// If schema is a string type definition, check if it allows null
|
|
78
|
+
if (typeof fieldSchema === 'string') {
|
|
79
|
+
// Schema types that include "null" should preserve null values
|
|
80
|
+
// e.g., "string | null", "number | null | undefined", "null"
|
|
81
|
+
const allowsNull = fieldSchema.includes('null');
|
|
82
|
+
const allowsUndefined = fieldSchema.includes('undefined');
|
|
83
|
+
|
|
84
|
+
// If type allows undefined but NOT null, convert null to undefined
|
|
85
|
+
// e.g., "string | undefined" → convert null to undefined
|
|
86
|
+
// e.g., "string | null" → preserve null
|
|
87
|
+
// e.g., "string | null | undefined" → preserve null
|
|
88
|
+
if (allowsUndefined && !allowsNull) {
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// If schema is an object or array, it's a nested structure
|
|
96
|
+
// Don't convert the container itself, just recurse into it
|
|
97
|
+
return false;
|
|
98
|
+
}
|
package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts
CHANGED
|
@@ -307,7 +307,14 @@ export function fillInDirectSchemaGapsAndUnknowns({
|
|
|
307
307
|
cleanOutBoundary(lastSubPathPart).match(/\[\d*\]/) &&
|
|
308
308
|
!lastSubPathPart.match(/signature\[\d+\]/)
|
|
309
309
|
) {
|
|
310
|
-
|
|
310
|
+
// Fix 39: Don't overwrite explicit 'object' types with 'array'
|
|
311
|
+
// This handles spurious [] paths from components like JsonNode that handle
|
|
312
|
+
// both arrays and objects. When metadata is explicitly typed as 'object',
|
|
313
|
+
// paths like metadata[] (from dynamic iteration) should not change it.
|
|
314
|
+
if (
|
|
315
|
+
schema[previousSubPath] !== 'array' &&
|
|
316
|
+
schema[previousSubPath] !== 'object'
|
|
317
|
+
) {
|
|
311
318
|
schema[previousSubPath] = 'array';
|
|
312
319
|
changeMade = true;
|
|
313
320
|
}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { awsLog } from '~codeyam/utils';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Fixes null values for ID fields when the schema indicates they should be non-null numbers.
|
|
5
|
+
*
|
|
6
|
+
* The LLM sometimes generates `null` for ID fields (e.g., `"id": null`) when the schema
|
|
7
|
+
* type is `"number"` or `"number | undefined"` (but NOT `"number | null"`). This causes
|
|
8
|
+
* runtime issues when code checks `if (!data?.id)` expecting a truthy value.
|
|
9
|
+
*
|
|
10
|
+
* This function traverses data and schema together:
|
|
11
|
+
* - If field name looks like an ID field AND value is null AND schema doesn't allow null,
|
|
12
|
+
* replace with a valid default value (1 for numbers, generated UUID for strings)
|
|
13
|
+
*
|
|
14
|
+
* @param data The data object with potential null ID values
|
|
15
|
+
* @param schema The schema describing expected types
|
|
16
|
+
* @param path Current path in the data structure (for logging)
|
|
17
|
+
* @returns The data with null IDs fixed (mutates original)
|
|
18
|
+
*/
|
|
19
|
+
export default function fixNullIdsBySchema<T>(
|
|
20
|
+
data: T,
|
|
21
|
+
schema: unknown,
|
|
22
|
+
path: string = '',
|
|
23
|
+
): T {
|
|
24
|
+
// Handle null/undefined data
|
|
25
|
+
if (data === null || data === undefined) {
|
|
26
|
+
return data;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Only process objects
|
|
30
|
+
if (typeof data !== 'object') {
|
|
31
|
+
return data;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Handle arrays
|
|
35
|
+
if (Array.isArray(data)) {
|
|
36
|
+
// For arrays, the schema should be an array with one element describing the item type
|
|
37
|
+
const itemSchema = Array.isArray(schema) ? schema[0] : undefined;
|
|
38
|
+
for (let i = 0; i < data.length; i++) {
|
|
39
|
+
data[i] = fixNullIdsBySchema(data[i], itemSchema, `${path}[${i}]`);
|
|
40
|
+
}
|
|
41
|
+
return data;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Handle objects
|
|
45
|
+
const dataObj = data as Record<string, unknown>;
|
|
46
|
+
const schemaObj = schema as Record<string, unknown> | undefined;
|
|
47
|
+
|
|
48
|
+
for (const key of Object.keys(dataObj)) {
|
|
49
|
+
const value = dataObj[key];
|
|
50
|
+
const fieldSchema = schemaObj?.[key];
|
|
51
|
+
const fieldPath = path ? `${path}.${key}` : key;
|
|
52
|
+
|
|
53
|
+
if (value === null && isIdField(key)) {
|
|
54
|
+
// Check if schema indicates this should be a non-null number
|
|
55
|
+
const replacement = getIdReplacementValue(fieldSchema);
|
|
56
|
+
if (replacement !== null) {
|
|
57
|
+
dataObj[key] = replacement;
|
|
58
|
+
awsLog(
|
|
59
|
+
`CodeYam: Fixed null ID field "${fieldPath}": null -> ${replacement}`,
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
} else if (typeof value === 'object' && value !== null) {
|
|
63
|
+
// Recursively process nested objects/arrays
|
|
64
|
+
fixNullIdsBySchema(value, fieldSchema, fieldPath);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return data;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Pattern for field names that are likely ID fields.
|
|
73
|
+
* Matches: id, Id, ID, userId, user_id, quoteId, quote_id, etc.
|
|
74
|
+
*/
|
|
75
|
+
const ID_FIELD_PATTERNS = [
|
|
76
|
+
/^id$/i, // Exact match for "id", "Id", "ID"
|
|
77
|
+
/Id$/, // Ends with "Id" (camelCase): userId, quoteId
|
|
78
|
+
/_id$/i, // Ends with "_id" (snake_case): user_id, quote_id
|
|
79
|
+
/^.*_id$/i, // Contains "_id": some_object_id
|
|
80
|
+
];
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Determines if a field name looks like an ID field.
|
|
84
|
+
*/
|
|
85
|
+
function isIdField(fieldName: string): boolean {
|
|
86
|
+
return ID_FIELD_PATTERNS.some((pattern) => pattern.test(fieldName));
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Gets the replacement value for a null ID based on schema type.
|
|
91
|
+
* Returns null if the schema allows null values (no replacement needed).
|
|
92
|
+
*
|
|
93
|
+
* @param fieldSchema The schema type for the field
|
|
94
|
+
* @returns Replacement value (1 for numbers, generated string for strings) or null if no replacement
|
|
95
|
+
*/
|
|
96
|
+
function getIdReplacementValue(fieldSchema: unknown): number | string | null {
|
|
97
|
+
// If no schema for this field, be conservative - don't replace
|
|
98
|
+
if (fieldSchema === undefined || fieldSchema === null) {
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// If schema is a string type definition
|
|
103
|
+
if (typeof fieldSchema === 'string') {
|
|
104
|
+
// If schema explicitly allows null, don't replace
|
|
105
|
+
if (fieldSchema.includes('null')) {
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// If schema is a number type, return 1 as default
|
|
110
|
+
if (
|
|
111
|
+
fieldSchema === 'number' ||
|
|
112
|
+
fieldSchema.startsWith('number') ||
|
|
113
|
+
fieldSchema.includes('number')
|
|
114
|
+
) {
|
|
115
|
+
return 1;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// If schema is a string type, return a generated ID
|
|
119
|
+
if (
|
|
120
|
+
fieldSchema === 'string' ||
|
|
121
|
+
fieldSchema.startsWith('string') ||
|
|
122
|
+
fieldSchema.includes('string')
|
|
123
|
+
) {
|
|
124
|
+
return 'id-1';
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import type { ExecutionFlow, ScenariosDataStructure } from '~codeyam/types';
|
|
2
|
+
|
|
3
|
+
// Type for a single required value from ExecutionFlow
|
|
4
|
+
type RequiredValue = NonNullable<ExecutionFlow['requiredValues']>[number];
|
|
5
|
+
|
|
6
|
+
const DEFAULT_MAX_KEYS_PER_CHUNK = 8;
|
|
7
|
+
|
|
8
|
+
export interface ChunkOptions {
|
|
9
|
+
maxKeysPerChunk?: number;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Chunk a large data structure into smaller pieces for focused LLM processing.
|
|
14
|
+
*
|
|
15
|
+
* Large schemas overwhelm LLMs, causing them to make mistakes on some keys.
|
|
16
|
+
* By processing smaller chunks, each key gets more focused attention.
|
|
17
|
+
*
|
|
18
|
+
* @param dataForMocks - The full data structure schema
|
|
19
|
+
* @param options - Chunking options (maxKeysPerChunk defaults to 8)
|
|
20
|
+
* @returns Array of smaller data structure chunks
|
|
21
|
+
*/
|
|
22
|
+
export function chunkDataStructure(
|
|
23
|
+
dataForMocks: ScenariosDataStructure['dataForMocks'],
|
|
24
|
+
options: ChunkOptions = {},
|
|
25
|
+
): Array<ScenariosDataStructure['dataForMocks']> {
|
|
26
|
+
if (!dataForMocks || typeof dataForMocks !== 'object') {
|
|
27
|
+
return [dataForMocks];
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const { maxKeysPerChunk = DEFAULT_MAX_KEYS_PER_CHUNK } = options;
|
|
31
|
+
const keys = Object.keys(dataForMocks);
|
|
32
|
+
|
|
33
|
+
// Don't chunk if already small enough
|
|
34
|
+
if (keys.length <= maxKeysPerChunk) {
|
|
35
|
+
return [dataForMocks];
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const chunks: Array<ScenariosDataStructure['dataForMocks']> = [];
|
|
39
|
+
|
|
40
|
+
for (let i = 0; i < keys.length; i += maxKeysPerChunk) {
|
|
41
|
+
const chunkKeys = keys.slice(i, i + maxKeysPerChunk);
|
|
42
|
+
const chunk: ScenariosDataStructure['dataForMocks'] = {};
|
|
43
|
+
|
|
44
|
+
for (const key of chunkKeys) {
|
|
45
|
+
(chunk as Record<string, unknown>)[key] = (
|
|
46
|
+
dataForMocks as Record<string, unknown>
|
|
47
|
+
)[key];
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
chunks.push(chunk);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return chunks;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Get the requiredValues that are relevant to a specific chunk.
|
|
58
|
+
*
|
|
59
|
+
* When processing a chunk, we should include any requiredValues from the covered
|
|
60
|
+
* flows that reference keys in that chunk. This helps the LLM understand what
|
|
61
|
+
* values are expected for those keys.
|
|
62
|
+
*
|
|
63
|
+
* @param chunk - A chunk of the data structure
|
|
64
|
+
* @param executionFlows - All execution flows for the entity
|
|
65
|
+
* @param coveredFlowIds - The flow IDs covered by the current scenario
|
|
66
|
+
* @returns Array of requiredValues that reference keys in this chunk
|
|
67
|
+
*/
|
|
68
|
+
export function getRequiredValuesForChunk(
|
|
69
|
+
chunk: ScenariosDataStructure['dataForMocks'],
|
|
70
|
+
executionFlows: ExecutionFlow[],
|
|
71
|
+
coveredFlowIds: string[],
|
|
72
|
+
): RequiredValue[] {
|
|
73
|
+
if (!chunk || typeof chunk !== 'object') {
|
|
74
|
+
return [];
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const chunkKeys = Object.keys(chunk);
|
|
78
|
+
const relevantValues: RequiredValue[] = [];
|
|
79
|
+
|
|
80
|
+
// Get the covered flows
|
|
81
|
+
const coveredFlows = executionFlows.filter((flow) =>
|
|
82
|
+
coveredFlowIds.includes(flow.id),
|
|
83
|
+
);
|
|
84
|
+
|
|
85
|
+
for (const flow of coveredFlows) {
|
|
86
|
+
if (!flow.requiredValues) continue;
|
|
87
|
+
|
|
88
|
+
for (const rv of flow.requiredValues) {
|
|
89
|
+
if (!rv.attributePath) continue;
|
|
90
|
+
|
|
91
|
+
// Check if this requiredValue references a key in this chunk
|
|
92
|
+
for (const chunkKey of chunkKeys) {
|
|
93
|
+
if (pathMatchesKey(rv.attributePath, chunkKey)) {
|
|
94
|
+
relevantValues.push(rv);
|
|
95
|
+
break; // Don't add the same rv multiple times
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
return relevantValues;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Check if an attributePath references a given dataForMocks key.
|
|
106
|
+
* (Same logic as in extractCriticalDataKeys)
|
|
107
|
+
*/
|
|
108
|
+
function pathMatchesKey(attributePath: string, dataKey: string): boolean {
|
|
109
|
+
const normalizedPath = attributePath.replace('.functionCallReturnValue', '');
|
|
110
|
+
|
|
111
|
+
if (normalizedPath.startsWith(dataKey)) {
|
|
112
|
+
const afterKey = normalizedPath.slice(dataKey.length);
|
|
113
|
+
if (
|
|
114
|
+
afterKey === '' ||
|
|
115
|
+
afterKey.startsWith('.') ||
|
|
116
|
+
afterKey.startsWith('[')
|
|
117
|
+
) {
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// Try matching without type parameters
|
|
123
|
+
const keyWithoutTypes = removeTypeParameters(dataKey);
|
|
124
|
+
const pathWithoutTypes = removeTypeParameters(normalizedPath);
|
|
125
|
+
|
|
126
|
+
if (pathWithoutTypes.startsWith(keyWithoutTypes)) {
|
|
127
|
+
const afterKey = pathWithoutTypes.slice(keyWithoutTypes.length);
|
|
128
|
+
if (
|
|
129
|
+
afterKey === '' ||
|
|
130
|
+
afterKey.startsWith('.') ||
|
|
131
|
+
afterKey.startsWith('[')
|
|
132
|
+
) {
|
|
133
|
+
return true;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Remove type parameters from a function call string.
|
|
142
|
+
*/
|
|
143
|
+
function removeTypeParameters(str: string): string {
|
|
144
|
+
let result = str;
|
|
145
|
+
let prevLength = 0;
|
|
146
|
+
|
|
147
|
+
while (result.length !== prevLength) {
|
|
148
|
+
prevLength = result.length;
|
|
149
|
+
result = result.replace(/<[^<>]*>/g, '');
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
return result;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// Re-export extractCriticalDataKeys for backwards compatibility
|
|
156
|
+
export { extractCriticalDataKeys } from './extractCriticalDataKeys';
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export default function deepEqual(obj1: unknown, obj2: unknown): boolean {
|
|
2
|
+
// Handle primitive types and null/undefined
|
|
3
|
+
if (obj1 === obj2) return true;
|
|
4
|
+
if (obj1 == null || obj2 == null) return false;
|
|
5
|
+
if (typeof obj1 !== 'object' || typeof obj2 !== 'object') return false;
|
|
6
|
+
|
|
7
|
+
// Handle Date objects
|
|
8
|
+
if (obj1 instanceof Date && obj2 instanceof Date) {
|
|
9
|
+
return obj1.getTime() === obj2.getTime();
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
// Handle Array objects
|
|
13
|
+
if (Array.isArray(obj1) && Array.isArray(obj2)) {
|
|
14
|
+
if (obj1.length !== obj2.length) return false;
|
|
15
|
+
return obj1.every((item, index) => deepEqual(item, obj2[index]));
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// Handle regular objects
|
|
19
|
+
const keys1 = Object.keys(obj1);
|
|
20
|
+
const keys2 = Object.keys(obj2);
|
|
21
|
+
|
|
22
|
+
if (keys1.length !== keys2.length) return false;
|
|
23
|
+
|
|
24
|
+
return keys1.every((key) => {
|
|
25
|
+
if (!Object.prototype.hasOwnProperty.call(obj2, key)) return false;
|
|
26
|
+
const obj1AsAny = obj1 as any;
|
|
27
|
+
const obj2AsAny = obj2 as any;
|
|
28
|
+
return deepEqual(obj1AsAny[key], obj2AsAny[key]);
|
|
29
|
+
});
|
|
30
|
+
}
|