@agents-inc/cli 0.68.0 → 0.71.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 (110) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/chunk-2MHSOPIU.js +84 -0
  3. package/dist/chunk-2MHSOPIU.js.map +1 -0
  4. package/dist/{chunk-VTRVAXUM.js → chunk-2VT2DMD7.js} +6 -6
  5. package/dist/{chunk-KFDTVSIC.js → chunk-6YMW4HMX.js} +2 -2
  6. package/dist/{chunk-L5LD3ZSR.js → chunk-AX6MMYAZ.js} +4 -4
  7. package/dist/{chunk-45R64U2S.js → chunk-CADG5WWP.js} +13 -11
  8. package/dist/chunk-CADG5WWP.js.map +1 -0
  9. package/dist/chunk-DA3WIZ4C.js +253 -0
  10. package/dist/chunk-DA3WIZ4C.js.map +1 -0
  11. package/dist/chunk-DHBRWGRZ.js +58 -0
  12. package/dist/chunk-DHBRWGRZ.js.map +1 -0
  13. package/dist/{chunk-2JJUPWE5.js → chunk-HWVRHPXR.js} +2 -2
  14. package/dist/{chunk-N4D43IOO.js → chunk-J2D6OBIX.js} +26 -2
  15. package/dist/chunk-J2D6OBIX.js.map +1 -0
  16. package/dist/{chunk-KMDBOO3E.js → chunk-KANNRFY7.js} +2 -2
  17. package/dist/{chunk-SSGPFKS4.js → chunk-KSAGOKWT.js} +2 -2
  18. package/dist/{chunk-EULHBV5V.js → chunk-QOJAZI72.js} +2 -2
  19. package/dist/{chunk-JAWXWNIX.js → chunk-UDAHHJIM.js} +9 -9
  20. package/dist/{chunk-F6KEZ4Y5.js → chunk-UQM5YPPJ.js} +2 -2
  21. package/dist/{chunk-HADHP7XF.js → chunk-V5L532ZH.js} +6 -6
  22. package/dist/{chunk-RMMHVE2R.js → chunk-VUUGWE6G.js} +2 -2
  23. package/dist/chunk-WF5PMBIR.js +54 -0
  24. package/dist/chunk-WF5PMBIR.js.map +1 -0
  25. package/dist/{chunk-GK5CAS3A.js → chunk-X4RIMJNY.js} +2 -2
  26. package/dist/{chunk-QUEO6QEL.js → chunk-XB3TYSPL.js} +2 -2
  27. package/dist/{chunk-7LCI5PSJ.js → chunk-XMZNHLV3.js} +2 -2
  28. package/dist/{chunk-KBG7GYPL.js → chunk-XYRVAEI6.js} +74 -111
  29. package/dist/chunk-XYRVAEI6.js.map +1 -0
  30. package/dist/commands/build/plugins.js +2 -2
  31. package/dist/commands/build/stack.js +2 -2
  32. package/dist/commands/compile.js +2 -2
  33. package/dist/commands/config/index.js +2 -2
  34. package/dist/commands/config/path.js +1 -1
  35. package/dist/commands/config/show.js +2 -2
  36. package/dist/commands/diff.js +1 -1
  37. package/dist/commands/doctor.js +1 -1
  38. package/dist/commands/edit.js +17 -16
  39. package/dist/commands/edit.js.map +1 -1
  40. package/dist/commands/eject.js +1 -1
  41. package/dist/commands/import/skill.js +1 -1
  42. package/dist/commands/info.js +1 -1
  43. package/dist/commands/init.js +17 -16
  44. package/dist/commands/list.js +1 -1
  45. package/dist/commands/new/agent.js +2 -2
  46. package/dist/commands/new/marketplace.js +2 -2
  47. package/dist/commands/new/skill.js +2 -2
  48. package/dist/commands/outdated.js +1 -1
  49. package/dist/commands/search.js +1 -1
  50. package/dist/commands/uninstall.js +1 -1
  51. package/dist/commands/update.js +2 -2
  52. package/dist/commands/validate.js +1 -1
  53. package/dist/components/common/select-list.js +11 -0
  54. package/dist/components/wizard/category-grid.test.js +3 -3
  55. package/dist/components/wizard/domain-selection.js +3 -3
  56. package/dist/components/wizard/search-modal.js +2 -1
  57. package/dist/components/wizard/search-modal.test.js +3 -2
  58. package/dist/components/wizard/search-modal.test.js.map +1 -1
  59. package/dist/components/wizard/source-grid.js +3 -2
  60. package/dist/components/wizard/source-grid.test.js +11 -7
  61. package/dist/components/wizard/source-grid.test.js.map +1 -1
  62. package/dist/components/wizard/stack-selection.js +3 -3
  63. package/dist/components/wizard/step-agents.js +3 -3
  64. package/dist/components/wizard/step-agents.test.js +7 -6
  65. package/dist/components/wizard/step-agents.test.js.map +1 -1
  66. package/dist/components/wizard/step-build.js +4 -4
  67. package/dist/components/wizard/step-build.test.js +14 -49
  68. package/dist/components/wizard/step-build.test.js.map +1 -1
  69. package/dist/components/wizard/step-confirm.test.js +3 -3
  70. package/dist/components/wizard/step-settings.js +2 -2
  71. package/dist/components/wizard/step-settings.test.js +5 -5
  72. package/dist/components/wizard/step-sources.js +7 -6
  73. package/dist/components/wizard/step-sources.test.js +12 -10
  74. package/dist/components/wizard/step-sources.test.js.map +1 -1
  75. package/dist/components/wizard/step-stack.js +6 -6
  76. package/dist/components/wizard/step-stack.test.js +7 -7
  77. package/dist/components/wizard/wizard-layout.js +3 -3
  78. package/dist/components/wizard/wizard.js +16 -15
  79. package/dist/hooks/init.js +17 -16
  80. package/dist/hooks/init.js.map +1 -1
  81. package/dist/{source-loader-YMWWZFVD.js → source-loader-3MZ2MBOF.js} +2 -2
  82. package/dist/{source-manager-6G3EVTU2.js → source-manager-NEH6QXE5.js} +2 -2
  83. package/dist/source-manager-NEH6QXE5.js.map +1 -0
  84. package/dist/stores/matrix-store.test.js +14 -10
  85. package/dist/stores/matrix-store.test.js.map +1 -1
  86. package/dist/stores/wizard-store.js +2 -2
  87. package/dist/stores/wizard-store.test.js +28 -103
  88. package/dist/stores/wizard-store.test.js.map +1 -1
  89. package/package.json +1 -1
  90. package/dist/chunk-45R64U2S.js.map +0 -1
  91. package/dist/chunk-6IK2TCK7.js +0 -97
  92. package/dist/chunk-6IK2TCK7.js.map +0 -1
  93. package/dist/chunk-KBG7GYPL.js.map +0 -1
  94. package/dist/chunk-N4D43IOO.js.map +0 -1
  95. /package/dist/{chunk-VTRVAXUM.js.map → chunk-2VT2DMD7.js.map} +0 -0
  96. /package/dist/{chunk-KFDTVSIC.js.map → chunk-6YMW4HMX.js.map} +0 -0
  97. /package/dist/{chunk-L5LD3ZSR.js.map → chunk-AX6MMYAZ.js.map} +0 -0
  98. /package/dist/{chunk-2JJUPWE5.js.map → chunk-HWVRHPXR.js.map} +0 -0
  99. /package/dist/{chunk-KMDBOO3E.js.map → chunk-KANNRFY7.js.map} +0 -0
  100. /package/dist/{chunk-SSGPFKS4.js.map → chunk-KSAGOKWT.js.map} +0 -0
  101. /package/dist/{chunk-EULHBV5V.js.map → chunk-QOJAZI72.js.map} +0 -0
  102. /package/dist/{chunk-JAWXWNIX.js.map → chunk-UDAHHJIM.js.map} +0 -0
  103. /package/dist/{chunk-F6KEZ4Y5.js.map → chunk-UQM5YPPJ.js.map} +0 -0
  104. /package/dist/{chunk-HADHP7XF.js.map → chunk-V5L532ZH.js.map} +0 -0
  105. /package/dist/{chunk-RMMHVE2R.js.map → chunk-VUUGWE6G.js.map} +0 -0
  106. /package/dist/{chunk-GK5CAS3A.js.map → chunk-X4RIMJNY.js.map} +0 -0
  107. /package/dist/{chunk-QUEO6QEL.js.map → chunk-XB3TYSPL.js.map} +0 -0
  108. /package/dist/{chunk-7LCI5PSJ.js.map → chunk-XMZNHLV3.js.map} +0 -0
  109. /package/dist/{source-loader-YMWWZFVD.js.map → components/common/select-list.js.map} +0 -0
  110. /package/dist/{source-manager-6G3EVTU2.js.map → source-loader-3MZ2MBOF.js.map} +0 -0
@@ -19,7 +19,7 @@ import {
19
19
  } from "../../chunk-XY3XDVMI.js";
20
20
  import {
21
21
  StepSettings
22
- } from "../../chunk-QUEO6QEL.js";
22
+ } from "../../chunk-XB3TYSPL.js";
23
23
  import "../../chunk-7SOPVGDV.js";
24
24
  import "../../chunk-KUV24B5M.js";
25
25
  import "../../chunk-XMLCXRTS.js";
@@ -27,7 +27,7 @@ import "../../chunk-AQYAVLZK.js";
27
27
  import "../../chunk-AUNBGZS4.js";
28
28
  import "../../chunk-U3IGFMCY.js";
29
29
  import "../../chunk-6VIOO74O.js";
30
- import "../../chunk-45R64U2S.js";
30
+ import "../../chunk-CADG5WWP.js";
31
31
  import "../../chunk-L6MTIQ2U.js";
32
32
  import "../../chunk-T4EXUIBY.js";
33
33
  import "../../chunk-BKL3DF2Q.js";
@@ -63,7 +63,7 @@ describe("StepSettings component", () => {
63
63
  let cleanup;
64
64
  beforeEach(async () => {
65
65
  vi.resetAllMocks();
66
- const { getSourceSummary } = await import("../../source-manager-6G3EVTU2.js");
66
+ const { getSourceSummary } = await import("../../source-manager-NEH6QXE5.js");
67
67
  vi.mocked(getSourceSummary).mockResolvedValue({
68
68
  sources: [
69
69
  { name: "public", url: "github:agents-inc/skills", enabled: true },
@@ -224,7 +224,7 @@ describe("StepSettings component", () => {
224
224
  });
225
225
  describe("edge cases", () => {
226
226
  it("should handle empty sources list gracefully", async () => {
227
- const { getSourceSummary } = await import("../../source-manager-6G3EVTU2.js");
227
+ const { getSourceSummary } = await import("../../source-manager-NEH6QXE5.js");
228
228
  vi.mocked(getSourceSummary).mockResolvedValue({
229
229
  sources: [{ name: "public", url: "github:agents-inc/skills", enabled: true }],
230
230
  localSkillCount: 0,
@@ -238,7 +238,7 @@ describe("StepSettings component", () => {
238
238
  globalExpect(output).toContain("0");
239
239
  });
240
240
  it("should handle getSourceSummary failure gracefully", async () => {
241
- const { getSourceSummary } = await import("../../source-manager-6G3EVTU2.js");
241
+ const { getSourceSummary } = await import("../../source-manager-NEH6QXE5.js");
242
242
  vi.mocked(getSourceSummary).mockRejectedValue(new Error("Config read failed"));
243
243
  const { lastFrame, unmount } = renderStepSettings();
244
244
  cleanup = unmount;
@@ -1,20 +1,21 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  StepSources
4
- } from "../../chunk-HADHP7XF.js";
4
+ } from "../../chunk-V5L532ZH.js";
5
5
  import "../../chunk-HGTC76BX.js";
6
+ import "../../chunk-6YMW4HMX.js";
7
+ import "../../chunk-7SOPVGDV.js";
6
8
  import "../../chunk-K77I4XGL.js";
9
+ import "../../chunk-2MHSOPIU.js";
7
10
  import "../../chunk-MWGDG4QN.js";
8
- import "../../chunk-KFDTVSIC.js";
9
- import "../../chunk-7SOPVGDV.js";
10
- import "../../chunk-6IK2TCK7.js";
11
+ import "../../chunk-WF5PMBIR.js";
11
12
  import "../../chunk-KUV24B5M.js";
12
13
  import "../../chunk-GG4BSB6S.js";
13
14
  import "../../chunk-AQYAVLZK.js";
14
15
  import "../../chunk-AUNBGZS4.js";
15
- import "../../chunk-EULHBV5V.js";
16
+ import "../../chunk-QOJAZI72.js";
16
17
  import "../../chunk-6VIOO74O.js";
17
- import "../../chunk-45R64U2S.js";
18
+ import "../../chunk-CADG5WWP.js";
18
19
  import "../../chunk-L6MTIQ2U.js";
19
20
  import "../../chunk-T4EXUIBY.js";
20
21
  import "../../chunk-BKL3DF2Q.js";
@@ -12,9 +12,10 @@ import {
12
12
  render
13
13
  } from "../../chunk-66UDJBF6.js";
14
14
  import {
15
- SKILLS,
16
- createMockMatrix
17
- } from "../../chunk-N4D43IOO.js";
15
+ WEB_PAIR_MATRIX
16
+ } from "../../chunk-DA3WIZ4C.js";
17
+ import "../../chunk-DHBRWGRZ.js";
18
+ import "../../chunk-J2D6OBIX.js";
18
19
  import {
19
20
  afterEach,
20
21
  beforeEach,
@@ -25,22 +26,23 @@ import {
25
26
  } from "../../chunk-XY3XDVMI.js";
26
27
  import {
27
28
  StepSources
28
- } from "../../chunk-HADHP7XF.js";
29
+ } from "../../chunk-V5L532ZH.js";
29
30
  import "../../chunk-HGTC76BX.js";
31
+ import "../../chunk-6YMW4HMX.js";
32
+ import "../../chunk-7SOPVGDV.js";
30
33
  import "../../chunk-K77I4XGL.js";
34
+ import "../../chunk-2MHSOPIU.js";
31
35
  import "../../chunk-MWGDG4QN.js";
32
- import "../../chunk-KFDTVSIC.js";
33
- import "../../chunk-7SOPVGDV.js";
34
- import "../../chunk-6IK2TCK7.js";
36
+ import "../../chunk-WF5PMBIR.js";
35
37
  import "../../chunk-KUV24B5M.js";
36
38
  import "../../chunk-GG4BSB6S.js";
37
39
  import "../../chunk-AQYAVLZK.js";
38
40
  import "../../chunk-AUNBGZS4.js";
39
41
  import {
40
42
  useWizardStore
41
- } from "../../chunk-EULHBV5V.js";
43
+ } from "../../chunk-QOJAZI72.js";
42
44
  import "../../chunk-6VIOO74O.js";
43
- import "../../chunk-45R64U2S.js";
45
+ import "../../chunk-CADG5WWP.js";
44
46
  import "../../chunk-L6MTIQ2U.js";
45
47
  import "../../chunk-T4EXUIBY.js";
46
48
  import {
@@ -59,7 +61,7 @@ import {
59
61
  // src/cli/components/wizard/step-sources.test.tsx
60
62
  init_esm_shims();
61
63
  import { jsx } from "react/jsx-runtime";
62
- var mockMatrix = createMockMatrix(SKILLS.react, SKILLS.zustand);
64
+ var mockMatrix = WEB_PAIR_MATRIX;
63
65
  var defaultProps = {
64
66
  onContinue: vi.fn(),
65
67
  onBack: vi.fn()
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/components/wizard/step-sources.test.tsx"],"sourcesContent":["import { render } from \"ink-testing-library\";\nimport { describe, expect, it, afterEach, beforeEach, vi } from \"vitest\";\nimport { StepSources, type StepSourcesProps } from \"./step-sources\";\nimport { useWizardStore } from \"../../stores/wizard-store\";\nimport { useMatrixStore } from \"../../stores/matrix-store\";\nimport {\n ENTER,\n ESCAPE,\n ARROW_UP,\n ARROW_DOWN,\n RENDER_DELAY_MS,\n INPUT_DELAY_MS,\n delay,\n} from \"../../lib/__tests__/test-constants\";\nimport { createMockMatrix, SKILLS } from \"../../lib/__tests__/helpers\";\nimport { DEFAULT_BRANDING, UI_SYMBOLS } from \"../../consts\";\n\nconst mockMatrix = createMockMatrix(SKILLS.react, SKILLS.zustand);\n\nconst defaultProps: StepSourcesProps = {\n onContinue: vi.fn(),\n onBack: vi.fn(),\n};\n\nconst renderStepSources = (props: Partial<StepSourcesProps> = {}) => {\n return render(<StepSources {...defaultProps} {...props} />);\n};\n\ndescribe(\"StepSources component\", () => {\n let cleanup: (() => void) | undefined;\n\n beforeEach(() => {\n useMatrixStore.getState().setMatrix(mockMatrix);\n // Set up some selected technologies so the step has data to display\n useWizardStore.setState({\n domainSelections: {\n web: {\n \"web-framework\": [\"web-framework-react\"],\n \"web-client-state\": [\"web-state-zustand\"],\n },\n },\n });\n });\n\n afterEach(() => {\n cleanup?.();\n cleanup = undefined;\n });\n\n describe(\"choice view rendering\", () => {\n it(\"should render technology count\", () => {\n const { lastFrame, unmount } = renderStepSources();\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"2\");\n expect(output).toContain(\"technologies\");\n });\n\n it(\"should render 'Use all recommended' option\", () => {\n const { lastFrame, unmount } = renderStepSources();\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"Use all recommended skills (verified)\");\n });\n\n it(\"should render 'Customize skill sources' option\", () => {\n const { lastFrame, unmount } = renderStepSources();\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"Customize skill sources\");\n });\n\n it(\"should render verification description\", () => {\n const { lastFrame, unmount } = renderStepSources();\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"fastest option\");\n expect(output).toContain(\"verified\");\n expect(output).toContain(DEFAULT_BRANDING.NAME);\n });\n\n it(\"should render customize description\", () => {\n const { lastFrame, unmount } = renderStepSources();\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"Choose alternative skills for each technology\");\n });\n\n it(\"should show recommended as default selected\", () => {\n const { lastFrame, unmount } = renderStepSources();\n cleanup = unmount;\n\n const output = lastFrame();\n // The chevron indicator should be on the recommended option\n expect(output).toContain(UI_SYMBOLS.CHEVRON);\n expect(output).toContain(\"Use all recommended\");\n });\n });\n\n describe(\"choice view keyboard navigation\", () => {\n it(\"should toggle options with arrow up\", async () => {\n const { lastFrame, stdin, unmount } = renderStepSources();\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n\n // Initially recommended is selected\n let output = lastFrame();\n expect(output).toContain(\"Use all recommended\");\n\n // Press up to switch to customize\n stdin.write(ARROW_UP);\n await delay(INPUT_DELAY_MS);\n\n output = lastFrame();\n // Both options should still be present\n expect(output).toContain(\"Customize skill sources\");\n });\n\n it(\"should toggle options with arrow down\", async () => {\n const { stdin, unmount } = renderStepSources();\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n stdin.write(ARROW_DOWN);\n await delay(INPUT_DELAY_MS);\n\n // Should have toggled\n });\n\n it(\"should call onContinue when Enter pressed on 'Use all recommended'\", async () => {\n const onContinue = vi.fn();\n const { stdin, unmount } = renderStepSources({ onContinue });\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n stdin.write(ENTER);\n await delay(INPUT_DELAY_MS);\n\n expect(onContinue).toHaveBeenCalledTimes(1);\n });\n\n it(\"should call onBack when Escape pressed\", async () => {\n const onBack = vi.fn();\n const { stdin, unmount } = renderStepSources({ onBack });\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n stdin.write(ESCAPE);\n await delay(INPUT_DELAY_MS);\n\n expect(onBack).toHaveBeenCalledTimes(1);\n });\n\n it(\"should switch to customize view when Enter pressed on 'Customize'\", async () => {\n const { lastFrame, stdin, unmount } = renderStepSources();\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n\n // Move to customize option\n stdin.write(ARROW_DOWN);\n await delay(INPUT_DELAY_MS);\n\n // Press Enter to switch to customize view\n stdin.write(ENTER);\n await delay(INPUT_DELAY_MS);\n\n const output = lastFrame();\n // Should show the grid view with skill names\n expect(output).toContain(\"Customize skill sources\");\n // Should show the selected technologies (title-cased display names)\n expect(output).toContain(\"React\");\n expect(output).toContain(\"Zustand\");\n });\n });\n\n describe(\"customize view\", () => {\n it(\"should show source grid with selected technologies\", async () => {\n const { lastFrame, stdin, unmount } = renderStepSources();\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n\n // Switch to customize view\n stdin.write(ARROW_DOWN);\n await delay(INPUT_DELAY_MS);\n stdin.write(ENTER);\n await delay(INPUT_DELAY_MS);\n\n const output = lastFrame();\n expect(output).toContain(\"React\");\n expect(output).toContain(\"Zustand\");\n expect(output).toContain(\"Agents Inc\");\n });\n\n it(\"should call onContinue when Enter pressed in customize view\", async () => {\n const onContinue = vi.fn();\n const { stdin, unmount } = renderStepSources({ onContinue });\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n\n // Switch to customize view\n stdin.write(ARROW_DOWN);\n await delay(INPUT_DELAY_MS);\n stdin.write(ENTER);\n await delay(INPUT_DELAY_MS);\n\n // Press Enter to continue\n stdin.write(ENTER);\n await delay(INPUT_DELAY_MS);\n\n expect(onContinue).toHaveBeenCalledTimes(1);\n });\n\n it(\"should go back to choice view when Escape pressed in customize view\", async () => {\n const onBack = vi.fn();\n const { lastFrame, stdin, unmount } = renderStepSources({ onBack });\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n\n // Switch to customize view\n stdin.write(ARROW_DOWN);\n await delay(INPUT_DELAY_MS);\n stdin.write(ENTER);\n await delay(INPUT_DELAY_MS);\n\n // Verify we're in customize view\n expect(lastFrame()).toContain(\"Customize skill sources\");\n\n // Press Escape to go back to choice view\n stdin.write(ESCAPE);\n await delay(INPUT_DELAY_MS);\n\n const output = lastFrame();\n // Should be back at choice view with both options\n expect(output).toContain(\"Use all recommended skills (verified)\");\n expect(output).toContain(\"Customize skill sources\");\n\n // onBack should NOT have been called (escape returns to choice, not to build)\n expect(onBack).not.toHaveBeenCalled();\n });\n\n it(\"should show ViewTitle in customize view\", async () => {\n const { lastFrame, stdin, unmount } = renderStepSources();\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n\n // Switch to customize view\n stdin.write(ARROW_DOWN);\n await delay(INPUT_DELAY_MS);\n stdin.write(ENTER);\n await delay(INPUT_DELAY_MS);\n\n const output = lastFrame();\n expect(output).toContain(\"Customize skill sources\");\n });\n });\n\n describe(\"edge cases\", () => {\n it(\"should handle zero technologies\", () => {\n useWizardStore.setState({\n domainSelections: {},\n });\n\n const { lastFrame, unmount } = renderStepSources();\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"0\");\n expect(output).toContain(\"technologies\");\n });\n\n it(\"should handle single technology\", () => {\n useWizardStore.setState({\n domainSelections: {\n web: {\n \"web-framework\": [\"web-framework-react\"],\n },\n },\n });\n\n const { lastFrame, unmount } = renderStepSources();\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"1\");\n expect(output).toContain(\"technologies\");\n });\n\n it(\"should handle multiple Enter presses on recommended\", async () => {\n const onContinue = vi.fn();\n const { stdin, unmount } = renderStepSources({ onContinue });\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n stdin.write(ENTER);\n await delay(INPUT_DELAY_MS);\n stdin.write(ENTER);\n await delay(INPUT_DELAY_MS);\n\n expect(onContinue).toHaveBeenCalledTimes(2);\n });\n });\n\n describe(\"store integration\", () => {\n it(\"should set customizeSources when switching to customize view\", async () => {\n const { stdin, unmount } = renderStepSources();\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n\n // Switch to customize\n stdin.write(ARROW_DOWN);\n await delay(INPUT_DELAY_MS);\n stdin.write(ENTER);\n await delay(INPUT_DELAY_MS);\n\n expect(useWizardStore.getState().customizeSources).toBe(true);\n });\n\n it(\"should reset customizeSources when escaping from customize view\", async () => {\n const { stdin, unmount } = renderStepSources();\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n\n // Switch to customize\n stdin.write(ARROW_DOWN);\n await delay(INPUT_DELAY_MS);\n stdin.write(ENTER);\n await delay(INPUT_DELAY_MS);\n\n expect(useWizardStore.getState().customizeSources).toBe(true);\n\n // Escape back\n stdin.write(ESCAPE);\n await delay(INPUT_DELAY_MS);\n\n expect(useWizardStore.getState().customizeSources).toBe(false);\n });\n });\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAyBgB;AARhB,IAAM,aAAa,iBAAiB,OAAO,OAAO,OAAO,OAAO;AAEhE,IAAM,eAAiC;AAAA,EACrC,YAAY,GAAG,GAAG;AAAA,EAClB,QAAQ,GAAG,GAAG;AAChB;AAEA,IAAM,oBAAoB,CAAC,QAAmC,CAAC,MAAM;AACnE,SAAO,OAAO,oBAAC,eAAa,GAAG,cAAe,GAAG,OAAO,CAAE;AAC5D;AAEA,SAAS,yBAAyB,MAAM;AACtC,MAAI;AAEJ,aAAW,MAAM;AACf,mBAAe,SAAS,EAAE,UAAU,UAAU;AAE9C,mBAAe,SAAS;AAAA,MACtB,kBAAkB;AAAA,QAChB,KAAK;AAAA,UACH,iBAAiB,CAAC,qBAAqB;AAAA,UACvC,oBAAoB,CAAC,mBAAmB;AAAA,QAC1C;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AAED,YAAU,MAAM;AACd,cAAU;AACV,cAAU;AAAA,EACZ,CAAC;AAED,WAAS,yBAAyB,MAAM;AACtC,OAAG,kCAAkC,MAAM;AACzC,YAAM,EAAE,WAAW,QAAQ,IAAI,kBAAkB;AACjD,gBAAU;AAEV,YAAM,SAAS,UAAU;AACzB,mBAAO,MAAM,EAAE,UAAU,GAAG;AAC5B,mBAAO,MAAM,EAAE,UAAU,cAAc;AAAA,IACzC,CAAC;AAED,OAAG,8CAA8C,MAAM;AACrD,YAAM,EAAE,WAAW,QAAQ,IAAI,kBAAkB;AACjD,gBAAU;AAEV,YAAM,SAAS,UAAU;AACzB,mBAAO,MAAM,EAAE,UAAU,uCAAuC;AAAA,IAClE,CAAC;AAED,OAAG,kDAAkD,MAAM;AACzD,YAAM,EAAE,WAAW,QAAQ,IAAI,kBAAkB;AACjD,gBAAU;AAEV,YAAM,SAAS,UAAU;AACzB,mBAAO,MAAM,EAAE,UAAU,yBAAyB;AAAA,IACpD,CAAC;AAED,OAAG,0CAA0C,MAAM;AACjD,YAAM,EAAE,WAAW,QAAQ,IAAI,kBAAkB;AACjD,gBAAU;AAEV,YAAM,SAAS,UAAU;AACzB,mBAAO,MAAM,EAAE,UAAU,gBAAgB;AACzC,mBAAO,MAAM,EAAE,UAAU,UAAU;AACnC,mBAAO,MAAM,EAAE,UAAU,iBAAiB,IAAI;AAAA,IAChD,CAAC;AAED,OAAG,uCAAuC,MAAM;AAC9C,YAAM,EAAE,WAAW,QAAQ,IAAI,kBAAkB;AACjD,gBAAU;AAEV,YAAM,SAAS,UAAU;AACzB,mBAAO,MAAM,EAAE,UAAU,+CAA+C;AAAA,IAC1E,CAAC;AAED,OAAG,+CAA+C,MAAM;AACtD,YAAM,EAAE,WAAW,QAAQ,IAAI,kBAAkB;AACjD,gBAAU;AAEV,YAAM,SAAS,UAAU;AAEzB,mBAAO,MAAM,EAAE,UAAU,WAAW,OAAO;AAC3C,mBAAO,MAAM,EAAE,UAAU,qBAAqB;AAAA,IAChD,CAAC;AAAA,EACH,CAAC;AAED,WAAS,mCAAmC,MAAM;AAChD,OAAG,uCAAuC,YAAY;AACpD,YAAM,EAAE,WAAW,OAAO,QAAQ,IAAI,kBAAkB;AACxD,gBAAU;AAEV,YAAM,MAAM,eAAe;AAG3B,UAAI,SAAS,UAAU;AACvB,mBAAO,MAAM,EAAE,UAAU,qBAAqB;AAG9C,YAAM,MAAM,QAAQ;AACpB,YAAM,MAAM,cAAc;AAE1B,eAAS,UAAU;AAEnB,mBAAO,MAAM,EAAE,UAAU,yBAAyB;AAAA,IACpD,CAAC;AAED,OAAG,yCAAyC,YAAY;AACtD,YAAM,EAAE,OAAO,QAAQ,IAAI,kBAAkB;AAC7C,gBAAU;AAEV,YAAM,MAAM,eAAe;AAC3B,YAAM,MAAM,UAAU;AACtB,YAAM,MAAM,cAAc;AAAA,IAG5B,CAAC;AAED,OAAG,sEAAsE,YAAY;AACnF,YAAM,aAAa,GAAG,GAAG;AACzB,YAAM,EAAE,OAAO,QAAQ,IAAI,kBAAkB,EAAE,WAAW,CAAC;AAC3D,gBAAU;AAEV,YAAM,MAAM,eAAe;AAC3B,YAAM,MAAM,KAAK;AACjB,YAAM,MAAM,cAAc;AAE1B,mBAAO,UAAU,EAAE,sBAAsB,CAAC;AAAA,IAC5C,CAAC;AAED,OAAG,0CAA0C,YAAY;AACvD,YAAM,SAAS,GAAG,GAAG;AACrB,YAAM,EAAE,OAAO,QAAQ,IAAI,kBAAkB,EAAE,OAAO,CAAC;AACvD,gBAAU;AAEV,YAAM,MAAM,eAAe;AAC3B,YAAM,MAAM,MAAM;AAClB,YAAM,MAAM,cAAc;AAE1B,mBAAO,MAAM,EAAE,sBAAsB,CAAC;AAAA,IACxC,CAAC;AAED,OAAG,qEAAqE,YAAY;AAClF,YAAM,EAAE,WAAW,OAAO,QAAQ,IAAI,kBAAkB;AACxD,gBAAU;AAEV,YAAM,MAAM,eAAe;AAG3B,YAAM,MAAM,UAAU;AACtB,YAAM,MAAM,cAAc;AAG1B,YAAM,MAAM,KAAK;AACjB,YAAM,MAAM,cAAc;AAE1B,YAAM,SAAS,UAAU;AAEzB,mBAAO,MAAM,EAAE,UAAU,yBAAyB;AAElD,mBAAO,MAAM,EAAE,UAAU,OAAO;AAChC,mBAAO,MAAM,EAAE,UAAU,SAAS;AAAA,IACpC,CAAC;AAAA,EACH,CAAC;AAED,WAAS,kBAAkB,MAAM;AAC/B,OAAG,sDAAsD,YAAY;AACnE,YAAM,EAAE,WAAW,OAAO,QAAQ,IAAI,kBAAkB;AACxD,gBAAU;AAEV,YAAM,MAAM,eAAe;AAG3B,YAAM,MAAM,UAAU;AACtB,YAAM,MAAM,cAAc;AAC1B,YAAM,MAAM,KAAK;AACjB,YAAM,MAAM,cAAc;AAE1B,YAAM,SAAS,UAAU;AACzB,mBAAO,MAAM,EAAE,UAAU,OAAO;AAChC,mBAAO,MAAM,EAAE,UAAU,SAAS;AAClC,mBAAO,MAAM,EAAE,UAAU,YAAY;AAAA,IACvC,CAAC;AAED,OAAG,+DAA+D,YAAY;AAC5E,YAAM,aAAa,GAAG,GAAG;AACzB,YAAM,EAAE,OAAO,QAAQ,IAAI,kBAAkB,EAAE,WAAW,CAAC;AAC3D,gBAAU;AAEV,YAAM,MAAM,eAAe;AAG3B,YAAM,MAAM,UAAU;AACtB,YAAM,MAAM,cAAc;AAC1B,YAAM,MAAM,KAAK;AACjB,YAAM,MAAM,cAAc;AAG1B,YAAM,MAAM,KAAK;AACjB,YAAM,MAAM,cAAc;AAE1B,mBAAO,UAAU,EAAE,sBAAsB,CAAC;AAAA,IAC5C,CAAC;AAED,OAAG,uEAAuE,YAAY;AACpF,YAAM,SAAS,GAAG,GAAG;AACrB,YAAM,EAAE,WAAW,OAAO,QAAQ,IAAI,kBAAkB,EAAE,OAAO,CAAC;AAClE,gBAAU;AAEV,YAAM,MAAM,eAAe;AAG3B,YAAM,MAAM,UAAU;AACtB,YAAM,MAAM,cAAc;AAC1B,YAAM,MAAM,KAAK;AACjB,YAAM,MAAM,cAAc;AAG1B,mBAAO,UAAU,CAAC,EAAE,UAAU,yBAAyB;AAGvD,YAAM,MAAM,MAAM;AAClB,YAAM,MAAM,cAAc;AAE1B,YAAM,SAAS,UAAU;AAEzB,mBAAO,MAAM,EAAE,UAAU,uCAAuC;AAChE,mBAAO,MAAM,EAAE,UAAU,yBAAyB;AAGlD,mBAAO,MAAM,EAAE,IAAI,iBAAiB;AAAA,IACtC,CAAC;AAED,OAAG,2CAA2C,YAAY;AACxD,YAAM,EAAE,WAAW,OAAO,QAAQ,IAAI,kBAAkB;AACxD,gBAAU;AAEV,YAAM,MAAM,eAAe;AAG3B,YAAM,MAAM,UAAU;AACtB,YAAM,MAAM,cAAc;AAC1B,YAAM,MAAM,KAAK;AACjB,YAAM,MAAM,cAAc;AAE1B,YAAM,SAAS,UAAU;AACzB,mBAAO,MAAM,EAAE,UAAU,yBAAyB;AAAA,IACpD,CAAC;AAAA,EACH,CAAC;AAED,WAAS,cAAc,MAAM;AAC3B,OAAG,mCAAmC,MAAM;AAC1C,qBAAe,SAAS;AAAA,QACtB,kBAAkB,CAAC;AAAA,MACrB,CAAC;AAED,YAAM,EAAE,WAAW,QAAQ,IAAI,kBAAkB;AACjD,gBAAU;AAEV,YAAM,SAAS,UAAU;AACzB,mBAAO,MAAM,EAAE,UAAU,GAAG;AAC5B,mBAAO,MAAM,EAAE,UAAU,cAAc;AAAA,IACzC,CAAC;AAED,OAAG,mCAAmC,MAAM;AAC1C,qBAAe,SAAS;AAAA,QACtB,kBAAkB;AAAA,UAChB,KAAK;AAAA,YACH,iBAAiB,CAAC,qBAAqB;AAAA,UACzC;AAAA,QACF;AAAA,MACF,CAAC;AAED,YAAM,EAAE,WAAW,QAAQ,IAAI,kBAAkB;AACjD,gBAAU;AAEV,YAAM,SAAS,UAAU;AACzB,mBAAO,MAAM,EAAE,UAAU,GAAG;AAC5B,mBAAO,MAAM,EAAE,UAAU,cAAc;AAAA,IACzC,CAAC;AAED,OAAG,uDAAuD,YAAY;AACpE,YAAM,aAAa,GAAG,GAAG;AACzB,YAAM,EAAE,OAAO,QAAQ,IAAI,kBAAkB,EAAE,WAAW,CAAC;AAC3D,gBAAU;AAEV,YAAM,MAAM,eAAe;AAC3B,YAAM,MAAM,KAAK;AACjB,YAAM,MAAM,cAAc;AAC1B,YAAM,MAAM,KAAK;AACjB,YAAM,MAAM,cAAc;AAE1B,mBAAO,UAAU,EAAE,sBAAsB,CAAC;AAAA,IAC5C,CAAC;AAAA,EACH,CAAC;AAED,WAAS,qBAAqB,MAAM;AAClC,OAAG,gEAAgE,YAAY;AAC7E,YAAM,EAAE,OAAO,QAAQ,IAAI,kBAAkB;AAC7C,gBAAU;AAEV,YAAM,MAAM,eAAe;AAG3B,YAAM,MAAM,UAAU;AACtB,YAAM,MAAM,cAAc;AAC1B,YAAM,MAAM,KAAK;AACjB,YAAM,MAAM,cAAc;AAE1B,mBAAO,eAAe,SAAS,EAAE,gBAAgB,EAAE,KAAK,IAAI;AAAA,IAC9D,CAAC;AAED,OAAG,mEAAmE,YAAY;AAChF,YAAM,EAAE,OAAO,QAAQ,IAAI,kBAAkB;AAC7C,gBAAU;AAEV,YAAM,MAAM,eAAe;AAG3B,YAAM,MAAM,UAAU;AACtB,YAAM,MAAM,cAAc;AAC1B,YAAM,MAAM,KAAK;AACjB,YAAM,MAAM,cAAc;AAE1B,mBAAO,eAAe,SAAS,EAAE,gBAAgB,EAAE,KAAK,IAAI;AAG5D,YAAM,MAAM,MAAM;AAClB,YAAM,MAAM,cAAc;AAE1B,mBAAO,eAAe,SAAS,EAAE,gBAAgB,EAAE,KAAK,KAAK;AAAA,IAC/D,CAAC;AAAA,EACH,CAAC;AACH,CAAC;","names":[]}
1
+ {"version":3,"sources":["../../../src/cli/components/wizard/step-sources.test.tsx"],"sourcesContent":["import { render } from \"ink-testing-library\";\nimport { describe, expect, it, afterEach, beforeEach, vi } from \"vitest\";\nimport { StepSources, type StepSourcesProps } from \"./step-sources\";\nimport { useWizardStore } from \"../../stores/wizard-store\";\nimport { useMatrixStore } from \"../../stores/matrix-store\";\nimport {\n ENTER,\n ESCAPE,\n ARROW_UP,\n ARROW_DOWN,\n RENDER_DELAY_MS,\n INPUT_DELAY_MS,\n delay,\n} from \"../../lib/__tests__/test-constants\";\nimport { DEFAULT_BRANDING, UI_SYMBOLS } from \"../../consts\";\nimport { WEB_PAIR_MATRIX } from \"../../lib/__tests__/mock-data/mock-matrices\";\n\nconst mockMatrix = WEB_PAIR_MATRIX;\n\nconst defaultProps: StepSourcesProps = {\n onContinue: vi.fn(),\n onBack: vi.fn(),\n};\n\nconst renderStepSources = (props: Partial<StepSourcesProps> = {}) => {\n return render(<StepSources {...defaultProps} {...props} />);\n};\n\ndescribe(\"StepSources component\", () => {\n let cleanup: (() => void) | undefined;\n\n beforeEach(() => {\n useMatrixStore.getState().setMatrix(mockMatrix);\n // Set up some selected technologies so the step has data to display\n useWizardStore.setState({\n domainSelections: {\n web: {\n \"web-framework\": [\"web-framework-react\"],\n \"web-client-state\": [\"web-state-zustand\"],\n },\n },\n });\n });\n\n afterEach(() => {\n cleanup?.();\n cleanup = undefined;\n });\n\n describe(\"choice view rendering\", () => {\n it(\"should render technology count\", () => {\n const { lastFrame, unmount } = renderStepSources();\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"2\");\n expect(output).toContain(\"technologies\");\n });\n\n it(\"should render 'Use all recommended' option\", () => {\n const { lastFrame, unmount } = renderStepSources();\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"Use all recommended skills (verified)\");\n });\n\n it(\"should render 'Customize skill sources' option\", () => {\n const { lastFrame, unmount } = renderStepSources();\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"Customize skill sources\");\n });\n\n it(\"should render verification description\", () => {\n const { lastFrame, unmount } = renderStepSources();\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"fastest option\");\n expect(output).toContain(\"verified\");\n expect(output).toContain(DEFAULT_BRANDING.NAME);\n });\n\n it(\"should render customize description\", () => {\n const { lastFrame, unmount } = renderStepSources();\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"Choose alternative skills for each technology\");\n });\n\n it(\"should show recommended as default selected\", () => {\n const { lastFrame, unmount } = renderStepSources();\n cleanup = unmount;\n\n const output = lastFrame();\n // The chevron indicator should be on the recommended option\n expect(output).toContain(UI_SYMBOLS.CHEVRON);\n expect(output).toContain(\"Use all recommended\");\n });\n });\n\n describe(\"choice view keyboard navigation\", () => {\n it(\"should toggle options with arrow up\", async () => {\n const { lastFrame, stdin, unmount } = renderStepSources();\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n\n // Initially recommended is selected\n let output = lastFrame();\n expect(output).toContain(\"Use all recommended\");\n\n // Press up to switch to customize\n stdin.write(ARROW_UP);\n await delay(INPUT_DELAY_MS);\n\n output = lastFrame();\n // Both options should still be present\n expect(output).toContain(\"Customize skill sources\");\n });\n\n it(\"should toggle options with arrow down\", async () => {\n const { stdin, unmount } = renderStepSources();\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n stdin.write(ARROW_DOWN);\n await delay(INPUT_DELAY_MS);\n\n // Should have toggled\n });\n\n it(\"should call onContinue when Enter pressed on 'Use all recommended'\", async () => {\n const onContinue = vi.fn();\n const { stdin, unmount } = renderStepSources({ onContinue });\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n stdin.write(ENTER);\n await delay(INPUT_DELAY_MS);\n\n expect(onContinue).toHaveBeenCalledTimes(1);\n });\n\n it(\"should call onBack when Escape pressed\", async () => {\n const onBack = vi.fn();\n const { stdin, unmount } = renderStepSources({ onBack });\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n stdin.write(ESCAPE);\n await delay(INPUT_DELAY_MS);\n\n expect(onBack).toHaveBeenCalledTimes(1);\n });\n\n it(\"should switch to customize view when Enter pressed on 'Customize'\", async () => {\n const { lastFrame, stdin, unmount } = renderStepSources();\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n\n // Move to customize option\n stdin.write(ARROW_DOWN);\n await delay(INPUT_DELAY_MS);\n\n // Press Enter to switch to customize view\n stdin.write(ENTER);\n await delay(INPUT_DELAY_MS);\n\n const output = lastFrame();\n // Should show the grid view with skill names\n expect(output).toContain(\"Customize skill sources\");\n // Should show the selected technologies (title-cased display names)\n expect(output).toContain(\"React\");\n expect(output).toContain(\"Zustand\");\n });\n });\n\n describe(\"customize view\", () => {\n it(\"should show source grid with selected technologies\", async () => {\n const { lastFrame, stdin, unmount } = renderStepSources();\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n\n // Switch to customize view\n stdin.write(ARROW_DOWN);\n await delay(INPUT_DELAY_MS);\n stdin.write(ENTER);\n await delay(INPUT_DELAY_MS);\n\n const output = lastFrame();\n expect(output).toContain(\"React\");\n expect(output).toContain(\"Zustand\");\n expect(output).toContain(\"Agents Inc\");\n });\n\n it(\"should call onContinue when Enter pressed in customize view\", async () => {\n const onContinue = vi.fn();\n const { stdin, unmount } = renderStepSources({ onContinue });\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n\n // Switch to customize view\n stdin.write(ARROW_DOWN);\n await delay(INPUT_DELAY_MS);\n stdin.write(ENTER);\n await delay(INPUT_DELAY_MS);\n\n // Press Enter to continue\n stdin.write(ENTER);\n await delay(INPUT_DELAY_MS);\n\n expect(onContinue).toHaveBeenCalledTimes(1);\n });\n\n it(\"should go back to choice view when Escape pressed in customize view\", async () => {\n const onBack = vi.fn();\n const { lastFrame, stdin, unmount } = renderStepSources({ onBack });\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n\n // Switch to customize view\n stdin.write(ARROW_DOWN);\n await delay(INPUT_DELAY_MS);\n stdin.write(ENTER);\n await delay(INPUT_DELAY_MS);\n\n // Verify we're in customize view\n expect(lastFrame()).toContain(\"Customize skill sources\");\n\n // Press Escape to go back to choice view\n stdin.write(ESCAPE);\n await delay(INPUT_DELAY_MS);\n\n const output = lastFrame();\n // Should be back at choice view with both options\n expect(output).toContain(\"Use all recommended skills (verified)\");\n expect(output).toContain(\"Customize skill sources\");\n\n // onBack should NOT have been called (escape returns to choice, not to build)\n expect(onBack).not.toHaveBeenCalled();\n });\n\n it(\"should show ViewTitle in customize view\", async () => {\n const { lastFrame, stdin, unmount } = renderStepSources();\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n\n // Switch to customize view\n stdin.write(ARROW_DOWN);\n await delay(INPUT_DELAY_MS);\n stdin.write(ENTER);\n await delay(INPUT_DELAY_MS);\n\n const output = lastFrame();\n expect(output).toContain(\"Customize skill sources\");\n });\n });\n\n describe(\"edge cases\", () => {\n it(\"should handle zero technologies\", () => {\n useWizardStore.setState({\n domainSelections: {},\n });\n\n const { lastFrame, unmount } = renderStepSources();\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"0\");\n expect(output).toContain(\"technologies\");\n });\n\n it(\"should handle single technology\", () => {\n useWizardStore.setState({\n domainSelections: {\n web: {\n \"web-framework\": [\"web-framework-react\"],\n },\n },\n });\n\n const { lastFrame, unmount } = renderStepSources();\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"1\");\n expect(output).toContain(\"technologies\");\n });\n\n it(\"should handle multiple Enter presses on recommended\", async () => {\n const onContinue = vi.fn();\n const { stdin, unmount } = renderStepSources({ onContinue });\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n stdin.write(ENTER);\n await delay(INPUT_DELAY_MS);\n stdin.write(ENTER);\n await delay(INPUT_DELAY_MS);\n\n expect(onContinue).toHaveBeenCalledTimes(2);\n });\n });\n\n describe(\"store integration\", () => {\n it(\"should set customizeSources when switching to customize view\", async () => {\n const { stdin, unmount } = renderStepSources();\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n\n // Switch to customize\n stdin.write(ARROW_DOWN);\n await delay(INPUT_DELAY_MS);\n stdin.write(ENTER);\n await delay(INPUT_DELAY_MS);\n\n expect(useWizardStore.getState().customizeSources).toBe(true);\n });\n\n it(\"should reset customizeSources when escaping from customize view\", async () => {\n const { stdin, unmount } = renderStepSources();\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n\n // Switch to customize\n stdin.write(ARROW_DOWN);\n await delay(INPUT_DELAY_MS);\n stdin.write(ENTER);\n await delay(INPUT_DELAY_MS);\n\n expect(useWizardStore.getState().customizeSources).toBe(true);\n\n // Escape back\n stdin.write(ESCAPE);\n await delay(INPUT_DELAY_MS);\n\n expect(useWizardStore.getState().customizeSources).toBe(false);\n });\n });\n});\n"],"mappings":"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","names":[]}
@@ -1,18 +1,18 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  StepStack
4
- } from "../../chunk-L5LD3ZSR.js";
5
- import "../../chunk-7LCI5PSJ.js";
4
+ } from "../../chunk-AX6MMYAZ.js";
5
+ import "../../chunk-XMZNHLV3.js";
6
6
  import "../../chunk-K77I4XGL.js";
7
- import "../../chunk-MWGDG4QN.js";
8
- import "../../chunk-KMDBOO3E.js";
7
+ import "../../chunk-KANNRFY7.js";
9
8
  import "../../chunk-ZYUASJUN.js";
9
+ import "../../chunk-MWGDG4QN.js";
10
10
  import "../../chunk-OV5UJWS5.js";
11
11
  import "../../chunk-XMLCXRTS.js";
12
12
  import "../../chunk-AQYAVLZK.js";
13
13
  import "../../chunk-AUNBGZS4.js";
14
- import "../../chunk-EULHBV5V.js";
15
- import "../../chunk-45R64U2S.js";
14
+ import "../../chunk-QOJAZI72.js";
15
+ import "../../chunk-CADG5WWP.js";
16
16
  import "../../chunk-L6MTIQ2U.js";
17
17
  import "../../chunk-T4EXUIBY.js";
18
18
  import "../../chunk-BKL3DF2Q.js";
@@ -16,7 +16,7 @@ import {
16
16
  TEST_CATEGORIES,
17
17
  createMockMatrix,
18
18
  createMockResolvedStack
19
- } from "../../chunk-N4D43IOO.js";
19
+ } from "../../chunk-J2D6OBIX.js";
20
20
  import {
21
21
  afterEach,
22
22
  beforeEach,
@@ -27,20 +27,20 @@ import {
27
27
  } from "../../chunk-XY3XDVMI.js";
28
28
  import {
29
29
  StepStack
30
- } from "../../chunk-L5LD3ZSR.js";
31
- import "../../chunk-7LCI5PSJ.js";
30
+ } from "../../chunk-AX6MMYAZ.js";
31
+ import "../../chunk-XMZNHLV3.js";
32
32
  import "../../chunk-K77I4XGL.js";
33
- import "../../chunk-MWGDG4QN.js";
34
- import "../../chunk-KMDBOO3E.js";
33
+ import "../../chunk-KANNRFY7.js";
35
34
  import "../../chunk-ZYUASJUN.js";
35
+ import "../../chunk-MWGDG4QN.js";
36
36
  import "../../chunk-OV5UJWS5.js";
37
37
  import "../../chunk-XMLCXRTS.js";
38
38
  import "../../chunk-AQYAVLZK.js";
39
39
  import "../../chunk-AUNBGZS4.js";
40
40
  import {
41
41
  useWizardStore
42
- } from "../../chunk-EULHBV5V.js";
43
- import "../../chunk-45R64U2S.js";
42
+ } from "../../chunk-QOJAZI72.js";
43
+ import "../../chunk-CADG5WWP.js";
44
44
  import "../../chunk-L6MTIQ2U.js";
45
45
  import "../../chunk-T4EXUIBY.js";
46
46
  import {
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  WizardLayout
4
- } from "../../chunk-RMMHVE2R.js";
4
+ } from "../../chunk-VUUGWE6G.js";
5
5
  import "../../chunk-SXGBPQY6.js";
6
6
  import "../../chunk-HGTC76BX.js";
7
7
  import "../../chunk-KYULKBFC.js";
8
- import "../../chunk-EULHBV5V.js";
8
+ import "../../chunk-QOJAZI72.js";
9
9
  import "../../chunk-6VIOO74O.js";
10
- import "../../chunk-45R64U2S.js";
10
+ import "../../chunk-CADG5WWP.js";
11
11
  import "../../chunk-L6MTIQ2U.js";
12
12
  import "../../chunk-T4EXUIBY.js";
13
13
  import "../../chunk-BKL3DF2Q.js";
@@ -1,37 +1,38 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  Wizard
4
- } from "../../chunk-JAWXWNIX.js";
5
- import "../../chunk-RMMHVE2R.js";
4
+ } from "../../chunk-UDAHHJIM.js";
5
+ import "../../chunk-VUUGWE6G.js";
6
6
  import "../../chunk-SXGBPQY6.js";
7
- import "../../chunk-QUEO6QEL.js";
8
- import "../../chunk-HADHP7XF.js";
7
+ import "../../chunk-XB3TYSPL.js";
8
+ import "../../chunk-V5L532ZH.js";
9
9
  import "../../chunk-HGTC76BX.js";
10
- import "../../chunk-L5LD3ZSR.js";
11
- import "../../chunk-7LCI5PSJ.js";
12
- import "../../chunk-2JJUPWE5.js";
13
- import "../../chunk-VTRVAXUM.js";
10
+ import "../../chunk-AX6MMYAZ.js";
11
+ import "../../chunk-6YMW4HMX.js";
12
+ import "../../chunk-7SOPVGDV.js";
13
+ import "../../chunk-XMZNHLV3.js";
14
+ import "../../chunk-HWVRHPXR.js";
15
+ import "../../chunk-2VT2DMD7.js";
14
16
  import "../../chunk-K77I4XGL.js";
15
17
  import "../../chunk-52THXN5G.js";
18
+ import "../../chunk-KANNRFY7.js";
19
+ import "../../chunk-ZYUASJUN.js";
16
20
  import "../../chunk-KYULKBFC.js";
21
+ import "../../chunk-2MHSOPIU.js";
17
22
  import "../../chunk-MWGDG4QN.js";
18
- import "../../chunk-KFDTVSIC.js";
19
- import "../../chunk-7SOPVGDV.js";
20
- import "../../chunk-6IK2TCK7.js";
23
+ import "../../chunk-WF5PMBIR.js";
21
24
  import "../../chunk-KUV24B5M.js";
22
25
  import "../../chunk-CKPJTMNC.js";
23
26
  import "../../chunk-GG4BSB6S.js";
24
- import "../../chunk-KMDBOO3E.js";
25
- import "../../chunk-ZYUASJUN.js";
26
27
  import "../../chunk-OV5UJWS5.js";
27
28
  import "../../chunk-XMLCXRTS.js";
28
29
  import "../../chunk-AQYAVLZK.js";
29
30
  import "../../chunk-AUNBGZS4.js";
30
- import "../../chunk-EULHBV5V.js";
31
+ import "../../chunk-QOJAZI72.js";
31
32
  import "../../chunk-T5DJCIUP.js";
32
33
  import "../../chunk-U3IGFMCY.js";
33
34
  import "../../chunk-6VIOO74O.js";
34
- import "../../chunk-45R64U2S.js";
35
+ import "../../chunk-CADG5WWP.js";
35
36
  import "../../chunk-L6MTIQ2U.js";
36
37
  import "../../chunk-T4EXUIBY.js";
37
38
  import "../../chunk-BKL3DF2Q.js";
@@ -1,34 +1,35 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  showDashboard
4
- } from "../chunk-KBG7GYPL.js";
5
- import "../chunk-JAWXWNIX.js";
6
- import "../chunk-RMMHVE2R.js";
4
+ } from "../chunk-XYRVAEI6.js";
5
+ import "../chunk-UDAHHJIM.js";
6
+ import "../chunk-VUUGWE6G.js";
7
7
  import "../chunk-SXGBPQY6.js";
8
- import "../chunk-QUEO6QEL.js";
9
- import "../chunk-HADHP7XF.js";
8
+ import "../chunk-XB3TYSPL.js";
9
+ import "../chunk-V5L532ZH.js";
10
10
  import "../chunk-HGTC76BX.js";
11
- import "../chunk-L5LD3ZSR.js";
12
- import "../chunk-7LCI5PSJ.js";
13
- import "../chunk-2JJUPWE5.js";
14
- import "../chunk-VTRVAXUM.js";
11
+ import "../chunk-AX6MMYAZ.js";
12
+ import "../chunk-6YMW4HMX.js";
13
+ import "../chunk-7SOPVGDV.js";
14
+ import "../chunk-XMZNHLV3.js";
15
+ import "../chunk-HWVRHPXR.js";
16
+ import "../chunk-2VT2DMD7.js";
15
17
  import "../chunk-K77I4XGL.js";
16
18
  import "../chunk-52THXN5G.js";
19
+ import "../chunk-KANNRFY7.js";
20
+ import "../chunk-ZYUASJUN.js";
17
21
  import "../chunk-KYULKBFC.js";
22
+ import "../chunk-2MHSOPIU.js";
18
23
  import "../chunk-MWGDG4QN.js";
19
- import "../chunk-KFDTVSIC.js";
20
- import "../chunk-7SOPVGDV.js";
21
- import "../chunk-6IK2TCK7.js";
24
+ import "../chunk-WF5PMBIR.js";
22
25
  import "../chunk-KUV24B5M.js";
23
26
  import "../chunk-CKPJTMNC.js";
24
27
  import "../chunk-GG4BSB6S.js";
25
- import "../chunk-KMDBOO3E.js";
26
- import "../chunk-ZYUASJUN.js";
27
28
  import "../chunk-OV5UJWS5.js";
28
29
  import "../chunk-XMLCXRTS.js";
29
30
  import "../chunk-AQYAVLZK.js";
30
31
  import "../chunk-AUNBGZS4.js";
31
- import "../chunk-EULHBV5V.js";
32
+ import "../chunk-QOJAZI72.js";
32
33
  import "../chunk-T5DJCIUP.js";
33
34
  import "../chunk-U3IGFMCY.js";
34
35
  import "../chunk-6VIOO74O.js";
@@ -37,7 +38,7 @@ import {
37
38
  detectInstallation,
38
39
  hasIndividualPlugins,
39
40
  resolveSource
40
- } from "../chunk-45R64U2S.js";
41
+ } from "../chunk-CADG5WWP.js";
41
42
  import "../chunk-L6MTIQ2U.js";
42
43
  import "../chunk-T4EXUIBY.js";
43
44
  import "../chunk-BKL3DF2Q.js";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/hooks/init.ts"],"sourcesContent":["import { Hook } from \"@oclif/core\";\nimport { resolveSource } from \"../lib/configuration/index.js\";\nimport { detectInstallation } from \"../lib/installation/installation.js\";\nimport { hasIndividualPlugins } from \"../lib/plugins/index.js\";\nimport { showDashboard } from \"../commands/init.js\";\nimport { EXIT_CODES } from \"../lib/exit-codes.js\";\nimport type { ConfigWithSource } from \"../base-command.js\";\n\nconst hook: Hook<\"init\"> = async function (options) {\n const projectDir = process.cwd();\n\n // When no command is given and project is already initialized, show dashboard\n if (options.id === undefined) {\n const [installation, individualPlugins] = await Promise.all([\n detectInstallation(projectDir),\n hasIndividualPlugins(projectDir),\n ]);\n\n if (installation || individualPlugins) {\n const selectedCommand = await showDashboard(projectDir);\n if (selectedCommand) {\n await options.config.runCommand(selectedCommand);\n }\n this.exit(EXIT_CODES.SUCCESS);\n }\n }\n\n // Extract --source flag from argv (not yet parsed by oclif at this point)\n let sourceFlag: string | undefined;\n const sourceArgIndex = options.argv.indexOf(\"--source\");\n if (sourceArgIndex !== -1 && sourceArgIndex + 1 < options.argv.length) {\n sourceFlag = options.argv[sourceArgIndex + 1];\n } else {\n const sourceFlagWithEquals = options.argv.find((arg) => arg.startsWith(\"--source=\"));\n if (sourceFlagWithEquals) {\n sourceFlag = sourceFlagWithEquals.split(\"=\")[1];\n }\n }\n\n // Short form -s\n const sArgIndex = options.argv.indexOf(\"-s\");\n if (sArgIndex !== -1 && sArgIndex + 1 < options.argv.length) {\n sourceFlag = options.argv[sArgIndex + 1];\n }\n\n try {\n const resolvedConfig = await resolveSource(sourceFlag, projectDir);\n // Boundary cast: oclif Config doesn't declare sourceConfig; read in BaseCommand.sourceConfig\n (options.config as unknown as ConfigWithSource).sourceConfig = resolvedConfig;\n } catch (error) {\n // Let the command handle config failures - commands can check if sourceConfig is undefined\n }\n};\n\nexport default hook;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAQA,IAAM,OAAqB,eAAgB,SAAS;AAClD,QAAM,aAAa,QAAQ,IAAI;AAG/B,MAAI,QAAQ,OAAO,QAAW;AAC5B,UAAM,CAAC,cAAc,iBAAiB,IAAI,MAAM,QAAQ,IAAI;AAAA,MAC1D,mBAAmB,UAAU;AAAA,MAC7B,qBAAqB,UAAU;AAAA,IACjC,CAAC;AAED,QAAI,gBAAgB,mBAAmB;AACrC,YAAM,kBAAkB,MAAM,cAAc,UAAU;AACtD,UAAI,iBAAiB;AACnB,cAAM,QAAQ,OAAO,WAAW,eAAe;AAAA,MACjD;AACA,WAAK,KAAK,WAAW,OAAO;AAAA,IAC9B;AAAA,EACF;AAGA,MAAI;AACJ,QAAM,iBAAiB,QAAQ,KAAK,QAAQ,UAAU;AACtD,MAAI,mBAAmB,MAAM,iBAAiB,IAAI,QAAQ,KAAK,QAAQ;AACrE,iBAAa,QAAQ,KAAK,iBAAiB,CAAC;AAAA,EAC9C,OAAO;AACL,UAAM,uBAAuB,QAAQ,KAAK,KAAK,CAAC,QAAQ,IAAI,WAAW,WAAW,CAAC;AACnF,QAAI,sBAAsB;AACxB,mBAAa,qBAAqB,MAAM,GAAG,EAAE,CAAC;AAAA,IAChD;AAAA,EACF;AAGA,QAAM,YAAY,QAAQ,KAAK,QAAQ,IAAI;AAC3C,MAAI,cAAc,MAAM,YAAY,IAAI,QAAQ,KAAK,QAAQ;AAC3D,iBAAa,QAAQ,KAAK,YAAY,CAAC;AAAA,EACzC;AAEA,MAAI;AACF,UAAM,iBAAiB,MAAM,cAAc,YAAY,UAAU;AAEjE,IAAC,QAAQ,OAAuC,eAAe;AAAA,EACjE,SAAS,OAAO;AAAA,EAEhB;AACF;AAEA,IAAO,eAAQ;","names":[]}
1
+ {"version":3,"sources":["../../src/cli/hooks/init.ts"],"sourcesContent":["import { Hook } from \"@oclif/core\";\nimport { resolveSource } from \"../lib/configuration/index.js\";\nimport { detectInstallation } from \"../lib/installation/installation.js\";\nimport { hasIndividualPlugins } from \"../lib/plugins/index.js\";\nimport { showDashboard } from \"../commands/init.js\";\nimport { EXIT_CODES } from \"../lib/exit-codes.js\";\nimport type { ConfigWithSource } from \"../base-command.js\";\n\nconst hook: Hook<\"init\"> = async function (options) {\n const projectDir = process.cwd();\n\n // When no command is given and project is already initialized, show dashboard\n if (options.id === undefined) {\n const [installation, individualPlugins] = await Promise.all([\n detectInstallation(projectDir),\n hasIndividualPlugins(projectDir),\n ]);\n\n if (installation || individualPlugins) {\n const selectedCommand = await showDashboard(projectDir);\n if (selectedCommand) {\n await options.config.runCommand(selectedCommand);\n }\n this.exit(EXIT_CODES.SUCCESS);\n }\n }\n\n // Extract --source flag from argv (not yet parsed by oclif at this point)\n let sourceFlag: string | undefined;\n const sourceArgIndex = options.argv.indexOf(\"--source\");\n if (sourceArgIndex !== -1 && sourceArgIndex + 1 < options.argv.length) {\n sourceFlag = options.argv[sourceArgIndex + 1];\n } else {\n const sourceFlagWithEquals = options.argv.find((arg) => arg.startsWith(\"--source=\"));\n if (sourceFlagWithEquals) {\n sourceFlag = sourceFlagWithEquals.split(\"=\")[1];\n }\n }\n\n // Short form -s\n const sArgIndex = options.argv.indexOf(\"-s\");\n if (sArgIndex !== -1 && sArgIndex + 1 < options.argv.length) {\n sourceFlag = options.argv[sArgIndex + 1];\n }\n\n try {\n const resolvedConfig = await resolveSource(sourceFlag, projectDir);\n // Boundary cast: oclif Config doesn't declare sourceConfig; read in BaseCommand.sourceConfig\n (options.config as unknown as ConfigWithSource).sourceConfig = resolvedConfig;\n } catch (error) {\n // Let the command handle config failures - commands can check if sourceConfig is undefined\n }\n};\n\nexport default hook;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAQA,IAAM,OAAqB,eAAgB,SAAS;AAClD,QAAM,aAAa,QAAQ,IAAI;AAG/B,MAAI,QAAQ,OAAO,QAAW;AAC5B,UAAM,CAAC,cAAc,iBAAiB,IAAI,MAAM,QAAQ,IAAI;AAAA,MAC1D,mBAAmB,UAAU;AAAA,MAC7B,qBAAqB,UAAU;AAAA,IACjC,CAAC;AAED,QAAI,gBAAgB,mBAAmB;AACrC,YAAM,kBAAkB,MAAM,cAAc,UAAU;AACtD,UAAI,iBAAiB;AACnB,cAAM,QAAQ,OAAO,WAAW,eAAe;AAAA,MACjD;AACA,WAAK,KAAK,WAAW,OAAO;AAAA,IAC9B;AAAA,EACF;AAGA,MAAI;AACJ,QAAM,iBAAiB,QAAQ,KAAK,QAAQ,UAAU;AACtD,MAAI,mBAAmB,MAAM,iBAAiB,IAAI,QAAQ,KAAK,QAAQ;AACrE,iBAAa,QAAQ,KAAK,iBAAiB,CAAC;AAAA,EAC9C,OAAO;AACL,UAAM,uBAAuB,QAAQ,KAAK,KAAK,CAAC,QAAQ,IAAI,WAAW,WAAW,CAAC;AACnF,QAAI,sBAAsB;AACxB,mBAAa,qBAAqB,MAAM,GAAG,EAAE,CAAC;AAAA,IAChD;AAAA,EACF;AAGA,QAAM,YAAY,QAAQ,KAAK,QAAQ,IAAI;AAC3C,MAAI,cAAc,MAAM,YAAY,IAAI,QAAQ,KAAK,QAAQ;AAC3D,iBAAa,QAAQ,KAAK,YAAY,CAAC;AAAA,EACzC;AAEA,MAAI;AACF,UAAM,iBAAiB,MAAM,cAAc,YAAY,UAAU;AAEjE,IAAC,QAAQ,OAAuC,eAAe;AAAA,EACjE,SAAS,OAAO;AAAA,EAEhB;AACF;AAEA,IAAO,eAAQ;","names":[]}
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  getMarketplaceLabel,
4
4
  loadSkillsMatrixFromSource
5
- } from "./chunk-45R64U2S.js";
5
+ } from "./chunk-CADG5WWP.js";
6
6
  import "./chunk-L6MTIQ2U.js";
7
7
  import "./chunk-T4EXUIBY.js";
8
8
  import "./chunk-BKL3DF2Q.js";
@@ -14,4 +14,4 @@ export {
14
14
  getMarketplaceLabel,
15
15
  loadSkillsMatrixFromSource
16
16
  };
17
- //# sourceMappingURL=source-loader-YMWWZFVD.js.map
17
+ //# sourceMappingURL=source-loader-3MZ2MBOF.js.map
@@ -3,7 +3,7 @@ import {
3
3
  addSource,
4
4
  getSourceSummary,
5
5
  removeSource
6
- } from "./chunk-45R64U2S.js";
6
+ } from "./chunk-CADG5WWP.js";
7
7
  import "./chunk-L6MTIQ2U.js";
8
8
  import "./chunk-T4EXUIBY.js";
9
9
  import "./chunk-BKL3DF2Q.js";
@@ -16,4 +16,4 @@ export {
16
16
  getSourceSummary,
17
17
  removeSource
18
18
  };
19
- //# sourceMappingURL=source-manager-6G3EVTU2.js.map
19
+ //# sourceMappingURL=source-manager-NEH6QXE5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,15 +1,19 @@
1
1
  #!/usr/bin/env node
2
+ import {
3
+ SINGLE_REACT_MATRIX
4
+ } from "../chunk-DA3WIZ4C.js";
5
+ import "../chunk-DHBRWGRZ.js";
2
6
  import {
3
7
  SKILLS,
4
8
  createMockMatrix
5
- } from "../chunk-N4D43IOO.js";
9
+ } from "../chunk-J2D6OBIX.js";
6
10
  import {
7
11
  describe,
8
12
  globalExpect,
9
13
  it
10
14
  } from "../chunk-XY3XDVMI.js";
11
- import "../chunk-EULHBV5V.js";
12
- import "../chunk-45R64U2S.js";
15
+ import "../chunk-QOJAZI72.js";
16
+ import "../chunk-CADG5WWP.js";
13
17
  import "../chunk-L6MTIQ2U.js";
14
18
  import "../chunk-T4EXUIBY.js";
15
19
  import {
@@ -30,7 +34,7 @@ init_esm_shims();
30
34
  describe("MatrixStore", () => {
31
35
  describe("setMatrix and getMatrix", () => {
32
36
  it("should store and retrieve the matrix", () => {
33
- const matrix = createMockMatrix(SKILLS.react);
37
+ const matrix = SINGLE_REACT_MATRIX;
34
38
  useMatrixStore.getState().setMatrix(matrix);
35
39
  const retrieved = useMatrixStore.getState().getMatrix();
36
40
  globalExpect(retrieved).toBe(matrix);
@@ -38,7 +42,7 @@ describe("MatrixStore", () => {
38
42
  });
39
43
  describe("reset", () => {
40
44
  it("should clear the matrix back to null", () => {
41
- const matrix = createMockMatrix(SKILLS.react);
45
+ const matrix = SINGLE_REACT_MATRIX;
42
46
  useMatrixStore.getState().setMatrix(matrix);
43
47
  useMatrixStore.getState().reset();
44
48
  globalExpect(useMatrixStore.getState().matrix).toBeNull();
@@ -65,13 +69,13 @@ describe("MatrixStore", () => {
65
69
  globalExpect(result).toBe(reactSkill);
66
70
  });
67
71
  it("should return undefined for unknown ID", () => {
68
- const matrix = createMockMatrix(SKILLS.react);
72
+ const matrix = SINGLE_REACT_MATRIX;
69
73
  useMatrixStore.getState().setMatrix(matrix);
70
74
  const result = useMatrixStore.getState().getSkill("web-framework-nonexistent");
71
75
  globalExpect(result).toBeUndefined();
72
76
  });
73
77
  it("should return undefined for unknown slug", () => {
74
- const matrix = createMockMatrix(SKILLS.react);
78
+ const matrix = SINGLE_REACT_MATRIX;
75
79
  useMatrixStore.getState().setMatrix(matrix);
76
80
  const result = useMatrixStore.getState().getSkill("nonexistent");
77
81
  globalExpect(result).toBeUndefined();
@@ -90,20 +94,20 @@ describe("MatrixStore", () => {
90
94
  globalExpect(result).toBe(reactSkill);
91
95
  });
92
96
  it("should return the matrix via the standalone getMatrix selector", () => {
93
- const matrix = createMockMatrix(SKILLS.react);
97
+ const matrix = SINGLE_REACT_MATRIX;
94
98
  useMatrixStore.getState().setMatrix(matrix);
95
99
  const result = getMatrix();
96
100
  globalExpect(result).toBe(matrix);
97
101
  });
98
102
  it("should throw via the standalone getSkill selector for missing skill", () => {
99
- const matrix = createMockMatrix(SKILLS.react);
103
+ const matrix = SINGLE_REACT_MATRIX;
100
104
  useMatrixStore.getState().setMatrix(matrix);
101
105
  globalExpect(() => getSkill("web-framework-nonexistent")).toThrow(
102
106
  "Skill 'web-framework-nonexistent' not found in matrix store"
103
107
  );
104
108
  });
105
109
  it("should return undefined via findSkill for missing skill", () => {
106
- const matrix = createMockMatrix(SKILLS.react);
110
+ const matrix = SINGLE_REACT_MATRIX;
107
111
  useMatrixStore.getState().setMatrix(matrix);
108
112
  const result = findSkill("web-framework-nonexistent");
109
113
  globalExpect(result).toBeUndefined();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/stores/matrix-store.test.ts"],"sourcesContent":["import { describe, it, expect } from \"vitest\";\nimport { useMatrixStore, getSkill, getMatrix, findSkill } from \"./matrix-store\";\nimport { createMockMatrix, SKILLS } from \"../lib/__tests__/helpers\";\nimport type { SkillId, SkillSlug } from \"../types\";\n\ndescribe(\"MatrixStore\", () => {\n describe(\"setMatrix and getMatrix\", () => {\n it(\"should store and retrieve the matrix\", () => {\n const matrix = createMockMatrix(SKILLS.react);\n\n useMatrixStore.getState().setMatrix(matrix);\n\n const retrieved = useMatrixStore.getState().getMatrix();\n expect(retrieved).toBe(matrix);\n });\n });\n\n describe(\"reset\", () => {\n it(\"should clear the matrix back to null\", () => {\n const matrix = createMockMatrix(SKILLS.react);\n\n useMatrixStore.getState().setMatrix(matrix);\n useMatrixStore.getState().reset();\n\n expect(useMatrixStore.getState().matrix).toBeNull();\n });\n });\n\n describe(\"getMatrix\", () => {\n it(\"should throw when store is not populated\", () => {\n expect(() => useMatrixStore.getState().getMatrix()).toThrow(\"Matrix store not initialized\");\n });\n });\n\n describe(\"getSkill\", () => {\n it(\"should return a skill by SkillId\", () => {\n const reactSkill = SKILLS.react;\n const matrix = createMockMatrix(reactSkill);\n\n useMatrixStore.getState().setMatrix(matrix);\n\n const result = useMatrixStore.getState().getSkill(\"web-framework-react\");\n expect(result).toBe(reactSkill);\n });\n\n it(\"should return a skill by SkillSlug via slugMap\", () => {\n const reactSkill = SKILLS.react;\n const matrix = createMockMatrix(reactSkill);\n\n useMatrixStore.getState().setMatrix(matrix);\n\n const result = useMatrixStore.getState().getSkill(\"react\");\n expect(result).toBe(reactSkill);\n });\n\n it(\"should return undefined for unknown ID\", () => {\n const matrix = createMockMatrix(SKILLS.react);\n\n useMatrixStore.getState().setMatrix(matrix);\n\n const result = useMatrixStore.getState().getSkill(\"web-framework-nonexistent\" as SkillId);\n expect(result).toBeUndefined();\n });\n\n it(\"should return undefined for unknown slug\", () => {\n const matrix = createMockMatrix(SKILLS.react);\n\n useMatrixStore.getState().setMatrix(matrix);\n\n const result = useMatrixStore.getState().getSkill(\"nonexistent\" as SkillSlug);\n expect(result).toBeUndefined();\n });\n\n it(\"should return undefined when store is not populated\", () => {\n const result = useMatrixStore.getState().getSkill(\"web-framework-react\");\n expect(result).toBeUndefined();\n });\n });\n\n describe(\"standalone selectors\", () => {\n it(\"should look up a skill via the standalone getSkill selector\", () => {\n const reactSkill = SKILLS.react;\n const matrix = createMockMatrix(reactSkill);\n\n useMatrixStore.getState().setMatrix(matrix);\n\n const result = getSkill(\"web-framework-react\");\n expect(result).toBe(reactSkill);\n });\n\n it(\"should return the matrix via the standalone getMatrix selector\", () => {\n const matrix = createMockMatrix(SKILLS.react);\n\n useMatrixStore.getState().setMatrix(matrix);\n\n const result = getMatrix();\n expect(result).toBe(matrix);\n });\n\n it(\"should throw via the standalone getSkill selector for missing skill\", () => {\n const matrix = createMockMatrix(SKILLS.react);\n\n useMatrixStore.getState().setMatrix(matrix);\n\n expect(() => getSkill(\"web-framework-nonexistent\" as SkillId)).toThrow(\n \"Skill 'web-framework-nonexistent' not found in matrix store\",\n );\n });\n\n it(\"should return undefined via findSkill for missing skill\", () => {\n const matrix = createMockMatrix(SKILLS.react);\n\n useMatrixStore.getState().setMatrix(matrix);\n\n const result = findSkill(\"web-framework-nonexistent\" as SkillId);\n expect(result).toBeUndefined();\n });\n\n it(\"should return a skill via findSkill when found\", () => {\n const reactSkill = SKILLS.react;\n const matrix = createMockMatrix(reactSkill);\n\n useMatrixStore.getState().setMatrix(matrix);\n\n const result = findSkill(\"web-framework-react\");\n expect(result).toBe(reactSkill);\n });\n\n it(\"should throw via the standalone getMatrix selector when not populated\", () => {\n expect(() => getMatrix()).toThrow(\"Matrix store not initialized\");\n });\n });\n});\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/cli/stores/matrix-store.test.ts"],"sourcesContent":["import { describe, it, expect } from \"vitest\";\nimport { useMatrixStore, getSkill, getMatrix, findSkill } from \"./matrix-store\";\nimport { createMockMatrix, SKILLS } from \"../lib/__tests__/helpers\";\nimport { SINGLE_REACT_MATRIX } from \"../lib/__tests__/mock-data/mock-matrices\";\nimport type { SkillId, SkillSlug } from \"../types\";\n\ndescribe(\"MatrixStore\", () => {\n describe(\"setMatrix and getMatrix\", () => {\n it(\"should store and retrieve the matrix\", () => {\n const matrix = SINGLE_REACT_MATRIX;\n\n useMatrixStore.getState().setMatrix(matrix);\n\n const retrieved = useMatrixStore.getState().getMatrix();\n expect(retrieved).toBe(matrix);\n });\n });\n\n describe(\"reset\", () => {\n it(\"should clear the matrix back to null\", () => {\n const matrix = SINGLE_REACT_MATRIX;\n\n useMatrixStore.getState().setMatrix(matrix);\n useMatrixStore.getState().reset();\n\n expect(useMatrixStore.getState().matrix).toBeNull();\n });\n });\n\n describe(\"getMatrix\", () => {\n it(\"should throw when store is not populated\", () => {\n expect(() => useMatrixStore.getState().getMatrix()).toThrow(\"Matrix store not initialized\");\n });\n });\n\n describe(\"getSkill\", () => {\n it(\"should return a skill by SkillId\", () => {\n const reactSkill = SKILLS.react;\n const matrix = createMockMatrix(reactSkill);\n\n useMatrixStore.getState().setMatrix(matrix);\n\n const result = useMatrixStore.getState().getSkill(\"web-framework-react\");\n expect(result).toBe(reactSkill);\n });\n\n it(\"should return a skill by SkillSlug via slugMap\", () => {\n const reactSkill = SKILLS.react;\n const matrix = createMockMatrix(reactSkill);\n\n useMatrixStore.getState().setMatrix(matrix);\n\n const result = useMatrixStore.getState().getSkill(\"react\");\n expect(result).toBe(reactSkill);\n });\n\n it(\"should return undefined for unknown ID\", () => {\n const matrix = SINGLE_REACT_MATRIX;\n\n useMatrixStore.getState().setMatrix(matrix);\n\n const result = useMatrixStore.getState().getSkill(\"web-framework-nonexistent\" as SkillId);\n expect(result).toBeUndefined();\n });\n\n it(\"should return undefined for unknown slug\", () => {\n const matrix = SINGLE_REACT_MATRIX;\n\n useMatrixStore.getState().setMatrix(matrix);\n\n const result = useMatrixStore.getState().getSkill(\"nonexistent\" as SkillSlug);\n expect(result).toBeUndefined();\n });\n\n it(\"should return undefined when store is not populated\", () => {\n const result = useMatrixStore.getState().getSkill(\"web-framework-react\");\n expect(result).toBeUndefined();\n });\n });\n\n describe(\"standalone selectors\", () => {\n it(\"should look up a skill via the standalone getSkill selector\", () => {\n const reactSkill = SKILLS.react;\n const matrix = createMockMatrix(reactSkill);\n\n useMatrixStore.getState().setMatrix(matrix);\n\n const result = getSkill(\"web-framework-react\");\n expect(result).toBe(reactSkill);\n });\n\n it(\"should return the matrix via the standalone getMatrix selector\", () => {\n const matrix = SINGLE_REACT_MATRIX;\n\n useMatrixStore.getState().setMatrix(matrix);\n\n const result = getMatrix();\n expect(result).toBe(matrix);\n });\n\n it(\"should throw via the standalone getSkill selector for missing skill\", () => {\n const matrix = SINGLE_REACT_MATRIX;\n\n useMatrixStore.getState().setMatrix(matrix);\n\n expect(() => getSkill(\"web-framework-nonexistent\" as SkillId)).toThrow(\n \"Skill 'web-framework-nonexistent' not found in matrix store\",\n );\n });\n\n it(\"should return undefined via findSkill for missing skill\", () => {\n const matrix = SINGLE_REACT_MATRIX;\n\n useMatrixStore.getState().setMatrix(matrix);\n\n const result = findSkill(\"web-framework-nonexistent\" as SkillId);\n expect(result).toBeUndefined();\n });\n\n it(\"should return a skill via findSkill when found\", () => {\n const reactSkill = SKILLS.react;\n const matrix = createMockMatrix(reactSkill);\n\n useMatrixStore.getState().setMatrix(matrix);\n\n const result = findSkill(\"web-framework-react\");\n expect(result).toBe(reactSkill);\n });\n\n it(\"should throw via the standalone getMatrix selector when not populated\", () => {\n expect(() => getMatrix()).toThrow(\"Matrix store not initialized\");\n });\n });\n});\n"],"mappings":"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","names":[]}
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  useWizardStore
4
- } from "../chunk-EULHBV5V.js";
5
- import "../chunk-45R64U2S.js";
4
+ } from "../chunk-QOJAZI72.js";
5
+ import "../chunk-CADG5WWP.js";
6
6
  import "../chunk-L6MTIQ2U.js";
7
7
  import "../chunk-T4EXUIBY.js";
8
8
  import "../chunk-BKL3DF2Q.js";