@codeyam/codeyam-cli 0.1.0-staging.62d4615 → 0.1.0-staging.73a4bf4
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 +1 -1
- package/analyzer-template/packages/ai/index.ts +1 -0
- package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +14 -0
- package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +101 -0
- package/analyzer-template/packages/ai/src/lib/astScopes/sharedPatterns.ts +28 -0
- package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +6 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +176 -8
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.ts +70 -13
- package/analyzer-template/packages/ai/src/lib/dataStructureChunking.ts +33 -15
- package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +32 -5
- package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +38 -2
- package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionals.ts +359 -142
- package/analyzer-template/packages/ai/src/lib/mergeJsonTypeDefinitions.ts +5 -0
- package/analyzer-template/packages/ai/src/lib/promptGenerators/collapseNullableObjects.ts +118 -0
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.ts +24 -4
- package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +18 -0
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +50 -25
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +153 -76
- package/analyzer-template/packages/database/src/lib/analysisBranchToDb.ts +1 -1
- package/analyzer-template/packages/database/src/lib/analysisToDb.ts +1 -1
- package/analyzer-template/packages/database/src/lib/branchToDb.ts +1 -1
- package/analyzer-template/packages/database/src/lib/commitBranchToDb.ts +1 -1
- package/analyzer-template/packages/database/src/lib/commitToDb.ts +1 -1
- package/analyzer-template/packages/database/src/lib/fileToDb.ts +1 -1
- package/analyzer-template/packages/database/src/lib/kysely/db.ts +6 -0
- package/analyzer-template/packages/database/src/lib/kysely/tables/debugReportsTable.ts +1 -1
- package/analyzer-template/packages/database/src/lib/kysely/tables/labsRequestsTable.ts +52 -0
- package/analyzer-template/packages/database/src/lib/projectToDb.ts +1 -1
- package/analyzer-template/packages/database/src/lib/saveFiles.ts +1 -1
- package/analyzer-template/packages/database/src/lib/scenarioToDb.ts +1 -1
- package/analyzer-template/packages/database/src/lib/userScenarioToDb.ts +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +2 -0
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +3 -0
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts +23 -0
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts.map +1 -0
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
- package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js.map +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts +4 -0
- package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
- package/analyzer-template/packages/types/src/types/ProjectMetadata.ts +7 -1
- package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts +4 -0
- package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +93 -2
- package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
- package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +108 -2
- package/analyzer-template/project/constructMockCode.ts +2 -2
- package/analyzer-template/project/writeMockDataTsx.ts +14 -6
- package/background/src/lib/local/createLocalAnalyzer.js +1 -1
- package/background/src/lib/local/createLocalAnalyzer.js.map +1 -1
- package/background/src/lib/virtualized/project/constructMockCode.js +2 -2
- package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
- package/background/src/lib/virtualized/project/writeMockDataTsx.js +13 -6
- package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
- package/codeyam-cli/scripts/apply-setup.js +1 -1
- package/codeyam-cli/src/cli.js +2 -0
- package/codeyam-cli/src/cli.js.map +1 -1
- package/codeyam-cli/src/codeyam-cli.js +18 -2
- package/codeyam-cli/src/codeyam-cli.js.map +1 -1
- package/codeyam-cli/src/commands/analyze.js +4 -2
- package/codeyam-cli/src/commands/analyze.js.map +1 -1
- package/codeyam-cli/src/commands/baseline.js +2 -0
- package/codeyam-cli/src/commands/baseline.js.map +1 -1
- package/codeyam-cli/src/commands/debug.js +2 -0
- package/codeyam-cli/src/commands/debug.js.map +1 -1
- package/codeyam-cli/src/commands/default.js +31 -20
- package/codeyam-cli/src/commands/default.js.map +1 -1
- package/codeyam-cli/src/commands/detect-universal-mocks.js +2 -0
- package/codeyam-cli/src/commands/detect-universal-mocks.js.map +1 -1
- package/codeyam-cli/src/commands/init.js +49 -257
- package/codeyam-cli/src/commands/init.js.map +1 -1
- package/codeyam-cli/src/commands/memory.js +9 -9
- package/codeyam-cli/src/commands/memory.js.map +1 -1
- package/codeyam-cli/src/commands/recapture.js +2 -0
- package/codeyam-cli/src/commands/recapture.js.map +1 -1
- package/codeyam-cli/src/commands/setup-sandbox.js +2 -0
- package/codeyam-cli/src/commands/setup-sandbox.js.map +1 -1
- package/codeyam-cli/src/commands/setup-simulations.js +284 -0
- package/codeyam-cli/src/commands/setup-simulations.js.map +1 -0
- package/codeyam-cli/src/commands/test-startup.js +2 -0
- package/codeyam-cli/src/commands/test-startup.js.map +1 -1
- package/codeyam-cli/src/commands/verify.js +14 -2
- package/codeyam-cli/src/commands/verify.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +128 -86
- package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
- package/codeyam-cli/src/utils/analyzer.js +7 -0
- package/codeyam-cli/src/utils/analyzer.js.map +1 -1
- package/codeyam-cli/src/utils/backgroundServer.js +107 -23
- package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
- package/codeyam-cli/src/utils/generateReport.js +2 -2
- package/codeyam-cli/src/utils/install-skills.js +43 -63
- package/codeyam-cli/src/utils/install-skills.js.map +1 -1
- package/codeyam-cli/src/utils/labsAutoCheck.js +19 -0
- package/codeyam-cli/src/utils/labsAutoCheck.js.map +1 -0
- package/codeyam-cli/src/utils/progress.js +7 -0
- package/codeyam-cli/src/utils/progress.js.map +1 -1
- package/codeyam-cli/src/utils/requireSimulations.js +10 -0
- package/codeyam-cli/src/utils/requireSimulations.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js +106 -4
- package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js.map +1 -1
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js +95 -2
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js.map +1 -1
- package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js +37 -5
- package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js.map +1 -1
- package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js +23 -3
- package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js.map +1 -1
- package/codeyam-cli/src/utils/ruleReflection/index.js +2 -2
- package/codeyam-cli/src/utils/ruleReflection/index.js.map +1 -1
- package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js +11 -0
- package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js.map +1 -1
- package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js +23 -23
- package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js.map +1 -1
- package/codeyam-cli/src/utils/rules/parser.js +5 -0
- package/codeyam-cli/src/utils/rules/parser.js.map +1 -1
- package/codeyam-cli/src/utils/rules/ruleState.js +10 -10
- package/codeyam-cli/src/utils/rules/ruleState.js.map +1 -1
- package/codeyam-cli/src/utils/rules/staleness.js +6 -6
- package/codeyam-cli/src/utils/rules/staleness.js.map +1 -1
- package/codeyam-cli/src/utils/serverState.js +37 -10
- package/codeyam-cli/src/utils/serverState.js.map +1 -1
- package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +21 -44
- package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
- package/codeyam-cli/src/webserver/app/lib/database.js +14 -3
- package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
- package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
- package/codeyam-cli/src/webserver/backgroundServer.js +50 -0
- package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/CopyButton-D9i_zSlY.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-B86KKU7e.js → EntityItem-BLlhOa3C.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-B5ctlSYt.js → EntityTypeBadge-De5b5pC7.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-BqY8gDAW.js → EntityTypeIcon-CzdG5I7z.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{InlineSpinner-ClaLpuOo.js → InlineSpinner-Bclf8Hka.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-BDhPilK7.js → InteractivePreview-Ce-byqKl.js} +2 -2
- package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-VeqEBv9v.js → LibraryFunctionPreview-DEMHrl7v.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-Bs7Nn1Jr.js → LoadingDots-B1LNGboS.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-Bm3PmcCz.js → LogViewer-B0Ll1DjK.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-C6PKeMYR.js → ReportIssueModal-CVOvmCKb.js} +2 -2
- package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-Gq3Ocjo6.js → SafeScreenshot-L0DWHa_L.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-BNLaXBHR.js → ScenarioViewer-D54Mmpwi.js} +2 -2
- package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-CiwXDxLh.js → TruncatedFilePath-C7PFQfXy.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{_index-B3TDXxnk.js → _index-CKTtYlBU.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{activity.(_tab)-DD1r_QU0.js → activity.(_tab)-CdziRIWU.js} +6 -6
- package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-CPXtdaWm.js +17 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.labs-unlock-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{book-open-PttOB2SF.js → book-open-Ch8b7GyQ.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-TJp6ofnp.js → chevron-down-vJHJExlT.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{chunk-JZWAC4HX-JE9ZIoBl.js → chunk-JZWAC4HX-BEyX4X6_.js} +7 -7
- package/codeyam-cli/src/webserver/build/client/assets/{circle-check-CXhHQYrI.js → circle-check-rwynPZTW.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{copy-6y9ALfGT.js → copy-BBSpeBYf.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-Ca9fAY46.js → createLucideIcon-DHVDauuc.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{dev.empty-C5lqplTC.js → dev.empty-B9_ZqelV.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha._-BOPComvD.js +16 -0
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha.scenarios._scenarioId.fullscreen-CBoafmVs.js → entity._sha.scenarios._scenarioId.fullscreen-Cfw__yQa.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.create-scenario-DGgZjdFg.js → entity._sha_.create-scenario-BIDUUrI3.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-38yPijoD.js → entity._sha_.edit._scenarioId-BEqewwtZ.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entry.client-BSHEfydn.js → entry.client-Dxqz8ygt.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{fileTableUtils-DCPhhSMo.js → fileTableUtils-CYnF5KWN.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{files-Dk8wkAS7.js → files-B_dAq2PQ.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{git-DXnyr8uP.js → git-BHPqH3Ch.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/globals-BJGhRykz.css +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{index-CcsFv748.js → index-DgAAopZk.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{index-ChN9-fAY.js → index-viijWaN6.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/labs-ChoAe3xq.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-CTqLEAGU.js → loader-circle-LGi2eKI5.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/manifest-87493a32.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/memory-D9eA6kTo.js +78 -0
- package/codeyam-cli/src/webserver/build/client/assets/{pause-D6vreykR.js → pause-DxJFmMsK.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/root-C3r0p_7H.js +62 -0
- package/codeyam-cli/src/webserver/build/client/assets/{search-B8VUL8nl.js → search-Cu3QE9E5.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/settings-KH9TdArD.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{simulations-CPoAg7Zo.js → simulations-D9Fkx0-d.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{terminal-BrCP7uQo.js → terminal-dAhIBEcd.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-BZz2NjYa.js → triangle-alert-C4CYTEeP.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{useCustomSizes-DNwUduNu.js → useCustomSizes-CLPnITMB.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-COky1GVF.js → useLastLogLine-DmGI38Et.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{useReportContext-CpZgwliL.js → useReportContext-BK0S88PB.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{useToast-Bv9JFvUO.js → useToast-CJ-JqR0l.js} +1 -1
- package/codeyam-cli/src/webserver/build/server/assets/{index-C0KrUQp-.js → index-CkkmL6r5.js} +1 -1
- package/codeyam-cli/src/webserver/build/server/assets/server-build-iBGjHYtO.js +259 -0
- package/codeyam-cli/src/webserver/build/server/index.js +1 -1
- package/codeyam-cli/src/webserver/build-info.json +5 -5
- package/codeyam-cli/templates/{codeyam:debug.md → codeyam-debug.md} +1 -1
- package/codeyam-cli/templates/codeyam-diagnose.md +481 -0
- package/codeyam-cli/templates/codeyam-memory-hook.sh +14 -14
- package/codeyam-cli/templates/{codeyam:memory.md → codeyam-memory.md} +16 -24
- package/codeyam-cli/templates/{codeyam:new-rule.md → codeyam-new-rule.md} +1 -1
- package/codeyam-cli/templates/{codeyam:setup.md → codeyam-setup.md} +13 -1
- package/codeyam-cli/templates/{codeyam:sim.md → codeyam-sim.md} +1 -1
- package/codeyam-cli/templates/{codeyam:test.md → codeyam-test.md} +1 -1
- package/codeyam-cli/templates/{codeyam:verify.md → codeyam-verify.md} +1 -1
- package/codeyam-cli/templates/rule-notification-hook.py +3 -1
- package/codeyam-cli/templates/rule-reflection-hook.py +265 -66
- package/codeyam-cli/templates/rules-instructions.md +50 -41
- package/package.json +9 -9
- package/packages/ai/index.js +1 -1
- package/packages/ai/index.js.map +1 -1
- package/packages/ai/src/lib/analyzeScope.js +14 -0
- package/packages/ai/src/lib/analyzeScope.js.map +1 -1
- package/packages/ai/src/lib/astScopes/processExpression.js +78 -1
- package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
- package/packages/ai/src/lib/astScopes/sharedPatterns.js +25 -0
- package/packages/ai/src/lib/astScopes/sharedPatterns.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +128 -7
- package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js +59 -11
- package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js.map +1 -1
- package/packages/ai/src/lib/dataStructureChunking.js +26 -11
- package/packages/ai/src/lib/dataStructureChunking.js.map +1 -1
- package/packages/ai/src/lib/generateEntityScenarioData.js +22 -3
- package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
- package/packages/ai/src/lib/generateExecutionFlows.js +16 -2
- package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -1
- package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js +242 -81
- package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js.map +1 -1
- package/packages/ai/src/lib/mergeJsonTypeDefinitions.js +5 -0
- package/packages/ai/src/lib/mergeJsonTypeDefinitions.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js +97 -0
- package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js.map +1 -0
- package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js +17 -2
- package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +11 -1
- package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +42 -13
- package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +123 -67
- package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
- package/packages/database/src/lib/analysisBranchToDb.js +1 -1
- package/packages/database/src/lib/analysisBranchToDb.js.map +1 -1
- package/packages/database/src/lib/analysisToDb.js +1 -1
- package/packages/database/src/lib/analysisToDb.js.map +1 -1
- package/packages/database/src/lib/branchToDb.js +1 -1
- package/packages/database/src/lib/branchToDb.js.map +1 -1
- package/packages/database/src/lib/commitBranchToDb.js +1 -1
- package/packages/database/src/lib/commitBranchToDb.js.map +1 -1
- package/packages/database/src/lib/commitToDb.js +1 -1
- package/packages/database/src/lib/commitToDb.js.map +1 -1
- package/packages/database/src/lib/fileToDb.js +1 -1
- package/packages/database/src/lib/fileToDb.js.map +1 -1
- package/packages/database/src/lib/kysely/db.js +3 -0
- package/packages/database/src/lib/kysely/db.js.map +1 -1
- package/packages/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
- package/packages/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
- package/packages/database/src/lib/projectToDb.js +1 -1
- package/packages/database/src/lib/projectToDb.js.map +1 -1
- package/packages/database/src/lib/saveFiles.js +1 -1
- package/packages/database/src/lib/saveFiles.js.map +1 -1
- package/packages/database/src/lib/scenarioToDb.js +1 -1
- package/packages/database/src/lib/scenarioToDb.js.map +1 -1
- package/packages/utils/src/lib/fs/rsyncCopy.js +93 -2
- package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
- package/scripts/finalize-analyzer.cjs +8 -76
- package/codeyam-cli/src/webserver/build/client/assets/CopyButton-CA3JxPb7.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-DfKzxuoe.js +0 -11
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha._-n38keI1k.js +0 -23
- package/codeyam-cli/src/webserver/build/client/assets/globals-Bh6jH0cL.css +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/labs-BUvfJMNR.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/manifest-d4e77269.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/memory-DCHBwHou.js +0 -76
- package/codeyam-cli/src/webserver/build/client/assets/root-D6oziHts.js +0 -62
- package/codeyam-cli/src/webserver/build/client/assets/settings-B2X7lJgQ.js +0 -1
- package/codeyam-cli/src/webserver/build/server/assets/server-build-C2h1v1XD.js +0 -260
- package/codeyam-cli/templates/codeyam:diagnose.md +0 -803
|
@@ -7,6 +7,7 @@ import { getWipeStats, wipeProject, formatWipeStats, hasExistingAnalyses, } from
|
|
|
7
7
|
import { checkGitClean, getHeadSha, isGitRepo } from "../utils/git.js";
|
|
8
8
|
import { getProjectRoot } from "../state.js";
|
|
9
9
|
import { startBackgroundServer } from "../utils/backgroundServer.js";
|
|
10
|
+
import { requireSimulations } from "../utils/requireSimulations.js";
|
|
10
11
|
/**
|
|
11
12
|
* Prompt user for confirmation.
|
|
12
13
|
*/
|
|
@@ -34,6 +35,7 @@ const baselineCommand = {
|
|
|
34
35
|
},
|
|
35
36
|
},
|
|
36
37
|
handler: async (argv) => {
|
|
38
|
+
requireSimulations();
|
|
37
39
|
header('CodeYam Baseline');
|
|
38
40
|
const progress = new ProgressReporter();
|
|
39
41
|
// Find project root directory
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseline.js","sourceRoot":"","sources":["../../../../src/commands/baseline.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AACrC,OAAO,EACL,KAAK,EACL,MAAM,EACN,IAAI,EACJ,gBAAgB,EAChB,OAAO,EACP,IAAI,EACJ,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,YAAY,EACZ,WAAW,EACX,eAAe,EACf,mBAAmB,GACpB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"baseline.js","sourceRoot":"","sources":["../../../../src/commands/baseline.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ import getFrameworkForFile from "../../../packages/utils/src/lib/getFrameworkFor
|
|
|
9
9
|
import { startBackgroundServer } from "../utils/backgroundServer.js";
|
|
10
10
|
import { ensureFreshAnalyzer, resetProject } from "../utils/analyzer.js";
|
|
11
11
|
import { getLogPath, getProjectPath } from "../utils/sandbox.js";
|
|
12
|
+
import { requireSimulations } from "../utils/requireSimulations.js";
|
|
12
13
|
const debugCommand = {
|
|
13
14
|
command: 'debug <id>',
|
|
14
15
|
describe: 'Setup debug environment for a specific analysis or scenario (auto-detects ID type)',
|
|
@@ -20,6 +21,7 @@ const debugCommand = {
|
|
|
20
21
|
},
|
|
21
22
|
},
|
|
22
23
|
handler: async (argv) => {
|
|
24
|
+
requireSimulations();
|
|
23
25
|
header('CodeYam Debug Setup');
|
|
24
26
|
const { id } = argv;
|
|
25
27
|
let analysisId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../../../src/commands/debug.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EACL,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,WAAW,EACX,YAAY,EACZ,yBAAyB,GAC1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,6BAA6B,GAC9B,MAAM,gBAAgB,CAAC;AACxB,OAAO,mBAAmB,MAAM,4CAA4C,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../../../src/commands/debug.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,17 @@
|
|
|
1
1
|
import * as fs from 'fs';
|
|
2
2
|
import * as path from 'path';
|
|
3
|
+
import chalk from 'chalk';
|
|
3
4
|
import { error, withoutSpinner } from "../utils/progress.js";
|
|
4
5
|
import { requireBranchAndProject, testEnvironment } from "../utils/database.js";
|
|
5
6
|
import { startBackgroundServer } from "../utils/backgroundServer.js";
|
|
7
|
+
import { installClaudeCodeSkills } from "../utils/install-skills.js";
|
|
8
|
+
import initCommand from "./init.js";
|
|
6
9
|
import { getProjectRoot } from "../state.js";
|
|
7
10
|
function logStartMessage(state) {
|
|
8
11
|
console.log();
|
|
9
|
-
console.log(`
|
|
10
|
-
console.log();
|
|
11
|
-
console.log('Run "codeyam
|
|
12
|
-
console.log();
|
|
13
|
-
console.log('Run "codeyam help" for other CLI commands');
|
|
14
|
-
console.log();
|
|
15
|
-
console.log('Run "codeyam" at any time to display this information or re-open the local server');
|
|
16
|
-
console.log();
|
|
17
|
-
console.log(`Visit ${state.url} for the full CodeYam experience`);
|
|
12
|
+
console.log(` Dashboard: ${state.url}`);
|
|
13
|
+
console.log(' Run "codeyam --help" for all commands');
|
|
14
|
+
console.log(chalk.bold(' Run "codeyam" to launch the dashboard at any time'));
|
|
18
15
|
console.log();
|
|
19
16
|
}
|
|
20
17
|
const defaultCommand = {
|
|
@@ -29,11 +26,19 @@ const defaultCommand = {
|
|
|
29
26
|
},
|
|
30
27
|
},
|
|
31
28
|
handler: async (argv) => {
|
|
32
|
-
// Find project root directory
|
|
33
|
-
|
|
29
|
+
// Find project root directory, auto-initializing if needed
|
|
30
|
+
let projectRoot = getProjectRoot();
|
|
34
31
|
if (!projectRoot) {
|
|
35
|
-
|
|
36
|
-
|
|
32
|
+
await initCommand.handler({
|
|
33
|
+
force: false,
|
|
34
|
+
autoInit: true,
|
|
35
|
+
$0: '',
|
|
36
|
+
_: [],
|
|
37
|
+
});
|
|
38
|
+
projectRoot = getProjectRoot();
|
|
39
|
+
if (!projectRoot) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
37
42
|
}
|
|
38
43
|
const configPath = path.join(projectRoot, '.codeyam', 'config.json');
|
|
39
44
|
try {
|
|
@@ -52,22 +57,28 @@ const defaultCommand = {
|
|
|
52
57
|
}
|
|
53
58
|
// Load project and branch from database
|
|
54
59
|
const { project, branch } = await requireBranchAndProject(projectSlug);
|
|
60
|
+
// Ensure skills/hooks are up to date with this CLI version
|
|
61
|
+
const simulationsEnabled = project.metadata?.labs?.simulations ?? false;
|
|
62
|
+
await installClaudeCodeSkills(projectRoot, {
|
|
63
|
+
mode: simulationsEnabled ? 'full' : 'memory',
|
|
64
|
+
});
|
|
55
65
|
// Start background server
|
|
56
|
-
const { url
|
|
66
|
+
const { url } = await startBackgroundServer({
|
|
57
67
|
port: argv.port || 3111,
|
|
58
68
|
rootPath: projectRoot,
|
|
59
69
|
project,
|
|
60
70
|
branch,
|
|
61
71
|
});
|
|
62
|
-
|
|
63
|
-
console.log();
|
|
64
|
-
console.log(`✅ Started CodeYam server in background`);
|
|
65
|
-
}
|
|
66
|
-
logStartMessage({ port: argv.port || 3111, url, pid: process.pid });
|
|
72
|
+
logStartMessage({ url });
|
|
67
73
|
// Auto-open browser
|
|
68
74
|
try {
|
|
69
75
|
const { execSync } = await import('child_process');
|
|
70
|
-
|
|
76
|
+
const openCommand = process.platform === 'darwin'
|
|
77
|
+
? 'open'
|
|
78
|
+
: process.platform === 'win32'
|
|
79
|
+
? 'start ""'
|
|
80
|
+
: 'xdg-open';
|
|
81
|
+
execSync(`${openCommand} "${url}"`, { stdio: 'ignore' });
|
|
71
82
|
}
|
|
72
83
|
catch (e) {
|
|
73
84
|
// Silently fail if open command doesn't work
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default.js","sourceRoot":"","sources":["../../../../src/commands/default.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"default.js","sourceRoot":"","sources":["../../../../src/commands/default.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,11 +6,13 @@ import { detectUniversalMocks } from "../utils/universal-mocks.js";
|
|
|
6
6
|
import { loadProject, upsertProjects } from "../../../packages/database/index.js";
|
|
7
7
|
import { writeMocksToFiles } from "../utils/syncUniversalMocks.js";
|
|
8
8
|
import { getProjectRoot } from "../state.js";
|
|
9
|
+
import { requireSimulations } from "../utils/requireSimulations.js";
|
|
9
10
|
const UNIVERSAL_MOCKS_DIR = 'universal-mocks';
|
|
10
11
|
const detectUniversalMocksCommand = {
|
|
11
12
|
command: 'detect-universal-mocks',
|
|
12
13
|
describe: 'Analyze codebase to detect universal mocks needed for unconfigured startup',
|
|
13
14
|
handler: async () => {
|
|
15
|
+
requireSimulations();
|
|
14
16
|
header('CodeYam Universal Mocks Detection');
|
|
15
17
|
const progress = new ProgressReporter();
|
|
16
18
|
// Find project root directory
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect-universal-mocks.js","sourceRoot":"","sources":["../../../../src/commands/detect-universal-mocks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EACL,KAAK,EACL,MAAM,EACN,IAAI,EACJ,gBAAgB,EAChB,OAAO,EACP,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"detect-universal-mocks.js","sourceRoot":"","sources":["../../../../src/commands/detect-universal-mocks.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,17 +2,12 @@ import * as fs from 'fs/promises';
|
|
|
2
2
|
import * as fsSync from 'fs';
|
|
3
3
|
import * as path from 'path';
|
|
4
4
|
import { execSync } from 'child_process';
|
|
5
|
+
import chalk from 'chalk';
|
|
5
6
|
import { error, header, info, ProgressReporter, success, withoutSpinner, } from "../utils/progress.js";
|
|
6
7
|
import { ensureLocalBranch, ensureProject, getSqlitePath, testEnvironment, } from "../utils/database.js";
|
|
7
|
-
import {
|
|
8
|
-
import { ProjectAnalyzer } from "../../../packages/analyze/index.js";
|
|
9
|
-
import prepareRepo from "../../../background/src/lib/virtualized/project/prepareRepo.js";
|
|
10
|
-
import { createSqliteSchema, getSqliteDatabase, loadAnalyses, loadEntities, loadFiles, } from "../../../packages/database/index.js";
|
|
11
|
-
import getFilesWithEntitiesFromRepo from "../../../background/src/lib/virtualized/project/getFilesWithEntitiesFromRepo.js";
|
|
12
|
-
import createEntitiesAndSortFiles from "../../../background/src/lib/virtualized/project/createEntitiesAndSortFiles.js";
|
|
8
|
+
import { createSqliteSchema, getSqliteDatabase, updateProjectMetadata, } from "../../../packages/database/index.js";
|
|
13
9
|
import { findProjectRoot } from "../utils/project.js";
|
|
14
10
|
import { setProjectRoot } from "../state.js";
|
|
15
|
-
import { populateEntityMetadata } from "../utils/entityMetadata.js";
|
|
16
11
|
import { installClaudeCodeSkills } from "../utils/install-skills.js";
|
|
17
12
|
import { setupClaudeCodeSettings } from "../utils/setupClaudeCodeSettings.js";
|
|
18
13
|
import { getUnapprovedPathsWithGitignore } from "../utils/defaultUnapprovedPaths.js";
|
|
@@ -42,14 +37,8 @@ const initCommand = {
|
|
|
42
37
|
}
|
|
43
38
|
setProjectRoot(projectRoot);
|
|
44
39
|
// Stop any running CodeYam server before reinitializing
|
|
45
|
-
const { running
|
|
40
|
+
const { running } = isServerRunning();
|
|
46
41
|
if (running) {
|
|
47
|
-
if (state) {
|
|
48
|
-
info(`Stopping running CodeYam server (PID: ${state.pid})...`);
|
|
49
|
-
}
|
|
50
|
-
else if (pids && pids.length > 0) {
|
|
51
|
-
info(`Stopping ${pids.length} running CodeYam server process${pids.length > 1 ? 'es' : ''} (PID${pids.length > 1 ? 's' : ''}: ${pids.join(', ')})...`);
|
|
52
|
-
}
|
|
53
42
|
const stopped = killServer();
|
|
54
43
|
if (stopped) {
|
|
55
44
|
success('CodeYam server stopped');
|
|
@@ -62,194 +51,98 @@ const initCommand = {
|
|
|
62
51
|
const configPath = path.join(codeyamDir, 'config.json');
|
|
63
52
|
const progress = new ProgressReporter();
|
|
64
53
|
try {
|
|
65
|
-
// Create
|
|
66
|
-
progress.start('
|
|
54
|
+
// Create .codeyam dir + .gitignore entry
|
|
55
|
+
progress.start('Setting up project scaffolding...');
|
|
67
56
|
await fs.mkdir(codeyamDir, { recursive: true });
|
|
68
|
-
await fs.mkdir(path.join(codeyamDir, 'results'), { recursive: true });
|
|
69
|
-
await fs.mkdir(path.join(codeyamDir, 'captures'), { recursive: true });
|
|
70
|
-
await fs.mkdir(path.join(codeyamDir, 'universal-mocks'), {
|
|
71
|
-
recursive: true,
|
|
72
|
-
});
|
|
73
|
-
progress.succeed('Created .codeyam directory structure');
|
|
74
|
-
// Add .codeyam to .gitignore to prevent committing secrets
|
|
75
|
-
progress.start('Updating .gitignore...');
|
|
76
57
|
await ensureGitignoreEntry(projectRoot, '.codeyam');
|
|
77
|
-
progress.succeed('
|
|
78
|
-
// Generate project slug
|
|
79
|
-
progress.start('Detecting project configuration...');
|
|
58
|
+
progress.succeed('Project scaffolding ready');
|
|
80
59
|
const projectSlug = generateProjectSlug(projectRoot);
|
|
81
60
|
const packageManager = detectPackageManager(projectRoot);
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
info('Make sure your project has a package.json with React dependencies');
|
|
90
|
-
return;
|
|
61
|
+
// Detect webapps (soft — doesn't block init for non-webapp projects)
|
|
62
|
+
let detectedWebapps = [];
|
|
63
|
+
try {
|
|
64
|
+
detectedWebapps = detectWebApps(projectRoot);
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
// Webapp detection is best-effort
|
|
91
68
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
69
|
+
if (detectedWebapps.length > 0) {
|
|
70
|
+
const webappSummary = detectedWebapps
|
|
71
|
+
.map((w) => `${w.path === '.' ? 'Root' : w.path} (${w.framework})`)
|
|
72
|
+
.join(', ');
|
|
73
|
+
info(`Found ${detectedWebapps.length} web application${detectedWebapps.length > 1 ? 's' : ''}: ${webappSummary}`);
|
|
96
74
|
}
|
|
97
|
-
//
|
|
98
|
-
|
|
99
|
-
// progress.start('Scanning for files that use environment variables...');
|
|
100
|
-
// const webappPaths = detectedWebapps.map((w) => w.path);
|
|
101
|
-
// const detectedEnvVars = await detectEnvironmentVariables(
|
|
102
|
-
// projectRoot,
|
|
103
|
-
// webappPaths
|
|
104
|
-
// );
|
|
105
|
-
// if (detectedEnvVars.length > 0) {
|
|
106
|
-
// progress.succeed(
|
|
107
|
-
// `Found ${detectedEnvVars.length} file${detectedEnvVars.length > 1 ? 's' : ''} in webapp${webappPaths.length > 1 ? 's' : ''} using environment variables`
|
|
108
|
-
// );
|
|
109
|
-
// info(` These files will need simple mocks during setup`);
|
|
110
|
-
// } else {
|
|
111
|
-
// progress.succeed('No files in webapps using environment variables');
|
|
112
|
-
// }
|
|
113
|
-
// Create config.json
|
|
114
|
-
progress.start('Writing configuration file...');
|
|
75
|
+
// Config, database, environment validation, and project creation
|
|
76
|
+
progress.start('Configuring project...');
|
|
115
77
|
const config = {
|
|
116
78
|
projectSlug,
|
|
117
79
|
packageManager,
|
|
118
80
|
webapps: detectedWebapps,
|
|
119
|
-
environmentVariables: [],
|
|
81
|
+
environmentVariables: [],
|
|
120
82
|
createdAt: new Date().toISOString(),
|
|
121
83
|
};
|
|
122
84
|
await fs.writeFile(configPath, JSON.stringify(config, null, 2));
|
|
123
|
-
progress.succeed('Created configuration file');
|
|
124
85
|
const sqlitePath = getSqlitePath();
|
|
125
86
|
if (!fsSync.existsSync(sqlitePath)) {
|
|
126
|
-
progress.start('Creating local database...');
|
|
127
87
|
const newDatabase = getSqliteDatabase(sqlitePath);
|
|
128
88
|
await createSqliteSchema(newDatabase);
|
|
129
|
-
progress.succeed('Local database ready');
|
|
130
89
|
}
|
|
131
|
-
// Test database connection and create project
|
|
132
|
-
progress.start('Validating environment...');
|
|
133
90
|
const connectionOk = await withoutSpinner(() => testEnvironment());
|
|
134
91
|
if (!connectionOk) {
|
|
135
92
|
progress.fail('Environment validation failed');
|
|
136
93
|
return;
|
|
137
94
|
}
|
|
138
|
-
progress.succeed('Environment validated');
|
|
139
|
-
// Create project in database
|
|
140
|
-
progress.start('Validating project and analyzer...');
|
|
141
95
|
try {
|
|
142
|
-
const { project
|
|
96
|
+
const { project } = await ensureProject({
|
|
143
97
|
slug: projectSlug,
|
|
144
98
|
packageManager,
|
|
145
99
|
unapprovedPaths: getUnapprovedPathsWithGitignore(projectRoot),
|
|
146
100
|
webapps: detectedWebapps,
|
|
147
101
|
});
|
|
148
|
-
progress.succeed(
|
|
149
|
-
|
|
150
|
-
// Install Claude Code skills for guided setup
|
|
102
|
+
progress.succeed('Project configured');
|
|
103
|
+
// Skills, local branch, and auto-approval
|
|
151
104
|
progress.start('Installing Claude Code skills...');
|
|
152
|
-
const skillsResult = await installClaudeCodeSkills(projectRoot
|
|
105
|
+
const skillsResult = await installClaudeCodeSkills(projectRoot, {
|
|
106
|
+
mode: 'memory',
|
|
107
|
+
});
|
|
108
|
+
const { branch: localBranch } = await ensureLocalBranch(project);
|
|
109
|
+
config.branchId = localBranch.id;
|
|
110
|
+
await fs.writeFile(configPath, JSON.stringify(config, null, 2));
|
|
111
|
+
setupClaudeCodeSettings(projectRoot, { mode: 'memory' });
|
|
153
112
|
if (skillsResult.success) {
|
|
154
|
-
progress.succeed(
|
|
113
|
+
progress.succeed('Claude Code skills installed');
|
|
155
114
|
}
|
|
156
115
|
else {
|
|
157
116
|
progress.warn('Could not install skills');
|
|
158
|
-
info(`Reason: ${skillsResult.error}`);
|
|
159
117
|
}
|
|
160
|
-
//
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
118
|
+
// Disable simulations by default — enable via Labs page or `codeyam setup-simulations`
|
|
119
|
+
try {
|
|
120
|
+
await updateProjectMetadata({
|
|
121
|
+
projectSlug,
|
|
122
|
+
metadataUpdate: { labs: { simulations: false } },
|
|
123
|
+
});
|
|
165
124
|
}
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
await createBaselineEntities(project, localBranch, projectRoot);
|
|
169
|
-
progress.succeed('Baseline entities created');
|
|
170
|
-
// Update config with branch ID for future reference
|
|
171
|
-
config.branchId = localBranch.id;
|
|
172
|
-
await fs.writeFile(configPath, JSON.stringify(config, null, 2));
|
|
173
|
-
// Warm analyzer cache for faster first analysis
|
|
174
|
-
progress.start('Setting up analyzer...');
|
|
175
|
-
await createAnalyzer(projectSlug);
|
|
176
|
-
progress.succeed('Analyzer ready for fast analysis');
|
|
177
|
-
// Cache project for faster subsequent runs
|
|
178
|
-
progress.start('Caching project files...');
|
|
179
|
-
await prepareRepo({
|
|
180
|
-
absoluteProjectRootPath: getProjectPath(projectSlug),
|
|
181
|
-
localProjectPath: projectRoot,
|
|
182
|
-
silent: true,
|
|
183
|
-
});
|
|
184
|
-
progress.succeed('Project cache ready');
|
|
185
|
-
// // Install Claude Code skills for guided setup
|
|
186
|
-
// progress.start('Installing Claude Code skills...');
|
|
187
|
-
// const skillsResult = await installClaudeCodeSkills(projectRoot);
|
|
188
|
-
// if (skillsResult.success) {
|
|
189
|
-
// progress.succeed(`Installed skills to ${skillsResult.skillsPath}/ (templates from ${skillsResult.templatesDir})`);
|
|
190
|
-
// } else {
|
|
191
|
-
// progress.warn('Could not install skills');
|
|
192
|
-
// info(`Reason: ${skillsResult.error}`);
|
|
193
|
-
// }
|
|
194
|
-
// Configure auto-approval for CodeYam commands and skills
|
|
195
|
-
progress.start('Configuring auto-approval permissions...');
|
|
196
|
-
const permissionsConfigured = setupClaudeCodeSettings(projectRoot);
|
|
197
|
-
if (permissionsConfigured) {
|
|
198
|
-
progress.succeed('Auto-approval configured for CodeYam commands and skills');
|
|
199
|
-
}
|
|
200
|
-
else {
|
|
201
|
-
progress.warn('Could not configure auto-approval');
|
|
202
|
-
info('You may need to approve CodeYam commands manually');
|
|
125
|
+
catch {
|
|
126
|
+
// Non-fatal — simulations will default to enabled in the UI if this fails
|
|
203
127
|
}
|
|
204
128
|
// AI Mode: Default to interactive (Claude Code)
|
|
205
|
-
// API key support exists but is not exposed in init flow yet
|
|
206
129
|
config.aiMode = 'interactive';
|
|
207
130
|
}
|
|
208
131
|
catch (err) {
|
|
209
|
-
progress.fail('Failed to create project
|
|
132
|
+
progress.fail('Failed to create project');
|
|
210
133
|
error(err.message);
|
|
211
134
|
return;
|
|
212
135
|
}
|
|
136
|
+
const frameworkInfo = detectedWebapps.length > 0
|
|
137
|
+
? `, ${detectedWebapps.map((w) => w.framework).join(', ')}`
|
|
138
|
+
: '';
|
|
213
139
|
console.log();
|
|
214
|
-
success(
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
info(`Webapp Path: ${detectedWebapps[0].path}`);
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
else {
|
|
223
|
-
info(`Web Applications: ${detectedWebapps.length}`);
|
|
224
|
-
for (const webapp of detectedWebapps) {
|
|
225
|
-
info(` • ${webapp.path === '.' ? 'Root' : webapp.path}: ${webapp.framework}`);
|
|
226
|
-
}
|
|
140
|
+
success(`✨ Initialized ${projectSlug} (${packageManager}${frameworkInfo})`);
|
|
141
|
+
if (!argv.autoInit) {
|
|
142
|
+
console.log();
|
|
143
|
+
console.log(chalk.bold(' Run "codeyam" to start the dashboard'));
|
|
144
|
+
console.log(' Run "codeyam --help" for all commands');
|
|
227
145
|
}
|
|
228
|
-
console.log();
|
|
229
|
-
console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
|
|
230
|
-
console.log();
|
|
231
|
-
success('✨ CodeYam initialization complete!');
|
|
232
|
-
console.log();
|
|
233
|
-
console.log('📋 Next step: Complete setup with Claude Code');
|
|
234
|
-
console.log();
|
|
235
|
-
console.log(' 1. Open this project in Claude Code');
|
|
236
|
-
console.log(' 2. Say to Claude:');
|
|
237
|
-
console.log();
|
|
238
|
-
console.log(' "Claude, can you setup CodeYam?"');
|
|
239
|
-
console.log();
|
|
240
|
-
console.log(' Claude will guide you through:');
|
|
241
|
-
console.log(' • Detecting your project start command');
|
|
242
|
-
console.log(' • Finding dependencies that need mocking');
|
|
243
|
-
console.log(' • Configuring CodeYam to run your project');
|
|
244
|
-
console.log();
|
|
245
|
-
console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
|
|
246
|
-
console.log();
|
|
247
|
-
console.log('💡 Tips:');
|
|
248
|
-
console.log(' • Run "codeyam" to start the dashboard');
|
|
249
|
-
console.log(' • Run "codeyam --help" for all commands');
|
|
250
|
-
console.log(' • Run "codeyam stop" to stop the background server');
|
|
251
|
-
console.log(' • Edit mock files in .codeyam/universal-mocks/');
|
|
252
|
-
console.log();
|
|
253
146
|
}
|
|
254
147
|
catch (err) {
|
|
255
148
|
progress.fail('Failed to initialize project');
|
|
@@ -288,107 +181,6 @@ function detectPackageManager(projectPath) {
|
|
|
288
181
|
return 'npm';
|
|
289
182
|
return 'npm'; // default fallback
|
|
290
183
|
}
|
|
291
|
-
/**
|
|
292
|
-
* Create baseline entities for a project during initialization
|
|
293
|
-
* This populates the database so that subsequent status/analyze commands
|
|
294
|
-
* only show actual changes, not every file as "new"
|
|
295
|
-
*/
|
|
296
|
-
async function createBaselineEntities(project, branch, projectRootPath) {
|
|
297
|
-
// Load project with files to populate project.files
|
|
298
|
-
if (!project.files) {
|
|
299
|
-
project.files = await loadFiles({ projectId: project.id });
|
|
300
|
-
}
|
|
301
|
-
// Load existing entities to preserve version tracking
|
|
302
|
-
const existingEntities = await loadEntities({
|
|
303
|
-
projectId: project.id,
|
|
304
|
-
branchId: branch.id,
|
|
305
|
-
});
|
|
306
|
-
// Create a map of existing entities by (filePath, name)
|
|
307
|
-
const existingEntityMap = new Map();
|
|
308
|
-
if (existingEntities) {
|
|
309
|
-
for (const entity of existingEntities) {
|
|
310
|
-
const key = `${entity.filePath}:${entity.name}`;
|
|
311
|
-
if (!existingEntityMap.has(key)) {
|
|
312
|
-
existingEntityMap.set(key, new Map());
|
|
313
|
-
}
|
|
314
|
-
existingEntityMap.get(key).set(entity.sha, entity);
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
// Load analyses for existing entities
|
|
318
|
-
const existingAnalysesMap = new Map();
|
|
319
|
-
if (existingEntities && existingEntities.length > 0) {
|
|
320
|
-
const analyses = await loadAnalyses({
|
|
321
|
-
entityShas: existingEntities.map((e) => e.sha),
|
|
322
|
-
});
|
|
323
|
-
if (analyses) {
|
|
324
|
-
for (const analysis of analyses) {
|
|
325
|
-
if (!existingAnalysesMap.has(analysis.entitySha)) {
|
|
326
|
-
existingAnalysesMap.set(analysis.entitySha, []);
|
|
327
|
-
}
|
|
328
|
-
existingAnalysesMap.get(analysis.entitySha).push(analysis);
|
|
329
|
-
}
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
// Initialize ProjectAnalyzer and populate project.files with entities
|
|
333
|
-
const projectAnalyzer = await ProjectAnalyzer.from({
|
|
334
|
-
project,
|
|
335
|
-
dirPath: projectRootPath,
|
|
336
|
-
});
|
|
337
|
-
await getFilesWithEntitiesFromRepo({
|
|
338
|
-
project: project,
|
|
339
|
-
projectAnalyzer,
|
|
340
|
-
silent: true,
|
|
341
|
-
});
|
|
342
|
-
// Now create and persist all entities to database
|
|
343
|
-
const { entityMap } = await createEntitiesAndSortFiles({
|
|
344
|
-
project,
|
|
345
|
-
branch,
|
|
346
|
-
projectAnalyzer,
|
|
347
|
-
});
|
|
348
|
-
// Populate project.files with the created entities so populateEntityMetadata can process them
|
|
349
|
-
for (const file of project.files) {
|
|
350
|
-
file.entities = [];
|
|
351
|
-
if (entityMap[file.path]) {
|
|
352
|
-
// Deduplicate entities by SHA (aliases like 'default' can point to same entity)
|
|
353
|
-
const entitiesBySha = new Map();
|
|
354
|
-
Object.values(entityMap[file.path]).forEach((entity) => {
|
|
355
|
-
entitiesBySha.set(entity.sha, entity);
|
|
356
|
-
});
|
|
357
|
-
file.entities = Array.from(entitiesBySha.values());
|
|
358
|
-
// Preserve version tracking for each entity
|
|
359
|
-
for (const entity of file.entities) {
|
|
360
|
-
const key = `${entity.filePath}:${entity.name}`;
|
|
361
|
-
const existingVersions = existingEntityMap.get(key);
|
|
362
|
-
if (existingVersions) {
|
|
363
|
-
// Check if this exact SHA already exists
|
|
364
|
-
const exactMatch = existingVersions.get(entity.sha);
|
|
365
|
-
if (exactMatch) {
|
|
366
|
-
// Exact match - preserve all metadata and analyses
|
|
367
|
-
entity.metadata = exactMatch.metadata;
|
|
368
|
-
entity.analyses = existingAnalysesMap.get(exactMatch.sha) || [];
|
|
369
|
-
continue;
|
|
370
|
-
}
|
|
371
|
-
// Different SHA - check if any previous version has analyses
|
|
372
|
-
const versionWithAnalyses = Array.from(existingVersions.values()).find((v) => existingAnalysesMap.has(v.sha));
|
|
373
|
-
if (versionWithAnalyses) {
|
|
374
|
-
// Set previousVersionWithAnalyses to track where analyses came from
|
|
375
|
-
entity.metadata = entity.metadata || {};
|
|
376
|
-
entity.metadata.previousVersionWithAnalyses =
|
|
377
|
-
versionWithAnalyses.sha;
|
|
378
|
-
entity.metadata.previousCommittedSha =
|
|
379
|
-
versionWithAnalyses.metadata?.isUncommitted === false
|
|
380
|
-
? versionWithAnalyses.sha
|
|
381
|
-
: versionWithAnalyses.metadata?.previousCommittedSha;
|
|
382
|
-
// Inherit analyses for display
|
|
383
|
-
entity.analyses =
|
|
384
|
-
existingAnalysesMap.get(versionWithAnalyses.sha) || [];
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
}
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
await populateEntityMetadata(project.files, projectRootPath, projectAnalyzer);
|
|
391
|
-
}
|
|
392
184
|
/**
|
|
393
185
|
* Ensure a given entry exists in the project's .gitignore file
|
|
394
186
|
* Creates the .gitignore if it doesn't exist
|