@claude-collective/cli 0.2.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. package/CHANGELOG.md +178 -0
  2. package/README.md +1 -1
  3. package/dist/chunk-3HBTELJN.js +114 -0
  4. package/dist/chunk-3HBTELJN.js.map +1 -0
  5. package/dist/chunk-3ZCB5K33.js +54 -0
  6. package/dist/chunk-3ZCB5K33.js.map +1 -0
  7. package/dist/chunk-66UDJBF6.js +96 -0
  8. package/dist/chunk-66UDJBF6.js.map +1 -0
  9. package/dist/chunk-6LS7XO3H.js +31 -0
  10. package/dist/chunk-6LS7XO3H.js.map +1 -0
  11. package/dist/chunk-A3J6IAXK.js +57 -0
  12. package/dist/chunk-A3J6IAXK.js.map +1 -0
  13. package/dist/chunk-A65SBAAJ.js +69 -0
  14. package/dist/chunk-A65SBAAJ.js.map +1 -0
  15. package/dist/chunk-ALEPJ6YN.js +80 -0
  16. package/dist/chunk-ALEPJ6YN.js.map +1 -0
  17. package/dist/chunk-C4ZTIYFR.js +84 -0
  18. package/dist/chunk-C4ZTIYFR.js.map +1 -0
  19. package/dist/chunk-CIY5UBRB.js +453 -0
  20. package/dist/chunk-CIY5UBRB.js.map +1 -0
  21. package/dist/chunk-DHET7RCE.js +50 -0
  22. package/dist/chunk-DHET7RCE.js.map +1 -0
  23. package/dist/chunk-DHFFRMF6.js +31 -0
  24. package/dist/chunk-DHFFRMF6.js.map +1 -0
  25. package/dist/chunk-DKGL77IY.js +307 -0
  26. package/dist/chunk-DKGL77IY.js.map +1 -0
  27. package/dist/chunk-ED73HCW2.js +315 -0
  28. package/dist/chunk-ED73HCW2.js.map +1 -0
  29. package/dist/chunk-FNOYEXUE.js +308 -0
  30. package/dist/chunk-FNOYEXUE.js.map +1 -0
  31. package/dist/chunk-G2FBJOZG.js +141 -0
  32. package/dist/chunk-G2FBJOZG.js.map +1 -0
  33. package/dist/chunk-HNDT5QRB.js +120 -0
  34. package/dist/chunk-HNDT5QRB.js.map +1 -0
  35. package/dist/chunk-K7PTOVX4.js +158 -0
  36. package/dist/chunk-K7PTOVX4.js.map +1 -0
  37. package/dist/chunk-LQTST4WY.js +91 -0
  38. package/dist/chunk-LQTST4WY.js.map +1 -0
  39. package/dist/chunk-LVKRVFYR.js +54 -0
  40. package/dist/chunk-LVKRVFYR.js.map +1 -0
  41. package/dist/chunk-M7YCPFIX.js +108 -0
  42. package/dist/chunk-M7YCPFIX.js.map +1 -0
  43. package/dist/chunk-MJSFR562.js +57 -0
  44. package/dist/chunk-MJSFR562.js.map +1 -0
  45. package/dist/chunk-MMDXNZPF.js +69 -0
  46. package/dist/chunk-MMDXNZPF.js.map +1 -0
  47. package/dist/chunk-MYAVQ23U.js +356 -0
  48. package/dist/chunk-MYAVQ23U.js.map +1 -0
  49. package/dist/chunk-NGBFJJ7Q.js +124 -0
  50. package/dist/chunk-NGBFJJ7Q.js.map +1 -0
  51. package/dist/chunk-OLBOTK3O.js +64 -0
  52. package/dist/chunk-OLBOTK3O.js.map +1 -0
  53. package/dist/chunk-PPNTD5LO.js +330 -0
  54. package/dist/chunk-PPNTD5LO.js.map +1 -0
  55. package/dist/chunk-Q2LH2DAB.js +392 -0
  56. package/dist/chunk-Q2LH2DAB.js.map +1 -0
  57. package/dist/chunk-Q6DR5QUH.js +547 -0
  58. package/dist/chunk-Q6DR5QUH.js.map +1 -0
  59. package/dist/chunk-QESUUPOE.js +241 -0
  60. package/dist/chunk-QESUUPOE.js.map +1 -0
  61. package/dist/chunk-QGGSLMO3.js +607 -0
  62. package/dist/chunk-QGGSLMO3.js.map +1 -0
  63. package/dist/chunk-SEBPPFUW.js +478 -0
  64. package/dist/chunk-SEBPPFUW.js.map +1 -0
  65. package/dist/chunk-SYQ7R2JO.js +95 -0
  66. package/dist/chunk-SYQ7R2JO.js.map +1 -0
  67. package/dist/chunk-TOPAIL5W.js +22 -0
  68. package/dist/chunk-TOPAIL5W.js.map +1 -0
  69. package/dist/chunk-U4VYHKPM.js +110 -0
  70. package/dist/chunk-U4VYHKPM.js.map +1 -0
  71. package/dist/chunk-UOWHJ6BE.js +83 -0
  72. package/dist/chunk-UOWHJ6BE.js.map +1 -0
  73. package/dist/chunk-XKEG3SCV.js +86 -0
  74. package/dist/chunk-XKEG3SCV.js.map +1 -0
  75. package/dist/chunk-XY3XDVMI.js +15599 -0
  76. package/dist/chunk-XY3XDVMI.js.map +1 -0
  77. package/dist/chunk-Y3V43XCU.js +76 -0
  78. package/dist/chunk-Y3V43XCU.js.map +1 -0
  79. package/dist/chunk-YKXBGCFD.js +129 -0
  80. package/dist/chunk-YKXBGCFD.js.map +1 -0
  81. package/dist/cli-v2/defaults/agent-mappings.yaml +185 -0
  82. package/dist/commands/build/marketplace.js +254 -0
  83. package/dist/commands/build/marketplace.js.map +1 -0
  84. package/dist/commands/build/plugins.js +324 -0
  85. package/dist/commands/build/plugins.js.map +1 -0
  86. package/dist/commands/build/stack.js +169 -0
  87. package/dist/commands/build/stack.js.map +1 -0
  88. package/dist/commands/compile.js +461 -0
  89. package/dist/commands/compile.js.map +1 -0
  90. package/dist/commands/config/get.js +60 -0
  91. package/dist/commands/config/get.js.map +1 -0
  92. package/dist/commands/config/index.js +22 -0
  93. package/dist/commands/config/index.js.map +1 -0
  94. package/dist/commands/config/path.js +35 -0
  95. package/dist/commands/config/path.js.map +1 -0
  96. package/dist/commands/config/set-project.js +61 -0
  97. package/dist/commands/config/set-project.js.map +1 -0
  98. package/dist/commands/config/set.js +60 -0
  99. package/dist/commands/config/set.js.map +1 -0
  100. package/dist/commands/config/show.js +13 -0
  101. package/dist/commands/config/show.js.map +1 -0
  102. package/dist/commands/config/unset-project.js +57 -0
  103. package/dist/commands/config/unset-project.js.map +1 -0
  104. package/dist/commands/config/unset.js +56 -0
  105. package/dist/commands/config/unset.js.map +1 -0
  106. package/dist/commands/diff.js +755 -0
  107. package/dist/commands/diff.js.map +1 -0
  108. package/dist/commands/doctor.js +413 -0
  109. package/dist/commands/doctor.js.map +1 -0
  110. package/dist/commands/edit.js +254 -0
  111. package/dist/commands/edit.js.map +1 -0
  112. package/dist/commands/eject.js +208 -0
  113. package/dist/commands/eject.js.map +1 -0
  114. package/dist/commands/info.js +205 -0
  115. package/dist/commands/info.js.map +1 -0
  116. package/dist/commands/init.js +915 -0
  117. package/dist/commands/init.js.map +1 -0
  118. package/dist/commands/list.js +44 -0
  119. package/dist/commands/list.js.map +1 -0
  120. package/dist/commands/new/agent.js +230 -0
  121. package/dist/commands/new/agent.js.map +1 -0
  122. package/dist/commands/new/skill.js +204 -0
  123. package/dist/commands/new/skill.js.map +1 -0
  124. package/dist/commands/outdated.js +242 -0
  125. package/dist/commands/outdated.js.map +1 -0
  126. package/dist/commands/search.js +115 -0
  127. package/dist/commands/search.js.map +1 -0
  128. package/dist/commands/test-imports.js +92 -0
  129. package/dist/commands/test-imports.js.map +1 -0
  130. package/dist/commands/uninstall.js +309 -0
  131. package/dist/commands/uninstall.js.map +1 -0
  132. package/dist/commands/update.js +428 -0
  133. package/dist/commands/update.js.map +1 -0
  134. package/dist/commands/validate.js +375 -0
  135. package/dist/commands/validate.js.map +1 -0
  136. package/dist/commands/version/bump.js +95 -0
  137. package/dist/commands/version/bump.js.map +1 -0
  138. package/dist/commands/version/index.js +70 -0
  139. package/dist/commands/version/index.js.map +1 -0
  140. package/dist/commands/version/set.js +101 -0
  141. package/dist/commands/version/set.js.map +1 -0
  142. package/dist/commands/version/show.js +70 -0
  143. package/dist/commands/version/show.js.map +1 -0
  144. package/dist/components/common/confirm.js +9 -0
  145. package/dist/components/common/confirm.js.map +1 -0
  146. package/dist/components/common/message.js +24 -0
  147. package/dist/components/common/message.js.map +1 -0
  148. package/dist/components/common/spinner.js +14 -0
  149. package/dist/components/common/spinner.js.map +1 -0
  150. package/dist/components/wizard/category-grid.js +9 -0
  151. package/dist/components/wizard/category-grid.js.map +1 -0
  152. package/dist/components/wizard/category-grid.test.js +728 -0
  153. package/dist/components/wizard/category-grid.test.js.map +1 -0
  154. package/dist/components/wizard/section-progress.js +9 -0
  155. package/dist/components/wizard/section-progress.js.map +1 -0
  156. package/dist/components/wizard/section-progress.test.js +281 -0
  157. package/dist/components/wizard/section-progress.test.js.map +1 -0
  158. package/dist/components/wizard/step-approach.js +11 -0
  159. package/dist/components/wizard/step-approach.js.map +1 -0
  160. package/dist/components/wizard/step-build.js +15 -0
  161. package/dist/components/wizard/step-build.js.map +1 -0
  162. package/dist/components/wizard/step-build.test.js +729 -0
  163. package/dist/components/wizard/step-build.test.js.map +1 -0
  164. package/dist/components/wizard/step-confirm.js +9 -0
  165. package/dist/components/wizard/step-confirm.js.map +1 -0
  166. package/dist/components/wizard/step-refine.js +9 -0
  167. package/dist/components/wizard/step-refine.js.map +1 -0
  168. package/dist/components/wizard/step-refine.test.js +235 -0
  169. package/dist/components/wizard/step-refine.test.js.map +1 -0
  170. package/dist/components/wizard/step-stack-options.js +11 -0
  171. package/dist/components/wizard/step-stack-options.js.map +1 -0
  172. package/dist/components/wizard/step-stack.js +11 -0
  173. package/dist/components/wizard/step-stack.js.map +1 -0
  174. package/dist/components/wizard/wizard-tabs.js +11 -0
  175. package/dist/components/wizard/wizard-tabs.js.map +1 -0
  176. package/dist/components/wizard/wizard.js +20 -0
  177. package/dist/components/wizard/wizard.js.map +1 -0
  178. package/dist/hooks/init.js +41 -0
  179. package/dist/hooks/init.js.map +1 -0
  180. package/dist/index.js +10 -0
  181. package/dist/index.js.map +1 -0
  182. package/dist/magic-string.es-RGXYGAW3.js +1316 -0
  183. package/dist/magic-string.es-RGXYGAW3.js.map +1 -0
  184. package/dist/stores/wizard-store.js +10 -0
  185. package/dist/stores/wizard-store.js.map +1 -0
  186. package/dist/stores/wizard-store.test.js +405 -0
  187. package/dist/stores/wizard-store.test.js.map +1 -0
  188. package/package.json +44 -25
  189. package/dist/cli/index.js +0 -6314
  190. package/dist/cli/index.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/cli-v2/stores/wizard-store.test.ts"],"sourcesContent":["/**\n * Unit tests for the wizard store (Zustand state management).\n *\n * Tests state transitions without UI rendering for fast feedback.\n */\nimport { describe, it, expect, beforeEach } from \"vitest\";\nimport { useWizardStore } from \"./wizard-store\";\nimport { DEFAULT_PRESELECTED_SKILLS } from \"../consts\";\n\n// =============================================================================\n// Tests\n// =============================================================================\n\ndescribe(\"WizardStore\", () => {\n beforeEach(() => {\n // Reset store to initial state before each test\n useWizardStore.getState().reset();\n });\n\n // ===========================================================================\n // Initial State\n // ===========================================================================\n\n describe(\"initial state\", () => {\n it(\"should start at approach step\", () => {\n const { step } = useWizardStore.getState();\n expect(step).toBe(\"approach\");\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 expert mode off\", () => {\n const { expertMode } = useWizardStore.getState();\n expect(expertMode).toBe(false);\n });\n\n it(\"should default to local install mode\", () => {\n const { installMode } = useWizardStore.getState();\n expect(installMode).toBe(\"local\");\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 // ===========================================================================\n // Step Navigation\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(\"stack\");\n store.setStep(\"confirm\");\n\n const { history } = useWizardStore.getState();\n expect(history).toEqual([\"approach\", \"stack\"]);\n });\n\n it(\"should go back through history\", () => {\n const store = useWizardStore.getState();\n\n store.setStep(\"stack\");\n store.setStep(\"confirm\");\n store.goBack();\n\n const { step, history } = useWizardStore.getState();\n expect(step).toBe(\"stack\");\n expect(history).toEqual([\"approach\"]);\n });\n\n it(\"should return to approach when history is empty\", () => {\n const store = useWizardStore.getState();\n\n store.setStep(\"stack\");\n store.goBack();\n store.goBack(); // Extra goBack when already at approach\n\n const { step } = useWizardStore.getState();\n expect(step).toBe(\"approach\");\n });\n\n it(\"should reset focus when changing steps\", () => {\n const store = useWizardStore.getState();\n store.setFocus(2, 3);\n store.setStep(\"stack\");\n\n const { focusedRow, focusedCol } = useWizardStore.getState();\n expect(focusedRow).toBe(0);\n expect(focusedCol).toBe(0);\n });\n });\n\n // ===========================================================================\n // Approach Selection\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 // ===========================================================================\n // Stack Selection\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(\"should clear stack when null is passed\", () => {\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 // ===========================================================================\n // Domain Selection\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\n // ===========================================================================\n // Technology Selection\n // ===========================================================================\n\n describe(\"technology selection\", () => {\n it(\"should toggle technology in exclusive mode\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"framework\", \"react\", true);\n\n const { domainSelections } = useWizardStore.getState();\n expect(domainSelections.web.framework).toEqual([\"react\"]);\n });\n\n it(\"should replace technology in exclusive mode\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"framework\", \"react\", true);\n store.toggleTechnology(\"web\", \"framework\", \"vue\", true);\n\n const { domainSelections } = useWizardStore.getState();\n expect(domainSelections.web.framework).toEqual([\"vue\"]);\n });\n\n it(\"should toggle off technology in exclusive mode\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"framework\", \"react\", true);\n store.toggleTechnology(\"web\", \"framework\", \"react\", true);\n\n const { domainSelections } = useWizardStore.getState();\n expect(domainSelections.web.framework).toEqual([]);\n });\n\n it(\"should allow multiple selections in non-exclusive mode\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"testing\", \"vitest\", false);\n store.toggleTechnology(\"web\", \"testing\", \"jest\", false);\n\n const { domainSelections } = useWizardStore.getState();\n expect(domainSelections.web.testing).toEqual([\"vitest\", \"jest\"]);\n });\n\n it(\"should toggle off technology in non-exclusive mode\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"testing\", \"vitest\", false);\n store.toggleTechnology(\"web\", \"testing\", \"jest\", false);\n store.toggleTechnology(\"web\", \"testing\", \"vitest\", false);\n\n const { domainSelections } = useWizardStore.getState();\n expect(domainSelections.web.testing).toEqual([\"jest\"]);\n });\n });\n\n // ===========================================================================\n // Domain Navigation\n // ===========================================================================\n\n describe(\"domain navigation\", () => {\n it(\"should set current domain index\", () => {\n const store = useWizardStore.getState();\n store.toggleDomain(\"web\");\n store.toggleDomain(\"api\");\n store.setCurrentDomainIndex(1);\n\n const { currentDomainIndex } = useWizardStore.getState();\n expect(currentDomainIndex).toBe(1);\n });\n\n it(\"should reset focus when changing domain index\", () => {\n const store = useWizardStore.getState();\n store.setFocus(2, 3);\n store.setCurrentDomainIndex(1);\n\n const { focusedRow, focusedCol } = useWizardStore.getState();\n expect(focusedRow).toBe(0);\n expect(focusedCol).toBe(0);\n });\n\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(\"should return false when at last domain\", () => {\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.setCurrentDomainIndex(1);\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(\"should return false when at first domain\", () => {\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.setCurrentDomainIndex(1);\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 // ===========================================================================\n // Mode Toggles\n // ===========================================================================\n\n describe(\"mode toggles\", () => {\n it(\"should toggle expert mode on\", () => {\n const store = useWizardStore.getState();\n\n store.toggleExpertMode();\n\n const { expertMode } = useWizardStore.getState();\n expect(expertMode).toBe(true);\n });\n\n it(\"should toggle expert mode off\", () => {\n const store = useWizardStore.getState();\n\n store.toggleExpertMode();\n store.toggleExpertMode();\n\n const { expertMode } = useWizardStore.getState();\n expect(expertMode).toBe(false);\n });\n\n it(\"should toggle install mode to plugin\", () => {\n const store = useWizardStore.getState();\n\n store.toggleInstallMode();\n\n const { installMode } = useWizardStore.getState();\n expect(installMode).toBe(\"plugin\");\n });\n\n it(\"should toggle install mode back to local\", () => {\n const store = useWizardStore.getState();\n\n store.toggleInstallMode();\n store.toggleInstallMode();\n\n const { installMode } = useWizardStore.getState();\n expect(installMode).toBe(\"local\");\n });\n\n it(\"should toggle show descriptions\", () => {\n const store = useWizardStore.getState();\n\n store.toggleShowDescriptions();\n\n const { showDescriptions } = useWizardStore.getState();\n expect(showDescriptions).toBe(true);\n });\n });\n\n // ===========================================================================\n // Refine Step\n // ===========================================================================\n\n describe(\"refine step\", () => {\n it(\"should set refine action\", () => {\n const store = useWizardStore.getState();\n store.setRefineAction(\"all-recommended\");\n\n const { refineAction } = useWizardStore.getState();\n expect(refineAction).toBe(\"all-recommended\");\n });\n\n it(\"should set skill source\", () => {\n const store = useWizardStore.getState();\n store.setSkillSource(\"react\", \"react (@vince)\");\n\n const { skillSources } = useWizardStore.getState();\n expect(skillSources.react).toBe(\"react (@vince)\");\n });\n\n it(\"should set current refine index\", () => {\n const store = useWizardStore.getState();\n store.setCurrentRefineIndex(3);\n\n const { currentRefineIndex } = useWizardStore.getState();\n expect(currentRefineIndex).toBe(3);\n });\n });\n\n // ===========================================================================\n // Computed Getters\n // ===========================================================================\n\n describe(\"computed getters\", () => {\n it(\"should get all selected technologies\", () => {\n const store = useWizardStore.getState();\n store.toggleTechnology(\"web\", \"framework\", \"react\", true);\n store.toggleTechnology(\"web\", \"styling\", \"scss\", true);\n store.toggleTechnology(\"api\", \"api-framework\", \"hono\", true);\n\n const technologies = store.getAllSelectedTechnologies();\n expect(technologies).toContain(\"react\");\n expect(technologies).toContain(\"scss\");\n expect(technologies).toContain(\"hono\");\n });\n\n it(\"should get selected skills including preselected\", () => {\n const store = useWizardStore.getState();\n store.setSkillSource(\"react\", \"react (@vince)\");\n store.setSkillSource(\"scss\", \"scss-modules (@vince)\");\n\n const skills = store.getSelectedSkills();\n\n // Should include preselected skills\n for (const skill of DEFAULT_PRESELECTED_SKILLS) {\n expect(skills).toContain(skill);\n }\n // Should include user selected skills\n expect(skills).toContain(\"react (@vince)\");\n expect(skills).toContain(\"scss-modules (@vince)\");\n });\n });\n\n // ===========================================================================\n // Reset\n // ===========================================================================\n\n describe(\"reset\", () => {\n it(\"should reset to initial state\", () => {\n const store = useWizardStore.getState();\n\n // Make some changes\n store.setStep(\"stack\");\n store.setApproach(\"scratch\");\n store.selectStack(\"nextjs-fullstack\");\n store.toggleDomain(\"web\");\n store.toggleExpertMode();\n\n // Reset\n store.reset();\n\n const state = useWizardStore.getState();\n expect(state.step).toBe(\"approach\");\n expect(state.approach).toBeNull();\n expect(state.selectedStackId).toBeNull();\n expect(state.selectedDomains).toEqual([]);\n expect(state.expertMode).toBe(false);\n expect(state.installMode).toBe(\"local\");\n expect(state.history).toEqual([]);\n });\n });\n\n // ===========================================================================\n // Complex Flows\n // ===========================================================================\n\n describe(\"complex flows\", () => {\n it(\"should handle complete stack selection flow\", () => {\n const store = useWizardStore.getState();\n\n // Step 1: Choose stack approach\n store.setApproach(\"stack\");\n store.setStep(\"stack\");\n\n // Step 2: Select stack\n store.selectStack(\"nextjs-fullstack\");\n store.setStep(\"stack-options\");\n\n // Step 3: Choose defaults\n store.setStackAction(\"defaults\");\n store.setStep(\"refine\");\n\n // Step 4: Refine\n store.setRefineAction(\"all-recommended\");\n store.setStep(\"confirm\");\n\n // Verify final state\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(\"defaults\");\n expect(state.refineAction).toBe(\"all-recommended\");\n expect(state.history).toEqual([\n \"approach\",\n \"stack\",\n \"stack-options\",\n \"refine\",\n ]);\n });\n\n it(\"should handle complete scratch flow\", () => {\n const store = useWizardStore.getState();\n\n // Step 1: Choose scratch approach\n store.setApproach(\"scratch\");\n store.setStep(\"stack\"); // Domain selection\n\n // Step 2: Select domains\n store.toggleDomain(\"web\");\n store.toggleDomain(\"api\");\n store.setStep(\"build\");\n\n // Step 3: Select technologies\n store.toggleTechnology(\"web\", \"framework\", \"react\", true);\n store.toggleTechnology(\"web\", \"styling\", \"scss\", true);\n store.toggleTechnology(\"api\", \"api-framework\", \"hono\", true);\n store.setStep(\"refine\");\n\n // Step 4: Refine\n store.setRefineAction(\"all-recommended\");\n store.setStep(\"confirm\");\n\n // Verify final state\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.framework).toEqual([\"react\"]);\n expect(state.domainSelections.web.styling).toEqual([\"scss\"]);\n expect(state.domainSelections.api[\"api-framework\"]).toEqual([\"hono\"]);\n });\n\n it(\"should preserve selections when going back\", () => {\n const store = useWizardStore.getState();\n\n // Make selections\n store.setApproach(\"scratch\");\n store.setStep(\"stack\");\n store.toggleDomain(\"web\");\n store.setStep(\"build\");\n store.toggleTechnology(\"web\", \"framework\", \"react\", true);\n\n // Go back\n store.goBack();\n store.goBack();\n\n // Selections should be preserved\n const state = useWizardStore.getState();\n expect(state.selectedDomains).toContain(\"web\");\n expect(state.domainSelections.web.framework).toEqual([\"react\"]);\n });\n });\n});\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "name": "@claude-collective/cli",
3
- "version": "0.2.0",
3
+ "version": "0.8.0",
4
4
  "description": "CLI for managing Claude Collective skills, stacks, and agents for Claude Code",
5
5
  "type": "module",
6
- "main": "dist/cli/index.js",
6
+ "main": "dist/index.js",
7
7
  "exports": {
8
8
  ".": {
9
- "import": "./dist/cli/index.js"
9
+ "import": "./dist/index.js"
10
10
  }
11
11
  },
12
12
  "bin": {
13
- "cc": "dist/cli/index.js"
13
+ "cc": "dist/index.js"
14
14
  },
15
15
  "files": [
16
16
  "dist/",
@@ -39,29 +39,34 @@
39
39
  "access": "public",
40
40
  "registry": "https://registry.npmjs.org/"
41
41
  },
42
+ "oclif": {
43
+ "bin": "cc",
44
+ "dirname": "claude-collective",
45
+ "commands": {
46
+ "strategy": "pattern",
47
+ "target": "./dist/commands"
48
+ },
49
+ "plugins": [
50
+ "@oclif/plugin-help",
51
+ "@oclif/plugin-autocomplete",
52
+ "@oclif/plugin-not-found",
53
+ "@oclif/plugin-warn-if-update-available"
54
+ ],
55
+ "hooks": {
56
+ "init": [
57
+ "./dist/hooks/init"
58
+ ]
59
+ },
60
+ "topicSeparator": " "
61
+ },
42
62
  "scripts": {
43
- "build:agents": "node src/compile.mjs",
44
63
  "build": "tsup",
45
64
  "dev": "tsup --watch",
46
- "cli": "node dist/cli/index.js",
47
- "cli:dev": "bun src/cli/index.ts",
65
+ "cc": "node dist/index.js",
66
+ "cc:dev": "bun src/cli-v2/index.ts",
48
67
  "test": "vitest run",
49
68
  "test:watch": "vitest",
50
69
  "test:coverage": "vitest run --coverage",
51
- "cc:init": "bun src/cli/index.ts init",
52
- "cc:edit": "bun src/cli/index.ts edit",
53
- "cc:compile": "bun src/cli/index.ts compile",
54
- "cc:compile:fullstack": "bun src/cli/index.ts compile -s nextjs-fullstack",
55
- "cc:compile:angular": "bun src/cli/index.ts compile -s angular-stack",
56
- "cc:validate": "bun src/cli/index.ts validate",
57
- "cc:validate:plugins": "bun src/cli/index.ts validate dist/plugins --all",
58
- "cc:validate:stacks": "bun src/cli/index.ts validate dist/stacks/nextjs-fullstack && bun src/cli/index.ts validate dist/stacks/angular-stack",
59
- "cc:config": "bun src/cli/index.ts config",
60
- "cc:list": "bun src/cli/index.ts list",
61
- "cc:build:plugins": "bun src/cli/index.ts build:plugins",
62
- "cc:build:stack": "bun src/cli/index.ts build:stack",
63
- "cc:build:marketplace": "bun src/cli/index.ts build:marketplace",
64
- "cc:build:all": "bun src/cli/index.ts build:plugins && bun src/cli/index.ts build:marketplace",
65
70
  "format": "prettier --write .",
66
71
  "format:check": "prettier --check .",
67
72
  "prepare": "husky",
@@ -81,22 +86,36 @@
81
86
  },
82
87
  "homepage": "https://github.com/claude-collective/cli#readme",
83
88
  "dependencies": {
84
- "@clack/prompts": "^0.11.0",
89
+ "@inkjs/ui": "^2.0.0",
90
+ "@oclif/core": "^4.0.0",
91
+ "@oclif/plugin-autocomplete": "^3.0.0",
92
+ "@oclif/plugin-help": "^6.0.0",
93
+ "@oclif/plugin-not-found": "^3.0.0",
94
+ "@oclif/plugin-warn-if-update-available": "^3.0.0",
95
+ "@oclif/table": "^0.5.0",
85
96
  "ajv": "^8.17.1",
86
97
  "ajv-formats": "^3.0.1",
87
- "commander": "^12.1.0",
98
+ "diff": "^8.0.3",
99
+ "execa": "^9.0.0",
88
100
  "fast-glob": "^3.3.0",
89
101
  "fs-extra": "^11.2.0",
90
102
  "giget": "^1.2.0",
103
+ "gray-matter": "^4.0.3",
104
+ "ink": "^5.0.0",
91
105
  "liquidjs": "^10.24.0",
92
- "picocolors": "^1.1.0",
93
- "yaml": "^2.8.2"
106
+ "react": "^18.2.0",
107
+ "yaml": "^2.8.2",
108
+ "zustand": "^5.0.0"
94
109
  },
95
110
  "devDependencies": {
111
+ "@oclif/test": "^4.0.0",
112
+ "@types/diff": "^8.0.0",
96
113
  "@types/fs-extra": "^11.0.0",
97
114
  "@types/node": "^22.0.0",
115
+ "@types/react": "^18.2.0",
98
116
  "@vitest/coverage-v8": "^4.0.18",
99
117
  "husky": "^9.1.7",
118
+ "ink-testing-library": "^4.0.0",
100
119
  "lint-staged": "^15.2.0",
101
120
  "prettier": "^3.2.0",
102
121
  "tsup": "^8.0.0",