@codeyam/codeyam-cli 0.1.0-staging.8aea589 → 0.1.0-staging.da5baf5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/analyzer-template/.build-info.json +7 -7
- package/analyzer-template/log.txt +3 -3
- package/analyzer-template/package.json +5 -5
- package/analyzer-template/packages/ai/index.ts +2 -1
- package/analyzer-template/packages/ai/package.json +2 -2
- package/analyzer-template/packages/ai/scripts/ai-test-matrix.mjs +424 -0
- package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +24 -0
- package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +6 -16
- package/analyzer-template/packages/ai/src/lib/astScopes/methodSemantics.ts +197 -0
- package/analyzer-template/packages/ai/src/lib/astScopes/paths.ts +28 -2
- package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +127 -4
- package/analyzer-template/packages/ai/src/lib/checkAllAttributes.ts +1 -3
- package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +1821 -542
- package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/FunctionCallManager.ts +138 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.ts +1 -1
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.ts +139 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/DebugTracer.ts +224 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/PathManager.ts +203 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/README.md +294 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.ts +161 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/VisitedTracker.ts +235 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +14 -6
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/selectBestValue.ts +70 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/uniqueIdUtils.ts +113 -0
- package/analyzer-template/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.ts +36 -0
- package/analyzer-template/packages/ai/src/lib/generateChangesEntityDocumentation.ts +20 -2
- package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarioData.ts +56 -160
- package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarios.ts +79 -265
- package/analyzer-template/packages/ai/src/lib/generateEntityDocumentation.ts +16 -2
- package/analyzer-template/packages/ai/src/lib/generateEntityKeyAttributes.ts +32 -8
- package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +53 -154
- package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +84 -254
- package/analyzer-template/packages/ai/src/lib/generateStatementAnalysis.ts +48 -71
- package/analyzer-template/packages/ai/src/lib/getConditionalUsagesFromCode.ts +27 -6
- package/analyzer-template/packages/ai/src/lib/getLLMCallStats.ts +0 -14
- package/analyzer-template/packages/ai/src/lib/modelInfo.ts +15 -0
- package/analyzer-template/packages/ai/src/lib/promptGenerators/gatherAttributesMap.ts +42 -4
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityDocumentationGenerator.ts +8 -33
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.ts +54 -62
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.ts +93 -109
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityDocumentationGenerator.ts +8 -27
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.ts +33 -38
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.ts +30 -30
- package/analyzer-template/packages/ai/src/lib/types/index.ts +2 -0
- package/analyzer-template/packages/ai/src/lib/worker/SerializableDataStructure.ts +39 -0
- package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +18 -6
- package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +8 -10
- package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +6 -1
- package/analyzer-template/packages/analyze/src/lib/files/analyzeChange.ts +34 -15
- package/analyzer-template/packages/analyze/src/lib/files/analyzeEntity.ts +17 -3
- package/analyzer-template/packages/analyze/src/lib/files/analyzeInitial.ts +35 -16
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +7 -1
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.ts +9 -1
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarioData.ts +6 -1
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarios.ts +9 -1
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +15 -7
- package/analyzer-template/packages/aws/package.json +2 -2
- package/analyzer-template/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.ts +28 -21
- package/analyzer-template/packages/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.ts +18 -11
- package/analyzer-template/packages/generate/src/lib/scenarioComponent.ts +6 -3
- 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 +28 -21
- 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/componentScenarioPageRemix.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.js +18 -11
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.js.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponent.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponent.js +5 -3
- package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponent.js.map +1 -1
- package/analyzer-template/packages/github/dist/utils/index.d.ts +2 -0
- package/analyzer-template/packages/github/dist/utils/index.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/utils/index.js +2 -0
- package/analyzer-template/packages/github/dist/utils/index.js.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/Semaphore.d.ts +25 -0
- package/analyzer-template/packages/github/dist/utils/src/lib/Semaphore.d.ts.map +1 -0
- package/analyzer-template/packages/github/dist/utils/src/lib/Semaphore.js +40 -0
- package/analyzer-template/packages/github/dist/utils/src/lib/Semaphore.js.map +1 -0
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getNextRoutePath.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getNextRoutePath.js +2 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getNextRoutePath.js.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getRemixRoutePath.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getRemixRoutePath.js +2 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getRemixRoutePath.js.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.js +2 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.js.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.js +1 -0
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.js.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.d.ts +12 -0
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.d.ts.map +1 -0
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.js +32 -0
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.js.map +1 -0
- package/analyzer-template/packages/ui-components/src/scenario-editor/components/DataItemEditor.tsx +1 -1
- package/analyzer-template/packages/utils/dist/utils/index.d.ts +2 -0
- package/analyzer-template/packages/utils/dist/utils/index.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/index.js +2 -0
- package/analyzer-template/packages/utils/dist/utils/index.js.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/Semaphore.d.ts +25 -0
- package/analyzer-template/packages/utils/dist/utils/src/lib/Semaphore.d.ts.map +1 -0
- package/analyzer-template/packages/utils/dist/utils/src/lib/Semaphore.js +40 -0
- package/analyzer-template/packages/utils/dist/utils/src/lib/Semaphore.js.map +1 -0
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getNextRoutePath.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getNextRoutePath.js +2 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getNextRoutePath.js.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getRemixRoutePath.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getRemixRoutePath.js +2 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getRemixRoutePath.js.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.js +2 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.js.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.js +1 -0
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.js.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.d.ts +12 -0
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.d.ts.map +1 -0
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.js +32 -0
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.js.map +1 -0
- package/analyzer-template/packages/utils/index.ts +2 -0
- package/analyzer-template/packages/utils/src/lib/Semaphore.ts +42 -0
- package/analyzer-template/packages/utils/src/lib/frameworks/getNextRoutePath.ts +2 -1
- package/analyzer-template/packages/utils/src/lib/frameworks/getRemixRoutePath.ts +2 -1
- package/analyzer-template/packages/utils/src/lib/frameworks/nextRouteFileNameToRoute.ts +2 -1
- package/analyzer-template/packages/utils/src/lib/frameworks/remixRouteFileNameToRoute.ts +1 -0
- package/analyzer-template/packages/utils/src/lib/frameworks/sanitizeNextRouteSegments.ts +33 -0
- package/analyzer-template/project/constructMockCode.ts +170 -6
- package/analyzer-template/project/reconcileMockDataKeys.ts +13 -0
- package/analyzer-template/project/startScenarioCapture.ts +24 -0
- package/analyzer-template/project/trackGeneratedFiles.ts +41 -0
- package/analyzer-template/project/writeMockDataTsx.ts +125 -4
- package/analyzer-template/project/writeScenarioComponents.ts +175 -45
- package/analyzer-template/project/writeUniversalMocks.ts +66 -8
- package/background/src/lib/virtualized/project/constructMockCode.js +158 -7
- package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
- package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +12 -0
- package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
- package/background/src/lib/virtualized/project/startScenarioCapture.js +18 -0
- package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
- package/background/src/lib/virtualized/project/trackGeneratedFiles.js +30 -0
- package/background/src/lib/virtualized/project/trackGeneratedFiles.js.map +1 -0
- package/background/src/lib/virtualized/project/writeMockDataTsx.js +95 -3
- package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
- package/background/src/lib/virtualized/project/writeScenarioComponents.js +130 -28
- package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
- package/background/src/lib/virtualized/project/writeUniversalMocks.js +56 -7
- package/background/src/lib/virtualized/project/writeUniversalMocks.js.map +1 -1
- package/codeyam-cli/src/cli.js +4 -0
- package/codeyam-cli/src/cli.js.map +1 -1
- package/codeyam-cli/src/codeyam-cli.js +0 -0
- package/codeyam-cli/src/commands/debug.js +190 -0
- package/codeyam-cli/src/commands/debug.js.map +1 -0
- package/codeyam-cli/src/commands/init.js +4 -23
- package/codeyam-cli/src/commands/init.js.map +1 -1
- package/codeyam-cli/src/commands/setup-sandbox.js +164 -0
- package/codeyam-cli/src/commands/setup-sandbox.js.map +1 -0
- package/codeyam-cli/src/utils/__tests__/cleanupAnalysisFiles.test.js +6 -6
- package/codeyam-cli/src/utils/__tests__/cleanupAnalysisFiles.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +8 -0
- package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
- package/codeyam-cli/src/utils/cleanupAnalysisFiles.js +2 -2
- package/codeyam-cli/src/utils/cleanupAnalysisFiles.js.map +1 -1
- package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +4 -0
- package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
- package/codeyam-cli/src/utils/webappDetection.js +2 -1
- package/codeyam-cli/src/utils/webappDetection.js.map +1 -1
- package/codeyam-cli/src/webserver/app/lib/database.js +50 -2
- package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-BFRmw1TF.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-B0oiPem-.js → InteractivePreview-CRfBaL5B.js} +3 -3
- package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-BYVx9KFp.js +3 -0
- package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-BKKG1s2B.js → LogViewer-CRcT5fOZ.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-Bual6h18.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/ScenarioPreview-Dj4Mm0AR.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-DmjXUj6m.js → ScenarioViewer-wtCIkGzq.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/_index-Cjdlwanz.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-Dv3k2aEm.js +10 -0
- package/codeyam-cli/src/webserver/build/client/assets/{chart-column-VXBS6qOn.js → chart-column-DOftqM9U.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/chunk-WWGJGFF6-De6i8FUT.js +26 -0
- package/codeyam-cli/src/webserver/build/client/assets/{circle-alert-n5GUC2AS.js → circle-alert-0WShkwuc.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{clock-DKqtX8js.js → clock-DXui5oLF.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/dev.empty-DPFKgE96.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-BHiWkb_W.js → entity._sha._-BxaXKsIx.js} +10 -10
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-BRD2FrH5.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-69R47Ffu.js +5 -0
- package/codeyam-cli/src/webserver/build/client/assets/entry.client-B5l8I1m3.js +5 -0
- package/codeyam-cli/src/webserver/build/client/assets/file-text-fb2mx25c.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/files-l_Eh9jQG.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/git-BCnOUEl9.js +12 -0
- package/codeyam-cli/src/webserver/build/client/assets/globals-BxkM6Up7.css +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/index-BgDzgbQW.js +8 -0
- package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-v3c6DFp4.js → loader-circle-DE3HAwpF.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/manifest-5579bc45.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/root-o8NMI2bW.js +16 -0
- package/codeyam-cli/src/webserver/build/client/assets/{search-DA14wXpu.js → search-BymWwY_X.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{settings-COJUrwGu.js → settings-C7G4GDvW.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/settings-Dc4MlMpK.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/simulations-Duh3oShE.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-Lumm1t01.js → useLastLogLine-AlhS7g5F.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/useToast-XY00p4rI.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{zap-BvukH0eN.js → zap-Dra7vum1.js} +1 -1
- package/codeyam-cli/src/webserver/build/server/assets/index-Dpr7o3dP.js +1 -0
- package/codeyam-cli/src/webserver/build/server/assets/server-build-BM5nyvlV.js +166 -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 +1 -1
- package/codeyam-cli/src/webserver/server.js.map +1 -1
- package/codeyam-cli/templates/codeyam-setup-skill.md +70 -85
- package/package.json +7 -10
- package/packages/ai/index.js +1 -2
- package/packages/ai/index.js.map +1 -1
- package/packages/ai/src/lib/analyzeScope.js +13 -0
- package/packages/ai/src/lib/analyzeScope.js.map +1 -1
- package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +6 -15
- package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
- package/packages/ai/src/lib/astScopes/methodSemantics.js +134 -0
- package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
- package/packages/ai/src/lib/astScopes/paths.js +28 -3
- package/packages/ai/src/lib/astScopes/paths.js.map +1 -1
- package/packages/ai/src/lib/astScopes/processExpression.js +111 -3
- package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
- package/packages/ai/src/lib/checkAllAttributes.js +1 -3
- package/packages/ai/src/lib/checkAllAttributes.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +1320 -396
- package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/FunctionCallManager.js +137 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/FunctionCallManager.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js +1 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js +112 -0
- package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js.map +1 -0
- package/packages/ai/src/lib/dataStructure/helpers/DebugTracer.js +176 -0
- package/packages/ai/src/lib/dataStructure/helpers/DebugTracer.js.map +1 -0
- package/packages/ai/src/lib/dataStructure/helpers/PathManager.js +178 -0
- package/packages/ai/src/lib/dataStructure/helpers/PathManager.js.map +1 -0
- package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js +138 -0
- package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js.map +1 -0
- package/packages/ai/src/lib/dataStructure/helpers/VisitedTracker.js +199 -0
- package/packages/ai/src/lib/dataStructure/helpers/VisitedTracker.js.map +1 -0
- package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +14 -6
- package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/selectBestValue.js +62 -0
- package/packages/ai/src/lib/dataStructure/helpers/selectBestValue.js.map +1 -0
- package/packages/ai/src/lib/dataStructure/helpers/uniqueIdUtils.js +90 -0
- package/packages/ai/src/lib/dataStructure/helpers/uniqueIdUtils.js.map +1 -0
- package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js +22 -0
- package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js.map +1 -1
- package/packages/ai/src/lib/generateChangesEntityDocumentation.js +19 -1
- package/packages/ai/src/lib/generateChangesEntityDocumentation.js.map +1 -1
- package/packages/ai/src/lib/generateChangesEntityScenarioData.js +55 -156
- package/packages/ai/src/lib/generateChangesEntityScenarioData.js.map +1 -1
- package/packages/ai/src/lib/generateChangesEntityScenarios.js +79 -262
- package/packages/ai/src/lib/generateChangesEntityScenarios.js.map +1 -1
- package/packages/ai/src/lib/generateEntityDocumentation.js +15 -1
- package/packages/ai/src/lib/generateEntityDocumentation.js.map +1 -1
- package/packages/ai/src/lib/generateEntityKeyAttributes.js +32 -8
- package/packages/ai/src/lib/generateEntityKeyAttributes.js.map +1 -1
- package/packages/ai/src/lib/generateEntityScenarioData.js +52 -152
- package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
- package/packages/ai/src/lib/generateEntityScenarios.js +88 -258
- package/packages/ai/src/lib/generateEntityScenarios.js.map +1 -1
- package/packages/ai/src/lib/generateStatementAnalysis.js +46 -71
- package/packages/ai/src/lib/generateStatementAnalysis.js.map +1 -1
- package/packages/ai/src/lib/getConditionalUsagesFromCode.js +13 -8
- package/packages/ai/src/lib/getConditionalUsagesFromCode.js.map +1 -1
- package/packages/ai/src/lib/getLLMCallStats.js +0 -14
- package/packages/ai/src/lib/getLLMCallStats.js.map +1 -1
- package/packages/ai/src/lib/modelInfo.js +15 -0
- package/packages/ai/src/lib/modelInfo.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js +36 -3
- package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityDocumentationGenerator.js +8 -33
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityDocumentationGenerator.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js +35 -41
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js +59 -72
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateEntityDocumentationGenerator.js +8 -27
- package/packages/ai/src/lib/promptGenerators/generateEntityDocumentationGenerator.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js +24 -27
- package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js +21 -22
- package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js.map +1 -1
- package/packages/ai/src/lib/types/index.js +2 -0
- package/packages/ai/src/lib/types/index.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/analyze/src/lib/FileAnalyzer.js +17 -5
- package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +6 -8
- package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +5 -1
- package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
- package/packages/analyze/src/lib/files/analyzeChange.js +21 -9
- package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
- package/packages/analyze/src/lib/files/analyzeEntity.js +10 -4
- package/packages/analyze/src/lib/files/analyzeEntity.js.map +1 -1
- package/packages/analyze/src/lib/files/analyzeInitial.js +21 -9
- package/packages/analyze/src/lib/files/analyzeInitial.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +6 -1
- package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js +9 -1
- package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js +5 -1
- package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateScenarios.js +9 -1
- package/packages/analyze/src/lib/files/scenarios/generateScenarios.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +16 -7
- package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
- package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +28 -21
- package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
- package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.js +18 -11
- package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.js.map +1 -1
- package/packages/generate/src/lib/scenarioComponent.js +5 -3
- package/packages/generate/src/lib/scenarioComponent.js.map +1 -1
- package/packages/utils/index.js +2 -0
- package/packages/utils/index.js.map +1 -1
- package/packages/utils/src/lib/Semaphore.js +40 -0
- package/packages/utils/src/lib/Semaphore.js.map +1 -0
- package/packages/utils/src/lib/frameworks/getNextRoutePath.js +2 -1
- package/packages/utils/src/lib/frameworks/getNextRoutePath.js.map +1 -1
- package/packages/utils/src/lib/frameworks/getRemixRoutePath.js +2 -1
- package/packages/utils/src/lib/frameworks/getRemixRoutePath.js.map +1 -1
- package/packages/utils/src/lib/frameworks/nextRouteFileNameToRoute.js +2 -1
- package/packages/utils/src/lib/frameworks/nextRouteFileNameToRoute.js.map +1 -1
- package/packages/utils/src/lib/frameworks/remixRouteFileNameToRoute.js +1 -0
- package/packages/utils/src/lib/frameworks/remixRouteFileNameToRoute.js.map +1 -1
- package/packages/utils/src/lib/frameworks/sanitizeNextRouteSegments.js +32 -0
- package/packages/utils/src/lib/frameworks/sanitizeNextRouteSegments.js.map +1 -0
- package/analyzer-template/packages/ai/src/lib/generateEntityDataMap.ts +0 -375
- package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-rqv54FUY.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-DqXXjAJ7.js +0 -3
- package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-DU_jxCPD.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/ScenarioPreview-5DY-YIxu.js +0 -6
- package/codeyam-cli/src/webserver/build/client/assets/_index-DvSrcxsk.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-CsaMd9mb.js +0 -10
- package/codeyam-cli/src/webserver/build/client/assets/components-Dj-Ggnl2.js +0 -40
- package/codeyam-cli/src/webserver/build/client/assets/dev.empty-BbR3FwNc.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-L7M9Vr5z.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-C9w-q7P3.js +0 -5
- package/codeyam-cli/src/webserver/build/client/assets/entry.client-CdGoUs8A.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/file-text-B6Er7j5k.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/files-KcDVw1FY.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/git-B9uZ8eSJ.js +0 -12
- package/codeyam-cli/src/webserver/build/client/assets/globals-B0f88RTV.css +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/manifest-fca08d7e.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/root-Cf8VBqIb.js +0 -16
- package/codeyam-cli/src/webserver/build/client/assets/settings-NU_ZquhK.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/simulations-CNaMJ-nR.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/useToast-BRShB17p.js +0 -1
- package/codeyam-cli/src/webserver/build/client/cy-logo-cli.svg +0 -13
- package/codeyam-cli/src/webserver/build/client/favicon.svg +0 -13
- package/codeyam-cli/src/webserver/build/server/assets/index-DHr4rT4u.js +0 -1
- package/codeyam-cli/src/webserver/build/server/assets/server-build-Bi1mj14J.js +0 -166
- package/codeyam-cli/src/webserver/public/cy-logo-cli.svg +0 -13
- package/codeyam-cli/src/webserver/public/favicon.svg +0 -13
- package/packages/ai/src/lib/generateEntityDataMap.js +0 -335
- package/packages/ai/src/lib/generateEntityDataMap.js.map +0 -1
- package/packages/ai/src/lib/promptGenerators/generateEntityDataMapGenerator.js +0 -17
- package/packages/ai/src/lib/promptGenerators/generateEntityDataMapGenerator.js.map +0 -1
|
@@ -41,7 +41,7 @@ export default function generateChangesEntityScenariosGenerator({
|
|
|
41
41
|
const filePath = (attr as any).filePath;
|
|
42
42
|
const entityName = (attr as any).originalEntityName;
|
|
43
43
|
|
|
44
|
-
if (!filePath || !entityName) continue;
|
|
44
|
+
if (!filePath || !entityName) continue;
|
|
45
45
|
|
|
46
46
|
if (!relevantDependentKeyAttributes[filePath]) {
|
|
47
47
|
relevantDependentKeyAttributes[filePath] = {};
|
|
@@ -52,128 +52,112 @@ export default function generateChangesEntityScenariosGenerator({
|
|
|
52
52
|
relevantDependentKeyAttributes[filePath][entityName].push(attr);
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
\`\`\`
|
|
79
|
-
|
|
80
|
-
${
|
|
81
|
-
changedDataStructureFields.length > 0
|
|
82
|
-
? `Changed Data Structure Fields:
|
|
83
|
-
|
|
84
|
-
The following fields in the data structure have changed (type changed, added, or removed):
|
|
85
|
-
|
|
86
|
-
\`\`\`
|
|
55
|
+
const formatKeyAttrs = (attrs: Analysis['metadata']['keyAttributes']) =>
|
|
56
|
+
attrs.map((ka) => ({
|
|
57
|
+
dataStructurePath: ka.dataStructurePath,
|
|
58
|
+
localVariable: ka.internalPath,
|
|
59
|
+
description: ka.description,
|
|
60
|
+
validValueOptions: ka.validValueOptions,
|
|
61
|
+
}));
|
|
62
|
+
|
|
63
|
+
const addedSection =
|
|
64
|
+
addedKeyAttributes?.length > 0
|
|
65
|
+
? JSON.stringify(formatKeyAttrs(addedKeyAttributes), null, 2)
|
|
66
|
+
: 'None';
|
|
67
|
+
|
|
68
|
+
const removedSection =
|
|
69
|
+
removedKeyAttributes?.length > 0
|
|
70
|
+
? JSON.stringify(removedKeyAttributes, null, 2)
|
|
71
|
+
: 'None';
|
|
72
|
+
|
|
73
|
+
const changedFieldsSection =
|
|
74
|
+
changedDataStructureFields.length > 0
|
|
75
|
+
? `
|
|
76
|
+
## Changed Data Structure Fields
|
|
77
|
+
Fields that changed type, were added, or removed:
|
|
78
|
+
\`\`\`json
|
|
87
79
|
${JSON.stringify(changedDataStructureFields, null, 2)}
|
|
88
80
|
\`\`\`
|
|
89
81
|
|
|
90
|
-
**
|
|
91
|
-
- If "stats.visualEntities" changed from an array to a number, update keyAttributeInstructions from "Array of 10 objects" to "10 (count of visual entities)"
|
|
92
|
-
- If a field was removed, remove it from keyAttributeInstructions
|
|
93
|
-
- If a field was added, you may add it to keyAttributeInstructions if relevant for the scenario
|
|
94
|
-
|
|
95
|
-
Fields that did NOT change can retain their existing keyAttributeInstructions.
|
|
96
|
-
|
|
82
|
+
**Update keyAttributeInstructions for affected scenarios** (e.g., if "stats.visualEntities" changed from array to number).
|
|
97
83
|
`
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
84
|
+
: '';
|
|
85
|
+
|
|
86
|
+
const existingScenariosJson = JSON.stringify(
|
|
87
|
+
existingScenarios
|
|
88
|
+
.filter((s) => (error ? !!s.metadata.error : !s.metadata.error))
|
|
89
|
+
.map((s) => ({
|
|
90
|
+
name: s.name,
|
|
91
|
+
description: s.description,
|
|
92
|
+
keyAttributeInstructions: s.metadata.keyAttributeInstructions,
|
|
93
|
+
playwrightInstructions: s.metadata.playwrightInstructions,
|
|
94
|
+
})),
|
|
95
|
+
null,
|
|
96
|
+
2,
|
|
97
|
+
);
|
|
98
|
+
|
|
99
|
+
const diffSection = commitDiff
|
|
100
|
+
? `
|
|
101
|
+
## Code Change (Diff)
|
|
102
|
+
\`\`\`diff
|
|
103
|
+
${commitDiff}
|
|
104
|
+
\`\`\``
|
|
105
|
+
: '';
|
|
106
|
+
|
|
107
|
+
const dependencySection =
|
|
108
|
+
!error &&
|
|
109
|
+
relevantDependentKeyAttributes &&
|
|
110
|
+
Object.keys(relevantDependentKeyAttributes).length > 0
|
|
111
|
+
? `
|
|
112
|
+
## Dependency Key Attributes
|
|
113
|
+
\`\`\`json
|
|
103
114
|
${JSON.stringify(
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
115
|
+
Object.keys(relevantDependentKeyAttributes).reduce((acc: any, path) => {
|
|
116
|
+
acc[path] = Object.keys(relevantDependentKeyAttributes[path]).reduce(
|
|
117
|
+
(entityAcc: any, entityName) => {
|
|
118
|
+
entityAcc[entityName] = relevantDependentKeyAttributes[path][
|
|
119
|
+
entityName
|
|
120
|
+
].map((ka: any) => ({
|
|
121
|
+
dataStructurePath: ka.dataStructurePath,
|
|
122
|
+
localVariable: ka.path || ka.internalPath,
|
|
123
|
+
description: ka.description,
|
|
124
|
+
validValueOptions: ka.validValueOptions,
|
|
125
|
+
}));
|
|
126
|
+
return entityAcc;
|
|
127
|
+
},
|
|
128
|
+
{},
|
|
129
|
+
);
|
|
130
|
+
return acc;
|
|
131
|
+
}, {}),
|
|
110
132
|
null,
|
|
111
133
|
2,
|
|
112
134
|
)}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
Existing Scenarios:
|
|
135
|
+
\`\`\``
|
|
136
|
+
: '';
|
|
116
137
|
|
|
138
|
+
return `## Added Key Attributes
|
|
139
|
+
\`\`\`json
|
|
140
|
+
${addedSection}
|
|
117
141
|
\`\`\`
|
|
118
|
-
${JSON.stringify(
|
|
119
|
-
existingScenarios
|
|
120
|
-
.filter((s) => (error ? !!s.metadata.error : !s.metadata.error))
|
|
121
|
-
.map((s) => ({
|
|
122
|
-
name: s.name,
|
|
123
|
-
description: s.description,
|
|
124
|
-
keyAttributeInstructions: s.metadata.keyAttributeInstructions,
|
|
125
|
-
playwrightInstructions: s.metadata.playwrightInstructions,
|
|
126
|
-
})),
|
|
127
|
-
null,
|
|
128
|
-
2,
|
|
129
|
-
)}
|
|
130
|
-
\`\`\`
|
|
131
|
-
|
|
132
|
-
${
|
|
133
|
-
commitDiff
|
|
134
|
-
? `
|
|
135
|
-
Code Change:
|
|
136
142
|
|
|
143
|
+
## Removed Key Attributes
|
|
144
|
+
\`\`\`json
|
|
145
|
+
${removedSection}
|
|
137
146
|
\`\`\`
|
|
138
|
-
${
|
|
147
|
+
${changedFieldsSection}
|
|
148
|
+
## Current Key Attributes
|
|
149
|
+
\`\`\`json
|
|
150
|
+
${JSON.stringify(formatKeyAttrs(keyAttributes), null, 2)}
|
|
139
151
|
\`\`\`
|
|
140
|
-
`
|
|
141
|
-
: ''
|
|
142
|
-
}
|
|
143
|
-
Function Code:
|
|
144
152
|
|
|
153
|
+
## Existing Scenarios
|
|
154
|
+
\`\`\`json
|
|
155
|
+
${existingScenariosJson}
|
|
145
156
|
\`\`\`
|
|
146
|
-
${
|
|
147
|
-
\`\`\`
|
|
157
|
+
${diffSection}
|
|
148
158
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
? `Key Attributes for Dependencies:
|
|
154
|
-
\`\`\`
|
|
155
|
-
${JSON.stringify(
|
|
156
|
-
Object.keys(relevantDependentKeyAttributes).reduce((acc: any, path) => {
|
|
157
|
-
acc[path] = Object.keys(
|
|
158
|
-
(relevantDependentKeyAttributes as any)[path],
|
|
159
|
-
).reduce((entityAcc: any, entityName) => {
|
|
160
|
-
entityAcc[entityName] = (relevantDependentKeyAttributes as any)[path][
|
|
161
|
-
entityName
|
|
162
|
-
].map((ka: any) => ({
|
|
163
|
-
dataStructurePath: ka.dataStructurePath, // Full path in mockData
|
|
164
|
-
localVariable: ka.path || ka.internalPath, // Local variable name
|
|
165
|
-
description: ka.description,
|
|
166
|
-
validValueOptions: ka.validValueOptions,
|
|
167
|
-
}));
|
|
168
|
-
return entityAcc;
|
|
169
|
-
}, {});
|
|
170
|
-
return acc;
|
|
171
|
-
}, {}),
|
|
172
|
-
null,
|
|
173
|
-
2,
|
|
174
|
-
)}
|
|
175
|
-
\`\`\``
|
|
176
|
-
: ''
|
|
177
|
-
}
|
|
178
|
-
`;
|
|
159
|
+
## Current Code
|
|
160
|
+
\`\`\`typescript
|
|
161
|
+
${entity.code}
|
|
162
|
+
\`\`\`${dependencySection}`;
|
|
179
163
|
}
|
|
@@ -1,35 +1,16 @@
|
|
|
1
1
|
import { Entity } from '~codeyam/types';
|
|
2
2
|
|
|
3
3
|
export default function generateEntityDocumentationGenerator(entity: Entity) {
|
|
4
|
-
return
|
|
5
|
-
|
|
6
|
-
"""
|
|
7
|
-
${entity.code}
|
|
8
|
-
"""
|
|
9
|
-
|
|
10
|
-
What does this code do? Please create documentation for this code.
|
|
11
|
-
|
|
12
|
-
- Start with an overview that describes the overall intent of the code. Be concise in your language. Immediately start with the intent of the code. Here is an example Overview:
|
|
4
|
+
return `## Task
|
|
5
|
+
Document the following code.
|
|
13
6
|
|
|
14
|
-
|
|
15
|
-
|
|
7
|
+
## Code
|
|
8
|
+
\`\`\`typescript
|
|
9
|
+
${entity.code}
|
|
16
10
|
\`\`\`
|
|
17
11
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
- Next, specify the inputs (with details about types, how the input is used, and examples) and expected outputs (with details about types and examples).
|
|
21
|
-
|
|
22
|
-
- Finally, provide examples of how the code can be used with clear inputs and outputs for each example. Provide diverse examples (there's no need to include repetitive examples).
|
|
23
|
-
|
|
24
|
-
Write the documentation as markdown. Be concise. Use bullets when possible. No one wants to read long paragraphs of text.
|
|
25
|
-
|
|
26
|
-
Provide no other text than the documentation in proper markdown using the headers below.
|
|
27
|
-
|
|
28
|
-
## Overview
|
|
29
|
-
|
|
30
|
-
## Inputs
|
|
31
|
-
|
|
32
|
-
## Output
|
|
12
|
+
## Overview Example
|
|
13
|
+
Good: "Displays details about a specific Git commit. Shows the commit message, author, date, and provides a link to GitHub. Users can copy the commit SHA to clipboard."
|
|
33
14
|
|
|
34
|
-
|
|
15
|
+
Bad: "The CommitDetails function takes a commit object..." (mentions the function name)`;
|
|
35
16
|
}
|
|
@@ -11,50 +11,45 @@ export default function generateEntityScenarioDataGenerator(
|
|
|
11
11
|
return incompleteResponse;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
const scenarioJson = JSON.stringify(
|
|
15
|
+
{
|
|
16
|
+
name: scenario.name,
|
|
17
|
+
description: scenario.description,
|
|
18
|
+
keyAttributeInstructions: scenario.metadata.keyAttributeInstructions,
|
|
19
|
+
},
|
|
20
|
+
null,
|
|
21
|
+
2,
|
|
22
|
+
);
|
|
15
23
|
|
|
16
|
-
|
|
17
|
-
\`\`\`
|
|
18
|
-
${JSON.stringify(
|
|
19
|
-
{
|
|
20
|
-
name: scenario.name,
|
|
21
|
-
description: scenario.description,
|
|
22
|
-
keyAttributeInstructions: scenario.metadata.keyAttributeInstructions,
|
|
23
|
-
},
|
|
24
|
-
null,
|
|
25
|
-
2,
|
|
26
|
-
)}
|
|
27
|
-
\`\`\`
|
|
28
|
-
${
|
|
29
|
-
defaultScenarioData
|
|
24
|
+
const defaultDataSection = defaultScenarioData
|
|
30
25
|
? `
|
|
31
|
-
## Default Scenario Data
|
|
32
|
-
|
|
33
|
-
Here is the Default Scenario data. The data generated for this scenario will be merged into this Default Scenario data.
|
|
34
|
-
\`\`\`
|
|
26
|
+
## Default Scenario Data (merge base)
|
|
27
|
+
\`\`\`json
|
|
35
28
|
${JSON.stringify(defaultScenarioData.data, null, 2)}
|
|
36
29
|
\`\`\`
|
|
37
|
-
|
|
38
30
|
`
|
|
39
|
-
: ''
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
\`\`\`
|
|
31
|
+
: '';
|
|
32
|
+
|
|
33
|
+
const mockDataSection = structure.dataForMocks
|
|
34
|
+
? `## mockData Structure
|
|
35
|
+
\`\`\`json
|
|
45
36
|
${JSON.stringify(noErrorAttributes(structure.dataForMocks), null, 2)}
|
|
46
|
-
|
|
47
|
-
`
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
structure.arguments
|
|
53
|
-
? `The argumentsData structure (for the default scenario provide robust values for the entire structure, excluding error attributes unless specifically requested):
|
|
54
|
-
\`\`\`
|
|
37
|
+
\`\`\``
|
|
38
|
+
: '## mockData Structure\nNone—return `{}` for mockData.';
|
|
39
|
+
|
|
40
|
+
const argumentsSection = structure.arguments
|
|
41
|
+
? `## argumentsData Structure
|
|
42
|
+
\`\`\`json
|
|
55
43
|
${JSON.stringify(noErrorAttributes(structure.arguments), null, 2)}
|
|
44
|
+
\`\`\``
|
|
45
|
+
: '## argumentsData Structure\nNone—return `[]` for argumentsData.';
|
|
46
|
+
|
|
47
|
+
return `## Scenario
|
|
48
|
+
\`\`\`json
|
|
49
|
+
${scenarioJson}
|
|
56
50
|
\`\`\`
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
51
|
+
${defaultDataSection}
|
|
52
|
+
${mockDataSection}
|
|
53
|
+
|
|
54
|
+
${argumentsSection}`;
|
|
60
55
|
}
|
package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.ts
CHANGED
|
@@ -19,36 +19,28 @@ export default function generateEntityScenariosGenerator({
|
|
|
19
19
|
(ka) => ka.dependentEntityName,
|
|
20
20
|
);
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
null,
|
|
33
|
-
2,
|
|
34
|
-
)}
|
|
35
|
-
\`\`\`
|
|
36
|
-
|
|
37
|
-
Code:
|
|
38
|
-
\`\`\`
|
|
39
|
-
${entity.code}
|
|
40
|
-
\`\`\`
|
|
22
|
+
const keyAttrsJson = JSON.stringify(
|
|
23
|
+
thisEntityKeyAttributes.map((ka) => ({
|
|
24
|
+
dataStructurePath: ka.dataStructurePath,
|
|
25
|
+
localVariable: ka.internalPath,
|
|
26
|
+
description: ka.description,
|
|
27
|
+
validValueOptions: ka.validValueOptions,
|
|
28
|
+
})),
|
|
29
|
+
null,
|
|
30
|
+
2,
|
|
31
|
+
);
|
|
41
32
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
33
|
+
const dependencySection =
|
|
34
|
+
!error &&
|
|
35
|
+
relevantDependentKeyAttributes &&
|
|
36
|
+
relevantDependentKeyAttributes.length > 0
|
|
37
|
+
? `
|
|
38
|
+
## Dependency Key Attributes
|
|
39
|
+
\`\`\`json
|
|
48
40
|
${JSON.stringify(
|
|
49
41
|
relevantDependentKeyAttributes.map((ka) => ({
|
|
50
|
-
dataStructurePath: ka.dataStructurePath,
|
|
51
|
-
localVariable: ka.internalPath,
|
|
42
|
+
dataStructurePath: ka.dataStructurePath,
|
|
43
|
+
localVariable: ka.internalPath,
|
|
52
44
|
forDependency: ka.dependentEntityName,
|
|
53
45
|
description: ka.description,
|
|
54
46
|
validValueOptions: ka.validValueOptions,
|
|
@@ -57,7 +49,15 @@ ${JSON.stringify(
|
|
|
57
49
|
2,
|
|
58
50
|
)}
|
|
59
51
|
\`\`\``
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
52
|
+
: '';
|
|
53
|
+
|
|
54
|
+
return `## Key Attributes
|
|
55
|
+
\`\`\`json
|
|
56
|
+
${keyAttrsJson}
|
|
57
|
+
\`\`\`
|
|
58
|
+
|
|
59
|
+
## Code
|
|
60
|
+
\`\`\`typescript
|
|
61
|
+
${entity.code}
|
|
62
|
+
\`\`\`${dependencySection}`;
|
|
63
63
|
}
|
|
@@ -55,6 +55,7 @@ export namespace AI {
|
|
|
55
55
|
*/
|
|
56
56
|
export enum Model {
|
|
57
57
|
// OpenAI
|
|
58
|
+
OPENAI_GPT5_1 = 'openai/gpt-5.1',
|
|
58
59
|
OPENAI_GPT5 = 'openai/gpt-5',
|
|
59
60
|
OPENAI_GPT5_MINI = 'openai/gpt-5-mini',
|
|
60
61
|
OPENAI_GPT5_NANO = 'openai/gpt-5-nano',
|
|
@@ -83,6 +84,7 @@ export namespace AI {
|
|
|
83
84
|
// Anthropic
|
|
84
85
|
ANTHROPIC_CLAUDE_4_5_HAIKU = 'anthropic/claude-4.5-haiku',
|
|
85
86
|
ANTHROPIC_CLAUDE_4_5_SONNET = 'anthropic/claude-4.5-sonnet',
|
|
87
|
+
ANTHROPIC_CLAUDE_4_5_OPUS = 'anthropic/claude-4.5-opus',
|
|
86
88
|
|
|
87
89
|
// Deprecated models (kept for backward compatibility)
|
|
88
90
|
PHIND_CODELLAMA = 'phind/codellama',
|
|
@@ -34,6 +34,28 @@ export interface SerializableFunctionResult {
|
|
|
34
34
|
environmentVariables: string[];
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
+
/**
|
|
38
|
+
* Enriched conditional usage that includes traced source data path.
|
|
39
|
+
* The sourceDataPath connects a local variable (used in conditionals) back to
|
|
40
|
+
* the original data attribute from the attributes map.
|
|
41
|
+
*/
|
|
42
|
+
export interface EnrichedConditionalUsage {
|
|
43
|
+
/** The local variable path (e.g., "activeTab") */
|
|
44
|
+
path: string;
|
|
45
|
+
/** The type of condition this attribute is used in */
|
|
46
|
+
conditionType: 'truthiness' | 'comparison' | 'switch';
|
|
47
|
+
/** For comparison conditions, the literal values being compared against */
|
|
48
|
+
comparedValues?: string[];
|
|
49
|
+
/** Where this conditional usage occurs */
|
|
50
|
+
location: 'if' | 'ternary' | 'logical-and' | 'switch';
|
|
51
|
+
/**
|
|
52
|
+
* The traced source data path in the format "scopeName.path"
|
|
53
|
+
* e.g., "useParams().functionCallReturnValue['*']"
|
|
54
|
+
* This connects the local variable to the original data attribute.
|
|
55
|
+
*/
|
|
56
|
+
sourceDataPath?: string;
|
|
57
|
+
}
|
|
58
|
+
|
|
37
59
|
export interface SerializableDataStructure {
|
|
38
60
|
// External function calls array
|
|
39
61
|
externalFunctionCalls: SerializableFunctionCallInfo[];
|
|
@@ -48,6 +70,13 @@ export interface SerializableDataStructure {
|
|
|
48
70
|
equivalentSignatureVariables: Record<string, string>;
|
|
49
71
|
|
|
50
72
|
environmentVariables: string[];
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Conditional usages with source tracing.
|
|
76
|
+
* Maps local variable path to array of enriched usages that include
|
|
77
|
+
* the traced source data path.
|
|
78
|
+
*/
|
|
79
|
+
conditionalUsages?: Record<string, EnrichedConditionalUsage[]>;
|
|
51
80
|
}
|
|
52
81
|
|
|
53
82
|
/**
|
|
@@ -182,3 +211,13 @@ export function getEquivalentSignatureVariables(
|
|
|
182
211
|
): Record<string, string> {
|
|
183
212
|
return dataStructure.equivalentSignatureVariables;
|
|
184
213
|
}
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Get enriched conditional usages with source tracing.
|
|
217
|
+
* Returns the conditional usages map, or empty object if not available.
|
|
218
|
+
*/
|
|
219
|
+
export function getConditionalUsages(
|
|
220
|
+
dataStructure: SerializableDataStructure,
|
|
221
|
+
): Record<string, EnrichedConditionalUsage[]> {
|
|
222
|
+
return dataStructure.conditionalUsages ?? {};
|
|
223
|
+
}
|
|
@@ -278,11 +278,16 @@ export class FileAnalyzer {
|
|
|
278
278
|
|
|
279
279
|
for (let i = 0; i < uniqueRelevantExpressions.length; i++) {
|
|
280
280
|
const relevantExpression = uniqueRelevantExpressions[i];
|
|
281
|
-
|
|
282
|
-
|
|
281
|
+
// Resolve namespace imports for local packages (not external libraries).
|
|
282
|
+
// A module is local if it's not external OR if it resolves to a path outside node_modules
|
|
283
|
+
// (handles local monorepo packages like @codeyam/ui-components).
|
|
284
|
+
// If resolvedFileName is undefined, we can't determine location, so treat as external.
|
|
285
|
+
const isLocalModule =
|
|
283
286
|
resolvedModule &&
|
|
284
|
-
!resolvedModule.isExternalLibraryImport
|
|
285
|
-
|
|
287
|
+
(!resolvedModule.isExternalLibraryImport ||
|
|
288
|
+
(resolvedModule.resolvedFileName &&
|
|
289
|
+
!resolvedModule.resolvedFileName.includes('node_modules')));
|
|
290
|
+
if (relevantExpression.exportName === '*' && isLocalModule) {
|
|
286
291
|
uniqueRelevantExpressions.splice(i, 1);
|
|
287
292
|
uniqueRelevantExpressions.push(
|
|
288
293
|
...this.resolveNamespaceImport(
|
|
@@ -295,11 +300,18 @@ export class FileAnalyzer {
|
|
|
295
300
|
}
|
|
296
301
|
|
|
297
302
|
if (uniqueRelevantExpressions.length > 0) {
|
|
298
|
-
//
|
|
303
|
+
// A module is external if TypeScript says so AND the resolved path is in node_modules.
|
|
304
|
+
// This handles local monorepo packages (like @codeyam/ui-components) which TypeScript
|
|
305
|
+
// marks as isExternalLibraryImport=true because they're symlinked, but actually
|
|
306
|
+
// resolve to files inside the project (not in node_modules).
|
|
307
|
+
const isExternalLibrary =
|
|
308
|
+
(resolvedModule?.isExternalLibraryImport ?? true) &&
|
|
309
|
+
(resolvedModule?.resolvedFileName?.includes('node_modules') ??
|
|
310
|
+
true);
|
|
299
311
|
return [
|
|
300
312
|
importedFilePath,
|
|
301
313
|
{
|
|
302
|
-
externalLibrary:
|
|
314
|
+
externalLibrary: isExternalLibrary,
|
|
303
315
|
resolvedPath: resolvedModule?.resolvedFileName,
|
|
304
316
|
exportInfos: uniqueRelevantExpressions,
|
|
305
317
|
},
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
getReturnValue,
|
|
13
13
|
getSourceEquivalencies,
|
|
14
14
|
getUsageEquivalencies,
|
|
15
|
-
|
|
15
|
+
getConditionalUsages,
|
|
16
16
|
detectWrapperRequirements,
|
|
17
17
|
} from '~codeyam/ai';
|
|
18
18
|
import type { AnalysisOptions } from '../analyzeEntities';
|
|
@@ -94,11 +94,6 @@ export default async function prepareEntityDataStructures(
|
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
96
|
|
|
97
|
-
// Extract conditional usages from the entity code for key attribute detection
|
|
98
|
-
const conditionalUsages = entity.code
|
|
99
|
-
? getConditionalUsagesFromCode(entity.code)
|
|
100
|
-
: {};
|
|
101
|
-
|
|
102
97
|
entity.metadata.isolatedDataStructure = {
|
|
103
98
|
signatureSchema: deduplicateFunctionSchemas(
|
|
104
99
|
isolatedDataStructure.signatureSchema,
|
|
@@ -110,10 +105,8 @@ export default async function prepareEntityDataStructures(
|
|
|
110
105
|
isolatedDataStructure.equivalentSignatureVariables,
|
|
111
106
|
dependencySchemas: clonedDependencySchemas,
|
|
112
107
|
environmentVariables: isolatedDataStructure.environmentVariables,
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
? conditionalUsages
|
|
116
|
-
: undefined,
|
|
108
|
+
// Use enriched conditional usages with source tracing from analysis
|
|
109
|
+
conditionalUsages: isolatedDataStructure.conditionalUsages,
|
|
117
110
|
};
|
|
118
111
|
|
|
119
112
|
// Detect wrapper requirements (Context providers, etc.)
|
|
@@ -290,6 +283,9 @@ async function getEntityDataStructureAndFunctionCalls({
|
|
|
290
283
|
const clonedRawSignature = { ...rawSignature };
|
|
291
284
|
const clonedRawReturnValue = { ...rawReturnValue };
|
|
292
285
|
|
|
286
|
+
// Get enriched conditional usages with source tracing
|
|
287
|
+
const conditionalUsages = getConditionalUsages(dataStructure);
|
|
288
|
+
|
|
293
289
|
const isolatedDataStructure = {
|
|
294
290
|
signatureSchema: deduplicateFunctionSchemas(clonedRawSignature),
|
|
295
291
|
returnValueSchema: deduplicateFunctionSchemas(clonedRawReturnValue),
|
|
@@ -297,6 +293,8 @@ async function getEntityDataStructureAndFunctionCalls({
|
|
|
297
293
|
getEquivalentSignatureVariables(dataStructure),
|
|
298
294
|
dependencySchemas,
|
|
299
295
|
environmentVariables: dataStructure.environmentVariables,
|
|
296
|
+
conditionalUsages:
|
|
297
|
+
Object.keys(conditionalUsages).length > 0 ? conditionalUsages : undefined,
|
|
300
298
|
};
|
|
301
299
|
|
|
302
300
|
const functionCalls: Record<string, string[]> = {};
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
upsertEntities,
|
|
19
19
|
} from '~codeyam/supabase';
|
|
20
20
|
import { getCandidatesReadyForCapture as getAnalysesReadyForCapture } from './dependencyResolver';
|
|
21
|
-
import { awsLog, awsLogDebugLevel } from '~codeyam/utils';
|
|
21
|
+
import { awsLog, awsLogDebugLevel, Semaphore } from '~codeyam/utils';
|
|
22
22
|
|
|
23
23
|
const MAX_CONCURRENT_ANALYSES = 100; // fairly arbitrary, but more isn't necessarily better
|
|
24
24
|
|
|
@@ -133,6 +133,10 @@ export default async function analyzeEntities({
|
|
|
133
133
|
const markedReady = new Set<string>(); // Analyses we've attempted to mark ready
|
|
134
134
|
const analyses: Analysis[] = [];
|
|
135
135
|
|
|
136
|
+
// Semaphore to serialize CPU-intensive Structure phase while allowing
|
|
137
|
+
// I/O-bound KeyAttributes LLM calls to run in parallel
|
|
138
|
+
const structureSemaphore = new Semaphore(1);
|
|
139
|
+
|
|
136
140
|
const analysesAlreadyCompletedAtStart =
|
|
137
141
|
commit?.metadata?.currentRun?.analysesCompleted ?? 0;
|
|
138
142
|
|
|
@@ -442,6 +446,7 @@ export default async function analyzeEntities({
|
|
|
442
446
|
analyzeAsDependency: !allRootEntities.some(
|
|
443
447
|
(e) => e.filePath === entity.filePath && e.name === entity.name,
|
|
444
448
|
),
|
|
449
|
+
structureSemaphore,
|
|
445
450
|
...options,
|
|
446
451
|
force,
|
|
447
452
|
}),
|