agents-inc 0.149.2 → 0.150.0
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/CHANGELOG.md +2277 -0
- package/LICENSE +21 -0
- package/README.md +136 -19
- package/assets/demo.gif +0 -0
- package/assets/demo.tape +266 -0
- package/assets/logo.svg +75 -0
- package/dist/chunk-2RSNKBXC.js +84 -0
- package/dist/chunk-2RSNKBXC.js.map +1 -0
- package/dist/chunk-3LIU2ZEF.js +1355 -0
- package/dist/chunk-3LIU2ZEF.js.map +1 -0
- package/dist/chunk-4GL2F5AB.js +222 -0
- package/dist/chunk-4GL2F5AB.js.map +1 -0
- package/dist/chunk-4LPJZNT7.js +382 -0
- package/dist/chunk-4LPJZNT7.js.map +1 -0
- package/dist/chunk-5K5RBRTD.js +62 -0
- package/dist/chunk-5K5RBRTD.js.map +1 -0
- package/dist/chunk-6I6RZHYP.js +789 -0
- package/dist/chunk-6I6RZHYP.js.map +1 -0
- package/dist/chunk-7URSGJLE.js +430 -0
- package/dist/chunk-7URSGJLE.js.map +1 -0
- package/dist/chunk-C55DN7GE.js +35 -0
- package/dist/chunk-C55DN7GE.js.map +1 -0
- package/dist/chunk-CDMHSHBN.js +68 -0
- package/dist/chunk-CDMHSHBN.js.map +1 -0
- package/dist/chunk-CFQT72MJ.js +92 -0
- package/dist/chunk-CFQT72MJ.js.map +1 -0
- package/dist/chunk-DAG2ULNF.js +125 -0
- package/dist/chunk-DAG2ULNF.js.map +1 -0
- package/dist/chunk-DDG4F3FE.js +181 -0
- package/dist/chunk-DDG4F3FE.js.map +1 -0
- package/dist/chunk-DIBCRIMR.js +36 -0
- package/dist/chunk-DIBCRIMR.js.map +1 -0
- package/dist/chunk-DJAZE4PD.js +10929 -0
- package/dist/chunk-DJAZE4PD.js.map +1 -0
- package/dist/chunk-DUVWGO6E.js +54 -0
- package/dist/chunk-DUVWGO6E.js.map +1 -0
- package/dist/chunk-E4FT2KFV.js +174 -0
- package/dist/chunk-E4FT2KFV.js.map +1 -0
- package/dist/chunk-EKWAUOQB.js +96 -0
- package/dist/chunk-EKWAUOQB.js.map +1 -0
- package/dist/chunk-EN2GCPW7.js +300 -0
- package/dist/chunk-EN2GCPW7.js.map +1 -0
- package/dist/chunk-ES3NJZON.js +31 -0
- package/dist/chunk-ES3NJZON.js.map +1 -0
- package/dist/chunk-F3756A5B.js +20 -0
- package/dist/chunk-F3756A5B.js.map +1 -0
- package/dist/chunk-FWT3CBLL.js +51 -0
- package/dist/chunk-FWT3CBLL.js.map +1 -0
- package/dist/chunk-FYPUUYSG.js +31 -0
- package/dist/chunk-FYPUUYSG.js.map +1 -0
- package/dist/chunk-GRPSDKIS.js +112 -0
- package/dist/chunk-GRPSDKIS.js.map +1 -0
- package/dist/chunk-GYG5SE2D.js +81 -0
- package/dist/chunk-GYG5SE2D.js.map +1 -0
- package/dist/chunk-HIPGKIT3.js +287 -0
- package/dist/chunk-HIPGKIT3.js.map +1 -0
- package/dist/chunk-I3XKEGHM.js +16383 -0
- package/dist/chunk-I3XKEGHM.js.map +1 -0
- package/dist/chunk-IHO75PMZ.js +40 -0
- package/dist/chunk-IHO75PMZ.js.map +1 -0
- package/dist/chunk-IOJR5TOY.js +47 -0
- package/dist/chunk-IOJR5TOY.js.map +1 -0
- package/dist/chunk-K3OU6TGX.js +77 -0
- package/dist/chunk-K3OU6TGX.js.map +1 -0
- package/dist/chunk-KH7MOIM5.js +6010 -0
- package/dist/chunk-KH7MOIM5.js.map +1 -0
- package/dist/chunk-KIR7VYQD.js +63 -0
- package/dist/chunk-KIR7VYQD.js.map +1 -0
- package/dist/chunk-KOPEM3Q7.js +27 -0
- package/dist/chunk-KOPEM3Q7.js.map +1 -0
- package/dist/chunk-KSZ6PCY4.js +43 -0
- package/dist/chunk-KSZ6PCY4.js.map +1 -0
- package/dist/chunk-LRYNF3J7.js +111 -0
- package/dist/chunk-LRYNF3J7.js.map +1 -0
- package/dist/chunk-LYYXX2W5.js +87 -0
- package/dist/chunk-LYYXX2W5.js.map +1 -0
- package/dist/chunk-MC5DUZ3V.js +1135 -0
- package/dist/chunk-MC5DUZ3V.js.map +1 -0
- package/dist/chunk-N4IZ6GBO.js +300 -0
- package/dist/chunk-N4IZ6GBO.js.map +1 -0
- package/dist/chunk-NIKUMXE7.js +24 -0
- package/dist/chunk-NIKUMXE7.js.map +1 -0
- package/dist/chunk-NUIZ6ZUO.js +42 -0
- package/dist/chunk-NUIZ6ZUO.js.map +1 -0
- package/dist/chunk-O5ASLZ2K.js +270 -0
- package/dist/chunk-O5ASLZ2K.js.map +1 -0
- package/dist/chunk-OA5SUEQD.js +181 -0
- package/dist/chunk-OA5SUEQD.js.map +1 -0
- package/dist/chunk-OZZGXBCN.js +15 -0
- package/dist/chunk-OZZGXBCN.js.map +1 -0
- package/dist/chunk-P3PN5SVI.js +27 -0
- package/dist/chunk-P3PN5SVI.js.map +1 -0
- package/dist/chunk-P56WJ5FA.js +50 -0
- package/dist/chunk-P56WJ5FA.js.map +1 -0
- package/dist/chunk-PG4G4IIK.js +24 -0
- package/dist/chunk-PG4G4IIK.js.map +1 -0
- package/dist/chunk-QQLRX4KI.js +41 -0
- package/dist/chunk-QQLRX4KI.js.map +1 -0
- package/dist/chunk-RBHYLCUB.js +31 -0
- package/dist/chunk-RBHYLCUB.js.map +1 -0
- package/dist/chunk-RJN7W2C7.js +349 -0
- package/dist/chunk-RJN7W2C7.js.map +1 -0
- package/dist/chunk-RP7R73JO.js +179 -0
- package/dist/chunk-RP7R73JO.js.map +1 -0
- package/dist/chunk-SYUOXSPU.js +510 -0
- package/dist/chunk-SYUOXSPU.js.map +1 -0
- package/dist/chunk-THKIOI32.js +939 -0
- package/dist/chunk-THKIOI32.js.map +1 -0
- package/dist/chunk-UZRISDBZ.js +28 -0
- package/dist/chunk-UZRISDBZ.js.map +1 -0
- package/dist/chunk-V7QOSGQA.js +298 -0
- package/dist/chunk-V7QOSGQA.js.map +1 -0
- package/dist/chunk-VEP23B5W.js +27 -0
- package/dist/chunk-VEP23B5W.js.map +1 -0
- package/dist/chunk-VG2TVBFN.js +52 -0
- package/dist/chunk-VG2TVBFN.js.map +1 -0
- package/dist/chunk-VIFZ6NFH.js +27 -0
- package/dist/chunk-VIFZ6NFH.js.map +1 -0
- package/dist/chunk-XA57SX4T.js +115 -0
- package/dist/chunk-XA57SX4T.js.map +1 -0
- package/dist/chunk-YKKIJHZB.js +339 -0
- package/dist/chunk-YKKIJHZB.js.map +1 -0
- package/dist/chunk-YU2VGX5R.js +4205 -0
- package/dist/chunk-YU2VGX5R.js.map +1 -0
- package/dist/chunk-ZDLTLNU2.js +258 -0
- package/dist/chunk-ZDLTLNU2.js.map +1 -0
- package/dist/chunk-ZHTXPFDK.js +128 -0
- package/dist/chunk-ZHTXPFDK.js.map +1 -0
- package/dist/chunk-ZKJAJWK6.js +253 -0
- package/dist/chunk-ZKJAJWK6.js.map +1 -0
- package/dist/commands/build/marketplace.js +250 -0
- package/dist/commands/build/marketplace.js.map +1 -0
- package/dist/commands/build/plugins.js +176 -0
- package/dist/commands/build/plugins.js.map +1 -0
- package/dist/commands/compile.js +331 -0
- package/dist/commands/compile.js.map +1 -0
- package/dist/commands/doctor.js +475 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/edit.js +765 -0
- package/dist/commands/edit.js.map +1 -0
- package/dist/commands/eject.js +393 -0
- package/dist/commands/eject.js.map +1 -0
- package/dist/commands/import/skill.js +349 -0
- package/dist/commands/import/skill.js.map +1 -0
- package/dist/commands/init.js +66 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list.js +115 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/new/agent.js +304 -0
- package/dist/commands/new/agent.js.map +1 -0
- package/dist/commands/new/marketplace.js +315 -0
- package/dist/commands/new/marketplace.js.map +1 -0
- package/dist/commands/new/skill.js +28 -0
- package/dist/commands/new/skill.js.map +1 -0
- package/dist/commands/search.js +176 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/uninstall.js +570 -0
- package/dist/commands/uninstall.js.map +1 -0
- package/dist/commands/update.js +368 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/validate.js +581 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/components/common/confirm.js +9 -0
- package/dist/components/common/confirm.js.map +1 -0
- package/dist/components/common/confirm.test.js +203 -0
- package/dist/components/common/confirm.test.js.map +1 -0
- package/dist/components/common/prompt-confirm.js +11 -0
- package/dist/components/common/prompt-confirm.js.map +1 -0
- package/dist/components/common/select-list.js +11 -0
- package/dist/components/common/select-list.js.map +1 -0
- package/dist/components/common/spinner.js +9 -0
- package/dist/components/common/spinner.js.map +1 -0
- package/dist/components/wizard/category-grid.js +16 -0
- package/dist/components/wizard/category-grid.js.map +1 -0
- package/dist/components/wizard/category-grid.test.js +1253 -0
- package/dist/components/wizard/category-grid.test.js.map +1 -0
- package/dist/components/wizard/checkbox-grid.js +14 -0
- package/dist/components/wizard/checkbox-grid.js.map +1 -0
- package/dist/components/wizard/checkbox-grid.test.js +264 -0
- package/dist/components/wizard/checkbox-grid.test.js.map +1 -0
- package/dist/components/wizard/domain-selection.js +22 -0
- package/dist/components/wizard/domain-selection.js.map +1 -0
- package/dist/components/wizard/run-wizard-session.js +47 -0
- package/dist/components/wizard/run-wizard-session.js.map +1 -0
- package/dist/components/wizard/scroll-affordance.js +10 -0
- package/dist/components/wizard/scroll-affordance.js.map +1 -0
- package/dist/components/wizard/search-modal.js +14 -0
- package/dist/components/wizard/search-modal.js.map +1 -0
- package/dist/components/wizard/search-modal.test.js +212 -0
- package/dist/components/wizard/search-modal.test.js.map +1 -0
- package/dist/components/wizard/selection-card.js +10 -0
- package/dist/components/wizard/selection-card.js.map +1 -0
- package/dist/components/wizard/skill-agent-summary.js +16 -0
- package/dist/components/wizard/skill-agent-summary.js.map +1 -0
- package/dist/components/wizard/source-grid.js +23 -0
- package/dist/components/wizard/source-grid.js.map +1 -0
- package/dist/components/wizard/source-grid.test.js +1094 -0
- package/dist/components/wizard/source-grid.test.js.map +1 -0
- package/dist/components/wizard/stack-selection.js +20 -0
- package/dist/components/wizard/stack-selection.js.map +1 -0
- package/dist/components/wizard/step-agents.js +22 -0
- package/dist/components/wizard/step-agents.js.map +1 -0
- package/dist/components/wizard/step-agents.test.js +204 -0
- package/dist/components/wizard/step-agents.test.js.map +1 -0
- package/dist/components/wizard/step-build.js +22 -0
- package/dist/components/wizard/step-build.js.map +1 -0
- package/dist/components/wizard/step-build.test.js +552 -0
- package/dist/components/wizard/step-build.test.js.map +1 -0
- package/dist/components/wizard/step-confirm.js +21 -0
- package/dist/components/wizard/step-confirm.js.map +1 -0
- package/dist/components/wizard/step-confirm.test.js +744 -0
- package/dist/components/wizard/step-confirm.test.js.map +1 -0
- package/dist/components/wizard/step-settings.js +19 -0
- package/dist/components/wizard/step-settings.js.map +1 -0
- package/dist/components/wizard/step-settings.test.js +244 -0
- package/dist/components/wizard/step-settings.test.js.map +1 -0
- package/dist/components/wizard/step-sources.js +28 -0
- package/dist/components/wizard/step-sources.js.map +1 -0
- package/dist/components/wizard/step-sources.test.js +155 -0
- package/dist/components/wizard/step-sources.test.js.map +1 -0
- package/dist/components/wizard/step-stack.js +21 -0
- package/dist/components/wizard/step-stack.js.map +1 -0
- package/dist/components/wizard/step-stack.test.js +262 -0
- package/dist/components/wizard/step-stack.test.js.map +1 -0
- package/dist/components/wizard/summary-panel.js +20 -0
- package/dist/components/wizard/summary-panel.js.map +1 -0
- package/dist/components/wizard/summary-panel.test.js +317 -0
- package/dist/components/wizard/summary-panel.test.js.map +1 -0
- package/dist/components/wizard/toast.js +10 -0
- package/dist/components/wizard/toast.js.map +1 -0
- package/dist/components/wizard/wizard-layout.js +26 -0
- package/dist/components/wizard/wizard-layout.js.map +1 -0
- package/dist/components/wizard/wizard-layout.test.js +200 -0
- package/dist/components/wizard/wizard-layout.test.js.map +1 -0
- package/dist/components/wizard/wizard-tabs.js +20 -0
- package/dist/components/wizard/wizard-tabs.js.map +1 -0
- package/dist/components/wizard/wizard-tabs.test.js +290 -0
- package/dist/components/wizard/wizard-tabs.test.js.map +1 -0
- package/dist/components/wizard/wizard.js +48 -0
- package/dist/components/wizard/wizard.js.map +1 -0
- package/dist/config-exports.js +20 -0
- package/dist/config-exports.js.map +1 -0
- package/dist/copy-local-skills-CA7P73RZ.js +15 -0
- package/dist/copy-local-skills-CA7P73RZ.js.map +1 -0
- package/dist/dist-VNJNNJK7.js +550 -0
- package/dist/dist-VNJNNJK7.js.map +1 -0
- package/dist/hooks/init.js +90 -0
- package/dist/hooks/init.js.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/load-agent-defs-6MAY5ABI.js +16 -0
- package/dist/load-agent-defs-6MAY5ABI.js.map +1 -0
- package/dist/loader-E2ERJYVA.js +23 -0
- package/dist/loader-E2ERJYVA.js.map +1 -0
- package/dist/magic-string.es-5TV73NJD.js +1316 -0
- package/dist/magic-string.es-5TV73NJD.js.map +1 -0
- package/dist/recompile-project-agents-VYQJ6UZB.js +20 -0
- package/dist/recompile-project-agents-VYQJ6UZB.js.map +1 -0
- package/dist/source-loader-VVHMQEX5.js +20 -0
- package/dist/source-loader-VVHMQEX5.js.map +1 -0
- package/dist/source-manager-TPDXV5FO.js +18 -0
- package/dist/source-manager-TPDXV5FO.js.map +1 -0
- package/dist/src/agents/_templates/agent.liquid +161 -0
- package/dist/src/agents/_templates/methodologies/anti-over-engineering.liquid +121 -0
- package/dist/src/agents/_templates/methodologies/context-management.liquid +162 -0
- package/dist/src/agents/_templates/methodologies/improvement-protocol.liquid +150 -0
- package/dist/src/agents/_templates/methodologies/investigation-requirements.liquid +49 -0
- package/dist/src/agents/_templates/methodologies/success-criteria.liquid +111 -0
- package/dist/src/agents/_templates/methodologies/write-verification.liquid +43 -0
- package/dist/src/agents/developer/ai-developer/critical-reminders.md +54 -0
- package/dist/src/agents/developer/ai-developer/critical-requirements.md +59 -0
- package/dist/src/agents/developer/ai-developer/identity.md +51 -0
- package/dist/src/agents/developer/ai-developer/metadata.yaml +12 -0
- package/dist/src/agents/developer/ai-developer/output.md +366 -0
- package/dist/src/agents/developer/ai-developer/playbook.md +335 -0
- package/dist/src/agents/developer/api-developer/critical-reminders.md +46 -0
- package/dist/src/agents/developer/api-developer/critical-requirements.md +44 -0
- package/dist/src/agents/developer/api-developer/identity.md +49 -0
- package/dist/src/agents/developer/api-developer/metadata.yaml +12 -0
- package/dist/src/agents/developer/api-developer/output.md +432 -0
- package/dist/src/agents/developer/api-developer/playbook.md +352 -0
- package/dist/src/agents/developer/cli-developer/critical-reminders.md +51 -0
- package/dist/src/agents/developer/cli-developer/critical-requirements.md +51 -0
- package/dist/src/agents/developer/cli-developer/identity.md +51 -0
- package/dist/src/agents/developer/cli-developer/metadata.yaml +12 -0
- package/dist/src/agents/developer/cli-developer/output.md +285 -0
- package/dist/src/agents/developer/cli-developer/playbook.md +386 -0
- package/dist/src/agents/developer/web-architecture/critical-reminders.md +48 -0
- package/dist/src/agents/developer/web-architecture/critical-requirements.md +65 -0
- package/dist/src/agents/developer/web-architecture/identity.md +64 -0
- package/dist/src/agents/developer/web-architecture/metadata.yaml +12 -0
- package/dist/src/agents/developer/web-architecture/output.md +449 -0
- package/dist/src/agents/developer/web-architecture/playbook.md +481 -0
- package/dist/src/agents/developer/web-developer/critical-reminders.md +40 -0
- package/dist/src/agents/developer/web-developer/critical-requirements.md +39 -0
- package/dist/src/agents/developer/web-developer/identity.md +32 -0
- package/dist/src/agents/developer/web-developer/metadata.yaml +12 -0
- package/dist/src/agents/developer/web-developer/output.md +323 -0
- package/dist/src/agents/developer/web-developer/playbook.md +349 -0
- package/dist/src/agents/meta/agent-summoner/critical-reminders.md +45 -0
- package/dist/src/agents/meta/agent-summoner/critical-requirements.md +52 -0
- package/dist/src/agents/meta/agent-summoner/identity.md +34 -0
- package/dist/src/agents/meta/agent-summoner/metadata.yaml +12 -0
- package/dist/src/agents/meta/agent-summoner/output.md +296 -0
- package/dist/src/agents/meta/agent-summoner/playbook.md +1469 -0
- package/dist/src/agents/meta/codex-keeper/critical-reminders.md +39 -0
- package/dist/src/agents/meta/codex-keeper/critical-requirements.md +29 -0
- package/dist/src/agents/meta/codex-keeper/identity.md +45 -0
- package/dist/src/agents/meta/codex-keeper/metadata.yaml +12 -0
- package/dist/src/agents/meta/codex-keeper/output.md +384 -0
- package/dist/src/agents/meta/codex-keeper/playbook.md +1183 -0
- package/dist/src/agents/meta/convention-keeper/critical-reminders.md +32 -0
- package/dist/src/agents/meta/convention-keeper/critical-requirements.md +32 -0
- package/dist/src/agents/meta/convention-keeper/identity.md +33 -0
- package/dist/src/agents/meta/convention-keeper/metadata.yaml +12 -0
- package/dist/src/agents/meta/convention-keeper/output.md +206 -0
- package/dist/src/agents/meta/convention-keeper/playbook.md +180 -0
- package/dist/src/agents/meta/skill-summoner/critical-reminders.md +112 -0
- package/dist/src/agents/meta/skill-summoner/critical-requirements.md +62 -0
- package/dist/src/agents/meta/skill-summoner/identity.md +31 -0
- package/dist/src/agents/meta/skill-summoner/metadata.yaml +13 -0
- package/dist/src/agents/meta/skill-summoner/output.md +390 -0
- package/dist/src/agents/meta/skill-summoner/playbook.md +1457 -0
- package/dist/src/agents/pattern/pattern-scout/critical-reminders.md +71 -0
- package/dist/src/agents/pattern/pattern-scout/critical-requirements.md +31 -0
- package/dist/src/agents/pattern/pattern-scout/identity.md +25 -0
- package/dist/src/agents/pattern/pattern-scout/metadata.yaml +10 -0
- package/dist/src/agents/pattern/pattern-scout/output.md +290 -0
- package/dist/src/agents/pattern/pattern-scout/playbook.md +1806 -0
- package/dist/src/agents/pattern/web-pattern-critique/critical-reminders.md +30 -0
- package/dist/src/agents/pattern/web-pattern-critique/critical-requirements.md +28 -0
- package/dist/src/agents/pattern/web-pattern-critique/identity.md +41 -0
- package/dist/src/agents/pattern/web-pattern-critique/metadata.yaml +12 -0
- package/dist/src/agents/pattern/web-pattern-critique/output.md +314 -0
- package/dist/src/agents/pattern/web-pattern-critique/playbook.md +572 -0
- package/dist/src/agents/planning/api-pm/critical-reminders.md +48 -0
- package/dist/src/agents/planning/api-pm/critical-requirements.md +41 -0
- package/dist/src/agents/planning/api-pm/identity.md +39 -0
- package/dist/src/agents/planning/api-pm/metadata.yaml +12 -0
- package/dist/src/agents/planning/api-pm/output.md +475 -0
- package/dist/src/agents/planning/api-pm/playbook.md +129 -0
- package/dist/src/agents/planning/web-pm/critical-reminders.md +36 -0
- package/dist/src/agents/planning/web-pm/critical-requirements.md +32 -0
- package/dist/src/agents/planning/web-pm/identity.md +26 -0
- package/dist/src/agents/planning/web-pm/metadata.yaml +12 -0
- package/dist/src/agents/planning/web-pm/output.md +314 -0
- package/dist/src/agents/planning/web-pm/playbook.md +318 -0
- package/dist/src/agents/researcher/api-researcher/critical-reminders.md +27 -0
- package/dist/src/agents/researcher/api-researcher/critical-requirements.md +28 -0
- package/dist/src/agents/researcher/api-researcher/identity.md +71 -0
- package/dist/src/agents/researcher/api-researcher/metadata.yaml +10 -0
- package/dist/src/agents/researcher/api-researcher/output.md +254 -0
- package/dist/src/agents/researcher/api-researcher/playbook.md +201 -0
- package/dist/src/agents/researcher/web-researcher/critical-reminders.md +39 -0
- package/dist/src/agents/researcher/web-researcher/critical-requirements.md +26 -0
- package/dist/src/agents/researcher/web-researcher/identity.md +69 -0
- package/dist/src/agents/researcher/web-researcher/metadata.yaml +10 -0
- package/dist/src/agents/researcher/web-researcher/output.md +241 -0
- package/dist/src/agents/researcher/web-researcher/playbook.md +217 -0
- package/dist/src/agents/reviewer/ai-reviewer/critical-reminders.md +40 -0
- package/dist/src/agents/reviewer/ai-reviewer/critical-requirements.md +37 -0
- package/dist/src/agents/reviewer/ai-reviewer/identity.md +51 -0
- package/dist/src/agents/reviewer/ai-reviewer/metadata.yaml +10 -0
- package/dist/src/agents/reviewer/ai-reviewer/output.md +395 -0
- package/dist/src/agents/reviewer/ai-reviewer/playbook.md +90 -0
- package/dist/src/agents/reviewer/api-reviewer/critical-reminders.md +31 -0
- package/dist/src/agents/reviewer/api-reviewer/critical-requirements.md +27 -0
- package/dist/src/agents/reviewer/api-reviewer/identity.md +51 -0
- package/dist/src/agents/reviewer/api-reviewer/metadata.yaml +12 -0
- package/dist/src/agents/reviewer/api-reviewer/output.md +343 -0
- package/dist/src/agents/reviewer/api-reviewer/playbook.md +288 -0
- package/dist/src/agents/reviewer/cli-reviewer/critical-reminders.md +33 -0
- package/dist/src/agents/reviewer/cli-reviewer/critical-requirements.md +30 -0
- package/dist/src/agents/reviewer/cli-reviewer/identity.md +44 -0
- package/dist/src/agents/reviewer/cli-reviewer/metadata.yaml +12 -0
- package/dist/src/agents/reviewer/cli-reviewer/output.md +414 -0
- package/dist/src/agents/reviewer/cli-reviewer/playbook.md +218 -0
- package/dist/src/agents/reviewer/infra-reviewer/critical-reminders.md +38 -0
- package/dist/src/agents/reviewer/infra-reviewer/critical-requirements.md +38 -0
- package/dist/src/agents/reviewer/infra-reviewer/identity.md +53 -0
- package/dist/src/agents/reviewer/infra-reviewer/metadata.yaml +10 -0
- package/dist/src/agents/reviewer/infra-reviewer/output.md +364 -0
- package/dist/src/agents/reviewer/infra-reviewer/playbook.md +161 -0
- package/dist/src/agents/reviewer/web-reviewer/critical-reminders.md +31 -0
- package/dist/src/agents/reviewer/web-reviewer/critical-requirements.md +26 -0
- package/dist/src/agents/reviewer/web-reviewer/identity.md +40 -0
- package/dist/src/agents/reviewer/web-reviewer/metadata.yaml +12 -0
- package/dist/src/agents/reviewer/web-reviewer/output.md +333 -0
- package/dist/src/agents/reviewer/web-reviewer/playbook.md +156 -0
- package/dist/src/agents/tester/api-tester/critical-reminders.md +41 -0
- package/dist/src/agents/tester/api-tester/critical-requirements.md +41 -0
- package/dist/src/agents/tester/api-tester/identity.md +47 -0
- package/dist/src/agents/tester/api-tester/metadata.yaml +12 -0
- package/dist/src/agents/tester/api-tester/output.md +284 -0
- package/dist/src/agents/tester/api-tester/playbook.md +275 -0
- package/dist/src/agents/tester/cli-tester/critical-reminders.md +36 -0
- package/dist/src/agents/tester/cli-tester/critical-requirements.md +36 -0
- package/dist/src/agents/tester/cli-tester/identity.md +43 -0
- package/dist/src/agents/tester/cli-tester/metadata.yaml +12 -0
- package/dist/src/agents/tester/cli-tester/output.md +313 -0
- package/dist/src/agents/tester/cli-tester/playbook.md +221 -0
- package/dist/src/agents/tester/web-tester/critical-reminders.md +31 -0
- package/dist/src/agents/tester/web-tester/critical-requirements.md +28 -0
- package/dist/src/agents/tester/web-tester/identity.md +41 -0
- package/dist/src/agents/tester/web-tester/metadata.yaml +12 -0
- package/dist/src/agents/tester/web-tester/output.md +321 -0
- package/dist/src/agents/tester/web-tester/playbook.md +428 -0
- package/dist/stores/d227-same-scope-tombstone-duplicate.test.js +118 -0
- package/dist/stores/d227-same-scope-tombstone-duplicate.test.js.map +1 -0
- package/dist/stores/wizard-store.js +21 -0
- package/dist/stores/wizard-store.js.map +1 -0
- package/dist/stores/wizard-store.test.js +3053 -0
- package/dist/stores/wizard-store.test.js.map +1 -0
- package/package.json +130 -12
- package/src/agents/_templates/agent.liquid +161 -0
- package/src/agents/_templates/methodologies/anti-over-engineering.liquid +121 -0
- package/src/agents/_templates/methodologies/context-management.liquid +162 -0
- package/src/agents/_templates/methodologies/improvement-protocol.liquid +150 -0
- package/src/agents/_templates/methodologies/investigation-requirements.liquid +49 -0
- package/src/agents/_templates/methodologies/success-criteria.liquid +111 -0
- package/src/agents/_templates/methodologies/write-verification.liquid +43 -0
- package/src/agents/developer/ai-developer/critical-reminders.md +54 -0
- package/src/agents/developer/ai-developer/critical-requirements.md +59 -0
- package/src/agents/developer/ai-developer/identity.md +51 -0
- package/src/agents/developer/ai-developer/metadata.yaml +12 -0
- package/src/agents/developer/ai-developer/output.md +366 -0
- package/src/agents/developer/ai-developer/playbook.md +335 -0
- package/src/agents/developer/api-developer/critical-reminders.md +46 -0
- package/src/agents/developer/api-developer/critical-requirements.md +44 -0
- package/src/agents/developer/api-developer/identity.md +49 -0
- package/src/agents/developer/api-developer/metadata.yaml +12 -0
- package/src/agents/developer/api-developer/output.md +432 -0
- package/src/agents/developer/api-developer/playbook.md +352 -0
- package/src/agents/developer/cli-developer/critical-reminders.md +51 -0
- package/src/agents/developer/cli-developer/critical-requirements.md +51 -0
- package/src/agents/developer/cli-developer/identity.md +51 -0
- package/src/agents/developer/cli-developer/metadata.yaml +12 -0
- package/src/agents/developer/cli-developer/output.md +285 -0
- package/src/agents/developer/cli-developer/playbook.md +386 -0
- package/src/agents/developer/web-architecture/critical-reminders.md +48 -0
- package/src/agents/developer/web-architecture/critical-requirements.md +65 -0
- package/src/agents/developer/web-architecture/identity.md +64 -0
- package/src/agents/developer/web-architecture/metadata.yaml +12 -0
- package/src/agents/developer/web-architecture/output.md +449 -0
- package/src/agents/developer/web-architecture/playbook.md +481 -0
- package/src/agents/developer/web-developer/critical-reminders.md +40 -0
- package/src/agents/developer/web-developer/critical-requirements.md +39 -0
- package/src/agents/developer/web-developer/identity.md +32 -0
- package/src/agents/developer/web-developer/metadata.yaml +12 -0
- package/src/agents/developer/web-developer/output.md +323 -0
- package/src/agents/developer/web-developer/playbook.md +349 -0
- package/src/agents/meta/agent-summoner/critical-reminders.md +45 -0
- package/src/agents/meta/agent-summoner/critical-requirements.md +52 -0
- package/src/agents/meta/agent-summoner/identity.md +34 -0
- package/src/agents/meta/agent-summoner/metadata.yaml +12 -0
- package/src/agents/meta/agent-summoner/output.md +296 -0
- package/src/agents/meta/agent-summoner/playbook.md +1469 -0
- package/src/agents/meta/codex-keeper/critical-reminders.md +39 -0
- package/src/agents/meta/codex-keeper/critical-requirements.md +29 -0
- package/src/agents/meta/codex-keeper/identity.md +45 -0
- package/src/agents/meta/codex-keeper/metadata.yaml +12 -0
- package/src/agents/meta/codex-keeper/output.md +384 -0
- package/src/agents/meta/codex-keeper/playbook.md +1183 -0
- package/src/agents/meta/convention-keeper/critical-reminders.md +32 -0
- package/src/agents/meta/convention-keeper/critical-requirements.md +32 -0
- package/src/agents/meta/convention-keeper/identity.md +33 -0
- package/src/agents/meta/convention-keeper/metadata.yaml +12 -0
- package/src/agents/meta/convention-keeper/output.md +206 -0
- package/src/agents/meta/convention-keeper/playbook.md +180 -0
- package/src/agents/meta/skill-summoner/critical-reminders.md +112 -0
- package/src/agents/meta/skill-summoner/critical-requirements.md +62 -0
- package/src/agents/meta/skill-summoner/identity.md +31 -0
- package/src/agents/meta/skill-summoner/metadata.yaml +13 -0
- package/src/agents/meta/skill-summoner/output.md +390 -0
- package/src/agents/meta/skill-summoner/playbook.md +1457 -0
- package/src/agents/pattern/pattern-scout/critical-reminders.md +71 -0
- package/src/agents/pattern/pattern-scout/critical-requirements.md +31 -0
- package/src/agents/pattern/pattern-scout/identity.md +25 -0
- package/src/agents/pattern/pattern-scout/metadata.yaml +10 -0
- package/src/agents/pattern/pattern-scout/output.md +290 -0
- package/src/agents/pattern/pattern-scout/playbook.md +1806 -0
- package/src/agents/pattern/web-pattern-critique/critical-reminders.md +30 -0
- package/src/agents/pattern/web-pattern-critique/critical-requirements.md +28 -0
- package/src/agents/pattern/web-pattern-critique/identity.md +41 -0
- package/src/agents/pattern/web-pattern-critique/metadata.yaml +12 -0
- package/src/agents/pattern/web-pattern-critique/output.md +314 -0
- package/src/agents/pattern/web-pattern-critique/playbook.md +572 -0
- package/src/agents/planning/api-pm/critical-reminders.md +48 -0
- package/src/agents/planning/api-pm/critical-requirements.md +41 -0
- package/src/agents/planning/api-pm/identity.md +39 -0
- package/src/agents/planning/api-pm/metadata.yaml +12 -0
- package/src/agents/planning/api-pm/output.md +475 -0
- package/src/agents/planning/api-pm/playbook.md +129 -0
- package/src/agents/planning/web-pm/critical-reminders.md +36 -0
- package/src/agents/planning/web-pm/critical-requirements.md +32 -0
- package/src/agents/planning/web-pm/identity.md +26 -0
- package/src/agents/planning/web-pm/metadata.yaml +12 -0
- package/src/agents/planning/web-pm/output.md +314 -0
- package/src/agents/planning/web-pm/playbook.md +318 -0
- package/src/agents/researcher/api-researcher/critical-reminders.md +27 -0
- package/src/agents/researcher/api-researcher/critical-requirements.md +28 -0
- package/src/agents/researcher/api-researcher/identity.md +71 -0
- package/src/agents/researcher/api-researcher/metadata.yaml +10 -0
- package/src/agents/researcher/api-researcher/output.md +254 -0
- package/src/agents/researcher/api-researcher/playbook.md +201 -0
- package/src/agents/researcher/web-researcher/critical-reminders.md +39 -0
- package/src/agents/researcher/web-researcher/critical-requirements.md +26 -0
- package/src/agents/researcher/web-researcher/identity.md +69 -0
- package/src/agents/researcher/web-researcher/metadata.yaml +10 -0
- package/src/agents/researcher/web-researcher/output.md +241 -0
- package/src/agents/researcher/web-researcher/playbook.md +217 -0
- package/src/agents/reviewer/ai-reviewer/critical-reminders.md +40 -0
- package/src/agents/reviewer/ai-reviewer/critical-requirements.md +37 -0
- package/src/agents/reviewer/ai-reviewer/identity.md +51 -0
- package/src/agents/reviewer/ai-reviewer/metadata.yaml +10 -0
- package/src/agents/reviewer/ai-reviewer/output.md +395 -0
- package/src/agents/reviewer/ai-reviewer/playbook.md +90 -0
- package/src/agents/reviewer/api-reviewer/critical-reminders.md +31 -0
- package/src/agents/reviewer/api-reviewer/critical-requirements.md +27 -0
- package/src/agents/reviewer/api-reviewer/identity.md +51 -0
- package/src/agents/reviewer/api-reviewer/metadata.yaml +12 -0
- package/src/agents/reviewer/api-reviewer/output.md +343 -0
- package/src/agents/reviewer/api-reviewer/playbook.md +288 -0
- package/src/agents/reviewer/cli-reviewer/critical-reminders.md +33 -0
- package/src/agents/reviewer/cli-reviewer/critical-requirements.md +30 -0
- package/src/agents/reviewer/cli-reviewer/identity.md +44 -0
- package/src/agents/reviewer/cli-reviewer/metadata.yaml +12 -0
- package/src/agents/reviewer/cli-reviewer/output.md +414 -0
- package/src/agents/reviewer/cli-reviewer/playbook.md +218 -0
- package/src/agents/reviewer/infra-reviewer/critical-reminders.md +38 -0
- package/src/agents/reviewer/infra-reviewer/critical-requirements.md +38 -0
- package/src/agents/reviewer/infra-reviewer/identity.md +53 -0
- package/src/agents/reviewer/infra-reviewer/metadata.yaml +10 -0
- package/src/agents/reviewer/infra-reviewer/output.md +364 -0
- package/src/agents/reviewer/infra-reviewer/playbook.md +161 -0
- package/src/agents/reviewer/web-reviewer/critical-reminders.md +31 -0
- package/src/agents/reviewer/web-reviewer/critical-requirements.md +26 -0
- package/src/agents/reviewer/web-reviewer/identity.md +40 -0
- package/src/agents/reviewer/web-reviewer/metadata.yaml +12 -0
- package/src/agents/reviewer/web-reviewer/output.md +333 -0
- package/src/agents/reviewer/web-reviewer/playbook.md +156 -0
- package/src/agents/tester/api-tester/critical-reminders.md +41 -0
- package/src/agents/tester/api-tester/critical-requirements.md +41 -0
- package/src/agents/tester/api-tester/identity.md +47 -0
- package/src/agents/tester/api-tester/metadata.yaml +12 -0
- package/src/agents/tester/api-tester/output.md +284 -0
- package/src/agents/tester/api-tester/playbook.md +275 -0
- package/src/agents/tester/cli-tester/critical-reminders.md +36 -0
- package/src/agents/tester/cli-tester/critical-requirements.md +36 -0
- package/src/agents/tester/cli-tester/identity.md +43 -0
- package/src/agents/tester/cli-tester/metadata.yaml +12 -0
- package/src/agents/tester/cli-tester/output.md +313 -0
- package/src/agents/tester/cli-tester/playbook.md +221 -0
- package/src/agents/tester/web-tester/critical-reminders.md +31 -0
- package/src/agents/tester/web-tester/critical-requirements.md +28 -0
- package/src/agents/tester/web-tester/identity.md +41 -0
- package/src/agents/tester/web-tester/metadata.yaml +12 -0
- package/src/agents/tester/web-tester/output.md +321 -0
- package/src/agents/tester/web-tester/playbook.md +428 -0
- package/src/schemas/agent-frontmatter.schema.json +88 -0
- package/src/schemas/agent.schema.json +103 -0
- package/src/schemas/custom-metadata.schema.json +74 -0
- package/src/schemas/hooks.schema.json +47 -0
- package/src/schemas/marketplace.schema.json +119 -0
- package/src/schemas/metadata.schema.json +387 -0
- package/src/schemas/plugin.schema.json +127 -0
- package/src/schemas/project-config.schema.json +189 -0
- package/src/schemas/project-source-config.schema.json +96 -0
- package/src/schemas/skill-frontmatter.schema.json +42 -0
- package/src/schemas/stack.schema.json +191 -0
- package/src/schemas/stacks.schema.json +107 -0
- package/bin/run.js +0 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/cli/stores/wizard-store.test.ts","../../src/cli/lib/__tests__/expected-values.ts"],"sourcesContent":["import { describe, it, expect, beforeEach } from \"vitest\";\nimport { hydrateWizardStore, useWizardStore } from \"./wizard-store\";\nimport { initializeMatrix } from \"../lib/matrix/matrix-provider\";\nimport { SKILLS, TEST_CATEGORIES } from \"../lib/__tests__/test-fixtures\";\nimport { createMockMatrix } from \"../lib/__tests__/factories/matrix-factories\";\nimport { buildSkillConfigs } from \"../lib/__tests__/helpers/wizard-simulation\";\nimport { buildAgentConfigs } from \"../lib/__tests__/factories/config-factories\";\nimport { typedKeys } from \"../utils/typed-object\";\nimport {\n ALL_SKILLS_TEST_CATEGORIES_MATRIX,\n ALL_SKILLS_FULLSTACK_CATEGORIES_MATRIX,\n ALL_SKILLS_WEB_AND_API_MATRIX,\n REACT_HONO_FRAMEWORK_API_MATRIX,\n REACT_HONO_WEB_API_DOMAINS_MATRIX,\n} from \"../lib/__tests__/mock-data/mock-matrices\";\nimport type { AgentScopeConfig, SkillConfig, SkillSource } from \"../types\";\nimport { EXPECTED_AGENTS } from \"../lib/__tests__/expected-values\";\n\ndescribe(\"WizardStore\", () => {\n beforeEach(() => {\n initializeMatrix(ALL_SKILLS_TEST_CATEGORIES_MATRIX);\n });\n\n describe(\"initial state\", () => {\n it(\"should start at stack step\", () => {\n const { step } = useWizardStore.getState();\n expect(step).toBe(\"stack\");\n });\n\n it(\"should have no approach selected\", () => {\n const { approach } = useWizardStore.getState();\n expect(approach).toBeNull();\n });\n\n it(\"should have no selected stack\", () => {\n const { selectedStackId } = useWizardStore.getState();\n expect(selectedStackId).toBeNull();\n });\n\n it(\"should have empty skillConfigs\", () => {\n const { skillConfigs } = useWizardStore.getState();\n expect(skillConfigs).toStrictEqual([]);\n });\n\n it(\"should have null focusedSkillId\", () => {\n const { focusedSkillId } = useWizardStore.getState();\n expect(focusedSkillId).toBeNull();\n });\n\n it(\"should have empty unresolvableSkillIds\", () => {\n const { unresolvableSkillIds } = useWizardStore.getState();\n expect(unresolvableSkillIds).toStrictEqual([]);\n });\n\n it(\"should have empty navigation history\", () => {\n const { history } = useWizardStore.getState();\n expect(history).toStrictEqual([]);\n });\n\n it(\"should have empty selected domains\", () => {\n const { selectedDomains } = useWizardStore.getState();\n expect(selectedDomains).toStrictEqual([]);\n });\n\n it(\"should have empty domain selections\", () => {\n const { domainSelections } = useWizardStore.getState();\n expect(domainSelections).toStrictEqual({});\n });\n });\n\n describe(\"step navigation\", () => {\n it(\"should update step with setStep\", () => {\n const store = useWizardStore.getState();\n store.setStep(\"stack\");\n\n const { step } = useWizardStore.getState();\n expect(step).toBe(\"stack\");\n });\n\n it(\"should track navigation history when setting step\", () => {\n const store = useWizardStore.getState();\n\n store.setStep(\"build\");\n store.setStep(\"confirm\");\n\n const { history } = useWizardStore.getState();\n expect(history).toStrictEqual([\"stack\", \"build\"]);\n });\n\n it(\"should go back through history\", () => {\n const store = useWizardStore.getState();\n\n store.setStep(\"build\");\n store.setStep(\"confirm\");\n store.goBack();\n\n const { step, history } = useWizardStore.getState();\n expect(step).toBe(\"build\");\n expect(history).toStrictEqual([\"stack\"]);\n });\n\n it(\"when goBack is called with empty history, should no-op\", () => {\n const store = useWizardStore.getState();\n\n store.setStep(\"build\");\n store.goBack();\n const afterFirstGoBack = useWizardStore.getState();\n expect(afterFirstGoBack.step).toBe(\"stack\");\n expect(afterFirstGoBack.history).toStrictEqual([]);\n\n store.goBack();\n const afterSecondGoBack = useWizardStore.getState();\n expect(afterSecondGoBack.step).toBe(\"stack\");\n expect(afterSecondGoBack.history).toStrictEqual([]);\n });\n\n it(\"goBack from a mid-wizard step with empty history is a no-op\", () => {\n useWizardStore.setState({ step: \"build\", history: [] });\n\n useWizardStore.getState().goBack();\n\n const { step, history } = useWizardStore.getState();\n expect(step).toBe(\"build\");\n expect(history).toStrictEqual([]);\n });\n });\n\n describe(\"approach selection\", () => {\n it(\"should set approach to stack\", () => {\n const store = useWizardStore.getState();\n store.setApproach(\"stack\");\n\n const { approach } = useWizardStore.getState();\n expect(approach).toBe(\"stack\");\n });\n\n it(\"should set approach to scratch\", () => {\n const store = useWizardStore.getState();\n store.setApproach(\"scratch\");\n\n const { approach } = useWizardStore.getState();\n expect(approach).toBe(\"scratch\");\n });\n });\n\n describe(\"stack selection\", () => {\n it(\"should select stack by id\", () => {\n const store = useWizardStore.getState();\n store.selectStack(\"nextjs-fullstack\");\n\n const state = useWizardStore.getState();\n expect(state.selectedStackId).toBe(\"nextjs-fullstack\");\n expect(state.domainSelections).toStrictEqual({});\n expect(state.selectedDomains).toStrictEqual([]);\n expect(state.skillConfigs).toStrictEqual([]);\n expect(state.selectedAgents).toStrictEqual([]);\n expect(state.boundSkills).toStrictEqual([]);\n expect(state.stackAction).toBeNull();\n });\n\n it(\"when selectStack is called with null, should clear previously selected stack and selections\", () => {\n const store = useWizardStore.getState();\n store.selectStack(\"nextjs-fullstack\");\n store.toggleDomain(\"web\");\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.selectStack(null);\n\n const state = useWizardStore.getState();\n expect(state.selectedStackId).toBeNull();\n expect(state.domainSelections).toStrictEqual({});\n expect(state.selectedDomains).toStrictEqual([]);\n expect(state.skillConfigs).toStrictEqual([]);\n expect(state.selectedAgents).toStrictEqual([]);\n expect(state.boundSkills).toStrictEqual([]);\n expect(state.currentDomainIndex).toBe(0);\n expect(state.stackAction).toBeNull();\n });\n\n it(\"should clear previous selections when changing from one stack to another\", () => {\n initializeMatrix(ALL_SKILLS_FULLSTACK_CATEGORIES_MATRIX);\n const store = useWizardStore.getState();\n\n // Simulate selecting a stack and populating\n store.populateFromSkillIds([\"web-framework-react\", \"api-framework-hono\"]);\n\n const stateAfterFirst = useWizardStore.getState();\n expect(typedKeys(stateAfterFirst.domainSelections)).toStrictEqual([\"web\", \"api\"]);\n\n // Simulate going back and selecting \"start from scratch\"\n store.selectStack(null);\n\n const stateAfterClear = useWizardStore.getState();\n expect(stateAfterClear.selectedStackId).toBeNull();\n expect(stateAfterClear.domainSelections).toStrictEqual({});\n expect(stateAfterClear.selectedDomains).toStrictEqual([]);\n expect(stateAfterClear.skillConfigs).toStrictEqual([]);\n expect(stateAfterClear.selectedAgents).toStrictEqual([]);\n expect(stateAfterClear.boundSkills).toStrictEqual([]);\n expect(stateAfterClear.stackAction).toBeNull();\n });\n });\n\n describe(\"domain selection\", () => {\n it(\"should toggle domain on\", () => {\n const store = useWizardStore.getState();\n store.toggleDomain(\"web\");\n\n const { selectedDomains, domainSelections } = useWizardStore.getState();\n expect(selectedDomains).toStrictEqual([\"web\"]);\n expect(domainSelections).toStrictEqual({});\n });\n\n it(\"should toggle domain off\", () => {\n const store = useWizardStore.getState();\n store.toggleDomain(\"web\");\n store.toggleDomain(\"web\");\n\n const { selectedDomains, domainSelections, skillConfigs } = useWizardStore.getState();\n expect(selectedDomains).toStrictEqual([]);\n expect(domainSelections).toStrictEqual({});\n expect(skillConfigs).toStrictEqual([]);\n });\n\n it(\"should allow multiple domain selection\", () => {\n const store = useWizardStore.getState();\n store.toggleDomain(\"web\");\n store.toggleDomain(\"api\");\n store.toggleDomain(\"cli\");\n\n const { selectedDomains } = useWizardStore.getState();\n expect(selectedDomains).toStrictEqual([\"web\", \"api\", \"cli\"]);\n });\n\n it(\"should remove skills from deselected domain\", () => {\n const store = useWizardStore.getState();\n store.toggleDomain(\"web\");\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.toggleTechnology(\"web\", \"web-styling\", \"web-styling-scss-modules\", true);\n\n store.toggleDomain(\"web\");\n\n const { domainSelections, selectedDomains, skillConfigs } = useWizardStore.getState();\n expect(domainSelections.web).toBeUndefined();\n expect(selectedDomains).toStrictEqual([]);\n expect(skillConfigs).toStrictEqual([]);\n expect(store.getAllSelectedTechnologies()).toStrictEqual([]);\n expect(store.getTechnologyCount()).toBe(0);\n });\n\n it(\"should not affect skills in other domains when deselecting a domain\", () => {\n const store = useWizardStore.getState();\n store.toggleDomain(\"web\");\n store.toggleDomain(\"api\");\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.toggleTechnology(\"api\", \"api-api\", \"api-framework-hono\", true);\n\n store.toggleDomain(\"web\");\n\n const { domainSelections, selectedDomains, skillConfigs } = useWizardStore.getState();\n expect(selectedDomains).toStrictEqual([\"api\"]);\n expect(domainSelections.web).toBeUndefined();\n expect(domainSelections.api![\"api-api\"]).toStrictEqual([\"api-framework-hono\"]);\n expect(skillConfigs).toStrictEqual(\n buildSkillConfigs([\"api-framework-hono\"], { scope: \"global\", source: \"agents-inc\" }),\n );\n expect(store.getAllSelectedTechnologies()).toStrictEqual([\"api-framework-hono\"]);\n });\n\n it(\"should not auto-select skills when toggling domain on\", () => {\n const store = useWizardStore.getState();\n store.toggleDomain(\"web\");\n\n const { domainSelections, skillConfigs } = useWizardStore.getState();\n expect(domainSelections.web).toBeUndefined();\n expect(skillConfigs).toStrictEqual([]);\n expect(store.getAllSelectedTechnologies()).toStrictEqual([]);\n });\n\n it(\"should reflect correct technology count after domain deselection\", () => {\n const store = useWizardStore.getState();\n store.toggleDomain(\"web\");\n store.toggleDomain(\"api\");\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.toggleTechnology(\"web\", \"web-styling\", \"web-styling-scss-modules\", true);\n store.toggleTechnology(\"api\", \"api-api\", \"api-framework-hono\", true);\n\n expect(store.getTechnologyCount()).toBe(3);\n\n store.toggleDomain(\"web\");\n\n expect(store.getTechnologyCount()).toBe(1);\n expect(store.getAllSelectedTechnologies()).toStrictEqual([\"api-framework-hono\"]);\n });\n\n it(\"should restore stack skills when re-toggling a domain ON after populateFromSkillIds\", () => {\n const store = useWizardStore.getState();\n\n initializeMatrix(REACT_HONO_FRAMEWORK_API_MATRIX);\n\n store.populateFromSkillIds([\"web-framework-react\", \"api-framework-hono\"]);\n\n // Deselect web domain (clears its skills)\n store.toggleDomain(\"web\");\n expect(useWizardStore.getState().domainSelections.web).toBeUndefined();\n\n // Re-select web domain (should restore stack skills)\n store.toggleDomain(\"web\");\n const { domainSelections } = useWizardStore.getState();\n expect(domainSelections.web![\"web-framework\"]).toStrictEqual([\"web-framework-react\"]);\n });\n\n it(\"should not restore skills when no stack was populated\", () => {\n const store = useWizardStore.getState();\n\n // Manually toggle domain and add skills (no stack)\n store.toggleDomain(\"web\");\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n\n // Deselect web domain\n store.toggleDomain(\"web\");\n\n // Re-select web domain — no stack snapshot, so no restoration\n store.toggleDomain(\"web\");\n const { domainSelections } = useWizardStore.getState();\n expect(domainSelections.web).toBeUndefined();\n expect(store.getAllSelectedTechnologies()).toStrictEqual([]);\n });\n });\n\n describe(\"technology selection\", () => {\n it(\"should toggle technology in exclusive mode\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n\n const { domainSelections, skillConfigs } = useWizardStore.getState();\n expect(domainSelections.web![\"web-framework\"]).toStrictEqual([\"web-framework-react\"]);\n expect(skillConfigs).toStrictEqual(\n buildSkillConfigs([\"web-framework-react\"], { scope: \"global\", source: \"agents-inc\" }),\n );\n });\n\n it(\"should replace technology in exclusive mode\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-vue-composition-api\", true);\n\n const { domainSelections, skillConfigs } = useWizardStore.getState();\n expect(domainSelections.web![\"web-framework\"]).toStrictEqual([\n \"web-framework-vue-composition-api\",\n ]);\n expect(skillConfigs).toStrictEqual(\n buildSkillConfigs([\"web-framework-vue-composition-api\"], {\n scope: \"global\",\n source: \"agents-inc\",\n }),\n );\n });\n\n it(\"should toggle off technology in exclusive mode\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n\n const { domainSelections, skillConfigs } = useWizardStore.getState();\n expect(domainSelections.web![\"web-framework\"]).toStrictEqual([]);\n expect(skillConfigs).toStrictEqual([]);\n });\n\n it(\"should allow multiple selections in non-exclusive mode\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-testing\", \"web-testing-vitest\", false);\n store.toggleTechnology(\"web\", \"web-testing\", \"web-testing-playwright-e2e\", false);\n\n const { domainSelections, skillConfigs } = useWizardStore.getState();\n expect(domainSelections.web![\"web-testing\"]).toStrictEqual([\n \"web-testing-vitest\",\n \"web-testing-playwright-e2e\",\n ]);\n expect(skillConfigs).toStrictEqual(\n buildSkillConfigs([\"web-testing-vitest\", \"web-testing-playwright-e2e\"], {\n scope: \"global\",\n source: \"agents-inc\",\n }),\n );\n });\n\n it(\"should toggle off technology in non-exclusive mode\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-styling\", \"web-styling-scss-modules\", false);\n store.toggleTechnology(\"web\", \"web-styling\", \"web-styling-tailwind\", false);\n store.toggleTechnology(\"web\", \"web-styling\", \"web-styling-scss-modules\", false);\n\n const { domainSelections, skillConfigs } = useWizardStore.getState();\n expect(domainSelections.web![\"web-styling\"]).toStrictEqual([\"web-styling-tailwind\"]);\n expect(skillConfigs).toStrictEqual(\n buildSkillConfigs([\"web-styling-tailwind\"], { scope: \"global\", source: \"agents-inc\" }),\n );\n });\n\n it(\"should block toggling globally installed skills from project scope and set toastMessage\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n useWizardStore.setState({\n installedSkillConfigs: buildSkillConfigs([\"web-framework-react\"], { scope: \"global\" }),\n isEditingFromGlobalScope: false,\n isInitMode: false,\n });\n\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n\n const { domainSelections, toastMessage } = useWizardStore.getState();\n expect(domainSelections.web![\"web-framework\"]).toStrictEqual([\"web-framework-react\"]);\n expect(toastMessage).toBe(\"Global skills cannot be changed from project scope\");\n });\n\n it(\"should block toggling globally installed skills in init mode too, with the same toastMessage\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n useWizardStore.setState({\n installedSkillConfigs: buildSkillConfigs([\"web-framework-react\"], { scope: \"global\" }),\n isEditingFromGlobalScope: false,\n isInitMode: true,\n });\n\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n\n const { domainSelections, skillConfigs, toastMessage } = useWizardStore.getState();\n expect(domainSelections.web![\"web-framework\"]).toStrictEqual([\"web-framework-react\"]);\n expect(\n skillConfigs,\n \"a blocked deselect must leave the global entry active — no tombstone\",\n ).toStrictEqual(\n buildSkillConfigs([\"web-framework-react\"], { scope: \"global\", source: \"agents-inc\" }),\n );\n expect(toastMessage).toBe(\"Global skills cannot be changed from project scope\");\n });\n\n it(\"should block selecting a different skill in an exclusive category when it would implicitly deselect a global skill\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-client-state\", \"web-state-zustand\", true);\n useWizardStore.setState({\n installedSkillConfigs: buildSkillConfigs([\"web-state-zustand\"], { scope: \"global\" }),\n isEditingFromGlobalScope: false,\n isInitMode: false,\n });\n\n store.toggleTechnology(\"web\", \"web-client-state\", \"web-state-pinia\", true);\n\n const { domainSelections, toastMessage } = useWizardStore.getState();\n expect(domainSelections.web![\"web-client-state\"]).toStrictEqual([\"web-state-zustand\"]);\n expect(toastMessage).toBe(\"Global skills cannot be changed from project scope\");\n });\n\n it(\"should allow selecting a different skill in an exclusive category when editing from global scope\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-client-state\", \"web-state-zustand\", true);\n useWizardStore.setState({\n installedSkillConfigs: buildSkillConfigs([\"web-state-zustand\"], { scope: \"global\" }),\n isEditingFromGlobalScope: true,\n isInitMode: false,\n });\n\n store.toggleTechnology(\"web\", \"web-client-state\", \"web-state-pinia\", true);\n\n const { domainSelections, toastMessage } = useWizardStore.getState();\n expect(domainSelections.web![\"web-client-state\"]).toStrictEqual([\"web-state-pinia\"]);\n expect(toastMessage).toBeNull();\n });\n\n it(\"should block deselecting the only skill in an exclusive+required category\", () => {\n const m = createMockMatrix(...Object.values(SKILLS));\n m.categories[\"api-api\"] = { ...TEST_CATEGORIES.api, required: true };\n initializeMatrix(m);\n const store = useWizardStore.getState();\n store.toggleTechnology(\"api\", \"api-api\", \"api-framework-hono\", true);\n\n store.toggleTechnology(\"api\", \"api-api\", \"api-framework-hono\", true);\n\n const { domainSelections, toastMessage } = useWizardStore.getState();\n expect(domainSelections.api![\"api-api\"]).toStrictEqual([\"api-framework-hono\"]);\n expect(toastMessage).toBe(\"Cannot deselect the only skill in this category\");\n });\n\n it(\"should allow deselecting the only skill in a non-required category\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-testing\", \"web-testing-vitest\", false);\n\n store.toggleTechnology(\"web\", \"web-testing\", \"web-testing-vitest\", false);\n\n const { domainSelections, toastMessage } = useWizardStore.getState();\n expect(domainSelections.web![\"web-testing\"]).toStrictEqual([]);\n expect(toastMessage).toBeNull();\n });\n\n it(\"should allow deselecting in a category with multiple skills\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n\n const { domainSelections, toastMessage } = useWizardStore.getState();\n expect(domainSelections.web![\"web-framework\"]).toStrictEqual([]);\n expect(toastMessage).toBeNull();\n });\n\n it(\"should allow selecting in a single-skill category\", () => {\n const store = useWizardStore.getState();\n\n store.toggleTechnology(\"api\", \"api-api\", \"api-framework-hono\", true);\n\n const { domainSelections, toastMessage } = useWizardStore.getState();\n expect(domainSelections.api![\"api-api\"]).toStrictEqual([\"api-framework-hono\"]);\n expect(toastMessage).toBeNull();\n });\n });\n\n describe(\"domain navigation\", () => {\n it(\"should move to next domain\", () => {\n const store = useWizardStore.getState();\n store.toggleDomain(\"web\");\n store.toggleDomain(\"api\");\n\n const result = store.nextDomain();\n\n const { currentDomainIndex } = useWizardStore.getState();\n expect(result).toBe(true);\n expect(currentDomainIndex).toBe(1);\n });\n\n it(\"when already at the last domain, should return false from nextDomain\", () => {\n const store = useWizardStore.getState();\n store.toggleDomain(\"web\");\n\n const result = store.nextDomain();\n\n expect(result).toBe(false);\n });\n\n it(\"should move to previous domain\", () => {\n const store = useWizardStore.getState();\n store.toggleDomain(\"web\");\n store.toggleDomain(\"api\");\n store.nextDomain();\n\n const result = store.prevDomain();\n\n const { currentDomainIndex } = useWizardStore.getState();\n expect(result).toBe(true);\n expect(currentDomainIndex).toBe(0);\n });\n\n it(\"when already at the first domain, should return false from prevDomain\", () => {\n const store = useWizardStore.getState();\n store.toggleDomain(\"web\");\n\n const result = store.prevDomain();\n\n expect(result).toBe(false);\n });\n\n it(\"should get current domain\", () => {\n const store = useWizardStore.getState();\n store.toggleDomain(\"web\");\n store.toggleDomain(\"api\");\n store.nextDomain();\n\n const domain = store.getCurrentDomain();\n expect(domain).toBe(\"api\");\n });\n\n it(\"should return null when no domains selected\", () => {\n const store = useWizardStore.getState();\n const domain = store.getCurrentDomain();\n expect(domain).toBeNull();\n });\n });\n\n describe(\"seedFocusedSkillForActiveDomain\", () => {\n beforeEach(() => {\n initializeMatrix(REACT_HONO_WEB_API_DOMAINS_MATRIX);\n });\n\n it(\"seeds focusedSkillId to the active domain's first grid option on build-step entry\", () => {\n const store = useWizardStore.getState();\n store.toggleDomain(\"web\");\n store.toggleDomain(\"api\");\n\n store.setStep(\"build\");\n\n expect(useWizardStore.getState().focusedSkillId).toBe(\"web-framework-react\");\n });\n\n it(\"re-seeds focusedSkillId to the new domain's first grid option on domain advance\", () => {\n const store = useWizardStore.getState();\n store.toggleDomain(\"web\");\n store.toggleDomain(\"api\");\n store.setStep(\"build\");\n\n store.nextDomain();\n\n expect(useWizardStore.getState().focusedSkillId).toBe(\"api-framework-hono\");\n });\n\n it(\"re-seeds focusedSkillId back to the previous domain's first grid option on domain retreat\", () => {\n const store = useWizardStore.getState();\n store.toggleDomain(\"web\");\n store.toggleDomain(\"api\");\n store.setStep(\"build\");\n store.nextDomain();\n\n store.prevDomain();\n\n expect(useWizardStore.getState().focusedSkillId).toBe(\"web-framework-react\");\n });\n\n it(\"seeds the fallback domain's first grid option when no domains are selected\", () => {\n const store = useWizardStore.getState();\n\n // getCurrentDomain() is null with no domains selected, but the build-step\n // renderer falls back to FALLBACK_DOMAIN (\"web\") and highlights its first\n // cell. The seed must resolve that same cell — never null — or the cold `s`\n // scope toggle desyncs from the visually focused skill.\n store.seedFocusedSkillForActiveDomain();\n\n expect(useWizardStore.getState().focusedSkillId).toBe(\"web-framework-react\");\n });\n });\n\n describe(\"mode toggles\", () => {\n it(\"should toggle show labels\", () => {\n const store = useWizardStore.getState();\n\n store.toggleShowLabels();\n\n const { showLabels } = useWizardStore.getState();\n expect(showLabels).toBe(true);\n });\n\n it(\"should toggle info on\", () => {\n const store = useWizardStore.getState();\n\n store.toggleInfo();\n\n const { showInfo } = useWizardStore.getState();\n expect(showInfo).toBe(true);\n });\n\n it(\"should toggle info off (show then hide)\", () => {\n const store = useWizardStore.getState();\n\n store.toggleInfo();\n store.toggleInfo();\n\n const { showInfo } = useWizardStore.getState();\n expect(showInfo).toBe(false);\n });\n\n it(\"should toggle settings on\", () => {\n const store = useWizardStore.getState();\n\n store.toggleSettings();\n\n const { showSettings } = useWizardStore.getState();\n expect(showSettings).toBe(true);\n });\n\n it(\"should toggle settings off (show then hide)\", () => {\n const store = useWizardStore.getState();\n\n store.toggleSettings();\n store.toggleSettings();\n\n const { showSettings } = useWizardStore.getState();\n expect(showSettings).toBe(false);\n });\n\n it(\"should start with showInfo false\", () => {\n const { showInfo } = useWizardStore.getState();\n expect(showInfo).toBe(false);\n });\n\n it(\"should start with showSettings false\", () => {\n const { showSettings } = useWizardStore.getState();\n expect(showSettings).toBe(false);\n });\n\n it(\"should reset showInfo to false after reset\", () => {\n const store = useWizardStore.getState();\n store.toggleInfo();\n store.reset();\n\n const { showInfo } = useWizardStore.getState();\n expect(showInfo).toBe(false);\n });\n\n it(\"should reset showSettings to false after reset\", () => {\n const store = useWizardStore.getState();\n store.toggleSettings();\n store.reset();\n\n const { showSettings } = useWizardStore.getState();\n expect(showSettings).toBe(false);\n });\n });\n\n describe(\"skillConfigs and per-skill scope\", () => {\n it(\"should sync skillConfigs when toggling a technology on\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n\n const { skillConfigs } = useWizardStore.getState();\n expect(skillConfigs).toHaveLength(1);\n expect(skillConfigs[0]).toStrictEqual(\n buildSkillConfigs([\"web-framework-react\"], { scope: \"global\", source: \"agents-inc\" })[0],\n );\n });\n\n it(\"should remove global skill when toggling off during fresh init (no installed configs)\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n\n const { skillConfigs } = useWizardStore.getState();\n expect(skillConfigs).toHaveLength(0);\n });\n\n it(\"removes a global skill cleanly (no tombstone) when toggled off while editing from global scope\", () => {\n // At ~/ the config being edited IS the global config — no project overlay, so a deselect\n // is a genuine uninstall, not a project-local tombstone (skill side).\n const store = useWizardStore.getState();\n useWizardStore.setState({\n installedSkillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n }),\n isEditingFromGlobalScope: true,\n });\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n\n const { skillConfigs } = useWizardStore.getState();\n expect(skillConfigs).toStrictEqual([]);\n });\n\n it(\"should remove old global skill in exclusive mode during fresh init and add new skill\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-vue-composition-api\", true);\n\n const { skillConfigs } = useWizardStore.getState();\n expect(skillConfigs).toStrictEqual(\n buildSkillConfigs([\"web-framework-vue-composition-api\"], {\n scope: \"global\",\n source: \"agents-inc\",\n }),\n );\n });\n\n it(\"removes the old global skill cleanly (no tombstone) in exclusive mode while editing from global scope and adds the new skill\", () => {\n const store = useWizardStore.getState();\n useWizardStore.setState({\n installedSkillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n }),\n isEditingFromGlobalScope: true,\n });\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-vue-composition-api\", true);\n\n // Only the newly selected skill remains — the replaced global skill is uninstalled, not\n // tombstoned (global-scope edit has no overlay).\n const { skillConfigs } = useWizardStore.getState();\n expect(skillConfigs).toStrictEqual(\n buildSkillConfigs([\"web-framework-vue-composition-api\"], {\n scope: \"global\",\n source: \"agents-inc\",\n }),\n );\n });\n\n it(\"cleanly re-adds a global skill when re-selected while editing from global scope\", () => {\n const store = useWizardStore.getState();\n useWizardStore.setState({\n installedSkillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n }),\n isEditingFromGlobalScope: true,\n });\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n // Deselect: clean removal (global-scope edit, no overlay).\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n expect(useWizardStore.getState().skillConfigs).toStrictEqual([]);\n\n // Re-select: clean re-add, no excluded flag.\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n const { skillConfigs } = useWizardStore.getState();\n expect(skillConfigs).toStrictEqual(\n buildSkillConfigs([\"web-framework-react\"], { scope: \"global\", source: \"agents-inc\" }),\n );\n });\n\n it(\"restores the persisted project scope and eject source when a project-only skill is deselected and re-selected in one session\", () => {\n const store = useWizardStore.getState();\n const persisted = buildSkillConfigs([\"web-framework-react\"], {\n scope: \"project\",\n source: \"eject\",\n });\n useWizardStore.setState({\n domainSelections: { web: { \"web-framework\": [\"web-framework-react\"] } },\n skillConfigs: persisted,\n installedSkillConfigs: persisted,\n isEditingFromGlobalScope: false,\n isInitMode: false,\n });\n\n // Deselect: a project-only skill has no global install underneath, so it is dropped.\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n expect(useWizardStore.getState().skillConfigs).toStrictEqual([]);\n\n // Re-select: a RESTORE of the hydration snapshot, not a fresh add at wizard defaults.\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n expect(useWizardStore.getState().skillConfigs).toStrictEqual(persisted);\n });\n\n it(\"adds a genuinely new skill at wizard defaults when the hydration snapshot has no entry for it\", () => {\n const store = useWizardStore.getState();\n useWizardStore.setState({\n installedSkillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"project\",\n source: \"eject\",\n }),\n isEditingFromGlobalScope: false,\n isInitMode: false,\n });\n\n store.toggleTechnology(\"web\", \"web-testing\", \"web-testing-vitest\", false);\n\n expect(useWizardStore.getState().skillConfigs).toStrictEqual(\n buildSkillConfigs([\"web-testing-vitest\"], { scope: \"global\", source: \"agents-inc\" }),\n );\n });\n\n describe(\"dual-scope selection toggle\", () => {\n const dualScopeConfigs = (): SkillConfig[] => [\n ...buildSkillConfigs([\"web-framework-react\"], { scope: \"project\", source: \"agents-inc\" }),\n ...buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n excluded: true,\n }),\n ];\n\n it(\"leaves a dual-scope skill untouched when the selection key is pressed and emits the global-locked toast\", () => {\n const store = useWizardStore.getState();\n useWizardStore.setState({\n domainSelections: { web: { \"web-framework\": [\"web-framework-react\"] } },\n skillConfigs: dualScopeConfigs(),\n installedSkillConfigs: dualScopeConfigs(),\n isEditingFromGlobalScope: false,\n isInitMode: false,\n });\n\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n\n const { skillConfigs, domainSelections, toastMessage } = useWizardStore.getState();\n // Space is inert on a `[P][G]` row — `s` is the only key that changes a dual-scope pair.\n expect(toastMessage).toBe(\"Global skills cannot be changed from project scope\");\n expect(domainSelections.web![\"web-framework\"]).toStrictEqual([\"web-framework-react\"]);\n expect(skillConfigs).toStrictEqual(dualScopeConfigs());\n });\n\n it(\"leaves a dual-scope skill untouched when an exclusive-category sibling would replace it\", () => {\n const store = useWizardStore.getState();\n useWizardStore.setState({\n domainSelections: { web: { \"web-framework\": [\"web-framework-react\"] } },\n skillConfigs: dualScopeConfigs(),\n installedSkillConfigs: dualScopeConfigs(),\n isEditingFromGlobalScope: false,\n isInitMode: false,\n });\n\n // A radio swap to another framework would implicitly drop the `[P][G]` pair.\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-vue-composition-api\", true);\n\n const { skillConfigs, domainSelections, toastMessage } = useWizardStore.getState();\n expect(toastMessage).toBe(\"Global skills cannot be changed from project scope\");\n expect(domainSelections.web![\"web-framework\"]).toStrictEqual([\"web-framework-react\"]);\n expect(skillConfigs).toStrictEqual(dualScopeConfigs());\n });\n\n it(\"restores [P][G] when re-selecting an inherited-global row (fresh project entry AND tombstone)\", () => {\n const store = useWizardStore.getState();\n useWizardStore.setState({\n domainSelections: { web: { \"web-framework\": [] } },\n skillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n }),\n installedSkillConfigs: dualScopeConfigs(),\n isEditingFromGlobalScope: false,\n isInitMode: false,\n });\n\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n\n const { skillConfigs, domainSelections, toastMessage } = useWizardStore.getState();\n expect(toastMessage).toBeNull();\n expect(domainSelections.web![\"web-framework\"]).toStrictEqual([\"web-framework-react\"]);\n expect(skillConfigs).toStrictEqual(dualScopeConfigs());\n });\n\n it(\"restores [P][G] cleanly (no two active entries) via `s` after the collapse is saved and re-opened\", () => {\n const store = useWizardStore.getState();\n useWizardStore.setState({\n domainSelections: { web: { \"web-framework\": [\"web-framework-react\"] } },\n skillConfigs: dualScopeConfigs(),\n installedSkillConfigs: dualScopeConfigs(),\n isEditingFromGlobalScope: false,\n isInitMode: false,\n });\n\n // `s` collapses [P][G] -> single inherited-global [G]; react stays selected.\n store.toggleSkillScope(\"web-framework-react\");\n expect(useWizardStore.getState().skillConfigs).toStrictEqual(\n buildSkillConfigs([\"web-framework-react\"], { scope: \"global\", source: \"agents-inc\" }),\n );\n\n // Simulate save-and-reopen: the persisted single-global entry becomes the installed\n // snapshot. Re-selection via the selection key on the collapsed [G] row is a guarded\n // no-op (installedSkillConfigs now holds an ACTIVE global entry) — `s` is the\n // sanctioned restore path.\n useWizardStore.setState({\n skillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n }),\n installedSkillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n }),\n });\n\n store.toggleSkillScope(\"web-framework-react\"); // G->P restores a fresh [P][G] pair\n\n const { skillConfigs } = useWizardStore.getState();\n const activeEntries = skillConfigs.filter((sc) => !sc.excluded);\n expect(activeEntries).toStrictEqual(\n buildSkillConfigs([\"web-framework-react\"], { scope: \"project\", source: \"agents-inc\" }),\n );\n expect(skillConfigs.filter((sc) => sc.excluded)).toStrictEqual(\n buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n excluded: true,\n }),\n );\n });\n\n it(\"removes a global-scope skill entirely when deselected from a global-context edit (Scenario C setup)\", () => {\n // Global install edited at ~/: deselecting an active [G] skill produces a genuine removal\n // (no project-local tombstone in the global config), mirroring the agent-side fix.\n const store = useWizardStore.getState();\n useWizardStore.setState({\n domainSelections: { web: { \"web-framework\": [\"web-framework-react\"] } },\n skillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n }),\n installedSkillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n }),\n isEditingFromGlobalScope: true,\n isInitMode: false,\n });\n\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n\n const { skillConfigs, domainSelections, toastMessage } = useWizardStore.getState();\n expect(toastMessage).toBeNull();\n expect(domainSelections.web![\"web-framework\"]).toStrictEqual([]);\n expect(skillConfigs).toStrictEqual([]);\n });\n });\n\n it(\"should accumulate skillConfigs in non-exclusive mode\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-testing\", \"web-testing-vitest\", false);\n store.toggleTechnology(\"web\", \"web-testing\", \"web-testing-playwright-e2e\", false);\n\n const { skillConfigs } = useWizardStore.getState();\n expect(skillConfigs).toHaveLength(2);\n expect(skillConfigs.map((sc) => sc.id)).toStrictEqual([\n \"web-testing-vitest\",\n \"web-testing-playwright-e2e\",\n ]);\n });\n\n it(\"should toggle skill scope between global and project\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n\n store.toggleSkillScope(\"web-framework-react\");\n\n const { skillConfigs } = useWizardStore.getState();\n expect(skillConfigs[0].scope).toBe(\"project\");\n });\n\n it(\"should toggle skill scope back to global\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n\n store.toggleSkillScope(\"web-framework-react\");\n store.toggleSkillScope(\"web-framework-react\");\n\n const { skillConfigs } = useWizardStore.getState();\n expect(skillConfigs[0].scope).toBe(\"global\");\n });\n\n it(\"should block project eject to global when global eject already exists and set toastMessage\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n useWizardStore.setState({\n skillConfigs: buildSkillConfigs([\"web-framework-react\"]),\n installedSkillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"eject\",\n }),\n });\n\n store.toggleSkillScope(\"web-framework-react\");\n const { skillConfigs, toastMessage } = useWizardStore.getState();\n expect(skillConfigs).toStrictEqual(buildSkillConfigs([\"web-framework-react\"]));\n expect(toastMessage).toBe(\"Already exists as ejected skill at global scope\");\n });\n\n it(\"should allow global eject to project when global eject is installed\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n useWizardStore.setState({\n skillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"eject\",\n }),\n installedSkillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"eject\",\n }),\n });\n\n store.toggleSkillScope(\"web-framework-react\");\n const { skillConfigs, toastMessage } = useWizardStore.getState();\n expect(skillConfigs[0].scope).toBe(\"project\");\n expect(toastMessage).toBeNull();\n });\n\n it(\"should allow project eject to global when no global eject exists\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n useWizardStore.setState({\n skillConfigs: buildSkillConfigs([\"web-framework-react\"]),\n globalPreselections: [],\n });\n\n store.toggleSkillScope(\"web-framework-react\");\n const { skillConfigs, toastMessage } = useWizardStore.getState();\n expect(skillConfigs[0].scope).toBe(\"global\");\n expect(toastMessage).toBeNull();\n });\n\n it(\"should not toggle skill scope when isEditingFromGlobalScope is true\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n useWizardStore.setState({ isEditingFromGlobalScope: true });\n\n store.toggleSkillScope(\"web-framework-react\");\n const { skillConfigs } = useWizardStore.getState();\n expect(skillConfigs[0].scope).toBe(\"global\");\n });\n\n it(\"should add excluded global entry when toggling previously-installed global skill to project\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n useWizardStore.setState({\n installedSkillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n }),\n });\n\n store.toggleSkillScope(\"web-framework-react\");\n const { skillConfigs } = useWizardStore.getState();\n expect(skillConfigs).toStrictEqual([\n ...buildSkillConfigs([\"web-framework-react\"], { scope: \"project\", source: \"agents-inc\" }),\n ...buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n excluded: true,\n }),\n ]);\n });\n\n it(\"should remove excluded global entry when toggling back from project to global\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n useWizardStore.setState({\n installedSkillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n }),\n });\n\n store.toggleSkillScope(\"web-framework-react\"); // global → project (adds excluded)\n store.toggleSkillScope(\"web-framework-react\"); // project → global (removes excluded)\n const { skillConfigs } = useWizardStore.getState();\n expect(skillConfigs).toStrictEqual(\n buildSkillConfigs([\"web-framework-react\"], { scope: \"global\", source: \"agents-inc\" }),\n );\n });\n\n it(\"should not add excluded entry when toggling scope during fresh init\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n // installedSkillConfigs is null (fresh init)\n\n store.toggleSkillScope(\"web-framework-react\");\n const { skillConfigs } = useWizardStore.getState();\n expect(skillConfigs).toHaveLength(1);\n expect(skillConfigs[0].scope).toBe(\"project\");\n });\n\n it(\"should allow P→G reverse toggle for ejected skills after G→P toggle (round-trip)\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n useWizardStore.setState({\n skillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"eject\",\n }),\n installedSkillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"eject\",\n }),\n });\n\n // G→P: should succeed and create tombstone\n store.toggleSkillScope(\"web-framework-react\");\n const afterGtoP = useWizardStore.getState();\n expect(afterGtoP.skillConfigs).toStrictEqual([\n ...buildSkillConfigs([\"web-framework-react\"], { source: \"eject\" }),\n ...buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"eject\",\n excluded: true,\n }),\n ]);\n expect(afterGtoP.toastMessage).toBeNull();\n\n // P→G: should succeed (not blocked) and remove tombstone\n store.toggleSkillScope(\"web-framework-react\");\n const afterPtoG = useWizardStore.getState();\n expect(afterPtoG.skillConfigs).toStrictEqual(\n buildSkillConfigs([\"web-framework-react\"], { scope: \"global\", source: \"eject\" }),\n );\n expect(afterPtoG.toastMessage).toBeNull();\n });\n\n it(\"round-trips a persisted dual-scope skill row with `s`: collapse to [G], then restore [P][G]\", () => {\n // Reopened session on a persisted [P][G] pair: the snapshot carries only the EXCLUDED\n // global tombstone (never an active global entry). `s` is the SOLE dual-scope toggle —\n // P→G drops the tombstone (collapse), G→P re-adds it (restore), with no toast either way.\n const dualScope = (): SkillConfig[] => [\n ...buildSkillConfigs([\"web-framework-react\"], { scope: \"project\", source: \"agents-inc\" }),\n ...buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n excluded: true,\n }),\n ];\n const store = useWizardStore.getState();\n useWizardStore.setState({\n skillConfigs: dualScope(),\n installedSkillConfigs: dualScope(),\n isEditingFromGlobalScope: false,\n isInitMode: false,\n toastMessage: null,\n });\n\n store.toggleSkillScope(\"web-framework-react\");\n const first = useWizardStore.getState();\n expect(first.skillConfigs).toStrictEqual(\n buildSkillConfigs([\"web-framework-react\"], { scope: \"global\", source: \"agents-inc\" }),\n );\n expect(first.toastMessage).toBeNull();\n\n store.toggleSkillScope(\"web-framework-react\");\n const second = useWizardStore.getState();\n expect(second.skillConfigs).toStrictEqual(dualScope());\n expect(second.toastMessage).toBeNull();\n });\n\n it(\"runs the full in-session blocked-space → s-collapse → blocked-space → s-restore sequence on a persisted [P][G] skill\", () => {\n // Single wizard session on a persisted dual-scope pair: the hydration snapshot stays a\n // frozen [P][G] (project-active + global tombstone) throughout, while the live config is\n // mutated by each keypress. Exercises the state machine the E2E suite drives end-to-end.\n const dualScope = (): SkillConfig[] => [\n ...buildSkillConfigs([\"web-framework-react\"], { scope: \"project\", source: \"agents-inc\" }),\n ...buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n excluded: true,\n }),\n ];\n const plainGlobal = (): SkillConfig[] =>\n buildSkillConfigs([\"web-framework-react\"], { scope: \"global\", source: \"agents-inc\" });\n\n const store = useWizardStore.getState();\n useWizardStore.setState({\n domainSelections: { web: { \"web-framework\": [\"web-framework-react\"] } },\n skillConfigs: dualScope(),\n installedSkillConfigs: dualScope(),\n isEditingFromGlobalScope: false,\n isInitMode: false,\n toastMessage: null,\n });\n\n // Step 1 — spacebar on the live [P][G] row is BLOCKED: only `s` may change a dual-scope\n // pair. Live config and selection unchanged, toast shown.\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n const afterBlockedSpace = useWizardStore.getState();\n expect(afterBlockedSpace.skillConfigs).toStrictEqual(dualScope());\n expect(afterBlockedSpace.domainSelections.web![\"web-framework\"]).toStrictEqual([\n \"web-framework-react\",\n ]);\n expect(afterBlockedSpace.toastMessage).toBe(\n \"Global skills cannot be changed from project scope\",\n );\n\n // Step 2 — `s` collapses [P][G] to a single active inherited-global entry; the skill\n // stays selected (still active via global).\n useWizardStore.setState({ toastMessage: null });\n store.toggleSkillScope(\"web-framework-react\");\n const afterCollapse = useWizardStore.getState();\n expect(afterCollapse.skillConfigs).toStrictEqual(plainGlobal());\n expect(afterCollapse.domainSelections.web![\"web-framework\"]).toStrictEqual([\n \"web-framework-react\",\n ]);\n expect(afterCollapse.toastMessage).toBeNull();\n\n // Step 3 — spacebar on the collapsed row is BLOCKED too (would otherwise tombstone the\n // still-real global install). Live config unchanged, toast shown.\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n const afterBlocked = useWizardStore.getState();\n expect(afterBlocked.skillConfigs).toStrictEqual(plainGlobal());\n expect(afterBlocked.toastMessage).toBe(\"Global skills cannot be changed from project scope\");\n\n // Step 4 — `s` restores a fresh [P][G] pair (active project entry + global tombstone).\n useWizardStore.setState({ toastMessage: null });\n store.toggleSkillScope(\"web-framework-react\");\n const afterRestore = useWizardStore.getState();\n expect(afterRestore.skillConfigs).toStrictEqual(dualScope());\n expect(afterRestore.toastMessage).toBeNull();\n\n // Step 5 — `s` again freely flips the reconstructed pair back to plain global.\n store.toggleSkillScope(\"web-framework-react\");\n const afterFlip = useWizardStore.getState();\n expect(afterFlip.skillConfigs).toStrictEqual(plainGlobal());\n expect(afterFlip.toastMessage).toBeNull();\n\n // Step 5b — and back to [P][G], proving a free P↔G round-trip within the session.\n store.toggleSkillScope(\"web-framework-react\");\n expect(useWizardStore.getState().skillConfigs).toStrictEqual(dualScope());\n });\n\n it(\"writes no tombstone when a project skill re-scoped to global in-session is then deselected\", () => {\n // The snapshot holds the skill at PROJECT scope only — nothing is installed globally.\n // `s` rescopes it to global in-session, so the live entry now reads `scope: \"global\"`\n // while the snapshot still says project. A deselect here has no global install to\n // protect and no project override to record, so it must never mint a tombstone.\n const store = useWizardStore.getState();\n useWizardStore.setState({\n installedSkillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"project\",\n source: \"agents-inc\",\n }),\n isEditingFromGlobalScope: false,\n isInitMode: false,\n toastMessage: null,\n });\n\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.toggleSkillScope(\"web-framework-react\");\n expect(useWizardStore.getState().skillConfigs).toStrictEqual(\n buildSkillConfigs([\"web-framework-react\"], { scope: \"global\", source: \"agents-inc\" }),\n );\n\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n\n const { skillConfigs } = useWizardStore.getState();\n expect(\n skillConfigs.filter((sc) => sc.excluded),\n \"a skill never installed globally must not gain a global tombstone\",\n ).toStrictEqual([]);\n expect(skillConfigs).toStrictEqual(\n buildSkillConfigs([\"web-framework-react\"], { scope: \"global\", source: \"agents-inc\" }),\n );\n });\n\n it(\"should set and clear focusedSkillId\", () => {\n const store = useWizardStore.getState();\n\n store.setFocusedSkillId(\"web-framework-react\");\n expect(useWizardStore.getState().focusedSkillId).toBe(\"web-framework-react\");\n\n store.setFocusedSkillId(null);\n expect(useWizardStore.getState().focusedSkillId).toBeNull();\n });\n\n it(\"should update source via setSourceSelection on skillConfigs\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n\n store.setSourceSelection(\"web-framework-react\", \"eject\", \"global\");\n\n const { skillConfigs } = useWizardStore.getState();\n expect(skillConfigs[0].source).toBe(\"eject\");\n });\n\n it(\"should populate skillConfigs from populateFromSkillIds\", () => {\n const store = useWizardStore.getState();\n\n initializeMatrix(REACT_HONO_FRAMEWORK_API_MATRIX);\n\n store.populateFromSkillIds([\"web-framework-react\", \"api-framework-hono\"]);\n\n const { skillConfigs } = useWizardStore.getState();\n expect(skillConfigs).toHaveLength(2);\n expect(skillConfigs.map((sc) => sc.id)).toStrictEqual([\n \"web-framework-react\",\n \"api-framework-hono\",\n ]);\n // A fully-resolvable population records no unresolvable ids.\n expect(useWizardStore.getState().unresolvableSkillIds).toStrictEqual([]);\n });\n\n it(\"records the ids of installed skills that could not be resolved from the loaded matrix\", () => {\n const store = useWizardStore.getState();\n\n // Matrix has react + hono only; web-styling-tailwind is a real installed skill absent from\n // the loaded source. It must be recorded as unresolvable (not silently forgotten) so the\n // merge layer can preserve the existing config entry rather than treat it as a deselection.\n initializeMatrix(REACT_HONO_FRAMEWORK_API_MATRIX);\n\n store.populateFromSkillIds([\"web-framework-react\", \"web-styling-tailwind\"]);\n\n const state = useWizardStore.getState();\n expect(state.unresolvableSkillIds).toStrictEqual([\"web-styling-tailwind\"]);\n // The resolvable skill is still selected.\n expect(state.skillConfigs.map((sc) => sc.id)).toStrictEqual([\"web-framework-react\"]);\n });\n\n it(\"should preserve excluded entries from saved configs in populateFromSkillIds\", () => {\n const store = useWizardStore.getState();\n\n initializeMatrix(REACT_HONO_FRAMEWORK_API_MATRIX);\n\n const savedConfigs: SkillConfig[] = [\n ...buildSkillConfigs([\"web-framework-react\"], { scope: \"global\", source: \"agents-inc\" }),\n ...buildSkillConfigs([\"web-testing-vitest\"], {\n scope: \"global\",\n source: \"agents-inc\",\n excluded: true,\n }),\n ];\n\n store.populateFromSkillIds([\"web-framework-react\", \"api-framework-hono\"], savedConfigs);\n\n const { skillConfigs } = useWizardStore.getState();\n // Active skills + excluded entries\n const activeConfigs = skillConfigs.filter((sc) => !sc.excluded);\n const excludedConfigs = skillConfigs.filter((sc) => sc.excluded);\n expect(activeConfigs).toHaveLength(2);\n expect(excludedConfigs).toHaveLength(1);\n expect(excludedConfigs[0].id).toBe(\"web-testing-vitest\");\n expect(excludedConfigs[0].excluded).toBe(true);\n });\n\n it(\"preserves excluded tombstone when active entry exists for same skill at different scope\", () => {\n const store = useWizardStore.getState();\n\n initializeMatrix(REACT_HONO_FRAMEWORK_API_MATRIX);\n\n // D-223: project-scope active + global-scope excluded tombstone — dual-scope state.\n // populateFromSkillIds must preserve both so buildCategoriesForDomain can render dual badges.\n const savedConfigs: SkillConfig[] = [\n ...buildSkillConfigs([\"web-framework-react\"]),\n ...buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n excluded: true,\n source: \"agents-inc\",\n }),\n ];\n\n store.populateFromSkillIds([\"web-framework-react\", \"api-framework-hono\"], savedConfigs);\n\n const { skillConfigs } = useWizardStore.getState();\n const reactConfigs = skillConfigs.filter((sc) => sc.id === \"web-framework-react\");\n expect(reactConfigs).toHaveLength(2);\n\n const active = reactConfigs.find((sc) => !sc.excluded);\n const tombstone = reactConfigs.find((sc) => sc.excluded);\n expect(active?.scope).toBe(\"project\");\n expect(tombstone?.scope).toBe(\"global\");\n expect(tombstone?.excluded).toBe(true);\n });\n\n it(\"should prefer project-scoped entry when savedConfigs has duplicate skill with both scopes\", () => {\n const store = useWizardStore.getState();\n\n initializeMatrix(REACT_HONO_FRAMEWORK_API_MATRIX);\n\n // D-198: savedConfigs contains the same skill ID twice — once global, once project\n const savedConfigs: SkillConfig[] = [\n ...buildSkillConfigs([\"web-framework-react\"], { scope: \"global\", source: \"agents-inc\" }),\n ...buildSkillConfigs([\"web-framework-react\"]),\n ];\n\n store.populateFromSkillIds([\"web-framework-react\"], savedConfigs);\n\n const { skillConfigs } = useWizardStore.getState();\n const reactConfigs = skillConfigs.filter((sc) => sc.id === \"web-framework-react\");\n expect(reactConfigs).toHaveLength(1);\n // Project scope should win over global scope — verify full shape\n expect(reactConfigs[0]).toStrictEqual(buildSkillConfigs([\"web-framework-react\"])[0]);\n });\n\n it(\"should remove global skillConfigs when domain is deselected during fresh init\", () => {\n const store = useWizardStore.getState();\n store.toggleDomain(\"web\");\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n\n expect(useWizardStore.getState().skillConfigs).toHaveLength(1);\n\n store.toggleDomain(\"web\");\n\n const { skillConfigs } = useWizardStore.getState();\n expect(skillConfigs).toHaveLength(0);\n });\n\n it(\"removes global skillConfigs cleanly (no tombstone) when a domain is deselected while editing from global scope\", () => {\n const store = useWizardStore.getState();\n useWizardStore.setState({\n installedSkillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n }),\n isEditingFromGlobalScope: true,\n });\n store.toggleDomain(\"web\");\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n\n expect(useWizardStore.getState().skillConfigs).toHaveLength(1);\n\n store.toggleDomain(\"web\");\n\n // Global-scope edit: deselecting a domain uninstalls its skills cleanly (no tombstone).\n expect(useWizardStore.getState().skillConfigs).toStrictEqual([]);\n });\n\n it(\"should remove project skillConfigs when domain is deselected\", () => {\n const store = useWizardStore.getState();\n store.toggleDomain(\"web\");\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n // Set scope to project\n useWizardStore.setState({\n skillConfigs: buildSkillConfigs([\"web-framework-react\"]),\n });\n\n store.toggleDomain(\"web\");\n\n expect(useWizardStore.getState().skillConfigs).toHaveLength(0);\n });\n\n it(\"should remove project-scoped skill from skillConfigs when toggling off\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n // Change scope to project\n useWizardStore.setState({\n skillConfigs: buildSkillConfigs([\"web-framework-react\"]),\n });\n\n // Toggle off the skill\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n\n const { skillConfigs } = useWizardStore.getState();\n // Project-scoped skill should be fully removed, not kept as excluded\n expect(skillConfigs).toHaveLength(0);\n });\n\n it(\"should remove both global and project skills when deselecting domain during fresh init\", () => {\n initializeMatrix(ALL_SKILLS_FULLSTACK_CATEGORIES_MATRIX);\n const store = useWizardStore.getState();\n store.toggleDomain(\"web\");\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.toggleTechnology(\"web\", \"web-client-state\", \"web-state-zustand\", false);\n // Set react to global, zustand to project\n useWizardStore.setState({\n skillConfigs: [\n ...buildSkillConfigs([\"web-framework-react\"], { scope: \"global\", source: \"agents-inc\" }),\n ...buildSkillConfigs([\"web-state-zustand\"]),\n ],\n });\n\n store.toggleDomain(\"web\");\n\n const { skillConfigs } = useWizardStore.getState();\n // Both should be removed during fresh init (no installed configs)\n expect(skillConfigs).toHaveLength(0);\n });\n\n it(\"removes both global and project skills cleanly when a domain is deselected while editing from global scope\", () => {\n initializeMatrix(ALL_SKILLS_FULLSTACK_CATEGORIES_MATRIX);\n const store = useWizardStore.getState();\n useWizardStore.setState({\n installedSkillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n }),\n isEditingFromGlobalScope: true,\n });\n store.toggleDomain(\"web\");\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.toggleTechnology(\"web\", \"web-client-state\", \"web-state-zustand\", false);\n // Set react to global, zustand to project\n useWizardStore.setState({\n skillConfigs: [\n ...buildSkillConfigs([\"web-framework-react\"], { scope: \"global\", source: \"agents-inc\" }),\n ...buildSkillConfigs([\"web-state-zustand\"]),\n ],\n });\n\n store.toggleDomain(\"web\");\n\n // Global-scope edit has no overlay: both skills are uninstalled cleanly, no tombstone.\n expect(useWizardStore.getState().skillConfigs).toStrictEqual([]);\n });\n\n it(\"leaves every globally installed entry untouched when a domain is deselected at project scope\", () => {\n // Deselecting a domain at project scope is a VIEW FILTER: it hides the domain and drops\n // what the project owns there, but it has no authority over the global install.\n initializeMatrix(ALL_SKILLS_FULLSTACK_CATEGORIES_MATRIX);\n const store = useWizardStore.getState();\n store.toggleDomain(\"web\");\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.toggleTechnology(\"web\", \"web-client-state\", \"web-state-zustand\", false);\n useWizardStore.setState({\n skillConfigs: [\n ...buildSkillConfigs([\"web-framework-react\"], { scope: \"global\", source: \"agents-inc\" }),\n ...buildSkillConfigs([\"web-state-zustand\"], { scope: \"project\", source: \"agents-inc\" }),\n ],\n installedSkillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n }),\n isEditingFromGlobalScope: false,\n isInitMode: false,\n });\n const globalEntriesBefore = useWizardStore\n .getState()\n .skillConfigs.filter((sc) => sc.scope === \"global\");\n\n store.toggleDomain(\"web\");\n\n const { skillConfigs, selectedDomains, domainSelections } = useWizardStore.getState();\n expect(\n skillConfigs.filter((sc) => sc.scope === \"global\"),\n \"global entries must survive a project-scope domain deselect byte-identical\",\n ).toStrictEqual(globalEntriesBefore);\n expect(skillConfigs, \"only the domain's project-scoped entries are dropped\").toStrictEqual(\n buildSkillConfigs([\"web-framework-react\"], { scope: \"global\", source: \"agents-inc\" }),\n );\n expect(selectedDomains).toStrictEqual([]);\n expect(domainSelections.web).toBeUndefined();\n });\n\n it(\"collapses a dual-scope pair to one inherited global entry when its domain is deselected\", () => {\n initializeMatrix(ALL_SKILLS_FULLSTACK_CATEGORIES_MATRIX);\n const dualScope = (): SkillConfig[] => [\n ...buildSkillConfigs([\"web-framework-react\"], { scope: \"project\", source: \"agents-inc\" }),\n ...buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n excluded: true,\n }),\n ];\n const store = useWizardStore.getState();\n store.toggleDomain(\"web\");\n useWizardStore.setState({\n domainSelections: { web: { \"web-framework\": [\"web-framework-react\"] } },\n skillConfigs: dualScope(),\n installedSkillConfigs: dualScope(),\n isEditingFromGlobalScope: false,\n isInitMode: false,\n });\n\n store.toggleDomain(\"web\");\n\n const { skillConfigs, selectedDomains, domainSelections } = useWizardStore.getState();\n expect(\n skillConfigs,\n \"both halves of the pair are dropped and the still-live global install re-surfaces\",\n ).toStrictEqual(\n buildSkillConfigs([\"web-framework-react\"], { scope: \"global\", source: \"agents-inc\" }),\n );\n expect(selectedDomains).toStrictEqual([]);\n expect(domainSelections.web).toBeUndefined();\n });\n\n it(\"should reset skillConfigs and focusedSkillId on reset\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.setFocusedSkillId(\"web-framework-react\");\n\n store.reset();\n\n const state = useWizardStore.getState();\n expect(state.skillConfigs).toStrictEqual([]);\n expect(state.focusedSkillId).toBeNull();\n });\n\n it(\"should set all sources to eject via setAllSourcesEject\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.toggleTechnology(\"api\", \"api-api\", \"api-framework-hono\", true);\n\n store.setAllSourcesEject();\n\n const { skillConfigs } = useWizardStore.getState();\n expect(skillConfigs.every((sc) => sc.source === \"eject\")).toBe(true);\n });\n\n it(\"should set all sources to plugin via setAllSourcesPlugin\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.setSourceSelection(\"web-framework-react\", \"eject\", \"global\");\n\n initializeMatrix(\n createMockMatrix({\n ...SKILLS.react,\n availableSources: [{ name: \"Acme Corp\", type: \"private\", installed: false }],\n }),\n );\n\n store.setAllSourcesPlugin();\n\n const { skillConfigs } = useWizardStore.getState();\n expect(skillConfigs[0].source).toBe(\"Acme Corp\");\n });\n\n it(\"flips the active entry but leaves an excluded global tombstone's source intact via setAllSourcesEject\", () => {\n // Dual-scope pair: active project entry + masked global tombstone. The bulk set-all is a\n // project-scope action, so the tombstone (which records the masked global install's source)\n // must keep its marketplace source rather than inherit the eject switch.\n const store = useWizardStore.getState();\n useWizardStore.setState({\n skillConfigs: [\n ...buildSkillConfigs([\"web-framework-react\"], { scope: \"project\", source: \"agents-inc\" }),\n ...buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n excluded: true,\n }),\n ],\n });\n\n store.setAllSourcesEject();\n\n const { skillConfigs } = useWizardStore.getState();\n expect(skillConfigs).toStrictEqual([\n ...buildSkillConfigs([\"web-framework-react\"], { scope: \"project\", source: \"eject\" }),\n ...buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n excluded: true,\n }),\n ]);\n });\n\n it(\"flips the active entry but leaves an excluded global tombstone's source intact via setAllSourcesPlugin\", () => {\n const store = useWizardStore.getState();\n useWizardStore.setState({\n skillConfigs: [\n ...buildSkillConfigs([\"web-framework-react\"], { scope: \"project\", source: \"eject\" }),\n ...buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n excluded: true,\n }),\n ],\n });\n\n initializeMatrix(\n createMockMatrix({\n ...SKILLS.react,\n availableSources: [{ name: \"Acme Corp\", type: \"private\", installed: false }],\n }),\n );\n\n store.setAllSourcesPlugin();\n\n const { skillConfigs } = useWizardStore.getState();\n expect(skillConfigs).toStrictEqual([\n ...buildSkillConfigs([\"web-framework-react\"], { scope: \"project\", source: \"Acme Corp\" }),\n ...buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n excluded: true,\n }),\n ]);\n });\n });\n\n describe(\"computed getters\", () => {\n it(\"should get all selected technologies\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.toggleTechnology(\"web\", \"web-styling\", \"web-styling-scss-modules\", true);\n store.toggleTechnology(\"api\", \"api-api\", \"api-framework-hono\", true);\n\n const technologies = store.getAllSelectedTechnologies();\n expect(technologies).toStrictEqual([\n \"web-framework-react\",\n \"web-styling-scss-modules\",\n \"api-framework-hono\",\n ]);\n });\n\n it(\"should get selected technologies per domain\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.toggleTechnology(\"web\", \"web-styling\", \"web-styling-scss-modules\", true);\n store.toggleTechnology(\"api\", \"api-api\", \"api-framework-hono\", true);\n\n const perDomain = store.getSelectedTechnologiesPerDomain();\n expect(perDomain.web).toStrictEqual([\"web-framework-react\", \"web-styling-scss-modules\"]);\n expect(perDomain.api).toStrictEqual([\"api-framework-hono\"]);\n expect(perDomain.cli).toBeUndefined();\n });\n\n it(\"should return empty object for getSelectedTechnologiesPerDomain with no selections\", () => {\n const store = useWizardStore.getState();\n const perDomain = store.getSelectedTechnologiesPerDomain();\n expect(perDomain).toStrictEqual({});\n });\n\n it(\"should omit domains with empty category arrays from getSelectedTechnologiesPerDomain\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true); // toggle off\n\n const perDomain = store.getSelectedTechnologiesPerDomain();\n expect(perDomain.web).toBeUndefined();\n });\n\n it(\"should get technology count\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.toggleTechnology(\"web\", \"web-styling\", \"web-styling-scss-modules\", true);\n store.toggleTechnology(\"api\", \"api-api\", \"api-framework-hono\", true);\n\n expect(store.getTechnologyCount()).toBe(3);\n });\n\n it(\"should return 0 for getTechnologyCount with no selections\", () => {\n const store = useWizardStore.getState();\n expect(store.getTechnologyCount()).toBe(0);\n });\n });\n\n describe(\"navigation guards\", () => {\n it(\"canGoToNextDomain should return true when not at last domain\", () => {\n const store = useWizardStore.getState();\n store.toggleDomain(\"web\");\n store.toggleDomain(\"api\");\n\n expect(store.canGoToNextDomain()).toBe(true);\n });\n\n it(\"canGoToNextDomain should return false when at last domain\", () => {\n const store = useWizardStore.getState();\n store.toggleDomain(\"web\");\n\n expect(store.canGoToNextDomain()).toBe(false);\n });\n\n it(\"canGoToNextDomain should return false with no domains\", () => {\n const store = useWizardStore.getState();\n expect(store.canGoToNextDomain()).toBe(false);\n });\n\n it(\"canGoToPreviousDomain should return false when at first domain\", () => {\n const store = useWizardStore.getState();\n store.toggleDomain(\"web\");\n store.toggleDomain(\"api\");\n\n expect(store.canGoToPreviousDomain()).toBe(false);\n });\n\n it(\"canGoToPreviousDomain should return true when past first domain\", () => {\n const store = useWizardStore.getState();\n store.toggleDomain(\"web\");\n store.toggleDomain(\"api\");\n store.nextDomain();\n\n expect(store.canGoToPreviousDomain()).toBe(true);\n });\n\n it(\"canGoToPreviousDomain should return false with no domains\", () => {\n const store = useWizardStore.getState();\n expect(store.canGoToPreviousDomain()).toBe(false);\n });\n });\n\n describe(\"reset\", () => {\n it(\"should reset to initial state\", () => {\n const store = useWizardStore.getState();\n\n store.setStep(\"stack\");\n store.setApproach(\"scratch\");\n store.selectStack(\"nextjs-fullstack\");\n store.toggleDomain(\"web\");\n\n store.reset();\n\n const state = useWizardStore.getState();\n expect(state.step).toBe(\"stack\");\n expect(state.approach).toBeNull();\n expect(state.selectedStackId).toBeNull();\n expect(state.selectedDomains).toStrictEqual([]);\n expect(state.history).toStrictEqual([]);\n });\n });\n\n describe(\"complex flows\", () => {\n it(\"should handle complete stack selection flow\", () => {\n const store = useWizardStore.getState();\n\n store.setApproach(\"stack\");\n store.selectStack(\"nextjs-fullstack\");\n store.setStackAction(\"customize\");\n store.setStep(\"build\");\n\n store.setStep(\"confirm\");\n\n const state = useWizardStore.getState();\n expect(state.step).toBe(\"confirm\");\n expect(state.approach).toBe(\"stack\");\n expect(state.selectedStackId).toBe(\"nextjs-fullstack\");\n expect(state.stackAction).toBe(\"customize\");\n expect(state.history).toStrictEqual([\"stack\", \"build\"]);\n });\n\n it(\"should handle complete scratch flow\", () => {\n const store = useWizardStore.getState();\n\n store.setApproach(\"scratch\");\n store.toggleDomain(\"web\");\n store.toggleDomain(\"api\");\n store.setStep(\"build\");\n\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.toggleTechnology(\"web\", \"web-styling\", \"web-styling-scss-modules\", true);\n store.toggleTechnology(\"api\", \"api-api\", \"api-framework-hono\", true);\n store.setStep(\"confirm\");\n\n const state = useWizardStore.getState();\n expect(state.step).toBe(\"confirm\");\n expect(state.approach).toBe(\"scratch\");\n expect(state.selectedDomains).toStrictEqual([\"web\", \"api\"]);\n expect(state.domainSelections.web![\"web-framework\"]).toStrictEqual([\"web-framework-react\"]);\n expect(state.domainSelections.web![\"web-styling\"]).toStrictEqual([\n \"web-styling-scss-modules\",\n ]);\n expect(state.domainSelections.api![\"api-api\"]).toStrictEqual([\"api-framework-hono\"]);\n });\n\n it(\"should preserve selections when going back\", () => {\n const store = useWizardStore.getState();\n\n store.setApproach(\"scratch\");\n store.toggleDomain(\"web\");\n store.setStep(\"build\");\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n\n store.goBack();\n\n const state = useWizardStore.getState();\n expect(state.selectedDomains).toContain(\"web\");\n expect(state.domainSelections.web![\"web-framework\"]).toStrictEqual([\"web-framework-react\"]);\n });\n });\n\n describe(\"buildSourceRows sort order\", () => {\n function makeSource(overrides: Partial<SkillSource> & { name: string }): SkillSource {\n return {\n type: \"private\",\n installed: false,\n ...overrides,\n };\n }\n\n it(\"should sort local sources before scoped marketplace sources\", () => {\n const store = useWizardStore.getState();\n\n const skill = {\n ...SKILLS.react,\n availableSources: [\n makeSource({ name: \"Acme Corp\", type: \"private\", primary: true }),\n makeSource({ name: \"eject\", type: \"local\", installed: true, installMode: \"eject\" }),\n ],\n };\n\n initializeMatrix(createMockMatrix(skill));\n\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n\n const rows = store.buildSourceRows();\n expect(rows).toHaveLength(1);\n expect(rows[0].options[0].id).toBe(\"eject\");\n expect(rows[0].options[1].id).toBe(\"Acme Corp\");\n });\n\n it(\"should sort scoped marketplace before default public marketplace\", () => {\n const store = useWizardStore.getState();\n\n const skill = {\n ...SKILLS.react,\n availableSources: [\n makeSource({ name: \"agents-inc\", type: \"public\" }),\n makeSource({ name: \"Acme Corp\", type: \"private\", primary: true }),\n ],\n };\n\n initializeMatrix(createMockMatrix(skill));\n\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n\n const rows = store.buildSourceRows();\n expect(rows).toHaveLength(1);\n expect(rows[0].options[0].id).toBe(\"eject\");\n expect(rows[0].options[1].id).toBe(\"Acme Corp\");\n expect(rows[0].options[2].id).toBe(\"agents-inc\");\n });\n\n it(\"should sort default public marketplace before third-party sources\", () => {\n const store = useWizardStore.getState();\n\n const skill = {\n ...SKILLS.react,\n availableSources: [\n makeSource({ name: \"Extra Corp\", type: \"private\" }),\n makeSource({ name: \"agents-inc\", type: \"public\" }),\n ],\n };\n\n initializeMatrix(createMockMatrix(skill));\n\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n\n const rows = store.buildSourceRows();\n expect(rows).toHaveLength(1);\n expect(rows[0].options[0].id).toBe(\"eject\");\n expect(rows[0].options[1].id).toBe(\"agents-inc\");\n expect(rows[0].options[2].id).toBe(\"Extra Corp\");\n });\n\n it(\"should sort all four tiers in correct order\", () => {\n const store = useWizardStore.getState();\n\n const skill = {\n ...SKILLS.react,\n availableSources: [\n makeSource({ name: \"Extra Corp\", type: \"private\" }),\n makeSource({ name: \"agents-inc\", type: \"public\" }),\n makeSource({ name: \"Acme Corp\", type: \"private\", primary: true }),\n makeSource({ name: \"eject\", type: \"local\", installed: true, installMode: \"eject\" }),\n ],\n };\n\n initializeMatrix(createMockMatrix(skill));\n\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n\n const rows = store.buildSourceRows();\n expect(rows).toHaveLength(1);\n\n const sourceNames = rows[0].options.map((opt) => opt.id);\n expect(sourceNames).toStrictEqual([\"eject\", \"Acme Corp\", \"agents-inc\", \"Extra Corp\"]);\n });\n });\n\n describe(\"buildSourceRows scope\", () => {\n it(\"should include scope from skillConfigs\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n\n // Default scope is \"global\" from createDefaultSkillConfig\n const rows = store.buildSourceRows();\n expect(rows).toHaveLength(1);\n expect(rows[0].scope).toBe(\"global\");\n\n // Toggle to project scope\n store.toggleSkillScope(\"web-framework-react\");\n const updatedRows = store.buildSourceRows();\n expect(updatedRows[0].scope).toBe(\"project\");\n });\n\n it(\"should return undefined scope for skills not in skillConfigs\", () => {\n initializeMatrix(ALL_SKILLS_WEB_AND_API_MATRIX);\n const store = useWizardStore.getState();\n\n // Add a skill via domainSelections but remove its skillConfig entry\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n useWizardStore.setState({ skillConfigs: [] });\n\n const rows = store.buildSourceRows();\n expect(rows).toHaveLength(1);\n expect(rows[0].skillId).toBe(\"web-framework-react\");\n expect(rows[0].scope).toBeUndefined();\n });\n\n it(\"should mark global-scoped skills as readOnly when previously installed globally\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n useWizardStore.setState({\n installedSkillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"eject\",\n }),\n });\n\n const rows = store.buildSourceRows();\n expect(rows).toHaveLength(1);\n expect(rows[0].readOnly).toBe(true);\n });\n\n it(\"should not mark global-scoped skills as readOnly when not previously installed\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n\n // installedSkillConfigs is null (default) — no prior installs\n const rows = store.buildSourceRows();\n expect(rows).toHaveLength(1);\n expect(rows[0].readOnly).toBeUndefined();\n });\n\n it(\"should not mark global-scoped skills as readOnly when editing from global scope\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n useWizardStore.setState({\n isEditingFromGlobalScope: true,\n installedSkillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"eject\",\n }),\n });\n\n const rows = store.buildSourceRows();\n expect(rows).toHaveLength(1);\n expect(rows[0].readOnly).toBeUndefined();\n });\n\n it(\"should not mark project-scoped skills as readOnly when previously installed as project\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n // The live entry is set explicitly: toggleTechnology defaults its config entry to GLOBAL\n // scope, which would make this a project→global migration — a different state, with a\n // pending-removal row for the emptied project slot — rather than a skill that stays put.\n useWizardStore.setState({\n installedSkillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"project\",\n source: \"eject\",\n }),\n skillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"project\",\n source: \"eject\",\n }),\n });\n\n const rows = store.buildSourceRows();\n // One row is the contract: the skill occupies the same (id, project) slot it was saved in, so\n // no slot is emptied and nothing is pending removal.\n expect(rows).toHaveLength(1);\n expect(rows[0].scope).toBe(\"project\");\n expect(rows[0].readOnly).toBeUndefined();\n });\n\n it(\"should emit both global locked and project editable rows for re-scoped skills\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n // Simulate: was installed globally, now toggled to project\n useWizardStore.setState({\n installedSkillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n }),\n skillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"project\",\n source: \"agents-inc\",\n }),\n });\n\n const rows = store.buildSourceRows();\n expect(rows).toHaveLength(2);\n\n // First row: locked global copy\n expect(rows[0].skillId).toBe(\"web-framework-react\");\n expect(rows[0].scope).toBe(\"global\");\n expect(rows[0].readOnly).toBe(true);\n\n // Second row: editable project copy\n expect(rows[1].skillId).toBe(\"web-framework-react\");\n expect(rows[1].scope).toBe(\"project\");\n expect(rows[1].readOnly).toBeUndefined();\n });\n\n it(\"should not mark new global skills as readOnly when not previously installed\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n // No installedSkillConfigs entry for this skill — it's new\n useWizardStore.setState({\n installedSkillConfigs: [],\n skillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n }),\n });\n\n const rows = store.buildSourceRows();\n expect(rows).toHaveLength(1);\n expect(rows[0].scope).toBe(\"global\");\n expect(rows[0].readOnly).toBeUndefined();\n });\n\n it(\"should emit single locked row for skill that remains global-scoped\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n useWizardStore.setState({\n installedSkillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n }),\n skillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n }),\n });\n\n const rows = store.buildSourceRows();\n expect(rows).toHaveLength(1);\n expect(rows[0].scope).toBe(\"global\");\n expect(rows[0].readOnly).toBe(true);\n });\n\n it(\"should show excluded global skills as locked rows\", () => {\n const store = useWizardStore.getState();\n // Don't toggle any technology — the excluded skill was deselected\n useWizardStore.setState({\n installedSkillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n }),\n skillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n excluded: true,\n }),\n });\n\n const rows = store.buildSourceRows();\n expect(rows).toHaveLength(1);\n expect(rows[0].skillId).toBe(\"web-framework-react\");\n expect(rows[0].scope).toBe(\"global\");\n expect(rows[0].readOnly).toBe(true);\n });\n\n it(\"should not duplicate rows for re-scoped skills with excluded tombstone\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n useWizardStore.setState({\n installedSkillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n }),\n skillConfigs: [\n ...buildSkillConfigs([\"web-framework-react\"], { scope: \"project\", source: \"agents-inc\" }),\n ...buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n excluded: true,\n }),\n ],\n });\n\n const rows = store.buildSourceRows();\n expect(rows).toHaveLength(2);\n expect(rows[0].scope).toBe(\"global\");\n expect(rows[0].readOnly).toBe(true);\n expect(rows[1].scope).toBe(\"project\");\n expect(rows[1].readOnly).toBeUndefined();\n });\n\n it(\"should emit single editable row for new project-scoped skill\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n useWizardStore.setState({\n installedSkillConfigs: [],\n skillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"project\",\n source: \"agents-inc\",\n }),\n });\n\n const rows = store.buildSourceRows();\n expect(rows).toHaveLength(1);\n expect(rows[0].skillId).toBe(\"web-framework-react\");\n expect(rows[0].scope).toBe(\"project\");\n expect(rows[0].readOnly).toBeUndefined();\n });\n\n it(\"should produce correct rows for mixed re-scoped and excluded skills\", () => {\n const store = useWizardStore.getState();\n // React is selected (re-scoped to project), Vitest is NOT selected (purely excluded)\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n useWizardStore.setState({\n installedSkillConfigs: buildSkillConfigs([\"web-framework-react\", \"web-testing-vitest\"], {\n scope: \"global\",\n source: \"agents-inc\",\n }),\n skillConfigs: [\n ...buildSkillConfigs([\"web-framework-react\"], { scope: \"project\", source: \"agents-inc\" }),\n ...buildSkillConfigs([\"web-framework-react\", \"web-testing-vitest\"], {\n scope: \"global\",\n source: \"agents-inc\",\n excluded: true,\n }),\n ],\n });\n\n const rows = store.buildSourceRows();\n // React: 2 rows (locked global + editable project)\n // Vitest: 1 row (locked global, purely excluded)\n // Total: 3\n expect(rows).toHaveLength(3);\n\n const reactRows = rows.filter((r) => r.skillId === \"web-framework-react\");\n const vitestRows = rows.filter((r) => r.skillId === \"web-testing-vitest\");\n\n expect(reactRows).toHaveLength(2);\n expect(reactRows[0].scope).toBe(\"global\");\n expect(reactRows[0].readOnly).toBe(true);\n expect(reactRows[1].scope).toBe(\"project\");\n expect(reactRows[1].readOnly).toBeUndefined();\n\n expect(vitestRows).toHaveLength(1);\n expect(vitestRows[0].scope).toBe(\"global\");\n expect(vitestRows[0].readOnly).toBe(true);\n });\n\n it(\"should keep a deselected saved project skill visible as a disabled row\", () => {\n const store = useWizardStore.getState();\n // Don't toggle any technology — the saved project skill was deselected, and a project\n // entry is dropped outright (no tombstone), so skillConfigs no longer holds it.\n useWizardStore.setState({\n installedSkillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"project\",\n source: \"eject\",\n }),\n skillConfigs: [],\n });\n\n const rows = store.buildSourceRows();\n expect(rows).toHaveLength(1);\n expect(rows[0].skillId).toBe(\"web-framework-react\");\n expect(rows[0].disabled).toBe(true);\n // A lock would read as \"installed globally\"; this row is pending removal instead.\n expect(rows[0].readOnly).toBeUndefined();\n expect(rows[0].scope).toBe(\"project\");\n });\n\n it(\"should show the persisted source on a deselected saved project skill\", () => {\n const store = useWizardStore.getState();\n useWizardStore.setState({\n installedSkillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"project\",\n source: \"eject\",\n }),\n skillConfigs: [],\n });\n\n const rows = store.buildSourceRows();\n expect(rows[0].options.filter((o) => o.selected).map((o) => o.id)).toStrictEqual([\"eject\"]);\n });\n\n it(\"should not surface a never-saved skill as a disabled row during init\", () => {\n const store = useWizardStore.getState();\n // Init has no hydration snapshot, so a skill deselected before saving must not linger.\n useWizardStore.setState({ installedSkillConfigs: null, skillConfigs: [] });\n\n expect(store.buildSourceRows()).toStrictEqual([]);\n });\n\n it(\"should surface a deselected saved skill as a disabled row when editing from global scope\", () => {\n const store = useWizardStore.getState();\n // Deselecting while editing from global scope drops the skill outright — reconcileSkillConfigs\n // passes null so applySkillRemoval leaves no tombstone — which makes the snapshot the only\n // surviving record of what saving is about to remove. The confirm step's computeScopeDiff\n // reports that removal with no global-scope gate, so the Sources tab must not gate it either.\n // The snapshot entry is global-scoped because a global config only ever holds global-active\n // entries (splitConfigByScope).\n useWizardStore.setState({\n isEditingFromGlobalScope: true,\n installedSkillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"eject\",\n }),\n skillConfigs: [],\n });\n\n const rows = store.buildSourceRows();\n expect(rows).toHaveLength(1);\n expect(rows[0].skillId).toBe(\"web-framework-react\");\n expect(rows[0].disabled).toBe(true);\n expect(rows[0].scope).toBe(\"global\");\n // A global-scope edit owns every row, so nothing renders as locked-because-inherited.\n expect(rows[0].readOnly).toBeUndefined();\n });\n\n it(\"should skip a saved skill the marketplace no longer carries instead of throwing\", () => {\n const store = useWizardStore.getState();\n initializeMatrix(createMockMatrix(SKILLS.react));\n // A config referencing a removed/renamed skill: present in the snapshot, absent from the\n // matrix. Rendering a row for it would throw in getSkillById.\n useWizardStore.setState({\n installedSkillConfigs: buildSkillConfigs([\"web-testing-vitest\"], {\n scope: \"project\",\n source: \"eject\",\n }),\n skillConfigs: [],\n });\n\n expect(store.buildSourceRows()).toStrictEqual([]);\n });\n\n it(\"should render a collapsed dual-scope skill as a locked global row plus a project pending-removal row\", () => {\n const store = useWizardStore.getState();\n // A skill installed at BOTH scopes that collapses [P][G] to [G] empties its PROJECT slot:\n // saving deletes the project copy while the global install survives. Removal is a property\n // of the (id, scope) slot, not of the id, so the surviving global entry must not hide the\n // emptied project slot — the Sources tab shows the skill twice, exactly as the confirm step\n // does (`-` at Project, `•` at Global).\n useWizardStore.setState({\n installedSkillConfigs: [\n ...buildSkillConfigs([\"web-framework-react\"], {\n scope: \"project\",\n source: \"agents-inc\",\n }),\n ...buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n }),\n ],\n skillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n }),\n });\n\n const rows = store.buildSourceRows();\n expect(rows.map((r) => r.skillId)).toStrictEqual([\n \"web-framework-react\",\n \"web-framework-react\",\n ]);\n expect(rows.map((r) => r.scope)).toStrictEqual([\"global\", \"project\"]);\n // The surviving global install is locked-because-inherited, never pending removal.\n expect(rows[0].readOnly).toBe(true);\n expect(rows[0].disabled).toBeUndefined();\n // The emptied project slot is inert and pending removal — a lock there would read as\n // \"installed globally\" instead of \"about to be removed\".\n expect(rows[1].disabled).toBe(true);\n expect(rows[1].readOnly).toBeUndefined();\n // Both slots come FROM the snapshot, so neither can be new this session.\n expect(rows.map((r) => r.added)).toStrictEqual([undefined, undefined]);\n });\n\n it(\"should render a pending-removal row inline after the still-selected rows of its scope\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n useWizardStore.setState({\n installedSkillConfigs: [\n ...buildSkillConfigs([\"web-framework-react\"], {\n scope: \"project\",\n source: \"eject\",\n }),\n ...buildSkillConfigs([\"web-testing-vitest\"], { scope: \"project\", source: \"eject\" }),\n ],\n skillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"project\",\n source: \"eject\",\n }),\n });\n\n const rows = store.buildSourceRows();\n // The removed row is not sunk into a separate section: it shares the project scope and simply\n // trails the still-selected project row, matching the info panel's active-then-removed order.\n expect(rows.map((r) => r.skillId)).toStrictEqual([\n \"web-framework-react\",\n \"web-testing-vitest\",\n ]);\n expect(rows.map((r) => r.scope)).toStrictEqual([\"project\", \"project\"]);\n expect(rows[0].disabled).toBeUndefined();\n expect(rows[1].disabled).toBe(true);\n });\n\n it(\"should mark every row added when there is no installation snapshot\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n // A first init hydrates no snapshot. An absent baseline occupies no slot, so every row is\n // new — the same answer computeScopeDiff gives the confirm step, which prints `+` on every\n // row of a first install.\n useWizardStore.setState({ installedSkillConfigs: null });\n\n const rows = store.buildSourceRows();\n expect(rows).toHaveLength(1);\n expect(rows[0].added).toBe(true);\n });\n\n it(\"should mark every row added when the installation snapshot is empty\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n // \"No snapshot\" and \"empty snapshot\" are the same baseline and must classify identically —\n // the divergence between them is what left a first init unmarked while the confirm step\n // marked the same rows added.\n useWizardStore.setState({ installedSkillConfigs: [] });\n\n const rows = store.buildSourceRows();\n expect(rows).toHaveLength(1);\n expect(rows[0].added).toBe(true);\n });\n\n it(\"should mark only the project half of an adopted global skill as added\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n // Adopting a global skill at project scope occupies a NEW (id, project) slot while the\n // global install stays put, so the addition belongs to the editable project row alone.\n useWizardStore.setState({\n installedSkillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n }),\n skillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"project\",\n source: \"agents-inc\",\n }),\n });\n\n const rows = store.buildSourceRows();\n expect(rows.map((r) => r.scope)).toStrictEqual([\"global\", \"project\"]);\n expect(rows[0].added).toBeUndefined();\n expect(rows[1].added).toBe(true);\n });\n\n it(\"should render a collapsed persisted dual-scope pair as an unmarked global row plus a project pending-removal row\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n // A persisted [P][G] pair — project entry plus global tombstone masking the global install —\n // IS the both-scopes installation. Collapsing it back to [G] re-activates the slot the\n // tombstone already occupied, so the surviving global row is unchanged rather than an\n // addition, while the emptied PROJECT slot is what saving deletes and must stay visible.\n useWizardStore.setState({\n installedSkillConfigs: [\n ...buildSkillConfigs([\"web-framework-react\"], { scope: \"project\", source: \"agents-inc\" }),\n ...buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n excluded: true,\n }),\n ],\n skillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n }),\n });\n\n const rows = store.buildSourceRows();\n expect(rows.map((r) => r.skillId)).toStrictEqual([\n \"web-framework-react\",\n \"web-framework-react\",\n ]);\n expect(rows.map((r) => r.scope)).toStrictEqual([\"global\", \"project\"]);\n // The still-active global row survives the collapse — it is not swallowed by the emptied\n // project slot — and carries neither diff marker: re-occupying a tombstoned slot is not an\n // addition, and the global install is not what saving removes.\n expect(rows[0].added).toBeUndefined();\n expect(rows[0].disabled).toBeUndefined();\n // The emptied project slot is inert and pending removal — a lock there would read as\n // \"installed globally\" instead of \"about to be removed\".\n expect(rows[1].disabled).toBe(true);\n expect(rows[1].readOnly).toBeUndefined();\n expect(rows[1].added).toBeUndefined();\n });\n\n it(\"should render a project-to-global migration as an added global row plus a project pending-removal row\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n // Re-scoping a saved project skill to global occupies a NEW (id, global) slot and empties the\n // (id, project) one, with no tombstone involved. Both halves of that move must stay visible,\n // exactly as the confirm step reports it (`-` at Project, `+` at Global).\n useWizardStore.setState({\n installedSkillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"project\",\n source: \"agents-inc\",\n }),\n skillConfigs: buildSkillConfigs([\"web-framework-react\"], {\n scope: \"global\",\n source: \"agents-inc\",\n }),\n });\n\n const rows = store.buildSourceRows();\n expect(rows.map((r) => r.skillId)).toStrictEqual([\n \"web-framework-react\",\n \"web-framework-react\",\n ]);\n expect(rows.map((r) => r.scope)).toStrictEqual([\"global\", \"project\"]);\n // The newly occupied global slot is the addition, and it is editable: no global install\n // predates this session, so there is nothing inherited to lock against.\n expect(rows[0].added).toBe(true);\n expect(rows[0].disabled).toBeUndefined();\n expect(rows[0].readOnly).toBeUndefined();\n // The emptied project slot is what saving deletes — inert, and never new this session.\n expect(rows[1].disabled).toBe(true);\n expect(rows[1].added).toBeUndefined();\n expect(rows[1].readOnly).toBeUndefined();\n });\n });\n\n describe(\"agent selection\", () => {\n it(\"should start with empty selectedAgents\", () => {\n const { selectedAgents } = useWizardStore.getState();\n expect(selectedAgents).toStrictEqual([]);\n });\n\n it(\"should toggle agent on\", () => {\n const store = useWizardStore.getState();\n store.toggleAgent(\"web-developer\");\n\n const { selectedAgents, agentConfigs } = useWizardStore.getState();\n expect(selectedAgents).toStrictEqual([\"web-developer\"]);\n expect(agentConfigs).toStrictEqual(buildAgentConfigs([\"web-developer\"], { scope: \"global\" }));\n });\n\n it(\"should block toggling globally installed agents from project scope and set toastMessage\", () => {\n const store = useWizardStore.getState();\n store.toggleAgent(\"web-developer\");\n useWizardStore.setState({\n installedAgentConfigs: buildAgentConfigs([\"web-developer\"], { scope: \"global\" }),\n isEditingFromGlobalScope: false,\n isInitMode: false,\n });\n\n store.toggleAgent(\"web-developer\");\n\n const { selectedAgents, agentConfigs, toastMessage } = useWizardStore.getState();\n expect(selectedAgents).toStrictEqual([\"web-developer\"]);\n expect(agentConfigs).toStrictEqual(buildAgentConfigs([\"web-developer\"], { scope: \"global\" }));\n expect(toastMessage).toBe(\"Global agents cannot be changed from project scope\");\n });\n\n it(\"should block toggling globally installed agents in init mode too, with the same toastMessage\", () => {\n const store = useWizardStore.getState();\n store.toggleAgent(\"web-developer\");\n useWizardStore.setState({\n installedAgentConfigs: buildAgentConfigs([\"web-developer\"], { scope: \"global\" }),\n isEditingFromGlobalScope: false,\n isInitMode: true,\n });\n\n store.toggleAgent(\"web-developer\");\n\n const { selectedAgents, agentConfigs, toastMessage } = useWizardStore.getState();\n expect(selectedAgents).toStrictEqual([\"web-developer\"]);\n expect(\n agentConfigs,\n \"a blocked agent toggle must leave the global entry active — no tombstone\",\n ).toStrictEqual(buildAgentConfigs([\"web-developer\"], { scope: \"global\" }));\n expect(toastMessage).toBe(\"Global agents cannot be changed from project scope\");\n });\n\n it(\"should allow toggling globally installed agents from global scope (clean removal, no toast)\", () => {\n const store = useWizardStore.getState();\n store.toggleAgent(\"web-developer\");\n useWizardStore.setState({\n installedAgentConfigs: buildAgentConfigs([\"web-developer\"], { scope: \"global\" }),\n isEditingFromGlobalScope: true,\n isInitMode: false,\n });\n\n store.toggleAgent(\"web-developer\");\n\n const { selectedAgents, agentConfigs, toastMessage } = useWizardStore.getState();\n // Editing at ~/ has no project overlay: deselect is a genuine removal, not a tombstone.\n expect(selectedAgents).toStrictEqual([]);\n expect(agentConfigs).toStrictEqual([]);\n expect(toastMessage).toBeNull();\n });\n\n it(\"should toggle agent off\", () => {\n const store = useWizardStore.getState();\n store.toggleAgent(\"web-developer\");\n store.toggleAgent(\"web-developer\");\n\n const { selectedAgents, agentConfigs } = useWizardStore.getState();\n expect(selectedAgents).toStrictEqual([]);\n expect(agentConfigs).toStrictEqual([]);\n });\n\n it(\"should allow multiple agents to be selected\", () => {\n const store = useWizardStore.getState();\n store.toggleAgent(\"web-developer\");\n store.toggleAgent(\"api-developer\");\n store.toggleAgent(\"web-reviewer\");\n\n const { selectedAgents } = useWizardStore.getState();\n expect(selectedAgents).toStrictEqual([\"web-developer\", \"api-developer\", \"web-reviewer\"]);\n });\n\n it(\"should reset selectedAgents on reset\", () => {\n const store = useWizardStore.getState();\n store.toggleAgent(\"web-developer\");\n store.reset();\n\n const { selectedAgents } = useWizardStore.getState();\n expect(selectedAgents).toStrictEqual([]);\n });\n });\n\n describe(\"agentConfigs and scope management\", () => {\n it(\"should have empty agentConfigs initially\", () => {\n const { agentConfigs } = useWizardStore.getState();\n expect(agentConfigs).toStrictEqual([]);\n });\n\n it(\"should sync agentConfigs when toggleAgent is called\", () => {\n const store = useWizardStore.getState();\n store.toggleAgent(\"web-developer\");\n\n const { agentConfigs } = useWizardStore.getState();\n expect(agentConfigs).toStrictEqual(buildAgentConfigs([\"web-developer\"], { scope: \"global\" }));\n });\n\n it(\"should remove global agent from agentConfigs when toggled off during fresh init\", () => {\n const store = useWizardStore.getState();\n store.toggleAgent(\"web-developer\");\n store.toggleAgent(\"web-developer\");\n\n const { agentConfigs } = useWizardStore.getState();\n expect(agentConfigs).toStrictEqual([]);\n });\n\n it(\"removes a global agent from agentConfigs when toggled off while editing from global scope\", () => {\n const store = useWizardStore.getState();\n useWizardStore.setState({\n installedAgentConfigs: buildAgentConfigs([\"web-developer\"], { scope: \"global\" }),\n isEditingFromGlobalScope: true,\n });\n store.toggleAgent(\"web-developer\");\n store.toggleAgent(\"web-developer\");\n\n const { agentConfigs } = useWizardStore.getState();\n // Global-scope edit: no overlay, so removal is clean (no tombstone).\n expect(agentConfigs).toStrictEqual([]);\n });\n\n it(\"should remove project agent from agentConfigs when toggled off\", () => {\n const store = useWizardStore.getState();\n store.toggleAgent(\"web-developer\");\n // Set to project scope\n useWizardStore.setState({\n agentConfigs: buildAgentConfigs([\"web-developer\"]),\n });\n store.toggleAgent(\"web-developer\");\n\n const { agentConfigs } = useWizardStore.getState();\n expect(agentConfigs).toStrictEqual([]);\n });\n\n it(\"should toggle agent scope between global and project\", () => {\n const store = useWizardStore.getState();\n store.toggleAgent(\"web-developer\");\n store.toggleAgentScope(\"web-developer\");\n\n const { agentConfigs } = useWizardStore.getState();\n expect(agentConfigs).toStrictEqual(buildAgentConfigs([\"web-developer\"]));\n\n store.toggleAgentScope(\"web-developer\");\n expect(useWizardStore.getState().agentConfigs).toStrictEqual(\n buildAgentConfigs([\"web-developer\"], { scope: \"global\" }),\n );\n });\n\n it(\"round-trips a persisted dual-scope agent row with `s`: collapse to [G], then restore [P][G]\", () => {\n // Agent mirror of the skill `s` round-trip: `s` is the SOLE dual-scope toggle, so a\n // persisted [P][G] agent pair collapses on the first press and is restored on the second.\n const dualScope = (): AgentScopeConfig[] => [\n ...buildAgentConfigs([\"web-developer\"], { scope: \"project\" }),\n ...buildAgentConfigs([\"web-developer\"], { scope: \"global\", excluded: true }),\n ];\n const store = useWizardStore.getState();\n useWizardStore.setState({\n agentConfigs: dualScope(),\n installedAgentConfigs: dualScope(),\n isEditingFromGlobalScope: false,\n isInitMode: false,\n toastMessage: null,\n });\n\n store.toggleAgentScope(\"web-developer\");\n const first = useWizardStore.getState();\n expect(first.agentConfigs).toStrictEqual(\n buildAgentConfigs([\"web-developer\"], { scope: \"global\" }),\n );\n expect(first.toastMessage).toBeNull();\n\n store.toggleAgentScope(\"web-developer\");\n const second = useWizardStore.getState();\n expect(second.agentConfigs).toStrictEqual(dualScope());\n expect(second.toastMessage).toBeNull();\n });\n\n it(\"runs the full in-session blocked-toggle → s-collapse → blocked-toggle → s-restore sequence on a persisted [P][G] agent\", () => {\n // Agent mirror of the skill in-session sequence. The hydration snapshot stays a frozen\n // [P][G] throughout while the live agentConfigs is mutated by each keypress.\n const dualScope = (): AgentScopeConfig[] => [\n ...buildAgentConfigs([\"web-developer\"], { scope: \"project\" }),\n ...buildAgentConfigs([\"web-developer\"], { scope: \"global\", excluded: true }),\n ];\n const plainGlobal = (): AgentScopeConfig[] =>\n buildAgentConfigs([\"web-developer\"], { scope: \"global\" });\n\n const store = useWizardStore.getState();\n useWizardStore.setState({\n selectedAgents: [\"web-developer\"],\n agentConfigs: dualScope(),\n installedAgentConfigs: dualScope(),\n isEditingFromGlobalScope: false,\n isInitMode: false,\n toastMessage: null,\n });\n\n // Step 1 — the selection key on the live [P][G] row is BLOCKED: only `s` may change a\n // dual-scope pair. Live config and selection unchanged, toast shown.\n store.toggleAgent(\"web-developer\");\n const afterBlockedToggle = useWizardStore.getState();\n expect(afterBlockedToggle.agentConfigs).toStrictEqual(dualScope());\n expect(afterBlockedToggle.selectedAgents).toStrictEqual([\"web-developer\"]);\n expect(afterBlockedToggle.toastMessage).toBe(\n \"Global agents cannot be changed from project scope\",\n );\n\n // Step 2 — `s` collapses [P][G] to a single active inherited-global entry; the agent\n // stays selected (still active via global).\n useWizardStore.setState({ toastMessage: null });\n store.toggleAgentScope(\"web-developer\");\n const afterCollapse = useWizardStore.getState();\n expect(afterCollapse.agentConfigs).toStrictEqual(plainGlobal());\n expect(afterCollapse.selectedAgents).toStrictEqual([\"web-developer\"]);\n expect(afterCollapse.toastMessage).toBeNull();\n\n // Step 3 — the selection key on the collapsed row is BLOCKED too. Live config unchanged.\n store.toggleAgent(\"web-developer\");\n const afterBlocked = useWizardStore.getState();\n expect(afterBlocked.agentConfigs).toStrictEqual(plainGlobal());\n expect(afterBlocked.toastMessage).toBe(\"Global agents cannot be changed from project scope\");\n\n // Step 4 — `s` restores a fresh [P][G] pair.\n useWizardStore.setState({ toastMessage: null });\n store.toggleAgentScope(\"web-developer\");\n const afterRestore = useWizardStore.getState();\n expect(afterRestore.agentConfigs).toStrictEqual(dualScope());\n expect(afterRestore.toastMessage).toBeNull();\n\n // Step 5 — `s` again freely flips the reconstructed pair back to plain global.\n store.toggleAgentScope(\"web-developer\");\n const afterFlip = useWizardStore.getState();\n expect(afterFlip.agentConfigs).toStrictEqual(plainGlobal());\n expect(afterFlip.toastMessage).toBeNull();\n\n // Step 5b — and back to [P][G], proving a free P↔G round-trip within the session.\n store.toggleAgentScope(\"web-developer\");\n expect(useWizardStore.getState().agentConfigs).toStrictEqual(dualScope());\n });\n\n it(\"writes no tombstone when a project agent re-scoped to global in-session is then deselected\", () => {\n // Agent mirror of the skill case: the snapshot holds the agent at PROJECT scope only, so\n // nothing is installed globally. `s` rescopes it to global in-session; the following\n // deselect has no global install to mask and must not mint a tombstone.\n const store = useWizardStore.getState();\n useWizardStore.setState({\n selectedAgents: [\"web-developer\"],\n agentConfigs: buildAgentConfigs([\"web-developer\"], { scope: \"project\" }),\n installedAgentConfigs: buildAgentConfigs([\"web-developer\"], { scope: \"project\" }),\n isEditingFromGlobalScope: false,\n isInitMode: false,\n toastMessage: null,\n });\n\n store.toggleAgentScope(\"web-developer\");\n expect(useWizardStore.getState().agentConfigs).toStrictEqual(\n buildAgentConfigs([\"web-developer\"], { scope: \"global\" }),\n );\n\n store.toggleAgent(\"web-developer\");\n\n const { agentConfigs, selectedAgents } = useWizardStore.getState();\n expect(\n agentConfigs.filter((ac) => ac.excluded),\n \"an agent never installed globally must not gain a global tombstone\",\n ).toStrictEqual([]);\n expect(agentConfigs).toStrictEqual([]);\n expect(selectedAgents).toStrictEqual([]);\n });\n\n it(\"should set and clear focusedAgentId\", () => {\n const store = useWizardStore.getState();\n store.setFocusedAgentId(\"web-developer\");\n\n expect(useWizardStore.getState().focusedAgentId).toBe(\"web-developer\");\n\n store.setFocusedAgentId(null);\n expect(useWizardStore.getState().focusedAgentId).toBeNull();\n });\n\n it(\"should remove global agent when deselected during fresh init\", () => {\n const store = useWizardStore.getState();\n store.toggleAgent(\"web-developer\");\n // web-developer is now selected with global scope\n\n store.toggleAgent(\"web-developer\");\n const { selectedAgents, agentConfigs } = useWizardStore.getState();\n expect(selectedAgents).toStrictEqual([]);\n expect(agentConfigs).toStrictEqual([]);\n });\n\n it(\"removes a global agent cleanly (no tombstone, dropped from selectedAgents) when deselected while editing from global scope\", () => {\n // At ~/ the config being edited IS the global config — there is no project overlay,\n // so a deselect is a genuine removal, not a tombstone-and-keep-selected.\n const store = useWizardStore.getState();\n useWizardStore.setState({\n installedAgentConfigs: buildAgentConfigs([\"web-developer\"], { scope: \"global\" }),\n isEditingFromGlobalScope: true,\n });\n store.toggleAgent(\"web-developer\");\n // web-developer is now selected with global scope\n\n store.toggleAgent(\"web-developer\");\n const { selectedAgents, agentConfigs } = useWizardStore.getState();\n expect(selectedAgents).toStrictEqual([]);\n expect(agentConfigs).toStrictEqual([]);\n });\n\n it(\"cleanly re-adds a global agent when re-selected while editing from global scope\", () => {\n const store = useWizardStore.getState();\n useWizardStore.setState({\n installedAgentConfigs: buildAgentConfigs([\"web-developer\"], { scope: \"global\" }),\n isEditingFromGlobalScope: true,\n });\n store.toggleAgent(\"web-developer\");\n store.toggleAgent(\"web-developer\"); // deselect → clean removal (global-scope edit)\n store.toggleAgent(\"web-developer\"); // re-select → clean re-add\n\n const { selectedAgents, agentConfigs } = useWizardStore.getState();\n expect(selectedAgents).toStrictEqual([\"web-developer\"]);\n expect(agentConfigs).toStrictEqual(buildAgentConfigs([\"web-developer\"], { scope: \"global\" }));\n });\n\n it(\"drops a global agent from selectedAgents when toggled off while editing from global scope\", () => {\n const store = useWizardStore.getState();\n store.toggleAgent(\"web-developer\");\n useWizardStore.setState({\n installedAgentConfigs: buildAgentConfigs([\"web-developer\"], { scope: \"global\" }),\n isEditingFromGlobalScope: true,\n });\n\n store.toggleAgent(\"web-developer\");\n\n const { selectedAgents, agentConfigs } = useWizardStore.getState();\n expect(selectedAgents).not.toContain(\"web-developer\");\n expect(agentConfigs.some((ac) => ac.name === \"web-developer\")).toBe(false);\n });\n\n it(\"should remove non-installed agent from selectedAgents when toggled off\", () => {\n const store = useWizardStore.getState();\n store.toggleAgent(\"web-developer\");\n\n store.toggleAgent(\"web-developer\");\n\n const { selectedAgents } = useWizardStore.getState();\n expect(selectedAgents).not.toContain(\"web-developer\");\n });\n\n it(\"should restore excluded global agent when toggled back on\", () => {\n const store = useWizardStore.getState();\n store.toggleAgent(\"web-developer\");\n useWizardStore.setState({\n installedAgentConfigs: buildAgentConfigs([\"web-developer\"], { scope: \"global\" }),\n });\n\n store.toggleAgent(\"web-developer\");\n store.toggleAgent(\"web-developer\");\n\n const { selectedAgents, agentConfigs } = useWizardStore.getState();\n expect(selectedAgents).toContain(\"web-developer\");\n expect(agentConfigs).not.toContainEqual(\n expect.objectContaining({ name: \"web-developer\", excluded: true }),\n );\n });\n\n describe(\"dual-scope selection toggle (agents)\", () => {\n const dualScopeAgents = () => [\n ...buildAgentConfigs([\"web-developer\"], { scope: \"project\" }),\n ...buildAgentConfigs([\"web-developer\"], { scope: \"global\", excluded: true }),\n ];\n\n it(\"leaves a dual-scope agent untouched when the selection key is pressed and emits the global-locked toast\", () => {\n const store = useWizardStore.getState();\n useWizardStore.setState({\n selectedAgents: [\"web-developer\"],\n agentConfigs: dualScopeAgents(),\n installedAgentConfigs: dualScopeAgents(),\n isEditingFromGlobalScope: false,\n isInitMode: false,\n });\n\n store.toggleAgent(\"web-developer\");\n\n const { selectedAgents, agentConfigs, toastMessage } = useWizardStore.getState();\n // The selection key is inert on a `[P][G]` row — `s` alone changes a dual-scope pair.\n expect(toastMessage).toBe(\"Global agents cannot be changed from project scope\");\n expect(selectedAgents).toStrictEqual([\"web-developer\"]);\n expect(agentConfigs).toStrictEqual(dualScopeAgents());\n });\n\n it(\"restores [P][G] when re-selecting an inherited-global agent row (fresh project entry AND tombstone)\", () => {\n const store = useWizardStore.getState();\n useWizardStore.setState({\n selectedAgents: [],\n agentConfigs: buildAgentConfigs([\"web-developer\"], { scope: \"global\" }),\n installedAgentConfigs: dualScopeAgents(),\n isEditingFromGlobalScope: false,\n isInitMode: false,\n });\n\n store.toggleAgent(\"web-developer\");\n\n const { selectedAgents, agentConfigs, toastMessage } = useWizardStore.getState();\n expect(toastMessage).toBeNull();\n expect(selectedAgents).toStrictEqual([\"web-developer\"]);\n expect(agentConfigs).toStrictEqual(dualScopeAgents());\n });\n\n it(\"restores [P][G] cleanly (no two active entries) via `s` after the collapse is saved and re-opened\", () => {\n const store = useWizardStore.getState();\n useWizardStore.setState({\n selectedAgents: [\"web-developer\"],\n agentConfigs: dualScopeAgents(),\n installedAgentConfigs: dualScopeAgents(),\n isEditingFromGlobalScope: false,\n isInitMode: false,\n });\n\n // `s` collapses [P][G] -> single inherited-global [G]; the agent stays selected.\n store.toggleAgentScope(\"web-developer\");\n expect(useWizardStore.getState().agentConfigs).toStrictEqual(\n buildAgentConfigs([\"web-developer\"], { scope: \"global\" }),\n );\n\n // Simulate save-and-reopen: the persisted single-global entry becomes the installed\n // snapshot, so `s` (the sanctioned restore path) re-creates a fresh [P][G] pair.\n useWizardStore.setState({\n agentConfigs: buildAgentConfigs([\"web-developer\"], { scope: \"global\" }),\n installedAgentConfigs: buildAgentConfigs([\"web-developer\"], { scope: \"global\" }),\n });\n\n store.toggleAgentScope(\"web-developer\"); // G->P restores a fresh [P][G] pair\n\n const { agentConfigs } = useWizardStore.getState();\n const activeEntries = agentConfigs.filter((ac) => !ac.excluded);\n expect(activeEntries).toStrictEqual(\n buildAgentConfigs([\"web-developer\"], { scope: \"project\" }),\n );\n expect(agentConfigs.filter((ac) => ac.excluded)).toStrictEqual(\n buildAgentConfigs([\"web-developer\"], { scope: \"global\", excluded: true }),\n );\n });\n\n it(\"removes a global-scope agent entirely when deselected from a global-context edit (Scenario C setup)\", () => {\n // Global install edited at ~/ : deselecting an active [G] agent must produce a genuine\n // removal so it truly disappears from the global config — the precondition for\n // propagation to drop stale project tombstones.\n const store = useWizardStore.getState();\n useWizardStore.setState({\n selectedAgents: [\"web-developer\"],\n agentConfigs: buildAgentConfigs([\"web-developer\"], { scope: \"global\" }),\n installedAgentConfigs: buildAgentConfigs([\"web-developer\"], { scope: \"global\" }),\n isEditingFromGlobalScope: true,\n isInitMode: false,\n });\n\n store.toggleAgent(\"web-developer\");\n\n const { selectedAgents, agentConfigs, toastMessage } = useWizardStore.getState();\n expect(toastMessage).toBeNull();\n expect(selectedAgents).toStrictEqual([]);\n expect(agentConfigs).toStrictEqual([]);\n });\n });\n\n it(\"should not toggle agent scope when isEditingFromGlobalScope is true\", () => {\n const store = useWizardStore.getState();\n store.toggleAgent(\"web-developer\");\n useWizardStore.setState({ isEditingFromGlobalScope: true });\n\n store.toggleAgentScope(\"web-developer\");\n const { agentConfigs } = useWizardStore.getState();\n expect(agentConfigs).toStrictEqual(buildAgentConfigs([\"web-developer\"], { scope: \"global\" }));\n });\n\n it(\"should add excluded global entry when toggling previously-installed global agent to project\", () => {\n const store = useWizardStore.getState();\n store.toggleAgent(\"web-developer\");\n useWizardStore.setState({\n installedAgentConfigs: buildAgentConfigs([\"web-developer\"], { scope: \"global\" }),\n });\n\n store.toggleAgentScope(\"web-developer\");\n const { agentConfigs } = useWizardStore.getState();\n expect(agentConfigs).toStrictEqual([\n ...buildAgentConfigs([\"web-developer\"]),\n ...buildAgentConfigs([\"web-developer\"], { scope: \"global\", excluded: true }),\n ]);\n });\n\n it(\"should remove excluded global entry when toggling agent back from project to global\", () => {\n const store = useWizardStore.getState();\n store.toggleAgent(\"web-developer\");\n useWizardStore.setState({\n installedAgentConfigs: buildAgentConfigs([\"web-developer\"], { scope: \"global\" }),\n });\n\n store.toggleAgentScope(\"web-developer\"); // global → project (adds excluded)\n store.toggleAgentScope(\"web-developer\"); // project → global (removes excluded)\n const { agentConfigs } = useWizardStore.getState();\n expect(agentConfigs).toStrictEqual(buildAgentConfigs([\"web-developer\"], { scope: \"global\" }));\n });\n\n it(\"should not add excluded entry when toggling agent scope during fresh init\", () => {\n const store = useWizardStore.getState();\n store.toggleAgent(\"web-developer\");\n // installedAgentConfigs is null (fresh init)\n\n store.toggleAgentScope(\"web-developer\");\n const { agentConfigs } = useWizardStore.getState();\n expect(agentConfigs).toStrictEqual(buildAgentConfigs([\"web-developer\"]));\n });\n });\n\n describe(\"preselectAgentsFromDomains\", () => {\n it(\"should preselect web-related agents when web domain is selected\", () => {\n const store = useWizardStore.getState();\n store.toggleDomain(\"web\");\n store.preselectAgentsFromDomains();\n\n const { selectedAgents, agentConfigs } = useWizardStore.getState();\n expect(selectedAgents).toStrictEqual([...EXPECTED_AGENTS.WEB]);\n expect(agentConfigs).toStrictEqual(\n EXPECTED_AGENTS.WEB.map((name) => ({ name, scope: \"global\" })),\n );\n });\n\n it(\"should preselect api-related agents when api domain is selected\", () => {\n const store = useWizardStore.getState();\n store.toggleDomain(\"api\");\n store.preselectAgentsFromDomains();\n\n const { selectedAgents, agentConfigs } = useWizardStore.getState();\n expect(selectedAgents).toStrictEqual([...EXPECTED_AGENTS.API]);\n expect(agentConfigs).toStrictEqual(\n EXPECTED_AGENTS.API.map((name) => ({ name, scope: \"global\" })),\n );\n });\n\n it(\"should preselect cli agents when cli domain is selected\", () => {\n const store = useWizardStore.getState();\n store.toggleDomain(\"cli\");\n store.preselectAgentsFromDomains();\n\n const { selectedAgents, agentConfigs } = useWizardStore.getState();\n expect(selectedAgents).toStrictEqual([...EXPECTED_AGENTS.CLI]);\n expect(agentConfigs).toStrictEqual(\n EXPECTED_AGENTS.CLI.map((name) => ({ name, scope: \"global\" })),\n );\n });\n\n it(\"should never include optional agents regardless of domains\", () => {\n const store = useWizardStore.getState();\n store.toggleDomain(\"web\");\n store.toggleDomain(\"api\");\n store.toggleDomain(\"cli\");\n store.preselectAgentsFromDomains();\n\n const { selectedAgents } = useWizardStore.getState();\n expect(selectedAgents).toStrictEqual([...EXPECTED_AGENTS.ALL]);\n });\n\n it(\"should return empty agents when no domains are selected\", () => {\n const store = useWizardStore.getState();\n store.preselectAgentsFromDomains();\n\n const { selectedAgents } = useWizardStore.getState();\n expect(selectedAgents).toStrictEqual([]);\n });\n\n it(\"should produce union of agents for multiple domains\", () => {\n const store = useWizardStore.getState();\n store.toggleDomain(\"web\");\n store.toggleDomain(\"api\");\n store.preselectAgentsFromDomains();\n\n const { selectedAgents } = useWizardStore.getState();\n expect(selectedAgents).toContain(\"web-developer\");\n expect(selectedAgents).toContain(\"api-developer\");\n expect(selectedAgents).toContain(\"web-reviewer\");\n expect(selectedAgents).toContain(\"api-reviewer\");\n });\n\n it(\"should not preselect api agents when only web domain is selected\", () => {\n const store = useWizardStore.getState();\n store.toggleDomain(\"web\");\n store.preselectAgentsFromDomains();\n\n const { selectedAgents } = useWizardStore.getState();\n expect(selectedAgents).toContain(\"web-developer\");\n expect(selectedAgents).not.toContain(\"api-developer\");\n expect(selectedAgents).not.toContain(\"api-reviewer\");\n });\n\n it(\"should return sorted agents\", () => {\n const store = useWizardStore.getState();\n store.toggleDomain(\"web\");\n store.toggleDomain(\"api\");\n store.preselectAgentsFromDomains();\n\n const { selectedAgents } = useWizardStore.getState();\n const sorted = [...selectedAgents].sort();\n expect(selectedAgents).toStrictEqual(sorted);\n });\n\n it(\"should replace previous agent selection\", () => {\n const store = useWizardStore.getState();\n store.toggleAgent(\"codex-keeper\");\n store.toggleDomain(\"web\");\n store.preselectAgentsFromDomains();\n\n const { selectedAgents } = useWizardStore.getState();\n // preselectAgentsFromDomains replaces the array entirely\n expect(selectedAgents).not.toContain(\"codex-keeper\");\n });\n\n it(\"should retain a globally installed agent that no selected domain rosters\", () => {\n const store = useWizardStore.getState();\n // cli-developer is installed globally but belongs to the cli roster, not web's.\n // Preselection rebuilds the roster — it must not silently drop the global install.\n useWizardStore.setState({\n agentConfigs: buildAgentConfigs([\"cli-developer\"], { scope: \"global\" }),\n installedAgentConfigs: buildAgentConfigs([\"cli-developer\"], { scope: \"global\" }),\n isEditingFromGlobalScope: false,\n isInitMode: false,\n });\n\n store.toggleDomain(\"web\");\n store.preselectAgentsFromDomains();\n\n const { agentConfigs, selectedAgents } = useWizardStore.getState();\n expect(\n agentConfigs.filter((ac) => ac.name === \"cli-developer\"),\n \"a globally installed agent outside the domain roster must survive preselection\",\n ).toStrictEqual(buildAgentConfigs([\"cli-developer\"], { scope: \"global\" }));\n expect(\n agentConfigs.filter((ac) => ac.name !== \"cli-developer\"),\n \"the domain roster is still preselected alongside the retained global agent\",\n ).toStrictEqual(EXPECTED_AGENTS.WEB.map((name) => ({ name, scope: \"global\" })));\n expect(selectedAgents).toContain(\"web-developer\");\n });\n\n it(\"should preserve a saved agent's model and effort through the roster rebuild\", () => {\n const store = useWizardStore.getState();\n // Preselection re-derives every rostered agent's config from scratch. The scope survives\n // that rebuild; the user's model/effort choice has to survive it on the same terms.\n useWizardStore.setState({\n agentConfigs: buildAgentConfigs([\"web-developer\"], {\n scope: \"project\",\n model: \"haiku\",\n effort: \"xhigh\",\n }),\n });\n\n store.toggleDomain(\"web\");\n store.preselectAgentsFromDomains();\n\n const { agentConfigs } = useWizardStore.getState();\n expect(agentConfigs.filter((ac) => ac.name === \"web-developer\")).toStrictEqual(\n buildAgentConfigs([\"web-developer\"], {\n scope: \"project\",\n model: \"haiku\",\n effort: \"xhigh\",\n }),\n );\n });\n\n it(\"should preserve excluded agent configs\", () => {\n const store = useWizardStore.getState();\n // Set up an excluded agent config that is not in any domain's agents\n useWizardStore.setState({\n agentConfigs: buildAgentConfigs([\"codex-keeper\"], { scope: \"global\", excluded: true }),\n });\n\n store.toggleDomain(\"web\");\n store.preselectAgentsFromDomains();\n\n const { agentConfigs } = useWizardStore.getState();\n // Excluded agent should still be present in agentConfigs\n const excludedConfig = agentConfigs.find((ac) => ac.name === \"codex-keeper\");\n expect(excludedConfig?.excluded).toBe(true);\n // Domain agents should also be present\n const webDevConfig = agentConfigs.find((ac) => ac.name === \"web-developer\");\n expect(webDevConfig?.name).toBe(\"web-developer\");\n });\n\n it(\"should clear excluded flag when re-including previously excluded agent via domain preselection\", () => {\n const store = useWizardStore.getState();\n // Set up web-developer as excluded (it IS in web domain's agent list)\n useWizardStore.setState({\n agentConfigs: buildAgentConfigs([\"web-developer\"], { scope: \"global\", excluded: true }),\n });\n\n store.toggleDomain(\"web\");\n store.preselectAgentsFromDomains();\n\n const { agentConfigs } = useWizardStore.getState();\n const webDevConfig = agentConfigs.find((ac) => ac.name === \"web-developer\");\n // Excluded flag should be cleared since web-developer is in the domain's agents\n expect(webDevConfig?.excluded).toBeUndefined();\n });\n\n it(\"preserves excluded tombstone when active agent entry exists for same agent at different scope\", () => {\n const store = useWizardStore.getState();\n\n // Project-scope active + global-scope excluded tombstone for an agent that IS in the\n // web domain. preselectAgentsFromDomains must preserve both so the render layer can\n // compute the secondary scope badge (mirrors the skill-side dual-scope invariant).\n useWizardStore.setState({\n agentConfigs: [\n ...buildAgentConfigs([\"web-developer\"]),\n ...buildAgentConfigs([\"web-developer\"], { scope: \"global\", excluded: true }),\n ],\n });\n\n store.toggleDomain(\"web\");\n store.preselectAgentsFromDomains();\n\n const { agentConfigs } = useWizardStore.getState();\n const webDevConfigs = agentConfigs.filter((ac) => ac.name === \"web-developer\");\n expect(webDevConfigs).toHaveLength(2);\n\n const active = webDevConfigs.find((ac) => !ac.excluded);\n const tombstone = webDevConfigs.find((ac) => ac.excluded);\n expect(active?.scope).toBe(\"project\");\n expect(tombstone?.scope).toBe(\"global\");\n expect(tombstone?.excluded).toBe(true);\n });\n\n it(\"preserves excluded tombstone in preselectAgentsFromStack when active entry exists at different scope\", () => {\n const store = useWizardStore.getState();\n\n // Dual-scope pair seeded in globalAgentPreselections. Merging a stack that also\n // references the agent must keep both the active project entry and the global tombstone.\n useWizardStore.setState({\n globalAgentPreselections: {\n agents: [\"web-developer\"],\n configs: [\n ...buildAgentConfigs([\"web-developer\"]),\n ...buildAgentConfigs([\"web-developer\"], { scope: \"global\", excluded: true }),\n ],\n },\n });\n\n store.preselectAgentsFromStack([\"web-developer\"]);\n\n const { agentConfigs } = useWizardStore.getState();\n const webDevConfigs = agentConfigs.filter((ac) => ac.name === \"web-developer\");\n expect(webDevConfigs).toHaveLength(2);\n\n const active = webDevConfigs.find((ac) => !ac.excluded);\n const tombstone = webDevConfigs.find((ac) => ac.excluded);\n expect(active?.scope).toBe(\"project\");\n expect(tombstone?.scope).toBe(\"global\");\n expect(tombstone?.excluded).toBe(true);\n });\n });\n\n describe(\"step progress with agents step\", () => {\n it(\"should include agents in completed steps when on confirm\", () => {\n const store = useWizardStore.getState();\n store.setApproach(\"scratch\");\n store.setStep(\"domains\");\n store.setStep(\"build\");\n store.setStep(\"sources\");\n store.setStep(\"agents\");\n store.setStep(\"confirm\");\n\n const { completedSteps } = store.getStepProgress();\n expect(completedSteps).toContain(\"stack\");\n expect(completedSteps).toContain(\"domains\");\n expect(completedSteps).toContain(\"agents\");\n expect(completedSteps).toContain(\"sources\");\n expect(completedSteps).toContain(\"build\");\n });\n\n it(\"should include sources in completed steps when on agents step\", () => {\n const store = useWizardStore.getState();\n store.setApproach(\"scratch\");\n store.setStep(\"domains\");\n store.setStep(\"build\");\n store.setStep(\"sources\");\n store.setStep(\"agents\");\n\n const { completedSteps } = store.getStepProgress();\n expect(completedSteps).toContain(\"stack\");\n expect(completedSteps).toContain(\"domains\");\n expect(completedSteps).toContain(\"build\");\n expect(completedSteps).toContain(\"sources\");\n expect(completedSteps).not.toContain(\"agents\");\n });\n\n it(\"should skip agents step when using stack defaults\", () => {\n const store = useWizardStore.getState();\n store.setApproach(\"stack\");\n store.selectStack(\"nextjs-fullstack\");\n store.setStackAction(\"defaults\");\n store.setStep(\"confirm\");\n\n const { skippedSteps } = store.getStepProgress();\n expect(skippedSteps).toContain(\"agents\");\n expect(skippedSteps).toContain(\"build\");\n expect(skippedSteps).toContain(\"sources\");\n });\n });\n\n describe(\"deriveInstallMode\", () => {\n it(\"should return 'plugin' when all skills have default marketplace source\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.toggleTechnology(\"web\", \"web-styling\", \"web-styling-scss-modules\", true);\n\n const result = store.deriveInstallMode();\n expect(result).toBe(\"plugin\");\n });\n\n it(\"should return 'eject' when all skills are set to eject\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.toggleTechnology(\"api\", \"api-api\", \"api-framework-hono\", true);\n store.setSourceSelection(\"web-framework-react\", \"eject\", \"global\");\n store.setSourceSelection(\"api-framework-hono\", \"eject\", \"global\");\n\n const result = store.deriveInstallMode();\n expect(result).toBe(\"eject\");\n });\n\n it(\"should return 'mixed' when some skills are local and some are not\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.toggleTechnology(\"api\", \"api-api\", \"api-framework-hono\", true);\n store.setSourceSelection(\"web-framework-react\", \"eject\", \"global\");\n store.setSourceSelection(\"api-framework-hono\", \"agents-inc\", \"global\");\n\n const result = store.deriveInstallMode();\n expect(result).toBe(\"mixed\");\n });\n\n it(\"should return 'local' when no skills are configured\", () => {\n const store = useWizardStore.getState();\n\n const result = store.deriveInstallMode();\n expect(result).toBe(\"eject\");\n });\n\n it(\"should handle single skill as local\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.setSourceSelection(\"web-framework-react\", \"eject\", \"global\");\n\n const result = store.deriveInstallMode();\n expect(result).toBe(\"eject\");\n });\n\n it(\"should handle single skill as plugin\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n\n const result = store.deriveInstallMode();\n expect(result).toBe(\"plugin\");\n });\n });\n\n describe(\"toggleFilterIncompatible\", () => {\n it(\"should deselect framework-incompatible skills from web categories when enabling filter\", () => {\n initializeMatrix(ALL_SKILLS_FULLSTACK_CATEGORIES_MATRIX);\n const store = useWizardStore.getState();\n\n // Select React as framework, then select pinia (Vue-only) in client-state\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.toggleTechnology(\"web\", \"web-client-state\", \"web-state-pinia\", false);\n\n // Verify pinia is selected\n expect(useWizardStore.getState().domainSelections.web![\"web-client-state\"]).toContain(\n \"web-state-pinia\",\n );\n\n // Enable filter\n store.toggleFilterIncompatible();\n\n const state = useWizardStore.getState();\n expect(state.filterIncompatible).toBe(true);\n // Pinia should be deselected (incompatible with React)\n expect(state.domainSelections.web![\"web-client-state\"]).not.toContain(\"web-state-pinia\");\n });\n\n it(\"should NOT deselect framework-compatible skills when enabling filter\", () => {\n initializeMatrix(ALL_SKILLS_FULLSTACK_CATEGORIES_MATRIX);\n const store = useWizardStore.getState();\n\n // Select React as framework, then select zustand (React-compatible) in client-state\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.toggleTechnology(\"web\", \"web-client-state\", \"web-state-zustand\", false);\n\n store.toggleFilterIncompatible();\n\n const state = useWizardStore.getState();\n expect(state.filterIncompatible).toBe(true);\n // Zustand should remain (compatible with React)\n expect(state.domainSelections.web![\"web-client-state\"]).toContain(\"web-state-zustand\");\n });\n\n it(\"should NOT deselect skills in non-web domains when enabling filter\", () => {\n initializeMatrix(ALL_SKILLS_FULLSTACK_CATEGORIES_MATRIX);\n const store = useWizardStore.getState();\n\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.toggleTechnology(\"api\", \"api-api\", \"api-framework-hono\", true);\n\n store.toggleFilterIncompatible();\n\n const state = useWizardStore.getState();\n // API domain should be untouched\n expect(state.domainSelections.api![\"api-api\"]).toStrictEqual([\"api-framework-hono\"]);\n });\n\n it(\"should NOT deselect the framework category itself when enabling filter\", () => {\n initializeMatrix(ALL_SKILLS_FULLSTACK_CATEGORIES_MATRIX);\n const store = useWizardStore.getState();\n\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n\n store.toggleFilterIncompatible();\n\n const state = useWizardStore.getState();\n // Framework selection should be untouched\n expect(state.domainSelections.web![\"web-framework\"]).toStrictEqual([\"web-framework-react\"]);\n });\n\n it(\"should skip excluded skills when filtering incompatible\", () => {\n initializeMatrix(ALL_SKILLS_FULLSTACK_CATEGORIES_MATRIX);\n const store = useWizardStore.getState();\n\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.toggleTechnology(\"web\", \"web-client-state\", \"web-state-pinia\", false);\n\n // Mark pinia as excluded so it is skipped by the filter\n useWizardStore.setState({\n skillConfigs: useWizardStore\n .getState()\n .skillConfigs.map((sc) => (sc.id === \"web-state-pinia\" ? { ...sc, excluded: true } : sc)),\n });\n\n store.toggleFilterIncompatible();\n\n const state = useWizardStore.getState();\n // Pinia should remain in domainSelections because it's excluded (not affected by filter)\n expect(state.domainSelections.web![\"web-client-state\"]).toContain(\"web-state-pinia\");\n expect(state.skillConfigs.some((sc) => sc.id === \"web-state-pinia\")).toBe(true);\n });\n\n it(\"should NOT deselect anything when disabling filter\", () => {\n initializeMatrix(ALL_SKILLS_FULLSTACK_CATEGORIES_MATRIX);\n const store = useWizardStore.getState();\n\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.toggleTechnology(\"web\", \"web-client-state\", \"web-state-zustand\", false);\n\n // Enable then disable\n store.toggleFilterIncompatible();\n store.toggleFilterIncompatible();\n\n const state = useWizardStore.getState();\n expect(state.filterIncompatible).toBe(false);\n // Zustand should still be selected (was compatible, not removed on enable)\n expect(state.domainSelections.web![\"web-client-state\"]).toContain(\"web-state-zustand\");\n });\n\n it(\"should remove global incompatible skills from skillConfigs during fresh init\", () => {\n initializeMatrix(ALL_SKILLS_FULLSTACK_CATEGORIES_MATRIX);\n const store = useWizardStore.getState();\n\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.toggleTechnology(\"web\", \"web-client-state\", \"web-state-pinia\", false);\n store.toggleTechnology(\"web\", \"web-client-state\", \"web-state-zustand\", false);\n\n // Verify both are in skillConfigs\n expect(useWizardStore.getState().skillConfigs.some((sc) => sc.id === \"web-state-pinia\")).toBe(\n true,\n );\n expect(\n useWizardStore.getState().skillConfigs.some((sc) => sc.id === \"web-state-zustand\"),\n ).toBe(true);\n\n store.toggleFilterIncompatible();\n\n const state = useWizardStore.getState();\n // Fresh init: pinia removed from both domainSelections and skillConfigs\n expect(state.domainSelections.web![\"web-client-state\"]).not.toContain(\"web-state-pinia\");\n expect(state.skillConfigs.some((sc) => sc.id === \"web-state-pinia\")).toBe(false);\n // Zustand kept in both (compatible)\n expect(state.domainSelections.web![\"web-client-state\"]).toContain(\"web-state-zustand\");\n expect(state.skillConfigs.some((sc) => sc.id === \"web-state-zustand\")).toBe(true);\n });\n\n it(\"removes global incompatible skills cleanly (no tombstone) while editing from global scope\", () => {\n initializeMatrix(ALL_SKILLS_FULLSTACK_CATEGORIES_MATRIX);\n const store = useWizardStore.getState();\n useWizardStore.setState({\n installedSkillConfigs: buildSkillConfigs([\"web-state-pinia\"], {\n scope: \"global\",\n source: \"agents-inc\",\n }),\n isEditingFromGlobalScope: true,\n });\n\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.toggleTechnology(\"web\", \"web-client-state\", \"web-state-pinia\", false);\n store.toggleTechnology(\"web\", \"web-client-state\", \"web-state-zustand\", false);\n\n store.toggleFilterIncompatible();\n\n const state = useWizardStore.getState();\n // Global-scope edit: incompatible pinia is uninstalled cleanly, not tombstoned.\n expect(state.domainSelections.web![\"web-client-state\"]).not.toContain(\"web-state-pinia\");\n expect(state.skillConfigs.some((sc) => sc.id === \"web-state-pinia\")).toBe(false);\n // Zustand kept in both\n expect(state.domainSelections.web![\"web-client-state\"]).toContain(\"web-state-zustand\");\n expect(state.skillConfigs.some((sc) => sc.id === \"web-state-zustand\")).toBe(true);\n });\n\n it(\"should just toggle the boolean when no frameworks are selected\", () => {\n initializeMatrix(ALL_SKILLS_FULLSTACK_CATEGORIES_MATRIX);\n const store = useWizardStore.getState();\n\n // Select a client-state skill but no framework\n store.toggleTechnology(\"web\", \"web-client-state\", \"web-state-pinia\", false);\n\n store.toggleFilterIncompatible();\n\n const state = useWizardStore.getState();\n expect(state.filterIncompatible).toBe(true);\n // Pinia should remain (no framework to check against)\n expect(state.domainSelections.web![\"web-client-state\"]).toContain(\"web-state-pinia\");\n });\n\n it(\"should not deselect skills with empty compatibleWith when enabling filter\", () => {\n initializeMatrix(ALL_SKILLS_TEST_CATEGORIES_MATRIX);\n const store = useWizardStore.getState();\n\n // Select React, then SCSS (which has empty compatibleWith — compatible with everything)\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.toggleTechnology(\"web\", \"web-styling\", \"web-styling-scss-modules\", false);\n\n store.toggleFilterIncompatible();\n\n const state = useWizardStore.getState();\n // SCSS has compatibleWith: [] so it should remain\n expect(state.domainSelections.web![\"web-styling\"]).toContain(\"web-styling-scss-modules\");\n });\n\n it(\"refuses to uninstall an actively-installed global skill from project scope\", () => {\n initializeMatrix(ALL_SKILLS_FULLSTACK_CATEGORIES_MATRIX);\n const store = useWizardStore.getState();\n\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.toggleTechnology(\"web\", \"web-client-state\", \"web-state-pinia\", false);\n store.toggleTechnology(\"web\", \"web-client-state\", \"web-state-zustand\", false);\n\n // pinia is globally installed; the project-scope edit has no authority over it.\n useWizardStore.setState({\n installedSkillConfigs: buildSkillConfigs([\"web-state-pinia\"], {\n scope: \"global\",\n source: \"eject\",\n }),\n isEditingFromGlobalScope: false,\n isInitMode: false,\n });\n\n store.toggleFilterIncompatible();\n\n const state = useWizardStore.getState();\n expect(state.toastMessage).toBe(\"Global skills cannot be changed from project scope\");\n // The whole operation is refused: the filter stays off and nothing is removed.\n expect(state.filterIncompatible).toBe(false);\n expect(state.domainSelections.web![\"web-client-state\"]).toContain(\"web-state-pinia\");\n expect(state.skillConfigs.some((sc) => sc.id === \"web-state-pinia\")).toBe(true);\n expect(state.domainSelections.web![\"web-client-state\"]).toContain(\"web-state-zustand\");\n });\n\n it(\"refuses the filter when a stale global tombstone has collapsed to an active global entry\", () => {\n initializeMatrix(ALL_SKILLS_FULLSTACK_CATEGORIES_MATRIX);\n const store = useWizardStore.getState();\n\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.toggleTechnology(\"web\", \"web-client-state\", \"web-state-pinia\", false);\n\n // Snapshot still holds the persisted [P][G] tombstone while the live config has already\n // collapsed to a plain active global entry — the same shape toggleTechnology blocks.\n useWizardStore.setState({\n skillConfigs: buildSkillConfigs([\"web-state-pinia\"], {\n scope: \"global\",\n source: \"eject\",\n }),\n installedSkillConfigs: [\n ...buildSkillConfigs([\"web-state-pinia\"], { scope: \"project\", source: \"eject\" }),\n ...buildSkillConfigs([\"web-state-pinia\"], {\n scope: \"global\",\n source: \"eject\",\n excluded: true,\n }),\n ],\n isEditingFromGlobalScope: false,\n isInitMode: false,\n });\n\n store.toggleFilterIncompatible();\n\n const state = useWizardStore.getState();\n expect(state.toastMessage).toBe(\"Global skills cannot be changed from project scope\");\n expect(state.filterIncompatible).toBe(false);\n expect(state.skillConfigs).toStrictEqual(\n buildSkillConfigs([\"web-state-pinia\"], { scope: \"global\", source: \"eject\" }),\n );\n });\n\n it(\"refuses to uninstall an actively-installed global skill in init mode too\", () => {\n initializeMatrix(ALL_SKILLS_FULLSTACK_CATEGORIES_MATRIX);\n const store = useWizardStore.getState();\n\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n store.toggleTechnology(\"web\", \"web-client-state\", \"web-state-pinia\", false);\n\n useWizardStore.setState({\n installedSkillConfigs: buildSkillConfigs([\"web-state-pinia\"], {\n scope: \"global\",\n source: \"eject\",\n }),\n isInitMode: true,\n });\n const skillConfigsBefore = [...useWizardStore.getState().skillConfigs];\n\n store.toggleFilterIncompatible();\n\n const state = useWizardStore.getState();\n expect(state.toastMessage).toBe(\"Global skills cannot be changed from project scope\");\n // The whole operation is refused: the filter stays off and nothing is removed.\n expect(state.filterIncompatible).toBe(false);\n expect(state.domainSelections.web![\"web-client-state\"]).toContain(\"web-state-pinia\");\n expect(\n state.skillConfigs,\n \"a refused filter must leave skillConfigs untouched\",\n ).toStrictEqual(skillConfigsBefore);\n });\n });\n\n describe(\"setToastMessage\", () => {\n it(\"should set and clear toast message\", () => {\n const store = useWizardStore.getState();\n\n store.setToastMessage(\"hello\");\n expect(useWizardStore.getState().toastMessage).toBe(\"hello\");\n\n store.setToastMessage(null);\n expect(useWizardStore.getState().toastMessage).toBeNull();\n });\n });\n\n describe(\"hydrateWizardStore\", () => {\n beforeEach(() => {\n initializeMatrix(REACT_HONO_FRAMEWORK_API_MATRIX);\n });\n\n it(\"sets edit-mode state when initialStep is provided\", () => {\n hydrateWizardStore({\n initialStep: \"build\",\n initialDomains: [\"web\"],\n installedSkillIds: [\"web-framework-react\"],\n });\n\n const state = useWizardStore.getState();\n expect(state.step).toBe(\"build\");\n expect(state.history).toStrictEqual([]);\n expect(state.approach).toBe(\"scratch\");\n expect(state.selectedDomains).toStrictEqual([\"web\"]);\n expect(state.isInitMode).toBe(false);\n });\n\n it(\"sets init-mode defaults when no options are provided\", () => {\n hydrateWizardStore({});\n\n const state = useWizardStore.getState();\n expect(state.step).toBe(\"stack\");\n expect(state.history).toStrictEqual([]);\n expect(state.isInitMode).toBe(true);\n });\n\n it(\"populates installedSkillConfigs for diff rendering\", () => {\n const skillConfigs: SkillConfig[] = [\n { id: \"web-framework-react\", scope: \"global\", source: \"eject\" },\n ];\n\n hydrateWizardStore({\n initialStep: \"build\",\n installedSkillConfigs: skillConfigs,\n });\n\n const state = useWizardStore.getState();\n expect(state.installedSkillConfigs).toStrictEqual(skillConfigs);\n });\n\n it(\"sets isEditingFromGlobalScope when flag is true\", () => {\n hydrateWizardStore({\n initialStep: \"build\",\n isEditingFromGlobalScope: true,\n });\n\n expect(useWizardStore.getState().isEditingFromGlobalScope).toBe(true);\n });\n\n it(\"resets prior store state before applying new hydration\", () => {\n // Seed some state\n useWizardStore.setState({ step: \"confirm\", selectedDomains: [\"api\"] });\n\n hydrateWizardStore({\n initialStep: \"build\",\n initialDomains: [\"web\"],\n });\n\n const state = useWizardStore.getState();\n expect(state.step).toBe(\"build\");\n expect(state.selectedDomains).toStrictEqual([\"web\"]);\n });\n\n it(\"stores globalPreselections in init flow when installedSkillConfigs provided\", () => {\n const skillConfigs: SkillConfig[] = [\n { id: \"web-framework-react\", scope: \"global\", source: \"eject\" },\n ];\n\n hydrateWizardStore({\n installedSkillConfigs: skillConfigs,\n });\n\n const state = useWizardStore.getState();\n expect(state.isInitMode).toBe(true);\n expect(state.globalPreselections).toStrictEqual(skillConfigs);\n });\n\n it(\"seeds focusedSkillId to the active domain's first grid option (edit flow)\", () => {\n hydrateWizardStore({\n initialStep: \"build\",\n initialDomains: [\"web\"],\n installedSkillIds: [\"web-framework-react\"],\n });\n\n expect(useWizardStore.getState().focusedSkillId).toBe(\"web-framework-react\");\n });\n\n it(\"seeds focusedSkillId to the active domain's first grid option (init flow)\", () => {\n hydrateWizardStore({ initialDomains: [\"web\"] });\n\n expect(useWizardStore.getState().focusedSkillId).toBe(\"web-framework-react\");\n });\n\n it(\"seeds focusedSkillId to the fallback domain's first grid option when no domains are selected\", () => {\n hydrateWizardStore({});\n\n expect(useWizardStore.getState().focusedSkillId).toBe(\"web-framework-react\");\n });\n });\n});\n","import type { SkillId } from \"../../types\";\n\n/** Canonical agent name lists per domain, sorted alphabetically */\nexport const EXPECTED_AGENTS = {\n WEB: [\n \"web-architecture\",\n \"web-developer\",\n \"web-pm\",\n \"web-researcher\",\n \"web-reviewer\",\n \"web-tester\",\n ],\n API: [\"api-developer\", \"api-researcher\", \"api-reviewer\"],\n CLI: [\"cli-developer\", \"cli-reviewer\", \"cli-tester\"],\n get WEB_AND_API() {\n return [...this.API, ...this.WEB].sort();\n },\n get ALL() {\n return [...this.API, ...this.CLI, ...this.WEB].sort();\n },\n} as const;\n\n/** Canonical skill ID lists per test fixture */\nexport const EXPECTED_SKILLS = {\n WEB_DEFAULT: [\"web-framework-react\", \"web-state-zustand\"],\n API_DEFAULT: [\"api-framework-hono\"],\n WEB_AND_API: [\"api-framework-hono\", \"web-framework-react\", \"web-state-zustand\"],\n ALL_TEST: [\n \"api-framework-hono\",\n \"web-framework-react\",\n \"web-state-zustand\",\n \"web-testing-vitest\",\n ],\n} as const satisfies Record<string, readonly SkillId[]>;\n"],"mappings":"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","names":[]}
|