@codeyam/codeyam-cli 0.1.0-staging.1669d45 → 0.1.0-staging.1a2737b
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/analyzer-template/.build-info.json +8 -8
- package/analyzer-template/log.txt +3 -3
- package/analyzer-template/package.json +19 -19
- package/analyzer-template/packages/ai/index.ts +16 -2
- package/analyzer-template/packages/ai/package.json +2 -2
- package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +110 -52
- package/analyzer-template/packages/ai/src/lib/astScopes/arrayDerivationDetector.ts +199 -0
- package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +98 -9
- package/analyzer-template/packages/ai/src/lib/astScopes/methodSemantics.ts +139 -23
- package/analyzer-template/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.ts +10 -17
- package/analyzer-template/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.ts +6 -126
- package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +656 -28
- package/analyzer-template/packages/ai/src/lib/astScopes/sharedPatterns.ts +28 -0
- package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +94 -7
- package/analyzer-template/packages/ai/src/lib/completionCall.ts +198 -34
- package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +1331 -254
- package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.ts +5 -1
- package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.ts +205 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.ts +10 -2
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.ts +16 -3
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.ts +6 -4
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +54 -3
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +124 -17
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.ts +70 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.ts +140 -14
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.ts +179 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.ts +40 -30
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +393 -97
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.ts +129 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.ts +35 -0
- package/analyzer-template/packages/ai/src/lib/dataStructureChunking.ts +183 -0
- package/analyzer-template/packages/ai/src/lib/e2eDataTracking.ts +334 -0
- package/analyzer-template/packages/ai/src/lib/extractCriticalDataKeys.ts +120 -0
- package/analyzer-template/packages/ai/src/lib/generateEntityDataStructure.ts +58 -3
- package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +936 -7
- package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +35 -6
- package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +515 -6
- package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.ts +1 -1
- package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionals.ts +1540 -75
- package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.ts +239 -0
- package/analyzer-template/packages/ai/src/lib/isolateScopes.ts +51 -3
- package/analyzer-template/packages/ai/src/lib/mergeJsonTypeDefinitions.ts +5 -0
- package/analyzer-template/packages/ai/src/lib/mergeStatements.ts +90 -96
- package/analyzer-template/packages/ai/src/lib/promptGenerators/collapseNullableObjects.ts +118 -0
- package/analyzer-template/packages/ai/src/lib/promptGenerators/gatherAttributesMap.ts +10 -7
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChunkPrompt.ts +82 -0
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateCriticalKeysPrompt.ts +103 -0
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.ts +44 -7
- package/analyzer-template/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.ts +391 -0
- package/analyzer-template/packages/ai/src/lib/resolvePathToControllable.ts +179 -45
- package/analyzer-template/packages/ai/src/lib/worker/SerializableDataStructure.ts +26 -4
- package/analyzer-template/packages/ai/src/lib/worker/analyzeScopeWorker.ts +114 -2
- package/analyzer-template/packages/analyze/index.ts +2 -0
- package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +65 -59
- package/analyzer-template/packages/analyze/src/lib/ProjectAnalyzer.ts +113 -26
- package/analyzer-template/packages/analyze/src/lib/analysisContext.ts +44 -4
- package/analyzer-template/packages/analyze/src/lib/asts/nodes/getNodeType.ts +1 -0
- package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.ts +19 -0
- package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.ts +19 -0
- package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllExports.ts +11 -0
- package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.ts +8 -0
- package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.ts +49 -1
- package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.ts +2 -1
- package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +99 -22
- package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +19 -4
- package/analyzer-template/packages/analyze/src/lib/files/analyze/dependencyResolver.ts +6 -0
- package/analyzer-template/packages/analyze/src/lib/files/analyze/gatherEntityMap.ts +4 -2
- package/analyzer-template/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.ts +33 -10
- package/analyzer-template/packages/analyze/src/lib/files/analyzeRemixRoute.ts +4 -5
- package/analyzer-template/packages/analyze/src/lib/files/getImportedExports.ts +14 -12
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/TransformationTracer.ts +1315 -0
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +193 -76
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +87 -25
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +269 -22
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +118 -10
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +647 -73
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.ts +56 -11
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/propagateArrayItemSchemas.ts +474 -0
- package/analyzer-template/packages/analyze/src/lib/files/setImportedExports.ts +2 -1
- package/analyzer-template/packages/analyze/src/lib/index.ts +1 -0
- package/analyzer-template/packages/analyze/src/lib/utils/getFileByPath.ts +19 -0
- package/analyzer-template/packages/aws/package.json +10 -10
- package/analyzer-template/packages/database/package.json +1 -1
- package/analyzer-template/packages/database/src/lib/analysisBranchToDb.ts +1 -1
- package/analyzer-template/packages/database/src/lib/analysisToDb.ts +1 -1
- package/analyzer-template/packages/database/src/lib/branchToDb.ts +1 -1
- package/analyzer-template/packages/database/src/lib/commitBranchToDb.ts +1 -1
- package/analyzer-template/packages/database/src/lib/commitToDb.ts +1 -1
- package/analyzer-template/packages/database/src/lib/fileToDb.ts +1 -1
- package/analyzer-template/packages/database/src/lib/kysely/db.ts +14 -1
- package/analyzer-template/packages/database/src/lib/kysely/tables/commitsTable.ts +6 -0
- package/analyzer-template/packages/database/src/lib/kysely/tables/debugReportsTable.ts +1 -1
- package/analyzer-template/packages/database/src/lib/kysely/tables/labsRequestsTable.ts +52 -0
- package/analyzer-template/packages/database/src/lib/loadAnalyses.ts +58 -1
- package/analyzer-template/packages/database/src/lib/loadAnalysis.ts +13 -0
- package/analyzer-template/packages/database/src/lib/loadBranch.ts +16 -1
- package/analyzer-template/packages/database/src/lib/loadCommit.ts +11 -0
- package/analyzer-template/packages/database/src/lib/loadCommits.ts +28 -0
- package/analyzer-template/packages/database/src/lib/loadEntities.ts +26 -3
- package/analyzer-template/packages/database/src/lib/loadEntityBranches.ts +12 -0
- package/analyzer-template/packages/database/src/lib/projectToDb.ts +1 -1
- package/analyzer-template/packages/database/src/lib/saveFiles.ts +1 -1
- package/analyzer-template/packages/database/src/lib/scenarioToDb.ts +1 -1
- package/analyzer-template/packages/database/src/lib/updateCommitMetadata.ts +7 -14
- package/analyzer-template/packages/database/src/lib/userScenarioToDb.ts +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +2 -0
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +11 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.d.ts +1 -0
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.js +3 -0
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts +23 -0
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts.map +1 -0
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
- package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.d.ts +2 -0
- package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.js +45 -2
- package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js +8 -0
- package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadBranch.js +11 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadBranch.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.js +7 -0
- package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts +3 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js +22 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts +3 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js +23 -4
- package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.js +9 -0
- package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts +2 -2
- package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js +5 -4
- package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js.map +1 -1
- package/analyzer-template/packages/github/dist/types/index.d.ts +1 -1
- package/analyzer-template/packages/github/dist/types/index.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/types/index.js.map +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts +25 -1
- package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/Commit.d.ts +2 -0
- package/analyzer-template/packages/github/dist/types/src/types/Commit.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts +7 -0
- package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts +56 -6
- package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
- package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.d.ts +9 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.js +29 -3
- package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.js.map +1 -1
- package/analyzer-template/packages/github/package.json +1 -1
- package/analyzer-template/packages/types/index.ts +1 -0
- package/analyzer-template/packages/types/src/types/Analysis.ts +25 -0
- package/analyzer-template/packages/types/src/types/Commit.ts +2 -0
- package/analyzer-template/packages/types/src/types/ProjectMetadata.ts +7 -0
- package/analyzer-template/packages/types/src/types/ScenariosDataStructure.ts +70 -6
- package/analyzer-template/packages/types/src/types/ScopeAnalysis.ts +6 -1
- package/analyzer-template/packages/utils/dist/types/index.d.ts +1 -1
- package/analyzer-template/packages/utils/dist/types/index.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/types/index.js.map +1 -1
- package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts +25 -1
- package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/types/src/types/Commit.d.ts +2 -0
- package/analyzer-template/packages/utils/dist/types/src/types/Commit.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts +7 -0
- package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts +56 -6
- package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
- package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +93 -2
- package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.d.ts +9 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.js +29 -3
- package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.js.map +1 -1
- package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +108 -2
- package/analyzer-template/packages/utils/src/lib/safeFileName.ts +48 -3
- package/analyzer-template/playwright/capture.ts +20 -8
- package/analyzer-template/playwright/captureStatic.ts +1 -1
- package/analyzer-template/project/analyzeBaselineCommit.ts +5 -0
- package/analyzer-template/project/analyzeRegularCommit.ts +5 -0
- package/analyzer-template/project/captureLibraryFunctionDirect.ts +29 -26
- package/analyzer-template/project/constructMockCode.ts +436 -44
- package/analyzer-template/project/createEntitiesAndSortFiles.ts +83 -0
- package/analyzer-template/project/loadReadyToBeCaptured.ts +65 -41
- package/analyzer-template/project/orchestrateCapture/AwsCaptureTaskRunner.ts +12 -4
- package/analyzer-template/project/orchestrateCapture/SequentialCaptureTaskRunner.ts +18 -7
- package/analyzer-template/project/orchestrateCapture/taskRunner.ts +4 -2
- package/analyzer-template/project/orchestrateCapture.ts +75 -7
- package/analyzer-template/project/reconcileMockDataKeys.ts +152 -9
- package/analyzer-template/project/runAnalysis.ts +4 -0
- package/analyzer-template/project/start.ts +35 -11
- package/analyzer-template/project/writeMockDataTsx.ts +295 -10
- package/analyzer-template/project/writeScenarioComponents.ts +237 -32
- package/analyzer-template/project/writeSimpleRoot.ts +21 -11
- package/analyzer-template/scripts/comboWorkerLoop.cjs +98 -50
- package/background/src/lib/local/createLocalAnalyzer.js +1 -1
- package/background/src/lib/local/createLocalAnalyzer.js.map +1 -1
- package/background/src/lib/virtualized/project/analyzeBaselineCommit.js +5 -0
- package/background/src/lib/virtualized/project/analyzeBaselineCommit.js.map +1 -1
- package/background/src/lib/virtualized/project/analyzeRegularCommit.js +5 -0
- package/background/src/lib/virtualized/project/analyzeRegularCommit.js.map +1 -1
- package/background/src/lib/virtualized/project/captureLibraryFunctionDirect.js +3 -3
- package/background/src/lib/virtualized/project/captureLibraryFunctionDirect.js.map +1 -1
- package/background/src/lib/virtualized/project/constructMockCode.js +359 -14
- package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
- package/background/src/lib/virtualized/project/createEntitiesAndSortFiles.js +73 -1
- package/background/src/lib/virtualized/project/createEntitiesAndSortFiles.js.map +1 -1
- package/background/src/lib/virtualized/project/loadReadyToBeCaptured.js +19 -8
- package/background/src/lib/virtualized/project/loadReadyToBeCaptured.js.map +1 -1
- package/background/src/lib/virtualized/project/orchestrateCapture/AwsCaptureTaskRunner.js +2 -2
- package/background/src/lib/virtualized/project/orchestrateCapture/AwsCaptureTaskRunner.js.map +1 -1
- package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js +7 -5
- package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js.map +1 -1
- package/background/src/lib/virtualized/project/orchestrateCapture.js +62 -7
- package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
- package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +126 -9
- package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
- package/background/src/lib/virtualized/project/runAnalysis.js +3 -0
- package/background/src/lib/virtualized/project/runAnalysis.js.map +1 -1
- package/background/src/lib/virtualized/project/start.js +32 -11
- package/background/src/lib/virtualized/project/start.js.map +1 -1
- package/background/src/lib/virtualized/project/writeMockDataTsx.js +251 -6
- package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
- package/background/src/lib/virtualized/project/writeScenarioComponents.js +173 -30
- package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
- package/background/src/lib/virtualized/project/writeSimpleRoot.js +21 -11
- package/background/src/lib/virtualized/project/writeSimpleRoot.js.map +1 -1
- package/codeyam-cli/scripts/apply-setup.js +180 -0
- package/codeyam-cli/scripts/apply-setup.js.map +1 -1
- package/codeyam-cli/src/cli.js +32 -18
- package/codeyam-cli/src/cli.js.map +1 -1
- package/codeyam-cli/src/codeyam-cli.js +18 -2
- package/codeyam-cli/src/codeyam-cli.js.map +1 -1
- package/codeyam-cli/src/commands/analyze.js +4 -2
- package/codeyam-cli/src/commands/analyze.js.map +1 -1
- package/codeyam-cli/src/commands/baseline.js +2 -0
- package/codeyam-cli/src/commands/baseline.js.map +1 -1
- package/codeyam-cli/src/commands/debug.js +9 -5
- package/codeyam-cli/src/commands/debug.js.map +1 -1
- package/codeyam-cli/src/commands/default.js +31 -20
- package/codeyam-cli/src/commands/default.js.map +1 -1
- package/codeyam-cli/src/commands/detect-universal-mocks.js +2 -0
- package/codeyam-cli/src/commands/detect-universal-mocks.js.map +1 -1
- package/codeyam-cli/src/commands/init.js +49 -257
- package/codeyam-cli/src/commands/init.js.map +1 -1
- package/codeyam-cli/src/commands/memory.js +307 -0
- package/codeyam-cli/src/commands/memory.js.map +1 -0
- package/codeyam-cli/src/commands/recapture.js +2 -0
- package/codeyam-cli/src/commands/recapture.js.map +1 -1
- package/codeyam-cli/src/commands/setup-sandbox.js +2 -0
- package/codeyam-cli/src/commands/setup-sandbox.js.map +1 -1
- package/codeyam-cli/src/commands/setup-simulations.js +284 -0
- package/codeyam-cli/src/commands/setup-simulations.js.map +1 -0
- package/codeyam-cli/src/commands/test-startup.js +2 -0
- package/codeyam-cli/src/commands/test-startup.js.map +1 -1
- package/codeyam-cli/src/commands/verify.js +14 -2
- package/codeyam-cli/src/commands/verify.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js +179 -0
- package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js.map +1 -0
- package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +128 -82
- package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
- package/codeyam-cli/src/utils/analysisRunner.js +21 -2
- package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
- package/codeyam-cli/src/utils/analyzer.js +7 -0
- package/codeyam-cli/src/utils/analyzer.js.map +1 -1
- package/codeyam-cli/src/utils/backgroundServer.js +90 -19
- package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
- package/codeyam-cli/src/utils/generateReport.js +2 -2
- package/codeyam-cli/src/utils/install-skills.js +77 -38
- package/codeyam-cli/src/utils/install-skills.js.map +1 -1
- package/codeyam-cli/src/utils/labsAutoCheck.js +19 -0
- package/codeyam-cli/src/utils/labsAutoCheck.js.map +1 -0
- package/codeyam-cli/src/utils/npmVersionCheck.js +76 -0
- package/codeyam-cli/src/utils/npmVersionCheck.js.map +1 -0
- package/codeyam-cli/src/utils/progress.js +7 -0
- package/codeyam-cli/src/utils/progress.js.map +1 -1
- package/codeyam-cli/src/utils/queue/job.js +5 -0
- package/codeyam-cli/src/utils/queue/job.js.map +1 -1
- package/codeyam-cli/src/utils/queue/manager.js +6 -0
- package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
- package/codeyam-cli/src/utils/requireSimulations.js +10 -0
- package/codeyam-cli/src/utils/requireSimulations.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js +82 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js +230 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js +67 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js +105 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js +34 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js +162 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js +74 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js +376 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js +116 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js +127 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js +50 -0
- package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js +116 -0
- package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/index.js +5 -0
- package/codeyam-cli/src/utils/ruleReflection/index.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js +44 -0
- package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js +85 -0
- package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/types.js +5 -0
- package/codeyam-cli/src/utils/ruleReflection/types.js.map +1 -0
- package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js +293 -0
- package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js.map +1 -0
- package/codeyam-cli/src/utils/rules/index.js +6 -0
- package/codeyam-cli/src/utils/rules/index.js.map +1 -0
- package/codeyam-cli/src/utils/rules/parser.js +83 -0
- package/codeyam-cli/src/utils/rules/parser.js.map +1 -0
- package/codeyam-cli/src/utils/rules/pathMatcher.js +18 -0
- package/codeyam-cli/src/utils/rules/pathMatcher.js.map +1 -0
- package/codeyam-cli/src/utils/rules/ruleState.js +150 -0
- package/codeyam-cli/src/utils/rules/ruleState.js.map +1 -0
- package/codeyam-cli/src/utils/rules/staleness.js +137 -0
- package/codeyam-cli/src/utils/rules/staleness.js.map +1 -0
- package/codeyam-cli/src/utils/serverState.js +37 -10
- package/codeyam-cli/src/utils/serverState.js.map +1 -1
- package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +21 -42
- package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
- package/codeyam-cli/src/utils/simulationGateMiddleware.js +138 -0
- package/codeyam-cli/src/utils/simulationGateMiddleware.js.map +1 -0
- package/codeyam-cli/src/utils/syncMocksMiddleware.js +5 -24
- package/codeyam-cli/src/utils/syncMocksMiddleware.js.map +1 -1
- package/codeyam-cli/src/utils/versionInfo.js +25 -0
- package/codeyam-cli/src/utils/versionInfo.js.map +1 -1
- package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js +66 -0
- package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js.map +1 -0
- package/codeyam-cli/src/webserver/app/lib/database.js +22 -6
- package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
- package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
- package/codeyam-cli/src/webserver/backgroundServer.js +50 -0
- package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
- package/codeyam-cli/src/webserver/bootstrap.js +51 -0
- package/codeyam-cli/src/webserver/bootstrap.js.map +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/CopyButton-jNYXRRNI.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/EntityItem-bwuHPyTa.js +11 -0
- package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-COi5OvsN.js → EntityTypeBadge-CvzqMxcu.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-BwdQv49w.js → EntityTypeIcon-BH0XDim7.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{InlineSpinner-CEleMv_j.js → InlineSpinner-EhOseatT.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-D68KarMg.js → InteractivePreview-yjIHlOGa.js} +2 -2
- package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-L75Wvqgw.js → LibraryFunctionPreview-Cq5o8jL4.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-C53WM8qn.js → LoadingDots-BvMu2i-g.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-CrNkmy4i.js → LogViewer-kgBTLoJD.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-BzPgx-xO.js +11 -0
- package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-CQifa1n-.js → SafeScreenshot-CwZrv-Ok.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-CyaBFX7l.js → ScenarioViewer-BX2Ny2Qj.js} +3 -13
- package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-D36O1rzU.js → TruncatedFilePath-CDpEprKa.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/_index-BRx8ZGZo.js +11 -0
- package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-4S4yPfFw.js +27 -0
- package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-DHKuQSmR.js +17 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.agent-transcripts-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.health-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.labs-unlock-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.memory-profile-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.restart-server-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.save-fixture-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/book-open-D4IPYH_y.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-DgTPh8H-.js → chevron-down-CG65viiV.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{chunk-EPOLDU6W-DdQKK6on.js → chunk-JZWAC4HX-DB3aFuEO.js} +12 -12
- package/codeyam-cli/src/webserver/build/client/assets/{circle-check-Dmr2bb1R.js → circle-check-igfMr5DY.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/copy-Coc4o_8c.js +11 -0
- package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-Do4ZLUYa.js → createLucideIcon-D1zB-pYc.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/dev.empty-JTAjQ54M.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-CbdFyxZh.js → entity._sha._-B0h9AqE6.js} +12 -12
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha.scenarios._scenarioId.fullscreen-B4iCfs5M.js → entity._sha.scenarios._scenarioId.fullscreen-DjLxr2JB.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.create-scenario-wDWZZO1W.js → entity._sha_.create-scenario-CtYowLOt.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-BMbl7MeQ.js → entity._sha_.edit._scenarioId-PePWg17F.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entry.client-5wRKRIH9.js → entry.client-I-Wo99C_.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{fileTableUtils-DD3SDH7t.js → fileTableUtils-9sMMAiWJ.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/files-Co65J0s3.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{git-zXjT7J0G.js → git-BdHOxVfg.js} +8 -8
- package/codeyam-cli/src/webserver/build/client/assets/globals-BSZfYCkU.css +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{index-DLbXwndH.js → index-CUM5iXwc.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{index-gPZ-lad1.js → index-_417gcQW.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/labs-BK0C1H1T.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-BsPXJ81F.js → loader-circle-TzRHMVog.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/manifest-040dab1c.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/memory-UIDVz141.js +92 -0
- package/codeyam-cli/src/webserver/build/client/assets/pause-hjzB7t2z.js +11 -0
- package/codeyam-cli/src/webserver/build/client/assets/root-D1WadSdf.js +62 -0
- package/codeyam-cli/src/webserver/build/client/assets/{search-P2FKIUql.js → search-DcAwD_Ln.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/settings-CclxrcPK.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{simulations-L18M6-kN.js → simulations-DVNJVQgD.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/terminal-DbEAHMbA.js +11 -0
- package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-BDz7kbVA.js → triangle-alert-CAD5b1o_.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{useCustomSizes-29dDmbH8.js → useCustomSizes-BqgrAzs3.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-BUm0UVJm.js → useLastLogLine-DAFqfEDH.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{useReportContext-CkIOKTrZ.js → useReportContext-DZlYx2c4.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{useToast-KKw5kTn-.js → useToast-ihdMtlf6.js} +1 -1
- package/codeyam-cli/src/webserver/build/server/assets/index-B3dE0r28.js +1 -0
- package/codeyam-cli/src/webserver/build/server/assets/server-build-DYbfdxa3.js +273 -0
- package/codeyam-cli/src/webserver/build/server/index.js +1 -1
- package/codeyam-cli/src/webserver/build-info.json +5 -5
- package/codeyam-cli/templates/{codeyam:debug.md → codeyam-debug.md} +48 -4
- package/codeyam-cli/templates/codeyam-diagnose.md +481 -0
- package/codeyam-cli/templates/codeyam-memory-hook.sh +199 -0
- package/codeyam-cli/templates/codeyam-memory.md +396 -0
- package/codeyam-cli/templates/codeyam-new-rule.md +13 -0
- package/codeyam-cli/templates/{codeyam:setup.md → codeyam-setup.md} +13 -1
- package/codeyam-cli/templates/{codeyam:sim.md → codeyam-sim.md} +1 -1
- package/codeyam-cli/templates/{codeyam:test.md → codeyam-test.md} +1 -1
- package/codeyam-cli/templates/{codeyam:verify.md → codeyam-verify.md} +1 -1
- package/codeyam-cli/templates/rule-notification-hook.py +56 -0
- package/codeyam-cli/templates/rule-reflection-hook.py +627 -0
- package/codeyam-cli/templates/rules-instructions.md +132 -0
- package/package.json +18 -15
- package/packages/ai/index.js +7 -3
- package/packages/ai/index.js.map +1 -1
- package/packages/ai/src/lib/analyzeScope.js +91 -30
- package/packages/ai/src/lib/analyzeScope.js.map +1 -1
- package/packages/ai/src/lib/astScopes/arrayDerivationDetector.js +150 -0
- package/packages/ai/src/lib/astScopes/arrayDerivationDetector.js.map +1 -0
- package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +78 -8
- package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
- package/packages/ai/src/lib/astScopes/methodSemantics.js +109 -23
- package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
- package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js +10 -14
- package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js.map +1 -1
- package/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.js +1 -102
- package/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.js.map +1 -1
- package/packages/ai/src/lib/astScopes/processExpression.js +518 -28
- package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
- package/packages/ai/src/lib/astScopes/sharedPatterns.js +25 -0
- package/packages/ai/src/lib/astScopes/sharedPatterns.js.map +1 -1
- package/packages/ai/src/lib/completionCall.js +161 -30
- package/packages/ai/src/lib/completionCall.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +1061 -174
- package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js +5 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js +179 -0
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js +7 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js +13 -3
- package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js +6 -4
- package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +52 -3
- package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +106 -13
- package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js +63 -0
- package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js.map +1 -0
- package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js +122 -12
- package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js +173 -0
- package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js.map +1 -0
- package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js +37 -20
- package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +333 -86
- package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.js +107 -0
- package/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.js.map +1 -0
- package/packages/ai/src/lib/dataStructureChunking.js +130 -0
- package/packages/ai/src/lib/dataStructureChunking.js.map +1 -0
- package/packages/ai/src/lib/e2eDataTracking.js +241 -0
- package/packages/ai/src/lib/e2eDataTracking.js.map +1 -0
- package/packages/ai/src/lib/extractCriticalDataKeys.js +96 -0
- package/packages/ai/src/lib/extractCriticalDataKeys.js.map +1 -0
- package/packages/ai/src/lib/generateEntityDataStructure.js +46 -2
- package/packages/ai/src/lib/generateEntityDataStructure.js.map +1 -1
- package/packages/ai/src/lib/generateEntityScenarioData.js +734 -8
- package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
- package/packages/ai/src/lib/generateEntityScenarios.js +26 -2
- package/packages/ai/src/lib/generateEntityScenarios.js.map +1 -1
- package/packages/ai/src/lib/generateExecutionFlows.js +376 -4
- package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -1
- package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js +1124 -59
- package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js.map +1 -1
- package/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.js +194 -0
- package/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.js.map +1 -0
- package/packages/ai/src/lib/isolateScopes.js +39 -3
- package/packages/ai/src/lib/isolateScopes.js.map +1 -1
- package/packages/ai/src/lib/mergeJsonTypeDefinitions.js +5 -0
- package/packages/ai/src/lib/mergeJsonTypeDefinitions.js.map +1 -1
- package/packages/ai/src/lib/mergeStatements.js +70 -51
- package/packages/ai/src/lib/mergeStatements.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js +97 -0
- package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js.map +1 -0
- package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js +10 -4
- package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateChunkPrompt.js +54 -0
- package/packages/ai/src/lib/promptGenerators/generateChunkPrompt.js.map +1 -0
- package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js +30 -7
- package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.js +335 -0
- package/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.js.map +1 -0
- package/packages/ai/src/lib/resolvePathToControllable.js +155 -41
- package/packages/ai/src/lib/resolvePathToControllable.js.map +1 -1
- package/packages/ai/src/lib/worker/SerializableDataStructure.js +7 -0
- package/packages/ai/src/lib/worker/SerializableDataStructure.js.map +1 -1
- package/packages/ai/src/lib/worker/analyzeScopeWorker.js +94 -1
- package/packages/ai/src/lib/worker/analyzeScopeWorker.js.map +1 -1
- package/packages/analyze/index.js +1 -0
- package/packages/analyze/index.js.map +1 -1
- package/packages/analyze/src/lib/FileAnalyzer.js +60 -36
- package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
- package/packages/analyze/src/lib/ProjectAnalyzer.js +96 -26
- package/packages/analyze/src/lib/ProjectAnalyzer.js.map +1 -1
- package/packages/analyze/src/lib/analysisContext.js +30 -5
- package/packages/analyze/src/lib/analysisContext.js.map +1 -1
- package/packages/analyze/src/lib/asts/nodes/getNodeType.js +1 -0
- package/packages/analyze/src/lib/asts/nodes/getNodeType.js.map +1 -1
- package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js +14 -0
- package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js.map +1 -1
- package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js +14 -0
- package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js.map +1 -1
- package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js +6 -0
- package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js.map +1 -1
- package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js +6 -0
- package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js.map +1 -1
- package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js +39 -1
- package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js.map +1 -1
- package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js +2 -1
- package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +72 -10
- package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +17 -4
- package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/dependencyResolver.js +5 -0
- package/packages/analyze/src/lib/files/analyze/dependencyResolver.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js +2 -1
- package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js +31 -10
- package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js.map +1 -1
- package/packages/analyze/src/lib/files/analyzeRemixRoute.js +3 -2
- package/packages/analyze/src/lib/files/analyzeRemixRoute.js.map +1 -1
- package/packages/analyze/src/lib/files/getImportedExports.js +11 -7
- package/packages/analyze/src/lib/files/getImportedExports.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js +880 -0
- package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js.map +1 -0
- package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js +164 -68
- package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +75 -21
- package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +185 -20
- package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js +57 -9
- package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +542 -53
- package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.js +46 -9
- package/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.js.map +1 -1
- package/packages/analyze/src/lib/files/setImportedExports.js +2 -1
- package/packages/analyze/src/lib/files/setImportedExports.js.map +1 -1
- package/packages/analyze/src/lib/index.js +1 -0
- package/packages/analyze/src/lib/index.js.map +1 -1
- package/packages/analyze/src/lib/utils/getFileByPath.js +12 -0
- package/packages/analyze/src/lib/utils/getFileByPath.js.map +1 -0
- package/packages/database/src/lib/analysisBranchToDb.js +1 -1
- package/packages/database/src/lib/analysisBranchToDb.js.map +1 -1
- package/packages/database/src/lib/analysisToDb.js +1 -1
- package/packages/database/src/lib/analysisToDb.js.map +1 -1
- package/packages/database/src/lib/branchToDb.js +1 -1
- package/packages/database/src/lib/branchToDb.js.map +1 -1
- package/packages/database/src/lib/commitBranchToDb.js +1 -1
- package/packages/database/src/lib/commitBranchToDb.js.map +1 -1
- package/packages/database/src/lib/commitToDb.js +1 -1
- package/packages/database/src/lib/commitToDb.js.map +1 -1
- package/packages/database/src/lib/fileToDb.js +1 -1
- package/packages/database/src/lib/fileToDb.js.map +1 -1
- package/packages/database/src/lib/kysely/db.js +11 -1
- package/packages/database/src/lib/kysely/db.js.map +1 -1
- package/packages/database/src/lib/kysely/tables/commitsTable.js +3 -0
- package/packages/database/src/lib/kysely/tables/commitsTable.js.map +1 -1
- package/packages/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
- package/packages/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
- package/packages/database/src/lib/loadAnalyses.js +45 -2
- package/packages/database/src/lib/loadAnalyses.js.map +1 -1
- package/packages/database/src/lib/loadAnalysis.js +8 -0
- package/packages/database/src/lib/loadAnalysis.js.map +1 -1
- package/packages/database/src/lib/loadBranch.js +11 -1
- package/packages/database/src/lib/loadBranch.js.map +1 -1
- package/packages/database/src/lib/loadCommit.js +7 -0
- package/packages/database/src/lib/loadCommit.js.map +1 -1
- package/packages/database/src/lib/loadCommits.js +22 -1
- package/packages/database/src/lib/loadCommits.js.map +1 -1
- package/packages/database/src/lib/loadEntities.js +23 -4
- package/packages/database/src/lib/loadEntities.js.map +1 -1
- package/packages/database/src/lib/loadEntityBranches.js +9 -0
- package/packages/database/src/lib/loadEntityBranches.js.map +1 -1
- package/packages/database/src/lib/projectToDb.js +1 -1
- package/packages/database/src/lib/projectToDb.js.map +1 -1
- package/packages/database/src/lib/saveFiles.js +1 -1
- package/packages/database/src/lib/saveFiles.js.map +1 -1
- package/packages/database/src/lib/scenarioToDb.js +1 -1
- package/packages/database/src/lib/scenarioToDb.js.map +1 -1
- package/packages/database/src/lib/updateCommitMetadata.js +5 -4
- package/packages/database/src/lib/updateCommitMetadata.js.map +1 -1
- package/packages/types/index.js.map +1 -1
- package/packages/utils/src/lib/fs/rsyncCopy.js +93 -2
- package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
- package/packages/utils/src/lib/safeFileName.js +29 -3
- package/packages/utils/src/lib/safeFileName.js.map +1 -1
- package/scripts/finalize-analyzer.cjs +8 -76
- package/codeyam-cli/src/webserver/build/client/assets/EntityItem-vauWK972.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-DzJRkCkr.js +0 -11
- package/codeyam-cli/src/webserver/build/client/assets/_index-Be83mo_j.js +0 -11
- package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-BN6wu6Y-.js +0 -37
- package/codeyam-cli/src/webserver/build/client/assets/dev.empty-Bn6aCAy_.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/files-DKyMFI90.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/globals-DTTQ3gY7.css +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/manifest-22590fcf.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/root-BsAarjAM.js +0 -57
- package/codeyam-cli/src/webserver/build/client/assets/settings-B2eDuBj8.js +0 -1
- package/codeyam-cli/src/webserver/build/server/assets/index-BND5I5fv.js +0 -1
- package/codeyam-cli/src/webserver/build/server/assets/server-build-CFXnd7MG.js +0 -228
- package/codeyam-cli/templates/codeyam:diagnose.md +0 -625
package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.ts
CHANGED
|
@@ -2,6 +2,49 @@ import { splitOutsideParenthesesAndArrays } from '~codeyam/ai';
|
|
|
2
2
|
import { JsonTypeDefinition, ReadonlyAnalysisMap } from '~codeyam/types';
|
|
3
3
|
import { awsLog } from '~codeyam/utils';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Deep merge for JsonTypeDefinition schemas.
|
|
7
|
+
* Only recursively merges when BOTH sides are plain objects (not arrays, not primitives).
|
|
8
|
+
* This is different from the general deepMerge which is designed for data values -
|
|
9
|
+
* here we're merging type schemas where leaf values are strings like "boolean" or "function".
|
|
10
|
+
*
|
|
11
|
+
* When types are incompatible (e.g., array vs object), prefer keeping the base value
|
|
12
|
+
* since it was set first from the root entity's validatedVariables.
|
|
13
|
+
*/
|
|
14
|
+
function deepMergeSchemas(
|
|
15
|
+
base: JsonTypeDefinition,
|
|
16
|
+
override: JsonTypeDefinition,
|
|
17
|
+
): JsonTypeDefinition {
|
|
18
|
+
// If override is null/undefined, return base
|
|
19
|
+
if (override === null || override === undefined) return base;
|
|
20
|
+
// If base is null/undefined, return override
|
|
21
|
+
if (base === null || base === undefined) return override;
|
|
22
|
+
|
|
23
|
+
// Only recursively merge if BOTH are plain objects (not arrays, not primitives)
|
|
24
|
+
const baseIsPlainObject =
|
|
25
|
+
typeof base === 'object' && !Array.isArray(base) && base !== null;
|
|
26
|
+
const overrideIsPlainObject =
|
|
27
|
+
typeof override === 'object' &&
|
|
28
|
+
!Array.isArray(override) &&
|
|
29
|
+
override !== null;
|
|
30
|
+
|
|
31
|
+
if (baseIsPlainObject && overrideIsPlainObject) {
|
|
32
|
+
const result: JsonTypeDefinition = { ...base };
|
|
33
|
+
for (const key in override) {
|
|
34
|
+
result[key] = deepMergeSchemas(
|
|
35
|
+
base[key] as JsonTypeDefinition,
|
|
36
|
+
override[key] as JsonTypeDefinition,
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// For incompatible types (array vs object, string vs object, etc.), keep base
|
|
43
|
+
// This ensures the root entity's structure is preserved when a dependency
|
|
44
|
+
// has a different view of the same mock
|
|
45
|
+
return base;
|
|
46
|
+
}
|
|
47
|
+
|
|
5
48
|
export function mergeInStructure(
|
|
6
49
|
name: string | number,
|
|
7
50
|
key: string | number,
|
|
@@ -155,10 +198,10 @@ export default function mergeValidatedDataStructures({
|
|
|
155
198
|
}
|
|
156
199
|
activeValidatedParts = validatedVariables[usedName] as JsonTypeDefinition;
|
|
157
200
|
}
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
201
|
+
// Use deep merge instead of shallow spread to preserve previously merged
|
|
202
|
+
// dependency data. This fixes Issue #15 where multiple dependencies with
|
|
203
|
+
// the same top-level key (e.g., trpc) would overwrite each other.
|
|
204
|
+
dataForMocks = deepMergeSchemas(dataForMocks, validatedData);
|
|
162
205
|
};
|
|
163
206
|
|
|
164
207
|
for (const dependency of relevantDependencies) {
|
|
@@ -181,13 +224,15 @@ export default function mergeValidatedDataStructures({
|
|
|
181
224
|
for (const mockName in dependencyDataForMocks) {
|
|
182
225
|
addMockDataForEntity(mockName);
|
|
183
226
|
|
|
184
|
-
//
|
|
185
|
-
//
|
|
186
|
-
//
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
227
|
+
// Always deep merge the dependency's value to preserve nested structures.
|
|
228
|
+
// This handles cases like usePathname() which returns a simple "string" type,
|
|
229
|
+
// AND cases like trpc where both root and dependency have nested data that
|
|
230
|
+
// needs to be combined (e.g., trpc.quote from root + trpc.fastener.getAttributeValues
|
|
231
|
+
// from dependency).
|
|
232
|
+
if (dependencyDataForMocks[mockName] !== undefined) {
|
|
233
|
+
dataForMocks = deepMergeSchemas(dataForMocks, {
|
|
234
|
+
[mockName]: dependencyDataForMocks[mockName],
|
|
235
|
+
} as JsonTypeDefinition);
|
|
191
236
|
}
|
|
192
237
|
}
|
|
193
238
|
}
|
package/analyzer-template/packages/analyze/src/lib/files/scenarios/propagateArrayItemSchemas.ts
ADDED
|
@@ -0,0 +1,474 @@
|
|
|
1
|
+
import { splitOutsideParenthesesAndArrays } from '~codeyam/ai';
|
|
2
|
+
import { DataStructure } from '~codeyam/types';
|
|
3
|
+
|
|
4
|
+
// Safety limits to prevent combinatorial explosion
|
|
5
|
+
const MAX_SCHEMA_PATHS = 15000; // Don't propagate if schema already has this many paths
|
|
6
|
+
const MAX_PATHS_TO_ADD = 5000; // Stop adding paths after this many new paths
|
|
7
|
+
const MAX_ARRAY_NESTING_DEPTH = 3; // Don't propagate paths with more than this many [] levels
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Count the number of array levels in a path.
|
|
11
|
+
* e.g., "entities[].analyses[].scenarios[]" has 3 levels
|
|
12
|
+
*/
|
|
13
|
+
function countArrayLevels(path: string): number {
|
|
14
|
+
return (path.match(/\[\]/g) || []).length;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Check if appending suffix to prefix would create a recursive path.
|
|
19
|
+
* A path is recursive if it contains the same array name twice.
|
|
20
|
+
* e.g., "entities[].analyses[].scenarios[].analyses[]" has "analyses" twice.
|
|
21
|
+
*/
|
|
22
|
+
function wouldCreateRecursivePath(prefix: string, suffix: string): boolean {
|
|
23
|
+
// Extract array names from prefix (names that appear before [])
|
|
24
|
+
const prefixArrayNames = new Set<string>();
|
|
25
|
+
const prefixMatches = prefix.matchAll(/\.?([a-zA-Z_][a-zA-Z0-9_]*)\[\]/g);
|
|
26
|
+
for (const match of prefixMatches) {
|
|
27
|
+
prefixArrayNames.add(match[1].toLowerCase());
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Check if any array name in suffix already exists in prefix
|
|
31
|
+
const suffixMatches = suffix.matchAll(/\.?([a-zA-Z_][a-zA-Z0-9_]*)\[\]/g);
|
|
32
|
+
for (const match of suffixMatches) {
|
|
33
|
+
if (prefixArrayNames.has(match[1].toLowerCase())) {
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Propagates array item schemas between arrays that likely have the same type.
|
|
43
|
+
*
|
|
44
|
+
* When the Rust analyzer traces property accesses, it may trace item properties for
|
|
45
|
+
* one array but not another, even though they have the same TypeScript type. This
|
|
46
|
+
* happens when:
|
|
47
|
+
* - One array is accessed directly in code (e.g., `entities.forEach(e => e.name)`)
|
|
48
|
+
* - Another array is only used as a fallback in an OR expression
|
|
49
|
+
* (e.g., `const displayEntities = currentlyExecuting?.entities || currentEntities`)
|
|
50
|
+
*
|
|
51
|
+
* In this case, `entities` gets `entities[]`, `entities[].name`, etc. traced,
|
|
52
|
+
* but `currentEntities` only gets `currentEntities: "array"` with no item schema.
|
|
53
|
+
*
|
|
54
|
+
* This function finds arrays without item schemas and copies item schemas from
|
|
55
|
+
* other arrays that appear to have the same type based on naming conventions.
|
|
56
|
+
*
|
|
57
|
+
* Heuristics for matching arrays:
|
|
58
|
+
* 1. Same suffix (e.g., `currentEntities` matches `entities`, `queueJobs[].entities` matches `entities`)
|
|
59
|
+
* 2. One name is a plural/singular form of the other
|
|
60
|
+
*/
|
|
61
|
+
export default function propagateArrayItemSchemas(
|
|
62
|
+
dependencySchemas: DataStructure['dependencySchemas'],
|
|
63
|
+
): void {
|
|
64
|
+
if (!dependencySchemas) {
|
|
65
|
+
console.log('[PROPAGATE] No dependencySchemas provided');
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// Log what we're working with
|
|
70
|
+
const packages = Object.keys(dependencySchemas);
|
|
71
|
+
console.log('[PROPAGATE] Processing packages:', packages);
|
|
72
|
+
|
|
73
|
+
// PHASE 1: Run per-entity propagation (original behavior)
|
|
74
|
+
// This propagates array item schemas within each entity's own schema.
|
|
75
|
+
console.log('[PROPAGATE] === PHASE 1: Per-entity propagation ===');
|
|
76
|
+
for (const filePath in dependencySchemas) {
|
|
77
|
+
for (const entityName in dependencySchemas[filePath]) {
|
|
78
|
+
const schema = dependencySchemas[filePath][entityName]?.returnValueSchema;
|
|
79
|
+
if (!schema) {
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
const beforeCount = Object.keys(schema).length;
|
|
83
|
+
|
|
84
|
+
propagateArrayItemSchemasInSchema(schema);
|
|
85
|
+
|
|
86
|
+
const afterCount = Object.keys(schema).length;
|
|
87
|
+
|
|
88
|
+
if (beforeCount !== afterCount) {
|
|
89
|
+
console.log(
|
|
90
|
+
`[PROPAGATE] PHASE1 ${filePath}/${entityName}: ${beforeCount} -> ${afterCount} paths`,
|
|
91
|
+
);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// PHASE 2: Cross-entity propagation within the same package
|
|
97
|
+
// When we have call-specific entities like `useLoaderData<typeof loader>()`,
|
|
98
|
+
// they may be missing array item paths that exist in the base entity `useLoaderData`.
|
|
99
|
+
// Copy array item paths from base entities to call-specific entities.
|
|
100
|
+
console.log('[PROPAGATE] === PHASE 2: Cross-entity propagation ===');
|
|
101
|
+
for (const filePath in dependencySchemas) {
|
|
102
|
+
const entities = dependencySchemas[filePath];
|
|
103
|
+
const entityNames = Object.keys(entities);
|
|
104
|
+
|
|
105
|
+
for (const entityName of entityNames) {
|
|
106
|
+
// Check if this is a call-specific entity (ends with function call syntax)
|
|
107
|
+
if (!entityName.includes('(')) {
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// Find the base entity name (e.g., "useLoaderData<typeof loader>()" -> "useLoaderData")
|
|
112
|
+
const baseEntityName = entityName.split(/[(<]/)[0];
|
|
113
|
+
|
|
114
|
+
if (!baseEntityName || !entities[baseEntityName]) {
|
|
115
|
+
console.log(
|
|
116
|
+
`[PROPAGATE] PHASE2: No base entity '${baseEntityName}' for '${entityName}'`,
|
|
117
|
+
);
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
const callSpecificSchema = entities[entityName]?.returnValueSchema;
|
|
122
|
+
const baseSchema = entities[baseEntityName]?.returnValueSchema;
|
|
123
|
+
|
|
124
|
+
if (!callSpecificSchema || !baseSchema) {
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
console.log(
|
|
129
|
+
`[PROPAGATE] PHASE2: Copying from '${baseEntityName}' (${Object.keys(baseSchema).length} paths) to '${entityName}' (${Object.keys(callSpecificSchema).length} paths)`,
|
|
130
|
+
);
|
|
131
|
+
|
|
132
|
+
// Check what paths exist in base but not in call-specific
|
|
133
|
+
const baseHasEntitiesFilePath = Object.keys(baseSchema).some((p) =>
|
|
134
|
+
p.includes('currentlyExecuting.entities[].filePath'),
|
|
135
|
+
);
|
|
136
|
+
const callSpecificHasEntitiesFilePath = Object.keys(
|
|
137
|
+
callSpecificSchema,
|
|
138
|
+
).some((p) => p.includes('currentlyExecuting.entities[].filePath'));
|
|
139
|
+
|
|
140
|
+
console.log(
|
|
141
|
+
`[PROPAGATE] PHASE2: base has currentlyExecuting.entities[].filePath: ${baseHasEntitiesFilePath}`,
|
|
142
|
+
);
|
|
143
|
+
console.log(
|
|
144
|
+
`[PROPAGATE] PHASE2: callSpecific has currentlyExecuting.entities[].filePath: ${callSpecificHasEntitiesFilePath}`,
|
|
145
|
+
);
|
|
146
|
+
|
|
147
|
+
// Copy any array item paths from base schema to call-specific schema
|
|
148
|
+
// that are missing in the call-specific schema
|
|
149
|
+
let copiedCount = 0;
|
|
150
|
+
const copiedPaths: string[] = [];
|
|
151
|
+
for (const path in baseSchema) {
|
|
152
|
+
// Only copy paths that include array element notation
|
|
153
|
+
if (!path.includes('[]')) continue;
|
|
154
|
+
// Only copy if not already present
|
|
155
|
+
if (callSpecificSchema[path]) continue;
|
|
156
|
+
|
|
157
|
+
callSpecificSchema[path] = baseSchema[path];
|
|
158
|
+
copiedCount++;
|
|
159
|
+
|
|
160
|
+
// Track specific paths we care about
|
|
161
|
+
if (path.includes('currentlyExecuting.entities[]')) {
|
|
162
|
+
copiedPaths.push(path);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
console.log(`[PROPAGATE] PHASE2: Copied ${copiedCount} paths`);
|
|
167
|
+
if (copiedPaths.length > 0) {
|
|
168
|
+
console.log(
|
|
169
|
+
'[PROPAGATE] PHASE2: Copied currentlyExecuting.entities paths:',
|
|
170
|
+
copiedPaths,
|
|
171
|
+
);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// Verify after copy
|
|
175
|
+
const afterHasEntitiesFilePath = Object.keys(callSpecificSchema).some(
|
|
176
|
+
(p) => p.includes('currentlyExecuting.entities[].filePath'),
|
|
177
|
+
);
|
|
178
|
+
console.log(
|
|
179
|
+
`[PROPAGATE] PHASE2: AFTER copy, callSpecific has currentlyExecuting.entities[].filePath: ${afterHasEntitiesFilePath}`,
|
|
180
|
+
);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
console.log('[PROPAGATE] === DONE ===');
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Helper to extract the "base name" from an array path for matching purposes.
|
|
189
|
+
* e.g., "currentEntities" -> "entities"
|
|
190
|
+
* e.g., "validCurrentEntities" -> "entities"
|
|
191
|
+
* e.g., "queueJobs[].entities" -> "entities"
|
|
192
|
+
* e.g., "entities" -> "entities"
|
|
193
|
+
*/
|
|
194
|
+
function extractArrayBaseName(path: string): string {
|
|
195
|
+
// Get the last segment of the path (after the last dot, if any)
|
|
196
|
+
const parts = splitOutsideParenthesesAndArrays(path);
|
|
197
|
+
const lastPart = parts[parts.length - 1] || path;
|
|
198
|
+
|
|
199
|
+
// Remove trailing [] if present
|
|
200
|
+
const name = lastPart.replace(/\[\]$/, '');
|
|
201
|
+
|
|
202
|
+
// Common prefixes that can be stripped for matching
|
|
203
|
+
const prefixes = [
|
|
204
|
+
'current',
|
|
205
|
+
'valid',
|
|
206
|
+
'filtered',
|
|
207
|
+
'all',
|
|
208
|
+
'new',
|
|
209
|
+
'old',
|
|
210
|
+
'display',
|
|
211
|
+
'active',
|
|
212
|
+
'selected',
|
|
213
|
+
'loaded',
|
|
214
|
+
'fetched',
|
|
215
|
+
];
|
|
216
|
+
|
|
217
|
+
// Keep stripping prefixes until no more match
|
|
218
|
+
let baseName = name;
|
|
219
|
+
let changed = true;
|
|
220
|
+
while (changed) {
|
|
221
|
+
changed = false;
|
|
222
|
+
for (const prefix of prefixes) {
|
|
223
|
+
if (
|
|
224
|
+
baseName.toLowerCase().startsWith(prefix) &&
|
|
225
|
+
baseName.length > prefix.length
|
|
226
|
+
) {
|
|
227
|
+
// Remove prefix and lowercase the first char
|
|
228
|
+
baseName = baseName.slice(prefix.length);
|
|
229
|
+
baseName = baseName.charAt(0).toLowerCase() + baseName.slice(1);
|
|
230
|
+
changed = true;
|
|
231
|
+
break;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
return baseName.toLowerCase();
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* Check if two array names likely refer to the same type.
|
|
241
|
+
*/
|
|
242
|
+
function arrayNamesMatch(name1: string, name2: string): boolean {
|
|
243
|
+
const base1 = extractArrayBaseName(name1);
|
|
244
|
+
const base2 = extractArrayBaseName(name2);
|
|
245
|
+
|
|
246
|
+
if (base1 === base2) return true;
|
|
247
|
+
|
|
248
|
+
// Check singular/plural relationships
|
|
249
|
+
if (base1 + 's' === base2 || base2 + 's' === base1) return true;
|
|
250
|
+
if (base1 + 'es' === base2 || base2 + 'es' === base1) return true;
|
|
251
|
+
|
|
252
|
+
// Handle "ies" plural (e.g., entity -> entities)
|
|
253
|
+
if (base1.endsWith('ies') && base1.slice(0, -3) + 'y' === base2) return true;
|
|
254
|
+
if (base2.endsWith('ies') && base2.slice(0, -3) + 'y' === base1) return true;
|
|
255
|
+
|
|
256
|
+
return false;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* Count the number of item properties an array has in the schema.
|
|
261
|
+
*/
|
|
262
|
+
function countArrayItemProperties(
|
|
263
|
+
schema: Record<string, string>,
|
|
264
|
+
arrayPath: string,
|
|
265
|
+
): number {
|
|
266
|
+
const elementPrefix = arrayPath + '[]';
|
|
267
|
+
let count = 0;
|
|
268
|
+
for (const path in schema) {
|
|
269
|
+
if (path.startsWith(elementPrefix)) {
|
|
270
|
+
count++;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
return count;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
function propagateArrayItemSchemasInSchema(
|
|
277
|
+
schema: Record<string, string>,
|
|
278
|
+
): void {
|
|
279
|
+
// Safety check: Don't propagate if schema is already very large
|
|
280
|
+
const initialPathCount = Object.keys(schema).length;
|
|
281
|
+
if (initialPathCount > MAX_SCHEMA_PATHS) {
|
|
282
|
+
console.log(
|
|
283
|
+
`[PROPAGATE] SKIPPING: Schema already has ${initialPathCount} paths (limit: ${MAX_SCHEMA_PATHS})`,
|
|
284
|
+
);
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
let totalPathsAdded = 0;
|
|
289
|
+
|
|
290
|
+
// Find all array paths and categorize them
|
|
291
|
+
const arraysWithItemSchema: string[] = [];
|
|
292
|
+
const arraysWithoutItemSchema: string[] = [];
|
|
293
|
+
|
|
294
|
+
for (const path in schema) {
|
|
295
|
+
const type = schema[path];
|
|
296
|
+
|
|
297
|
+
// Check if this is an array type (including "array | undefined", etc.)
|
|
298
|
+
if (!type.startsWith('array')) continue;
|
|
299
|
+
|
|
300
|
+
// Check if this is an array element path (ends with [])
|
|
301
|
+
if (path.endsWith('[]')) continue;
|
|
302
|
+
|
|
303
|
+
// This is an array declaration, not an element. Check if it has item schema.
|
|
304
|
+
const elementPath = path + '[]';
|
|
305
|
+
if (schema[elementPath]) {
|
|
306
|
+
arraysWithItemSchema.push(path);
|
|
307
|
+
} else {
|
|
308
|
+
arraysWithoutItemSchema.push(path);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
// For each array without item schema, try to find a matching array with schema
|
|
313
|
+
for (const emptyArrayPath of arraysWithoutItemSchema) {
|
|
314
|
+
let bestMatch: string | null = null;
|
|
315
|
+
let bestMatchScore = 0;
|
|
316
|
+
|
|
317
|
+
for (const richArrayPath of arraysWithItemSchema) {
|
|
318
|
+
if (!arrayNamesMatch(emptyArrayPath, richArrayPath)) continue;
|
|
319
|
+
|
|
320
|
+
// Score the match - prefer shorter paths (less nested) as they're more likely primary
|
|
321
|
+
// and prefer paths that are more similar in structure
|
|
322
|
+
const emptyDepth = emptyArrayPath.split('.').length;
|
|
323
|
+
const richDepth = richArrayPath.split('.').length;
|
|
324
|
+
const depthDiff = Math.abs(emptyDepth - richDepth);
|
|
325
|
+
const score = 100 - depthDiff * 10 - richDepth;
|
|
326
|
+
|
|
327
|
+
if (score > bestMatchScore) {
|
|
328
|
+
bestMatchScore = score;
|
|
329
|
+
bestMatch = richArrayPath;
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
if (bestMatch) {
|
|
334
|
+
// Safety check: Stop if we've added too many paths
|
|
335
|
+
if (totalPathsAdded >= MAX_PATHS_TO_ADD) {
|
|
336
|
+
console.log(
|
|
337
|
+
`[PROPAGATE] STOPPING FIRST PASS: Already added ${totalPathsAdded} paths (limit: ${MAX_PATHS_TO_ADD})`,
|
|
338
|
+
);
|
|
339
|
+
break;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
// Copy item schema from the rich array to the empty array
|
|
343
|
+
const richElementPrefix = bestMatch + '[]';
|
|
344
|
+
const emptyElementPrefix = emptyArrayPath + '[]';
|
|
345
|
+
|
|
346
|
+
// Find all paths that start with the rich array's element path
|
|
347
|
+
const pathsToCheck = Object.keys(schema);
|
|
348
|
+
|
|
349
|
+
for (const path of pathsToCheck) {
|
|
350
|
+
if (path.startsWith(richElementPrefix)) {
|
|
351
|
+
const suffix = path.slice(richElementPrefix.length);
|
|
352
|
+
const newPath = emptyElementPrefix + suffix;
|
|
353
|
+
|
|
354
|
+
// Skip if this would create a recursive path (suffix contains array names that are already in the prefix)
|
|
355
|
+
if (wouldCreateRecursivePath(emptyElementPrefix, suffix)) {
|
|
356
|
+
continue;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
// Skip if the new path would have too many array levels
|
|
360
|
+
if (countArrayLevels(newPath) > MAX_ARRAY_NESTING_DEPTH) {
|
|
361
|
+
continue;
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
// Safety check: Stop if we've added too many paths
|
|
365
|
+
if (totalPathsAdded >= MAX_PATHS_TO_ADD) {
|
|
366
|
+
break;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
// Only add if the path doesn't already exist
|
|
370
|
+
if (!schema[newPath]) {
|
|
371
|
+
schema[newPath] = schema[path];
|
|
372
|
+
totalPathsAdded++;
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
// SECOND PASS: For arrays that have PARTIAL item schemas (some but not all properties),
|
|
380
|
+
// propagate missing properties from matching arrays with more complete schemas.
|
|
381
|
+
// This handles the case where e.g. currentlyExecuting.entities has sha traced
|
|
382
|
+
// but is missing filePath, name, etc. that entities[] has.
|
|
383
|
+
|
|
384
|
+
// Safety check: Skip second pass if we've already hit the limit
|
|
385
|
+
if (totalPathsAdded >= MAX_PATHS_TO_ADD) {
|
|
386
|
+
console.log(
|
|
387
|
+
`[PROPAGATE] SKIPPING SECOND PASS: Already added ${totalPathsAdded} paths`,
|
|
388
|
+
);
|
|
389
|
+
return;
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
for (const partialArrayPath of arraysWithItemSchema) {
|
|
393
|
+
// Safety check: Stop if we've added too many paths
|
|
394
|
+
if (totalPathsAdded >= MAX_PATHS_TO_ADD) {
|
|
395
|
+
console.log(
|
|
396
|
+
`[PROPAGATE] STOPPING SECOND PASS: Already added ${totalPathsAdded} paths (limit: ${MAX_PATHS_TO_ADD})`,
|
|
397
|
+
);
|
|
398
|
+
break;
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
const partialCount = countArrayItemProperties(schema, partialArrayPath);
|
|
402
|
+
|
|
403
|
+
// Find the best matching array with MORE properties
|
|
404
|
+
let bestMatch: string | null = null;
|
|
405
|
+
let bestMatchScore = 0;
|
|
406
|
+
let bestMatchCount = partialCount;
|
|
407
|
+
|
|
408
|
+
for (const richArrayPath of arraysWithItemSchema) {
|
|
409
|
+
if (richArrayPath === partialArrayPath) continue;
|
|
410
|
+
if (!arrayNamesMatch(partialArrayPath, richArrayPath)) continue;
|
|
411
|
+
|
|
412
|
+
const richCount = countArrayItemProperties(schema, richArrayPath);
|
|
413
|
+
|
|
414
|
+
// Only consider arrays with MORE properties
|
|
415
|
+
if (richCount <= partialCount) continue;
|
|
416
|
+
|
|
417
|
+
// Score the match - prefer arrays with more properties and shallower depth
|
|
418
|
+
const partialDepth = partialArrayPath.split('.').length;
|
|
419
|
+
const richDepth = richArrayPath.split('.').length;
|
|
420
|
+
const depthDiff = Math.abs(partialDepth - richDepth);
|
|
421
|
+
const score = richCount * 10 - depthDiff * 5 - richDepth;
|
|
422
|
+
|
|
423
|
+
if (score > bestMatchScore || richCount > bestMatchCount) {
|
|
424
|
+
bestMatchScore = score;
|
|
425
|
+
bestMatch = richArrayPath;
|
|
426
|
+
bestMatchCount = richCount;
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
if (bestMatch) {
|
|
431
|
+
// Copy MISSING item properties from the rich array to the partial array
|
|
432
|
+
const richElementPrefix = bestMatch + '[]';
|
|
433
|
+
const partialElementPrefix = partialArrayPath + '[]';
|
|
434
|
+
|
|
435
|
+
const pathsToCheck = Object.keys(schema);
|
|
436
|
+
|
|
437
|
+
for (const path of pathsToCheck) {
|
|
438
|
+
if (path.startsWith(richElementPrefix)) {
|
|
439
|
+
const suffix = path.slice(richElementPrefix.length);
|
|
440
|
+
const newPath = partialElementPrefix + suffix;
|
|
441
|
+
|
|
442
|
+
// Skip if this would create a recursive path
|
|
443
|
+
if (wouldCreateRecursivePath(partialElementPrefix, suffix)) {
|
|
444
|
+
continue;
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
// Skip if the new path would have too many array levels
|
|
448
|
+
if (countArrayLevels(newPath) > MAX_ARRAY_NESTING_DEPTH) {
|
|
449
|
+
continue;
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
// Safety check: Stop if we've added too many paths
|
|
453
|
+
if (totalPathsAdded >= MAX_PATHS_TO_ADD) {
|
|
454
|
+
break;
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
// Only add if the path doesn't already exist (don't overwrite)
|
|
458
|
+
if (!schema[newPath]) {
|
|
459
|
+
schema[newPath] = schema[path];
|
|
460
|
+
totalPathsAdded++;
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
// Log final stats
|
|
468
|
+
if (totalPathsAdded > 0) {
|
|
469
|
+
const finalPathCount = Object.keys(schema).length;
|
|
470
|
+
console.log(
|
|
471
|
+
`[PROPAGATE] Added ${totalPathsAdded} paths (${initialPathCount} -> ${finalPathCount})`,
|
|
472
|
+
);
|
|
473
|
+
}
|
|
474
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Commit, Entity, File } from '~codeyam/types';
|
|
2
2
|
import { ProjectAnalyzer } from '../ProjectAnalyzer';
|
|
3
|
+
import { getFileByPathSafe } from '../utils/getFileByPath';
|
|
3
4
|
import getImportedExports from './getImportedExports';
|
|
4
5
|
import { getFrameworkForFile, isFrameworkRoute } from '~codeyam/utils';
|
|
5
6
|
import findOrCreateEntity from './analyze/findOrCreateEntity';
|
|
@@ -149,7 +150,7 @@ export default async function setImportedExports({
|
|
|
149
150
|
// Use fileStore for O(1) lookup when available, fallback to O(n) find
|
|
150
151
|
const relevantFile =
|
|
151
152
|
fileStore?.getByPath(resolvedFilePath) ??
|
|
152
|
-
|
|
153
|
+
getFileByPathSafe(projectAnalyzer, resolvedFilePath);
|
|
153
154
|
|
|
154
155
|
if (relevantFile) {
|
|
155
156
|
const relevantFileAnalyzer =
|
|
@@ -4,3 +4,4 @@ export { type FunctionDependenciesMap } from './asts/sourceFiles/getPseudoFile';
|
|
|
4
4
|
export * as asts from './asts/index';
|
|
5
5
|
export * as projects from './projects/index';
|
|
6
6
|
export * as types from './types';
|
|
7
|
+
export { transformationTracer } from './files/scenarios/TransformationTracer';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { File } from '~codeyam/types';
|
|
2
|
+
import { ProjectAnalyzer } from '../ProjectAnalyzer';
|
|
3
|
+
|
|
4
|
+
export function getFileByPathSafe(
|
|
5
|
+
projectAnalyzer: ProjectAnalyzer,
|
|
6
|
+
filePath: string,
|
|
7
|
+
): File | undefined {
|
|
8
|
+
const maybeGetFileByPath = (projectAnalyzer as any).getFileByPath;
|
|
9
|
+
if (typeof maybeGetFileByPath === 'function') {
|
|
10
|
+
return maybeGetFileByPath.call(projectAnalyzer, filePath);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const projectFiles = (projectAnalyzer as any).project?.files;
|
|
14
|
+
if (Array.isArray(projectFiles)) {
|
|
15
|
+
return projectFiles.find((file: File) => file.path === filePath);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
@@ -11,15 +11,15 @@
|
|
|
11
11
|
"author": "",
|
|
12
12
|
"license": "ISC",
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@aws-sdk/client-codebuild": "^3.
|
|
15
|
-
"@aws-sdk/client-cloudwatch-logs": "^3.
|
|
16
|
-
"@aws-sdk/client-dynamodb": "^3.
|
|
17
|
-
"@aws-sdk/client-ecr": "^3.
|
|
18
|
-
"@aws-sdk/client-ecs": "^3.
|
|
19
|
-
"@aws-sdk/client-s3": "^3.
|
|
20
|
-
"@aws-sdk/client-sqs": "^3.
|
|
21
|
-
"@aws-sdk/lib-storage": "^3.
|
|
22
|
-
"@aws-sdk/s3-request-presigner": "^3.
|
|
23
|
-
"@aws-sdk/util-dynamodb": "^3.
|
|
14
|
+
"@aws-sdk/client-codebuild": "^3.990.0",
|
|
15
|
+
"@aws-sdk/client-cloudwatch-logs": "^3.990.0",
|
|
16
|
+
"@aws-sdk/client-dynamodb": "^3.990.0",
|
|
17
|
+
"@aws-sdk/client-ecr": "^3.990.0",
|
|
18
|
+
"@aws-sdk/client-ecs": "^3.990.0",
|
|
19
|
+
"@aws-sdk/client-s3": "^3.990.0",
|
|
20
|
+
"@aws-sdk/client-sqs": "^3.990.0",
|
|
21
|
+
"@aws-sdk/lib-storage": "^3.990.0",
|
|
22
|
+
"@aws-sdk/s3-request-presigner": "^3.990.0",
|
|
23
|
+
"@aws-sdk/util-dynamodb": "^3.990.0"
|
|
24
24
|
}
|
|
25
25
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AnalysisBranch } from '~codeyam/types';
|
|
2
2
|
import { DbAnalysisBranch } from './kysely/tableRelations';
|
|
3
|
-
|
|
3
|
+
const randomUUID = () => crypto.randomUUID();
|
|
4
4
|
import { AnalysisBranchesTable } from './kysely/tables/analysisBranchesTable';
|
|
5
5
|
import { type Insertable } from 'kysely';
|
|
6
6
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Analysis } from '~codeyam/types';
|
|
2
2
|
import { type Insertable } from 'kysely';
|
|
3
3
|
import { AnalysesTable } from './kysely/tables/analysesTable';
|
|
4
|
-
|
|
4
|
+
const randomUUID = () => crypto.randomUUID();
|
|
5
5
|
|
|
6
6
|
export default function analysisToDb(
|
|
7
7
|
analysis: Analysis,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Branch } from '~codeyam/types';
|
|
2
2
|
import { type Insertable } from 'kysely';
|
|
3
3
|
import { BranchesTable } from './kysely/tables/branchesTable';
|
|
4
|
-
|
|
4
|
+
const randomUUID = () => crypto.randomUUID();
|
|
5
5
|
|
|
6
6
|
export default function branchToDb(branch: Branch): Insertable<BranchesTable> {
|
|
7
7
|
const { id, projectId, activeAt, contentChangedAt, metadata, ...remaining } =
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CommitBranch } from '~codeyam/types';
|
|
2
2
|
import { type Insertable } from 'kysely';
|
|
3
|
-
|
|
3
|
+
const randomUUID = () => crypto.randomUUID();
|
|
4
4
|
import { CommitBranchesTable } from './kysely/tables/commitBranchesTable';
|
|
5
5
|
|
|
6
6
|
export default function commitBranchToDb(
|