vskill 0.5.127 → 0.5.129

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 (232) hide show
  1. package/agents.json +1 -1
  2. package/dist/bin.js +0 -0
  3. package/dist/eval-server/api-routes.js +32 -0
  4. package/dist/eval-server/api-routes.js.map +1 -1
  5. package/dist/eval-server/eval-server.js +2 -0
  6. package/dist/eval-server/eval-server.js.map +1 -1
  7. package/dist/eval-server/git-routes.d.ts +5 -0
  8. package/dist/eval-server/git-routes.js +172 -0
  9. package/dist/eval-server/git-routes.js.map +1 -0
  10. package/dist/eval-server/router.d.ts +2 -0
  11. package/dist/eval-server/router.js +3 -1
  12. package/dist/eval-server/router.js.map +1 -1
  13. package/dist/eval-server/skill-name-resolver.d.ts +13 -0
  14. package/dist/eval-server/skill-name-resolver.js +42 -0
  15. package/dist/eval-server/skill-name-resolver.js.map +1 -1
  16. package/dist/eval-ui/assets/{CommandPalette-LtejhB76.js → CommandPalette-BIjKkHCC.js} +1 -1
  17. package/dist/eval-ui/assets/{CreateSkillPage-3RuqLQnm.js → CreateSkillPage-CmV0WZOn.js} +1 -1
  18. package/dist/eval-ui/assets/{FindSkillsPalette-Dbl2_IC4.js → FindSkillsPalette-BtYgEsVD.js} +2 -2
  19. package/dist/eval-ui/assets/{SearchPaletteCore-CLZmxDat.js → SearchPaletteCore-CAEO357X.js} +1 -1
  20. package/dist/eval-ui/assets/{SkillDetailPanel-RQc5u4nm.js → SkillDetailPanel-AH9wV3VU.js} +1 -1
  21. package/dist/eval-ui/assets/{UpdateDropdown-O8YGQyMH.js → UpdateDropdown-BwMxB2Ub.js} +1 -1
  22. package/dist/eval-ui/assets/index-ZByf-wxl.js +102 -0
  23. package/dist/eval-ui/assets/skill-url-C4ekwoGs.js +1 -0
  24. package/dist/eval-ui/index.html +1 -1
  25. package/dist/index.js +0 -0
  26. package/package.json +1 -1
  27. package/dist/agents/agents-registry.test.d.ts +0 -1
  28. package/dist/agents/agents-registry.test.js +0 -248
  29. package/dist/agents/agents-registry.test.js.map +0 -1
  30. package/dist/api/client.test.d.ts +0 -1
  31. package/dist/api/client.test.js +0 -428
  32. package/dist/api/client.test.js.map +0 -1
  33. package/dist/audit/audit-integration.test.d.ts +0 -1
  34. package/dist/audit/audit-integration.test.js +0 -92
  35. package/dist/audit/audit-integration.test.js.map +0 -1
  36. package/dist/audit/audit-llm.test.d.ts +0 -1
  37. package/dist/audit/audit-llm.test.js +0 -110
  38. package/dist/audit/audit-llm.test.js.map +0 -1
  39. package/dist/audit/audit-patterns.test.d.ts +0 -1
  40. package/dist/audit/audit-patterns.test.js +0 -91
  41. package/dist/audit/audit-patterns.test.js.map +0 -1
  42. package/dist/audit/audit-scanner.test.d.ts +0 -1
  43. package/dist/audit/audit-scanner.test.js +0 -112
  44. package/dist/audit/audit-scanner.test.js.map +0 -1
  45. package/dist/audit/audit-types.test.d.ts +0 -1
  46. package/dist/audit/audit-types.test.js +0 -140
  47. package/dist/audit/audit-types.test.js.map +0 -1
  48. package/dist/audit/config.test.d.ts +0 -1
  49. package/dist/audit/config.test.js +0 -44
  50. package/dist/audit/config.test.js.map +0 -1
  51. package/dist/audit/file-discovery.test.d.ts +0 -1
  52. package/dist/audit/file-discovery.test.js +0 -120
  53. package/dist/audit/file-discovery.test.js.map +0 -1
  54. package/dist/audit/fix-suggestions.test.d.ts +0 -1
  55. package/dist/audit/fix-suggestions.test.js +0 -35
  56. package/dist/audit/fix-suggestions.test.js.map +0 -1
  57. package/dist/audit/formatters/json-formatter.test.d.ts +0 -1
  58. package/dist/audit/formatters/json-formatter.test.js +0 -49
  59. package/dist/audit/formatters/json-formatter.test.js.map +0 -1
  60. package/dist/audit/formatters/report-formatter.test.d.ts +0 -1
  61. package/dist/audit/formatters/report-formatter.test.js +0 -51
  62. package/dist/audit/formatters/report-formatter.test.js.map +0 -1
  63. package/dist/audit/formatters/sarif-formatter.test.d.ts +0 -1
  64. package/dist/audit/formatters/sarif-formatter.test.js +0 -71
  65. package/dist/audit/formatters/sarif-formatter.test.js.map +0 -1
  66. package/dist/audit/formatters/terminal-formatter.test.d.ts +0 -1
  67. package/dist/audit/formatters/terminal-formatter.test.js +0 -51
  68. package/dist/audit/formatters/terminal-formatter.test.js.map +0 -1
  69. package/dist/blocklist/blocklist-e2e.test.d.ts +0 -1
  70. package/dist/blocklist/blocklist-e2e.test.js +0 -346
  71. package/dist/blocklist/blocklist-e2e.test.js.map +0 -1
  72. package/dist/blocklist/blocklist.test.d.ts +0 -1
  73. package/dist/blocklist/blocklist.test.js +0 -259
  74. package/dist/blocklist/blocklist.test.js.map +0 -1
  75. package/dist/commands/__tests__/eval-router.test.d.ts +0 -1
  76. package/dist/commands/__tests__/eval-router.test.js +0 -60
  77. package/dist/commands/__tests__/eval-router.test.js.map +0 -1
  78. package/dist/commands/__tests__/eval-serve.test.d.ts +0 -1
  79. package/dist/commands/__tests__/eval-serve.test.js +0 -23
  80. package/dist/commands/__tests__/eval-serve.test.js.map +0 -1
  81. package/dist/commands/add-blocklist-e2e.test.d.ts +0 -1
  82. package/dist/commands/add-blocklist-e2e.test.js +0 -397
  83. package/dist/commands/add-blocklist-e2e.test.js.map +0 -1
  84. package/dist/commands/add-wizard.test.d.ts +0 -1
  85. package/dist/commands/add-wizard.test.js +0 -392
  86. package/dist/commands/add-wizard.test.js.map +0 -1
  87. package/dist/commands/add.test.d.ts +0 -1
  88. package/dist/commands/add.test.js +0 -2365
  89. package/dist/commands/add.test.js.map +0 -1
  90. package/dist/commands/audit.test.d.ts +0 -1
  91. package/dist/commands/audit.test.js +0 -79
  92. package/dist/commands/audit.test.js.map +0 -1
  93. package/dist/commands/blocklist.test.d.ts +0 -1
  94. package/dist/commands/blocklist.test.js +0 -158
  95. package/dist/commands/blocklist.test.js.map +0 -1
  96. package/dist/commands/eval/__tests__/coverage.test.d.ts +0 -1
  97. package/dist/commands/eval/__tests__/coverage.test.js +0 -122
  98. package/dist/commands/eval/__tests__/coverage.test.js.map +0 -1
  99. package/dist/commands/eval/__tests__/generate-all.test.d.ts +0 -1
  100. package/dist/commands/eval/__tests__/generate-all.test.js +0 -133
  101. package/dist/commands/eval/__tests__/generate-all.test.js.map +0 -1
  102. package/dist/commands/eval/__tests__/init.test.d.ts +0 -1
  103. package/dist/commands/eval/__tests__/init.test.js +0 -116
  104. package/dist/commands/eval/__tests__/init.test.js.map +0 -1
  105. package/dist/commands/eval/__tests__/run.test.d.ts +0 -1
  106. package/dist/commands/eval/__tests__/run.test.js +0 -186
  107. package/dist/commands/eval/__tests__/run.test.js.map +0 -1
  108. package/dist/commands/find.test.d.ts +0 -1
  109. package/dist/commands/find.test.js +0 -481
  110. package/dist/commands/find.test.js.map +0 -1
  111. package/dist/commands/marketplace.test.d.ts +0 -1
  112. package/dist/commands/marketplace.test.js +0 -129
  113. package/dist/commands/marketplace.test.js.map +0 -1
  114. package/dist/commands/remove.test.d.ts +0 -1
  115. package/dist/commands/remove.test.js +0 -164
  116. package/dist/commands/remove.test.js.map +0 -1
  117. package/dist/commands/should-skip.test.d.ts +0 -1
  118. package/dist/commands/should-skip.test.js +0 -56
  119. package/dist/commands/should-skip.test.js.map +0 -1
  120. package/dist/commands/submit.test.d.ts +0 -1
  121. package/dist/commands/submit.test.js +0 -83
  122. package/dist/commands/submit.test.js.map +0 -1
  123. package/dist/commands/update.test.d.ts +0 -1
  124. package/dist/commands/update.test.js +0 -250
  125. package/dist/commands/update.test.js.map +0 -1
  126. package/dist/discovery/github-tree.test.d.ts +0 -1
  127. package/dist/discovery/github-tree.test.js +0 -372
  128. package/dist/discovery/github-tree.test.js.map +0 -1
  129. package/dist/eval/__tests__/activation-tester.test.d.ts +0 -1
  130. package/dist/eval/__tests__/activation-tester.test.js +0 -203
  131. package/dist/eval/__tests__/activation-tester.test.js.map +0 -1
  132. package/dist/eval/__tests__/benchmark-history.test.d.ts +0 -1
  133. package/dist/eval/__tests__/benchmark-history.test.js +0 -422
  134. package/dist/eval/__tests__/benchmark-history.test.js.map +0 -1
  135. package/dist/eval/__tests__/benchmark.test.d.ts +0 -1
  136. package/dist/eval/__tests__/benchmark.test.js +0 -94
  137. package/dist/eval/__tests__/benchmark.test.js.map +0 -1
  138. package/dist/eval/__tests__/comparator.test.d.ts +0 -1
  139. package/dist/eval/__tests__/comparator.test.js +0 -282
  140. package/dist/eval/__tests__/comparator.test.js.map +0 -1
  141. package/dist/eval/__tests__/judge.test.d.ts +0 -1
  142. package/dist/eval/__tests__/judge.test.js +0 -122
  143. package/dist/eval/__tests__/judge.test.js.map +0 -1
  144. package/dist/eval/__tests__/llm.test.d.ts +0 -1
  145. package/dist/eval/__tests__/llm.test.js +0 -543
  146. package/dist/eval/__tests__/llm.test.js.map +0 -1
  147. package/dist/eval/__tests__/mcp-detector.test.d.ts +0 -1
  148. package/dist/eval/__tests__/mcp-detector.test.js +0 -180
  149. package/dist/eval/__tests__/mcp-detector.test.js.map +0 -1
  150. package/dist/eval/__tests__/prompt-builder.test.d.ts +0 -1
  151. package/dist/eval/__tests__/prompt-builder.test.js +0 -142
  152. package/dist/eval/__tests__/prompt-builder.test.js.map +0 -1
  153. package/dist/eval/__tests__/schema.test.d.ts +0 -1
  154. package/dist/eval/__tests__/schema.test.js +0 -247
  155. package/dist/eval/__tests__/schema.test.js.map +0 -1
  156. package/dist/eval/__tests__/skill-scanner.test.d.ts +0 -1
  157. package/dist/eval/__tests__/skill-scanner.test.js +0 -228
  158. package/dist/eval/__tests__/skill-scanner.test.js.map +0 -1
  159. package/dist/eval/__tests__/verdict.test.d.ts +0 -1
  160. package/dist/eval/__tests__/verdict.test.js +0 -47
  161. package/dist/eval/__tests__/verdict.test.js.map +0 -1
  162. package/dist/eval-server/__tests__/benchmark-runner.test.d.ts +0 -1
  163. package/dist/eval-server/__tests__/benchmark-runner.test.js +0 -301
  164. package/dist/eval-server/__tests__/benchmark-runner.test.js.map +0 -1
  165. package/dist/eval-server/__tests__/comparison-sse-events.test.d.ts +0 -1
  166. package/dist/eval-server/__tests__/comparison-sse-events.test.js +0 -278
  167. package/dist/eval-server/__tests__/comparison-sse-events.test.js.map +0 -1
  168. package/dist/eval-server/__tests__/sse-helpers.test.d.ts +0 -1
  169. package/dist/eval-server/__tests__/sse-helpers.test.js +0 -128
  170. package/dist/eval-server/__tests__/sse-helpers.test.js.map +0 -1
  171. package/dist/eval-ui/assets/index-DlZduKAT.js +0 -102
  172. package/dist/eval-ui/assets/skill-url-BpZjDR8A.js +0 -1
  173. package/dist/installer/canonical.test.d.ts +0 -1
  174. package/dist/installer/canonical.test.js +0 -264
  175. package/dist/installer/canonical.test.js.map +0 -1
  176. package/dist/lockfile/lockfile.test.d.ts +0 -1
  177. package/dist/lockfile/lockfile.test.js +0 -204
  178. package/dist/lockfile/lockfile.test.js.map +0 -1
  179. package/dist/lockfile/project-root.test.d.ts +0 -1
  180. package/dist/lockfile/project-root.test.js +0 -49
  181. package/dist/lockfile/project-root.test.js.map +0 -1
  182. package/dist/marketplace/marketplace.test.d.ts +0 -1
  183. package/dist/marketplace/marketplace.test.js +0 -312
  184. package/dist/marketplace/marketplace.test.js.map +0 -1
  185. package/dist/resolvers/source-resolver.test.d.ts +0 -1
  186. package/dist/resolvers/source-resolver.test.js +0 -104
  187. package/dist/resolvers/source-resolver.test.js.map +0 -1
  188. package/dist/resolvers/url-resolver.test.d.ts +0 -1
  189. package/dist/resolvers/url-resolver.test.js +0 -49
  190. package/dist/resolvers/url-resolver.test.js.map +0 -1
  191. package/dist/scanner/dci-integration.test.d.ts +0 -1
  192. package/dist/scanner/dci-integration.test.js +0 -83
  193. package/dist/scanner/dci-integration.test.js.map +0 -1
  194. package/dist/scanner/patterns.test.d.ts +0 -1
  195. package/dist/scanner/patterns.test.js +0 -832
  196. package/dist/scanner/patterns.test.js.map +0 -1
  197. package/dist/scanner/tier1.test.d.ts +0 -1
  198. package/dist/scanner/tier1.test.js +0 -305
  199. package/dist/scanner/tier1.test.js.map +0 -1
  200. package/dist/security/platform-security.test.d.ts +0 -1
  201. package/dist/security/platform-security.test.js +0 -92
  202. package/dist/security/platform-security.test.js.map +0 -1
  203. package/dist/settings/settings.test.d.ts +0 -1
  204. package/dist/settings/settings.test.js +0 -103
  205. package/dist/settings/settings.test.js.map +0 -1
  206. package/dist/updater/source-fetcher.test.d.ts +0 -1
  207. package/dist/updater/source-fetcher.test.js +0 -192
  208. package/dist/updater/source-fetcher.test.js.map +0 -1
  209. package/dist/utils/__tests__/paths.test.d.ts +0 -1
  210. package/dist/utils/__tests__/paths.test.js +0 -22
  211. package/dist/utils/__tests__/paths.test.js.map +0 -1
  212. package/dist/utils/__tests__/resolve-binary.integration.test.d.ts +0 -1
  213. package/dist/utils/__tests__/resolve-binary.integration.test.js +0 -138
  214. package/dist/utils/__tests__/resolve-binary.integration.test.js.map +0 -1
  215. package/dist/utils/__tests__/resolve-binary.test.d.ts +0 -1
  216. package/dist/utils/__tests__/resolve-binary.test.js +0 -175
  217. package/dist/utils/__tests__/resolve-binary.test.js.map +0 -1
  218. package/dist/utils/__tests__/validation.test.d.ts +0 -1
  219. package/dist/utils/__tests__/validation.test.js +0 -107
  220. package/dist/utils/__tests__/validation.test.js.map +0 -1
  221. package/dist/utils/agent-filter.test.d.ts +0 -1
  222. package/dist/utils/agent-filter.test.js +0 -75
  223. package/dist/utils/agent-filter.test.js.map +0 -1
  224. package/dist/utils/output.test.d.ts +0 -1
  225. package/dist/utils/output.test.js +0 -28
  226. package/dist/utils/output.test.js.map +0 -1
  227. package/dist/utils/project-root.test.d.ts +0 -1
  228. package/dist/utils/project-root.test.js +0 -74
  229. package/dist/utils/project-root.test.js.map +0 -1
  230. package/dist/utils/prompts.test.d.ts +0 -1
  231. package/dist/utils/prompts.test.js +0 -285
  232. package/dist/utils/prompts.test.js.map +0 -1
@@ -1,133 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
2
- import { mkdirSync, writeFileSync, rmSync, existsSync } from "node:fs";
3
- import { join } from "node:path";
4
- import { tmpdir } from "node:os";
5
- // ---------------------------------------------------------------------------
6
- // Mocks
7
- // ---------------------------------------------------------------------------
8
- const mockGenerate = vi.hoisted(() => vi.fn());
9
- vi.mock("../../../eval/llm.js", () => ({
10
- createLlmClient: () => ({
11
- generate: mockGenerate,
12
- model: "test-model",
13
- }),
14
- }));
15
- // ---------------------------------------------------------------------------
16
- // Import module under test AFTER mocks
17
- // ---------------------------------------------------------------------------
18
- const { runEvalGenerateAll } = await import("../generate-all.js");
19
- // ---------------------------------------------------------------------------
20
- // Helpers
21
- // ---------------------------------------------------------------------------
22
- let testDir;
23
- function createSkill(plugin, skill, opts = {}) {
24
- const skillDir = join(testDir, plugin, "skills", skill);
25
- mkdirSync(skillDir, { recursive: true });
26
- writeFileSync(join(skillDir, "SKILL.md"), `# ${skill}\nDoes ${skill} things.`);
27
- if (opts.evals) {
28
- mkdirSync(join(skillDir, "evals"), { recursive: true });
29
- writeFileSync(join(skillDir, "evals", "evals.json"), JSON.stringify({
30
- skill_name: skill,
31
- evals: [
32
- {
33
- id: 1,
34
- name: "Existing",
35
- prompt: "test",
36
- expected_output: "output",
37
- assertions: [{ id: "a1", text: "check", type: "boolean" }],
38
- },
39
- ],
40
- }));
41
- }
42
- }
43
- const VALID_GENERATED = `\`\`\`json
44
- {
45
- "skill_name": "generated-skill",
46
- "evals": [
47
- {
48
- "id": 1,
49
- "name": "Generated test",
50
- "prompt": "Test prompt",
51
- "expected_output": "Expected output",
52
- "files": [],
53
- "assertions": [
54
- { "id": "a1", "text": "Check result", "type": "boolean" }
55
- ]
56
- }
57
- ]
58
- }
59
- \`\`\``;
60
- // ---------------------------------------------------------------------------
61
- // Tests
62
- // ---------------------------------------------------------------------------
63
- describe("runEvalGenerateAll", () => {
64
- beforeEach(() => {
65
- testDir = join(tmpdir(), `vskill-genall-${Date.now()}`);
66
- mkdirSync(testDir, { recursive: true });
67
- vi.resetAllMocks();
68
- mockGenerate.mockResolvedValue({ text: VALID_GENERATED });
69
- });
70
- afterEach(() => {
71
- rmSync(testDir, { recursive: true, force: true });
72
- vi.restoreAllMocks();
73
- });
74
- it("generates for skills lacking evals", async () => {
75
- createSkill("marketing", "skill-a");
76
- createSkill("marketing", "skill-b");
77
- createSkill("marketing", "skill-c", { evals: true });
78
- const consoleSpy = vi.spyOn(console, "log").mockImplementation(() => { });
79
- await runEvalGenerateAll(testDir, false);
80
- // skill-a and skill-b should get evals.json
81
- expect(existsSync(join(testDir, "marketing/skills/skill-a/evals/evals.json"))).toBe(true);
82
- expect(existsSync(join(testDir, "marketing/skills/skill-b/evals/evals.json"))).toBe(true);
83
- const output = consoleSpy.mock.calls.map((c) => c[0]).join("\n");
84
- expect(output).toContain("Generated: 2");
85
- expect(output).toContain("Skipped: 1");
86
- });
87
- it("skips skills with existing evals", async () => {
88
- createSkill("marketing", "existing-skill", { evals: true });
89
- const consoleSpy = vi.spyOn(console, "log").mockImplementation(() => { });
90
- await runEvalGenerateAll(testDir, false);
91
- const output = consoleSpy.mock.calls.map((c) => c[0]).join("\n");
92
- expect(output).toContain("Skipped: 1");
93
- expect(output).toContain("Generated: 0");
94
- });
95
- it("continues after LLM failure and reports it", async () => {
96
- createSkill("marketing", "fail-skill");
97
- createSkill("marketing", "ok-skill");
98
- let callCount = 0;
99
- mockGenerate.mockImplementation(async () => {
100
- callCount++;
101
- if (callCount <= 1)
102
- throw new Error("API error");
103
- return { text: VALID_GENERATED };
104
- });
105
- const consoleSpy = vi.spyOn(console, "log").mockImplementation(() => { });
106
- vi.spyOn(console, "error").mockImplementation(() => { });
107
- await runEvalGenerateAll(testDir, false);
108
- const output = consoleSpy.mock.calls.map((c) => c[0]).join("\n");
109
- expect(output).toContain("Failed: 1");
110
- });
111
- it("regenerates with --force flag", async () => {
112
- createSkill("marketing", "existing-skill", { evals: true });
113
- const consoleSpy = vi.spyOn(console, "log").mockImplementation(() => { });
114
- await runEvalGenerateAll(testDir, true);
115
- const output = consoleSpy.mock.calls.map((c) => c[0]).join("\n");
116
- expect(output).toContain("Skipped: 0");
117
- expect(output).toContain("Generated: 1");
118
- });
119
- it("respects custom root for specweave-style layout", async () => {
120
- // Create a different root path
121
- const customRoot = join(testDir, "specweave-plugins");
122
- mkdirSync(customRoot, { recursive: true });
123
- const skillDir = join(customRoot, "core/skills/test-skill");
124
- mkdirSync(skillDir, { recursive: true });
125
- writeFileSync(join(skillDir, "SKILL.md"), "# Test\nDoes things.");
126
- const consoleSpy = vi.spyOn(console, "log").mockImplementation(() => { });
127
- await runEvalGenerateAll(customRoot, false);
128
- const output = consoleSpy.mock.calls.map((c) => c[0]).join("\n");
129
- expect(output).toContain("Scanned: 1");
130
- expect(output).toContain("Generated: 1");
131
- });
132
- });
133
- //# sourceMappingURL=generate-all.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generate-all.test.js","sourceRoot":"","sources":["../../../../src/commands/eval/__tests__/generate-all.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,116 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach } from "vitest";
2
- // ---------------------------------------------------------------------------
3
- // Mocks
4
- // ---------------------------------------------------------------------------
5
- const mocks = vi.hoisted(() => ({
6
- readFileSync: vi.fn(),
7
- writeFileSync: vi.fn(),
8
- existsSync: vi.fn(),
9
- mkdirSync: vi.fn(),
10
- generate: vi.fn(),
11
- }));
12
- vi.mock("node:fs", () => ({
13
- readFileSync: mocks.readFileSync,
14
- writeFileSync: mocks.writeFileSync,
15
- existsSync: mocks.existsSync,
16
- mkdirSync: mocks.mkdirSync,
17
- }));
18
- vi.mock("../../../eval/llm.js", () => ({
19
- createLlmClient: () => ({
20
- generate: mocks.generate,
21
- model: "test-model",
22
- }),
23
- }));
24
- // ---------------------------------------------------------------------------
25
- // Import module under test AFTER mocks
26
- // ---------------------------------------------------------------------------
27
- const { runEvalInit } = await import("../init.js");
28
- // ---------------------------------------------------------------------------
29
- // Helpers
30
- // ---------------------------------------------------------------------------
31
- const VALID_GENERATED = `Here is the evals.json:
32
-
33
- \`\`\`json
34
- {
35
- "skill_name": "test-skill",
36
- "evals": [
37
- {
38
- "id": 1,
39
- "name": "Basic test",
40
- "prompt": "Test prompt",
41
- "expected_output": "Expected output",
42
- "files": [],
43
- "assertions": [
44
- { "id": "a1", "text": "Check result", "type": "boolean" }
45
- ]
46
- }
47
- ]
48
- }
49
- \`\`\``;
50
- // ---------------------------------------------------------------------------
51
- // Tests
52
- // ---------------------------------------------------------------------------
53
- describe("runEvalInit", () => {
54
- beforeEach(() => {
55
- vi.resetAllMocks();
56
- // Default: SKILL.md exists, evals.json does not
57
- mocks.existsSync.mockImplementation((p) => {
58
- if (p.includes("SKILL.md"))
59
- return true;
60
- if (p.includes("evals.json"))
61
- return false;
62
- return false;
63
- });
64
- mocks.readFileSync.mockReturnValue("# My Skill\nDoes things.");
65
- mocks.generate.mockResolvedValue({ text: VALID_GENERATED });
66
- });
67
- it("creates evals.json when absent", async () => {
68
- await runEvalInit("/root/plugins/marketing/skills/social-media-posting", false);
69
- expect(mocks.mkdirSync).toHaveBeenCalled();
70
- expect(mocks.writeFileSync).toHaveBeenCalledOnce();
71
- const writtenContent = JSON.parse(mocks.writeFileSync.mock.calls[0][1]);
72
- expect(writtenContent.skill_name).toBe("test-skill");
73
- expect(writtenContent.evals).toHaveLength(1);
74
- });
75
- it("exits with message when evals.json exists and no --force", async () => {
76
- mocks.existsSync.mockImplementation((p) => {
77
- if (p.includes("SKILL.md"))
78
- return true;
79
- if (p.includes("evals.json"))
80
- return true;
81
- return false;
82
- });
83
- const consoleSpy = vi.spyOn(console, "log").mockImplementation(() => { });
84
- await runEvalInit("/root/plugins/marketing/skills/smp", false);
85
- expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining("already exists"));
86
- expect(mocks.writeFileSync).not.toHaveBeenCalled();
87
- consoleSpy.mockRestore();
88
- });
89
- it("overwrites when --force flag is passed", async () => {
90
- mocks.existsSync.mockImplementation((p) => {
91
- if (p.includes("SKILL.md"))
92
- return true;
93
- if (p.includes("evals.json"))
94
- return true;
95
- return false;
96
- });
97
- await runEvalInit("/root/plugins/marketing/skills/smp", true);
98
- expect(mocks.writeFileSync).toHaveBeenCalledOnce();
99
- });
100
- it("handles LLM failure gracefully", async () => {
101
- mocks.generate.mockRejectedValue(new Error("API rate limited"));
102
- const consoleSpy = vi.spyOn(console, "error").mockImplementation(() => { });
103
- await runEvalInit("/root/plugins/marketing/skills/smp", false);
104
- expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining("API rate limited"));
105
- expect(mocks.writeFileSync).not.toHaveBeenCalled();
106
- consoleSpy.mockRestore();
107
- });
108
- it("throws when SKILL.md does not exist", async () => {
109
- mocks.existsSync.mockReturnValue(false);
110
- const consoleSpy = vi.spyOn(console, "error").mockImplementation(() => { });
111
- await runEvalInit("/root/plugins/marketing/skills/smp", false);
112
- expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining("SKILL.md"));
113
- consoleSpy.mockRestore();
114
- });
115
- });
116
- //# sourceMappingURL=init.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init.test.js","sourceRoot":"","sources":["../../../../src/commands/eval/__tests__/init.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAE9D,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9B,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE;IACrB,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE;IACtB,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;IACnB,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE;IAClB,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE;CAClB,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IACxB,YAAY,EAAE,KAAK,CAAC,YAAY;IAChC,aAAa,EAAE,KAAK,CAAC,aAAa;IAClC,UAAU,EAAE,KAAK,CAAC,UAAU;IAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;CAC3B,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAAC,CAAC;IACrC,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC;QACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,KAAK,EAAE,YAAY;KACpB,CAAC;CACH,CAAC,CAAC,CAAC;AAEJ,8EAA8E;AAC9E,uCAAuC;AACvC,8EAA8E;AAE9E,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;AAEnD,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;OAkBjB,CAAC;AAER,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,gDAAgD;QAChD,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAS,EAAE,EAAE;YAChD,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAAE,OAAO,IAAI,CAAC;YACxC,IAAI,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC3C,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,YAAY,CAAC,eAAe,CAAC,0BAA0B,CAAC,CAAC;QAC/D,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,WAAW,CAAC,qDAAqD,EAAE,KAAK,CAAC,CAAC;QAEhF,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAC3C,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,oBAAoB,EAAE,CAAC;QACnD,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACrD,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAS,EAAE,EAAE;YAChD,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAAE,OAAO,IAAI,CAAC;YACxC,IAAI,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC1C,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAEzE,MAAM,WAAW,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;QAE/D,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CACrC,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAC1C,CAAC;QACF,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACnD,UAAU,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAS,EAAE,EAAE;YAChD,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAAE,OAAO,IAAI,CAAC;YACxC,IAAI,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC1C,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,MAAM,WAAW,CAAC,oCAAoC,EAAE,IAAI,CAAC,CAAC;QAE9D,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,oBAAoB,EAAE,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC9C,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAChE,MAAM,UAAU,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAE3E,MAAM,WAAW,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;QAE/D,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CACrC,MAAM,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAC5C,CAAC;QACF,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACnD,UAAU,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,UAAU,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAE3E,MAAM,WAAW,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;QAE/D,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CACrC,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CACpC,CAAC;QACF,UAAU,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,186 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach } from "vitest";
2
- // ---------------------------------------------------------------------------
3
- // Mocks
4
- // ---------------------------------------------------------------------------
5
- const mocks = vi.hoisted(() => ({
6
- readFileSync: vi.fn(),
7
- writeFileSync: vi.fn(),
8
- existsSync: vi.fn(),
9
- mkdirSync: vi.fn(),
10
- unlinkSync: vi.fn(),
11
- generate: vi.fn(),
12
- }));
13
- vi.mock("node:fs", () => ({
14
- readFileSync: mocks.readFileSync,
15
- writeFileSync: mocks.writeFileSync,
16
- existsSync: mocks.existsSync,
17
- mkdirSync: mocks.mkdirSync,
18
- unlinkSync: mocks.unlinkSync,
19
- }));
20
- vi.mock("../../../eval/llm.js", () => ({
21
- createLlmClient: () => ({
22
- generate: mocks.generate,
23
- model: "test-model",
24
- }),
25
- estimateDurationSec: () => ({ minSec: 30, maxSec: 60, label: "30s\u201360s" }),
26
- }));
27
- vi.mock("../../../eval-server/error-classifier.js", () => ({
28
- classifyError: (err) => ({
29
- category: "unknown",
30
- title: "Operation Failed",
31
- description: err instanceof Error ? err.message : String(err),
32
- hint: "Try again.",
33
- retryable: true,
34
- }),
35
- }));
36
- vi.mock("../../../eval/progress-log.js", () => ({
37
- ProgressLog: class {
38
- update() { }
39
- complete() { }
40
- error() { }
41
- },
42
- }));
43
- // ---------------------------------------------------------------------------
44
- // Import module under test AFTER mocks
45
- // ---------------------------------------------------------------------------
46
- const { runEvalRun } = await import("../run.js");
47
- // ---------------------------------------------------------------------------
48
- // Fixtures
49
- // ---------------------------------------------------------------------------
50
- const VALID_EVALS = {
51
- skill_name: "test-skill",
52
- evals: [
53
- {
54
- id: 1,
55
- name: "Basic test",
56
- prompt: "Test prompt 1",
57
- expected_output: "Expected output 1",
58
- files: [],
59
- assertions: [
60
- { id: "a1", text: "Output mentions AI", type: "boolean" },
61
- { id: "a2", text: "Output is concise", type: "boolean" },
62
- ],
63
- },
64
- {
65
- id: 2,
66
- name: "Edge case test",
67
- prompt: "Test prompt 2",
68
- expected_output: "Expected output 2",
69
- files: [],
70
- assertions: [
71
- { id: "b1", text: "Output handles edge case", type: "boolean" },
72
- ],
73
- },
74
- ],
75
- };
76
- // ---------------------------------------------------------------------------
77
- // Tests
78
- // ---------------------------------------------------------------------------
79
- describe("runEvalRun", () => {
80
- beforeEach(() => {
81
- vi.resetAllMocks();
82
- // Default: evals.json and SKILL.md both exist
83
- mocks.existsSync.mockReturnValue(true);
84
- mocks.readFileSync.mockImplementation((path) => {
85
- if (typeof path === "string" && path.endsWith("SKILL.md")) {
86
- return "# Test Skill\nYou are a test skill.";
87
- }
88
- return JSON.stringify(VALID_EVALS);
89
- });
90
- });
91
- it("prints results table on success", async () => {
92
- // Mock LLM: first call returns output, subsequent calls judge assertions
93
- let callCount = 0;
94
- mocks.generate.mockImplementation(async () => {
95
- callCount++;
96
- // First call per case = generate output, remaining = judge assertions
97
- if (callCount === 1)
98
- return { text: "AI is great" };
99
- if (callCount <= 3)
100
- return { text: JSON.stringify({ pass: true, reasoning: "ok" }) };
101
- if (callCount === 4)
102
- return { text: "Edge case handled" };
103
- return { text: JSON.stringify({ pass: false, reasoning: "not quite" }) };
104
- });
105
- const consoleSpy = vi.spyOn(console, "log").mockImplementation(() => { });
106
- await runEvalRun("/skills/test-skill");
107
- // Check table was printed
108
- const output = consoleSpy.mock.calls.map((c) => c[0]).join("\n");
109
- expect(output).toContain("a1");
110
- expect(output).toContain("b1");
111
- consoleSpy.mockRestore();
112
- });
113
- it("prints duration estimate before running", async () => {
114
- mocks.generate.mockImplementation(async () => {
115
- return { text: JSON.stringify({ pass: true, reasoning: "ok" }) };
116
- });
117
- const consoleSpy = vi.spyOn(console, "log").mockImplementation(() => { });
118
- await runEvalRun("/skills/test-skill");
119
- const output = consoleSpy.mock.calls.map((c) => c[0]).join("\n");
120
- expect(output).toContain("Estimated duration");
121
- expect(output).toContain("Progress file");
122
- consoleSpy.mockRestore();
123
- });
124
- it("writes benchmark.json after run", async () => {
125
- mocks.generate.mockImplementation(async (_sys, prompt) => {
126
- if (prompt.includes("Test prompt"))
127
- return { text: "LLM output here" };
128
- return { text: JSON.stringify({ pass: true, reasoning: "ok" }) };
129
- });
130
- vi.spyOn(console, "log").mockImplementation(() => { });
131
- await runEvalRun("/skills/test-skill");
132
- // Find the benchmark.json write (skip progress log writes)
133
- const benchmarkWrite = mocks.writeFileSync.mock.calls.find((c) => typeof c[0] === "string" && c[0].includes("benchmark.json"));
134
- expect(benchmarkWrite).toBeDefined();
135
- const writtenContent = JSON.parse(benchmarkWrite[1]);
136
- expect(writtenContent.skill_name).toBe("test-skill");
137
- expect(writtenContent.cases).toHaveLength(2);
138
- vi.restoreAllMocks();
139
- });
140
- it("marks error case on LLM failure and continues", async () => {
141
- let callCount = 0;
142
- mocks.generate.mockImplementation(async () => {
143
- callCount++;
144
- // First case: output generation fails
145
- if (callCount === 1)
146
- throw new Error("API timeout");
147
- // Second case: works fine
148
- if (callCount === 2)
149
- return { text: "Edge case handled" };
150
- return { text: JSON.stringify({ pass: true, reasoning: "ok" }) };
151
- });
152
- vi.spyOn(console, "log").mockImplementation(() => { });
153
- await runEvalRun("/skills/test-skill");
154
- const benchmarkWrite = mocks.writeFileSync.mock.calls.find((c) => typeof c[0] === "string" && c[0].includes("benchmark.json"));
155
- expect(benchmarkWrite).toBeDefined();
156
- const writtenContent = JSON.parse(benchmarkWrite[1]);
157
- expect(writtenContent.cases[0].status).toBe("error");
158
- expect(writtenContent.cases[0].error_message).toContain("API timeout");
159
- expect(writtenContent.cases[1].status).toBe("pass");
160
- vi.restoreAllMocks();
161
- });
162
- it("exits with error for missing evals.json", async () => {
163
- mocks.existsSync.mockReturnValue(false);
164
- const consoleSpy = vi.spyOn(console, "error").mockImplementation(() => { });
165
- const exitSpy = vi
166
- .spyOn(process, "exit")
167
- .mockImplementation((() => { }));
168
- await runEvalRun("/skills/test-skill");
169
- expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining("No evals.json found"));
170
- consoleSpy.mockRestore();
171
- exitSpy.mockRestore();
172
- });
173
- it("exits with error for invalid evals.json", async () => {
174
- mocks.existsSync.mockReturnValue(true);
175
- mocks.readFileSync.mockReturnValue("{ broken json");
176
- const consoleSpy = vi.spyOn(console, "error").mockImplementation(() => { });
177
- const exitSpy = vi
178
- .spyOn(process, "exit")
179
- .mockImplementation((() => { }));
180
- await runEvalRun("/skills/test-skill");
181
- expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining("Invalid evals.json"));
182
- consoleSpy.mockRestore();
183
- exitSpy.mockRestore();
184
- });
185
- });
186
- //# sourceMappingURL=run.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run.test.js","sourceRoot":"","sources":["../../../../src/commands/eval/__tests__/run.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};