vskill 0.5.1 → 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 (205) hide show
  1. package/package.json +1 -1
  2. package/dist/agents/agents-registry.test.d.ts +0 -1
  3. package/dist/agents/agents-registry.test.js +0 -248
  4. package/dist/agents/agents-registry.test.js.map +0 -1
  5. package/dist/api/client.test.d.ts +0 -1
  6. package/dist/api/client.test.js +0 -428
  7. package/dist/api/client.test.js.map +0 -1
  8. package/dist/audit/audit-integration.test.d.ts +0 -1
  9. package/dist/audit/audit-integration.test.js +0 -92
  10. package/dist/audit/audit-integration.test.js.map +0 -1
  11. package/dist/audit/audit-llm.test.d.ts +0 -1
  12. package/dist/audit/audit-llm.test.js +0 -110
  13. package/dist/audit/audit-llm.test.js.map +0 -1
  14. package/dist/audit/audit-patterns.test.d.ts +0 -1
  15. package/dist/audit/audit-patterns.test.js +0 -91
  16. package/dist/audit/audit-patterns.test.js.map +0 -1
  17. package/dist/audit/audit-scanner.test.d.ts +0 -1
  18. package/dist/audit/audit-scanner.test.js +0 -112
  19. package/dist/audit/audit-scanner.test.js.map +0 -1
  20. package/dist/audit/audit-types.test.d.ts +0 -1
  21. package/dist/audit/audit-types.test.js +0 -140
  22. package/dist/audit/audit-types.test.js.map +0 -1
  23. package/dist/audit/config.test.d.ts +0 -1
  24. package/dist/audit/config.test.js +0 -44
  25. package/dist/audit/config.test.js.map +0 -1
  26. package/dist/audit/file-discovery.test.d.ts +0 -1
  27. package/dist/audit/file-discovery.test.js +0 -120
  28. package/dist/audit/file-discovery.test.js.map +0 -1
  29. package/dist/audit/fix-suggestions.test.d.ts +0 -1
  30. package/dist/audit/fix-suggestions.test.js +0 -35
  31. package/dist/audit/fix-suggestions.test.js.map +0 -1
  32. package/dist/audit/formatters/json-formatter.test.d.ts +0 -1
  33. package/dist/audit/formatters/json-formatter.test.js +0 -49
  34. package/dist/audit/formatters/json-formatter.test.js.map +0 -1
  35. package/dist/audit/formatters/report-formatter.test.d.ts +0 -1
  36. package/dist/audit/formatters/report-formatter.test.js +0 -51
  37. package/dist/audit/formatters/report-formatter.test.js.map +0 -1
  38. package/dist/audit/formatters/sarif-formatter.test.d.ts +0 -1
  39. package/dist/audit/formatters/sarif-formatter.test.js +0 -71
  40. package/dist/audit/formatters/sarif-formatter.test.js.map +0 -1
  41. package/dist/audit/formatters/terminal-formatter.test.d.ts +0 -1
  42. package/dist/audit/formatters/terminal-formatter.test.js +0 -51
  43. package/dist/audit/formatters/terminal-formatter.test.js.map +0 -1
  44. package/dist/blocklist/blocklist-e2e.test.d.ts +0 -1
  45. package/dist/blocklist/blocklist-e2e.test.js +0 -346
  46. package/dist/blocklist/blocklist-e2e.test.js.map +0 -1
  47. package/dist/blocklist/blocklist.test.d.ts +0 -1
  48. package/dist/blocklist/blocklist.test.js +0 -259
  49. package/dist/blocklist/blocklist.test.js.map +0 -1
  50. package/dist/commands/__tests__/eval-router.test.d.ts +0 -1
  51. package/dist/commands/__tests__/eval-router.test.js +0 -60
  52. package/dist/commands/__tests__/eval-router.test.js.map +0 -1
  53. package/dist/commands/__tests__/eval-serve.test.d.ts +0 -1
  54. package/dist/commands/__tests__/eval-serve.test.js +0 -23
  55. package/dist/commands/__tests__/eval-serve.test.js.map +0 -1
  56. package/dist/commands/add-blocklist-e2e.test.d.ts +0 -1
  57. package/dist/commands/add-blocklist-e2e.test.js +0 -397
  58. package/dist/commands/add-blocklist-e2e.test.js.map +0 -1
  59. package/dist/commands/add-wizard.test.d.ts +0 -1
  60. package/dist/commands/add-wizard.test.js +0 -392
  61. package/dist/commands/add-wizard.test.js.map +0 -1
  62. package/dist/commands/add.test.d.ts +0 -1
  63. package/dist/commands/add.test.js +0 -2365
  64. package/dist/commands/add.test.js.map +0 -1
  65. package/dist/commands/audit.test.d.ts +0 -1
  66. package/dist/commands/audit.test.js +0 -79
  67. package/dist/commands/audit.test.js.map +0 -1
  68. package/dist/commands/blocklist.test.d.ts +0 -1
  69. package/dist/commands/blocklist.test.js +0 -158
  70. package/dist/commands/blocklist.test.js.map +0 -1
  71. package/dist/commands/eval/__tests__/coverage.test.d.ts +0 -1
  72. package/dist/commands/eval/__tests__/coverage.test.js +0 -122
  73. package/dist/commands/eval/__tests__/coverage.test.js.map +0 -1
  74. package/dist/commands/eval/__tests__/generate-all.test.d.ts +0 -1
  75. package/dist/commands/eval/__tests__/generate-all.test.js +0 -133
  76. package/dist/commands/eval/__tests__/generate-all.test.js.map +0 -1
  77. package/dist/commands/eval/__tests__/init.test.d.ts +0 -1
  78. package/dist/commands/eval/__tests__/init.test.js +0 -116
  79. package/dist/commands/eval/__tests__/init.test.js.map +0 -1
  80. package/dist/commands/eval/__tests__/run.test.d.ts +0 -1
  81. package/dist/commands/eval/__tests__/run.test.js +0 -186
  82. package/dist/commands/eval/__tests__/run.test.js.map +0 -1
  83. package/dist/commands/find.test.d.ts +0 -1
  84. package/dist/commands/find.test.js +0 -481
  85. package/dist/commands/find.test.js.map +0 -1
  86. package/dist/commands/marketplace.test.d.ts +0 -1
  87. package/dist/commands/marketplace.test.js +0 -129
  88. package/dist/commands/marketplace.test.js.map +0 -1
  89. package/dist/commands/remove.test.d.ts +0 -1
  90. package/dist/commands/remove.test.js +0 -164
  91. package/dist/commands/remove.test.js.map +0 -1
  92. package/dist/commands/should-skip.test.d.ts +0 -1
  93. package/dist/commands/should-skip.test.js +0 -56
  94. package/dist/commands/should-skip.test.js.map +0 -1
  95. package/dist/commands/submit.test.d.ts +0 -1
  96. package/dist/commands/submit.test.js +0 -83
  97. package/dist/commands/submit.test.js.map +0 -1
  98. package/dist/commands/update.test.d.ts +0 -1
  99. package/dist/commands/update.test.js +0 -250
  100. package/dist/commands/update.test.js.map +0 -1
  101. package/dist/discovery/github-tree.test.d.ts +0 -1
  102. package/dist/discovery/github-tree.test.js +0 -372
  103. package/dist/discovery/github-tree.test.js.map +0 -1
  104. package/dist/eval/__tests__/activation-tester.test.d.ts +0 -1
  105. package/dist/eval/__tests__/activation-tester.test.js +0 -203
  106. package/dist/eval/__tests__/activation-tester.test.js.map +0 -1
  107. package/dist/eval/__tests__/benchmark-history.test.d.ts +0 -1
  108. package/dist/eval/__tests__/benchmark-history.test.js +0 -422
  109. package/dist/eval/__tests__/benchmark-history.test.js.map +0 -1
  110. package/dist/eval/__tests__/benchmark.test.d.ts +0 -1
  111. package/dist/eval/__tests__/benchmark.test.js +0 -94
  112. package/dist/eval/__tests__/benchmark.test.js.map +0 -1
  113. package/dist/eval/__tests__/comparator.test.d.ts +0 -1
  114. package/dist/eval/__tests__/comparator.test.js +0 -282
  115. package/dist/eval/__tests__/comparator.test.js.map +0 -1
  116. package/dist/eval/__tests__/judge.test.d.ts +0 -1
  117. package/dist/eval/__tests__/judge.test.js +0 -122
  118. package/dist/eval/__tests__/judge.test.js.map +0 -1
  119. package/dist/eval/__tests__/llm.test.d.ts +0 -1
  120. package/dist/eval/__tests__/llm.test.js +0 -543
  121. package/dist/eval/__tests__/llm.test.js.map +0 -1
  122. package/dist/eval/__tests__/mcp-detector.test.d.ts +0 -1
  123. package/dist/eval/__tests__/mcp-detector.test.js +0 -180
  124. package/dist/eval/__tests__/mcp-detector.test.js.map +0 -1
  125. package/dist/eval/__tests__/prompt-builder.test.d.ts +0 -1
  126. package/dist/eval/__tests__/prompt-builder.test.js +0 -142
  127. package/dist/eval/__tests__/prompt-builder.test.js.map +0 -1
  128. package/dist/eval/__tests__/schema.test.d.ts +0 -1
  129. package/dist/eval/__tests__/schema.test.js +0 -247
  130. package/dist/eval/__tests__/schema.test.js.map +0 -1
  131. package/dist/eval/__tests__/skill-scanner.test.d.ts +0 -1
  132. package/dist/eval/__tests__/skill-scanner.test.js +0 -228
  133. package/dist/eval/__tests__/skill-scanner.test.js.map +0 -1
  134. package/dist/eval/__tests__/verdict.test.d.ts +0 -1
  135. package/dist/eval/__tests__/verdict.test.js +0 -47
  136. package/dist/eval/__tests__/verdict.test.js.map +0 -1
  137. package/dist/eval-server/__tests__/benchmark-runner.test.d.ts +0 -1
  138. package/dist/eval-server/__tests__/benchmark-runner.test.js +0 -301
  139. package/dist/eval-server/__tests__/benchmark-runner.test.js.map +0 -1
  140. package/dist/eval-server/__tests__/comparison-sse-events.test.d.ts +0 -1
  141. package/dist/eval-server/__tests__/comparison-sse-events.test.js +0 -278
  142. package/dist/eval-server/__tests__/comparison-sse-events.test.js.map +0 -1
  143. package/dist/eval-server/__tests__/sse-helpers.test.d.ts +0 -1
  144. package/dist/eval-server/__tests__/sse-helpers.test.js +0 -128
  145. package/dist/eval-server/__tests__/sse-helpers.test.js.map +0 -1
  146. package/dist/installer/canonical.test.d.ts +0 -1
  147. package/dist/installer/canonical.test.js +0 -264
  148. package/dist/installer/canonical.test.js.map +0 -1
  149. package/dist/lockfile/lockfile.test.d.ts +0 -1
  150. package/dist/lockfile/lockfile.test.js +0 -204
  151. package/dist/lockfile/lockfile.test.js.map +0 -1
  152. package/dist/lockfile/project-root.test.d.ts +0 -1
  153. package/dist/lockfile/project-root.test.js +0 -49
  154. package/dist/lockfile/project-root.test.js.map +0 -1
  155. package/dist/marketplace/marketplace.test.d.ts +0 -1
  156. package/dist/marketplace/marketplace.test.js +0 -312
  157. package/dist/marketplace/marketplace.test.js.map +0 -1
  158. package/dist/resolvers/source-resolver.test.d.ts +0 -1
  159. package/dist/resolvers/source-resolver.test.js +0 -104
  160. package/dist/resolvers/source-resolver.test.js.map +0 -1
  161. package/dist/resolvers/url-resolver.test.d.ts +0 -1
  162. package/dist/resolvers/url-resolver.test.js +0 -49
  163. package/dist/resolvers/url-resolver.test.js.map +0 -1
  164. package/dist/scanner/dci-integration.test.d.ts +0 -1
  165. package/dist/scanner/dci-integration.test.js +0 -83
  166. package/dist/scanner/dci-integration.test.js.map +0 -1
  167. package/dist/scanner/patterns.test.d.ts +0 -1
  168. package/dist/scanner/patterns.test.js +0 -832
  169. package/dist/scanner/patterns.test.js.map +0 -1
  170. package/dist/scanner/tier1.test.d.ts +0 -1
  171. package/dist/scanner/tier1.test.js +0 -305
  172. package/dist/scanner/tier1.test.js.map +0 -1
  173. package/dist/security/platform-security.test.d.ts +0 -1
  174. package/dist/security/platform-security.test.js +0 -92
  175. package/dist/security/platform-security.test.js.map +0 -1
  176. package/dist/settings/settings.test.d.ts +0 -1
  177. package/dist/settings/settings.test.js +0 -103
  178. package/dist/settings/settings.test.js.map +0 -1
  179. package/dist/updater/source-fetcher.test.d.ts +0 -1
  180. package/dist/updater/source-fetcher.test.js +0 -192
  181. package/dist/updater/source-fetcher.test.js.map +0 -1
  182. package/dist/utils/__tests__/paths.test.d.ts +0 -1
  183. package/dist/utils/__tests__/paths.test.js +0 -22
  184. package/dist/utils/__tests__/paths.test.js.map +0 -1
  185. package/dist/utils/__tests__/resolve-binary.integration.test.d.ts +0 -1
  186. package/dist/utils/__tests__/resolve-binary.integration.test.js +0 -138
  187. package/dist/utils/__tests__/resolve-binary.integration.test.js.map +0 -1
  188. package/dist/utils/__tests__/resolve-binary.test.d.ts +0 -1
  189. package/dist/utils/__tests__/resolve-binary.test.js +0 -175
  190. package/dist/utils/__tests__/resolve-binary.test.js.map +0 -1
  191. package/dist/utils/__tests__/validation.test.d.ts +0 -1
  192. package/dist/utils/__tests__/validation.test.js +0 -107
  193. package/dist/utils/__tests__/validation.test.js.map +0 -1
  194. package/dist/utils/agent-filter.test.d.ts +0 -1
  195. package/dist/utils/agent-filter.test.js +0 -75
  196. package/dist/utils/agent-filter.test.js.map +0 -1
  197. package/dist/utils/output.test.d.ts +0 -1
  198. package/dist/utils/output.test.js +0 -28
  199. package/dist/utils/output.test.js.map +0 -1
  200. package/dist/utils/project-root.test.d.ts +0 -1
  201. package/dist/utils/project-root.test.js +0 -74
  202. package/dist/utils/project-root.test.js.map +0 -1
  203. package/dist/utils/prompts.test.d.ts +0 -1
  204. package/dist/utils/prompts.test.js +0 -285
  205. 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 {};