@codeyam/codeyam-cli 0.1.0-staging.54098fa → 0.1.0-staging.56e2dca
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/analyzer-template/.build-info.json +8 -8
- package/analyzer-template/log.txt +3 -3
- package/analyzer-template/package.json +3 -3
- package/analyzer-template/packages/ai/src/lib/astScopes/methodSemantics.ts +135 -0
- package/analyzer-template/packages/ai/src/lib/astScopes/nodeToSource.ts +19 -0
- package/analyzer-template/packages/ai/src/lib/astScopes/paths.ts +11 -4
- package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +36 -9
- package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.ts +10 -3
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +16 -6
- package/analyzer-template/packages/analyze/index.ts +4 -1
- package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +28 -2
- package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +5 -36
- package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +1 -0
- package/analyzer-template/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.ts +21 -0
- package/analyzer-template/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.ts +82 -10
- package/analyzer-template/packages/analyze/src/lib/files/analyzeChange.ts +4 -0
- package/analyzer-template/packages/analyze/src/lib/files/analyzeInitial.ts +4 -0
- package/analyzer-template/packages/analyze/src/lib/files/analyzeNextRoute.ts +8 -3
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +239 -58
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +1684 -1462
- package/analyzer-template/packages/aws/package.json +6 -6
- package/analyzer-template/packages/database/package.json +1 -1
- package/analyzer-template/packages/database/src/lib/loadAnalysis.ts +7 -1
- package/analyzer-template/packages/database/src/lib/loadEntity.ts +11 -4
- package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js +7 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.d.ts +4 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.js +4 -4
- package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.js.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts +3 -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 +22 -1
- 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 +27 -0
- package/analyzer-template/project/runMultiScenarioServer.ts +26 -3
- package/background/src/lib/virtualized/project/runMultiScenarioServer.js +23 -3
- package/background/src/lib/virtualized/project/runMultiScenarioServer.js.map +1 -1
- package/codeyam-cli/src/commands/__tests__/editor.analyzeImportsArgs.test.js +47 -0
- package/codeyam-cli/src/commands/__tests__/editor.analyzeImportsArgs.test.js.map +1 -0
- package/codeyam-cli/src/commands/__tests__/editor.auditNoAutoAnalysis.test.js +71 -0
- package/codeyam-cli/src/commands/__tests__/editor.auditNoAutoAnalysis.test.js.map +1 -0
- package/codeyam-cli/src/commands/__tests__/editor.designSystem.test.js +30 -0
- package/codeyam-cli/src/commands/__tests__/editor.designSystem.test.js.map +1 -0
- package/codeyam-cli/src/commands/__tests__/editor.statePersistence.test.js +55 -0
- package/codeyam-cli/src/commands/__tests__/editor.statePersistence.test.js.map +1 -0
- package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js +39 -3
- package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js.map +1 -1
- package/codeyam-cli/src/commands/editor.js +1413 -203
- package/codeyam-cli/src/commands/editor.js.map +1 -1
- package/codeyam-cli/src/commands/editorAnalyzeImportsArgs.js +23 -0
- package/codeyam-cli/src/commands/editorAnalyzeImportsArgs.js.map +1 -0
- package/codeyam-cli/src/commands/init.js +20 -0
- package/codeyam-cli/src/commands/init.js.map +1 -1
- package/codeyam-cli/src/data/designSystems.js +27 -0
- package/codeyam-cli/src/data/designSystems.js.map +1 -0
- package/codeyam-cli/src/data/techStacks.js +1 -1
- package/codeyam-cli/src/utils/__tests__/devServerState.test.js +93 -1
- package/codeyam-cli/src/utils/__tests__/devServerState.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/editorApi.test.js +44 -0
- package/codeyam-cli/src/utils/__tests__/editorApi.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/editorAudit.test.js +1969 -761
- package/codeyam-cli/src/utils/__tests__/editorAudit.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/editorPreview.test.js +11 -3
- package/codeyam-cli/src/utils/__tests__/editorPreview.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js +98 -1
- package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/editorRoadmap.test.js +1108 -0
- package/codeyam-cli/src/utils/__tests__/editorRoadmap.test.js.map +1 -0
- package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js +120 -0
- package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js +140 -1
- package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js +134 -1
- package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js +33 -1
- package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/envFile.test.js +125 -0
- package/codeyam-cli/src/utils/__tests__/envFile.test.js.map +1 -0
- package/codeyam-cli/src/utils/__tests__/handoffContext.test.js +500 -0
- package/codeyam-cli/src/utils/__tests__/handoffContext.test.js.map +1 -0
- package/codeyam-cli/src/utils/__tests__/manualEntityAnalysis.test.js +302 -0
- package/codeyam-cli/src/utils/__tests__/manualEntityAnalysis.test.js.map +1 -0
- package/codeyam-cli/src/utils/__tests__/testRunner.test.js +216 -0
- package/codeyam-cli/src/utils/__tests__/testRunner.test.js.map +1 -0
- package/codeyam-cli/src/utils/__tests__/webappDetection.test.js +6 -0
- package/codeyam-cli/src/utils/__tests__/webappDetection.test.js.map +1 -1
- package/codeyam-cli/src/utils/analysisRunner.js +28 -1
- package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
- package/codeyam-cli/src/utils/analyzer.js +11 -1
- package/codeyam-cli/src/utils/analyzer.js.map +1 -1
- package/codeyam-cli/src/utils/designSystemShowcase.js +810 -0
- package/codeyam-cli/src/utils/designSystemShowcase.js.map +1 -0
- package/codeyam-cli/src/utils/devServerState.js +32 -0
- package/codeyam-cli/src/utils/devServerState.js.map +1 -1
- package/codeyam-cli/src/utils/editorApi.js +16 -0
- package/codeyam-cli/src/utils/editorApi.js.map +1 -1
- package/codeyam-cli/src/utils/editorAudit.js +275 -21
- package/codeyam-cli/src/utils/editorAudit.js.map +1 -1
- package/codeyam-cli/src/utils/editorPreview.js +5 -3
- package/codeyam-cli/src/utils/editorPreview.js.map +1 -1
- package/codeyam-cli/src/utils/editorRoadmap.js +574 -0
- package/codeyam-cli/src/utils/editorRoadmap.js.map +1 -0
- package/codeyam-cli/src/utils/editorScenarioSwitch.js +27 -12
- package/codeyam-cli/src/utils/editorScenarioSwitch.js.map +1 -1
- package/codeyam-cli/src/utils/editorScenarios.js +71 -0
- package/codeyam-cli/src/utils/editorScenarios.js.map +1 -1
- package/codeyam-cli/src/utils/editorSeedAdapter.js +69 -16
- package/codeyam-cli/src/utils/editorSeedAdapter.js.map +1 -1
- package/codeyam-cli/src/utils/entityChangeStatus.server.js +31 -0
- package/codeyam-cli/src/utils/entityChangeStatus.server.js.map +1 -1
- package/codeyam-cli/src/utils/envFile.js +90 -0
- package/codeyam-cli/src/utils/envFile.js.map +1 -0
- package/codeyam-cli/src/utils/handoffContext.js +257 -0
- package/codeyam-cli/src/utils/handoffContext.js.map +1 -0
- package/codeyam-cli/src/utils/install-skills.js +36 -6
- package/codeyam-cli/src/utils/install-skills.js.map +1 -1
- package/codeyam-cli/src/utils/manualEntityAnalysis.js +196 -0
- package/codeyam-cli/src/utils/manualEntityAnalysis.js.map +1 -0
- package/codeyam-cli/src/utils/queue/__tests__/job.interactiveStart.test.js +159 -0
- package/codeyam-cli/src/utils/queue/__tests__/job.interactiveStart.test.js.map +1 -0
- package/codeyam-cli/src/utils/queue/job.js +29 -3
- package/codeyam-cli/src/utils/queue/job.js.map +1 -1
- package/codeyam-cli/src/utils/scenariosManifest.js +8 -2
- package/codeyam-cli/src/utils/scenariosManifest.js.map +1 -1
- package/codeyam-cli/src/utils/techStackConfig.js +38 -0
- package/codeyam-cli/src/utils/techStackConfig.js.map +1 -0
- package/codeyam-cli/src/utils/techStackConfig.test.js +85 -0
- package/codeyam-cli/src/utils/techStackConfig.test.js.map +1 -0
- package/codeyam-cli/src/utils/testResultCache.js +53 -0
- package/codeyam-cli/src/utils/testResultCache.js.map +1 -0
- package/codeyam-cli/src/utils/testResultCache.server.js +81 -0
- package/codeyam-cli/src/utils/testResultCache.server.js.map +1 -0
- package/codeyam-cli/src/utils/testResultCache.server.test.js +187 -0
- package/codeyam-cli/src/utils/testResultCache.server.test.js.map +1 -0
- package/codeyam-cli/src/utils/testResultCache.test.js +230 -0
- package/codeyam-cli/src/utils/testResultCache.test.js.map +1 -0
- package/codeyam-cli/src/utils/testRunner.js +193 -1
- package/codeyam-cli/src/utils/testRunner.js.map +1 -1
- package/codeyam-cli/src/utils/webappDetection.js +4 -2
- package/codeyam-cli/src/utils/webappDetection.js.map +1 -1
- package/codeyam-cli/src/webserver/__tests__/api.interactive-switch-scenario.test.js +99 -0
- package/codeyam-cli/src/webserver/__tests__/api.interactive-switch-scenario.test.js.map +1 -0
- package/codeyam-cli/src/webserver/__tests__/buildPtyEnv.test.js +119 -1
- package/codeyam-cli/src/webserver/__tests__/buildPtyEnv.test.js.map +1 -1
- package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js +384 -12
- package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js.map +1 -1
- package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js +67 -0
- package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js.map +1 -1
- package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
- package/codeyam-cli/src/webserver/app/routes/api.interactive-switch-scenario.js +34 -0
- package/codeyam-cli/src/webserver/app/routes/api.interactive-switch-scenario.js.map +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{CopyButton-CLe80MMu.js → CopyButton-DTBZZfSk.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-Crt_KN_U.js → EntityItem-BxclONWq.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-CD7lGABo.js → EntityTypeIcon-BsnEOJZ_.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{InlineSpinner-CgTNOhnu.js → InlineSpinner-ByaELMbv.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-CKeQT5Ty.js → InteractivePreview-6WjVfhxX.js} +2 -2
- package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-D3s1MFkb.js → LibraryFunctionPreview-ChX-Hp7W.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-CM5zg40N.js → LogViewer-C-9zQdXg.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/MiniClaudeChat-Bs2_Oua4.js +36 -0
- package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-C2PLkej3.js → ReportIssueModal-DQsceHVv.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-DanvyBPb.js → SafeScreenshot-DThcm_9M.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-DUMfcNVK.js → ScenarioViewer-Cl4oOA3A.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/Spinner-CIil5-gb.js +34 -0
- package/codeyam-cli/src/webserver/build/client/assets/{ViewportInspectBar-BA_Ry-rs.js → ViewportInspectBar-BqkA9zyZ.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{_index-BAWd-Xjf.js → _index-DnOgyseQ.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{activity.(_tab)-BOARiB-g.js → activity.(_tab)-DqM9hbNE.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{addon-web-links-CHx25PAe.js → addon-web-links-C58dYPwR.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{agent-transcripts-Bg3e7q4S.js → agent-transcripts-B8NCeOrm.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/api.editor-database-verify-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.editor-github-verify-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.editor-handoff-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.editor-hosting-verify-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.editor-roadmap-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.editor-verify-routes-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.interactive-switch-scenario-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{book-open-CL-lMgHh.js → book-open-BFSIqZgO.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-GmAjGS9-.js → chevron-down-B9fDzFVh.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/chunk-UVKPFVEO-Bmq2apuh.js +43 -0
- package/codeyam-cli/src/webserver/build/client/assets/{circle-check-DFcQkN5j.js → circle-check-DLPObLUx.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{copy-C6iF61Xs.js → copy-DXEmO0TD.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-4ImjHTVC.js → createLucideIcon-BwyFiRot.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-Coe5NhbS.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{cy-logo-cli-CJzc4vOH.svg → cy-logo-cli-DoA97ML3.svg} +2 -2
- package/codeyam-cli/src/webserver/build/client/assets/{dev.empty-C8y4mmyv.js → dev.empty-iRhRIFlp.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/editor._tab-BZPBzV73.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-DhtVC4aI.js +161 -0
- package/codeyam-cli/src/webserver/build/client/assets/editorPreview-C6fEYHrh.js +41 -0
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-Blfy9UlN.js → entity._sha._-pc-vc6wO.js} +13 -12
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha.scenarios._scenarioId.dev-BA5L8bU-.js → entity._sha.scenarios._scenarioId.dev-C8AyYgYT.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha.scenarios._scenarioId.fullscreen-D4dmRgvO.js → entity._sha.scenarios._scenarioId.fullscreen-DziaVQX1.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.create-scenario-DQM8E7L4.js → entity._sha_.create-scenario-BTcpgIpC.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-CAoXLsQr.js → entity._sha_.edit._scenarioId-D_O_ajfZ.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entry.client-SuW9syRS.js → entry.client-j1Vi0bco.js} +6 -6
- package/codeyam-cli/src/webserver/build/client/assets/{files-D-xGrg29.js → files-kuny2Q_s.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{git-Bq_fbXP5.js → git-DgCZPMie.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/globals-L-aUIeux.css +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{index-Bp1l4hSv.js → index-BliGSSpl.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{index-DE3jI_dv.js → index-SqjQKTdH.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{index-CWV9XZiG.js → index-vyrZD2g4.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{labs-B_IX45ih.js → labs-c3yLxSEp.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-De-7qQ2u.js → loader-circle-D-q28GLF.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/manifest-79d0d81a.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{memory-Cx2xEx7s.js → memory-CEWIUC4t.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{pause-CFxEKL1u.js → pause-BP6fitdh.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/root-L2V0jea7.js +80 -0
- package/codeyam-cli/src/webserver/build/client/assets/{search-BdBb5aqc.js → search-BooqacKS.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{settings-DdE-Untf.js → settings-BM0nbryO.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{simulations-DSCdE99u.js → simulations-ovy6FjRY.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{terminal-CrplD4b1.js → terminal-DHemCJIs.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-DqJ0j69l.js → triangle-alert-D87ekDl8.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{useCustomSizes-DhXHbEjP.js → useCustomSizes-Dk0Tciqg.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-C8QvIe05.js +2 -0
- package/codeyam-cli/src/webserver/build/client/assets/{useReportContext-Cy5Qg_UR.js → useReportContext-jkCytuYz.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{useToast-5HR2j9ZE.js → useToast-BgqkixU9.js} +1 -1
- package/codeyam-cli/src/webserver/build/server/assets/analysisRunner-QgInFGdU.js +16 -0
- package/codeyam-cli/src/webserver/build/server/assets/{index-G8pxNQAW.js → index-zblh9auj.js} +1 -1
- package/codeyam-cli/src/webserver/build/server/assets/init-DaE0CBjk.js +14 -0
- package/codeyam-cli/src/webserver/build/server/assets/server-build-CNvgz1cC.js +853 -0
- package/codeyam-cli/src/webserver/build/server/index.js +1 -1
- package/codeyam-cli/src/webserver/build-info.json +5 -5
- package/codeyam-cli/src/webserver/editorProxy.js +310 -23
- package/codeyam-cli/src/webserver/editorProxy.js.map +1 -1
- package/codeyam-cli/src/webserver/idleDetector.js +27 -3
- package/codeyam-cli/src/webserver/idleDetector.js.map +1 -1
- package/codeyam-cli/src/webserver/server.js +67 -0
- package/codeyam-cli/src/webserver/server.js.map +1 -1
- package/codeyam-cli/src/webserver/terminalServer.js +115 -17
- package/codeyam-cli/src/webserver/terminalServer.js.map +1 -1
- package/codeyam-cli/templates/codeyam-editor-codex.md +61 -0
- package/codeyam-cli/templates/codeyam-editor-gemini.md +59 -0
- package/codeyam-cli/templates/codeyam-editor-reference.md +8 -6
- package/codeyam-cli/templates/design-systems/clean-dashboard-design-system.md +255 -0
- package/codeyam-cli/templates/design-systems/editorial-design-system.md +267 -0
- package/codeyam-cli/templates/design-systems/mono-brutalist-design-system.md +256 -0
- package/codeyam-cli/templates/design-systems/neo-brutalist-design-system.md +294 -0
- package/codeyam-cli/templates/editor-step-hook.py +4 -4
- package/codeyam-cli/templates/expo-react-native/MOBILE_SETUP.md +204 -5
- package/codeyam-cli/templates/expo-react-native/__tests__/.gitkeep +0 -0
- package/codeyam-cli/templates/expo-react-native/app/_layout.tsx +6 -3
- package/codeyam-cli/templates/expo-react-native/app/index.tsx +36 -0
- package/codeyam-cli/templates/expo-react-native/app.json +11 -0
- package/codeyam-cli/templates/expo-react-native/babel.config.js +1 -0
- package/codeyam-cli/templates/expo-react-native/gitignore +2 -0
- package/codeyam-cli/templates/expo-react-native/global.css +7 -0
- package/codeyam-cli/templates/expo-react-native/lib/theme.ts +73 -0
- package/codeyam-cli/templates/expo-react-native/package.json +32 -16
- package/codeyam-cli/templates/expo-react-native/patches/expo-modules-autolinking+3.0.24.patch +29 -0
- package/codeyam-cli/templates/isolation-route/expo-router.tsx.template +54 -0
- package/codeyam-cli/templates/nextjs-prisma-sqlite/gitignore +1 -0
- package/codeyam-cli/templates/nextjs-prisma-sqlite/seed-adapter.ts +47 -34
- package/codeyam-cli/templates/seed-adapters/supabase.ts +271 -78
- package/codeyam-cli/templates/skills/codeyam-editor/SKILL.md +17 -2
- package/package.json +1 -1
- package/packages/ai/src/lib/astScopes/methodSemantics.js +99 -0
- package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
- package/packages/ai/src/lib/astScopes/nodeToSource.js +16 -0
- package/packages/ai/src/lib/astScopes/nodeToSource.js.map +1 -1
- package/packages/ai/src/lib/astScopes/paths.js +12 -3
- package/packages/ai/src/lib/astScopes/paths.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +27 -10
- package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.js +9 -2
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +14 -4
- package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
- package/packages/analyze/index.js +1 -1
- package/packages/analyze/index.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +16 -2
- package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +6 -26
- package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +1 -0
- package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.js +14 -0
- package/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js +44 -11
- package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js.map +1 -1
- package/packages/analyze/src/lib/files/analyzeChange.js +1 -0
- package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
- package/packages/analyze/src/lib/files/analyzeInitial.js +1 -0
- package/packages/analyze/src/lib/files/analyzeInitial.js.map +1 -1
- package/packages/analyze/src/lib/files/analyzeNextRoute.js +5 -1
- package/packages/analyze/src/lib/files/analyzeNextRoute.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +120 -28
- package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +1368 -1193
- package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
- package/packages/database/src/lib/loadAnalysis.js +7 -1
- package/packages/database/src/lib/loadAnalysis.js.map +1 -1
- package/packages/database/src/lib/loadEntity.js +4 -4
- package/packages/database/src/lib/loadEntity.js.map +1 -1
- package/packages/utils/src/lib/fs/rsyncCopy.js +22 -1
- package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/Spinner-D0LgAaSa.js +0 -34
- package/codeyam-cli/src/webserver/build/client/assets/chunk-JZWAC4HX-BAdwhyCx.js +0 -43
- package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-DODLxLcw.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/editor._tab-Gbk_i5Js.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-CIVk0XQ0.js +0 -130
- package/codeyam-cli/src/webserver/build/client/assets/editorPreview-NTuLi4Xg.js +0 -41
- package/codeyam-cli/src/webserver/build/client/assets/globals-DAxKDFrC.css +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/manifest-1d628e67.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/root-qqqgSLyr.js +0 -67
- package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-BNd5hYuW.js +0 -2
- package/codeyam-cli/src/webserver/build/server/assets/analysisRunner-Cdh8iuUM.js +0 -13
- package/codeyam-cli/src/webserver/build/server/assets/init-Df6FdfSw.js +0 -10
- package/codeyam-cli/src/webserver/build/server/assets/server-build-Cy6GG-l1.js +0 -627
- package/codeyam-cli/templates/expo-react-native/app/(tabs)/_layout.tsx +0 -33
- package/codeyam-cli/templates/expo-react-native/app/(tabs)/index.tsx +0 -12
- package/codeyam-cli/templates/expo-react-native/app/(tabs)/settings.tsx +0 -12
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import*as Y from"fs/promises";import*as w from"path";import{P as J,w as H}from"./progress-CHTtrxFG.js";import{ab as V,ac as _,ad as G,ae as q,af as K,ag as Q,ah as X,ai as Z,aj as U,ak as ee,u as te,al as re,am as oe,an as ne}from"./server-build-Cy6GG-l1.js";import{spawn as W,execSync as se}from"child_process";import*as P from"fs";import{fileURLToPath as ie}from"url";import"fetch-retry";import"typescript";import"pluralize";import"piscina";import"json5";import"cli-spinners";import"chalk";import"react/jsx-runtime";import"node:stream";import"@react-router/node";import"react-router";import"isbot";import"react-dom/server";import"react";import"lucide-react";import"better-sqlite3";import"pg";import"kysely";import"kysely/helpers/sqlite";import"kysely/helpers/postgres";import"os";import"prompts";import"crypto";import"util";import"dotenv";import"events";import"uuid";import"http";import"net";import"ws";import"node-pty";import"openai";import"p-queue";import"p-retry";import"@aws-sdk/client-dynamodb";import"lru-cache";import"@aws-sdk/util-dynamodb";import"v8";import"react-syntax-highlighter";import"react-syntax-highlighter/dist/cjs/styles/prism/index.js";import"node:crypto";import"minimatch";import"react-markdown";import"remark-gfm";import"react-diff-viewer-continued";const ae=ie(import.meta.url),ce=w.dirname(ae);async function le(b){let i=b.port;const{rootPath:c,project:l,branch:E,processName:R="server"}=b;let u=!1;const{running:m,state:e,pids:v}=V();if(m&&e)if(e.cliVersion!==_)console.log(`CLI version mismatch (server: ${e.cliVersion??"unknown"} → CLI: ${_}), restarting server...`),G(),u=!0;else return{url:e.url,pid:e.pid,wasAlreadyRunning:!0};else m&&v&&v.length>0&&(q(i)||(i=K(i,q)));const j=`http://localhost:${i}`,S=w.join(ce,"..","webserver","bootstrap.js"),o=w.join(c,".codeyam","logs");P.existsSync(o)||P.mkdirSync(o,{recursive:!0});const A={CODEYAM_PORT:i.toString(),CODEYAM_ROOT_PATH:c,CODEYAM_PROJECT:l?JSON.stringify(l):"",CODEYAM_BRANCH:E?JSON.stringify(E):"",CODEYAM_PROCESS_NAME:`codeyam-${R}`,...u?{CODEYAM_WAIT_FOR_PORT:"true"}:{},...process.env.CODEYAM_TRACE_TRANSFORMS?{CODEYAM_TRACE_TRANSFORMS:process.env.CODEYAM_TRACE_TRANSFORMS}:{}};let p;if(process.platform==="win32")p=await pe(S,A,o);else{const s=P.openSync(w.join(o,"background-server.log"),"a"),r=P.openSync(w.join(o,"background-server-error.log"),"a"),f=W("node",["--max-old-space-size=8192",S],{detached:!0,stdio:["ignore",s,r],env:{...process.env,...A}});f.unref(),p=f.pid}try{const s=se(`lsof -ti:${i}`,{encoding:"utf8"}).trim();if(s){const r=s.split(`
|
|
2
|
-
`),f=r.find(C=>C===String(p)),d=r.filter(C=>C!==String(p));d.length>0&&console.warn(`[BackgroundServer] Port ${i} still held by other PID(s): ${d.join(", ")} (server PID: ${p})`)}}catch{}const L=`http://127.0.0.1:${i}/api/health`,y=6e4,D=500,a=Date.now();let g="",k=!1;for(;Date.now()-a<y;){try{process.kill(p,0)}catch{const r=((Date.now()-a)/1e3).toFixed(1);console.error(`[BackgroundServer] Server process (PID ${p}) died after ${r}s`);const f=w.join(o,"background-server.log");try{const $=P.readFileSync(f,"utf8").trim().split(`
|
|
3
|
-
`).slice(-15).join(`
|
|
4
|
-
`);console.error(`[BackgroundServer] Last log lines:
|
|
5
|
-
${$}`)}catch{console.error(`[BackgroundServer] Could not read log at: ${f}`)}const d=w.join(o,"background-server-error.log");try{const $=P.readFileSync(d,"utf8").trim().split(`
|
|
6
|
-
`).slice(-15).join(`
|
|
7
|
-
`);$&&console.error(`[BackgroundServer] Error log:
|
|
8
|
-
${$}`)}catch{}break}try{const r=await fetch(L);if(r.ok)break;g=`HTTP ${r.status}`}catch(r){g=r instanceof Error?r.message.split(`
|
|
9
|
-
`)[0]:String(r)}const s=Date.now()-a;s>=1e4&&!k?(console.log(`[BackgroundServer] Still waiting for server... (${(s/1e3).toFixed(0)}s, last: ${g})`),k=!0):s>=2e4&&s%1e4<D&&console.log(`[BackgroundServer] Still waiting... (${(s/1e3).toFixed(0)}s, last: ${g})`),await new Promise(r=>setTimeout(r,D))}if(Date.now()-a>=y){console.warn(`[BackgroundServer] Warning: Server did not become ready within ${y/1e3}s`),console.warn(`[BackgroundServer] Last error: ${g}`);const s=w.join(o,"background-server.log");try{const d=P.readFileSync(s,"utf8").trim().split(`
|
|
10
|
-
`).slice(-15).join(`
|
|
11
|
-
`);console.warn(`[BackgroundServer] Last log lines:
|
|
12
|
-
${d}`)}catch{console.warn(`[BackgroundServer] Could not read log at: ${s}`)}}const I={pid:p,port:i,url:j,startTime:Date.now(),projectRoot:c,logDir:o,cliVersion:_};return Q(I),{url:j,pid:p,wasAlreadyRunning:!1}}async function pe(b,i,c){const l=u=>u.replace(/'/g,"''"),E=w.join(c,"start-server.ps1"),R=Object.entries(i).map(([u,m])=>`$env:${u} = '${l(m)}'`);return P.writeFileSync(E,[...R,`$env:CODEYAM_LOG_DIR = '${l(c)}'`,`$bootstrapPath = '${l(b)}'`,`$p = Start-Process -FilePath "node" -ArgumentList ('--max-old-space-size=8192', '"{0}"' -f $bootstrapPath) -WindowStyle Hidden -PassThru`,"Write-Output $p.Id"].join(`
|
|
13
|
-
`)),new Promise((u,m)=>{const e=W("powershell.exe",["-NoProfile","-ExecutionPolicy","Bypass","-File",E],{windowsHide:!0,stdio:["ignore","pipe","pipe"]});let v="",j="";e.stdout.on("data",o=>{v+=o.toString()}),e.stderr.on("data",o=>{j+=o.toString()});const S=setTimeout(()=>{e.kill(),m(new Error("Timed out waiting for PowerShell to start server (30s)"))},3e4);e.on("close",o=>{if(clearTimeout(S),o!==0){m(new Error(`Failed to start server via PowerShell (exit ${o}): ${j}`));return}const A=parseInt(v.trim(),10);if(isNaN(A)){m(new Error(`Failed to parse server PID from PowerShell output: ${v}`));return}u(A)})})}async function it(b){const{projectRoot:i,filePaths:c,entityNames:l,progress:E,context:R,scenarioCount:u,onlyDataStructure:m}=b,e=E||new J(!1);try{const t=X(i)}catch(t){throw e.fail("AI service configuration error"),t}const v=w.join(i,".codeyam","config.json");e.start("Loading project configuration...");const j=JSON.parse(await Y.readFile(v,"utf8")),{projectSlug:S,branchId:o}=j;if(!S||!o)throw e.fail("Invalid project configuration"),new Error("Missing project slug or branch ID. Try reinitializing with: codeyam init --force");if(e.succeed("Loaded project configuration"),e.start("Validating environment..."),!await H(()=>ne()))throw e.fail("Environment validation failed"),new Error("Environment validation failed");e.succeed("Environment validated"),e.start("Loading project from database...");const{project:p,branch:L}=await Z(S);e.succeed("Loaded project and branch"),e.start("Starting web server...");const{url:y,wasAlreadyRunning:D}=await le({port:3111,rootPath:i,project:p,branch:L});D?e.succeed(`Web server already running at ${y}`):e.succeed(`Web server started at ${y}`);let a=[];if(l&&l.length>0){e.start(`Looking up ${l.length} entities...`);const t=await U({projectId:p.id,names:l,filePaths:c});if(t.length===0)throw e.fail(`No entities found with names: ${l.join(", ")}`),new Error(`Entities not found: ${l.join(", ")}`);a=t.map(n=>n.sha),e.succeed(`Found ${t.length} entities`)}else{e.start(`Looking up entities in ${c.length} files...`);const t=await U({projectId:p.id,filePaths:c});t.length>0?(a=t.map(n=>n.sha),e.succeed(`Found ${t.length} existing entities in database for ${c.length} files`)):e.succeed("No existing entities found (will be discovered)")}e.start("Snapshotting current code for analysis...");const g=await ee(p,L,c);e.succeed("Code snapshot created"),await te({commitSha:g.sha,runStatusUpdate:{queuedAt:new Date().toISOString(),currentEntityShas:a,entityCount:a.length>0?a.length:c.length,analysesCompleted:0,capturesCompleted:0,createdAt:new Date().toISOString()},updateCallback:t=>{const n=t.currentRun;if(n&&n.id&&n.archivedAt)return;n&&(n.analysesCompleted&&n.analysesCompleted>0||n.capturesCompleted&&n.capturesCompleted>0)&&re(t)}}),e.start("Enqueueing analysis job...");const k=await fetch(`${y}/api/queue`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"enqueue",type:"analysis",commitSha:g.sha,projectSlug:S,filePaths:c,entityShas:a,entityNames:l,...R?{context:R}:{},...u?{scenarioCount:u}:{},...m?{onlyDataStructure:!0}:{}})});if(!k.ok){const t=await k.json();throw new Error(`Failed to enqueue job: ${t.error||k.statusText}`)}const{jobId:I}=await k.json();e.succeed(`Job queued (${I.substring(0,8)})`),e.start(m?"Running import analysis...":"Running analysis and capture...");const s=oe(S);let r=0,f=0;const d=[],C=async()=>{try{const t=await Y.stat(s);if(t.size>r){const n=(await import("fs")).createReadStream(s,{start:r,encoding:"utf8"});let h="";for await(const O of n)h+=O;r=t.size;const T=/CodeYam Log Level \d+: (.+)/g;let x;const M=[];for(;(x=T.exec(h))!==null;){const O=x[1];M.push(O)}const z=/CodeYam Error: (.+)/g;let N;for(;(N=z.exec(h))!==null;){const O=N[1];d.includes(O)||d.push(O)}const B=Date.now();M.length>0&&B-f>500&&(e.update(M[M.length-1]),f=B)}}catch{}},F=setInterval(()=>{C().catch(()=>{})},500);try{let n=!1;for(;!n;){await new Promise(x=>setTimeout(x,1e3));const h=await fetch(`${y}/api/queue?queryType=job&jobId=${encodeURIComponent(I)}`);if(!h.ok)throw new Error(`Failed to check job status: ${h.statusText}`);const T=await h.json();if(T.status==="failed")throw new Error(`Analysis failed: ${T.error||"Unknown error"}`);T.status==="completed"&&(n=!0)}d.length>0?(e.warn(`Analysis completed with ${d.length} error(s):`),d.slice(0,5).forEach(h=>{console.log(` • ${h.substring(0,200)}${h.length>200?"...":""}`)}),d.length>5&&console.log(` ... and ${d.length-5} more errors`)):e.succeed("Analysis completed")}catch(t){throw e.fail("Analysis failed"),t&&typeof t=="object"&&!("commitSha"in t)&&(t.commitSha=g.sha,t.entityShas=a),t}finally{F&&clearInterval(F)}let $;return a.length===1?$=`http://localhost:3111/entity/${a[0]}`:$=`http://localhost:3111/commit/${g.sha}`,{commitSha:g.sha,entityShas:a,url:$}}export{it as runAnalysisForEntities};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import*as m from"fs/promises";import*as y from"fs";import*as e from"path";import x from"chalk";import{execSync as F}from"child_process";import{h as _,s as b,e as v,P as B,i as E,w as R}from"./progress-CHTtrxFG.js";import{ao as I,ap as W,aq as M,ab as O,ad as T,ar as U,as as A,at as G,F as q,I as Y,an as z,au as N,av as J,x as P}from"./server-build-Cy6GG-l1.js";import"fetch-retry";import"typescript";import{fileURLToPath as L}from"url";import"cli-spinners";import"react/jsx-runtime";import"node:stream";import"@react-router/node";import"react-router";import"isbot";import"react-dom/server";import"react";import"lucide-react";import"better-sqlite3";import"pg";import"kysely";import"kysely/helpers/sqlite";import"kysely/helpers/postgres";import"os";import"prompts";import"crypto";import"util";import"dotenv";import"events";import"uuid";import"http";import"net";import"ws";import"node-pty";import"openai";import"p-queue";import"p-retry";import"@aws-sdk/client-dynamodb";import"lru-cache";import"pluralize";import"piscina";import"json5";import"@aws-sdk/util-dynamodb";import"v8";import"react-syntax-highlighter";import"react-syntax-highlighter/dist/cjs/styles/prism/index.js";import"node:crypto";import"minimatch";import"react-markdown";import"remark-gfm";import"react-diff-viewer-continued";function H(a){try{const r=F("git config --get remote.origin.url",{cwd:a,encoding:"utf8"}).trim().match(/github\.com[:/]([^/]+)\/([^/]+?)(?:\.git)?$/);if(r)return`${r[1]}-${r[2]}`}catch{}return e.basename(a)}const V=L(import.meta.url),K=e.dirname(V);async function g(a,t){await m.mkdir(t,{recursive:!0});const r=await m.readdir(a,{withFileTypes:!0});for(const i of r){const s=e.join(a,i.name),o=e.join(t,i.name);i.isDirectory()?await g(s,o):(await m.copyFile(s,o),(i.name.endsWith(".sh")||i.name.endsWith(".mjs"))&&await m.chmod(o,493))}}async function Q(a,t){const r=(t==null?void 0:t.mode)??"memory";try{const i=e.join(a,".claude","skills"),s=e.join(K,"../../templates"),o=e.join(s,"skills"),n=e.join(s,"commands"),u=e.join(i,"codeyam-memory"),p=e.join(i,"codeyam-new-rule");await g(e.join(o,"codeyam-memory"),u),await g(e.join(o,"codeyam-new-rule"),p);const w=r==="editor"||(t==null?void 0:t.editorMode)===!0;if(w){const c=e.join(i,"codeyam-editor");await g(e.join(o,"codeyam-editor"),c);const f=e.join(a,"CLAUDE.md");try{await m.access(f)}catch{await m.copyFile(e.join(s,"codeyam-editor-claude.md"),f)}const d=e.join(a,".codeyam","docs");await m.mkdir(d,{recursive:!0}),await m.copyFile(e.join(s,"codeyam-editor-reference.md"),e.join(d,"editor-reference.md"))}if(r==="full"){const c=e.join(i,"codeyam-setup"),f=e.join(i,"codeyam-sim"),d=e.join(i,"codeyam-test"),h=e.join(i,"codeyam-verify"),S=e.join(i,"codeyam-dev-mode");await g(e.join(o,"codeyam-setup"),c),await g(e.join(o,"codeyam-sim"),f),await g(e.join(o,"codeyam-test"),d),await g(e.join(o,"codeyam-verify"),h),await g(e.join(o,"codeyam-dev-mode"),S);const k=e.join(a,".claude","commands");await m.mkdir(k,{recursive:!0}),await m.copyFile(e.join(n,"codeyam-diagnose.md"),e.join(k,"codeyam-diagnose.md"))}const l=e.join(a,".codeyam","bin");await m.mkdir(l,{recursive:!0});const j=e.join(a,".codeyam","rules");if(await m.mkdir(j,{recursive:!0}),w){try{const c=e.join(l,"editor-step-hook.py");await m.copyFile(e.join(s,"editor-step-hook.py"),c),await m.chmod(c,493)}catch{}try{const c=e.join(s,"seed-adapters"),f=e.join(a,".codeyam","seed-adapters");await g(c,f)}catch{}}try{const c=e.join(l,"memory-hook.sh");await m.copyFile(e.join(s,"codeyam-memory-hook.sh"),c),await m.chmod(c,493)}catch{}try{const c=e.join(l,"rule-reflection-hook.py");await m.copyFile(e.join(s,"rule-reflection-hook.py"),c),await m.chmod(c,493)}catch{}try{const c=e.join(l,"rule-notification-hook.py");await m.copyFile(e.join(s,"rule-notification-hook.py"),c),await m.chmod(c,493)}catch{}try{const c=e.join(l,"prompts");await m.mkdir(c,{recursive:!0});const f=await m.readdir(e.join(s,"prompts"));for(const d of f)await m.copyFile(e.join(s,"prompts",d),e.join(c,d))}catch{}try{await m.copyFile(e.join(s,"rules-instructions.md"),e.join(j,"instructions.md"))}catch{}return{success:!0,skillsPath:e.relative(a,i)}}catch(i){return{success:!1,error:i instanceof Error?i.message:String(i)}}}function X(a,t){const r=(t==null?void 0:t.mode)??"memory";try{const i=e.join(a,".claude"),s=e.join(i,"settings.local.json");y.existsSync(i)||y.mkdirSync(i,{recursive:!0});let o={};if(y.existsSync(s))try{const c=y.readFileSync(s,"utf8");o=JSON.parse(c)}catch{console.warn(`Warning: Could not parse ${s}, will create new file`)}o.permissions||(o.permissions={}),o.permissions.allow||(o.permissions.allow=[]);const n=["Skill(codeyam-memory)","Skill(codeyam-new-rule)","Bash(codeyam)","Bash(codeyam:*)","Read(.codeyam/**)","Edit(.codeyam/**)","Write(.codeyam/**)","Glob(.codeyam/**)"],u=["Skill(codeyam-setup)","Skill(codeyam-sim)","Skill(codeyam-debug)","Skill(codeyam-test)","Skill(codeyam-verify)","Skill(codeyam-dev-mode)","Read(/tmp/**)","Edit(/tmp/**)","Write(/tmp/**)","Glob(/tmp/**)","Bash(npm install:*)","Bash(npm run:*)","Bash(npx:*)","Bash(node:*)","Bash(cp:*)","Bash(mkdir:*)","Bash(chmod:*)","Bash(rm:*)","Bash(curl:*)","Bash(sleep:*)","Bash(echo:*)","Bash(grep:*)","Bash(python3:*)","Bash(cat:*)","Bash(printf:*)","Bash(ls:*)"],p=["Skill(codeyam-editor)","Bash(git:*)","Edit(**)","Write(**)"],w=r==="editor"||(t==null?void 0:t.editorMode)===!0;let l;if(r==="full"?l=[...n,...u]:r==="editor"?l=[...n,...p,...u]:l=n,w&&r!=="editor")for(const c of[...p,...u])l.includes(c)||l.push(c);let j=!1;for(const c of l)o.permissions.allow.includes(c)||(o.permissions.allow.push(c),j=!0);if(w){o.hooks||(o.hooks={});const c='test -f "$CLAUDE_PROJECT_DIR"/.codeyam/bin/editor-step-hook.py && python3 "$CLAUDE_PROJECT_DIR"/.codeyam/bin/editor-step-hook.py || true';for(const f of["PostToolUse","Stop","UserPromptSubmit"]){const d=o.hooks[f]||[];d.some(S=>{var k;return(k=S.hooks)==null?void 0:k.some(C=>{var $;return($=C.command)==null?void 0:$.includes("editor-step-hook")})})||(d.push({hooks:[{type:"command",command:c,timeout:5}]}),o.hooks[f]=d,j=!0)}}return j&&y.writeFileSync(s,JSON.stringify(o,null,2),"utf8"),!0}catch(i){return console.warn(`Warning: Could not configure Claude Code settings: ${i.message}`),!1}}function Z(a){return y.existsSync(a)?y.readFileSync(a,"utf8").split(`
|
|
2
|
-
`).map(r=>r.trim()).filter(r=>r&&!r.startsWith("#")).map(r=>r.startsWith("/")?r.slice(1):r):[]}function ee(a){const t=[];function r(i){const s=e.join(i,".gitignore");if(y.existsSync(s)){const o=Z(s),n=e.relative(a,i),u=o.map(p=>n?e.join(n,p):p);t.push(...u)}try{const o=y.readdirSync(i,{withFileTypes:!0});for(const n of o)n.isDirectory()&&n.name!=="node_modules"&&n.name!==".git"&&n.name!=="dist"&&n.name!=="build"&&r(e.join(i,n.name))}catch{}}return r(a),t}function te(a){let t=a.replace(/\/$/,"");const r=t.startsWith("**/");r&&(t=t.slice(3));const i=t.startsWith("/");return i&&(t=t.slice(1)),t=t.replace(/[.+^${}()|[\]\\*?]/g,"\\$&"),t=t.replace(/\\\*\\\*/g,".*").replace(/\\\*/g,"[^/]*").replace(/\\\?/g,"."),i&&!r?`^${t}(/.*)?$`:`^(.*/)?${t}(/.*)?$`}function oe(){return["^(.*/)?node_modules/.*$","^(.*/)?dist/.*$","^(.*/)?build/.*$","^(.*/)?\\.next/.*$","^(.*/)?out/.*$","^(.*/)?\\.cache/.*$","^(.*/)?__tests__/.*$","^(.*/)?__mocks__/.*$","^(.*/)?.+\\.test\\.(ts|tsx|js|jsx)$","^(.*/)?.+\\.spec\\.(ts|tsx|js|jsx)$","^(.*/)?test/.*$","^(.*/)?tests/.*$","^(.*/)?__test","^(.*/)?\\.git/.*$","^(.*/)?coverage/.*$","^(.*/)?\\.nyc_output/.*$","^(.*/)?\\.vscode/.*$","^(.*/)?\\.idea/.*$","^(.*/)?\\.DS_Store$"]}function ie(a){const t=oe();try{const i=ee(a).filter(o=>o.trim().length>0).map(o=>te(o)),s=[...t,...i];return Array.from(new Set(s))}catch(r){return console.warn("Failed to load gitignore patterns:",r),t}}const tt={command:"init",describe:"Initialize a project for CodeYam CLI analysis",builder:{force:{type:"boolean",alias:"f",describe:"Force initialization even if .codeyam already exists",default:!1},"keep-server":{type:"boolean",describe:"Skip stopping the running CodeYam server (use when running inside the editor)",default:!1}},handler:async a=>{_("Initializing CodeYam CLI project");let t=I();if(t&&!a.force){b("Project already initialized. Use --force to reinitialize.");return}if(t||(t=process.cwd()),W(t)){v("Cannot initialize CodeYam in your home directory or filesystem root."),v("Please run codeyam init from inside a project directory.");return}M(t);const{running:r}=O();r&&!a["keep-server"]&&(T()?b("CodeYam server stopped"):v("Failed to stop CodeYam server - it may have already stopped"));const i=e.join(t,".codeyam"),s=e.join(i,"config.json"),o=new B;try{o.start("Setting up project scaffolding..."),await m.mkdir(i,{recursive:!0}),await ae(t),o.succeed("Project scaffolding ready");let n=H(t);try{const d=JSON.parse(y.readFileSync(s,"utf8"));d.projectSlug&&!d.projectSlug.startsWith("local-")&&(n=d.projectSlug)}catch{}const u=re(t);let p=[];try{p=U(t)}catch{}if(p.length>0){const d=p.map(h=>`${h.path==="."?"Root":h.path} (${h.framework})`).join(", ");E(`Found ${p.length} web application${p.length>1?"s":""}: ${d}`)}o.start("Configuring project...");const w=A(s),l={projectSlug:n,packageManager:u,webapps:p,environmentVariables:[],createdAt:new Date().toISOString(),...w};await m.writeFile(s,JSON.stringify(l,null,2));const j=G();if(!y.existsSync(j)){const d=q(j);await Y(d)}if(!await R(()=>z())){o.fail("Environment validation failed");return}try{const{project:d}=await N({slug:n,packageManager:u,unapprovedPaths:ie(t),webapps:p});o.succeed("Project configured"),o.start("Installing Claude Code skills...");const h=!!a["keep-server"],S=await Q(t,{mode:h?"editor":"memory",editorMode:h}),{branch:k}=await J(d);l.branchId=k.id,await m.writeFile(s,JSON.stringify(l,null,2)),X(t,{mode:h?"editor":"memory",editorMode:h}),S.success?o.succeed("Claude Code skills installed"):o.warn("Could not install skills");try{a["keep-server"]?await P({projectSlug:n,metadataUpdate:{editorMode:!0,labs:{simulations:!0}}}):await P({projectSlug:n,metadataUpdate:{labs:{simulations:!1}}})}catch{}l.aiMode="interactive"}catch(d){o.fail("Failed to create project"),v(d.message);return}const f=p.length>0?`, ${p.map(d=>d.framework).join(", ")}`:"";console.log(),b(`✨ Initialized ${n} (${u}${f})`),a.autoInit||(console.log(),console.log(x.bold(' Run "codeyam" to start the dashboard')),console.log(' Run "codeyam --help" for all commands'))}catch(n){o.fail("Failed to initialize project"),v(n.message),process.exit(1)}}};function re(a){return y.existsSync(e.join(a,"pnpm-lock.yaml"))?"pnpm":y.existsSync(e.join(a,"yarn.lock"))?"yarn":(y.existsSync(e.join(a,"package-lock.json")),"npm")}const D=[".codeyam/db.sqlite3",".codeyam/db.sqlite3-wal",".codeyam/db.sqlite3-shm",".codeyam/secrets.json",".codeyam/server.json",".codeyam/server-state.json",".codeyam/queue.json",".codeyam/active-scenario.json",".codeyam/editor-step.json",".codeyam/editor-user-prompt.txt",".codeyam/claude-session-id.txt",".codeyam/editor-mode-context.md",".codeyam/dev-mode-context.md",".codeyam/logs/",".codeyam/llm-calls/",".codeyam/captures/",".codeyam/results/",".codeyam/tmp/",".codeyam/rules/",".codeyam/bin/",".codeyam/docs/"];async function ae(a){const t=e.join(a,".gitignore");let r="";try{r=await m.readFile(t,"utf8")}catch{}const i=r.split(`
|
|
3
|
-
`),s=i.findIndex(n=>n.trim()===".codeyam"||n.trim()==="/.codeyam");if(s!==-1){const n=s>0&&i[s-1].trim().startsWith("# CodeYam local files")?s-1:s;i.splice(n,s-n+1),r=i.join(`
|
|
4
|
-
`)}if(!D.some(n=>i.some(u=>u.trim()===n))){const n=`
|
|
5
|
-
# CodeYam - local only (not shared)
|
|
6
|
-
`+D.join(`
|
|
7
|
-
`)+`
|
|
8
|
-
`,u=r+(r&&!r.endsWith(`
|
|
9
|
-
`)?`
|
|
10
|
-
`:"")+n;await m.writeFile(t,u,"utf8")}}export{tt as default};
|