@codeyam/codeyam-cli 0.1.0-staging.b8b17a5 → 0.1.0-staging.ba3f279
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 +2 -2
- 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 +10 -6
- package/analyzer-template/packages/analyze/src/lib/files/analyze/gatherEntityMap.ts +9 -12
- 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 +1 -1
- package/analyzer-template/packages/database/package.json +1 -1
- package/analyzer-template/packages/database/src/lib/loadAnalysis.ts +25 -15
- package/analyzer-template/packages/database/src/lib/loadEntity.ts +19 -8
- 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 +5 -5
- 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/analyzeFileEntities.ts +26 -0
- package/analyzer-template/project/runMultiScenarioServer.ts +26 -3
- package/background/src/lib/virtualized/project/analyzeFileEntities.js +22 -0
- package/background/src/lib/virtualized/project/analyzeFileEntities.js.map +1 -1
- 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/cli.js +15 -0
- package/codeyam-cli/src/cli.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__/editor.stepDispatch.test.js +9 -9
- package/codeyam-cli/src/commands/editor.js +1906 -468
- 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 +1 -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__/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 +2114 -70
- package/codeyam-cli/src/utils/__tests__/editorAudit.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/editorCaptureScenarioSeeding.test.js +137 -0
- package/codeyam-cli/src/utils/__tests__/editorCaptureScenarioSeeding.test.js.map +1 -0
- package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js +66 -0
- package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/editorGuardMiddleware.test.js +67 -0
- package/codeyam-cli/src/utils/__tests__/editorGuardMiddleware.test.js.map +1 -0
- 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__/editorScenarioSwitch.test.js +190 -0
- package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js +249 -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 +266 -2
- package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/glossaryAdd.test.js +177 -0
- package/codeyam-cli/src/utils/__tests__/glossaryAdd.test.js.map +1 -0
- package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js +16 -1
- package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js.map +1 -1
- 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__/registerScenarioResult.test.js +127 -0
- package/codeyam-cli/src/utils/__tests__/registerScenarioResult.test.js.map +1 -0
- package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js +57 -0
- package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js +180 -1
- package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/screenshotHash.test.js +84 -0
- package/codeyam-cli/src/utils/__tests__/screenshotHash.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 +36 -7
- 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/backgroundServer.js +1 -1
- package/codeyam-cli/src/utils/backgroundServer.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 +499 -43
- package/codeyam-cli/src/utils/editorAudit.js.map +1 -1
- package/codeyam-cli/src/utils/editorGuard.js +36 -0
- package/codeyam-cli/src/utils/editorGuard.js.map +1 -0
- package/codeyam-cli/src/utils/editorPreview.js +5 -3
- package/codeyam-cli/src/utils/editorPreview.js.map +1 -1
- package/codeyam-cli/src/utils/editorRecapture.js +109 -0
- package/codeyam-cli/src/utils/editorRecapture.js.map +1 -0
- package/codeyam-cli/src/utils/editorScenarioSwitch.js +39 -2
- package/codeyam-cli/src/utils/editorScenarioSwitch.js.map +1 -1
- package/codeyam-cli/src/utils/editorScenarios.js +131 -7
- 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.js +31 -3
- package/codeyam-cli/src/utils/entityChangeStatus.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/glossaryAdd.js +74 -0
- package/codeyam-cli/src/utils/glossaryAdd.js.map +1 -0
- package/codeyam-cli/src/utils/install-skills.js +5 -0
- 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 +35 -6
- package/codeyam-cli/src/utils/queue/job.js.map +1 -1
- package/codeyam-cli/src/utils/registerScenarioResult.js +52 -0
- package/codeyam-cli/src/utils/registerScenarioResult.js.map +1 -0
- package/codeyam-cli/src/utils/scenarioCoverage.js +4 -1
- package/codeyam-cli/src/utils/scenarioCoverage.js.map +1 -1
- package/codeyam-cli/src/utils/scenariosManifest.js +66 -2
- package/codeyam-cli/src/utils/scenariosManifest.js.map +1 -1
- package/codeyam-cli/src/utils/screenshotHash.js +26 -0
- package/codeyam-cli/src/utils/screenshotHash.js.map +1 -0
- package/codeyam-cli/src/utils/simulationGateMiddleware.js +9 -0
- package/codeyam-cli/src/utils/simulationGateMiddleware.js.map +1 -1
- 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 +98 -0
- package/codeyam-cli/src/webserver/__tests__/api.interactive-switch-scenario.test.js.map +1 -0
- package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js +68 -1
- package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js.map +1 -1
- package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js +30 -11
- package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js.map +1 -1
- package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js +190 -21
- package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js.map +1 -1
- package/codeyam-cli/src/webserver/__tests__/stripClaudeCommand.test.js +135 -0
- package/codeyam-cli/src/webserver/__tests__/stripClaudeCommand.test.js.map +1 -0
- package/codeyam-cli/src/webserver/app/lib/clientErrors.js +22 -1
- package/codeyam-cli/src/webserver/app/lib/clientErrors.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/backgroundServer.js +42 -57
- package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{CopyButton-CzTDWkF2.js → CopyButton-CLe80MMu.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-BFbq6iFk.js → EntityItem-Crt_KN_U.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-B6OMi58N.js → EntityTypeIcon-CD7lGABo.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{InlineSpinner-DuYodzo1.js → InlineSpinner-CgTNOhnu.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-CXo9EeCl.js → InteractivePreview-DtYTSPL2.js} +2 -2
- package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-DYCNb2It.js → LibraryFunctionPreview-D3s1MFkb.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-CZgY3sxX.js → LogViewer-CM5zg40N.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/MiniClaudeChat-CQENLSrF.js +36 -0
- package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-CnYYwRDw.js → ReportIssueModal-C2PLkej3.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-CDoF7ZpU.js → SafeScreenshot-DanvyBPb.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-DrnfvaLL.js → ScenarioViewer-CefgqbCr.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/Spinner-Bc8BG-Lw.js +34 -0
- package/codeyam-cli/src/webserver/build/client/assets/{ViewportInspectBar-DRKR9T0U.js → ViewportInspectBar-BA_Ry-rs.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{_index-ClR-g3tY.js → _index-C1YkzTAV.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{activity.(_tab)-DTH6ydEA.js → activity.(_tab)-yH46LLUz.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{addon-web-links-74hnHF59.js → addon-web-links-CHx25PAe.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{agent-transcripts-B8CYhCO9.js → agent-transcripts-Bg3e7q4S.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/api.editor-recapture-stale-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.editor-save-scenario-data-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.editor-schema-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-CLaoh4ac.js → book-open-CL-lMgHh.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-BZ2DZxbW.js → chevron-down-GmAjGS9-.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{chunk-JZWAC4HX-BBXArFPl.js → chunk-JZWAC4HX-BAdwhyCx.js} +11 -11
- package/codeyam-cli/src/webserver/build/client/assets/{circle-check-CT4unAk-.js → circle-check-DFcQkN5j.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{copy-zK0B6Nu-.js → copy-C6iF61Xs.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-DJB0YQJL.js → createLucideIcon-4ImjHTVC.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-CCKUIm0S.svg → cy-logo-cli-DoA97ML3.svg} +2 -2
- package/codeyam-cli/src/webserver/build/client/assets/{dev.empty-CkXFP_i-.js → dev.empty-CRepiabR.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/editor._tab-Gbk_i5Js.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-CRxPi2BB.js +96 -0
- package/codeyam-cli/src/webserver/build/client/assets/editorPreview-CluPkvXJ.js +41 -0
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-BqAN7hyG.js → entity._sha._-DYJRGiDI.js} +13 -12
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha.scenarios._scenarioId.dev-D1eikpe1.js → entity._sha.scenarios._scenarioId.dev-wdiwx5-Z.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha.scenarios._scenarioId.fullscreen-Dg1NhIms.js → entity._sha.scenarios._scenarioId.fullscreen-BrkN-40Y.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.create-scenario-CJX6kkkV.js → entity._sha_.create-scenario-DxfhekTZ.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-BhVjZhKg.js → entity._sha_.edit._scenarioId-CRXJWmpB.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entry.client-_gzKltPN.js → entry.client-SuW9syRS.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{files-CV_17tZS.js → files-D-xGrg29.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{git-D-YXmMbR.js → git-Bq_fbXP5.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/globals-BsGHu8WX.css +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{index-CCrgCshv.js → index-Bp1l4hSv.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{index-BsX0F-9C.js → index-CWV9XZiG.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{index-Blo6EK8G.js → index-DE3jI_dv.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{labs-Byazq8Pv.js → labs-B_IX45ih.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-DVQ0oHR7.js → loader-circle-De-7qQ2u.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/manifest-9032538f.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{memory-b-VmA2Vj.js → memory-Cx2xEx7s.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{pause-DGcndCAa.js → pause-CFxEKL1u.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/root-dKFRTYcy.js +80 -0
- package/codeyam-cli/src/webserver/build/client/assets/{search-C0Uw0bcK.js → search-BdBb5aqc.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{settings-OoNgHIfW.js → settings-DdE-Untf.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{simulations-Bcemfu8a.js → simulations-DSCdE99u.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{terminal-BgMmG7R9.js → terminal-CrplD4b1.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-Cs87hJYK.js → triangle-alert-DqJ0j69l.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{useCustomSizes-BR3Rs7JY.js → useCustomSizes-DhXHbEjP.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-D9QZKaLJ.js +2 -0
- package/codeyam-cli/src/webserver/build/client/assets/{useReportContext-BermyNU5.js → useReportContext-Cy5Qg_UR.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{useToast-a_QN_W9_.js → useToast-5HR2j9ZE.js} +1 -1
- package/codeyam-cli/src/webserver/build/server/assets/analysisRunner-OLsM110H.js +16 -0
- package/codeyam-cli/src/webserver/build/server/assets/{index-CHymws6l.js → index-WHdB6WTN.js} +1 -1
- package/codeyam-cli/src/webserver/build/server/assets/{init-D3HkMDbI.js → init-DbSiZoE6.js} +2 -2
- package/codeyam-cli/src/webserver/build/server/assets/server-build-DZbLY6O_.js +690 -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 +55 -3
- package/codeyam-cli/src/webserver/editorProxy.js.map +1 -1
- package/codeyam-cli/src/webserver/idleDetector.js +65 -8
- package/codeyam-cli/src/webserver/idleDetector.js.map +1 -1
- package/codeyam-cli/src/webserver/scripts/journalCapture.ts +53 -0
- package/codeyam-cli/src/webserver/server.js +52 -14
- package/codeyam-cli/src/webserver/server.js.map +1 -1
- package/codeyam-cli/src/webserver/terminalServer.js +153 -32
- package/codeyam-cli/src/webserver/terminalServer.js.map +1 -1
- package/codeyam-cli/templates/__tests__/editor-step-hook.prompt-capture.test.ts +118 -0
- package/codeyam-cli/templates/codeyam-editor-claude.md +2 -0
- package/codeyam-cli/templates/codeyam-editor-reference.md +216 -0
- 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 +93 -46
- 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/seed-adapter.ts +47 -34
- package/codeyam-cli/templates/seed-adapters/supabase.ts +101 -9
- package/codeyam-cli/templates/skills/codeyam-editor/SKILL.md +34 -1
- 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 +3 -2
- package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js +9 -7
- package/packages/analyze/src/lib/files/analyze/gatherEntityMap.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 +5 -5
- 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-Df3UCi8k.js +0 -34
- package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-DcX-ZS3p.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/editor._tab-DPw7NZHc.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-DYqG1D_d.js +0 -58
- package/codeyam-cli/src/webserver/build/client/assets/editorPreview-DggyRwOr.js +0 -41
- package/codeyam-cli/src/webserver/build/client/assets/globals-DRvOjyO3.css +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/manifest-f4212c17.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/root-F-k2uYj5.js +0 -67
- package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-BxxP_XF9.js +0 -2
- package/codeyam-cli/src/webserver/build/server/assets/analysisRunner-if8kM_1Q.js +0 -13
- package/codeyam-cli/src/webserver/build/server/assets/server-build-DTCzJQiH.js +0 -551
- 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
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
# Neo-Brutalist Design System
|
|
2
|
+
|
|
3
|
+
> Hard-edged, warm, editorial UI. Offset shadows, bold borders, hot pink accent. For any web or mobile app.
|
|
4
|
+
|
|
5
|
+
## Philosophy
|
|
6
|
+
|
|
7
|
+
Heavy black borders and offset box shadows create a "printed" feel. Warm off-white base (never pure white or grey). Typography is heavy and confident. No gradients. No rounded corners over 18px.
|
|
8
|
+
|
|
9
|
+
**Rules:**
|
|
10
|
+
|
|
11
|
+
1. Cards always have `border: 2px solid` + offset box shadow
|
|
12
|
+
2. Interactive elements "press" on hover/active (`translate(2px, 2px)`, shadow removed)
|
|
13
|
+
3. Dark mode inverts backgrounds but keeps accent colors identical
|
|
14
|
+
4. Dark cards/sidebar stay dark in both modes
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Colors
|
|
19
|
+
|
|
20
|
+
### Light Mode
|
|
21
|
+
|
|
22
|
+
```css
|
|
23
|
+
[data-theme='light'] {
|
|
24
|
+
--bg-base: #f5f0e8; /* warm off-white page bg */
|
|
25
|
+
--bg-surface: #ffffff; /* cards, panels */
|
|
26
|
+
--bg-muted: #ede8de; /* subtle sections, table headers */
|
|
27
|
+
--bg-inverse: #0d0d0d; /* dark surfaces */
|
|
28
|
+
|
|
29
|
+
--text-primary: #0d0d0d;
|
|
30
|
+
--text-secondary: #666666;
|
|
31
|
+
--text-muted: #999999;
|
|
32
|
+
--text-inverse: #ffffff;
|
|
33
|
+
|
|
34
|
+
--border: #0d0d0d;
|
|
35
|
+
--border-light: #e5ddd0; /* internal dividers */
|
|
36
|
+
|
|
37
|
+
--shadow-sm: 2px 2px 0px #0d0d0d;
|
|
38
|
+
--shadow-md: 4px 4px 0px #0d0d0d;
|
|
39
|
+
--shadow-lg: 6px 6px 0px #0d0d0d;
|
|
40
|
+
--shadow-accent: 4px 4px 0px #ff90e8;
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Dark Mode
|
|
45
|
+
|
|
46
|
+
```css
|
|
47
|
+
[data-theme='dark'] {
|
|
48
|
+
--bg-base: #111111;
|
|
49
|
+
--bg-surface: #1a1a1a;
|
|
50
|
+
--bg-muted: #222222;
|
|
51
|
+
--text-primary: #f5f0e8;
|
|
52
|
+
--text-secondary: #aaaaaa;
|
|
53
|
+
--text-muted: #666666;
|
|
54
|
+
--text-inverse: #0d0d0d;
|
|
55
|
+
--border: #f5f0e8;
|
|
56
|
+
--border-light: #2a2a2a;
|
|
57
|
+
--shadow-sm: 2px 2px 0px #f5f0e8;
|
|
58
|
+
--shadow-md: 4px 4px 0px #f5f0e8;
|
|
59
|
+
--shadow-lg: 6px 6px 0px #f5f0e8;
|
|
60
|
+
/* Accents unchanged. Dark cards/sidebar unchanged. */
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Respect `@media (prefers-color-scheme: dark)` on `:root:not([data-theme="light"])`.
|
|
65
|
+
|
|
66
|
+
### Accents
|
|
67
|
+
|
|
68
|
+
```css
|
|
69
|
+
/* These don't change between modes */
|
|
70
|
+
--pink: #ff90e8; /* primary: CTAs, active nav, highlights */
|
|
71
|
+
--pink-light: #ffe4f8;
|
|
72
|
+
--teal: #14b8a6; /* secondary: success states, live data */
|
|
73
|
+
--teal-light: #ccfbf1;
|
|
74
|
+
--teal-dark: #0f766e;
|
|
75
|
+
--yellow: #facc15; /* tertiary: alerts, featured labels */
|
|
76
|
+
--yellow-light: #fef9c3;
|
|
77
|
+
--yellow-dark: #ca8a04;
|
|
78
|
+
--orange: #fb923c; /* quaternary: warnings */
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Semantic
|
|
82
|
+
|
|
83
|
+
```css
|
|
84
|
+
--success-bg: #d1fae5;
|
|
85
|
+
--success-text: #065f46;
|
|
86
|
+
--danger-bg: #fee2e2;
|
|
87
|
+
--danger-text: #991b1b;
|
|
88
|
+
--warning-bg: #fef9c3;
|
|
89
|
+
--warning-text: #854d0e;
|
|
90
|
+
/* Dark mode: --success-bg: #052e16; --success-text: #86efac; etc. */
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Ordered Palette
|
|
94
|
+
|
|
95
|
+
```css
|
|
96
|
+
/* For any categorical sequence: tags, categories, avatars, etc. */
|
|
97
|
+
--palette-1: #ff90e8; /* pink */
|
|
98
|
+
--palette-2: #14b8a6; /* teal */
|
|
99
|
+
--palette-3: #facc15; /* yellow */
|
|
100
|
+
--palette-4: #fb923c; /* orange */
|
|
101
|
+
--palette-5: #818cf8; /* purple */
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Typography
|
|
107
|
+
|
|
108
|
+
**Font stack:** `'DM Sans', sans-serif` (body), `'DM Serif Display', serif` (display/h1), `'DM Mono', monospace` (code)
|
|
109
|
+
|
|
110
|
+
| Style | Size | Weight | Notes |
|
|
111
|
+
| ----------- | ------------------------ | ------------------- | ----------------------------------------------------- |
|
|
112
|
+
| Display | `clamp(28px, 4vw, 48px)` | 400 (Serif Display) | `letter-spacing: -1.5px; line-height: 1.1` |
|
|
113
|
+
| H1 | `clamp(22px, 3vw, 36px)` | 900 | `letter-spacing: -1px` |
|
|
114
|
+
| H2 | 20px | 900 | `letter-spacing: -0.5px` |
|
|
115
|
+
| H3 | 15px | 700 | |
|
|
116
|
+
| Label | 11px | 700 | `uppercase; letter-spacing: 1px; color: --text-muted` |
|
|
117
|
+
| Body | 14px | 400 | `line-height: 1.6` |
|
|
118
|
+
| Body SM | 13px | 400 | `line-height: 1.5` |
|
|
119
|
+
| Large Value | `clamp(22px, 3vw, 32px)` | 900 | `letter-spacing: -1px` — for emphasized numbers |
|
|
120
|
+
|
|
121
|
+
**Common pattern — eyebrow + title:** Label above H2 in almost every section.
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## Spacing & Radius
|
|
126
|
+
|
|
127
|
+
Base unit: 4px. Scale: 4, 8, 12, 16, 20, 24, 28, 32, 40, 48px.
|
|
128
|
+
|
|
129
|
+
| Context | Value |
|
|
130
|
+
| ---------------------- | ----------- |
|
|
131
|
+
| Card padding (compact) | `16px 18px` |
|
|
132
|
+
| Card padding (default) | `22px 24px` |
|
|
133
|
+
| Card padding (large) | `28px 28px` |
|
|
134
|
+
| Grid gap | 18px |
|
|
135
|
+
|
|
136
|
+
```css
|
|
137
|
+
--radius-sm: 8px;
|
|
138
|
+
--radius-md: 12px;
|
|
139
|
+
--radius-lg: 18px; /* cards — max radius in the system */
|
|
140
|
+
--radius-pill: 999px; /* badges, avatars */
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## Layout
|
|
146
|
+
|
|
147
|
+
### Common Patterns
|
|
148
|
+
|
|
149
|
+
- **Sidebar:** 220px fixed left, `--bg-inverse`, always dark in both modes
|
|
150
|
+
- **Top nav:** Sticky, 64px height, `--bg-base`, bottom border
|
|
151
|
+
- **Bottom nav (mobile):** Fixed, 64px, `--pink-light` active bg. Add `env(safe-area-inset-bottom)` padding
|
|
152
|
+
- **Main content:** flex-1, `--bg-base`, padding `36px 40px`
|
|
153
|
+
|
|
154
|
+
### Navigation States
|
|
155
|
+
|
|
156
|
+
- Logo mark: 36px accent square + bold name
|
|
157
|
+
- Nav items: 14px, `10px 14px` padding, rounded 10px. Hover/active → `--pink` bg + dark text
|
|
158
|
+
- Top nav active link: inverse bg pill
|
|
159
|
+
|
|
160
|
+
### Mobile / Small Viewport
|
|
161
|
+
|
|
162
|
+
- Single column, 16px padding
|
|
163
|
+
- Cards stack vertically, buttons full-width in forms
|
|
164
|
+
- Reduce shadows to `--shadow-sm`
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## Components
|
|
169
|
+
|
|
170
|
+
### Card
|
|
171
|
+
|
|
172
|
+
```css
|
|
173
|
+
.card {
|
|
174
|
+
background: var(--bg-surface);
|
|
175
|
+
border: 2px solid var(--border);
|
|
176
|
+
border-radius: var(--radius-lg);
|
|
177
|
+
padding: 22px 24px;
|
|
178
|
+
box-shadow: var(--shadow-md);
|
|
179
|
+
position: relative;
|
|
180
|
+
overflow: hidden;
|
|
181
|
+
}
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
**Variants:** `default` (white), `dark` (inverse bg + accent shadow), `pink`, `teal`, `yellow`, `muted` (base bg).
|
|
185
|
+
|
|
186
|
+
**Interactive states:** hover → `translateY(-3px)` + `shadow-lg`. Active → `translate(2px, 2px)` + `shadow-sm`.
|
|
187
|
+
|
|
188
|
+
### Value Card
|
|
189
|
+
|
|
190
|
+
Card with: decorative accent circle (top-right, 64px, 20% opacity), icon box (40px, accent bg, 2px border, rounded 10px), label (eyebrow), emphasized value (Large Value style), optional trend badge (pill, success/danger colors).
|
|
191
|
+
|
|
192
|
+
### Button
|
|
193
|
+
|
|
194
|
+
```css
|
|
195
|
+
.btn {
|
|
196
|
+
padding: 11px 22px;
|
|
197
|
+
border-radius: var(--radius-md);
|
|
198
|
+
font-weight: 700;
|
|
199
|
+
font-size: 14px;
|
|
200
|
+
border: 2px solid var(--border);
|
|
201
|
+
}
|
|
202
|
+
.btn:hover {
|
|
203
|
+
transform: translate(-1px, -1px);
|
|
204
|
+
}
|
|
205
|
+
.btn:active {
|
|
206
|
+
transform: translate(2px, 2px);
|
|
207
|
+
box-shadow: none;
|
|
208
|
+
}
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
| Variant | Background | Text | Border/Shadow |
|
|
212
|
+
| --------- | -------------- | ---------------- | ------------------------- |
|
|
213
|
+
| Primary | `--pink` | `--text-primary` | `--shadow-md` |
|
|
214
|
+
| Secondary | `--bg-surface` | `--text-primary` | `--shadow-sm` |
|
|
215
|
+
| Teal | `--teal` | `--text-primary` | `--shadow-md` |
|
|
216
|
+
| Yellow | `--yellow` | `--text-primary` | `--shadow-md` |
|
|
217
|
+
| Dark | `--bg-inverse` | `--text-inverse` | `--shadow-accent` |
|
|
218
|
+
| Ghost | transparent | `--text-primary` | none; hover: `--bg-muted` |
|
|
219
|
+
|
|
220
|
+
| Size | Padding | Font Size |
|
|
221
|
+
| ------------ | ----------- | --------- |
|
|
222
|
+
| SM | `7px 14px` | 12px |
|
|
223
|
+
| MD (default) | `11px 22px` | 14px |
|
|
224
|
+
| LG | `15px 30px` | 16px |
|
|
225
|
+
|
|
226
|
+
Icon-only: 40x40, no padding, `--radius-sm`.
|
|
227
|
+
|
|
228
|
+
### Badge / Pill
|
|
229
|
+
|
|
230
|
+
`padding: 3px 10px; border-radius: 999px; font-size: 11px; font-weight: 700; border: 1.5px solid currentColor`. Semantic variants: success, danger, warning, pink, teal, yellow, neutral. Solid variant: inverse bg+text.
|
|
231
|
+
|
|
232
|
+
### Input
|
|
233
|
+
|
|
234
|
+
`padding: 11px 16px; border: 2px solid var(--border); border-radius: var(--radius-md); font-size: 14px`. Focus: `box-shadow: 0 0 0 3px var(--pink)`. Input-group: input + button joined with zero'd inner radii.
|
|
235
|
+
|
|
236
|
+
### Table
|
|
237
|
+
|
|
238
|
+
Container: card shell (border, radius-lg, shadow-md, overflow hidden). Header: `--bg-muted`, 11px uppercase labels. Rows: `16px 28px` padding, `--border-light` divider, hover → muted bg.
|
|
239
|
+
|
|
240
|
+
### Progress Bar
|
|
241
|
+
|
|
242
|
+
Track: 12px height, `--bg-muted`, pill radius, 2px border. Fill: pill radius, accent color. Animate: `width 0.8s cubic-bezier(0.34, 1.56, 0.64, 1)`.
|
|
243
|
+
|
|
244
|
+
### Avatar
|
|
245
|
+
|
|
246
|
+
Square-ish (`--radius-sm`), 2px border. Sizes: 28/36/48px. Cycle through ordered palette colors.
|
|
247
|
+
|
|
248
|
+
### Tag / Chip
|
|
249
|
+
|
|
250
|
+
`padding: 5px 12px; border-radius: 999px; border: 2px solid var(--border); font-size: 13px; font-weight: 600`. Hover → pink bg. Active → inverse bg+text.
|
|
251
|
+
|
|
252
|
+
### Tooltip
|
|
253
|
+
|
|
254
|
+
`background: --bg-inverse; border: 2px solid --pink; border-radius: --radius-md; padding: 10px 16px; color: --text-inverse; font-size: 13px`. Bold label + bold value.
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## Motion
|
|
259
|
+
|
|
260
|
+
```css
|
|
261
|
+
--transition-fast: 120ms ease; /* button press */
|
|
262
|
+
--transition-base: 180ms ease; /* card hover, general */
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
Bouncy and tactile — elements lift and press. Staggered fade-up on page load:
|
|
266
|
+
|
|
267
|
+
```css
|
|
268
|
+
@keyframes fadeUp {
|
|
269
|
+
from {
|
|
270
|
+
opacity: 0;
|
|
271
|
+
transform: translateY(12px);
|
|
272
|
+
}
|
|
273
|
+
to {
|
|
274
|
+
opacity: 1;
|
|
275
|
+
transform: translateY(0);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
/* animation: fadeUp 0.4s ease forwards; delay: n * 0.05s */
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
## Checklist
|
|
284
|
+
|
|
285
|
+
- [ ] Background is `#F5F0E8` (light) or `#111111` (dark) — never pure white or grey
|
|
286
|
+
- [ ] Every card has 2px border + offset box shadow
|
|
287
|
+
- [ ] Interactive elements press-shift on :active
|
|
288
|
+
- [ ] DM Sans (body) + DM Serif Display (headlines) + DM Mono (code)
|
|
289
|
+
- [ ] At least one pink element visible on every screen
|
|
290
|
+
- [ ] Labels: 11px uppercase, letter-spacing 1px
|
|
291
|
+
- [ ] Badges are pill-shaped with border
|
|
292
|
+
- [ ] Dark sidebar/cards unchanged in dark mode
|
|
293
|
+
- [ ] No gradients anywhere
|
|
294
|
+
- [ ] Spacing follows 4px grid
|
|
@@ -15,40 +15,44 @@ from datetime import datetime, timezone
|
|
|
15
15
|
|
|
16
16
|
STEP_LABELS = {
|
|
17
17
|
1: "Plan",
|
|
18
|
-
2: "
|
|
19
|
-
3: "
|
|
20
|
-
4: "
|
|
21
|
-
5: "
|
|
22
|
-
6: "
|
|
23
|
-
7: "
|
|
24
|
-
8: "
|
|
25
|
-
9: "
|
|
26
|
-
10: "
|
|
27
|
-
11: "
|
|
28
|
-
12: "
|
|
29
|
-
13: "
|
|
30
|
-
14: "
|
|
31
|
-
15: "
|
|
32
|
-
16: "
|
|
18
|
+
2: "Prepare",
|
|
19
|
+
3: "Prototype",
|
|
20
|
+
4: "Verify Prototype",
|
|
21
|
+
5: "Confirm",
|
|
22
|
+
6: "Deconstruct",
|
|
23
|
+
7: "Extract",
|
|
24
|
+
8: "Glossary",
|
|
25
|
+
9: "Analyze",
|
|
26
|
+
10: "App Scenarios",
|
|
27
|
+
11: "User Scenarios",
|
|
28
|
+
12: "Verify",
|
|
29
|
+
13: "Journal",
|
|
30
|
+
14: "Review",
|
|
31
|
+
15: "Present",
|
|
32
|
+
16: "Commit",
|
|
33
|
+
17: "Finalize",
|
|
34
|
+
18: "Push",
|
|
33
35
|
}
|
|
34
36
|
|
|
35
37
|
STEP_RESTRICTIONS = {
|
|
36
38
|
1: "Do NOT write any code. Plan and describe only. Wait for user confirmation.",
|
|
37
|
-
2: "Do NOT
|
|
38
|
-
3: "
|
|
39
|
-
4: "
|
|
40
|
-
5: "
|
|
41
|
-
6: "Do NOT write
|
|
42
|
-
7: "
|
|
43
|
-
8: "Do NOT
|
|
44
|
-
9: "
|
|
45
|
-
10: "
|
|
46
|
-
11: "
|
|
47
|
-
12: "Verify
|
|
48
|
-
13: "
|
|
49
|
-
14: "
|
|
50
|
-
15: "
|
|
51
|
-
16: "
|
|
39
|
+
2: "Do NOT write any code or build features. Set up the project and prepare the database only.",
|
|
40
|
+
3: "Do NOT create scenarios or run codeyam analyze. Build fast — working prototype with real data.",
|
|
41
|
+
4: "Verify the prototype works. Do NOT add features — only fix broken functionality.",
|
|
42
|
+
5: "Present a selection menu (AskUserQuestion) for confirmation. Do NOT refactor or create scenarios until approved.",
|
|
43
|
+
6: "Do NOT write any code. Read every file, identify all extractable pieces, write a numbered plan. Planning only.",
|
|
44
|
+
7: "Execute the extraction plan from step 6. Components first (no tests), then library functions via TDD. Page files must contain ZERO direct JSX.",
|
|
45
|
+
8: "Do NOT write application code or scenarios. Update the glossary only.",
|
|
46
|
+
9: "Create isolation routes for visual components, run tests for library functions. Register component scenarios via codeyam editor register.",
|
|
47
|
+
10: "Do NOT modify application code. Create and register app-level scenarios only.",
|
|
48
|
+
11: "Do NOT modify application code. Create user-persona scenarios only (or skip if no users).",
|
|
49
|
+
12: "Verify component isolation screenshots AND editor scenarios. After ANY code fix, re-register affected components. Fix only — do NOT add features.",
|
|
50
|
+
13: "Create or update the journal entry for this feature. Do NOT create a duplicate — check if one exists first.",
|
|
51
|
+
14: "Verify ALL screenshots exist and NO client-side errors (/api/editor-client-errors). Run codeyam editor audit. Do not proceed until all checks pass.",
|
|
52
|
+
15: "Show the results panel, present summary, then selection menu (AskUserQuestion): Save or make changes.",
|
|
53
|
+
16: "Hide the results panel and commit all changes. Do NOT push — that happens in step 18.",
|
|
54
|
+
17: "Update the journal entry with the commit SHA and amend the commit to include the journal update.",
|
|
55
|
+
18: "Check for a git remote and offer to push. WAIT for the user's answer before starting the next feature.",
|
|
52
56
|
}
|
|
53
57
|
|
|
54
58
|
MIGRATION_STEP_LABELS = {
|
|
@@ -127,18 +131,34 @@ def main():
|
|
|
127
131
|
# Detect event early so we can capture the user prompt even before state exists
|
|
128
132
|
event_type, event_data = detect_event()
|
|
129
133
|
|
|
130
|
-
# Capture the
|
|
131
|
-
#
|
|
134
|
+
# Capture the user's feature request prompt.
|
|
135
|
+
# Write when: (a) no prompt file yet, (b) no state file (between features),
|
|
136
|
+
# or (c) previous feature is done (step >= 18). This ensures the prompt
|
|
137
|
+
# is refreshed for each new feature instead of persisting stale text.
|
|
132
138
|
# Skip slash commands (e.g. /codeyam-editor) — they aren't user prompts.
|
|
133
|
-
if event_type == "user_prompt"
|
|
139
|
+
if event_type == "user_prompt":
|
|
134
140
|
prompt_text = event_data.get("prompt", "").strip()
|
|
135
141
|
if prompt_text and not prompt_text.startswith("/"):
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
+
should_capture = not os.path.exists(prompt_path)
|
|
143
|
+
if not should_capture:
|
|
144
|
+
# Overwrite stale prompt when between features
|
|
145
|
+
if not os.path.exists(state_path):
|
|
146
|
+
should_capture = True
|
|
147
|
+
else:
|
|
148
|
+
try:
|
|
149
|
+
with open(state_path, "r") as f:
|
|
150
|
+
prev = json.load(f)
|
|
151
|
+
if prev.get("step", 0) >= 18:
|
|
152
|
+
should_capture = True
|
|
153
|
+
except Exception:
|
|
154
|
+
pass
|
|
155
|
+
if should_capture:
|
|
156
|
+
try:
|
|
157
|
+
os.makedirs(os.path.dirname(prompt_path), exist_ok=True)
|
|
158
|
+
with open(prompt_path, "w") as f:
|
|
159
|
+
f.write(prompt_text)
|
|
160
|
+
except Exception:
|
|
161
|
+
pass # Best-effort
|
|
142
162
|
|
|
143
163
|
if not os.path.exists(state_path):
|
|
144
164
|
return
|
|
@@ -157,6 +177,27 @@ def main():
|
|
|
157
177
|
if not step:
|
|
158
178
|
return
|
|
159
179
|
|
|
180
|
+
# ── Task tracking ──────────────────────────────────────────────────
|
|
181
|
+
# Track whether TaskCreate was called between step transitions.
|
|
182
|
+
# If Claude advances to the next step without creating a task, block it.
|
|
183
|
+
task_tracking_path = os.path.join(project_dir, ".codeyam", "editor-task-tracking.json")
|
|
184
|
+
|
|
185
|
+
if event_type == "post_tool_use":
|
|
186
|
+
tool_name = event_data.get("tool_name", "")
|
|
187
|
+
|
|
188
|
+
# Record when TaskCreate is called
|
|
189
|
+
if tool_name == "TaskCreate":
|
|
190
|
+
try:
|
|
191
|
+
tracking = {}
|
|
192
|
+
if os.path.exists(task_tracking_path):
|
|
193
|
+
with open(task_tracking_path, "r") as f:
|
|
194
|
+
tracking = json.load(f)
|
|
195
|
+
tracking["taskCreated"] = True
|
|
196
|
+
with open(task_tracking_path, "w") as f:
|
|
197
|
+
json.dump(tracking, f)
|
|
198
|
+
except Exception:
|
|
199
|
+
pass
|
|
200
|
+
|
|
160
201
|
# Log the hook firing
|
|
161
202
|
log_data = {"step": step, "label": label, "feature": feature, "hook": event_type}
|
|
162
203
|
if migration:
|
|
@@ -171,7 +212,7 @@ def main():
|
|
|
171
212
|
next_cmd = f"codeyam editor migrate {step + 1}" if step < 10 else "codeyam editor migrate next"
|
|
172
213
|
else:
|
|
173
214
|
restriction = STEP_RESTRICTIONS.get(step, "")
|
|
174
|
-
next_cmd = f"codeyam editor {step + 1}" if step <
|
|
215
|
+
next_cmd = f"codeyam editor {step + 1}" if step < 18 else "codeyam editor 1"
|
|
175
216
|
|
|
176
217
|
# UserPromptSubmit: concise workflow reminder injected before Claude processes the user's message
|
|
177
218
|
if event_type == "user_prompt":
|
|
@@ -212,14 +253,14 @@ def main():
|
|
|
212
253
|
"The change workflow ensures Working Session Results are shown to the user. "
|
|
213
254
|
"If the user chose to commit, run `codeyam editor migrate next` to advance to the next page."
|
|
214
255
|
)
|
|
215
|
-
elif step in (
|
|
256
|
+
elif step in (15, 16, 17, 18) and not migration:
|
|
216
257
|
lines.append(
|
|
217
258
|
"If the user is requesting changes (even indirectly), "
|
|
218
259
|
"run `codeyam editor change` BEFORE making any modifications "
|
|
219
260
|
"(code, scenarios, data, styles — everything). "
|
|
220
261
|
"The change command gives you the post-change checklist. "
|
|
221
262
|
"The change workflow ensures Working Session Results are shown to the user. "
|
|
222
|
-
"If the user chose to commit, run `codeyam editor
|
|
263
|
+
"If the user chose to commit, run `codeyam editor 16` to advance to the commit step."
|
|
223
264
|
)
|
|
224
265
|
elif migration:
|
|
225
266
|
lines.append(
|
|
@@ -270,9 +311,9 @@ def main():
|
|
|
270
311
|
tracker.append(f"{DIM} \u2502 \u25cb {cntnt}\u2502{RESET}")
|
|
271
312
|
tracker.append(f"{DIM} \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518{RESET}")
|
|
272
313
|
else:
|
|
273
|
-
# Standard progress tracker (
|
|
314
|
+
# Standard progress tracker (18 steps)
|
|
274
315
|
tracker = [f"{DIM} \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510{RESET}"]
|
|
275
|
-
for i in range(1,
|
|
316
|
+
for i in range(1, 19):
|
|
276
317
|
lbl = STEP_LABELS[i].ljust(28)
|
|
277
318
|
num = f" {i}" if i < 10 else f"{i}"
|
|
278
319
|
content = f"{num}. {lbl}"
|
|
@@ -291,7 +332,7 @@ def main():
|
|
|
291
332
|
"\u2713 (done) or \u2717 (skipped + reason)."
|
|
292
333
|
)
|
|
293
334
|
|
|
294
|
-
if event_type == "stop" and ((step in (
|
|
335
|
+
if event_type == "stop" and ((step in (15, 16) and not migration) or (step == 8 and migration)):
|
|
295
336
|
import subprocess as _sp
|
|
296
337
|
try:
|
|
297
338
|
_result = _sp.run(
|
|
@@ -309,9 +350,15 @@ def main():
|
|
|
309
350
|
)
|
|
310
351
|
lines.append(
|
|
311
352
|
f"\033[31mRun `codeyam editor change` if you haven't already, then complete the "
|
|
312
|
-
f"checklist and run `{'codeyam editor migrate 8' if migration else 'codeyam editor
|
|
353
|
+
f"checklist and run `{'codeyam editor migrate 8' if migration else 'codeyam editor 15'}` to show results to the user.\033[0m"
|
|
313
354
|
)
|
|
314
355
|
|
|
356
|
+
if event_type == "stop":
|
|
357
|
+
lines.append(
|
|
358
|
+
f"\n\033[2mReminder: Only use `codeyam editor` subcommands in the Build terminal. "
|
|
359
|
+
f"Follow `codeyam editor steps` when changing code.\033[0m"
|
|
360
|
+
)
|
|
361
|
+
|
|
315
362
|
lines.append(f"When this step is complete, run: {next_cmd}")
|
|
316
363
|
|
|
317
364
|
print("\n".join(lines))
|