@codeyam/codeyam-cli 0.1.0-staging.1 → 0.1.0-staging.28f73cf
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 +8 -7
- 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/generateChangesEntityKeyAttributes.ts +51 -107
- 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 +53 -176
- 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 +52 -6
- package/analyzer-template/packages/analyze/src/lib/asts/nodes/index.ts +2 -1
- package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.ts +238 -0
- package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getDeclaredEntityNode.ts +25 -0
- package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/index.ts +2 -0
- 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/analyze/gatherEntityMap.ts +8 -6
- package/analyzer-template/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.ts +5 -13
- 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/dist/src/lib/s3/getPresignedUrl.d.ts +23 -0
- package/analyzer-template/packages/aws/dist/src/lib/s3/getPresignedUrl.d.ts.map +1 -0
- package/analyzer-template/packages/aws/dist/src/lib/s3/getPresignedUrl.js +30 -0
- package/analyzer-template/packages/aws/dist/src/lib/s3/getPresignedUrl.js.map +1 -0
- package/analyzer-template/packages/aws/package.json +5 -4
- package/analyzer-template/packages/aws/s3/index.ts +4 -0
- package/analyzer-template/packages/aws/src/lib/s3/getPresignedUrl.ts +62 -0
- 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/supabase/src/lib/kysely/db.d.ts +2 -0
- package/analyzer-template/packages/github/dist/supabase/src/lib/kysely/db.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/supabase/src/lib/kysely/db.js +3 -0
- package/analyzer-template/packages/github/dist/supabase/src/lib/kysely/db.js.map +1 -1
- package/analyzer-template/packages/github/dist/supabase/src/lib/kysely/tableRelations.d.ts +2 -0
- package/analyzer-template/packages/github/dist/supabase/src/lib/kysely/tableRelations.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/supabase/src/lib/kysely/tables/debugReportsTable.d.ts +37 -0
- package/analyzer-template/packages/github/dist/supabase/src/lib/kysely/tables/debugReportsTable.d.ts.map +1 -0
- package/analyzer-template/packages/github/dist/supabase/src/lib/kysely/tables/debugReportsTable.js +27 -0
- package/analyzer-template/packages/github/dist/supabase/src/lib/kysely/tables/debugReportsTable.js.map +1 -0
- 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 +5 -3
- 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/supabase/src/lib/kysely/db.ts +6 -0
- package/analyzer-template/packages/supabase/src/lib/kysely/tableRelations.ts +3 -0
- package/analyzer-template/packages/supabase/src/lib/kysely/tables/debugReportsTable.ts +61 -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 +5 -3
- 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 +8 -3
- 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/start.ts +1 -11
- 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 +199 -45
- package/analyzer-template/project/writeUniversalMocks.ts +72 -10
- 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/start.js +1 -8
- package/background/src/lib/virtualized/project/start.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 +144 -28
- package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
- package/background/src/lib/virtualized/project/writeUniversalMocks.js +59 -9
- package/background/src/lib/virtualized/project/writeUniversalMocks.js.map +1 -1
- package/codeyam-cli/scripts/apply-setup.js +288 -0
- package/codeyam-cli/scripts/apply-setup.js.map +1 -0
- package/codeyam-cli/scripts/extract-setup.js +130 -0
- package/codeyam-cli/scripts/extract-setup.js.map +1 -0
- package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js +238 -0
- package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js.map +1 -0
- package/codeyam-cli/src/cli.js +6 -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 +221 -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/report.js +102 -0
- package/codeyam-cli/src/commands/report.js.map +1 -0
- 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/analysisRunner.js +4 -3
- package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
- package/codeyam-cli/src/utils/analyzer.js +30 -0
- package/codeyam-cli/src/utils/analyzer.js.map +1 -1
- package/codeyam-cli/src/utils/backgroundServer.js +25 -5
- package/codeyam-cli/src/utils/backgroundServer.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/fileWatcher.js +75 -5
- package/codeyam-cli/src/utils/fileWatcher.js.map +1 -1
- package/codeyam-cli/src/utils/generateReport.js +219 -0
- package/codeyam-cli/src/utils/generateReport.js.map +1 -0
- package/codeyam-cli/src/utils/install-skills.js +7 -0
- package/codeyam-cli/src/utils/install-skills.js.map +1 -1
- package/codeyam-cli/src/utils/queue/__tests__/job.pidTracking.test.js +1 -0
- package/codeyam-cli/src/utils/queue/__tests__/job.pidTracking.test.js.map +1 -1
- package/codeyam-cli/src/utils/queue/job.js +8 -3
- package/codeyam-cli/src/utils/queue/job.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 +63 -2
- package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
- package/codeyam-cli/src/webserver/backgroundServer.js +15 -35
- package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-D5ZHFomX.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-Dh-FldQK.js → InteractivePreview-XDSzQLOY.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-Dp6DC845.js → LogViewer-CRcT5fOZ.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-BORLgi0X.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-Bual6h18.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/ScenarioPreview-Bi-YUMa-.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-4D2vLLJz.js +5 -0
- package/codeyam-cli/src/webserver/build/client/assets/_index-BC200mfN.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-CxvZPkCv.js +10 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.generate-report-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{chart-column-B2I7jQx2.js → chart-column-B8fb6wnw.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-GwwOAbhw.js → circle-alert-IdsgAK39.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/circle-check-BACUUf75.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/clock-vWeoCemX.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-CS7XDrKv.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/dev.empty-DIOEw_3i.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-1Z6D0fLM.js → entity._sha._-8Els_3Wb.js} +10 -10
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-C3FZJx1w.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-YJz_igar.js +5 -0
- package/codeyam-cli/src/webserver/build/client/assets/entityStatus-BEqj2qBy.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{entityVersioning-DO2gCvXv.js → entityVersioning-Bk_YB1jM.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/entry.client-DiP0q291.js +5 -0
- package/codeyam-cli/src/webserver/build/client/assets/file-text-LM0mgxXE.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/files-Dxh9CcaV.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/git-BXmqrWCH.js +12 -0
- package/codeyam-cli/src/webserver/build/client/assets/globals-BGS74ED-.css +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/html2canvas-pro.esm-XQCGvadH.js +5 -0
- package/codeyam-cli/src/webserver/build/client/assets/index-D-zYbzFZ.js +8 -0
- package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-DN7Vr40D.js → loader-circle-BXPKbHEb.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/manifest-1af162d4.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/root-DB7VgjCY.js +16 -0
- package/codeyam-cli/src/webserver/build/client/assets/{settings-MZc4XdmE.js → settings-5zF_GOcS.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-BQ-02-jB.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/triangle-alert-D7k-ArFa.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-BBlyqxij.js → useLastLogLine-AlhS7g5F.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/useToast-Ddo4UQv7.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{zap-B4gsLUZQ.js → zap-_jw-9DCp.js} +1 -1
- package/codeyam-cli/src/webserver/build/server/assets/index-D4JpXSIO.js +1 -0
- package/codeyam-cli/src/webserver/build/server/assets/server-build-vwbN7n65.js +169 -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 +85 -94
- package/codeyam-cli/templates/debug-command.md +125 -0
- package/package.json +9 -11
- 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/generateChangesEntityKeyAttributes.js +51 -107
- package/packages/ai/src/lib/generateChangesEntityKeyAttributes.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 +53 -176
- 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 +45 -5
- package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
- package/packages/analyze/src/lib/asts/nodes/index.js +2 -1
- package/packages/analyze/src/lib/asts/nodes/index.js.map +1 -1
- package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js +191 -0
- package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js.map +1 -0
- package/packages/analyze/src/lib/asts/sourceFiles/getDeclaredEntityNode.js +16 -0
- package/packages/analyze/src/lib/asts/sourceFiles/getDeclaredEntityNode.js.map +1 -0
- package/packages/analyze/src/lib/asts/sourceFiles/index.js +2 -0
- package/packages/analyze/src/lib/asts/sourceFiles/index.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/analyze/gatherEntityMap.js +8 -2
- package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.js +5 -8
- package/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.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/supabase/src/lib/kysely/db.js +3 -0
- package/packages/supabase/src/lib/kysely/db.js.map +1 -1
- package/packages/supabase/src/lib/kysely/tables/debugReportsTable.js +27 -0
- package/packages/supabase/src/lib/kysely/tables/debugReportsTable.js.map +1 -0
- 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 +5 -3
- 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-GqWwt5wG.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-p0fuyqGQ.js +0 -3
- package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-xwuhwsZH.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/ScenarioPreview-Bl2IRh55.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-M2QuSHKC.js +0 -5
- package/codeyam-cli/src/webserver/build/client/assets/_index-CAVtep9Q.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-CLmzsLsT.js +0 -10
- package/codeyam-cli/src/webserver/build/client/assets/components-CAx5ONX_.js +0 -40
- package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-CgyOwWip.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/dev.empty-DGy3zrli.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-ChAdTrrU.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-D9L7267w.js +0 -5
- package/codeyam-cli/src/webserver/build/client/assets/entry.client-C6FRgjPr.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/files-C3-cQjgv.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/git-Dp4EB9nv.js +0 -12
- package/codeyam-cli/src/webserver/build/client/assets/globals-Da3jt49-.css +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/manifest-172a4629.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/root-COyVTsPq.js +0 -16
- package/codeyam-cli/src/webserver/build/client/assets/search-CvyP_1Lo.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/settings-Hbf8b7J_.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/simulations-BMBi0VzO.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/useToast-C_VxoXTh.js +0 -1
- package/codeyam-cli/src/webserver/build/client/cy-logo-cli.svg +0 -13
- package/codeyam-cli/src/webserver/build/server/assets/index-eAULANMV.js +0 -1
- package/codeyam-cli/src/webserver/build/server/assets/server-build-lutv16q5.js +0 -161
- package/codeyam-cli/src/webserver/public/cy-logo-cli.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
|
@@ -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
|
+
}
|
|
@@ -84,6 +84,17 @@ export class FileAnalyzer {
|
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
+
/**
|
|
88
|
+
* Returns only declared entity nodes (not identifier references).
|
|
89
|
+
* Use this when you need to find entities that can be replaced/mocked.
|
|
90
|
+
*/
|
|
91
|
+
getAllDeclaredEntityNodes() {
|
|
92
|
+
if (!this.sourceFile) return {};
|
|
93
|
+
return lib.asts.sourceFiles.getAllDeclaredEntityNodes({
|
|
94
|
+
sourceFile: this.sourceFile,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
|
|
87
98
|
getNodeCode(node: ts.Node, removeComments = false) {
|
|
88
99
|
if (!this.sourceFile) return '';
|
|
89
100
|
if (removeComments) {
|
|
@@ -138,6 +149,29 @@ export class FileAnalyzer {
|
|
|
138
149
|
});
|
|
139
150
|
}
|
|
140
151
|
|
|
152
|
+
/**
|
|
153
|
+
* Get the code for a declared entity (not identifier references).
|
|
154
|
+
* Use this when you need to find code that can be replaced/mocked.
|
|
155
|
+
*/
|
|
156
|
+
getDeclaredEntityCode(entityName: string, removeComments = false) {
|
|
157
|
+
if (!this.sourceFile) return '';
|
|
158
|
+
const entityNode = lib.asts.sourceFiles.getDeclaredEntityNode({
|
|
159
|
+
entityName,
|
|
160
|
+
sourceFile: this.sourceFile,
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
if (removeComments) {
|
|
164
|
+
const printer = ts.createPrinter({ removeComments: true });
|
|
165
|
+
return printer.printNode(
|
|
166
|
+
ts.EmitHint.Unspecified,
|
|
167
|
+
entityNode,
|
|
168
|
+
this.sourceFile,
|
|
169
|
+
);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
return entityNode.getText(this.sourceFile);
|
|
173
|
+
}
|
|
174
|
+
|
|
141
175
|
getAllExports(): Record<string, ExportedFunction> {
|
|
142
176
|
if (!this.sourceFile) return {};
|
|
143
177
|
return lib.asts.sourceFiles.getAllExports(this.sourceFile);
|
|
@@ -244,11 +278,16 @@ export class FileAnalyzer {
|
|
|
244
278
|
|
|
245
279
|
for (let i = 0; i < uniqueRelevantExpressions.length; i++) {
|
|
246
280
|
const relevantExpression = uniqueRelevantExpressions[i];
|
|
247
|
-
|
|
248
|
-
|
|
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 =
|
|
249
286
|
resolvedModule &&
|
|
250
|
-
!resolvedModule.isExternalLibraryImport
|
|
251
|
-
|
|
287
|
+
(!resolvedModule.isExternalLibraryImport ||
|
|
288
|
+
(resolvedModule.resolvedFileName &&
|
|
289
|
+
!resolvedModule.resolvedFileName.includes('node_modules')));
|
|
290
|
+
if (relevantExpression.exportName === '*' && isLocalModule) {
|
|
252
291
|
uniqueRelevantExpressions.splice(i, 1);
|
|
253
292
|
uniqueRelevantExpressions.push(
|
|
254
293
|
...this.resolveNamespaceImport(
|
|
@@ -261,11 +300,18 @@ export class FileAnalyzer {
|
|
|
261
300
|
}
|
|
262
301
|
|
|
263
302
|
if (uniqueRelevantExpressions.length > 0) {
|
|
264
|
-
//
|
|
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);
|
|
265
311
|
return [
|
|
266
312
|
importedFilePath,
|
|
267
313
|
{
|
|
268
|
-
externalLibrary:
|
|
314
|
+
externalLibrary: isExternalLibrary,
|
|
269
315
|
resolvedPath: resolvedModule?.resolvedFileName,
|
|
270
316
|
exportInfos: uniqueRelevantExpressions,
|
|
271
317
|
},
|
package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.ts
ADDED
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
|
|
3
|
+
interface GetAllDeclaredEntityNodesArgs {
|
|
4
|
+
sourceFile: ts.SourceFile;
|
|
5
|
+
possibleIdentifierNode?: ts.Node;
|
|
6
|
+
entityNode?: ts.Node;
|
|
7
|
+
entities?: { [key: string]: ts.Node };
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Returns all declared entity nodes in a source file.
|
|
12
|
+
*
|
|
13
|
+
* Unlike getAllEntityNodes, this function only returns actual declarations
|
|
14
|
+
* (variables, functions, classes, interfaces, types, enums, exports).
|
|
15
|
+
* It does NOT include identifier references in initializers or call expressions.
|
|
16
|
+
*
|
|
17
|
+
* Use this when you need to find entities that can be replaced/mocked.
|
|
18
|
+
* Use getAllEntityNodes when you need to track all identifiers (e.g., for dependency analysis).
|
|
19
|
+
*/
|
|
20
|
+
export function getAllDeclaredEntityNodes({
|
|
21
|
+
sourceFile,
|
|
22
|
+
possibleIdentifierNode,
|
|
23
|
+
entityNode,
|
|
24
|
+
entities = {},
|
|
25
|
+
}: GetAllDeclaredEntityNodesArgs): { [key: string]: ts.Node } {
|
|
26
|
+
try {
|
|
27
|
+
if (!possibleIdentifierNode) {
|
|
28
|
+
possibleIdentifierNode = sourceFile;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// Handle direct Identifier (e.g., from declaration.name)
|
|
32
|
+
if (ts.isIdentifier(possibleIdentifierNode)) {
|
|
33
|
+
if (!entities[possibleIdentifierNode.text]) {
|
|
34
|
+
entities[possibleIdentifierNode.text] =
|
|
35
|
+
entityNode ?? possibleIdentifierNode;
|
|
36
|
+
}
|
|
37
|
+
return entities;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if (ts.isBindingElement(possibleIdentifierNode)) {
|
|
41
|
+
const lastChild = possibleIdentifierNode.getChildAt(
|
|
42
|
+
possibleIdentifierNode.getChildCount(sourceFile) - 1,
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
if (ts.isIdentifier(lastChild)) {
|
|
46
|
+
entities[lastChild.text] = entityNode;
|
|
47
|
+
} else if (
|
|
48
|
+
ts.isObjectBindingPattern(lastChild) ||
|
|
49
|
+
ts.isArrayBindingPattern(lastChild)
|
|
50
|
+
) {
|
|
51
|
+
entities = {
|
|
52
|
+
...entities,
|
|
53
|
+
...getAllDeclaredEntityNodes({
|
|
54
|
+
sourceFile,
|
|
55
|
+
possibleIdentifierNode: lastChild,
|
|
56
|
+
entityNode,
|
|
57
|
+
entities,
|
|
58
|
+
}),
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
return entities;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
possibleIdentifierNode.forEachChild((child) => {
|
|
65
|
+
try {
|
|
66
|
+
const safeEntityNode = entityNode ?? child;
|
|
67
|
+
|
|
68
|
+
// For VariableDeclaration, only traverse the name (not the initializer)
|
|
69
|
+
// This prevents registering identifier references as declarations
|
|
70
|
+
if (ts.isVariableDeclaration(child)) {
|
|
71
|
+
entities = {
|
|
72
|
+
...getAllDeclaredEntityNodes({
|
|
73
|
+
sourceFile,
|
|
74
|
+
possibleIdentifierNode: child.name,
|
|
75
|
+
entityNode: safeEntityNode,
|
|
76
|
+
entities,
|
|
77
|
+
}),
|
|
78
|
+
...entities,
|
|
79
|
+
};
|
|
80
|
+
} else if (
|
|
81
|
+
ts.isBindingElement(child) ||
|
|
82
|
+
ts.isModuleDeclaration(child) ||
|
|
83
|
+
ts.isNamedExports(child)
|
|
84
|
+
) {
|
|
85
|
+
entities = {
|
|
86
|
+
...getAllDeclaredEntityNodes({
|
|
87
|
+
sourceFile,
|
|
88
|
+
possibleIdentifierNode: child,
|
|
89
|
+
entityNode: safeEntityNode,
|
|
90
|
+
entities,
|
|
91
|
+
}),
|
|
92
|
+
...entities,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
if (ts.isVariableDeclarationList(child)) {
|
|
97
|
+
child.declarations.forEach((declaration) => {
|
|
98
|
+
entities = {
|
|
99
|
+
...getAllDeclaredEntityNodes({
|
|
100
|
+
sourceFile,
|
|
101
|
+
possibleIdentifierNode: declaration.name,
|
|
102
|
+
entityNode: safeEntityNode,
|
|
103
|
+
entities,
|
|
104
|
+
}),
|
|
105
|
+
...entities,
|
|
106
|
+
};
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
if (ts.isVariableStatement(child)) {
|
|
111
|
+
entities = {
|
|
112
|
+
...getAllDeclaredEntityNodes({
|
|
113
|
+
sourceFile,
|
|
114
|
+
possibleIdentifierNode: child.declarationList,
|
|
115
|
+
entityNode: safeEntityNode,
|
|
116
|
+
entities,
|
|
117
|
+
}),
|
|
118
|
+
...entities,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
if (ts.isObjectBindingPattern(child)) {
|
|
123
|
+
const entityNodes = child.elements.reduce((acc, element) => {
|
|
124
|
+
return {
|
|
125
|
+
...getAllDeclaredEntityNodes({
|
|
126
|
+
sourceFile,
|
|
127
|
+
possibleIdentifierNode: element,
|
|
128
|
+
entityNode: safeEntityNode,
|
|
129
|
+
entities,
|
|
130
|
+
}),
|
|
131
|
+
...acc,
|
|
132
|
+
};
|
|
133
|
+
}, {});
|
|
134
|
+
|
|
135
|
+
for (const key in entityNodes) {
|
|
136
|
+
entities[key] = safeEntityNode;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
if (ts.isArrayBindingPattern(child)) {
|
|
141
|
+
entities = {
|
|
142
|
+
...entities,
|
|
143
|
+
...child.elements.reduce((acc, element) => {
|
|
144
|
+
return {
|
|
145
|
+
...getAllDeclaredEntityNodes({
|
|
146
|
+
sourceFile,
|
|
147
|
+
possibleIdentifierNode: element,
|
|
148
|
+
entityNode: safeEntityNode,
|
|
149
|
+
entities,
|
|
150
|
+
}),
|
|
151
|
+
...acc,
|
|
152
|
+
};
|
|
153
|
+
}, {}),
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
if (
|
|
158
|
+
ts.isFunctionDeclaration(child) ||
|
|
159
|
+
ts.isTypeAliasDeclaration(child) ||
|
|
160
|
+
ts.isInterfaceDeclaration(child) ||
|
|
161
|
+
ts.isClassDeclaration(child) ||
|
|
162
|
+
ts.isEnumDeclaration(child)
|
|
163
|
+
) {
|
|
164
|
+
if (!entities[child.name?.text ?? 'default']) {
|
|
165
|
+
entities[child.name?.text ?? 'default'] = safeEntityNode;
|
|
166
|
+
|
|
167
|
+
if (ts.isFunctionDeclaration(child) && child.modifiers) {
|
|
168
|
+
const isDefaultExport =
|
|
169
|
+
child.modifiers.some(
|
|
170
|
+
(modifier) => modifier.kind === ts.SyntaxKind.DefaultKeyword,
|
|
171
|
+
) &&
|
|
172
|
+
child.modifiers.some(
|
|
173
|
+
(modifier) => modifier.kind === ts.SyntaxKind.ExportKeyword,
|
|
174
|
+
);
|
|
175
|
+
|
|
176
|
+
if (isDefaultExport) {
|
|
177
|
+
entities['default'] = safeEntityNode;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
if (ts.isExportDeclaration(child)) {
|
|
184
|
+
if (child.exportClause) {
|
|
185
|
+
entities = {
|
|
186
|
+
...getAllDeclaredEntityNodes({
|
|
187
|
+
sourceFile,
|
|
188
|
+
possibleIdentifierNode: child.exportClause,
|
|
189
|
+
entityNode: safeEntityNode,
|
|
190
|
+
entities,
|
|
191
|
+
}),
|
|
192
|
+
...entities,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
if (ts.isExportAssignment(child)) {
|
|
198
|
+
// For declared entities, always point to the export statement itself
|
|
199
|
+
// (not the original declaration) so mock replacement works correctly.
|
|
200
|
+
// e.g., for `export default prisma;`, we want to replace the export
|
|
201
|
+
// statement, not the prisma variable declaration.
|
|
202
|
+
entities['default'] = safeEntityNode;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
if (ts.isExportSpecifier(child)) {
|
|
206
|
+
const nameText = child.name.getText(sourceFile);
|
|
207
|
+
if (child.propertyName) {
|
|
208
|
+
const propertyNameText = child.propertyName.getText(sourceFile);
|
|
209
|
+
entities[nameText] = entities[propertyNameText] ?? safeEntityNode;
|
|
210
|
+
if (propertyNameText !== 'default' && !entities[propertyNameText]) {
|
|
211
|
+
entities[propertyNameText] = safeEntityNode;
|
|
212
|
+
}
|
|
213
|
+
} else {
|
|
214
|
+
entities[nameText] = entities[nameText] ?? safeEntityNode;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
} catch (e) {
|
|
218
|
+
console.log(
|
|
219
|
+
'CodeYam Error: Error Getting All Declared Entity Nodes Child',
|
|
220
|
+
ts.SyntaxKind[child.kind],
|
|
221
|
+
child.getText(sourceFile),
|
|
222
|
+
e,
|
|
223
|
+
);
|
|
224
|
+
throw e;
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
|
|
228
|
+
return entities;
|
|
229
|
+
} catch (e) {
|
|
230
|
+
console.log(
|
|
231
|
+
'CodeYam Error: Error Getting All Declared Entity Nodes',
|
|
232
|
+
ts.SyntaxKind[possibleIdentifierNode.kind],
|
|
233
|
+
possibleIdentifierNode.getText(sourceFile),
|
|
234
|
+
e,
|
|
235
|
+
);
|
|
236
|
+
throw e;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import * as lib from '../../index';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Get the AST node for a declared entity by name.
|
|
6
|
+
* Unlike getEntityNode, this only finds actual declarations (not identifier references).
|
|
7
|
+
*/
|
|
8
|
+
export function getDeclaredEntityNode({
|
|
9
|
+
entityName,
|
|
10
|
+
sourceFile,
|
|
11
|
+
}: {
|
|
12
|
+
entityName: string;
|
|
13
|
+
sourceFile: ts.SourceFile;
|
|
14
|
+
}) {
|
|
15
|
+
const entityNodes = lib.asts.sourceFiles.getAllDeclaredEntityNodes({
|
|
16
|
+
sourceFile,
|
|
17
|
+
});
|
|
18
|
+
const entityNode = entityNodes[entityName];
|
|
19
|
+
|
|
20
|
+
if (!entityNode) {
|
|
21
|
+
throw new Error('getDeclaredEntityNode: Entity not found');
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return entityNode;
|
|
25
|
+
}
|
|
@@ -11,7 +11,9 @@ export { getSourceFilesForAllImports } from './getSourceFilesForAllImports';
|
|
|
11
11
|
export { getImportMappings } from './getImportMappings';
|
|
12
12
|
export { getAllEntities } from './getAllEntities';
|
|
13
13
|
export { getAllEntityNodes } from './getAllEntityNodes';
|
|
14
|
+
export { getAllDeclaredEntityNodes } from './getAllDeclaredEntityNodes';
|
|
14
15
|
export { getEntityNode } from './getEntityNode';
|
|
16
|
+
export { getDeclaredEntityNode } from './getDeclaredEntityNode';
|
|
15
17
|
export { getAllExports } from './getAllExports';
|
|
16
18
|
export { getAllExportedNodes } from './getAllExportedNodes';
|
|
17
19
|
export { getImportsAnalysis } from './getImportsAnalysis';
|
|
@@ -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
|
}),
|