@agents-inc/cli 0.61.0 → 0.65.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 (213) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/README.md +23 -172
  3. package/dist/{chunk-YHOHLNHM.js → chunk-3YNT3NX3.js} +13 -11
  4. package/dist/chunk-3YNT3NX3.js.map +1 -0
  5. package/dist/{chunk-IGM6HA3S.js → chunk-4C7CSZC5.js} +27 -149
  6. package/dist/chunk-4C7CSZC5.js.map +1 -0
  7. package/dist/{chunk-WHISPMAQ.js → chunk-4KVBH2X4.js} +33 -14
  8. package/dist/chunk-4KVBH2X4.js.map +1 -0
  9. package/dist/{chunk-KIWFEBKH.js → chunk-52THXN5G.js} +14 -5
  10. package/dist/chunk-52THXN5G.js.map +1 -0
  11. package/dist/{chunk-FWMWWE3X.js → chunk-53URJ5XK.js} +448 -152
  12. package/dist/chunk-53URJ5XK.js.map +1 -0
  13. package/dist/{chunk-H5DASUX5.js → chunk-6DEK3TDF.js} +10 -10
  14. package/dist/chunk-6DEK3TDF.js.map +1 -0
  15. package/dist/{chunk-SDKCQXWE.js → chunk-6IK2TCK7.js} +13 -6
  16. package/dist/chunk-6IK2TCK7.js.map +1 -0
  17. package/dist/chunk-6VIOO74O.js +51 -0
  18. package/dist/chunk-6VIOO74O.js.map +1 -0
  19. package/dist/{chunk-52XO4ULK.js → chunk-7DI3HGKL.js} +32 -14
  20. package/dist/chunk-7DI3HGKL.js.map +1 -0
  21. package/dist/{chunk-MGNYPVOJ.js → chunk-AQYAVLZK.js} +2 -2
  22. package/dist/{chunk-BNQ5O6LE.js → chunk-AUNBGZS4.js} +2 -2
  23. package/dist/chunk-BGPGQF35.js +248 -0
  24. package/dist/chunk-BGPGQF35.js.map +1 -0
  25. package/dist/chunk-BKL3DF2Q.js +45 -0
  26. package/dist/chunk-BKL3DF2Q.js.map +1 -0
  27. package/dist/{chunk-AX3SZZWA.js → chunk-BKTPEATV.js} +13 -6
  28. package/dist/chunk-BKTPEATV.js.map +1 -0
  29. package/dist/{chunk-H7WJK7NJ.js → chunk-CKPJTMNC.js} +13 -6
  30. package/dist/chunk-CKPJTMNC.js.map +1 -0
  31. package/dist/{chunk-MR6OBL3B.js → chunk-CXRVM7BA.js} +2 -4
  32. package/dist/chunk-CXRVM7BA.js.map +1 -0
  33. package/dist/{chunk-VR3CDXDT.js → chunk-EE5EPS32.js} +2 -2
  34. package/dist/{chunk-6OWHQ7HM.js → chunk-EGMQ3SXN.js} +2 -11
  35. package/dist/{chunk-6OWHQ7HM.js.map → chunk-EGMQ3SXN.js.map} +1 -1
  36. package/dist/{chunk-6DAZG54T.js → chunk-EZ35IPXZ.js} +10 -7
  37. package/dist/chunk-EZ35IPXZ.js.map +1 -0
  38. package/dist/{chunk-OCEFD7V6.js → chunk-F3REOP7N.js} +3 -3
  39. package/dist/{chunk-C577AJE7.js → chunk-FGLUQSVU.js} +3 -3
  40. package/dist/{chunk-Z3TM4N37.js → chunk-J4POGAJF.js} +24 -24
  41. package/dist/chunk-J4POGAJF.js.map +1 -0
  42. package/dist/{chunk-O6BA7Q2B.js → chunk-KFDTVSIC.js} +18 -8
  43. package/dist/chunk-KFDTVSIC.js.map +1 -0
  44. package/dist/{chunk-LWXRUR6B.js → chunk-LMZXL5RQ.js} +2 -2
  45. package/dist/{chunk-LWXRUR6B.js.map → chunk-LMZXL5RQ.js.map} +1 -1
  46. package/dist/{chunk-BFD5NZQ4.js → chunk-MVYJVKVT.js} +19 -11
  47. package/dist/chunk-MVYJVKVT.js.map +1 -0
  48. package/dist/{chunk-X5EG4EFP.js → chunk-MWGDG4QN.js} +2 -2
  49. package/dist/chunk-N4D43IOO.js +238 -0
  50. package/dist/chunk-N4D43IOO.js.map +1 -0
  51. package/dist/{chunk-KDO6WU76.js → chunk-O2HK3NTG.js} +10 -6
  52. package/dist/chunk-O2HK3NTG.js.map +1 -0
  53. package/dist/{chunk-46DQG2N7.js → chunk-OORWBS6F.js} +45 -52
  54. package/dist/chunk-OORWBS6F.js.map +1 -0
  55. package/dist/{chunk-CIG7IKX3.js → chunk-OV5UJWS5.js} +4 -4
  56. package/dist/{chunk-IEEVXLJB.js → chunk-R46CB36B.js} +5 -5
  57. package/dist/{chunk-GH2RQ4MI.js → chunk-RG3KDXMR.js} +16 -8
  58. package/dist/chunk-RG3KDXMR.js.map +1 -0
  59. package/dist/{chunk-MMFQNJPE.js → chunk-SXGBPQY6.js} +3 -3
  60. package/dist/chunk-SXGBPQY6.js.map +1 -0
  61. package/dist/{chunk-XUDTFI4M.js → chunk-T5DJCIUP.js} +2 -2
  62. package/dist/{chunk-AJJJE7F7.js → chunk-TQLDQ3XZ.js} +2 -2
  63. package/dist/{chunk-M6YWRMXH.js → chunk-WSMQ5GAP.js} +33 -21
  64. package/dist/chunk-WSMQ5GAP.js.map +1 -0
  65. package/dist/{chunk-WYVDNGJB.js → chunk-XMLCXRTS.js} +3 -3
  66. package/dist/{chunk-SDLDPFNV.js → chunk-YEGPTBX5.js} +4 -4
  67. package/dist/{chunk-SRBN6RRD.js → chunk-ZFY5EMDV.js} +5 -5
  68. package/dist/{chunk-BKJHAJQW.js → chunk-ZYUASJUN.js} +7 -4
  69. package/dist/chunk-ZYUASJUN.js.map +1 -0
  70. package/dist/commands/build/marketplace.js +4 -4
  71. package/dist/commands/build/plugins.js +7 -6
  72. package/dist/commands/build/plugins.js.map +1 -1
  73. package/dist/commands/build/stack.js +7 -6
  74. package/dist/commands/build/stack.js.map +1 -1
  75. package/dist/commands/compile.js +11 -80
  76. package/dist/commands/compile.js.map +1 -1
  77. package/dist/commands/config/index.js +7 -6
  78. package/dist/commands/config/index.js.map +1 -1
  79. package/dist/commands/config/path.js +6 -5
  80. package/dist/commands/config/path.js.map +1 -1
  81. package/dist/commands/config/show.js +7 -6
  82. package/dist/commands/diff.js +6 -5
  83. package/dist/commands/diff.js.map +1 -1
  84. package/dist/commands/doctor.js +11 -15
  85. package/dist/commands/doctor.js.map +1 -1
  86. package/dist/commands/edit.js +63 -69
  87. package/dist/commands/edit.js.map +1 -1
  88. package/dist/commands/eject.js +13 -13
  89. package/dist/commands/eject.js.map +1 -1
  90. package/dist/commands/import/skill.js +7 -6
  91. package/dist/commands/import/skill.js.map +1 -1
  92. package/dist/commands/info.js +14 -16
  93. package/dist/commands/info.js.map +1 -1
  94. package/dist/commands/init.js +32 -30
  95. package/dist/commands/list.js +6 -5
  96. package/dist/commands/list.js.map +1 -1
  97. package/dist/commands/new/agent.js +7 -6
  98. package/dist/commands/new/agent.js.map +1 -1
  99. package/dist/commands/new/marketplace.js +28 -11
  100. package/dist/commands/new/marketplace.js.map +1 -1
  101. package/dist/commands/new/skill.js +7 -6
  102. package/dist/commands/outdated.js +6 -5
  103. package/dist/commands/outdated.js.map +1 -1
  104. package/dist/commands/search.js +13 -11
  105. package/dist/commands/search.js.map +1 -1
  106. package/dist/commands/uninstall.js +9 -10
  107. package/dist/commands/uninstall.js.map +1 -1
  108. package/dist/commands/update.js +12 -8
  109. package/dist/commands/update.js.map +1 -1
  110. package/dist/commands/validate.js +20 -42
  111. package/dist/commands/validate.js.map +1 -1
  112. package/dist/components/skill-search/skill-search.js +4 -3
  113. package/dist/components/wizard/category-grid.js +5 -3
  114. package/dist/components/wizard/category-grid.test.js +242 -194
  115. package/dist/components/wizard/category-grid.test.js.map +1 -1
  116. package/dist/components/wizard/checkbox-grid.js +5 -5
  117. package/dist/components/wizard/checkbox-grid.test.js +5 -5
  118. package/dist/components/wizard/domain-selection.js +12 -11
  119. package/dist/components/wizard/help-modal.js +3 -2
  120. package/dist/components/wizard/menu-item.js +1 -1
  121. package/dist/components/wizard/search-modal.js +3 -2
  122. package/dist/components/wizard/search-modal.test.js +3 -2
  123. package/dist/components/wizard/search-modal.test.js.map +1 -1
  124. package/dist/components/wizard/section-progress.js +2 -2
  125. package/dist/components/wizard/section-progress.test.js +3 -3
  126. package/dist/components/wizard/section-progress.test.js.map +1 -1
  127. package/dist/components/wizard/selection-card.js +2 -2
  128. package/dist/components/wizard/source-grid.js +6 -4
  129. package/dist/components/wizard/source-grid.test.js +60 -40
  130. package/dist/components/wizard/source-grid.test.js.map +1 -1
  131. package/dist/components/wizard/stack-selection.js +9 -8
  132. package/dist/components/wizard/step-agents.js +11 -10
  133. package/dist/components/wizard/step-agents.test.js +29 -26
  134. package/dist/components/wizard/step-agents.test.js.map +1 -1
  135. package/dist/components/wizard/step-build.js +12 -10
  136. package/dist/components/wizard/step-build.test.js +79 -99
  137. package/dist/components/wizard/step-build.test.js.map +1 -1
  138. package/dist/components/wizard/step-confirm.js +6 -4
  139. package/dist/components/wizard/step-confirm.test.js +11 -15
  140. package/dist/components/wizard/step-confirm.test.js.map +1 -1
  141. package/dist/components/wizard/step-refine.js +3 -2
  142. package/dist/components/wizard/step-refine.test.js +3 -2
  143. package/dist/components/wizard/step-refine.test.js.map +1 -1
  144. package/dist/components/wizard/step-settings.js +10 -8
  145. package/dist/components/wizard/step-settings.test.js +17 -13
  146. package/dist/components/wizard/step-settings.test.js.map +1 -1
  147. package/dist/components/wizard/step-sources.js +13 -11
  148. package/dist/components/wizard/step-sources.test.js +20 -16
  149. package/dist/components/wizard/step-sources.test.js.map +1 -1
  150. package/dist/components/wizard/step-stack.js +15 -14
  151. package/dist/components/wizard/step-stack.test.js +53 -59
  152. package/dist/components/wizard/step-stack.test.js.map +1 -1
  153. package/dist/components/wizard/view-title.js +2 -2
  154. package/dist/components/wizard/wizard-layout.js +10 -8
  155. package/dist/components/wizard/wizard-tabs.js +2 -2
  156. package/dist/components/wizard/wizard-tabs.test.js +2 -2
  157. package/dist/components/wizard/wizard.js +29 -27
  158. package/dist/hooks/init.js +32 -30
  159. package/dist/hooks/init.js.map +1 -1
  160. package/dist/{loader-2O32KKAQ.js → loader-4YOZCFIP.js} +4 -4
  161. package/dist/plugins/dummy-skill/.claude-plugin/.content-hash +1 -0
  162. package/dist/plugins/dummy-skill/.claude-plugin/plugin.json +13 -0
  163. package/dist/{source-loader-KMEBBZCQ.js → source-loader-O5RMYUBW.js} +6 -5
  164. package/dist/{source-manager-5XBSPJNR.js → source-manager-NKLL6HCL.js} +6 -5
  165. package/dist/stores/matrix-store.js +15 -0
  166. package/dist/stores/matrix-store.js.map +1 -0
  167. package/dist/stores/matrix-store.test.js +123 -0
  168. package/dist/stores/matrix-store.test.js.map +1 -0
  169. package/dist/stores/wizard-store.js +6 -5
  170. package/dist/stores/wizard-store.test.js +150 -113
  171. package/dist/stores/wizard-store.test.js.map +1 -1
  172. package/package.json +1 -1
  173. package/dist/chunk-46DQG2N7.js.map +0 -1
  174. package/dist/chunk-52XO4ULK.js.map +0 -1
  175. package/dist/chunk-6DAZG54T.js.map +0 -1
  176. package/dist/chunk-7FMEMXJ4.js +0 -277
  177. package/dist/chunk-7FMEMXJ4.js.map +0 -1
  178. package/dist/chunk-AX3SZZWA.js.map +0 -1
  179. package/dist/chunk-BFD5NZQ4.js.map +0 -1
  180. package/dist/chunk-BKJHAJQW.js.map +0 -1
  181. package/dist/chunk-FWMWWE3X.js.map +0 -1
  182. package/dist/chunk-GH2RQ4MI.js.map +0 -1
  183. package/dist/chunk-H5DASUX5.js.map +0 -1
  184. package/dist/chunk-H7WJK7NJ.js.map +0 -1
  185. package/dist/chunk-IGM6HA3S.js.map +0 -1
  186. package/dist/chunk-KD2YS76O.js +0 -151
  187. package/dist/chunk-KD2YS76O.js.map +0 -1
  188. package/dist/chunk-KDO6WU76.js.map +0 -1
  189. package/dist/chunk-KIWFEBKH.js.map +0 -1
  190. package/dist/chunk-M6YWRMXH.js.map +0 -1
  191. package/dist/chunk-MMFQNJPE.js.map +0 -1
  192. package/dist/chunk-MR6OBL3B.js.map +0 -1
  193. package/dist/chunk-O6BA7Q2B.js.map +0 -1
  194. package/dist/chunk-SDKCQXWE.js.map +0 -1
  195. package/dist/chunk-WHISPMAQ.js.map +0 -1
  196. package/dist/chunk-YHOHLNHM.js.map +0 -1
  197. package/dist/chunk-Z3TM4N37.js.map +0 -1
  198. /package/dist/{chunk-MGNYPVOJ.js.map → chunk-AQYAVLZK.js.map} +0 -0
  199. /package/dist/{chunk-BNQ5O6LE.js.map → chunk-AUNBGZS4.js.map} +0 -0
  200. /package/dist/{chunk-VR3CDXDT.js.map → chunk-EE5EPS32.js.map} +0 -0
  201. /package/dist/{chunk-OCEFD7V6.js.map → chunk-F3REOP7N.js.map} +0 -0
  202. /package/dist/{chunk-C577AJE7.js.map → chunk-FGLUQSVU.js.map} +0 -0
  203. /package/dist/{chunk-X5EG4EFP.js.map → chunk-MWGDG4QN.js.map} +0 -0
  204. /package/dist/{chunk-CIG7IKX3.js.map → chunk-OV5UJWS5.js.map} +0 -0
  205. /package/dist/{chunk-IEEVXLJB.js.map → chunk-R46CB36B.js.map} +0 -0
  206. /package/dist/{chunk-XUDTFI4M.js.map → chunk-T5DJCIUP.js.map} +0 -0
  207. /package/dist/{chunk-AJJJE7F7.js.map → chunk-TQLDQ3XZ.js.map} +0 -0
  208. /package/dist/{chunk-WYVDNGJB.js.map → chunk-XMLCXRTS.js.map} +0 -0
  209. /package/dist/{chunk-SDLDPFNV.js.map → chunk-YEGPTBX5.js.map} +0 -0
  210. /package/dist/{chunk-SRBN6RRD.js.map → chunk-ZFY5EMDV.js.map} +0 -0
  211. /package/dist/{loader-2O32KKAQ.js.map → loader-4YOZCFIP.js.map} +0 -0
  212. /package/dist/{source-loader-KMEBBZCQ.js.map → source-loader-O5RMYUBW.js.map} +0 -0
  213. /package/dist/{source-manager-5XBSPJNR.js.map → source-manager-NKLL6HCL.js.map} +0 -0
@@ -1,10 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
+ SKILLS,
3
4
  TEST_CATEGORIES,
4
- TEST_SKILLS,
5
- createMockMatrix,
6
- getTestSkill
7
- } from "../chunk-7FMEMXJ4.js";
5
+ createMockMatrix
6
+ } from "../chunk-N4D43IOO.js";
8
7
  import {
9
8
  beforeEach,
10
9
  describe,
@@ -13,16 +12,17 @@ import {
13
12
  } from "../chunk-XY3XDVMI.js";
14
13
  import {
15
14
  useWizardStore
16
- } from "../chunk-IGM6HA3S.js";
17
- import "../chunk-FWMWWE3X.js";
18
- import "../chunk-OCEFD7V6.js";
15
+ } from "../chunk-4C7CSZC5.js";
16
+ import "../chunk-53URJ5XK.js";
17
+ import "../chunk-F3REOP7N.js";
19
18
  import {
20
19
  typedKeys
21
20
  } from "../chunk-T4EXUIBY.js";
22
- import "../chunk-LWXRUR6B.js";
23
21
  import {
24
- DEFAULT_PRESELECTED_SKILLS
25
- } from "../chunk-6OWHQ7HM.js";
22
+ useMatrixStore
23
+ } from "../chunk-BKL3DF2Q.js";
24
+ import "../chunk-LMZXL5RQ.js";
25
+ import "../chunk-EGMQ3SXN.js";
26
26
  import "../chunk-EC3UJRKZ.js";
27
27
  import {
28
28
  init_esm_shims
@@ -35,7 +35,11 @@ function sa(id, preloaded = false) {
35
35
  }
36
36
  describe("WizardStore", () => {
37
37
  beforeEach(() => {
38
- useWizardStore.getState().reset();
38
+ useMatrixStore.getState().setMatrix(
39
+ createMockMatrix(SKILLS, {
40
+ categories: TEST_CATEGORIES
41
+ })
42
+ );
39
43
  });
40
44
  describe("initial state", () => {
41
45
  it("should start at stack step", () => {
@@ -207,12 +211,16 @@ describe("WizardStore", () => {
207
211
  api: { "api-api": [sa("api-framework-hono", true)] }
208
212
  }
209
213
  };
210
- const categories = {
211
- "web-framework": { domain: "web" },
212
- "web-client-state": { domain: "web" },
213
- "api-api": { domain: "api" }
214
- };
215
- store.populateFromStack(stack, categories);
214
+ useMatrixStore.getState().setMatrix(
215
+ createMockMatrix(SKILLS, {
216
+ categories: {
217
+ "web-framework": { domain: "web" },
218
+ "web-client-state": { domain: "web" },
219
+ "api-api": { domain: "api" }
220
+ }
221
+ })
222
+ );
223
+ store.populateFromStack(stack);
216
224
  store.toggleDomain("web");
217
225
  globalExpect(useWizardStore.getState().domainSelections.web).toBeUndefined();
218
226
  store.toggleDomain("web");
@@ -222,15 +230,15 @@ describe("WizardStore", () => {
222
230
  });
223
231
  it("should restore stack skills when re-toggling a domain ON after populateFromSkillIds", () => {
224
232
  const store = useWizardStore.getState();
225
- const skills = {
226
- "web-framework-react": TEST_SKILLS.react,
227
- "api-framework-hono": TEST_SKILLS.hono
228
- };
229
- const categories = {
230
- "web-framework": TEST_CATEGORIES.framework,
231
- "api-api": TEST_CATEGORIES.api
232
- };
233
- store.populateFromSkillIds(["web-framework-react", "api-framework-hono"], skills, categories);
233
+ useMatrixStore.getState().setMatrix(
234
+ createMockMatrix(SKILLS.react, SKILLS.hono, {
235
+ categories: {
236
+ "web-framework": TEST_CATEGORIES.framework,
237
+ "api-api": TEST_CATEGORIES.api
238
+ }
239
+ })
240
+ );
241
+ store.populateFromSkillIds(["web-framework-react", "api-framework-hono"]);
234
242
  store.toggleDomain("web");
235
243
  globalExpect(useWizardStore.getState().domainSelections.web).toBeUndefined();
236
244
  store.toggleDomain("web");
@@ -255,11 +263,15 @@ describe("WizardStore", () => {
255
263
  api: { "api-api": [sa("api-framework-hono", true)] }
256
264
  }
257
265
  };
258
- const categories = {
259
- "web-framework": { domain: "web" },
260
- "api-api": { domain: "api" }
261
- };
262
- store.populateFromStack(stack, categories);
266
+ useMatrixStore.getState().setMatrix(
267
+ createMockMatrix(SKILLS, {
268
+ categories: {
269
+ "web-framework": { domain: "web" },
270
+ "api-api": { domain: "api" }
271
+ }
272
+ })
273
+ );
274
+ store.populateFromStack(stack);
263
275
  store.toggleTechnology("api", "api-api", "api-framework-hono", true);
264
276
  store.toggleTechnology("api", "api-api", "api-framework-express", true);
265
277
  store.toggleDomain("web");
@@ -419,7 +431,7 @@ describe("WizardStore", () => {
419
431
  globalExpect(skillConfigs).toHaveLength(1);
420
432
  globalExpect(skillConfigs[0]).toEqual({
421
433
  id: "web-framework-react",
422
- scope: "project",
434
+ scope: "global",
423
435
  source: "agents-inc"
424
436
  });
425
437
  });
@@ -449,20 +461,20 @@ describe("WizardStore", () => {
449
461
  "web-testing-playwright-e2e"
450
462
  ]);
451
463
  });
452
- it("should toggle skill scope between project and global", () => {
464
+ it("should toggle skill scope between global and project", () => {
453
465
  const store = useWizardStore.getState();
454
466
  store.toggleTechnology("web", "web-framework", "web-framework-react", true);
455
467
  store.toggleSkillScope("web-framework-react");
456
468
  const { skillConfigs } = useWizardStore.getState();
457
- globalExpect(skillConfigs[0].scope).toBe("global");
469
+ globalExpect(skillConfigs[0].scope).toBe("project");
458
470
  });
459
- it("should toggle skill scope back to project", () => {
471
+ it("should toggle skill scope back to global", () => {
460
472
  const store = useWizardStore.getState();
461
473
  store.toggleTechnology("web", "web-framework", "web-framework-react", true);
462
474
  store.toggleSkillScope("web-framework-react");
463
475
  store.toggleSkillScope("web-framework-react");
464
476
  const { skillConfigs } = useWizardStore.getState();
465
- globalExpect(skillConfigs[0].scope).toBe("project");
477
+ globalExpect(skillConfigs[0].scope).toBe("global");
466
478
  });
467
479
  it("should update source via setSkillSource", () => {
468
480
  const store = useWizardStore.getState();
@@ -495,28 +507,32 @@ describe("WizardStore", () => {
495
507
  }
496
508
  }
497
509
  };
498
- const categories = {
499
- "web-framework": { domain: "web" },
500
- "web-client-state": { domain: "web" }
501
- };
502
- store.populateFromStack(stack, categories);
510
+ useMatrixStore.getState().setMatrix(
511
+ createMockMatrix(SKILLS, {
512
+ categories: {
513
+ "web-framework": { domain: "web" },
514
+ "web-client-state": { domain: "web" }
515
+ }
516
+ })
517
+ );
518
+ store.populateFromStack(stack);
503
519
  const { skillConfigs } = useWizardStore.getState();
504
520
  globalExpect(skillConfigs).toHaveLength(2);
505
521
  globalExpect(skillConfigs.map((sc) => sc.id)).toEqual(["web-framework-react", "web-state-zustand"]);
506
- globalExpect(skillConfigs.every((sc) => sc.scope === "project")).toBe(true);
522
+ globalExpect(skillConfigs.every((sc) => sc.scope === "global")).toBe(true);
507
523
  globalExpect(skillConfigs.every((sc) => sc.source === "agents-inc")).toBe(true);
508
524
  });
509
525
  it("should populate skillConfigs from populateFromSkillIds", () => {
510
526
  const store = useWizardStore.getState();
511
- const skills = {
512
- "web-framework-react": TEST_SKILLS.react,
513
- "api-framework-hono": TEST_SKILLS.hono
514
- };
515
- const categories = {
516
- "web-framework": TEST_CATEGORIES.framework,
517
- "api-api": TEST_CATEGORIES.api
518
- };
519
- store.populateFromSkillIds(["web-framework-react", "api-framework-hono"], skills, categories);
527
+ useMatrixStore.getState().setMatrix(
528
+ createMockMatrix(SKILLS.react, SKILLS.hono, {
529
+ categories: {
530
+ "web-framework": TEST_CATEGORIES.framework,
531
+ "api-api": TEST_CATEGORIES.api
532
+ }
533
+ })
534
+ );
535
+ store.populateFromSkillIds(["web-framework-react", "api-framework-hono"]);
520
536
  const { skillConfigs } = useWizardStore.getState();
521
537
  globalExpect(skillConfigs).toHaveLength(2);
522
538
  globalExpect(skillConfigs.map((sc) => sc.id)).toEqual([
@@ -539,10 +555,14 @@ describe("WizardStore", () => {
539
555
  web: { "web-framework": [sa("web-framework-react", true)] }
540
556
  }
541
557
  };
542
- const categories = {
543
- "web-framework": { domain: "web" }
544
- };
545
- store.populateFromStack(stack, categories);
558
+ useMatrixStore.getState().setMatrix(
559
+ createMockMatrix(SKILLS, {
560
+ categories: {
561
+ "web-framework": { domain: "web" }
562
+ }
563
+ })
564
+ );
565
+ store.populateFromStack(stack);
546
566
  globalExpect(useWizardStore.getState().skillConfigs).toHaveLength(1);
547
567
  store.toggleDomain("web");
548
568
  globalExpect(useWizardStore.getState().skillConfigs).toHaveLength(0);
@@ -571,13 +591,13 @@ describe("WizardStore", () => {
571
591
  const store = useWizardStore.getState();
572
592
  store.toggleTechnology("web", "web-framework", "web-framework-react", true);
573
593
  store.setSourceSelection("web-framework-react", "local");
574
- const matrix = createMockMatrix({
575
- "web-framework-react": {
576
- ...getTestSkill("react"),
594
+ useMatrixStore.getState().setMatrix(
595
+ createMockMatrix({
596
+ ...SKILLS.react,
577
597
  availableSources: [{ name: "Acme Corp", type: "private", installed: false }]
578
- }
579
- });
580
- store.setAllSourcesPlugin(matrix);
598
+ })
599
+ );
600
+ store.setAllSourcesPlugin();
581
601
  const { skillConfigs } = useWizardStore.getState();
582
602
  globalExpect(skillConfigs[0].source).toBe("Acme Corp");
583
603
  });
@@ -593,13 +613,6 @@ describe("WizardStore", () => {
593
613
  globalExpect(technologies).toContain("web-styling-scss-modules");
594
614
  globalExpect(technologies).toContain("api-framework-hono");
595
615
  });
596
- it("should get default methodology skills", () => {
597
- const store = useWizardStore.getState();
598
- const skills = store.getDefaultMethodologySkills();
599
- for (const skill of DEFAULT_PRESELECTED_SKILLS) {
600
- globalExpect(skills).toContain(skill);
601
- }
602
- });
603
616
  it("should get selected technologies per domain", () => {
604
617
  const store = useWizardStore.getState();
605
618
  store.toggleTechnology("web", "web-framework", "web-framework-react", true);
@@ -692,10 +705,14 @@ describe("WizardStore", () => {
692
705
  web: { "web-framework": [sa("web-framework-react", true)] }
693
706
  }
694
707
  };
695
- const categories = {
696
- "web-framework": { domain: "web" }
697
- };
698
- store.populateFromStack(stack, categories);
708
+ useMatrixStore.getState().setMatrix(
709
+ createMockMatrix(SKILLS, {
710
+ categories: {
711
+ "web-framework": { domain: "web" }
712
+ }
713
+ })
714
+ );
715
+ store.populateFromStack(stack);
699
716
  const { selectedDomains, domainSelections } = useWizardStore.getState();
700
717
  globalExpect(selectedDomains).toEqual(["web", "api", "mobile", "cli", "shared"]);
701
718
  globalExpect(domainSelections.web).toBeDefined();
@@ -713,12 +730,16 @@ describe("WizardStore", () => {
713
730
  api: { "api-api": [sa("api-framework-hono", true)] }
714
731
  }
715
732
  };
716
- const categories = {
717
- "web-framework": { domain: "web" },
718
- "web-client-state": { domain: "web" },
719
- "api-api": { domain: "api" }
720
- };
721
- store.populateFromStack(stack, categories);
733
+ useMatrixStore.getState().setMatrix(
734
+ createMockMatrix(SKILLS, {
735
+ categories: {
736
+ "web-framework": { domain: "web" },
737
+ "web-client-state": { domain: "web" },
738
+ "api-api": { domain: "api" }
739
+ }
740
+ })
741
+ );
742
+ store.populateFromStack(stack);
722
743
  const { domainSelections } = useWizardStore.getState();
723
744
  globalExpect(domainSelections.web["web-framework"]).toEqual(["web-framework-react"]);
724
745
  globalExpect(domainSelections.web["web-client-state"]).toEqual(["web-state-zustand"]);
@@ -731,10 +752,14 @@ describe("WizardStore", () => {
731
752
  misc: { "shared-methodology": [sa("meta-methodology-vitest")] }
732
753
  }
733
754
  };
734
- const categories = {
735
- "shared-methodology": {}
736
- };
737
- store.populateFromStack(stack, categories);
755
+ useMatrixStore.getState().setMatrix(
756
+ createMockMatrix(SKILLS, {
757
+ categories: {
758
+ "shared-methodology": {}
759
+ }
760
+ })
761
+ );
762
+ store.populateFromStack(stack);
738
763
  const { domainSelections } = useWizardStore.getState();
739
764
  globalExpect(typedKeys(domainSelections)).toHaveLength(0);
740
765
  });
@@ -751,10 +776,14 @@ describe("WizardStore", () => {
751
776
  }
752
777
  }
753
778
  };
754
- const categories = {
755
- "shared-methodology": { domain: "shared" }
756
- };
757
- store.populateFromStack(stack, categories);
779
+ useMatrixStore.getState().setMatrix(
780
+ createMockMatrix(SKILLS, {
781
+ categories: {
782
+ "shared-methodology": { domain: "shared" }
783
+ }
784
+ })
785
+ );
786
+ store.populateFromStack(stack);
758
787
  const { domainSelections } = useWizardStore.getState();
759
788
  globalExpect(domainSelections.shared["shared-methodology"]).toEqual([
760
789
  "meta-methodology-investigation-requirements",
@@ -776,12 +805,16 @@ describe("WizardStore", () => {
776
805
  api: { "api-api": [sa("api-framework-hono", true)] }
777
806
  }
778
807
  };
779
- const categories = {
780
- "web-framework": { domain: "web" },
781
- "shared-methodology": { domain: "shared" },
782
- "api-api": { domain: "api" }
783
- };
784
- store.populateFromStack(stack, categories);
808
+ useMatrixStore.getState().setMatrix(
809
+ createMockMatrix(SKILLS, {
810
+ categories: {
811
+ "web-framework": { domain: "web" },
812
+ "shared-methodology": { domain: "shared" },
813
+ "api-api": { domain: "api" }
814
+ }
815
+ })
816
+ );
817
+ store.populateFromStack(stack);
785
818
  const { domainSelections } = useWizardStore.getState();
786
819
  globalExpect(domainSelections.web["web-framework"]).toEqual(["web-framework-react"]);
787
820
  globalExpect(domainSelections.shared["shared-methodology"]).toEqual([
@@ -808,10 +841,14 @@ describe("WizardStore", () => {
808
841
  }
809
842
  }
810
843
  };
811
- const categories = {
812
- "shared-methodology": { domain: "shared" }
813
- };
814
- store.populateFromStack(stack, categories);
844
+ useMatrixStore.getState().setMatrix(
845
+ createMockMatrix(SKILLS, {
846
+ categories: {
847
+ "shared-methodology": { domain: "shared" }
848
+ }
849
+ })
850
+ );
851
+ store.populateFromStack(stack);
815
852
  const { domainSelections } = useWizardStore.getState();
816
853
  globalExpect(domainSelections.shared["shared-methodology"]).toEqual([
817
854
  "meta-methodology-investigation-requirements",
@@ -876,15 +913,15 @@ describe("WizardStore", () => {
876
913
  it("should sort local sources before scoped marketplace sources", () => {
877
914
  const store = useWizardStore.getState();
878
915
  const skill = {
879
- ...getTestSkill("react"),
916
+ ...SKILLS.react,
880
917
  availableSources: [
881
918
  makeSource({ name: "Acme Corp", type: "private", primary: true }),
882
919
  makeSource({ name: "local", type: "local", installed: true, installMode: "local" })
883
920
  ]
884
921
  };
885
- const matrix = createMockMatrix({ "web-framework-react": skill });
922
+ useMatrixStore.getState().setMatrix(createMockMatrix(skill));
886
923
  store.toggleTechnology("web", "web-framework", "web-framework-react", true);
887
- const rows = store.buildSourceRows(matrix);
924
+ const rows = store.buildSourceRows();
888
925
  globalExpect(rows).toHaveLength(1);
889
926
  globalExpect(rows[0].options[0].id).toBe("local");
890
927
  globalExpect(rows[0].options[1].id).toBe("Acme Corp");
@@ -892,15 +929,15 @@ describe("WizardStore", () => {
892
929
  it("should sort scoped marketplace before default public marketplace", () => {
893
930
  const store = useWizardStore.getState();
894
931
  const skill = {
895
- ...getTestSkill("react"),
932
+ ...SKILLS.react,
896
933
  availableSources: [
897
934
  makeSource({ name: "agents-inc", type: "public" }),
898
935
  makeSource({ name: "Acme Corp", type: "private", primary: true })
899
936
  ]
900
937
  };
901
- const matrix = createMockMatrix({ "web-framework-react": skill });
938
+ useMatrixStore.getState().setMatrix(createMockMatrix(skill));
902
939
  store.toggleTechnology("web", "web-framework", "web-framework-react", true);
903
- const rows = store.buildSourceRows(matrix);
940
+ const rows = store.buildSourceRows();
904
941
  globalExpect(rows).toHaveLength(1);
905
942
  globalExpect(rows[0].options[0].id).toBe("local");
906
943
  globalExpect(rows[0].options[1].id).toBe("Acme Corp");
@@ -909,15 +946,15 @@ describe("WizardStore", () => {
909
946
  it("should sort default public marketplace before third-party sources", () => {
910
947
  const store = useWizardStore.getState();
911
948
  const skill = {
912
- ...getTestSkill("react"),
949
+ ...SKILLS.react,
913
950
  availableSources: [
914
951
  makeSource({ name: "Extra Corp", type: "private" }),
915
952
  makeSource({ name: "agents-inc", type: "public" })
916
953
  ]
917
954
  };
918
- const matrix = createMockMatrix({ "web-framework-react": skill });
955
+ useMatrixStore.getState().setMatrix(createMockMatrix(skill));
919
956
  store.toggleTechnology("web", "web-framework", "web-framework-react", true);
920
- const rows = store.buildSourceRows(matrix);
957
+ const rows = store.buildSourceRows();
921
958
  globalExpect(rows).toHaveLength(1);
922
959
  globalExpect(rows[0].options[0].id).toBe("local");
923
960
  globalExpect(rows[0].options[1].id).toBe("agents-inc");
@@ -926,7 +963,7 @@ describe("WizardStore", () => {
926
963
  it("should sort all four tiers in correct order", () => {
927
964
  const store = useWizardStore.getState();
928
965
  const skill = {
929
- ...getTestSkill("react"),
966
+ ...SKILLS.react,
930
967
  availableSources: [
931
968
  makeSource({ name: "Extra Corp", type: "private" }),
932
969
  makeSource({ name: "agents-inc", type: "public" }),
@@ -934,9 +971,9 @@ describe("WizardStore", () => {
934
971
  makeSource({ name: "local", type: "local", installed: true, installMode: "local" })
935
972
  ]
936
973
  };
937
- const matrix = createMockMatrix({ "web-framework-react": skill });
974
+ useMatrixStore.getState().setMatrix(createMockMatrix(skill));
938
975
  store.toggleTechnology("web", "web-framework", "web-framework-react", true);
939
- const rows = store.buildSourceRows(matrix);
976
+ const rows = store.buildSourceRows();
940
977
  globalExpect(rows).toHaveLength(1);
941
978
  const sourceNames = rows[0].options.map((opt) => opt.id);
942
979
  globalExpect(sourceNames).toEqual(["local", "Acme Corp", "agents-inc", "Extra Corp"]);
@@ -985,7 +1022,7 @@ describe("WizardStore", () => {
985
1022
  const store = useWizardStore.getState();
986
1023
  store.toggleAgent("web-developer");
987
1024
  const { agentConfigs } = useWizardStore.getState();
988
- globalExpect(agentConfigs).toEqual([{ name: "web-developer", scope: "project" }]);
1025
+ globalExpect(agentConfigs).toEqual([{ name: "web-developer", scope: "global" }]);
989
1026
  });
990
1027
  it("should remove from agentConfigs when agent is toggled off", () => {
991
1028
  const store = useWizardStore.getState();
@@ -994,15 +1031,15 @@ describe("WizardStore", () => {
994
1031
  const { agentConfigs } = useWizardStore.getState();
995
1032
  globalExpect(agentConfigs).toEqual([]);
996
1033
  });
997
- it("should toggle agent scope between project and global", () => {
1034
+ it("should toggle agent scope between global and project", () => {
998
1035
  const store = useWizardStore.getState();
999
1036
  store.toggleAgent("web-developer");
1000
1037
  store.toggleAgentScope("web-developer");
1001
1038
  const { agentConfigs } = useWizardStore.getState();
1002
- globalExpect(agentConfigs).toEqual([{ name: "web-developer", scope: "global" }]);
1039
+ globalExpect(agentConfigs).toEqual([{ name: "web-developer", scope: "project" }]);
1003
1040
  store.toggleAgentScope("web-developer");
1004
1041
  globalExpect(useWizardStore.getState().agentConfigs).toEqual([
1005
- { name: "web-developer", scope: "project" }
1042
+ { name: "web-developer", scope: "global" }
1006
1043
  ]);
1007
1044
  });
1008
1045
  it("should set and clear focusedAgentId", () => {
@@ -1026,7 +1063,7 @@ describe("WizardStore", () => {
1026
1063
  useWizardStore.setState({ lockedAgentNames: ["web-developer"] });
1027
1064
  store.toggleAgentScope("web-developer");
1028
1065
  const { agentConfigs } = useWizardStore.getState();
1029
- globalExpect(agentConfigs).toEqual([{ name: "web-developer", scope: "project" }]);
1066
+ globalExpect(agentConfigs).toEqual([{ name: "web-developer", scope: "global" }]);
1030
1067
  });
1031
1068
  });
1032
1069
  describe("preselectAgentsFromDomains", () => {