@agents-inc/cli 0.61.0 → 0.64.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 (212) hide show
  1. package/CHANGELOG.md +36 -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-7FMEMXJ4.js → chunk-MOMI77PL.js} +100 -59
  47. package/dist/chunk-MOMI77PL.js.map +1 -0
  48. package/dist/{chunk-BFD5NZQ4.js → chunk-MVYJVKVT.js} +19 -11
  49. package/dist/chunk-MVYJVKVT.js.map +1 -0
  50. package/dist/{chunk-X5EG4EFP.js → chunk-MWGDG4QN.js} +2 -2
  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 +65 -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 +28 -25
  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 +28 -34
  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 +17 -14
  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 +42 -38
  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 +146 -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 +159 -107
  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.map +0 -1
  177. package/dist/chunk-AX3SZZWA.js.map +0 -1
  178. package/dist/chunk-BFD5NZQ4.js.map +0 -1
  179. package/dist/chunk-BKJHAJQW.js.map +0 -1
  180. package/dist/chunk-FWMWWE3X.js.map +0 -1
  181. package/dist/chunk-GH2RQ4MI.js.map +0 -1
  182. package/dist/chunk-H5DASUX5.js.map +0 -1
  183. package/dist/chunk-H7WJK7NJ.js.map +0 -1
  184. package/dist/chunk-IGM6HA3S.js.map +0 -1
  185. package/dist/chunk-KD2YS76O.js +0 -151
  186. package/dist/chunk-KD2YS76O.js.map +0 -1
  187. package/dist/chunk-KDO6WU76.js.map +0 -1
  188. package/dist/chunk-KIWFEBKH.js.map +0 -1
  189. package/dist/chunk-M6YWRMXH.js.map +0 -1
  190. package/dist/chunk-MMFQNJPE.js.map +0 -1
  191. package/dist/chunk-MR6OBL3B.js.map +0 -1
  192. package/dist/chunk-O6BA7Q2B.js.map +0 -1
  193. package/dist/chunk-SDKCQXWE.js.map +0 -1
  194. package/dist/chunk-WHISPMAQ.js.map +0 -1
  195. package/dist/chunk-YHOHLNHM.js.map +0 -1
  196. package/dist/chunk-Z3TM4N37.js.map +0 -1
  197. /package/dist/{chunk-MGNYPVOJ.js.map → chunk-AQYAVLZK.js.map} +0 -0
  198. /package/dist/{chunk-BNQ5O6LE.js.map → chunk-AUNBGZS4.js.map} +0 -0
  199. /package/dist/{chunk-VR3CDXDT.js.map → chunk-EE5EPS32.js.map} +0 -0
  200. /package/dist/{chunk-OCEFD7V6.js.map → chunk-F3REOP7N.js.map} +0 -0
  201. /package/dist/{chunk-C577AJE7.js.map → chunk-FGLUQSVU.js.map} +0 -0
  202. /package/dist/{chunk-X5EG4EFP.js.map → chunk-MWGDG4QN.js.map} +0 -0
  203. /package/dist/{chunk-CIG7IKX3.js.map → chunk-OV5UJWS5.js.map} +0 -0
  204. /package/dist/{chunk-IEEVXLJB.js.map → chunk-R46CB36B.js.map} +0 -0
  205. /package/dist/{chunk-XUDTFI4M.js.map → chunk-T5DJCIUP.js.map} +0 -0
  206. /package/dist/{chunk-AJJJE7F7.js.map → chunk-TQLDQ3XZ.js.map} +0 -0
  207. /package/dist/{chunk-WYVDNGJB.js.map → chunk-XMLCXRTS.js.map} +0 -0
  208. /package/dist/{chunk-SDLDPFNV.js.map → chunk-YEGPTBX5.js.map} +0 -0
  209. /package/dist/{chunk-SRBN6RRD.js.map → chunk-ZFY5EMDV.js.map} +0 -0
  210. /package/dist/{loader-2O32KKAQ.js.map → loader-4YOZCFIP.js.map} +0 -0
  211. /package/dist/{source-loader-KMEBBZCQ.js.map → source-loader-O5RMYUBW.js.map} +0 -0
  212. /package/dist/{source-manager-5XBSPJNR.js.map → source-manager-NKLL6HCL.js.map} +0 -0
@@ -4,7 +4,7 @@ import {
4
4
  TEST_SKILLS,
5
5
  createMockMatrix,
6
6
  getTestSkill
7
- } from "../chunk-7FMEMXJ4.js";
7
+ } from "../chunk-MOMI77PL.js";
8
8
  import {
9
9
  beforeEach,
10
10
  describe,
@@ -13,16 +13,17 @@ import {
13
13
  } from "../chunk-XY3XDVMI.js";
14
14
  import {
15
15
  useWizardStore
16
- } from "../chunk-IGM6HA3S.js";
17
- import "../chunk-FWMWWE3X.js";
18
- import "../chunk-OCEFD7V6.js";
16
+ } from "../chunk-4C7CSZC5.js";
17
+ import "../chunk-53URJ5XK.js";
18
+ import "../chunk-F3REOP7N.js";
19
19
  import {
20
20
  typedKeys
21
21
  } from "../chunk-T4EXUIBY.js";
22
- import "../chunk-LWXRUR6B.js";
23
22
  import {
24
- DEFAULT_PRESELECTED_SKILLS
25
- } from "../chunk-6OWHQ7HM.js";
23
+ useMatrixStore
24
+ } from "../chunk-BKL3DF2Q.js";
25
+ import "../chunk-LMZXL5RQ.js";
26
+ import "../chunk-EGMQ3SXN.js";
26
27
  import "../chunk-EC3UJRKZ.js";
27
28
  import {
28
29
  init_esm_shims
@@ -35,7 +36,11 @@ function sa(id, preloaded = false) {
35
36
  }
36
37
  describe("WizardStore", () => {
37
38
  beforeEach(() => {
38
- useWizardStore.getState().reset();
39
+ useMatrixStore.getState().setMatrix(
40
+ createMockMatrix(TEST_SKILLS, {
41
+ categories: TEST_CATEGORIES
42
+ })
43
+ );
39
44
  });
40
45
  describe("initial state", () => {
41
46
  it("should start at stack step", () => {
@@ -207,12 +212,16 @@ describe("WizardStore", () => {
207
212
  api: { "api-api": [sa("api-framework-hono", true)] }
208
213
  }
209
214
  };
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);
215
+ useMatrixStore.getState().setMatrix(
216
+ createMockMatrix(TEST_SKILLS, {
217
+ categories: {
218
+ "web-framework": { domain: "web" },
219
+ "web-client-state": { domain: "web" },
220
+ "api-api": { domain: "api" }
221
+ }
222
+ })
223
+ );
224
+ store.populateFromStack(stack);
216
225
  store.toggleDomain("web");
217
226
  globalExpect(useWizardStore.getState().domainSelections.web).toBeUndefined();
218
227
  store.toggleDomain("web");
@@ -222,15 +231,21 @@ describe("WizardStore", () => {
222
231
  });
223
232
  it("should restore stack skills when re-toggling a domain ON after populateFromSkillIds", () => {
224
233
  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);
234
+ useMatrixStore.getState().setMatrix(
235
+ createMockMatrix(
236
+ {
237
+ "web-framework-react": TEST_SKILLS.react,
238
+ "api-framework-hono": TEST_SKILLS.hono
239
+ },
240
+ {
241
+ categories: {
242
+ "web-framework": TEST_CATEGORIES.framework,
243
+ "api-api": TEST_CATEGORIES.api
244
+ }
245
+ }
246
+ )
247
+ );
248
+ store.populateFromSkillIds(["web-framework-react", "api-framework-hono"]);
234
249
  store.toggleDomain("web");
235
250
  globalExpect(useWizardStore.getState().domainSelections.web).toBeUndefined();
236
251
  store.toggleDomain("web");
@@ -255,11 +270,15 @@ describe("WizardStore", () => {
255
270
  api: { "api-api": [sa("api-framework-hono", true)] }
256
271
  }
257
272
  };
258
- const categories = {
259
- "web-framework": { domain: "web" },
260
- "api-api": { domain: "api" }
261
- };
262
- store.populateFromStack(stack, categories);
273
+ useMatrixStore.getState().setMatrix(
274
+ createMockMatrix(TEST_SKILLS, {
275
+ categories: {
276
+ "web-framework": { domain: "web" },
277
+ "api-api": { domain: "api" }
278
+ }
279
+ })
280
+ );
281
+ store.populateFromStack(stack);
263
282
  store.toggleTechnology("api", "api-api", "api-framework-hono", true);
264
283
  store.toggleTechnology("api", "api-api", "api-framework-express", true);
265
284
  store.toggleDomain("web");
@@ -419,7 +438,7 @@ describe("WizardStore", () => {
419
438
  globalExpect(skillConfigs).toHaveLength(1);
420
439
  globalExpect(skillConfigs[0]).toEqual({
421
440
  id: "web-framework-react",
422
- scope: "project",
441
+ scope: "global",
423
442
  source: "agents-inc"
424
443
  });
425
444
  });
@@ -449,20 +468,20 @@ describe("WizardStore", () => {
449
468
  "web-testing-playwright-e2e"
450
469
  ]);
451
470
  });
452
- it("should toggle skill scope between project and global", () => {
471
+ it("should toggle skill scope between global and project", () => {
453
472
  const store = useWizardStore.getState();
454
473
  store.toggleTechnology("web", "web-framework", "web-framework-react", true);
455
474
  store.toggleSkillScope("web-framework-react");
456
475
  const { skillConfigs } = useWizardStore.getState();
457
- globalExpect(skillConfigs[0].scope).toBe("global");
476
+ globalExpect(skillConfigs[0].scope).toBe("project");
458
477
  });
459
- it("should toggle skill scope back to project", () => {
478
+ it("should toggle skill scope back to global", () => {
460
479
  const store = useWizardStore.getState();
461
480
  store.toggleTechnology("web", "web-framework", "web-framework-react", true);
462
481
  store.toggleSkillScope("web-framework-react");
463
482
  store.toggleSkillScope("web-framework-react");
464
483
  const { skillConfigs } = useWizardStore.getState();
465
- globalExpect(skillConfigs[0].scope).toBe("project");
484
+ globalExpect(skillConfigs[0].scope).toBe("global");
466
485
  });
467
486
  it("should update source via setSkillSource", () => {
468
487
  const store = useWizardStore.getState();
@@ -495,28 +514,38 @@ describe("WizardStore", () => {
495
514
  }
496
515
  }
497
516
  };
498
- const categories = {
499
- "web-framework": { domain: "web" },
500
- "web-client-state": { domain: "web" }
501
- };
502
- store.populateFromStack(stack, categories);
517
+ useMatrixStore.getState().setMatrix(
518
+ createMockMatrix(TEST_SKILLS, {
519
+ categories: {
520
+ "web-framework": { domain: "web" },
521
+ "web-client-state": { domain: "web" }
522
+ }
523
+ })
524
+ );
525
+ store.populateFromStack(stack);
503
526
  const { skillConfigs } = useWizardStore.getState();
504
527
  globalExpect(skillConfigs).toHaveLength(2);
505
528
  globalExpect(skillConfigs.map((sc) => sc.id)).toEqual(["web-framework-react", "web-state-zustand"]);
506
- globalExpect(skillConfigs.every((sc) => sc.scope === "project")).toBe(true);
529
+ globalExpect(skillConfigs.every((sc) => sc.scope === "global")).toBe(true);
507
530
  globalExpect(skillConfigs.every((sc) => sc.source === "agents-inc")).toBe(true);
508
531
  });
509
532
  it("should populate skillConfigs from populateFromSkillIds", () => {
510
533
  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);
534
+ useMatrixStore.getState().setMatrix(
535
+ createMockMatrix(
536
+ {
537
+ "web-framework-react": TEST_SKILLS.react,
538
+ "api-framework-hono": TEST_SKILLS.hono
539
+ },
540
+ {
541
+ categories: {
542
+ "web-framework": TEST_CATEGORIES.framework,
543
+ "api-api": TEST_CATEGORIES.api
544
+ }
545
+ }
546
+ )
547
+ );
548
+ store.populateFromSkillIds(["web-framework-react", "api-framework-hono"]);
520
549
  const { skillConfigs } = useWizardStore.getState();
521
550
  globalExpect(skillConfigs).toHaveLength(2);
522
551
  globalExpect(skillConfigs.map((sc) => sc.id)).toEqual([
@@ -539,10 +568,14 @@ describe("WizardStore", () => {
539
568
  web: { "web-framework": [sa("web-framework-react", true)] }
540
569
  }
541
570
  };
542
- const categories = {
543
- "web-framework": { domain: "web" }
544
- };
545
- store.populateFromStack(stack, categories);
571
+ useMatrixStore.getState().setMatrix(
572
+ createMockMatrix(TEST_SKILLS, {
573
+ categories: {
574
+ "web-framework": { domain: "web" }
575
+ }
576
+ })
577
+ );
578
+ store.populateFromStack(stack);
546
579
  globalExpect(useWizardStore.getState().skillConfigs).toHaveLength(1);
547
580
  store.toggleDomain("web");
548
581
  globalExpect(useWizardStore.getState().skillConfigs).toHaveLength(0);
@@ -571,13 +604,15 @@ describe("WizardStore", () => {
571
604
  const store = useWizardStore.getState();
572
605
  store.toggleTechnology("web", "web-framework", "web-framework-react", true);
573
606
  store.setSourceSelection("web-framework-react", "local");
574
- const matrix = createMockMatrix({
575
- "web-framework-react": {
576
- ...getTestSkill("react"),
577
- availableSources: [{ name: "Acme Corp", type: "private", installed: false }]
578
- }
579
- });
580
- store.setAllSourcesPlugin(matrix);
607
+ useMatrixStore.getState().setMatrix(
608
+ createMockMatrix({
609
+ "web-framework-react": {
610
+ ...getTestSkill("react"),
611
+ availableSources: [{ name: "Acme Corp", type: "private", installed: false }]
612
+ }
613
+ })
614
+ );
615
+ store.setAllSourcesPlugin();
581
616
  const { skillConfigs } = useWizardStore.getState();
582
617
  globalExpect(skillConfigs[0].source).toBe("Acme Corp");
583
618
  });
@@ -593,13 +628,6 @@ describe("WizardStore", () => {
593
628
  globalExpect(technologies).toContain("web-styling-scss-modules");
594
629
  globalExpect(technologies).toContain("api-framework-hono");
595
630
  });
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
631
  it("should get selected technologies per domain", () => {
604
632
  const store = useWizardStore.getState();
605
633
  store.toggleTechnology("web", "web-framework", "web-framework-react", true);
@@ -692,10 +720,14 @@ describe("WizardStore", () => {
692
720
  web: { "web-framework": [sa("web-framework-react", true)] }
693
721
  }
694
722
  };
695
- const categories = {
696
- "web-framework": { domain: "web" }
697
- };
698
- store.populateFromStack(stack, categories);
723
+ useMatrixStore.getState().setMatrix(
724
+ createMockMatrix(TEST_SKILLS, {
725
+ categories: {
726
+ "web-framework": { domain: "web" }
727
+ }
728
+ })
729
+ );
730
+ store.populateFromStack(stack);
699
731
  const { selectedDomains, domainSelections } = useWizardStore.getState();
700
732
  globalExpect(selectedDomains).toEqual(["web", "api", "mobile", "cli", "shared"]);
701
733
  globalExpect(domainSelections.web).toBeDefined();
@@ -713,12 +745,16 @@ describe("WizardStore", () => {
713
745
  api: { "api-api": [sa("api-framework-hono", true)] }
714
746
  }
715
747
  };
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);
748
+ useMatrixStore.getState().setMatrix(
749
+ createMockMatrix(TEST_SKILLS, {
750
+ categories: {
751
+ "web-framework": { domain: "web" },
752
+ "web-client-state": { domain: "web" },
753
+ "api-api": { domain: "api" }
754
+ }
755
+ })
756
+ );
757
+ store.populateFromStack(stack);
722
758
  const { domainSelections } = useWizardStore.getState();
723
759
  globalExpect(domainSelections.web["web-framework"]).toEqual(["web-framework-react"]);
724
760
  globalExpect(domainSelections.web["web-client-state"]).toEqual(["web-state-zustand"]);
@@ -731,10 +767,14 @@ describe("WizardStore", () => {
731
767
  misc: { "shared-methodology": [sa("meta-methodology-vitest")] }
732
768
  }
733
769
  };
734
- const categories = {
735
- "shared-methodology": {}
736
- };
737
- store.populateFromStack(stack, categories);
770
+ useMatrixStore.getState().setMatrix(
771
+ createMockMatrix(TEST_SKILLS, {
772
+ categories: {
773
+ "shared-methodology": {}
774
+ }
775
+ })
776
+ );
777
+ store.populateFromStack(stack);
738
778
  const { domainSelections } = useWizardStore.getState();
739
779
  globalExpect(typedKeys(domainSelections)).toHaveLength(0);
740
780
  });
@@ -751,10 +791,14 @@ describe("WizardStore", () => {
751
791
  }
752
792
  }
753
793
  };
754
- const categories = {
755
- "shared-methodology": { domain: "shared" }
756
- };
757
- store.populateFromStack(stack, categories);
794
+ useMatrixStore.getState().setMatrix(
795
+ createMockMatrix(TEST_SKILLS, {
796
+ categories: {
797
+ "shared-methodology": { domain: "shared" }
798
+ }
799
+ })
800
+ );
801
+ store.populateFromStack(stack);
758
802
  const { domainSelections } = useWizardStore.getState();
759
803
  globalExpect(domainSelections.shared["shared-methodology"]).toEqual([
760
804
  "meta-methodology-investigation-requirements",
@@ -776,12 +820,16 @@ describe("WizardStore", () => {
776
820
  api: { "api-api": [sa("api-framework-hono", true)] }
777
821
  }
778
822
  };
779
- const categories = {
780
- "web-framework": { domain: "web" },
781
- "shared-methodology": { domain: "shared" },
782
- "api-api": { domain: "api" }
783
- };
784
- store.populateFromStack(stack, categories);
823
+ useMatrixStore.getState().setMatrix(
824
+ createMockMatrix(TEST_SKILLS, {
825
+ categories: {
826
+ "web-framework": { domain: "web" },
827
+ "shared-methodology": { domain: "shared" },
828
+ "api-api": { domain: "api" }
829
+ }
830
+ })
831
+ );
832
+ store.populateFromStack(stack);
785
833
  const { domainSelections } = useWizardStore.getState();
786
834
  globalExpect(domainSelections.web["web-framework"]).toEqual(["web-framework-react"]);
787
835
  globalExpect(domainSelections.shared["shared-methodology"]).toEqual([
@@ -808,10 +856,14 @@ describe("WizardStore", () => {
808
856
  }
809
857
  }
810
858
  };
811
- const categories = {
812
- "shared-methodology": { domain: "shared" }
813
- };
814
- store.populateFromStack(stack, categories);
859
+ useMatrixStore.getState().setMatrix(
860
+ createMockMatrix(TEST_SKILLS, {
861
+ categories: {
862
+ "shared-methodology": { domain: "shared" }
863
+ }
864
+ })
865
+ );
866
+ store.populateFromStack(stack);
815
867
  const { domainSelections } = useWizardStore.getState();
816
868
  globalExpect(domainSelections.shared["shared-methodology"]).toEqual([
817
869
  "meta-methodology-investigation-requirements",
@@ -882,9 +934,9 @@ describe("WizardStore", () => {
882
934
  makeSource({ name: "local", type: "local", installed: true, installMode: "local" })
883
935
  ]
884
936
  };
885
- const matrix = createMockMatrix({ "web-framework-react": skill });
937
+ useMatrixStore.getState().setMatrix(createMockMatrix({ "web-framework-react": skill }));
886
938
  store.toggleTechnology("web", "web-framework", "web-framework-react", true);
887
- const rows = store.buildSourceRows(matrix);
939
+ const rows = store.buildSourceRows();
888
940
  globalExpect(rows).toHaveLength(1);
889
941
  globalExpect(rows[0].options[0].id).toBe("local");
890
942
  globalExpect(rows[0].options[1].id).toBe("Acme Corp");
@@ -898,9 +950,9 @@ describe("WizardStore", () => {
898
950
  makeSource({ name: "Acme Corp", type: "private", primary: true })
899
951
  ]
900
952
  };
901
- const matrix = createMockMatrix({ "web-framework-react": skill });
953
+ useMatrixStore.getState().setMatrix(createMockMatrix({ "web-framework-react": skill }));
902
954
  store.toggleTechnology("web", "web-framework", "web-framework-react", true);
903
- const rows = store.buildSourceRows(matrix);
955
+ const rows = store.buildSourceRows();
904
956
  globalExpect(rows).toHaveLength(1);
905
957
  globalExpect(rows[0].options[0].id).toBe("local");
906
958
  globalExpect(rows[0].options[1].id).toBe("Acme Corp");
@@ -915,9 +967,9 @@ describe("WizardStore", () => {
915
967
  makeSource({ name: "agents-inc", type: "public" })
916
968
  ]
917
969
  };
918
- const matrix = createMockMatrix({ "web-framework-react": skill });
970
+ useMatrixStore.getState().setMatrix(createMockMatrix({ "web-framework-react": skill }));
919
971
  store.toggleTechnology("web", "web-framework", "web-framework-react", true);
920
- const rows = store.buildSourceRows(matrix);
972
+ const rows = store.buildSourceRows();
921
973
  globalExpect(rows).toHaveLength(1);
922
974
  globalExpect(rows[0].options[0].id).toBe("local");
923
975
  globalExpect(rows[0].options[1].id).toBe("agents-inc");
@@ -934,9 +986,9 @@ describe("WizardStore", () => {
934
986
  makeSource({ name: "local", type: "local", installed: true, installMode: "local" })
935
987
  ]
936
988
  };
937
- const matrix = createMockMatrix({ "web-framework-react": skill });
989
+ useMatrixStore.getState().setMatrix(createMockMatrix({ "web-framework-react": skill }));
938
990
  store.toggleTechnology("web", "web-framework", "web-framework-react", true);
939
- const rows = store.buildSourceRows(matrix);
991
+ const rows = store.buildSourceRows();
940
992
  globalExpect(rows).toHaveLength(1);
941
993
  const sourceNames = rows[0].options.map((opt) => opt.id);
942
994
  globalExpect(sourceNames).toEqual(["local", "Acme Corp", "agents-inc", "Extra Corp"]);
@@ -985,7 +1037,7 @@ describe("WizardStore", () => {
985
1037
  const store = useWizardStore.getState();
986
1038
  store.toggleAgent("web-developer");
987
1039
  const { agentConfigs } = useWizardStore.getState();
988
- globalExpect(agentConfigs).toEqual([{ name: "web-developer", scope: "project" }]);
1040
+ globalExpect(agentConfigs).toEqual([{ name: "web-developer", scope: "global" }]);
989
1041
  });
990
1042
  it("should remove from agentConfigs when agent is toggled off", () => {
991
1043
  const store = useWizardStore.getState();
@@ -994,15 +1046,15 @@ describe("WizardStore", () => {
994
1046
  const { agentConfigs } = useWizardStore.getState();
995
1047
  globalExpect(agentConfigs).toEqual([]);
996
1048
  });
997
- it("should toggle agent scope between project and global", () => {
1049
+ it("should toggle agent scope between global and project", () => {
998
1050
  const store = useWizardStore.getState();
999
1051
  store.toggleAgent("web-developer");
1000
1052
  store.toggleAgentScope("web-developer");
1001
1053
  const { agentConfigs } = useWizardStore.getState();
1002
- globalExpect(agentConfigs).toEqual([{ name: "web-developer", scope: "global" }]);
1054
+ globalExpect(agentConfigs).toEqual([{ name: "web-developer", scope: "project" }]);
1003
1055
  store.toggleAgentScope("web-developer");
1004
1056
  globalExpect(useWizardStore.getState().agentConfigs).toEqual([
1005
- { name: "web-developer", scope: "project" }
1057
+ { name: "web-developer", scope: "global" }
1006
1058
  ]);
1007
1059
  });
1008
1060
  it("should set and clear focusedAgentId", () => {
@@ -1026,7 +1078,7 @@ describe("WizardStore", () => {
1026
1078
  useWizardStore.setState({ lockedAgentNames: ["web-developer"] });
1027
1079
  store.toggleAgentScope("web-developer");
1028
1080
  const { agentConfigs } = useWizardStore.getState();
1029
- globalExpect(agentConfigs).toEqual([{ name: "web-developer", scope: "project" }]);
1081
+ globalExpect(agentConfigs).toEqual([{ name: "web-developer", scope: "global" }]);
1030
1082
  });
1031
1083
  });
1032
1084
  describe("preselectAgentsFromDomains", () => {