@codeyam/codeyam-cli 0.1.0-staging.036391e → 0.1.0-staging.03e0fb2
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 +14 -14
- package/analyzer-template/packages/ai/index.ts +1 -0
- package/analyzer-template/packages/ai/package.json +1 -1
- 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/completionCall.ts +102 -113
- package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +408 -13
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.ts +70 -19
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.ts +35 -0
- package/analyzer-template/packages/ai/src/lib/dataStructureChunking.ts +40 -13
- package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +32 -5
- package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +134 -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/asts/nodes/getNodeType.ts +1 -0
- 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/aws/package.json +10 -10
- 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/tables/debugReportsTable.ts +1 -1
- 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/tables/debugReportsTable.d.ts +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +98 -3
- 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 +121 -3
- package/analyzer-template/project/constructMockCode.ts +34 -7
- package/analyzer-template/project/orchestrateCapture.ts +4 -1
- package/analyzer-template/project/writeScenarioComponents.ts +76 -12
- 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 +30 -7
- package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
- package/background/src/lib/virtualized/project/orchestrateCapture.js +4 -1
- package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
- package/background/src/lib/virtualized/project/writeScenarioComponents.js +56 -7
- package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
- package/codeyam-cli/scripts/apply-setup.js +1 -1
- package/codeyam-cli/src/cli.js +31 -24
- 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/init.js +49 -257
- package/codeyam-cli/src/commands/init.js.map +1 -1
- package/codeyam-cli/src/commands/memory.js +95 -81
- 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__/npmVersionCheck.test.js +185 -0
- package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js.map +1 -0
- 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 +90 -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 +0 -29
- package/codeyam-cli/src/utils/labsAutoCheck.js.map +1 -1
- package/codeyam-cli/src/utils/npmVersionCheck.js +76 -0
- package/codeyam-cli/src/utils/npmVersionCheck.js.map +1 -0
- package/codeyam-cli/src/utils/progress.js +7 -0
- package/codeyam-cli/src/utils/progress.js.map +1 -1
- package/codeyam-cli/src/utils/requireSimulations.js +10 -0
- package/codeyam-cli/src/utils/requireSimulations.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js +7 -8
- package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js.map +1 -1
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js +1 -1
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js.map +1 -1
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js +0 -1
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js.map +1 -1
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js +97 -6
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js.map +1 -1
- package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js +4 -6
- package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js.map +1 -1
- package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js +3 -3
- package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js.map +1 -1
- package/codeyam-cli/src/utils/rules/__tests__/parser.test.js +83 -0
- package/codeyam-cli/src/utils/rules/__tests__/parser.test.js.map +1 -0
- package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js +118 -0
- package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js.map +1 -0
- package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js +72 -0
- package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js.map +1 -0
- 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/__tests__/sourceFiles.test.js +76 -0
- package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js.map +1 -0
- package/codeyam-cli/src/utils/rules/index.js +1 -0
- package/codeyam-cli/src/utils/rules/index.js.map +1 -1
- package/codeyam-cli/src/utils/rules/parser.js +19 -4
- package/codeyam-cli/src/utils/rules/parser.js.map +1 -1
- package/codeyam-cli/src/utils/rules/pathMatcher.js +34 -3
- package/codeyam-cli/src/utils/rules/pathMatcher.js.map +1 -1
- package/codeyam-cli/src/utils/rules/rulePlacement.js +65 -0
- package/codeyam-cli/src/utils/rules/rulePlacement.js.map +1 -0
- 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/sourceFiles.js +43 -0
- package/codeyam-cli/src/utils/rules/sourceFiles.js.map +1 -0
- 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/utils/simulationGateMiddleware.js +159 -0
- package/codeyam-cli/src/utils/simulationGateMiddleware.js.map +1 -0
- package/codeyam-cli/src/utils/syncMocksMiddleware.js +5 -24
- package/codeyam-cli/src/utils/syncMocksMiddleware.js.map +1 -1
- package/codeyam-cli/src/utils/transcriptPruning.js +67 -0
- package/codeyam-cli/src/utils/transcriptPruning.js.map +1 -0
- package/codeyam-cli/src/utils/versionInfo.js +46 -0
- package/codeyam-cli/src/utils/versionInfo.js.map +1 -1
- package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js +66 -0
- package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js.map +1 -0
- package/codeyam-cli/src/webserver/app/lib/database.js +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 +36 -7
- package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
- package/codeyam-cli/src/webserver/bootstrap.js +11 -0
- package/codeyam-cli/src/webserver/bootstrap.js.map +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{CopyButton-CA3JxPb7.js → CopyButton-CtmbP4Gl.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-B86KKU7e.js → EntityItem-DlMph_Hm.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-B5ctlSYt.js → EntityTypeBadge-B-0PjGOU.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-BqY8gDAW.js → EntityTypeIcon-DN9eiJAO.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{InlineSpinner-ClaLpuOo.js → InlineSpinner-C1rIyZdV.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-BDhPilK7.js → InteractivePreview-rE_fI2h2.js} +2 -2
- package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-VeqEBv9v.js → LibraryFunctionPreview-CnatsCw2.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-Bs7Nn1Jr.js → LoadingDots-CSP6DZrh.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-Bm3PmcCz.js → LogViewer-CMK8Q7yk.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-C6PKeMYR.js → ReportIssueModal-TCV_HBjy.js} +2 -2
- package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-Gq3Ocjo6.js → SafeScreenshot-CG2uh31y.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-BNLaXBHR.js → ScenarioViewer-CU_TDYd8.js} +2 -2
- package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-CiwXDxLh.js → TruncatedFilePath-D7IoaWUW.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{_index-B3TDXxnk.js → _index-B8z7mjR-.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{activity.(_tab)-BtBFH820.js → activity.(_tab)-DZu78RI1.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-Dm5RS9il.js +22 -0
- package/codeyam-cli/src/webserver/build/client/assets/{book-open-PttOB2SF.js → book-open-Bp5FLkd4.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-TJp6ofnp.js → chevron-down-DQJA9f4o.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{chunk-JZWAC4HX-JE9ZIoBl.js → chunk-JZWAC4HX-7VptmeIr.js} +9 -9
- package/codeyam-cli/src/webserver/build/client/assets/{circle-check-CXhHQYrI.js → circle-check-B6C4LY9o.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{copy-6y9ALfGT.js → copy-6nzYCu0G.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-Ca9fAY46.js → createLucideIcon-D-QUFOwe.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{dev.empty-C5lqplTC.js → dev.empty-DmzSmblj.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-n38keI1k.js → entity._sha._-C6PQhwY5.js} +9 -9
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha.scenarios._scenarioId.fullscreen-CBoafmVs.js → entity._sha.scenarios._scenarioId.fullscreen-DVTcUnur.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.create-scenario-DGgZjdFg.js → entity._sha_.create-scenario-BVgNO76F.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-38yPijoD.js → entity._sha_.edit._scenarioId-C7ysA4Jq.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entry.client-BSHEfydn.js → entry.client-CU6EUArK.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{fileTableUtils-DCPhhSMo.js → fileTableUtils-EWpfFU4X.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{files-0N0YJQv7.js → files-CrxAoWIL.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{git-DXnyr8uP.js → git-BldHtKeW.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/globals-CLmFdUae.css +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{index-ChN9-fAY.js → index-7-1FmlHo.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{index-CcsFv748.js → index-DuYcwYp_.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/labs-CPPVOSWB.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-CTqLEAGU.js → loader-circle-BnDcD54R.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/manifest-717e346a.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/memory-0wMU4KXe.js +93 -0
- package/codeyam-cli/src/webserver/build/client/assets/{pause-D6vreykR.js → pause-DhQX2g22.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/root-DqfSDjyQ.js +62 -0
- package/codeyam-cli/src/webserver/build/client/assets/{search-B8VUL8nl.js → search-DborVoKD.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/settings-BWunYSXt.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{simulations-CPoAg7Zo.js → simulations-BtrtCYJg.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{terminal-BrCP7uQo.js → terminal-Bs4NC-VZ.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-BZz2NjYa.js → triangle-alert-DTf3Jojp.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{useCustomSizes-DNwUduNu.js → useCustomSizes-D_bDZyDU.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-COky1GVF.js → useLastLogLine-DZp6rrQD.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{useReportContext-CpZgwliL.js → useReportContext-BsQb6rFd.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{useToast-Bv9JFvUO.js → useToast-BOur3mUv.js} +1 -1
- package/codeyam-cli/src/webserver/build/server/assets/{index-DV1ykEI6.js → index-B8jmgmn2.js} +1 -1
- package/codeyam-cli/src/webserver/build/server/assets/server-build-9OU4lmvL.js +285 -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 -3
- 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/hooks/staleness-check.sh +43 -0
- package/codeyam-cli/templates/prompts/conversation-guidance.txt +44 -0
- package/codeyam-cli/templates/prompts/conversation-prompt.txt +28 -0
- package/codeyam-cli/templates/prompts/interruption-prompt.txt +31 -0
- package/codeyam-cli/templates/prompts/stale-rules-prompt.txt +24 -0
- package/codeyam-cli/templates/rule-notification-hook.py +44 -17
- package/codeyam-cli/templates/rule-reflection-hook.py +88 -31
- package/codeyam-cli/templates/rules-instructions.md +45 -90
- package/package.json +12 -12
- 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/completionCall.js +0 -5
- package/packages/ai/src/lib/completionCall.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +341 -10
- package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js +59 -17
- package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js.map +1 -1
- package/packages/ai/src/lib/dataStructureChunking.js +30 -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 +97 -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/asts/nodes/getNodeType.js +1 -0
- package/packages/analyze/src/lib/asts/nodes/getNodeType.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/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 +98 -3
- package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
- package/scripts/finalize-analyzer.cjs +8 -76
- package/codeyam-cli/src/commands/detect-universal-mocks.js +0 -118
- package/codeyam-cli/src/commands/detect-universal-mocks.js.map +0 -1
- package/codeyam-cli/src/commands/list.js +0 -31
- package/codeyam-cli/src/commands/list.js.map +0 -1
- package/codeyam-cli/src/commands/webapp-info.js +0 -146
- package/codeyam-cli/src/commands/webapp-info.js.map +0 -1
- package/codeyam-cli/src/utils/universal-mocks.js +0 -152
- package/codeyam-cli/src/utils/universal-mocks.js.map +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-DfKzxuoe.js +0 -11
- package/codeyam-cli/src/webserver/build/client/assets/globals-DoeDFXZN.css +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/labs-CmBYA0PH.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/manifest-76786b8e.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/memory-CrNQfdMO.js +0 -76
- package/codeyam-cli/src/webserver/build/client/assets/root-QAY34PIo.js +0 -62
- package/codeyam-cli/src/webserver/build/client/assets/settings-eBI36Yv5.js +0 -1
- package/codeyam-cli/src/webserver/build/server/assets/server-build-BrcVrUEv.js +0 -260
- package/codeyam-cli/templates/codeyam-stop-hook.sh +0 -284
- package/codeyam-cli/templates/codeyam:diagnose.md +0 -805
- /package/codeyam-cli/src/webserver/build/client/assets/{api.labs-survey-l0sNRNKZ.js → api.rule-path-l0sNRNKZ.js} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AnalysisBranch } from '~codeyam/types';
|
|
2
2
|
import { DbAnalysisBranch } from './kysely/tableRelations';
|
|
3
|
-
|
|
3
|
+
const randomUUID = () => crypto.randomUUID();
|
|
4
4
|
import { AnalysisBranchesTable } from './kysely/tables/analysisBranchesTable';
|
|
5
5
|
import { type Insertable } from 'kysely';
|
|
6
6
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Analysis } from '~codeyam/types';
|
|
2
2
|
import { type Insertable } from 'kysely';
|
|
3
3
|
import { AnalysesTable } from './kysely/tables/analysesTable';
|
|
4
|
-
|
|
4
|
+
const randomUUID = () => crypto.randomUUID();
|
|
5
5
|
|
|
6
6
|
export default function analysisToDb(
|
|
7
7
|
analysis: Analysis,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Branch } from '~codeyam/types';
|
|
2
2
|
import { type Insertable } from 'kysely';
|
|
3
3
|
import { BranchesTable } from './kysely/tables/branchesTable';
|
|
4
|
-
|
|
4
|
+
const randomUUID = () => crypto.randomUUID();
|
|
5
5
|
|
|
6
6
|
export default function branchToDb(branch: Branch): Insertable<BranchesTable> {
|
|
7
7
|
const { id, projectId, activeAt, contentChangedAt, metadata, ...remaining } =
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CommitBranch } from '~codeyam/types';
|
|
2
2
|
import { type Insertable } from 'kysely';
|
|
3
|
-
|
|
3
|
+
const randomUUID = () => crypto.randomUUID();
|
|
4
4
|
import { CommitBranchesTable } from './kysely/tables/commitBranchesTable';
|
|
5
5
|
|
|
6
6
|
export default function commitBranchToDb(
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Commit } from '~codeyam/types';
|
|
2
2
|
import { CommitsTable } from './kysely/tables/commitsTable';
|
|
3
3
|
import { type Insertable } from 'kysely';
|
|
4
|
-
|
|
4
|
+
const randomUUID = () => crypto.randomUUID();
|
|
5
5
|
|
|
6
6
|
export default function commitToDb(
|
|
7
7
|
commit: Commit,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { File } from '~codeyam/types';
|
|
2
2
|
import { type Insertable } from 'kysely';
|
|
3
3
|
import { FilesTable } from './kysely/tables/filesTable';
|
|
4
|
-
|
|
4
|
+
const randomUUID = () => crypto.randomUUID();
|
|
5
5
|
|
|
6
6
|
export default function fileToDb(file: File): Insertable<FilesTable> {
|
|
7
7
|
return {
|
|
@@ -6,7 +6,7 @@ import { schemaField, defaultNow } from '../schemaHelpers';
|
|
|
6
6
|
/**
|
|
7
7
|
* Metadata for a debug bundle upload.
|
|
8
8
|
* Note: "bundle" refers to the tarball upload (base + delta).
|
|
9
|
-
* The markdown "debug report" from /codeyam
|
|
9
|
+
* The markdown "debug report" from /codeyam-diagnose is stored in feedback.debugReport.
|
|
10
10
|
*/
|
|
11
11
|
interface DebugBundleMetadata {
|
|
12
12
|
timestamp: string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Project } from '~codeyam/types';
|
|
2
2
|
import { type Insertable } from 'kysely';
|
|
3
3
|
import { ProjectsTable } from './kysely/tables/projectsTable';
|
|
4
|
-
|
|
4
|
+
const randomUUID = () => crypto.randomUUID();
|
|
5
5
|
|
|
6
6
|
export default function projectToDb(
|
|
7
7
|
project: Project,
|
|
@@ -3,7 +3,7 @@ import dbToFile from './dbToFile';
|
|
|
3
3
|
import { File } from '~codeyam/types';
|
|
4
4
|
import { Insertable, Selectable } from 'kysely';
|
|
5
5
|
import { FilesTable } from './kysely/tables/filesTable';
|
|
6
|
-
|
|
6
|
+
const randomUUID = () => crypto.randomUUID();
|
|
7
7
|
|
|
8
8
|
const BATCH_SIZE = 100;
|
|
9
9
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Scenario } from '~codeyam/types';
|
|
2
2
|
import { type Insertable } from 'kysely';
|
|
3
3
|
import { ScenariosTable } from './kysely/tables/scenariosTable';
|
|
4
|
-
|
|
4
|
+
const randomUUID = () => crypto.randomUUID();
|
|
5
5
|
|
|
6
6
|
export default function scenarioToDb(
|
|
7
7
|
scenario: Scenario,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { UserScenario } from '~codeyam/types';
|
|
2
2
|
import { Insertable } from 'kysely';
|
|
3
3
|
import { UserScenariosTable } from './kysely/tables/userScenariosTable';
|
|
4
|
-
|
|
4
|
+
const randomUUID = () => crypto.randomUUID();
|
|
5
5
|
|
|
6
6
|
export default function userScenarioToDb(
|
|
7
7
|
userScenario: UserScenario,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analysisBranchToDb.js","sourceRoot":"","sources":["../../../../../database/src/lib/analysisBranchToDb.ts"],"names":[],"mappings":"AAEA,
|
|
1
|
+
{"version":3,"file":"analysisBranchToDb.js","sourceRoot":"","sources":["../../../../../database/src/lib/analysisBranchToDb.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;AAI7C,MAAM,CAAC,OAAO,UAAU,kBAAkB,CACxC,cAA8B;IAE9B,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE,GAAG,cAAc,CAAC;IAE7E,OAAO,SAAS,CAAC,QAAQ,CAAC;IAC1B,OAAO,SAAS,CAAC,MAAM,CAAC;IACxB,OAAO,SAAS,CAAC,MAAM,CAAC;IAExB,IAAI,WAAW,IAAI,SAAS,EAAE,CAAC;QAC5B,SAAyC,CAAC,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC;QAC5E,OAAO,SAAS,CAAC,SAAS,CAAC;IAC7B,CAAC;IAED,OAAO;QACL,GAAG,SAAS;QACZ,EAAE,EAAE,EAAE,IAAI,UAAU,EAAE;QACtB,WAAW,EAAE,UAAU;QACvB,UAAU,EAAE,SAAS;QACrB,SAAS,EAAE,QAAQ;KACpB,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
const randomUUID = () => crypto.randomUUID();
|
|
2
2
|
export default function analysisToDb(analysis) {
|
|
3
3
|
const { id, projectId, commitId, fileId, filePath, entitySha, entityType, entityName, previousAnalysisId, entity, dependencyAnalyzedTreeSha, analyzedTreeSha, branchCommitSha, committedAt, completedAt, createdAt, updatedAt, metadata, status, commit, file, project, scenarios, analysisBranches, branches, ...remaining } = analysis;
|
|
4
4
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analysisToDb.js","sourceRoot":"","sources":["../../../../../database/src/lib/analysisToDb.ts"],"names":[],"mappings":"AAGA,
|
|
1
|
+
{"version":3,"file":"analysisToDb.js","sourceRoot":"","sources":["../../../../../database/src/lib/analysisToDb.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;AAE7C,MAAM,CAAC,OAAO,UAAU,YAAY,CAClC,QAAkB;IAElB,MAAM,EACJ,EAAE,EACF,SAAS,EACT,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,SAAS,EACT,UAAU,EACV,UAAU,EACV,kBAAkB,EAClB,MAAM,EACN,yBAAyB,EACzB,eAAe,EACf,eAAe,EACf,WAAW,EACX,WAAW,EACX,SAAS,EACT,SAAS,EACT,QAAQ,EACR,MAAM,EACN,MAAM,EACN,IAAI,EACJ,OAAO,EACP,SAAS,EACT,gBAAgB,EAChB,QAAQ,EACR,GAAG,SAAS,EACb,GAAG,QAAQ,CAAC;IAEb,OAAO;QACL,GAAG,SAAS;QACZ,EAAE,EAAE,EAAE,IAAI,UAAU,EAAE;QACtB,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;QACzD,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;QACnD,UAAU,EAAE,SAAS;QACrB,SAAS,EAAE,QAAQ;QACnB,OAAO,EAAE,MAAM;QACf,SAAS,EAAE,QAAQ;QACnB,UAAU,EAAE,SAAS;QACrB,WAAW,EAAE,UAAU;QACvB,WAAW,EAAE,UAAU;QACvB,oBAAoB,EAAE,kBAAkB;QACxC,4BAA4B,EAAE,yBAAyB;QACvD,iBAAiB,EAAE,eAAe;QAClC,iBAAiB,EAAE,eAAe;QAClC,YAAY,EAAE,WAAW;QACzB,YAAY,EAAE,WAAW;QACzB,UAAU,EAAE,SAAS;QACrB,UAAU,EAAE,SAAS;KACtB,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branchToDb.js","sourceRoot":"","sources":["../../../../../database/src/lib/branchToDb.ts"],"names":[],"mappings":"AAGA,
|
|
1
|
+
{"version":3,"file":"branchToDb.js","sourceRoot":"","sources":["../../../../../database/src/lib/branchToDb.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;AAE7C,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,MAAc;IAC/C,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE,GACzE,MAAM,CAAC;IAET,OAAO,SAAS,CAAC,OAAO,CAAC;IACzB,OAAO,SAAS,CAAC,KAAK,CAAC;IACvB,OAAO,SAAS,CAAC,QAAQ,CAAC;IAC1B,OAAO,SAAS,CAAC,SAAS,CAAC;IAC3B,OAAO,SAAS,CAAC,SAAS,CAAC;IAE3B,OAAO;QACL,GAAG,SAAS;QACZ,EAAE,EAAE,EAAE,IAAI,UAAU,EAAE;QACtB,UAAU,EAAE,SAAS;QACrB,SAAS,EAAE,QAAQ;QACnB,kBAAkB,EAAE,gBAAgB;QACpC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;KACrD,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commitBranchToDb.js","sourceRoot":"","sources":["../../../../../database/src/lib/commitBranchToDb.ts"],"names":[],"mappings":"AAEA,
|
|
1
|
+
{"version":3,"file":"commitBranchToDb.js","sourceRoot":"","sources":["../../../../../database/src/lib/commitBranchToDb.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;AAG7C,MAAM,CAAC,OAAO,UAAU,gBAAgB,CACtC,YAA0B;IAE1B,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE,GAAG,YAAY,CAAC;IAE9D,OAAO,SAAS,CAAC,MAAM,CAAC;IACxB,OAAO,SAAS,CAAC,MAAM,CAAC;IAExB,OAAO;QACL,GAAG,SAAS;QACZ,EAAE,EAAE,EAAE,IAAI,UAAU,EAAE;QACtB,SAAS,EAAE,QAAQ;QACnB,SAAS,EAAE,QAAQ;KACpB,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
const randomUUID = () => crypto.randomUUID();
|
|
2
2
|
export default function commitToDb(commit, projectId) {
|
|
3
3
|
const { id, projectId: _projectId, branchId, mergedBranchId, aiMessage, htmlUrl, analyzedAt, committedAt, author, metadata, files, ...remaining } = commit;
|
|
4
4
|
delete remaining.branch;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commitToDb.js","sourceRoot":"","sources":["../../../../../database/src/lib/commitToDb.ts"],"names":[],"mappings":"AAGA,
|
|
1
|
+
{"version":3,"file":"commitToDb.js","sourceRoot":"","sources":["../../../../../database/src/lib/commitToDb.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;AAE7C,MAAM,CAAC,OAAO,UAAU,UAAU,CAChC,MAAc,EACd,SAA0B;IAE1B,MAAM,EACJ,EAAE,EACF,SAAS,EAAE,UAAU,EACrB,QAAQ,EACR,cAAc,EACd,SAAS,EACT,OAAO,EACP,UAAU,EACV,WAAW,EACX,MAAM,EACN,QAAQ,EACR,KAAK,EACL,GAAG,SAAS,EACb,GAAG,MAAM,CAAC;IAEX,OAAO,SAAS,CAAC,MAAM,CAAC;IACxB,OAAO,SAAS,CAAC,YAAY,CAAC;IAC9B,OAAO,SAAS,CAAC,aAAa,CAAC;IAC/B,OAAO,SAAS,CAAC,QAAQ,CAAC;IAC1B,OAAO,SAAS,CAAC,OAAO,CAAC;IACzB,OAAO,SAAS,CAAC,QAAQ,CAAC;IAC1B,OAAO,SAAS,CAAC,cAAc,CAAC;IAEhC,OAAO;QACL,GAAG,SAAS;QACZ,EAAE,EAAE,EAAE,IAAI,UAAU,EAAE;QACtB,UAAU,EAAE,UAAU,IAAI,MAAM,CAAC,SAAS,CAAC;QAC3C,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;QACzD,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;QAChD,SAAS,EAAE,QAAQ;QACnB,gBAAgB,EAAE,cAAc;QAChC,sBAAsB,EAAE,MAAM,EAAE,QAAQ;QACxC,QAAQ,EAAE,OAAO;QACjB,UAAU,EAAE,SAAS;QACrB,WAAW,EAAE,UAAU;QACvB,YAAY,EAAE,WAAW;KAC1B,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileToDb.js","sourceRoot":"","sources":["../../../../../database/src/lib/fileToDb.ts"],"names":[],"mappings":"AAGA,
|
|
1
|
+
{"version":3,"file":"fileToDb.js","sourceRoot":"","sources":["../../../../../database/src/lib/fileToDb.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;AAE7C,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,IAAU;IACzC,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,UAAU,EAAE;QAC3B,UAAU,EAAE,IAAI,CAAC,SAAU;QAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI;QAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;QAC9D,UAAU,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACtD,UAAU,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI;KACnC,CAAC;AACJ,CAAC"}
|
package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import type { Generated, JSONColumnType } from 'kysely';
|
|
|
3
3
|
/**
|
|
4
4
|
* Metadata for a debug bundle upload.
|
|
5
5
|
* Note: "bundle" refers to the tarball upload (base + delta).
|
|
6
|
-
* The markdown "debug report" from /codeyam
|
|
6
|
+
* The markdown "debug report" from /codeyam-diagnose is stored in feedback.debugReport.
|
|
7
7
|
*/
|
|
8
8
|
interface DebugBundleMetadata {
|
|
9
9
|
timestamp: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectToDb.js","sourceRoot":"","sources":["../../../../../database/src/lib/projectToDb.ts"],"names":[],"mappings":"AAGA,
|
|
1
|
+
{"version":3,"file":"projectToDb.js","sourceRoot":"","sources":["../../../../../database/src/lib/projectToDb.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;AAE7C,MAAM,CAAC,OAAO,UAAU,WAAW,CACjC,OAAgB;IAEhB,MAAM,EACJ,EAAE,EACF,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,SAAS,EACT,QAAQ,EACR,GAAG,SAAS,EACb,GAAG,OAAO,CAAC;IAEZ,OAAO;QACL,GAAG,SAAS;QACZ,EAAE,EAAE,EAAE,IAAI,UAAU,EAAE;QACtB,WAAW,EAAE,UAAU,IAAI,IAAI;QAC/B,kBAAkB,EAAE,gBAAgB,IAAI,IAAI;QAC5C,UAAU,EAAE,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACjD,UAAU,EAAE,SAAS,IAAI,IAAI;QAC7B,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;QACpD,gEAAgE;QAChE,YAAY,EAAE,IAAI;QAClB,aAAa,EAAE,IAAI;QACnB,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getDatabase } from './kysely/db';
|
|
2
2
|
import dbToFile from './dbToFile';
|
|
3
|
-
|
|
3
|
+
const randomUUID = () => crypto.randomUUID();
|
|
4
4
|
const BATCH_SIZE = 100;
|
|
5
5
|
export default async function saveFiles(newFiles) {
|
|
6
6
|
if (newFiles.length === 0)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"saveFiles.js","sourceRoot":"","sources":["../../../../../database/src/lib/saveFiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,QAAQ,MAAM,YAAY,CAAC;AAIlC,
|
|
1
|
+
{"version":3,"file":"saveFiles.js","sourceRoot":"","sources":["../../../../../database/src/lib/saveFiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,QAAQ,MAAM,YAAY,CAAC;AAIlC,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;AAE7C,MAAM,UAAU,GAAG,GAAG,CAAC;AAEvB,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,SAAS,CACrC,QAAkC;IAElC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAErC,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IACzB,MAAM,aAAa,GAA6B,EAAE,CAAC;IAEnD,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACjC,GAAG,IAAI;QACP,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,UAAU,EAAE;QAC3B,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACrC,CAAC,CAAC,CAAC;IAEJ,IAAI,CAAC;QACH,+CAA+C;QAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC;YACrD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;YAEhD,MAAM,UAAU,GAAG,MAAM,EAAE;iBACxB,UAAU,CAAC,OAAO,CAAC;iBACnB,MAAM,CAAC,KAAK,CAAC;iBACb,YAAY,EAAE;iBACd,OAAO,EAAE,CAAC;YAEb,aAAa,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;QACpC,CAAC;QAED,OAAO,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;QACxD,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
const randomUUID = () => crypto.randomUUID();
|
|
2
2
|
export default function scenarioToDb(scenario) {
|
|
3
3
|
const { id, projectId, analysisId, previousVersionId, analysis, metadata, data, ...remaining } = scenario;
|
|
4
4
|
delete remaining.userScenarios;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scenarioToDb.js","sourceRoot":"","sources":["../../../../../database/src/lib/scenarioToDb.ts"],"names":[],"mappings":"AAGA,
|
|
1
|
+
{"version":3,"file":"scenarioToDb.js","sourceRoot":"","sources":["../../../../../database/src/lib/scenarioToDb.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;AAE7C,MAAM,CAAC,OAAO,UAAU,YAAY,CAClC,QAAkB;IAElB,MAAM,EACJ,EAAE,EACF,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,GAAG,SAAS,EACb,GAAG,QAAQ,CAAC;IAEb,OAAO,SAAS,CAAC,aAAa,CAAC;IAC/B,OAAO,SAAS,CAAC,QAAQ,CAAC;IAE1B,IAAI,YAAY,IAAI,SAAS,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC,UAAU,CAAC;IAC9B,CAAC;IAED,OAAO;QACL,GAAG,SAAS;QACZ,EAAE,EAAE,EAAE,IAAI,UAAU,EAAE;QACtB,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;QACpD,UAAU,EAAE,SAAS;QACrB,WAAW,EAAE,UAAU;QACvB,mBAAmB,EAAE,iBAAiB;KACvC,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rsyncCopy.d.ts","sourceRoot":"","sources":["../../../../../src/lib/fs/rsyncCopy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rsyncCopy.d.ts","sourceRoot":"","sources":["../../../../../src/lib/fs/rsyncCopy.ts"],"names":[],"mappings":"AAqFA,wBAA8B,SAAS,CAAC,EACtC,UAAU,EACV,eAAe,EACf,QAAa,EACb,YAAoB,EACpB,MAAc,EACd,SAAc,GACf,EAAE;IACD,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkFhB"}
|
|
@@ -1,11 +1,104 @@
|
|
|
1
|
-
import { spawn } from 'child_process';
|
|
1
|
+
import { execSync, spawn } from 'child_process';
|
|
2
|
+
import { existsSync, readdirSync, rmSync } from 'fs';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
/**
|
|
5
|
+
* Try to use APFS copy-on-write clones on macOS for near-instant directory copies.
|
|
6
|
+
* Falls back to rsync on non-macOS or if the clone fails.
|
|
7
|
+
*
|
|
8
|
+
* Returns true if the clone succeeded (caller can skip rsync).
|
|
9
|
+
*/
|
|
10
|
+
function tryApfsClone({ sourcePath, destinationPath, excludes, silent, }) {
|
|
11
|
+
if (process.platform !== 'darwin')
|
|
12
|
+
return false;
|
|
13
|
+
// APFS clone requires the destination to not exist.
|
|
14
|
+
// If it exists and is empty, remove it so we can clone into it.
|
|
15
|
+
if (existsSync(destinationPath)) {
|
|
16
|
+
try {
|
|
17
|
+
const contents = readdirSync(destinationPath);
|
|
18
|
+
if (contents.length > 0) {
|
|
19
|
+
// Destination is non-empty — can't use clone, fall back to rsync
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
rmSync(destinationPath, { recursive: true });
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
try {
|
|
29
|
+
// cp -c -R: APFS copy-on-write clone (faster than rsync, avoids data copy)
|
|
30
|
+
execSync(`cp -c -R "${sourcePath}" "${destinationPath}"`, {
|
|
31
|
+
stdio: 'pipe',
|
|
32
|
+
timeout: 300000, // 5 min safety timeout
|
|
33
|
+
});
|
|
34
|
+
// Remove excluded items from the clone
|
|
35
|
+
for (const exclude of excludes) {
|
|
36
|
+
if (exclude.includes('*')) {
|
|
37
|
+
// Glob pattern — use shell expansion
|
|
38
|
+
try {
|
|
39
|
+
execSync(`rm -rf "${join(destinationPath, exclude)}"`, {
|
|
40
|
+
stdio: 'pipe',
|
|
41
|
+
shell: '/bin/sh',
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// Glob matched nothing — fine
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
const excludePath = join(destinationPath, exclude);
|
|
50
|
+
if (existsSync(excludePath)) {
|
|
51
|
+
rmSync(excludePath, { recursive: true, force: true });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
if (!silent) {
|
|
56
|
+
console.log(`Directory cloned (APFS CoW) from ${sourcePath} to ${destinationPath}`);
|
|
57
|
+
}
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
// Clone failed (cross-volume, non-APFS, etc.) — fall back to rsync
|
|
62
|
+
// Clean up any partial clone
|
|
63
|
+
if (existsSync(destinationPath)) {
|
|
64
|
+
try {
|
|
65
|
+
rmSync(destinationPath, { recursive: true });
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
// Best effort cleanup
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
2
74
|
export default async function rsyncCopy({ sourcePath, destinationPath, excludes = [], keepExisting = false, silent = false, extraArgs = [], }) {
|
|
75
|
+
const startTime = Date.now();
|
|
76
|
+
// On macOS, try APFS copy-on-write clone first (near-instant).
|
|
77
|
+
// Skip when extraArgs are provided since those are rsync-specific flags
|
|
78
|
+
// that the clone path can't honor.
|
|
79
|
+
if (!keepExisting && extraArgs.length === 0) {
|
|
80
|
+
const cloned = tryApfsClone({
|
|
81
|
+
sourcePath,
|
|
82
|
+
destinationPath,
|
|
83
|
+
excludes,
|
|
84
|
+
silent,
|
|
85
|
+
});
|
|
86
|
+
if (cloned) {
|
|
87
|
+
if (!silent) {
|
|
88
|
+
const duration = ((Date.now() - startTime) / 1000).toFixed(1);
|
|
89
|
+
console.log(`Directory synced from ${sourcePath} to ${destinationPath} [Time: ${duration}s]`);
|
|
90
|
+
}
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// Fall back to rsync
|
|
3
95
|
return new Promise((resolve, reject) => {
|
|
4
96
|
const source = sourcePath.endsWith('/') ? sourcePath : `${sourcePath}/`;
|
|
5
97
|
const dest = destinationPath.endsWith('/')
|
|
6
98
|
? destinationPath
|
|
7
99
|
: `${destinationPath}/`;
|
|
8
|
-
|
|
100
|
+
// -a includes --specials which tries to copy sockets/FIFOs and can fail
|
|
101
|
+
const rsyncArgs = ['-a', '--no-specials'];
|
|
9
102
|
if (!keepExisting) {
|
|
10
103
|
rsyncArgs.push('--delete', '--force');
|
|
11
104
|
}
|
|
@@ -16,7 +109,6 @@ export default async function rsyncCopy({ sourcePath, destinationPath, excludes
|
|
|
16
109
|
rsyncArgs.push(`--exclude=${exclude}`);
|
|
17
110
|
}
|
|
18
111
|
rsyncArgs.push(source, dest);
|
|
19
|
-
const startTime = Date.now();
|
|
20
112
|
const rsyncProcess = spawn('rsync', rsyncArgs);
|
|
21
113
|
rsyncProcess.on('exit', (code) => {
|
|
22
114
|
if (code === 0) {
|
|
@@ -27,6 +119,9 @@ export default async function rsyncCopy({ sourcePath, destinationPath, excludes
|
|
|
27
119
|
resolve();
|
|
28
120
|
}
|
|
29
121
|
else {
|
|
122
|
+
console.error(`CodeYam Error: rsync failed with code: ${code}`, JSON.stringify({
|
|
123
|
+
rsyncArgs,
|
|
124
|
+
}, null, 2));
|
|
30
125
|
reject(new Error(`rsync failed with exit code ${code}`));
|
|
31
126
|
}
|
|
32
127
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rsyncCopy.js","sourceRoot":"","sources":["../../../../../src/lib/fs/rsyncCopy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"rsyncCopy.js","sourceRoot":"","sources":["../../../../../src/lib/fs/rsyncCopy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,87 @@
|
|
|
1
|
-
import { spawn } from 'child_process';
|
|
1
|
+
import { execSync, spawn } from 'child_process';
|
|
2
|
+
import { existsSync, readdirSync, rmSync } from 'fs';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Try to use APFS copy-on-write clones on macOS for near-instant directory copies.
|
|
7
|
+
* Falls back to rsync on non-macOS or if the clone fails.
|
|
8
|
+
*
|
|
9
|
+
* Returns true if the clone succeeded (caller can skip rsync).
|
|
10
|
+
*/
|
|
11
|
+
function tryApfsClone({
|
|
12
|
+
sourcePath,
|
|
13
|
+
destinationPath,
|
|
14
|
+
excludes,
|
|
15
|
+
silent,
|
|
16
|
+
}: {
|
|
17
|
+
sourcePath: string;
|
|
18
|
+
destinationPath: string;
|
|
19
|
+
excludes: string[];
|
|
20
|
+
silent: boolean;
|
|
21
|
+
}): boolean {
|
|
22
|
+
if (process.platform !== 'darwin') return false;
|
|
23
|
+
|
|
24
|
+
// APFS clone requires the destination to not exist.
|
|
25
|
+
// If it exists and is empty, remove it so we can clone into it.
|
|
26
|
+
if (existsSync(destinationPath)) {
|
|
27
|
+
try {
|
|
28
|
+
const contents = readdirSync(destinationPath);
|
|
29
|
+
if (contents.length > 0) {
|
|
30
|
+
// Destination is non-empty — can't use clone, fall back to rsync
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
rmSync(destinationPath, { recursive: true });
|
|
34
|
+
} catch {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
try {
|
|
40
|
+
// cp -c -R: APFS copy-on-write clone (faster than rsync, avoids data copy)
|
|
41
|
+
execSync(`cp -c -R "${sourcePath}" "${destinationPath}"`, {
|
|
42
|
+
stdio: 'pipe',
|
|
43
|
+
timeout: 300_000, // 5 min safety timeout
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
// Remove excluded items from the clone
|
|
47
|
+
for (const exclude of excludes) {
|
|
48
|
+
if (exclude.includes('*')) {
|
|
49
|
+
// Glob pattern — use shell expansion
|
|
50
|
+
try {
|
|
51
|
+
execSync(`rm -rf "${join(destinationPath, exclude)}"`, {
|
|
52
|
+
stdio: 'pipe',
|
|
53
|
+
shell: '/bin/sh',
|
|
54
|
+
});
|
|
55
|
+
} catch {
|
|
56
|
+
// Glob matched nothing — fine
|
|
57
|
+
}
|
|
58
|
+
} else {
|
|
59
|
+
const excludePath = join(destinationPath, exclude);
|
|
60
|
+
if (existsSync(excludePath)) {
|
|
61
|
+
rmSync(excludePath, { recursive: true, force: true });
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if (!silent) {
|
|
67
|
+
console.log(
|
|
68
|
+
`Directory cloned (APFS CoW) from ${sourcePath} to ${destinationPath}`,
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
return true;
|
|
72
|
+
} catch {
|
|
73
|
+
// Clone failed (cross-volume, non-APFS, etc.) — fall back to rsync
|
|
74
|
+
// Clean up any partial clone
|
|
75
|
+
if (existsSync(destinationPath)) {
|
|
76
|
+
try {
|
|
77
|
+
rmSync(destinationPath, { recursive: true });
|
|
78
|
+
} catch {
|
|
79
|
+
// Best effort cleanup
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
2
85
|
|
|
3
86
|
export default async function rsyncCopy({
|
|
4
87
|
sourcePath,
|
|
@@ -15,13 +98,38 @@ export default async function rsyncCopy({
|
|
|
15
98
|
silent?: boolean;
|
|
16
99
|
extraArgs?: string[];
|
|
17
100
|
}): Promise<void> {
|
|
101
|
+
const startTime = Date.now();
|
|
102
|
+
|
|
103
|
+
// On macOS, try APFS copy-on-write clone first (near-instant).
|
|
104
|
+
// Skip when extraArgs are provided since those are rsync-specific flags
|
|
105
|
+
// that the clone path can't honor.
|
|
106
|
+
if (!keepExisting && extraArgs.length === 0) {
|
|
107
|
+
const cloned = tryApfsClone({
|
|
108
|
+
sourcePath,
|
|
109
|
+
destinationPath,
|
|
110
|
+
excludes,
|
|
111
|
+
silent,
|
|
112
|
+
});
|
|
113
|
+
if (cloned) {
|
|
114
|
+
if (!silent) {
|
|
115
|
+
const duration = ((Date.now() - startTime) / 1000).toFixed(1);
|
|
116
|
+
console.log(
|
|
117
|
+
`Directory synced from ${sourcePath} to ${destinationPath} [Time: ${duration}s]`,
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// Fall back to rsync
|
|
18
125
|
return new Promise((resolve, reject) => {
|
|
19
126
|
const source = sourcePath.endsWith('/') ? sourcePath : `${sourcePath}/`;
|
|
20
127
|
const dest = destinationPath.endsWith('/')
|
|
21
128
|
? destinationPath
|
|
22
129
|
: `${destinationPath}/`;
|
|
23
130
|
|
|
24
|
-
|
|
131
|
+
// -a includes --specials which tries to copy sockets/FIFOs and can fail
|
|
132
|
+
const rsyncArgs = ['-a', '--no-specials'];
|
|
25
133
|
|
|
26
134
|
if (!keepExisting) {
|
|
27
135
|
rsyncArgs.push('--delete', '--force');
|
|
@@ -37,7 +145,6 @@ export default async function rsyncCopy({
|
|
|
37
145
|
|
|
38
146
|
rsyncArgs.push(source, dest);
|
|
39
147
|
|
|
40
|
-
const startTime = Date.now();
|
|
41
148
|
const rsyncProcess = spawn('rsync', rsyncArgs);
|
|
42
149
|
|
|
43
150
|
rsyncProcess.on('exit', (code) => {
|
|
@@ -50,6 +157,17 @@ export default async function rsyncCopy({
|
|
|
50
157
|
}
|
|
51
158
|
resolve();
|
|
52
159
|
} else {
|
|
160
|
+
console.error(
|
|
161
|
+
`CodeYam Error: rsync failed with code: ${code}`,
|
|
162
|
+
JSON.stringify(
|
|
163
|
+
{
|
|
164
|
+
rsyncArgs,
|
|
165
|
+
},
|
|
166
|
+
null,
|
|
167
|
+
2,
|
|
168
|
+
),
|
|
169
|
+
);
|
|
170
|
+
|
|
53
171
|
reject(new Error(`rsync failed with exit code ${code}`));
|
|
54
172
|
}
|
|
55
173
|
});
|
|
@@ -342,7 +342,7 @@ export default function constructMockCode(
|
|
|
342
342
|
let foundEntityWithSignature = false;
|
|
343
343
|
let signatureSchema: DataStructure['signatureSchema'] | undefined;
|
|
344
344
|
|
|
345
|
-
for (const filePath in dependencySchemas) {
|
|
345
|
+
entitySearch: for (const filePath in dependencySchemas) {
|
|
346
346
|
for (const entityName in dependencySchemas[filePath]) {
|
|
347
347
|
// Match entity by base name (without generics/args)
|
|
348
348
|
const entityBaseName = entityName.split(/[<(]/)[0];
|
|
@@ -386,7 +386,7 @@ export default function constructMockCode(
|
|
|
386
386
|
// However, we still need to remove duplicate function calls that create invalid syntax
|
|
387
387
|
removeDuplicateFunctionCalls(relevantReturnValueSchema);
|
|
388
388
|
dataStructureValue = relevantReturnValueSchema?.[dataStructurePath];
|
|
389
|
-
break;
|
|
389
|
+
break entitySearch;
|
|
390
390
|
}
|
|
391
391
|
}
|
|
392
392
|
}
|
|
@@ -2288,6 +2288,23 @@ export default function constructMockCode(
|
|
|
2288
2288
|
}
|
|
2289
2289
|
}
|
|
2290
2290
|
|
|
2291
|
+
// Post-processing: When the root functionCallReturnValue is typed as "function" but the
|
|
2292
|
+
// return value also has nested properties (methods like .from(), .auth, etc.), it's actually
|
|
2293
|
+
// an object, not a function to be called. Clear returnsFunctionArgs to prevent double-wrapping
|
|
2294
|
+
// (adding an extra () => { return { ... } } wrapper and ["()"] data paths).
|
|
2295
|
+
// This handles cases like Supabase's createClient() which returns an object with methods.
|
|
2296
|
+
// Only applied to the root level - nested parts that are functions with methods (like
|
|
2297
|
+
// useSearchParams()[1] which is a setter function with .set() and .delete()) should keep
|
|
2298
|
+
// their returnsFunctionArgs since they genuinely ARE functions.
|
|
2299
|
+
if (
|
|
2300
|
+
returnValueParts.returnsFunctionArgs &&
|
|
2301
|
+
returnValueParts.returnsFunctionArgs.length === 0 &&
|
|
2302
|
+
returnValueParts.nested &&
|
|
2303
|
+
returnValueParts.nested.length > 0
|
|
2304
|
+
) {
|
|
2305
|
+
returnValueParts.returnsFunctionArgs = undefined;
|
|
2306
|
+
}
|
|
2307
|
+
|
|
2291
2308
|
const contents = constructReturnValueString(returnValueParts);
|
|
2292
2309
|
|
|
2293
2310
|
if (mockNameParts.length > 1) {
|
|
@@ -2360,16 +2377,26 @@ export default function constructMockCode(
|
|
|
2360
2377
|
const nameAssignment = isErrorSubclass
|
|
2361
2378
|
? `this.name = '${baseMockName}';`
|
|
2362
2379
|
: '';
|
|
2363
|
-
// Use the
|
|
2364
|
-
|
|
2365
|
-
|
|
2366
|
-
|
|
2380
|
+
// Use the base class name for the class definition, not the call-signature-derived name.
|
|
2381
|
+
// When mockName is "StatsCalculator(supabase)", baseMockName is "StatsCalculator"
|
|
2382
|
+
// and derivedFunctionName would be "StatsCalculator_supabase" which is wrong.
|
|
2383
|
+
// Classes are instantiated with `new ClassName(args)` so the name must match the original.
|
|
2384
|
+
const className = baseMockName;
|
|
2385
|
+
|
|
2386
|
+
// Use the already-generated contents (which has proper function wrappers for methods)
|
|
2387
|
+
// instead of raw scenarios().data() which would create non-callable string-keyed properties.
|
|
2388
|
+
// For classes with methods like calculateStats(), the contents will have:
|
|
2389
|
+
// { calculateStats: (...args) => scenarios().data()?.["key"]?.["calculateStats(...)"], ... }
|
|
2390
|
+
// which makes methods callable on the instance.
|
|
2391
|
+
const classContents = enhancedContents.trim().startsWith('{')
|
|
2392
|
+
? enhancedContents
|
|
2393
|
+
: `scenarios().data()?.${quotePropertyKey(dataKey)} || {}`;
|
|
2367
2394
|
|
|
2368
2395
|
return `class ${className}${isErrorSubclass ? ' extends Error' : ''} {
|
|
2369
2396
|
constructor(message) {
|
|
2370
2397
|
${superCall}
|
|
2371
2398
|
${nameAssignment}
|
|
2372
|
-
Object.assign(this,
|
|
2399
|
+
Object.assign(this, ${classContents});
|
|
2373
2400
|
}
|
|
2374
2401
|
}`;
|
|
2375
2402
|
}
|