@agents-inc/cli 0.74.7 → 0.74.8

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.
Files changed (112) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/{chunk-HA35FGPO.js → chunk-4Q2JLBCX.js} +2 -2
  3. package/dist/{chunk-RO6BG4ZW.js → chunk-7JVDZFJG.js} +3 -5
  4. package/dist/chunk-7JVDZFJG.js.map +1 -0
  5. package/dist/{chunk-TJBOCGLR.js → chunk-7SKGMV7P.js} +11 -11
  6. package/dist/{chunk-JB2QTE7M.js → chunk-7W226BOV.js} +5 -6
  7. package/dist/chunk-7W226BOV.js.map +1 -0
  8. package/dist/{chunk-STC7IEVI.js → chunk-BQW4ONJE.js} +2 -2
  9. package/dist/{chunk-6VIOO74O.js → chunk-CBYRFAUN.js} +1 -3
  10. package/dist/{chunk-6VIOO74O.js.map → chunk-CBYRFAUN.js.map} +1 -1
  11. package/dist/{chunk-GFTBHBRQ.js → chunk-E3MF6GGS.js} +14 -3
  12. package/dist/chunk-E3MF6GGS.js.map +1 -0
  13. package/dist/{chunk-BKTPEATV.js → chunk-F7LOH754.js} +2 -2
  14. package/dist/{chunk-UKYWXIDT.js → chunk-FVMYBN5K.js} +85 -68
  15. package/dist/chunk-FVMYBN5K.js.map +1 -0
  16. package/dist/{chunk-HIVZDWJC.js → chunk-GNA6IOQZ.js} +2 -2
  17. package/dist/{chunk-VMTZ5WC5.js → chunk-HJY4354Y.js} +2 -2
  18. package/dist/{chunk-MVYJVKVT.js → chunk-HT5KOOUQ.js} +2 -2
  19. package/dist/{chunk-RHAZARG3.js → chunk-KZG3EQSH.js} +5 -5
  20. package/dist/{chunk-KYULKBFC.js → chunk-NA6I5P5P.js} +2 -2
  21. package/dist/{chunk-CJSCCLT5.js → chunk-PN65K3LH.js} +2 -2
  22. package/dist/{chunk-MOWZ2FLG.js → chunk-Q53GBFTO.js} +2 -2
  23. package/dist/{chunk-2GD57LQE.js → chunk-RBR355UI.js} +5 -5
  24. package/dist/{chunk-FDIKV4ON.js → chunk-SM4FX2IU.js} +4 -88
  25. package/dist/chunk-SM4FX2IU.js.map +1 -0
  26. package/dist/{chunk-COZ75NET.js → chunk-TPXDHJDB.js} +2 -2
  27. package/dist/{chunk-2ZQKORJI.js → chunk-TUGXTCGX.js} +3 -3
  28. package/dist/{chunk-2MHSOPIU.js → chunk-UFKDY45I.js} +2 -2
  29. package/dist/{chunk-W3GHDONP.js → chunk-ULP3GGXG.js} +4 -4
  30. package/dist/{chunk-JZPQI7YI.js → chunk-X6LXHVA6.js} +2 -2
  31. package/dist/commands/build/plugins.js +2 -2
  32. package/dist/commands/build/stack.js +2 -2
  33. package/dist/commands/compile.js +2 -2
  34. package/dist/commands/config/index.js +2 -2
  35. package/dist/commands/config/path.js +1 -1
  36. package/dist/commands/config/show.js +2 -2
  37. package/dist/commands/diff.js +1 -1
  38. package/dist/commands/doctor.js +1 -1
  39. package/dist/commands/edit.js +47 -40
  40. package/dist/commands/edit.js.map +1 -1
  41. package/dist/commands/eject.js +1 -1
  42. package/dist/commands/import/skill.js +1 -1
  43. package/dist/commands/info.js +1 -1
  44. package/dist/commands/init.js +18 -18
  45. package/dist/commands/list.js +1 -1
  46. package/dist/commands/new/agent.js +2 -2
  47. package/dist/commands/new/marketplace.js +2 -2
  48. package/dist/commands/new/skill.js +2 -2
  49. package/dist/commands/outdated.js +1 -1
  50. package/dist/commands/search.js +3 -3
  51. package/dist/commands/uninstall.js +1 -1
  52. package/dist/commands/update.js +2 -2
  53. package/dist/commands/validate.js +62 -44
  54. package/dist/commands/validate.js.map +1 -1
  55. package/dist/components/skill-search/skill-search.js +2 -2
  56. package/dist/components/wizard/category-grid.js +2 -2
  57. package/dist/components/wizard/category-grid.test.js +4 -4
  58. package/dist/components/wizard/domain-selection.js +3 -3
  59. package/dist/components/wizard/help-modal.js +2 -2
  60. package/dist/components/wizard/search-modal.js +2 -2
  61. package/dist/components/wizard/search-modal.test.js +2 -2
  62. package/dist/components/wizard/source-grid.js +3 -3
  63. package/dist/components/wizard/source-grid.test.js +5 -5
  64. package/dist/components/wizard/stack-selection.js +3 -3
  65. package/dist/components/wizard/step-agents.js +3 -3
  66. package/dist/components/wizard/step-agents.test.js +3 -3
  67. package/dist/components/wizard/step-build.js +5 -5
  68. package/dist/components/wizard/step-build.test.js +5 -5
  69. package/dist/components/wizard/step-confirm.js +2 -2
  70. package/dist/components/wizard/step-confirm.test.js +4 -4
  71. package/dist/components/wizard/step-refine.js +2 -2
  72. package/dist/components/wizard/step-refine.test.js +2 -2
  73. package/dist/components/wizard/step-settings.js +3 -3
  74. package/dist/components/wizard/step-settings.test.js +6 -6
  75. package/dist/components/wizard/step-sources.js +6 -6
  76. package/dist/components/wizard/step-sources.test.js +6 -6
  77. package/dist/components/wizard/step-stack.js +5 -5
  78. package/dist/components/wizard/step-stack.test.js +5 -5
  79. package/dist/components/wizard/wizard-layout.js +5 -5
  80. package/dist/components/wizard/wizard.js +17 -17
  81. package/dist/hooks/init.js +18 -18
  82. package/dist/source-loader-X46F4X2B.js +23 -0
  83. package/dist/{source-manager-A3QLBYCU.js → source-manager-WG7HJHVW.js} +2 -2
  84. package/dist/stores/wizard-store.js +2 -2
  85. package/dist/stores/wizard-store.test.js +26 -5
  86. package/dist/stores/wizard-store.test.js.map +1 -1
  87. package/package.json +1 -1
  88. package/dist/chunk-FDIKV4ON.js.map +0 -1
  89. package/dist/chunk-GFTBHBRQ.js.map +0 -1
  90. package/dist/chunk-JB2QTE7M.js.map +0 -1
  91. package/dist/chunk-RO6BG4ZW.js.map +0 -1
  92. package/dist/chunk-UKYWXIDT.js.map +0 -1
  93. package/dist/source-loader-HQTTAMS7.js +0 -17
  94. /package/dist/{chunk-HA35FGPO.js.map → chunk-4Q2JLBCX.js.map} +0 -0
  95. /package/dist/{chunk-TJBOCGLR.js.map → chunk-7SKGMV7P.js.map} +0 -0
  96. /package/dist/{chunk-STC7IEVI.js.map → chunk-BQW4ONJE.js.map} +0 -0
  97. /package/dist/{chunk-BKTPEATV.js.map → chunk-F7LOH754.js.map} +0 -0
  98. /package/dist/{chunk-HIVZDWJC.js.map → chunk-GNA6IOQZ.js.map} +0 -0
  99. /package/dist/{chunk-VMTZ5WC5.js.map → chunk-HJY4354Y.js.map} +0 -0
  100. /package/dist/{chunk-MVYJVKVT.js.map → chunk-HT5KOOUQ.js.map} +0 -0
  101. /package/dist/{chunk-RHAZARG3.js.map → chunk-KZG3EQSH.js.map} +0 -0
  102. /package/dist/{chunk-KYULKBFC.js.map → chunk-NA6I5P5P.js.map} +0 -0
  103. /package/dist/{chunk-CJSCCLT5.js.map → chunk-PN65K3LH.js.map} +0 -0
  104. /package/dist/{chunk-MOWZ2FLG.js.map → chunk-Q53GBFTO.js.map} +0 -0
  105. /package/dist/{chunk-2GD57LQE.js.map → chunk-RBR355UI.js.map} +0 -0
  106. /package/dist/{chunk-COZ75NET.js.map → chunk-TPXDHJDB.js.map} +0 -0
  107. /package/dist/{chunk-2ZQKORJI.js.map → chunk-TUGXTCGX.js.map} +0 -0
  108. /package/dist/{chunk-2MHSOPIU.js.map → chunk-UFKDY45I.js.map} +0 -0
  109. /package/dist/{chunk-W3GHDONP.js.map → chunk-ULP3GGXG.js.map} +0 -0
  110. /package/dist/{chunk-JZPQI7YI.js.map → chunk-X6LXHVA6.js.map} +0 -0
  111. /package/dist/{source-loader-HQTTAMS7.js.map → source-loader-X46F4X2B.js.map} +0 -0
  112. /package/dist/{source-manager-A3QLBYCU.js.map → source-manager-WG7HJHVW.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/stores/wizard-store.test.ts"],"sourcesContent":["import { describe, it, expect, beforeEach } from \"vitest\";\nimport { useWizardStore } from \"./wizard-store\";\nimport { initializeMatrix } from \"../lib/matrix/matrix-provider\";\nimport { createMockMatrix, SKILLS } from \"../lib/__tests__/helpers\";\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 ALL_SKILLS_WEB_PAIR_CATEGORIES_MATRIX,\n ALL_SKILLS_WEB_FRAMEWORK_MATRIX,\n ALL_SKILLS_METHODOLOGY_MATRIX,\n ALL_SKILLS_METHODOLOGY_BARE_MATRIX,\n ALL_SKILLS_MULTI_DOMAIN_MATRIX,\n REACT_HONO_FRAMEWORK_API_MATRIX,\n} from \"../lib/__tests__/mock-data/mock-matrices\";\nimport type { AgentName, SkillAssignment, SkillId, SkillSource } from \"../types\";\n\nfunction sa(id: SkillId, preloaded = false): SkillAssignment {\n return { id, preloaded };\n}\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).toEqual([]);\n });\n\n it(\"should have null focusedSkillId\", () => {\n const { focusedSkillId } = useWizardStore.getState();\n expect(focusedSkillId).toBeNull();\n });\n\n it(\"should have empty navigation history\", () => {\n const { history } = useWizardStore.getState();\n expect(history).toEqual([]);\n });\n\n it(\"should have empty selected domains\", () => {\n const { selectedDomains } = useWizardStore.getState();\n expect(selectedDomains).toEqual([]);\n });\n\n it(\"should have empty domain selections\", () => {\n const { domainSelections } = useWizardStore.getState();\n expect(domainSelections).toEqual({});\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).toEqual([\"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).toEqual([\"stack\"]);\n });\n\n it(\"when goBack is called with empty history, should return to stack step\", () => {\n const store = useWizardStore.getState();\n\n store.setStep(\"build\");\n store.goBack();\n store.goBack();\n\n const { step } = useWizardStore.getState();\n expect(step).toBe(\"stack\");\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 { selectedStackId } = useWizardStore.getState();\n expect(selectedStackId).toBe(\"nextjs-fullstack\");\n });\n\n it(\"when selectStack is called with null, should clear previously selected stack\", () => {\n const store = useWizardStore.getState();\n store.selectStack(\"nextjs-fullstack\");\n store.selectStack(null);\n\n const { selectedStackId } = useWizardStore.getState();\n expect(selectedStackId).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 } = useWizardStore.getState();\n expect(selectedDomains).toContain(\"web\");\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 } = useWizardStore.getState();\n expect(selectedDomains).not.toContain(\"web\");\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).toEqual([\"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 } = useWizardStore.getState();\n expect(domainSelections.web).toBeUndefined();\n expect(store.getAllSelectedTechnologies()).toEqual([]);\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 } = useWizardStore.getState();\n expect(domainSelections.web).toBeUndefined();\n expect(domainSelections.api![\"api-api\"]).toEqual([\"api-framework-hono\"]);\n expect(store.getAllSelectedTechnologies()).toEqual([\"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 } = useWizardStore.getState();\n expect(domainSelections.web).toBeUndefined();\n expect(store.getAllSelectedTechnologies()).toEqual([]);\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()).toEqual([\"api-framework-hono\"]);\n });\n\n it(\"should restore stack skills when re-toggling a domain ON after populateFromStack\", () => {\n const store = useWizardStore.getState();\n\n const stack: Parameters<typeof store.populateFromStack>[0] = {\n agents: {\n web: {\n \"web-framework\": [sa(\"web-framework-react\", true)],\n \"web-client-state\": [sa(\"web-state-zustand\")],\n },\n api: { \"api-api\": [sa(\"api-framework-hono\", true)] },\n },\n };\n initializeMatrix(ALL_SKILLS_FULLSTACK_CATEGORIES_MATRIX);\n\n store.populateFromStack(stack);\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\"]).toEqual([\"web-framework-react\"]);\n expect(domainSelections.web![\"web-client-state\"]).toEqual([\"web-state-zustand\"]);\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\"]).toEqual([\"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()).toEqual([]);\n });\n\n it(\"should not affect other domains when restoring stack skills for one domain\", () => {\n const store = useWizardStore.getState();\n\n const stack: Parameters<typeof store.populateFromStack>[0] = {\n agents: {\n web: { \"web-framework\": [sa(\"web-framework-react\", true)] },\n api: { \"api-api\": [sa(\"api-framework-hono\", true)] },\n },\n };\n initializeMatrix(ALL_SKILLS_WEB_AND_API_MATRIX);\n\n store.populateFromStack(stack);\n\n // Manually change api skills\n store.toggleTechnology(\"api\", \"api-api\", \"api-framework-hono\", true); // deselect\n store.toggleTechnology(\"api\", \"api-api\", \"api-framework-express\", true); // select new\n\n // Toggle web off then on\n store.toggleDomain(\"web\");\n store.toggleDomain(\"web\");\n\n // Web should be restored from stack, api should keep manual changes\n const { domainSelections } = useWizardStore.getState();\n expect(domainSelections.web![\"web-framework\"]).toEqual([\"web-framework-react\"]);\n expect(domainSelections.api![\"api-api\"]).toEqual([\"api-framework-express\"]);\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 } = useWizardStore.getState();\n expect(domainSelections.web![\"web-framework\"]).toEqual([\"web-framework-react\"]);\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 } = useWizardStore.getState();\n expect(domainSelections.web![\"web-framework\"]).toEqual([\"web-framework-vue-composition-api\"]);\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 } = useWizardStore.getState();\n expect(domainSelections.web![\"web-framework\"]).toEqual([]);\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 } = useWizardStore.getState();\n expect(domainSelections.web![\"web-testing\"]).toEqual([\n \"web-testing-vitest\",\n \"web-testing-playwright-e2e\",\n ]);\n });\n\n it(\"should toggle off technology 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 store.toggleTechnology(\"web\", \"web-testing\", \"web-testing-vitest\", false);\n\n const { domainSelections } = useWizardStore.getState();\n expect(domainSelections.web![\"web-testing\"]).toEqual([\"web-testing-playwright-e2e\"]);\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(\"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 help on\", () => {\n const store = useWizardStore.getState();\n\n store.toggleHelp();\n\n const { showHelp } = useWizardStore.getState();\n expect(showHelp).toBe(true);\n });\n\n it(\"should toggle help off (show then hide)\", () => {\n const store = useWizardStore.getState();\n\n store.toggleHelp();\n store.toggleHelp();\n\n const { showHelp } = useWizardStore.getState();\n expect(showHelp).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 showHelp false\", () => {\n const { showHelp } = useWizardStore.getState();\n expect(showHelp).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 showHelp to false after reset\", () => {\n const store = useWizardStore.getState();\n store.toggleHelp();\n store.reset();\n\n const { showHelp } = useWizardStore.getState();\n expect(showHelp).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]).toEqual({\n id: \"web-framework-react\",\n scope: \"global\",\n source: \"agents-inc\",\n });\n });\n\n it(\"should remove from skillConfigs when toggling a technology off\", () => {\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(\"should replace skillConfigs entry 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 { skillConfigs } = useWizardStore.getState();\n expect(skillConfigs).toHaveLength(1);\n expect(skillConfigs[0].id).toBe(\"web-framework-vue-composition-api\");\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)).toEqual([\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 update source via setSkillSource\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n\n store.setSkillSource(\"web-framework-react\", \"local\");\n\n const { skillConfigs } = useWizardStore.getState();\n expect(skillConfigs[0].source).toBe(\"local\");\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\", \"local\");\n\n const { skillConfigs } = useWizardStore.getState();\n expect(skillConfigs[0].source).toBe(\"local\");\n });\n\n it(\"should populate skillConfigs from populateFromStack\", () => {\n const store = useWizardStore.getState();\n\n const stack: Parameters<typeof store.populateFromStack>[0] = {\n agents: {\n web: {\n \"web-framework\": [sa(\"web-framework-react\", true)],\n \"web-client-state\": [sa(\"web-state-zustand\")],\n },\n },\n };\n initializeMatrix(ALL_SKILLS_WEB_PAIR_CATEGORIES_MATRIX);\n\n store.populateFromStack(stack);\n\n const { skillConfigs } = useWizardStore.getState();\n expect(skillConfigs).toHaveLength(2);\n expect(skillConfigs.map((sc) => sc.id)).toEqual([\"web-framework-react\", \"web-state-zustand\"]);\n expect(skillConfigs.every((sc) => sc.scope === \"global\")).toBe(true);\n expect(skillConfigs.every((sc) => sc.source === \"agents-inc\")).toBe(true);\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)).toEqual([\n \"web-framework-react\",\n \"api-framework-hono\",\n ]);\n });\n\n it(\"should remove 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\n expect(useWizardStore.getState().skillConfigs).toHaveLength(1);\n\n store.toggleDomain(\"web\");\n\n expect(useWizardStore.getState().skillConfigs).toHaveLength(0);\n });\n\n it(\"should restore skillConfigs when domain is re-toggled after populateFromStack\", () => {\n const store = useWizardStore.getState();\n\n const stack: Parameters<typeof store.populateFromStack>[0] = {\n agents: {\n web: { \"web-framework\": [sa(\"web-framework-react\", true)] },\n },\n };\n initializeMatrix(ALL_SKILLS_WEB_FRAMEWORK_MATRIX);\n\n store.populateFromStack(stack);\n expect(useWizardStore.getState().skillConfigs).toHaveLength(1);\n\n store.toggleDomain(\"web\");\n expect(useWizardStore.getState().skillConfigs).toHaveLength(0);\n\n store.toggleDomain(\"web\");\n expect(useWizardStore.getState().skillConfigs).toHaveLength(1);\n expect(useWizardStore.getState().skillConfigs[0].id).toBe(\"web-framework-react\");\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).toEqual([]);\n expect(state.focusedSkillId).toBeNull();\n });\n\n it(\"should set all sources to local via setAllSourcesLocal\", () => {\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.setAllSourcesLocal();\n\n const { skillConfigs } = useWizardStore.getState();\n expect(skillConfigs.every((sc) => sc.source === \"local\")).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\", \"local\");\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\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).toContain(\"web-framework-react\");\n expect(technologies).toContain(\"web-styling-scss-modules\");\n expect(technologies).toContain(\"api-framework-hono\");\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).toEqual([\"web-framework-react\", \"web-styling-scss-modules\"]);\n expect(perDomain.api).toEqual([\"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).toEqual({});\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).toEqual([]);\n expect(state.history).toEqual([]);\n });\n });\n\n describe(\"populateFromStack\", () => {\n it(\"should set selectedDomains to all domains regardless of stack contents\", () => {\n const store = useWizardStore.getState();\n\n const stack: Parameters<typeof store.populateFromStack>[0] = {\n agents: {\n web: { \"web-framework\": [sa(\"web-framework-react\", true)] },\n },\n };\n initializeMatrix(ALL_SKILLS_WEB_FRAMEWORK_MATRIX);\n\n store.populateFromStack(stack);\n\n const { selectedDomains, domainSelections } = useWizardStore.getState();\n\n expect(selectedDomains).toEqual([\"web\", \"api\", \"mobile\", \"cli\", \"shared\"]);\n\n expect(domainSelections.web).toBeDefined();\n expect(domainSelections.web![\"web-framework\"]).toEqual([\"web-framework-react\"]);\n expect(domainSelections.api).toBeUndefined();\n });\n\n it(\"should populate domainSelections from stack agents\", () => {\n const store = useWizardStore.getState();\n\n const stack: Parameters<typeof store.populateFromStack>[0] = {\n agents: {\n web: {\n \"web-framework\": [sa(\"web-framework-react\", true)],\n \"web-client-state\": [sa(\"web-state-zustand\")],\n },\n api: { \"api-api\": [sa(\"api-framework-hono\", true)] },\n },\n };\n initializeMatrix(ALL_SKILLS_FULLSTACK_CATEGORIES_MATRIX);\n\n store.populateFromStack(stack);\n\n const { domainSelections } = useWizardStore.getState();\n\n expect(domainSelections.web![\"web-framework\"]).toEqual([\"web-framework-react\"]);\n expect(domainSelections.web![\"web-client-state\"]).toEqual([\"web-state-zustand\"]);\n expect(domainSelections.api![\"api-api\"]).toEqual([\"api-framework-hono\"]);\n });\n\n it(\"should skip entries without a domain\", () => {\n const store = useWizardStore.getState();\n\n const stack: Parameters<typeof store.populateFromStack>[0] = {\n agents: {\n misc: { \"shared-methodology\": [sa(\"meta-methodology-vitest\" as SkillId)] },\n },\n };\n initializeMatrix(ALL_SKILLS_METHODOLOGY_BARE_MATRIX);\n\n store.populateFromStack(stack);\n\n const { domainSelections } = useWizardStore.getState();\n\n expect(typedKeys(domainSelections)).toHaveLength(0);\n });\n\n it(\"should populate multiple skills from array-valued categories\", () => {\n const store = useWizardStore.getState();\n\n const stack: Parameters<typeof store.populateFromStack>[0] = {\n agents: {\n \"pattern-scout\": {\n \"shared-methodology\": [\n sa(\"meta-methodology-investigation-requirements\", true),\n sa(\"meta-methodology-anti-over-engineering\", true),\n sa(\"meta-methodology-success-criteria\", true),\n ],\n },\n },\n };\n initializeMatrix(ALL_SKILLS_METHODOLOGY_MATRIX);\n\n store.populateFromStack(stack);\n\n const { domainSelections } = useWizardStore.getState();\n\n expect(domainSelections.shared![\"shared-methodology\"]).toEqual([\n \"meta-methodology-investigation-requirements\",\n \"meta-methodology-anti-over-engineering\",\n \"meta-methodology-success-criteria\",\n ]);\n });\n\n it(\"should handle single-element and multi-element arrays across agents\", () => {\n const store = useWizardStore.getState();\n\n const stack: Parameters<typeof store.populateFromStack>[0] = {\n agents: {\n web: {\n \"web-framework\": [sa(\"web-framework-react\", true)],\n \"shared-methodology\": [\n sa(\"meta-methodology-investigation-requirements\", true),\n sa(\"meta-methodology-anti-over-engineering\", true),\n ],\n },\n api: { \"api-api\": [sa(\"api-framework-hono\", true)] },\n },\n };\n initializeMatrix(ALL_SKILLS_MULTI_DOMAIN_MATRIX);\n\n store.populateFromStack(stack);\n\n const { domainSelections } = useWizardStore.getState();\n\n expect(domainSelections.web![\"web-framework\"]).toEqual([\"web-framework-react\"]);\n expect(domainSelections.shared![\"shared-methodology\"]).toEqual([\n \"meta-methodology-investigation-requirements\",\n \"meta-methodology-anti-over-engineering\",\n ]);\n expect(domainSelections.api![\"api-api\"]).toEqual([\"api-framework-hono\"]);\n });\n\n it(\"should deduplicate skills from arrays across multiple agents\", () => {\n const store = useWizardStore.getState();\n\n const stack: Parameters<typeof store.populateFromStack>[0] = {\n agents: {\n agent1: {\n \"shared-methodology\": [\n sa(\"meta-methodology-investigation-requirements\", true),\n sa(\"meta-methodology-anti-over-engineering\", true),\n ],\n },\n agent2: {\n \"shared-methodology\": [\n sa(\"meta-methodology-anti-over-engineering\", true),\n sa(\"meta-methodology-success-criteria\", true),\n ],\n },\n },\n };\n initializeMatrix(ALL_SKILLS_METHODOLOGY_MATRIX);\n\n store.populateFromStack(stack);\n\n const { domainSelections } = useWizardStore.getState();\n\n // Should deduplicate: anti-over-engineering appears in both agents\n expect(domainSelections.shared![\"shared-methodology\"]).toEqual([\n \"meta-methodology-investigation-requirements\",\n \"meta-methodology-anti-over-engineering\",\n \"meta-methodology-success-criteria\",\n ]);\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).toEqual([\"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).toEqual([\"web\", \"api\"]);\n expect(state.domainSelections.web![\"web-framework\"]).toEqual([\"web-framework-react\"]);\n expect(state.domainSelections.web![\"web-styling\"]).toEqual([\"web-styling-scss-modules\"]);\n expect(state.domainSelections.api![\"api-api\"]).toEqual([\"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\"]).toEqual([\"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: \"local\", type: \"local\", installed: true, installMode: \"local\" }),\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(\"local\");\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(\"local\");\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(\"local\");\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: \"local\", type: \"local\", installed: true, installMode: \"local\" }),\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).toEqual([\"local\", \"Acme Corp\", \"agents-inc\", \"Extra Corp\"]);\n });\n });\n\n describe(\"agent selection\", () => {\n it(\"should start with empty selectedAgents\", () => {\n const { selectedAgents } = useWizardStore.getState();\n expect(selectedAgents).toEqual([]);\n });\n\n it(\"should toggle agent on\", () => {\n const store = useWizardStore.getState();\n store.toggleAgent(\"web-developer\");\n\n const { selectedAgents } = useWizardStore.getState();\n expect(selectedAgents).toContain(\"web-developer\");\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 } = useWizardStore.getState();\n expect(selectedAgents).not.toContain(\"web-developer\");\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).toEqual([\"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).toEqual([]);\n });\n });\n\n describe(\"agentConfigs and scope management\", () => {\n it(\"should have empty agentConfigs initially\", () => {\n const { agentConfigs } = useWizardStore.getState();\n expect(agentConfigs).toEqual([]);\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).toEqual([{ name: \"web-developer\", scope: \"global\" }]);\n });\n\n it(\"should remove from agentConfigs when agent is toggled off\", () => {\n const store = useWizardStore.getState();\n store.toggleAgent(\"web-developer\");\n store.toggleAgent(\"web-developer\");\n\n const { agentConfigs } = useWizardStore.getState();\n expect(agentConfigs).toEqual([]);\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).toEqual([{ name: \"web-developer\", scope: \"project\" }]);\n\n store.toggleAgentScope(\"web-developer\");\n expect(useWizardStore.getState().agentConfigs).toEqual([\n { name: \"web-developer\", scope: \"global\" },\n ]);\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 not toggle locked agents\", () => {\n useWizardStore.setState({ lockedAgentNames: [\"web-developer\"] as AgentName[] });\n const store = useWizardStore.getState();\n store.toggleAgent(\"web-developer\");\n\n const { selectedAgents, agentConfigs } = useWizardStore.getState();\n expect(selectedAgents).toEqual([]);\n expect(agentConfigs).toEqual([]);\n });\n\n it(\"should not toggle scope of locked agents\", () => {\n const store = useWizardStore.getState();\n store.toggleAgent(\"web-developer\");\n useWizardStore.setState({ lockedAgentNames: [\"web-developer\"] as AgentName[] });\n\n store.toggleAgentScope(\"web-developer\");\n const { agentConfigs } = useWizardStore.getState();\n expect(agentConfigs).toEqual([{ name: \"web-developer\", scope: \"global\" }]);\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 } = useWizardStore.getState();\n expect(selectedAgents).toContain(\"web-developer\");\n expect(selectedAgents).toContain(\"web-reviewer\");\n expect(selectedAgents).toContain(\"web-researcher\");\n expect(selectedAgents).toContain(\"web-tester\");\n expect(selectedAgents).toContain(\"web-pm\");\n expect(selectedAgents).toContain(\"web-architecture\");\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 } = useWizardStore.getState();\n expect(selectedAgents).toContain(\"api-developer\");\n expect(selectedAgents).toContain(\"api-reviewer\");\n expect(selectedAgents).toContain(\"api-researcher\");\n expect(selectedAgents).not.toContain(\"web-developer\");\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 } = useWizardStore.getState();\n expect(selectedAgents).toContain(\"cli-developer\");\n expect(selectedAgents).toContain(\"cli-tester\");\n expect(selectedAgents).toContain(\"cli-reviewer\");\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).not.toContain(\"agent-summoner\");\n expect(selectedAgents).not.toContain(\"skill-summoner\");\n expect(selectedAgents).not.toContain(\"documentor\");\n expect(selectedAgents).not.toContain(\"pattern-scout\");\n expect(selectedAgents).not.toContain(\"web-pattern-critique\");\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).toEqual([]);\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).toEqual(sorted);\n });\n\n it(\"should replace previous agent selection\", () => {\n const store = useWizardStore.getState();\n store.toggleAgent(\"documentor\");\n store.toggleDomain(\"web\");\n store.preselectAgentsFromDomains();\n\n const { selectedAgents } = useWizardStore.getState();\n // preselectAgentsFromDomains replaces the array entirely\n expect(selectedAgents).not.toContain(\"documentor\");\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(\"build\");\n store.setStep(\"sources\");\n store.setStep(\"agents\");\n store.setStep(\"confirm\");\n\n const { completedSteps } = store.getStepProgress();\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(\"build\");\n store.setStep(\"sources\");\n store.setStep(\"agents\");\n\n const { completedSteps } = store.getStepProgress();\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 'local' when all skills are set to local\", () => {\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\", \"local\");\n store.setSourceSelection(\"api-framework-hono\", \"local\");\n\n const result = store.deriveInstallMode();\n expect(result).toBe(\"local\");\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\", \"local\");\n store.setSourceSelection(\"api-framework-hono\", \"agents-inc\");\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(\"local\");\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\", \"local\");\n\n const result = store.deriveInstallMode();\n expect(result).toBe(\"local\");\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"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/cli/stores/wizard-store.test.ts"],"sourcesContent":["import { describe, it, expect, beforeEach } from \"vitest\";\nimport { useWizardStore } from \"./wizard-store\";\nimport { initializeMatrix } from \"../lib/matrix/matrix-provider\";\nimport { createMockMatrix, SKILLS } from \"../lib/__tests__/helpers\";\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 ALL_SKILLS_WEB_PAIR_CATEGORIES_MATRIX,\n ALL_SKILLS_WEB_FRAMEWORK_MATRIX,\n ALL_SKILLS_METHODOLOGY_MATRIX,\n ALL_SKILLS_METHODOLOGY_BARE_MATRIX,\n ALL_SKILLS_MULTI_DOMAIN_MATRIX,\n REACT_HONO_FRAMEWORK_API_MATRIX,\n} from \"../lib/__tests__/mock-data/mock-matrices\";\nimport type { AgentName, SkillAssignment, SkillId, SkillSource } from \"../types\";\n\nfunction sa(id: SkillId, preloaded = false): SkillAssignment {\n return { id, preloaded };\n}\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).toEqual([]);\n });\n\n it(\"should have null focusedSkillId\", () => {\n const { focusedSkillId } = useWizardStore.getState();\n expect(focusedSkillId).toBeNull();\n });\n\n it(\"should have empty navigation history\", () => {\n const { history } = useWizardStore.getState();\n expect(history).toEqual([]);\n });\n\n it(\"should have empty selected domains\", () => {\n const { selectedDomains } = useWizardStore.getState();\n expect(selectedDomains).toEqual([]);\n });\n\n it(\"should have empty domain selections\", () => {\n const { domainSelections } = useWizardStore.getState();\n expect(domainSelections).toEqual({});\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).toEqual([\"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).toEqual([\"stack\"]);\n });\n\n it(\"when goBack is called with empty history, should return to stack step\", () => {\n const store = useWizardStore.getState();\n\n store.setStep(\"build\");\n store.goBack();\n store.goBack();\n\n const { step } = useWizardStore.getState();\n expect(step).toBe(\"stack\");\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 { selectedStackId } = useWizardStore.getState();\n expect(selectedStackId).toBe(\"nextjs-fullstack\");\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).toEqual({});\n expect(state.selectedDomains).toEqual([]);\n expect(state.skillConfigs).toEqual([]);\n expect(state.selectedAgents).toEqual([]);\n expect(state.boundSkills).toEqual([]);\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(Object.keys(stateAfterFirst.domainSelections).length).toBeGreaterThan(0);\n\n // Simulate going back and selecting \"start from scratch\"\n store.selectStack(null);\n\n const stateAfterClear = useWizardStore.getState();\n expect(stateAfterClear.domainSelections).toEqual({});\n expect(stateAfterClear.selectedDomains).toEqual([]);\n expect(stateAfterClear.skillConfigs).toEqual([]);\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 } = useWizardStore.getState();\n expect(selectedDomains).toContain(\"web\");\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 } = useWizardStore.getState();\n expect(selectedDomains).not.toContain(\"web\");\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).toEqual([\"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 } = useWizardStore.getState();\n expect(domainSelections.web).toBeUndefined();\n expect(store.getAllSelectedTechnologies()).toEqual([]);\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 } = useWizardStore.getState();\n expect(domainSelections.web).toBeUndefined();\n expect(domainSelections.api![\"api-api\"]).toEqual([\"api-framework-hono\"]);\n expect(store.getAllSelectedTechnologies()).toEqual([\"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 } = useWizardStore.getState();\n expect(domainSelections.web).toBeUndefined();\n expect(store.getAllSelectedTechnologies()).toEqual([]);\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()).toEqual([\"api-framework-hono\"]);\n });\n\n it(\"should restore stack skills when re-toggling a domain ON after populateFromStack\", () => {\n const store = useWizardStore.getState();\n\n const stack: Parameters<typeof store.populateFromStack>[0] = {\n agents: {\n web: {\n \"web-framework\": [sa(\"web-framework-react\", true)],\n \"web-client-state\": [sa(\"web-state-zustand\")],\n },\n api: { \"api-api\": [sa(\"api-framework-hono\", true)] },\n },\n };\n initializeMatrix(ALL_SKILLS_FULLSTACK_CATEGORIES_MATRIX);\n\n store.populateFromStack(stack);\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\"]).toEqual([\"web-framework-react\"]);\n expect(domainSelections.web![\"web-client-state\"]).toEqual([\"web-state-zustand\"]);\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\"]).toEqual([\"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()).toEqual([]);\n });\n\n it(\"should not affect other domains when restoring stack skills for one domain\", () => {\n const store = useWizardStore.getState();\n\n const stack: Parameters<typeof store.populateFromStack>[0] = {\n agents: {\n web: { \"web-framework\": [sa(\"web-framework-react\", true)] },\n api: { \"api-api\": [sa(\"api-framework-hono\", true)] },\n },\n };\n initializeMatrix(ALL_SKILLS_WEB_AND_API_MATRIX);\n\n store.populateFromStack(stack);\n\n // Manually change api skills\n store.toggleTechnology(\"api\", \"api-api\", \"api-framework-hono\", true); // deselect\n store.toggleTechnology(\"api\", \"api-api\", \"api-framework-express\", true); // select new\n\n // Toggle web off then on\n store.toggleDomain(\"web\");\n store.toggleDomain(\"web\");\n\n // Web should be restored from stack, api should keep manual changes\n const { domainSelections } = useWizardStore.getState();\n expect(domainSelections.web![\"web-framework\"]).toEqual([\"web-framework-react\"]);\n expect(domainSelections.api![\"api-api\"]).toEqual([\"api-framework-express\"]);\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 } = useWizardStore.getState();\n expect(domainSelections.web![\"web-framework\"]).toEqual([\"web-framework-react\"]);\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 } = useWizardStore.getState();\n expect(domainSelections.web![\"web-framework\"]).toEqual([\"web-framework-vue-composition-api\"]);\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 } = useWizardStore.getState();\n expect(domainSelections.web![\"web-framework\"]).toEqual([]);\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 } = useWizardStore.getState();\n expect(domainSelections.web![\"web-testing\"]).toEqual([\n \"web-testing-vitest\",\n \"web-testing-playwright-e2e\",\n ]);\n });\n\n it(\"should toggle off technology 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 store.toggleTechnology(\"web\", \"web-testing\", \"web-testing-vitest\", false);\n\n const { domainSelections } = useWizardStore.getState();\n expect(domainSelections.web![\"web-testing\"]).toEqual([\"web-testing-playwright-e2e\"]);\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(\"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 help on\", () => {\n const store = useWizardStore.getState();\n\n store.toggleHelp();\n\n const { showHelp } = useWizardStore.getState();\n expect(showHelp).toBe(true);\n });\n\n it(\"should toggle help off (show then hide)\", () => {\n const store = useWizardStore.getState();\n\n store.toggleHelp();\n store.toggleHelp();\n\n const { showHelp } = useWizardStore.getState();\n expect(showHelp).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 showHelp false\", () => {\n const { showHelp } = useWizardStore.getState();\n expect(showHelp).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 showHelp to false after reset\", () => {\n const store = useWizardStore.getState();\n store.toggleHelp();\n store.reset();\n\n const { showHelp } = useWizardStore.getState();\n expect(showHelp).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]).toEqual({\n id: \"web-framework-react\",\n scope: \"global\",\n source: \"agents-inc\",\n });\n });\n\n it(\"should remove from skillConfigs when toggling a technology off\", () => {\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(\"should replace skillConfigs entry 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 { skillConfigs } = useWizardStore.getState();\n expect(skillConfigs).toHaveLength(1);\n expect(skillConfigs[0].id).toBe(\"web-framework-vue-composition-api\");\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)).toEqual([\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 update source via setSkillSource\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"web-framework\", \"web-framework-react\", true);\n\n store.setSkillSource(\"web-framework-react\", \"local\");\n\n const { skillConfigs } = useWizardStore.getState();\n expect(skillConfigs[0].source).toBe(\"local\");\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\", \"local\");\n\n const { skillConfigs } = useWizardStore.getState();\n expect(skillConfigs[0].source).toBe(\"local\");\n });\n\n it(\"should populate skillConfigs from populateFromStack\", () => {\n const store = useWizardStore.getState();\n\n const stack: Parameters<typeof store.populateFromStack>[0] = {\n agents: {\n web: {\n \"web-framework\": [sa(\"web-framework-react\", true)],\n \"web-client-state\": [sa(\"web-state-zustand\")],\n },\n },\n };\n initializeMatrix(ALL_SKILLS_WEB_PAIR_CATEGORIES_MATRIX);\n\n store.populateFromStack(stack);\n\n const { skillConfigs } = useWizardStore.getState();\n expect(skillConfigs).toHaveLength(2);\n expect(skillConfigs.map((sc) => sc.id)).toEqual([\"web-framework-react\", \"web-state-zustand\"]);\n expect(skillConfigs.every((sc) => sc.scope === \"global\")).toBe(true);\n expect(skillConfigs.every((sc) => sc.source === \"agents-inc\")).toBe(true);\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)).toEqual([\n \"web-framework-react\",\n \"api-framework-hono\",\n ]);\n });\n\n it(\"should remove 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\n expect(useWizardStore.getState().skillConfigs).toHaveLength(1);\n\n store.toggleDomain(\"web\");\n\n expect(useWizardStore.getState().skillConfigs).toHaveLength(0);\n });\n\n it(\"should restore skillConfigs when domain is re-toggled after populateFromStack\", () => {\n const store = useWizardStore.getState();\n\n const stack: Parameters<typeof store.populateFromStack>[0] = {\n agents: {\n web: { \"web-framework\": [sa(\"web-framework-react\", true)] },\n },\n };\n initializeMatrix(ALL_SKILLS_WEB_FRAMEWORK_MATRIX);\n\n store.populateFromStack(stack);\n expect(useWizardStore.getState().skillConfigs).toHaveLength(1);\n\n store.toggleDomain(\"web\");\n expect(useWizardStore.getState().skillConfigs).toHaveLength(0);\n\n store.toggleDomain(\"web\");\n expect(useWizardStore.getState().skillConfigs).toHaveLength(1);\n expect(useWizardStore.getState().skillConfigs[0].id).toBe(\"web-framework-react\");\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).toEqual([]);\n expect(state.focusedSkillId).toBeNull();\n });\n\n it(\"should set all sources to local via setAllSourcesLocal\", () => {\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.setAllSourcesLocal();\n\n const { skillConfigs } = useWizardStore.getState();\n expect(skillConfigs.every((sc) => sc.source === \"local\")).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\", \"local\");\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\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).toContain(\"web-framework-react\");\n expect(technologies).toContain(\"web-styling-scss-modules\");\n expect(technologies).toContain(\"api-framework-hono\");\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).toEqual([\"web-framework-react\", \"web-styling-scss-modules\"]);\n expect(perDomain.api).toEqual([\"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).toEqual({});\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).toEqual([]);\n expect(state.history).toEqual([]);\n });\n });\n\n describe(\"populateFromStack\", () => {\n it(\"should set selectedDomains to all domains regardless of stack contents\", () => {\n const store = useWizardStore.getState();\n\n const stack: Parameters<typeof store.populateFromStack>[0] = {\n agents: {\n web: { \"web-framework\": [sa(\"web-framework-react\", true)] },\n },\n };\n initializeMatrix(ALL_SKILLS_WEB_FRAMEWORK_MATRIX);\n\n store.populateFromStack(stack);\n\n const { selectedDomains, domainSelections } = useWizardStore.getState();\n\n expect(selectedDomains).toEqual([\"web\", \"api\", \"mobile\", \"cli\", \"shared\"]);\n\n expect(domainSelections.web).toBeDefined();\n expect(domainSelections.web![\"web-framework\"]).toEqual([\"web-framework-react\"]);\n expect(domainSelections.api).toBeUndefined();\n });\n\n it(\"should populate domainSelections from stack agents\", () => {\n const store = useWizardStore.getState();\n\n const stack: Parameters<typeof store.populateFromStack>[0] = {\n agents: {\n web: {\n \"web-framework\": [sa(\"web-framework-react\", true)],\n \"web-client-state\": [sa(\"web-state-zustand\")],\n },\n api: { \"api-api\": [sa(\"api-framework-hono\", true)] },\n },\n };\n initializeMatrix(ALL_SKILLS_FULLSTACK_CATEGORIES_MATRIX);\n\n store.populateFromStack(stack);\n\n const { domainSelections } = useWizardStore.getState();\n\n expect(domainSelections.web![\"web-framework\"]).toEqual([\"web-framework-react\"]);\n expect(domainSelections.web![\"web-client-state\"]).toEqual([\"web-state-zustand\"]);\n expect(domainSelections.api![\"api-api\"]).toEqual([\"api-framework-hono\"]);\n });\n\n it(\"should skip entries without a domain\", () => {\n const store = useWizardStore.getState();\n\n const stack: Parameters<typeof store.populateFromStack>[0] = {\n agents: {\n misc: { \"shared-methodology\": [sa(\"meta-methodology-vitest\" as SkillId)] },\n },\n };\n initializeMatrix(ALL_SKILLS_METHODOLOGY_BARE_MATRIX);\n\n store.populateFromStack(stack);\n\n const { domainSelections } = useWizardStore.getState();\n\n expect(typedKeys(domainSelections)).toHaveLength(0);\n });\n\n it(\"should populate multiple skills from array-valued categories\", () => {\n const store = useWizardStore.getState();\n\n const stack: Parameters<typeof store.populateFromStack>[0] = {\n agents: {\n \"pattern-scout\": {\n \"shared-methodology\": [\n sa(\"meta-methodology-investigation-requirements\", true),\n sa(\"meta-methodology-anti-over-engineering\", true),\n sa(\"meta-methodology-success-criteria\", true),\n ],\n },\n },\n };\n initializeMatrix(ALL_SKILLS_METHODOLOGY_MATRIX);\n\n store.populateFromStack(stack);\n\n const { domainSelections } = useWizardStore.getState();\n\n expect(domainSelections.shared![\"shared-methodology\"]).toEqual([\n \"meta-methodology-investigation-requirements\",\n \"meta-methodology-anti-over-engineering\",\n \"meta-methodology-success-criteria\",\n ]);\n });\n\n it(\"should handle single-element and multi-element arrays across agents\", () => {\n const store = useWizardStore.getState();\n\n const stack: Parameters<typeof store.populateFromStack>[0] = {\n agents: {\n web: {\n \"web-framework\": [sa(\"web-framework-react\", true)],\n \"shared-methodology\": [\n sa(\"meta-methodology-investigation-requirements\", true),\n sa(\"meta-methodology-anti-over-engineering\", true),\n ],\n },\n api: { \"api-api\": [sa(\"api-framework-hono\", true)] },\n },\n };\n initializeMatrix(ALL_SKILLS_MULTI_DOMAIN_MATRIX);\n\n store.populateFromStack(stack);\n\n const { domainSelections } = useWizardStore.getState();\n\n expect(domainSelections.web![\"web-framework\"]).toEqual([\"web-framework-react\"]);\n expect(domainSelections.shared![\"shared-methodology\"]).toEqual([\n \"meta-methodology-investigation-requirements\",\n \"meta-methodology-anti-over-engineering\",\n ]);\n expect(domainSelections.api![\"api-api\"]).toEqual([\"api-framework-hono\"]);\n });\n\n it(\"should deduplicate skills from arrays across multiple agents\", () => {\n const store = useWizardStore.getState();\n\n const stack: Parameters<typeof store.populateFromStack>[0] = {\n agents: {\n agent1: {\n \"shared-methodology\": [\n sa(\"meta-methodology-investigation-requirements\", true),\n sa(\"meta-methodology-anti-over-engineering\", true),\n ],\n },\n agent2: {\n \"shared-methodology\": [\n sa(\"meta-methodology-anti-over-engineering\", true),\n sa(\"meta-methodology-success-criteria\", true),\n ],\n },\n },\n };\n initializeMatrix(ALL_SKILLS_METHODOLOGY_MATRIX);\n\n store.populateFromStack(stack);\n\n const { domainSelections } = useWizardStore.getState();\n\n // Should deduplicate: anti-over-engineering appears in both agents\n expect(domainSelections.shared![\"shared-methodology\"]).toEqual([\n \"meta-methodology-investigation-requirements\",\n \"meta-methodology-anti-over-engineering\",\n \"meta-methodology-success-criteria\",\n ]);\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).toEqual([\"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).toEqual([\"web\", \"api\"]);\n expect(state.domainSelections.web![\"web-framework\"]).toEqual([\"web-framework-react\"]);\n expect(state.domainSelections.web![\"web-styling\"]).toEqual([\"web-styling-scss-modules\"]);\n expect(state.domainSelections.api![\"api-api\"]).toEqual([\"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\"]).toEqual([\"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: \"local\", type: \"local\", installed: true, installMode: \"local\" }),\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(\"local\");\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(\"local\");\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(\"local\");\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: \"local\", type: \"local\", installed: true, installMode: \"local\" }),\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).toEqual([\"local\", \"Acme Corp\", \"agents-inc\", \"Extra Corp\"]);\n });\n });\n\n describe(\"agent selection\", () => {\n it(\"should start with empty selectedAgents\", () => {\n const { selectedAgents } = useWizardStore.getState();\n expect(selectedAgents).toEqual([]);\n });\n\n it(\"should toggle agent on\", () => {\n const store = useWizardStore.getState();\n store.toggleAgent(\"web-developer\");\n\n const { selectedAgents } = useWizardStore.getState();\n expect(selectedAgents).toContain(\"web-developer\");\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 } = useWizardStore.getState();\n expect(selectedAgents).not.toContain(\"web-developer\");\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).toEqual([\"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).toEqual([]);\n });\n });\n\n describe(\"agentConfigs and scope management\", () => {\n it(\"should have empty agentConfigs initially\", () => {\n const { agentConfigs } = useWizardStore.getState();\n expect(agentConfigs).toEqual([]);\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).toEqual([{ name: \"web-developer\", scope: \"global\" }]);\n });\n\n it(\"should remove from agentConfigs when agent is toggled off\", () => {\n const store = useWizardStore.getState();\n store.toggleAgent(\"web-developer\");\n store.toggleAgent(\"web-developer\");\n\n const { agentConfigs } = useWizardStore.getState();\n expect(agentConfigs).toEqual([]);\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).toEqual([{ name: \"web-developer\", scope: \"project\" }]);\n\n store.toggleAgentScope(\"web-developer\");\n expect(useWizardStore.getState().agentConfigs).toEqual([\n { name: \"web-developer\", scope: \"global\" },\n ]);\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 not toggle locked agents\", () => {\n useWizardStore.setState({ lockedAgentNames: [\"web-developer\"] as AgentName[] });\n const store = useWizardStore.getState();\n store.toggleAgent(\"web-developer\");\n\n const { selectedAgents, agentConfigs } = useWizardStore.getState();\n expect(selectedAgents).toEqual([]);\n expect(agentConfigs).toEqual([]);\n });\n\n it(\"should not toggle scope of locked agents\", () => {\n const store = useWizardStore.getState();\n store.toggleAgent(\"web-developer\");\n useWizardStore.setState({ lockedAgentNames: [\"web-developer\"] as AgentName[] });\n\n store.toggleAgentScope(\"web-developer\");\n const { agentConfigs } = useWizardStore.getState();\n expect(agentConfigs).toEqual([{ name: \"web-developer\", scope: \"global\" }]);\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 } = useWizardStore.getState();\n expect(selectedAgents).toContain(\"web-developer\");\n expect(selectedAgents).toContain(\"web-reviewer\");\n expect(selectedAgents).toContain(\"web-researcher\");\n expect(selectedAgents).toContain(\"web-tester\");\n expect(selectedAgents).toContain(\"web-pm\");\n expect(selectedAgents).toContain(\"web-architecture\");\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 } = useWizardStore.getState();\n expect(selectedAgents).toContain(\"api-developer\");\n expect(selectedAgents).toContain(\"api-reviewer\");\n expect(selectedAgents).toContain(\"api-researcher\");\n expect(selectedAgents).not.toContain(\"web-developer\");\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 } = useWizardStore.getState();\n expect(selectedAgents).toContain(\"cli-developer\");\n expect(selectedAgents).toContain(\"cli-tester\");\n expect(selectedAgents).toContain(\"cli-reviewer\");\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).not.toContain(\"agent-summoner\");\n expect(selectedAgents).not.toContain(\"skill-summoner\");\n expect(selectedAgents).not.toContain(\"documentor\");\n expect(selectedAgents).not.toContain(\"pattern-scout\");\n expect(selectedAgents).not.toContain(\"web-pattern-critique\");\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).toEqual([]);\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).toEqual(sorted);\n });\n\n it(\"should replace previous agent selection\", () => {\n const store = useWizardStore.getState();\n store.toggleAgent(\"documentor\");\n store.toggleDomain(\"web\");\n store.preselectAgentsFromDomains();\n\n const { selectedAgents } = useWizardStore.getState();\n // preselectAgentsFromDomains replaces the array entirely\n expect(selectedAgents).not.toContain(\"documentor\");\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(\"build\");\n store.setStep(\"sources\");\n store.setStep(\"agents\");\n store.setStep(\"confirm\");\n\n const { completedSteps } = store.getStepProgress();\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(\"build\");\n store.setStep(\"sources\");\n store.setStep(\"agents\");\n\n const { completedSteps } = store.getStepProgress();\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 'local' when all skills are set to local\", () => {\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\", \"local\");\n store.setSourceSelection(\"api-framework-hono\", \"local\");\n\n const result = store.deriveInstallMode();\n expect(result).toBe(\"local\");\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\", \"local\");\n store.setSourceSelection(\"api-framework-hono\", \"agents-inc\");\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(\"local\");\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\", \"local\");\n\n const result = store.deriveInstallMode();\n expect(result).toBe(\"local\");\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"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agents-inc/cli",
3
- "version": "0.74.7",
3
+ "version": "0.74.8",
4
4
  "description": "CLI for managing Agents Inc. skills, stacks, and agents for Claude Code",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cli/commands/init.tsx","../src/cli/lib/permission-checker.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { Flags } from \"@oclif/core\";\nimport { render, Box, Text, useApp } from \"ink\";\nimport fs from \"fs\";\nimport os from \"os\";\nimport path from \"path\";\n\nimport { BaseCommand } from \"../base-command.js\";\nimport { Wizard, type WizardResultV2 } from \"../components/wizard/wizard.js\";\nimport {\n loadSkillsMatrixFromSource,\n getMarketplaceLabel,\n fetchMarketplace,\n type SourceLoadResult,\n} from \"../lib/loading/index.js\";\nimport {\n installLocal,\n installPluginConfig,\n detectGlobalInstallation,\n detectProjectInstallation,\n deriveInstallMode,\n} from \"../lib/installation/index.js\";\nimport { checkPermissions } from \"../lib/permission-checker.js\";\nimport { getInstallationInfo } from \"../lib/plugins/plugin-info.js\";\nimport {\n claudePluginInstall,\n claudePluginMarketplaceExists,\n claudePluginMarketplaceAdd,\n} from \"../utils/exec.js\";\nimport {\n ASCII_LOGO,\n CLAUDE_SRC_DIR,\n CLI_BIN_NAME,\n DEFAULT_BRANDING,\n GLOBAL_INSTALL_ROOT,\n} from \"../consts.js\";\nimport { SelectList, type SelectListItem } from \"../components/common/select-list.js\";\nimport {\n KEY_LABEL_ARROWS_VERT,\n KEY_LABEL_ENTER,\n KEY_LABEL_ESC,\n} from \"../components/wizard/hotkeys.js\";\nimport { getErrorMessage } from \"../utils/errors.js\";\nimport { EXIT_CODES } from \"../lib/exit-codes.js\";\nimport { getSkillById } from \"../lib/matrix/matrix-provider\";\nimport { loadProjectConfig } from \"../lib/configuration/project-config.js\";\nimport {\n enableBuffering,\n drainBuffer,\n disableBuffering,\n type StartupMessage,\n} from \"../utils/logger.js\";\nimport { SUCCESS_MESSAGES, STATUS_MESSAGES } from \"../utils/messages.js\";\nimport { ensureBlankGlobalConfig } from \"../lib/configuration/config-writer.js\";\n\n/** Clears the visible terminal area so the next render starts clean. */\nfunction clearTerminalOutput(): void {\n process.stdout.write(\"\\x1b[2J\\x1b[H\");\n}\n\nconst DASHBOARD_OPTIONS: SelectListItem<string>[] = [\n { label: \"Edit\", value: \"edit\" },\n { label: \"Compile\", value: \"compile\" },\n { label: \"Doctor\", value: \"doctor\" },\n { label: \"List\", value: \"list\" },\n];\n\ntype DashboardProps = {\n onSelect: (command: string) => void;\n onCancel: () => void;\n};\n\nconst Dashboard: React.FC<DashboardProps> = ({ onSelect, onCancel }) => {\n const { exit } = useApp();\n\n return (\n <Box flexDirection=\"column\">\n <Text bold>{DEFAULT_BRANDING.NAME}</Text>\n <Text> </Text>\n <SelectList\n items={DASHBOARD_OPTIONS}\n onSelect={(command) => {\n onSelect(command);\n exit();\n }}\n onCancel={() => {\n onCancel();\n exit();\n }}\n />\n <Text> </Text>\n <Text dimColor>\n {\" \"}\n {KEY_LABEL_ARROWS_VERT} Navigate {\" \"}\n {KEY_LABEL_ENTER} Confirm {\" \"}\n {KEY_LABEL_ESC} Exit\n </Text>\n </Box>\n );\n};\n\ntype GlobalConfigChoice = \"edit-global\" | \"create-project\";\n\nconst GLOBAL_CONFIG_OPTIONS: SelectListItem<GlobalConfigChoice>[] = [\n { label: \"Edit global installation\", value: \"edit-global\" },\n { label: \"Create new project installation\", value: \"create-project\" },\n];\n\ntype GlobalConfigPromptProps = {\n globalConfigDir: string;\n onSelect: (choice: GlobalConfigChoice) => void;\n onCancel: () => void;\n};\n\nconst GlobalConfigPrompt: React.FC<GlobalConfigPromptProps> = ({\n globalConfigDir,\n onSelect,\n onCancel,\n}) => {\n const { exit } = useApp();\n\n return (\n <Box flexDirection=\"column\">\n <Text>A global installation was found at {globalConfigDir}</Text>\n <Text> </Text>\n <SelectList\n items={GLOBAL_CONFIG_OPTIONS}\n onSelect={(choice) => {\n onSelect(choice);\n exit();\n }}\n onCancel={() => {\n onCancel();\n exit();\n }}\n />\n <Text> </Text>\n <Text dimColor>\n {\" \"}\n {KEY_LABEL_ARROWS_VERT} Navigate {\" \"}\n {KEY_LABEL_ENTER} Confirm {\" \"}\n {KEY_LABEL_ESC} Exit\n </Text>\n </Box>\n );\n};\n\nexport type DashboardData = {\n skillCount: number;\n agentCount: number;\n mode: string;\n source?: string;\n};\n\n/** Gathers dashboard data from the installation and project config. */\nexport async function getDashboardData(projectDir: string): Promise<DashboardData> {\n const [info, loaded] = await Promise.all([getInstallationInfo(), loadProjectConfig(projectDir)]);\n\n // Skill count from config (canonical source of truth for installed skills)\n const skillCount = loaded?.config?.skills?.length ?? 0;\n // Agent count from filesystem (compiled .md files in agents dir)\n const agentCount = info?.agentCount ?? 0;\n const mode =\n info?.mode ?? (loaded?.config?.skills ? deriveInstallMode(loaded.config.skills) : \"local\");\n const source = loaded?.config?.source;\n\n return { skillCount, agentCount, mode, source };\n}\n\n/** Formats the dashboard summary as plain text lines (for non-interactive/test output). */\nexport function formatDashboardText(data: DashboardData): string {\n const modeLabel = data.mode === \"plugin\" ? \"Plugin\" : \"Local\";\n const lines = [\n DEFAULT_BRANDING.NAME,\n \"\",\n ` Skills: ${data.skillCount} installed`,\n ` Agents: ${data.agentCount} compiled`,\n ` Mode: ${modeLabel}`,\n ];\n if (data.source) {\n lines.push(` Source: ${data.source}`);\n }\n lines.push(\"\");\n lines.push(` [Edit] [Compile] [Doctor] [List]`);\n return lines.join(\"\\n\");\n}\n\n/**\n * Shows the project dashboard and returns the selected command (or null if cancelled).\n * In non-interactive environments (no TTY), prints the summary text and returns null.\n */\nexport async function showDashboard(\n projectDir: string,\n log?: (message: string) => void,\n): Promise<string | null> {\n const data = await getDashboardData(projectDir);\n\n // Non-interactive: print text summary and exit (CI, piped, tests)\n if (!process.stdin.isTTY) {\n const output = log ?? console.log;\n output(formatDashboardText(data));\n return null;\n }\n\n let selectedCommand: string | null = null;\n\n const { waitUntilExit } = render(\n <Dashboard\n onSelect={(command) => {\n selectedCommand = command;\n }}\n onCancel={() => {\n selectedCommand = null;\n }}\n />,\n );\n\n await waitUntilExit();\n clearTerminalOutput();\n\n return selectedCommand;\n}\n\nexport default class Init extends BaseCommand {\n static summary = `Initialize ${DEFAULT_BRANDING.NAME} in this project`;\n static description =\n \"Interactive wizard to set up skills and agents. Supports Plugin Mode (native install) and Local Mode (copy to .claude/).\";\n\n static examples = [\n {\n description: \"Start the setup wizard\",\n command: \"<%= config.bin %> <%= command.id %>\",\n },\n {\n description: \"Initialize from a custom marketplace\",\n command: \"<%= config.bin %> <%= command.id %> --source github:org/marketplace\",\n },\n {\n description: \"Force refresh skills from remote\",\n command: \"<%= config.bin %> <%= command.id %> --refresh\",\n },\n ];\n\n static flags = {\n ...BaseCommand.baseFlags,\n refresh: Flags.boolean({\n description: \"Force refresh from remote source\",\n default: false,\n }),\n };\n\n async run(): Promise<void> {\n const { flags } = await this.parse(Init);\n const projectDir = process.cwd();\n\n // For \"already initialized\" check, only look at the target directory (no global fallback)\n const existingInstallation = await detectProjectInstallation(projectDir);\n\n if (existingInstallation) {\n const selectedCommand = await showDashboard(projectDir, (msg) => this.log(msg));\n if (selectedCommand) {\n await this.config.runCommand(selectedCommand);\n }\n return;\n }\n\n // No project config exists: check if a global installation exists\n const globalInstallation = await detectGlobalInstallation();\n if (globalInstallation) {\n const globalConfigDir = path.join(os.homedir(), CLAUDE_SRC_DIR);\n\n // Non-interactive: skip prompt and fall through to wizard\n if (process.stdin.isTTY) {\n let globalChoice: GlobalConfigChoice | null = null;\n\n const { waitUntilExit: waitForPrompt } = render(\n <GlobalConfigPrompt\n globalConfigDir={globalConfigDir}\n onSelect={(choice) => {\n globalChoice = choice;\n }}\n onCancel={() => {\n globalChoice = null;\n }}\n />,\n );\n\n await waitForPrompt();\n clearTerminalOutput();\n\n if (globalChoice === \"edit-global\") {\n const editArgs: string[] = [];\n if (flags.source) {\n editArgs.push(\"--source\", flags.source);\n }\n if (flags.refresh) {\n editArgs.push(\"--refresh\");\n }\n await this.config.runCommand(\"edit\", editArgs);\n return;\n }\n\n // User cancelled (Esc)\n if (globalChoice === null) {\n return;\n }\n\n // \"create-project\" falls through to wizard below\n }\n }\n\n // Auto-create blank global config on first init from a project directory.\n // This ensures the project config can always import from global.\n // Resolve both paths through realpathSync — on macOS /var is a symlink to\n // /private/var, so os.homedir() and process.cwd() can return different\n // prefixes for the same directory.\n const isGlobalRoot = fs.realpathSync(projectDir) === fs.realpathSync(GLOBAL_INSTALL_ROOT);\n if (!isGlobalRoot) {\n const created = await ensureBlankGlobalConfig();\n if (created) {\n this.log(\"Created blank global config at ~/\" + CLAUDE_SRC_DIR);\n }\n }\n\n enableBuffering();\n\n let sourceResult: SourceLoadResult;\n let startupMessages: StartupMessage[] = [];\n try {\n sourceResult = await loadSkillsMatrixFromSource({\n sourceFlag: flags.source,\n projectDir,\n forceRefresh: flags.refresh,\n });\n } catch (error) {\n disableBuffering();\n this.error(getErrorMessage(error), {\n exit: EXIT_CODES.ERROR,\n });\n }\n\n startupMessages = drainBuffer();\n disableBuffering();\n\n let wizardResult: WizardResultV2 | null = null;\n\n const marketplaceLabel = getMarketplaceLabel(sourceResult);\n const { waitUntilExit } = render(\n <Wizard\n version={this.config.version}\n marketplaceLabel={marketplaceLabel}\n logo={ASCII_LOGO}\n projectDir={projectDir}\n startupMessages={startupMessages}\n onComplete={(result) => {\n wizardResult = result;\n }}\n onCancel={() => {\n this.log(\"Setup cancelled\");\n }}\n />,\n );\n\n await waitUntilExit();\n\n // TypeScript can't track that onComplete callback mutates wizardResult before waitUntilExit resolves\n const result = wizardResult as WizardResultV2 | null;\n\n if (!result || result.cancelled) {\n this.exit(EXIT_CODES.CANCELLED);\n }\n\n if (result.skills.length === 0) {\n this.error(\"No skills selected\", { exit: EXIT_CODES.ERROR });\n }\n\n await this.handleInstallation(result, sourceResult, flags);\n }\n\n private async handleInstallation(\n result: WizardResultV2,\n sourceResult: SourceLoadResult,\n flags: { source?: string; refresh: boolean },\n ): Promise<void> {\n const projectDir = process.cwd();\n const installMode = deriveInstallMode(result.skills);\n\n this.log(\"\\n\");\n this.log(`Selected ${result.skills.length} skills`);\n this.log(\n `Install mode: ${installMode === \"plugin\" ? \"Plugin (native install)\" : \"Local (copy to .claude/skills/)\"}`,\n );\n\n if (installMode === \"plugin\") {\n await this.installIndividualPlugins(result, sourceResult, flags, projectDir);\n return;\n }\n\n await this.installLocalMode(result, sourceResult, flags, projectDir);\n }\n\n private async installIndividualPlugins(\n result: WizardResultV2,\n sourceResult: SourceLoadResult,\n flags: { source?: string },\n projectDir: string,\n ): Promise<void> {\n // Lazily resolve marketplace name if not already set (e.g. BUILT_IN_MATRIX skips fetch)\n if (!sourceResult.marketplace) {\n try {\n const marketplaceResult = await fetchMarketplace(sourceResult.sourceConfig.source, {});\n sourceResult.marketplace = marketplaceResult.marketplace.name;\n } catch {\n this.warn(\"Could not resolve marketplace. Falling back to Local Mode...\");\n await this.installLocalMode(result, sourceResult, flags, projectDir);\n return;\n }\n }\n\n // After lazy resolution, marketplace is guaranteed to be set (or we returned above)\n const marketplace = sourceResult.marketplace;\n\n const marketplaceExists = await claudePluginMarketplaceExists(marketplace);\n\n if (!marketplaceExists) {\n this.log(`Registering marketplace \"${marketplace}\"...`);\n try {\n const marketplaceSource = sourceResult.sourceConfig.source.replace(/^github:/, \"\");\n await claudePluginMarketplaceAdd(marketplaceSource);\n this.log(`Registered marketplace: ${marketplace}`);\n } catch (error) {\n this.error(getErrorMessage(error), {\n exit: EXIT_CODES.ERROR,\n });\n }\n }\n\n this.log(\"Installing skill plugins...\");\n for (const skill of result.skills.filter((s) => s.source !== \"local\")) {\n const pluginRef = `${skill.id}@${marketplace}`;\n const pluginScope = skill.scope === \"global\" ? \"user\" : \"project\";\n try {\n await claudePluginInstall(pluginRef, pluginScope, projectDir);\n this.log(` Installed ${pluginRef}`);\n } catch (error) {\n this.error(`Failed to install plugin ${pluginRef}: ${getErrorMessage(error)}`, {\n exit: EXIT_CODES.ERROR,\n });\n }\n }\n\n const pluginSkillCount = result.skills.filter((s) => s.source !== \"local\").length;\n this.log(`Installed ${pluginSkillCount} skill plugins\\n`);\n\n this.log(\"Generating configuration...\");\n try {\n const configResult = await installPluginConfig({\n wizardResult: result,\n sourceResult,\n projectDir,\n sourceFlag: flags.source,\n });\n\n if (configResult.wasMerged) {\n this.log(`Merged with existing config at ${configResult.mergedConfigPath}`);\n }\n\n this.log(`Configuration saved (${configResult.config.agents.length} agents)\\n`);\n this.log(STATUS_MESSAGES.COMPILING_AGENTS);\n this.log(`Compiled ${configResult.compiledAgents.length} agents to .claude/agents/\\n`);\n\n this.log(`${SUCCESS_MESSAGES.INIT_SUCCESS}\\n`);\n this.log(\"Agents compiled to:\");\n this.log(` ${configResult.agentsDir}`);\n for (const agentName of configResult.compiledAgents) {\n this.log(` ${agentName}.md`);\n }\n this.log(\"\");\n this.log(\"Configuration:\");\n this.log(` ${configResult.configPath}`);\n this.log(\"\");\n this.log(\"To customize agent-skill assignments:\");\n this.log(` 1. Edit .claude-src/config.ts`);\n this.log(` 2. Run '${CLI_BIN_NAME} compile' to regenerate agents`);\n this.log(\"\");\n\n const permissionWarning = await checkPermissions(projectDir);\n if (permissionWarning) {\n const { waitUntilExit } = render(permissionWarning);\n await waitUntilExit();\n }\n } catch (error) {\n this.handleError(error);\n }\n }\n\n private async installLocalMode(\n result: WizardResultV2,\n sourceResult: SourceLoadResult,\n flags: { source?: string },\n projectDir: string,\n ): Promise<void> {\n this.log(\"Copying skills to local directory...\");\n try {\n const installResult = await installLocal({\n wizardResult: result,\n sourceResult,\n projectDir,\n sourceFlag: flags.source,\n });\n\n this.log(`Copied ${installResult.copiedSkills.length} skills to .claude/skills/\\n`);\n this.log(\"Generating configuration...\");\n\n if (installResult.wasMerged) {\n this.log(`Merged with existing config at ${installResult.mergedConfigPath}`);\n }\n\n this.log(`Configuration saved (${installResult.config.agents.length} agents)\\n`);\n this.log(STATUS_MESSAGES.COMPILING_AGENTS);\n this.log(`Compiled ${installResult.compiledAgents.length} agents to .claude/agents/\\n`);\n\n this.log(`${SUCCESS_MESSAGES.INIT_SUCCESS}\\n`);\n this.log(\"Skills copied to:\");\n this.log(` ${installResult.skillsDir}`);\n for (const copiedSkill of installResult.copiedSkills) {\n const displayName = getSkillById(copiedSkill.skillId).displayName;\n this.log(` ${displayName}/`);\n }\n this.log(\"\");\n this.log(\"Agents compiled to:\");\n this.log(` ${installResult.agentsDir}`);\n for (const agentName of installResult.compiledAgents) {\n this.log(` ${agentName}.md`);\n }\n this.log(\"\");\n this.log(\"Configuration:\");\n this.log(` ${installResult.configPath}`);\n this.log(\"\");\n this.log(\"To customize agent-skill assignments:\");\n this.log(` 1. Edit .claude-src/config.ts`);\n this.log(` 2. Run '${CLI_BIN_NAME} compile' to regenerate agents`);\n this.log(\"\");\n\n const permissionWarning = await checkPermissions(projectDir);\n if (permissionWarning) {\n const { waitUntilExit } = render(permissionWarning);\n await waitUntilExit();\n }\n } catch (error) {\n this.handleError(error);\n }\n }\n}\n","import React from \"react\";\n\nimport { Text, Box } from \"ink\";\nimport path from \"path\";\n\nimport { CLAUDE_DIR, CLI_COLORS, MAX_CONFIG_FILE_SIZE } from \"../consts\";\nimport { fileExists, readFileSafe } from \"../utils/fs\";\nimport { warn } from \"../utils/logger\";\nimport { settingsFileSchema, warnUnknownFields } from \"./schemas\";\n\ntype PermissionConfig = {\n allow?: string[];\n deny?: string[];\n};\n\ntype SettingsFile = {\n permissions?: PermissionConfig;\n};\n\nexport async function checkPermissions(projectRoot: string): Promise<React.ReactElement | null> {\n const settingsPath = path.join(projectRoot, CLAUDE_DIR, \"settings.json\");\n const localSettingsPath = path.join(projectRoot, CLAUDE_DIR, \"settings.local.json\");\n\n let permissions: PermissionConfig | undefined;\n\n for (const filePath of [localSettingsPath, settingsPath]) {\n if (await fileExists(filePath)) {\n try {\n const content = await readFileSafe(filePath, MAX_CONFIG_FILE_SIZE);\n const raw = JSON.parse(content);\n if (typeof raw === \"object\" && raw !== null && !Array.isArray(raw)) {\n // Known Claude CLI settings.json fields (permissions is ours; the rest are managed by Claude CLI)\n const EXPECTED_SETTINGS_KEYS = [\n \"permissions\",\n \"enabledPlugins\",\n \"env\",\n \"allowedTools\",\n \"customInstructions\",\n \"defaultModel\",\n ] as const;\n warnUnknownFields(\n raw as Record<string, unknown>,\n EXPECTED_SETTINGS_KEYS,\n `settings file '${filePath}'`,\n );\n }\n const result = settingsFileSchema.safeParse(raw);\n const parsed: SettingsFile = result.success ? (result.data as SettingsFile) : {};\n if (parsed.permissions) {\n permissions = parsed.permissions;\n break;\n }\n } catch {\n warn(`Malformed settings file at '${filePath}' — skipping`);\n }\n }\n }\n\n if (!permissions) {\n return (\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor={CLI_COLORS.WARNING} padding={1}>\n <Text bold color={CLI_COLORS.WARNING}>\n Permission Notice\n </Text>\n <Text>No permissions configured in .claude/settings.json</Text>\n <Text>Agents will prompt for approval on each tool use.</Text>\n <Text> </Text>\n <Text>For autonomous operation, add to .claude/settings.json:</Text>\n <Text> </Text>\n <Text color=\"dim\">{\"{\"}</Text>\n <Text color=\"dim\">{' \"permissions\": {'}</Text>\n <Text color=\"dim\">{' \"allow\": ['}</Text>\n <Text color=\"dim\">{' \"Read(*)\",'}</Text>\n <Text color=\"dim\">{' \"Bash(git *)\",'}</Text>\n <Text color=\"dim\">{' \"Bash(bun *)\"'}</Text>\n <Text color=\"dim\">{\" ]\"}</Text>\n <Text color=\"dim\">{\" }\"}</Text>\n <Text color=\"dim\">{\"}\"}</Text>\n </Box>\n );\n }\n\n const hasRestrictiveBash = permissions.deny?.some(\n (rule) => rule === \"Bash(*)\" || rule === \"Bash\",\n );\n const hasNoAllows = !permissions.allow || permissions.allow.length === 0;\n\n if (hasRestrictiveBash || hasNoAllows) {\n return (\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor={CLI_COLORS.WARNING} padding={1}>\n <Text bold color={CLI_COLORS.WARNING}>\n Permission Warnings\n </Text>\n {hasRestrictiveBash && (\n <Text>\n ⚠ Bash is denied in permissions. Some agents require Bash for git, testing, and build\n commands.\n </Text>\n )}\n {hasNoAllows && (\n <Text>⚠ No allow rules configured. Agents will prompt for each tool use.</Text>\n )}\n </Box>\n );\n }\n\n return null;\n}\n"],"mappings":"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","names":["Box","Text","path","jsx","jsxs","Box","Text","path","result"]}