vskill 0.5.0 → 0.5.2

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 (207) hide show
  1. package/dist/eval-ui/assets/{index-CcnlpaWS.js → index-CxHCKEhf.js} +2 -2
  2. package/dist/eval-ui/index.html +1 -1
  3. package/package.json +1 -1
  4. package/dist/agents/agents-registry.test.d.ts +0 -1
  5. package/dist/agents/agents-registry.test.js +0 -248
  6. package/dist/agents/agents-registry.test.js.map +0 -1
  7. package/dist/api/client.test.d.ts +0 -1
  8. package/dist/api/client.test.js +0 -428
  9. package/dist/api/client.test.js.map +0 -1
  10. package/dist/audit/audit-integration.test.d.ts +0 -1
  11. package/dist/audit/audit-integration.test.js +0 -92
  12. package/dist/audit/audit-integration.test.js.map +0 -1
  13. package/dist/audit/audit-llm.test.d.ts +0 -1
  14. package/dist/audit/audit-llm.test.js +0 -110
  15. package/dist/audit/audit-llm.test.js.map +0 -1
  16. package/dist/audit/audit-patterns.test.d.ts +0 -1
  17. package/dist/audit/audit-patterns.test.js +0 -91
  18. package/dist/audit/audit-patterns.test.js.map +0 -1
  19. package/dist/audit/audit-scanner.test.d.ts +0 -1
  20. package/dist/audit/audit-scanner.test.js +0 -112
  21. package/dist/audit/audit-scanner.test.js.map +0 -1
  22. package/dist/audit/audit-types.test.d.ts +0 -1
  23. package/dist/audit/audit-types.test.js +0 -140
  24. package/dist/audit/audit-types.test.js.map +0 -1
  25. package/dist/audit/config.test.d.ts +0 -1
  26. package/dist/audit/config.test.js +0 -44
  27. package/dist/audit/config.test.js.map +0 -1
  28. package/dist/audit/file-discovery.test.d.ts +0 -1
  29. package/dist/audit/file-discovery.test.js +0 -120
  30. package/dist/audit/file-discovery.test.js.map +0 -1
  31. package/dist/audit/fix-suggestions.test.d.ts +0 -1
  32. package/dist/audit/fix-suggestions.test.js +0 -35
  33. package/dist/audit/fix-suggestions.test.js.map +0 -1
  34. package/dist/audit/formatters/json-formatter.test.d.ts +0 -1
  35. package/dist/audit/formatters/json-formatter.test.js +0 -49
  36. package/dist/audit/formatters/json-formatter.test.js.map +0 -1
  37. package/dist/audit/formatters/report-formatter.test.d.ts +0 -1
  38. package/dist/audit/formatters/report-formatter.test.js +0 -51
  39. package/dist/audit/formatters/report-formatter.test.js.map +0 -1
  40. package/dist/audit/formatters/sarif-formatter.test.d.ts +0 -1
  41. package/dist/audit/formatters/sarif-formatter.test.js +0 -71
  42. package/dist/audit/formatters/sarif-formatter.test.js.map +0 -1
  43. package/dist/audit/formatters/terminal-formatter.test.d.ts +0 -1
  44. package/dist/audit/formatters/terminal-formatter.test.js +0 -51
  45. package/dist/audit/formatters/terminal-formatter.test.js.map +0 -1
  46. package/dist/blocklist/blocklist-e2e.test.d.ts +0 -1
  47. package/dist/blocklist/blocklist-e2e.test.js +0 -346
  48. package/dist/blocklist/blocklist-e2e.test.js.map +0 -1
  49. package/dist/blocklist/blocklist.test.d.ts +0 -1
  50. package/dist/blocklist/blocklist.test.js +0 -259
  51. package/dist/blocklist/blocklist.test.js.map +0 -1
  52. package/dist/commands/__tests__/eval-router.test.d.ts +0 -1
  53. package/dist/commands/__tests__/eval-router.test.js +0 -60
  54. package/dist/commands/__tests__/eval-router.test.js.map +0 -1
  55. package/dist/commands/__tests__/eval-serve.test.d.ts +0 -1
  56. package/dist/commands/__tests__/eval-serve.test.js +0 -23
  57. package/dist/commands/__tests__/eval-serve.test.js.map +0 -1
  58. package/dist/commands/add-blocklist-e2e.test.d.ts +0 -1
  59. package/dist/commands/add-blocklist-e2e.test.js +0 -397
  60. package/dist/commands/add-blocklist-e2e.test.js.map +0 -1
  61. package/dist/commands/add-wizard.test.d.ts +0 -1
  62. package/dist/commands/add-wizard.test.js +0 -392
  63. package/dist/commands/add-wizard.test.js.map +0 -1
  64. package/dist/commands/add.test.d.ts +0 -1
  65. package/dist/commands/add.test.js +0 -2365
  66. package/dist/commands/add.test.js.map +0 -1
  67. package/dist/commands/audit.test.d.ts +0 -1
  68. package/dist/commands/audit.test.js +0 -79
  69. package/dist/commands/audit.test.js.map +0 -1
  70. package/dist/commands/blocklist.test.d.ts +0 -1
  71. package/dist/commands/blocklist.test.js +0 -158
  72. package/dist/commands/blocklist.test.js.map +0 -1
  73. package/dist/commands/eval/__tests__/coverage.test.d.ts +0 -1
  74. package/dist/commands/eval/__tests__/coverage.test.js +0 -122
  75. package/dist/commands/eval/__tests__/coverage.test.js.map +0 -1
  76. package/dist/commands/eval/__tests__/generate-all.test.d.ts +0 -1
  77. package/dist/commands/eval/__tests__/generate-all.test.js +0 -133
  78. package/dist/commands/eval/__tests__/generate-all.test.js.map +0 -1
  79. package/dist/commands/eval/__tests__/init.test.d.ts +0 -1
  80. package/dist/commands/eval/__tests__/init.test.js +0 -116
  81. package/dist/commands/eval/__tests__/init.test.js.map +0 -1
  82. package/dist/commands/eval/__tests__/run.test.d.ts +0 -1
  83. package/dist/commands/eval/__tests__/run.test.js +0 -186
  84. package/dist/commands/eval/__tests__/run.test.js.map +0 -1
  85. package/dist/commands/find.test.d.ts +0 -1
  86. package/dist/commands/find.test.js +0 -481
  87. package/dist/commands/find.test.js.map +0 -1
  88. package/dist/commands/marketplace.test.d.ts +0 -1
  89. package/dist/commands/marketplace.test.js +0 -129
  90. package/dist/commands/marketplace.test.js.map +0 -1
  91. package/dist/commands/remove.test.d.ts +0 -1
  92. package/dist/commands/remove.test.js +0 -164
  93. package/dist/commands/remove.test.js.map +0 -1
  94. package/dist/commands/should-skip.test.d.ts +0 -1
  95. package/dist/commands/should-skip.test.js +0 -56
  96. package/dist/commands/should-skip.test.js.map +0 -1
  97. package/dist/commands/submit.test.d.ts +0 -1
  98. package/dist/commands/submit.test.js +0 -83
  99. package/dist/commands/submit.test.js.map +0 -1
  100. package/dist/commands/update.test.d.ts +0 -1
  101. package/dist/commands/update.test.js +0 -250
  102. package/dist/commands/update.test.js.map +0 -1
  103. package/dist/discovery/github-tree.test.d.ts +0 -1
  104. package/dist/discovery/github-tree.test.js +0 -372
  105. package/dist/discovery/github-tree.test.js.map +0 -1
  106. package/dist/eval/__tests__/activation-tester.test.d.ts +0 -1
  107. package/dist/eval/__tests__/activation-tester.test.js +0 -203
  108. package/dist/eval/__tests__/activation-tester.test.js.map +0 -1
  109. package/dist/eval/__tests__/benchmark-history.test.d.ts +0 -1
  110. package/dist/eval/__tests__/benchmark-history.test.js +0 -422
  111. package/dist/eval/__tests__/benchmark-history.test.js.map +0 -1
  112. package/dist/eval/__tests__/benchmark.test.d.ts +0 -1
  113. package/dist/eval/__tests__/benchmark.test.js +0 -94
  114. package/dist/eval/__tests__/benchmark.test.js.map +0 -1
  115. package/dist/eval/__tests__/comparator.test.d.ts +0 -1
  116. package/dist/eval/__tests__/comparator.test.js +0 -282
  117. package/dist/eval/__tests__/comparator.test.js.map +0 -1
  118. package/dist/eval/__tests__/judge.test.d.ts +0 -1
  119. package/dist/eval/__tests__/judge.test.js +0 -122
  120. package/dist/eval/__tests__/judge.test.js.map +0 -1
  121. package/dist/eval/__tests__/llm.test.d.ts +0 -1
  122. package/dist/eval/__tests__/llm.test.js +0 -543
  123. package/dist/eval/__tests__/llm.test.js.map +0 -1
  124. package/dist/eval/__tests__/mcp-detector.test.d.ts +0 -1
  125. package/dist/eval/__tests__/mcp-detector.test.js +0 -180
  126. package/dist/eval/__tests__/mcp-detector.test.js.map +0 -1
  127. package/dist/eval/__tests__/prompt-builder.test.d.ts +0 -1
  128. package/dist/eval/__tests__/prompt-builder.test.js +0 -142
  129. package/dist/eval/__tests__/prompt-builder.test.js.map +0 -1
  130. package/dist/eval/__tests__/schema.test.d.ts +0 -1
  131. package/dist/eval/__tests__/schema.test.js +0 -247
  132. package/dist/eval/__tests__/schema.test.js.map +0 -1
  133. package/dist/eval/__tests__/skill-scanner.test.d.ts +0 -1
  134. package/dist/eval/__tests__/skill-scanner.test.js +0 -228
  135. package/dist/eval/__tests__/skill-scanner.test.js.map +0 -1
  136. package/dist/eval/__tests__/verdict.test.d.ts +0 -1
  137. package/dist/eval/__tests__/verdict.test.js +0 -47
  138. package/dist/eval/__tests__/verdict.test.js.map +0 -1
  139. package/dist/eval-server/__tests__/benchmark-runner.test.d.ts +0 -1
  140. package/dist/eval-server/__tests__/benchmark-runner.test.js +0 -301
  141. package/dist/eval-server/__tests__/benchmark-runner.test.js.map +0 -1
  142. package/dist/eval-server/__tests__/comparison-sse-events.test.d.ts +0 -1
  143. package/dist/eval-server/__tests__/comparison-sse-events.test.js +0 -278
  144. package/dist/eval-server/__tests__/comparison-sse-events.test.js.map +0 -1
  145. package/dist/eval-server/__tests__/sse-helpers.test.d.ts +0 -1
  146. package/dist/eval-server/__tests__/sse-helpers.test.js +0 -128
  147. package/dist/eval-server/__tests__/sse-helpers.test.js.map +0 -1
  148. package/dist/installer/canonical.test.d.ts +0 -1
  149. package/dist/installer/canonical.test.js +0 -264
  150. package/dist/installer/canonical.test.js.map +0 -1
  151. package/dist/lockfile/lockfile.test.d.ts +0 -1
  152. package/dist/lockfile/lockfile.test.js +0 -204
  153. package/dist/lockfile/lockfile.test.js.map +0 -1
  154. package/dist/lockfile/project-root.test.d.ts +0 -1
  155. package/dist/lockfile/project-root.test.js +0 -49
  156. package/dist/lockfile/project-root.test.js.map +0 -1
  157. package/dist/marketplace/marketplace.test.d.ts +0 -1
  158. package/dist/marketplace/marketplace.test.js +0 -312
  159. package/dist/marketplace/marketplace.test.js.map +0 -1
  160. package/dist/resolvers/source-resolver.test.d.ts +0 -1
  161. package/dist/resolvers/source-resolver.test.js +0 -104
  162. package/dist/resolvers/source-resolver.test.js.map +0 -1
  163. package/dist/resolvers/url-resolver.test.d.ts +0 -1
  164. package/dist/resolvers/url-resolver.test.js +0 -49
  165. package/dist/resolvers/url-resolver.test.js.map +0 -1
  166. package/dist/scanner/dci-integration.test.d.ts +0 -1
  167. package/dist/scanner/dci-integration.test.js +0 -83
  168. package/dist/scanner/dci-integration.test.js.map +0 -1
  169. package/dist/scanner/patterns.test.d.ts +0 -1
  170. package/dist/scanner/patterns.test.js +0 -832
  171. package/dist/scanner/patterns.test.js.map +0 -1
  172. package/dist/scanner/tier1.test.d.ts +0 -1
  173. package/dist/scanner/tier1.test.js +0 -305
  174. package/dist/scanner/tier1.test.js.map +0 -1
  175. package/dist/security/platform-security.test.d.ts +0 -1
  176. package/dist/security/platform-security.test.js +0 -92
  177. package/dist/security/platform-security.test.js.map +0 -1
  178. package/dist/settings/settings.test.d.ts +0 -1
  179. package/dist/settings/settings.test.js +0 -103
  180. package/dist/settings/settings.test.js.map +0 -1
  181. package/dist/updater/source-fetcher.test.d.ts +0 -1
  182. package/dist/updater/source-fetcher.test.js +0 -192
  183. package/dist/updater/source-fetcher.test.js.map +0 -1
  184. package/dist/utils/__tests__/paths.test.d.ts +0 -1
  185. package/dist/utils/__tests__/paths.test.js +0 -22
  186. package/dist/utils/__tests__/paths.test.js.map +0 -1
  187. package/dist/utils/__tests__/resolve-binary.integration.test.d.ts +0 -1
  188. package/dist/utils/__tests__/resolve-binary.integration.test.js +0 -138
  189. package/dist/utils/__tests__/resolve-binary.integration.test.js.map +0 -1
  190. package/dist/utils/__tests__/resolve-binary.test.d.ts +0 -1
  191. package/dist/utils/__tests__/resolve-binary.test.js +0 -175
  192. package/dist/utils/__tests__/resolve-binary.test.js.map +0 -1
  193. package/dist/utils/__tests__/validation.test.d.ts +0 -1
  194. package/dist/utils/__tests__/validation.test.js +0 -107
  195. package/dist/utils/__tests__/validation.test.js.map +0 -1
  196. package/dist/utils/agent-filter.test.d.ts +0 -1
  197. package/dist/utils/agent-filter.test.js +0 -75
  198. package/dist/utils/agent-filter.test.js.map +0 -1
  199. package/dist/utils/output.test.d.ts +0 -1
  200. package/dist/utils/output.test.js +0 -28
  201. package/dist/utils/output.test.js.map +0 -1
  202. package/dist/utils/project-root.test.d.ts +0 -1
  203. package/dist/utils/project-root.test.js +0 -74
  204. package/dist/utils/project-root.test.js.map +0 -1
  205. package/dist/utils/prompts.test.d.ts +0 -1
  206. package/dist/utils/prompts.test.js +0 -285
  207. package/dist/utils/prompts.test.js.map +0 -1
@@ -1,392 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
2
- // ---------------------------------------------------------------------------
3
- // Mock node:fs
4
- // ---------------------------------------------------------------------------
5
- const mockMkdirSync = vi.fn();
6
- const mockWriteFileSync = vi.fn();
7
- const mockReadFileSync = vi.fn();
8
- const mockExistsSync = vi.fn();
9
- const mockChmodSync = vi.fn();
10
- const mockReaddirSync = vi.fn();
11
- const mockStatSync = vi.fn();
12
- const mockCopyFileSync = vi.fn();
13
- const mockRmSync = vi.fn();
14
- vi.mock("node:fs", () => ({
15
- mkdirSync: (...args) => mockMkdirSync(...args),
16
- writeFileSync: (...args) => mockWriteFileSync(...args),
17
- readFileSync: (...args) => mockReadFileSync(...args),
18
- existsSync: (...args) => mockExistsSync(...args),
19
- chmodSync: (...args) => mockChmodSync(...args),
20
- readdirSync: (...args) => mockReaddirSync(...args),
21
- statSync: (...args) => mockStatSync(...args),
22
- copyFileSync: (...args) => mockCopyFileSync(...args),
23
- rmSync: (...args) => mockRmSync(...args),
24
- }));
25
- vi.mock("node:path", async () => {
26
- const actual = await vi.importActual("node:path");
27
- return { ...actual };
28
- });
29
- const mockDigest = vi.fn().mockReturnValue("abcdef123456xxxx");
30
- const mockUpdate = vi.fn().mockReturnValue({ digest: mockDigest });
31
- vi.mock("node:crypto", () => ({
32
- createHash: () => ({ update: mockUpdate }),
33
- }));
34
- // ---------------------------------------------------------------------------
35
- // Mock agents registry
36
- // ---------------------------------------------------------------------------
37
- const mockDetectInstalledAgents = vi.fn();
38
- vi.mock("../agents/agents-registry.js", () => ({
39
- detectInstalledAgents: (...args) => mockDetectInstalledAgents(...args),
40
- AGENTS_REGISTRY: [
41
- { id: "claude-code", displayName: "Claude Code", isUniversal: false, parentCompany: "Anthropic", localSkillsDir: ".claude/commands", globalSkillsDir: "~/.claude/commands" },
42
- { id: "cursor", displayName: "Cursor", isUniversal: false, parentCompany: "Anysphere", localSkillsDir: ".cursor/commands", globalSkillsDir: "~/.cursor/commands" },
43
- ],
44
- }));
45
- // ---------------------------------------------------------------------------
46
- // Mock lockfile
47
- // ---------------------------------------------------------------------------
48
- const mockEnsureLockfile = vi.fn();
49
- const mockWriteLockfile = vi.fn();
50
- vi.mock("../lockfile/index.js", () => ({
51
- ensureLockfile: (...args) => mockEnsureLockfile(...args),
52
- writeLockfile: (...args) => mockWriteLockfile(...args),
53
- }));
54
- // ---------------------------------------------------------------------------
55
- // Mock scanner, blocklist, security, API client, discovery
56
- // ---------------------------------------------------------------------------
57
- const mockRunTier1Scan = vi.fn();
58
- vi.mock("../scanner/index.js", () => ({
59
- runTier1Scan: (...args) => mockRunTier1Scan(...args),
60
- }));
61
- const mockCheckBlocklist = vi.fn();
62
- const mockCheckInstallSafety = vi.fn();
63
- vi.mock("../blocklist/blocklist.js", () => ({
64
- checkBlocklist: (...args) => mockCheckBlocklist(...args),
65
- checkInstallSafety: (...args) => mockCheckInstallSafety(...args),
66
- }));
67
- const mockCheckPlatformSecurity = vi.fn();
68
- vi.mock("../security/index.js", () => ({
69
- checkPlatformSecurity: (...args) => mockCheckPlatformSecurity(...args),
70
- }));
71
- const mockGetSkill = vi.fn();
72
- vi.mock("../api/client.js", () => ({
73
- getSkill: (...args) => mockGetSkill(...args),
74
- reportInstall: vi.fn().mockResolvedValue(undefined),
75
- reportInstallBatch: vi.fn().mockResolvedValue(undefined),
76
- }));
77
- const mockDiscoverSkills = vi.fn();
78
- vi.mock("../discovery/github-tree.js", () => ({
79
- discoverSkills: (...args) => mockDiscoverSkills(...args),
80
- }));
81
- // ---------------------------------------------------------------------------
82
- // Mock project root & agent filter
83
- // ---------------------------------------------------------------------------
84
- const mockFindProjectRoot = vi.fn();
85
- vi.mock("../utils/project-root.js", () => ({
86
- findProjectRoot: (...args) => mockFindProjectRoot(...args),
87
- }));
88
- const mockFilterAgents = vi.fn();
89
- vi.mock("../utils/agent-filter.js", () => ({
90
- filterAgents: (...args) => mockFilterAgents(...args),
91
- }));
92
- // ---------------------------------------------------------------------------
93
- // Mock output (suppress ANSI output)
94
- // ---------------------------------------------------------------------------
95
- vi.mock("../utils/output.js", () => ({
96
- bold: (s) => s,
97
- green: (s) => s,
98
- red: (s) => s,
99
- yellow: (s) => s,
100
- dim: (s) => s,
101
- cyan: (s) => s,
102
- spinner: () => ({ stop: vi.fn() }),
103
- }));
104
- // ---------------------------------------------------------------------------
105
- // Mock prompts (to test wizard integration without real readline)
106
- // ---------------------------------------------------------------------------
107
- const mockPromptCheckboxList = vi.fn();
108
- const mockPromptChoice = vi.fn();
109
- const mockPromptConfirm = vi.fn();
110
- const mockIsTTY = vi.fn();
111
- vi.mock("../utils/prompts.js", () => ({
112
- isTTY: (...args) => mockIsTTY(...args),
113
- createPrompter: () => ({
114
- promptCheckboxList: (...args) => mockPromptCheckboxList(...args),
115
- promptChoice: (...args) => mockPromptChoice(...args),
116
- promptConfirm: (...args) => mockPromptConfirm(...args),
117
- }),
118
- }));
119
- // ---------------------------------------------------------------------------
120
- // Mock canonical installer
121
- // ---------------------------------------------------------------------------
122
- const mockInstallSymlink = vi.fn();
123
- const mockInstallCopy = vi.fn();
124
- vi.mock("../installer/canonical.js", () => ({
125
- installSymlink: (...args) => mockInstallSymlink(...args),
126
- installCopy: (...args) => mockInstallCopy(...args),
127
- }));
128
- // ---------------------------------------------------------------------------
129
- // Import module under test AFTER mocks
130
- // ---------------------------------------------------------------------------
131
- const { addCommand } = await import("./add.js");
132
- // ---------------------------------------------------------------------------
133
- // Helpers
134
- // ---------------------------------------------------------------------------
135
- function makeScanResult(overrides = {}) {
136
- return {
137
- verdict: "PASS",
138
- findings: [],
139
- score: 100,
140
- patternsChecked: 37,
141
- criticalCount: 0,
142
- highCount: 0,
143
- mediumCount: 0,
144
- lowCount: 0,
145
- infoCount: 0,
146
- durationMs: 1,
147
- ...overrides,
148
- };
149
- }
150
- function makeAgent(overrides = {}) {
151
- return {
152
- id: "claude-code",
153
- displayName: "Claude Code",
154
- localSkillsDir: ".claude/commands",
155
- globalSkillsDir: "~/.claude/commands",
156
- ...overrides,
157
- };
158
- }
159
- const originalFetch = globalThis.fetch;
160
- beforeEach(() => {
161
- vi.clearAllMocks();
162
- vi.spyOn(console, "log").mockImplementation(() => { });
163
- vi.spyOn(console, "error").mockImplementation(() => { });
164
- // Default: safe skill content
165
- globalThis.fetch = vi.fn().mockResolvedValue({
166
- ok: true,
167
- text: async () => "# Safe Skill\nNormal content",
168
- });
169
- mockRunTier1Scan.mockReturnValue(makeScanResult());
170
- mockCheckBlocklist.mockResolvedValue(null);
171
- mockCheckInstallSafety.mockResolvedValue({ blocked: false, rejected: false });
172
- mockCheckPlatformSecurity.mockResolvedValue(null);
173
- mockEnsureLockfile.mockReturnValue({ skills: {}, agents: [] });
174
- mockFindProjectRoot.mockReturnValue("/projects/myapp");
175
- mockFilterAgents.mockImplementation((agents) => agents);
176
- // Default: TTY
177
- mockIsTTY.mockReturnValue(true);
178
- });
179
- afterEach(() => {
180
- globalThis.fetch = originalFetch;
181
- });
182
- // ---------------------------------------------------------------------------
183
- // Tests: interactive-first default (prompts in TTY)
184
- // ---------------------------------------------------------------------------
185
- describe("wizard integration: interactive by default in TTY", () => {
186
- it("prompts for agents and method by default for multi-skill repos", async () => {
187
- const agents = [makeAgent(), makeAgent({ id: "cursor", displayName: "Cursor", localSkillsDir: ".cursor/skills" })];
188
- mockDetectInstalledAgents.mockResolvedValue(agents);
189
- mockDiscoverSkills.mockResolvedValue([
190
- { name: "skill-a", rawUrl: "https://raw.githubusercontent.com/o/r/main/skills/skill-a/SKILL.md" },
191
- { name: "skill-b", rawUrl: "https://raw.githubusercontent.com/o/r/main/skills/skill-b/SKILL.md" },
192
- ]);
193
- // Agent selection, method selection, skill selection (no scope prompt)
194
- mockPromptCheckboxList
195
- .mockResolvedValueOnce([0, 1]) // agents
196
- .mockResolvedValueOnce([0, 1]); // skills
197
- mockPromptChoice.mockResolvedValueOnce(0); // method: symlink
198
- await addCommand("owner/repo", {});
199
- // Agent checkbox + skill checkbox
200
- expect(mockPromptCheckboxList).toHaveBeenCalledTimes(2);
201
- // Method prompt only (scope prompt removed)
202
- expect(mockPromptChoice).toHaveBeenCalledTimes(1);
203
- });
204
- });
205
- describe("wizard integration: --yes flag (backward compat)", () => {
206
- it("skips all prompts when --yes is set", async () => {
207
- const agents = [makeAgent(), makeAgent({ id: "cursor", localSkillsDir: ".cursor/skills" })];
208
- mockDetectInstalledAgents.mockResolvedValue(agents);
209
- mockDiscoverSkills.mockResolvedValue([
210
- { name: "skill-a", rawUrl: "https://raw.githubusercontent.com/o/r/main/skills/skill-a/SKILL.md" },
211
- { name: "skill-b", rawUrl: "https://raw.githubusercontent.com/o/r/main/skills/skill-b/SKILL.md" },
212
- ]);
213
- await addCommand("owner/repo", { yes: true });
214
- expect(mockPromptCheckboxList).not.toHaveBeenCalled();
215
- expect(mockPromptChoice).not.toHaveBeenCalled();
216
- expect(mockPromptConfirm).not.toHaveBeenCalled();
217
- });
218
- });
219
- describe("wizard integration: --select is a no-op (interactive is default)", () => {
220
- it("shows same prompts with or without --select", async () => {
221
- const agents = [makeAgent()];
222
- mockDetectInstalledAgents.mockResolvedValue(agents);
223
- mockDiscoverSkills.mockResolvedValue([
224
- { name: "skill-a", rawUrl: "https://raw.githubusercontent.com/o/r/main/skills/skill-a/SKILL.md" },
225
- { name: "skill-b", rawUrl: "https://raw.githubusercontent.com/o/r/main/skills/skill-b/SKILL.md" },
226
- ]);
227
- // 1 detected + 1 undetected from registry → agent checkbox + method + skill checkbox (no scope)
228
- mockPromptCheckboxList
229
- .mockResolvedValueOnce([0]) // agents: select detected only
230
- .mockResolvedValueOnce([0, 1]); // skills
231
- mockPromptChoice.mockResolvedValueOnce(0); // method: symlink
232
- await addCommand("owner/repo", { select: true });
233
- // Method prompt only (scope removed)
234
- expect(mockPromptChoice).toHaveBeenCalledTimes(1);
235
- // Agent checkbox + skill checkbox
236
- expect(mockPromptCheckboxList).toHaveBeenCalledTimes(2);
237
- });
238
- });
239
- describe("wizard integration: non-TTY mode", () => {
240
- it("skips prompts when stdin is not a TTY even with --select", async () => {
241
- mockIsTTY.mockReturnValue(false);
242
- const agents = [makeAgent()];
243
- mockDetectInstalledAgents.mockResolvedValue(agents);
244
- mockDiscoverSkills.mockResolvedValue([
245
- { name: "skill-a", rawUrl: "https://raw.githubusercontent.com/o/r/main/skills/skill-a/SKILL.md" },
246
- { name: "skill-b", rawUrl: "https://raw.githubusercontent.com/o/r/main/skills/skill-b/SKILL.md" },
247
- ]);
248
- await addCommand("owner/repo", { select: true });
249
- expect(mockPromptCheckboxList).not.toHaveBeenCalled();
250
- expect(mockPromptChoice).not.toHaveBeenCalled();
251
- expect(mockPromptConfirm).not.toHaveBeenCalled();
252
- });
253
- });
254
- describe("wizard integration: single skill prompts for method", () => {
255
- it("shows method prompt and agent checkbox for single-skill with undetected agents", async () => {
256
- const agents = [makeAgent()];
257
- mockDetectInstalledAgents.mockResolvedValue(agents);
258
- mockDiscoverSkills.mockResolvedValue([
259
- { name: "only-skill", rawUrl: "https://raw.githubusercontent.com/o/r/main/SKILL.md" },
260
- ]);
261
- // 1 detected + 1 undetected → agent checkbox shown
262
- mockPromptCheckboxList.mockResolvedValueOnce([0]); // agents: select detected
263
- mockPromptChoice.mockResolvedValueOnce(0); // method: symlink (no scope prompt)
264
- await addCommand("owner/repo", {});
265
- // Agent checkbox shown (detected + undetected agents in list)
266
- expect(mockPromptCheckboxList).toHaveBeenCalledTimes(1);
267
- // Method prompt only (scope removed)
268
- expect(mockPromptChoice).toHaveBeenCalledTimes(1);
269
- });
270
- });
271
- describe("wizard integration: --agent flag skips agent selection", () => {
272
- it("does not prompt for agents but still prompts for method", async () => {
273
- const agents = [makeAgent()];
274
- mockDetectInstalledAgents.mockResolvedValue(agents);
275
- mockDiscoverSkills.mockResolvedValue([
276
- { name: "skill-a", rawUrl: "https://raw.githubusercontent.com/o/r/main/skills/skill-a/SKILL.md" },
277
- { name: "skill-b", rawUrl: "https://raw.githubusercontent.com/o/r/main/skills/skill-b/SKILL.md" },
278
- ]);
279
- // Method selection + skill selection (no agent checkbox since --agent, no scope prompt)
280
- mockPromptChoice.mockResolvedValueOnce(0); // method: symlink
281
- mockPromptCheckboxList.mockResolvedValue([0, 1]); // select all skills
282
- await addCommand("owner/repo", { agent: ["claude-code"] });
283
- // Skill checkbox called, agent checkbox NOT called (--agent flag)
284
- expect(mockPromptCheckboxList).toHaveBeenCalledTimes(1);
285
- // Method prompt only (scope removed)
286
- expect(mockPromptChoice).toHaveBeenCalledTimes(1);
287
- });
288
- });
289
- describe("wizard integration: --global flag skips scope selection", () => {
290
- it("does not prompt for scope when --global is provided but still prompts for method", async () => {
291
- const agents = [makeAgent()];
292
- mockDetectInstalledAgents.mockResolvedValue(agents);
293
- mockDiscoverSkills.mockResolvedValue([
294
- { name: "skill-a", rawUrl: "https://raw.githubusercontent.com/o/r/main/skills/skill-a/SKILL.md" },
295
- { name: "skill-b", rawUrl: "https://raw.githubusercontent.com/o/r/main/skills/skill-b/SKILL.md" },
296
- ]);
297
- // Agent checkbox + skill checkbox (no scope since --global, but method is prompted)
298
- mockPromptCheckboxList
299
- .mockResolvedValueOnce([0]) // agents: select detected
300
- .mockResolvedValueOnce([0, 1]); // skills
301
- mockPromptChoice.mockResolvedValueOnce(0); // method: symlink
302
- await addCommand("owner/repo", { global: true, select: true });
303
- // Only method prompt (scope skipped due to --global)
304
- expect(mockPromptChoice).toHaveBeenCalledTimes(1);
305
- });
306
- });
307
- describe("wizard integration: abort at agent selection", () => {
308
- it("exits cleanly when user selects no agents", async () => {
309
- const agents = [makeAgent(), makeAgent({ id: "cursor", displayName: "Cursor", localSkillsDir: ".cursor/skills" })];
310
- mockDetectInstalledAgents.mockResolvedValue(agents);
311
- mockDiscoverSkills.mockResolvedValue([
312
- { name: "skill-a", rawUrl: "https://raw.githubusercontent.com/o/r/main/skills/skill-a/SKILL.md" },
313
- { name: "skill-b", rawUrl: "https://raw.githubusercontent.com/o/r/main/skills/skill-b/SKILL.md" },
314
- ]);
315
- mockPromptCheckboxList.mockResolvedValueOnce([]); // user deselects all agents
316
- const mockExit = vi.spyOn(process, "exit").mockImplementation(() => {
317
- throw new Error("process.exit");
318
- });
319
- await expect(addCommand("owner/repo", {})).rejects.toThrow("process.exit");
320
- mockExit.mockRestore();
321
- // No skills should have been installed
322
- expect(mockWriteFileSync).not.toHaveBeenCalled();
323
- expect(mockInstallSymlink).not.toHaveBeenCalled();
324
- expect(mockInstallCopy).not.toHaveBeenCalled();
325
- });
326
- });
327
- // TC-014: Single-agent detected shows agents + method + skills (undetected shown too)
328
- describe("wizard integration: TC-014 single-agent prompts agents + method + skills", () => {
329
- it("shows agent checkbox with detected+undetected, method, and skills", async () => {
330
- const agents = [makeAgent()];
331
- mockDetectInstalledAgents.mockResolvedValue(agents);
332
- mockDiscoverSkills.mockResolvedValue([
333
- { name: "skill-a", rawUrl: "https://raw.githubusercontent.com/o/r/main/skills/skill-a/SKILL.md" },
334
- { name: "skill-b", rawUrl: "https://raw.githubusercontent.com/o/r/main/skills/skill-b/SKILL.md" },
335
- ]);
336
- // Agent checkbox (detected + undetected) + skill checkbox
337
- mockPromptCheckboxList
338
- .mockResolvedValueOnce([0]) // agents: select detected
339
- .mockResolvedValueOnce([0, 1]); // select both skills
340
- mockPromptChoice.mockResolvedValueOnce(0); // method: symlink (no scope prompt)
341
- await addCommand("owner/repo", {});
342
- // Agent checkbox + skill checkbox
343
- expect(mockPromptCheckboxList).toHaveBeenCalledTimes(2);
344
- // Method prompt only (scope removed)
345
- expect(mockPromptChoice).toHaveBeenCalledTimes(1);
346
- // Installation proceeded (via canonical installer)
347
- expect(mockInstallSymlink).toHaveBeenCalled();
348
- });
349
- });
350
- // TC-015: Multi-agent shows agents + method + skills
351
- describe("wizard integration: TC-015 multi-agent prompts agents + method + skills", () => {
352
- it("shows agent checkbox, method selection, and skill checkbox", async () => {
353
- const agents = [makeAgent(), makeAgent({ id: "cursor", displayName: "Cursor" })];
354
- mockDetectInstalledAgents.mockResolvedValue(agents);
355
- mockDiscoverSkills.mockResolvedValue([
356
- { name: "skill-a", rawUrl: "https://raw.githubusercontent.com/o/r/main/skills/skill-a/SKILL.md" },
357
- { name: "skill-b", rawUrl: "https://raw.githubusercontent.com/o/r/main/skills/skill-b/SKILL.md" },
358
- ]);
359
- mockPromptCheckboxList
360
- .mockResolvedValueOnce([0, 1]) // agents
361
- .mockResolvedValueOnce([0, 1]); // skills
362
- mockPromptChoice.mockResolvedValueOnce(0); // method: symlink (no scope prompt)
363
- await addCommand("owner/repo", {});
364
- // Two checkbox prompts: agents + skills
365
- expect(mockPromptCheckboxList).toHaveBeenCalledTimes(2);
366
- // Method prompt only (scope removed)
367
- expect(mockPromptChoice).toHaveBeenCalledTimes(1);
368
- });
369
- });
370
- // TC-016: --copy flag causes copy behavior instead of symlink
371
- describe("wizard integration: TC-016 --copy flag", () => {
372
- it("accepts --copy flag, skips method prompt, uses installCopy", async () => {
373
- const agents = [makeAgent()];
374
- mockDetectInstalledAgents.mockResolvedValue(agents);
375
- mockDiscoverSkills.mockResolvedValue([
376
- { name: "skill-a", rawUrl: "https://raw.githubusercontent.com/o/r/main/skills/skill-a/SKILL.md" },
377
- { name: "skill-b", rawUrl: "https://raw.githubusercontent.com/o/r/main/skills/skill-b/SKILL.md" },
378
- ]);
379
- // Agent checkbox + skill checkbox (no scope, no method since --copy)
380
- mockPromptCheckboxList
381
- .mockResolvedValueOnce([0]) // agents: select detected
382
- .mockResolvedValueOnce([0, 1]); // skills
383
- // Should not throw - --copy is a valid flag
384
- await addCommand("owner/repo", { copy: true });
385
- // Both scope and method prompts skipped (scope removed, method skipped by --copy)
386
- expect(mockPromptChoice).toHaveBeenCalledTimes(0);
387
- // Uses installCopy, not installSymlink
388
- expect(mockInstallCopy).toHaveBeenCalled();
389
- expect(mockInstallSymlink).not.toHaveBeenCalled();
390
- });
391
- });
392
- //# sourceMappingURL=add-wizard.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"add-wizard.test.js","sourceRoot":"","sources":["../../src/commands/add-wizard.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};