uasp-skills 0.1.3 → 0.1.5

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 (38) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +193 -0
  3. package/bin/uasp-skills.js +0 -0
  4. package/dist/benchmark/converters.d.ts +34 -0
  5. package/dist/benchmark/converters.d.ts.map +1 -0
  6. package/dist/benchmark/converters.js +139 -0
  7. package/dist/benchmark/converters.js.map +1 -0
  8. package/dist/benchmark/index.d.ts +27 -0
  9. package/dist/benchmark/index.d.ts.map +1 -0
  10. package/dist/benchmark/index.js +201 -0
  11. package/dist/benchmark/index.js.map +1 -0
  12. package/dist/benchmark/metrics.d.ts +92 -0
  13. package/dist/benchmark/metrics.d.ts.map +1 -0
  14. package/dist/benchmark/metrics.js +146 -0
  15. package/dist/benchmark/metrics.js.map +1 -0
  16. package/dist/benchmark/parsers.d.ts +42 -0
  17. package/dist/benchmark/parsers.d.ts.map +1 -0
  18. package/dist/benchmark/parsers.js +81 -0
  19. package/dist/benchmark/parsers.js.map +1 -0
  20. package/dist/benchmark/report.d.ts +46 -0
  21. package/dist/benchmark/report.d.ts.map +1 -0
  22. package/dist/benchmark/report.js +140 -0
  23. package/dist/benchmark/report.js.map +1 -0
  24. package/dist/benchmark/search.d.ts +63 -0
  25. package/dist/benchmark/search.d.ts.map +1 -0
  26. package/dist/benchmark/search.js +97 -0
  27. package/dist/benchmark/search.js.map +1 -0
  28. package/dist/benchmark/validators.d.ts +32 -0
  29. package/dist/benchmark/validators.d.ts.map +1 -0
  30. package/dist/benchmark/validators.js +60 -0
  31. package/dist/benchmark/validators.js.map +1 -0
  32. package/dist/cli/commands/benchmark.d.ts +6 -0
  33. package/dist/cli/commands/benchmark.d.ts.map +1 -0
  34. package/dist/cli/commands/benchmark.js +32 -0
  35. package/dist/cli/commands/benchmark.js.map +1 -0
  36. package/dist/cli/index.js +3 -1
  37. package/dist/cli/index.js.map +1 -1
  38. package/package.json +11 -2
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Benchmark metrics collection and timing utilities
3
+ */
4
+ export interface TimingResult {
5
+ /** Mean execution time in milliseconds */
6
+ mean: number;
7
+ /** Median execution time in milliseconds */
8
+ median: number;
9
+ /** Minimum execution time in milliseconds */
10
+ min: number;
11
+ /** Maximum execution time in milliseconds */
12
+ max: number;
13
+ /** Standard deviation in milliseconds */
14
+ stdDev: number;
15
+ /** All individual timings */
16
+ samples: number[];
17
+ }
18
+ export interface MemoryResult {
19
+ /** Memory used before operation (bytes) */
20
+ before: number;
21
+ /** Memory used after operation (bytes) */
22
+ after: number;
23
+ /** Memory difference (bytes) */
24
+ delta: number;
25
+ /** Heap used after operation (bytes) */
26
+ heapUsed: number;
27
+ }
28
+ export interface BenchmarkResult {
29
+ /** Name of the benchmark */
30
+ name: string;
31
+ /** Timing results */
32
+ timing: TimingResult;
33
+ /** Memory results (if measured) */
34
+ memory?: MemoryResult;
35
+ /** Number of iterations */
36
+ iterations: number;
37
+ /** Warmup runs */
38
+ warmup: number;
39
+ /** Additional metadata */
40
+ metadata?: Record<string, unknown>;
41
+ }
42
+ /**
43
+ * Run garbage collection if available
44
+ */
45
+ export declare function runGC(): void;
46
+ /**
47
+ * Get current memory usage
48
+ */
49
+ export declare function getMemoryUsage(): number;
50
+ /**
51
+ * Calculate statistics from timing samples
52
+ */
53
+ export declare function calculateStats(samples: number[]): TimingResult;
54
+ /**
55
+ * High-resolution timer
56
+ */
57
+ export declare function hrtime(): bigint;
58
+ /**
59
+ * Convert nanoseconds to milliseconds
60
+ */
61
+ export declare function nsToMs(ns: bigint): number;
62
+ /**
63
+ * Format bytes to human readable string
64
+ */
65
+ export declare function formatBytes(bytes: number): string;
66
+ /**
67
+ * Format milliseconds to human readable string
68
+ */
69
+ export declare function formatMs(ms: number): string;
70
+ export interface BenchmarkOptions {
71
+ /** Number of iterations to run */
72
+ iterations?: number;
73
+ /** Number of warmup runs */
74
+ warmup?: number;
75
+ /** Run GC between iterations */
76
+ gcBetweenRuns?: boolean;
77
+ /** Measure memory usage */
78
+ measureMemory?: boolean;
79
+ }
80
+ /**
81
+ * Run a benchmark function multiple times and collect metrics
82
+ */
83
+ export declare function benchmark<T>(name: string, fn: () => T | Promise<T>, options?: BenchmarkOptions): Promise<BenchmarkResult>;
84
+ /**
85
+ * Compare two benchmark results
86
+ */
87
+ export declare function compareBenchmarks(a: BenchmarkResult, b: BenchmarkResult): {
88
+ winner: string;
89
+ ratio: number;
90
+ difference: number;
91
+ };
92
+ //# sourceMappingURL=metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/benchmark/metrics.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,YAAY;IAC3B,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,6BAA6B;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,mCAAmC;IACnC,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,wBAAgB,KAAK,IAAI,IAAI,CAI5B;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,CA0B9D;AAED;;GAEG;AACH,wBAAgB,MAAM,IAAI,MAAM,CAE/B;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEzC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQjD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAQ3C;AAED,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,2BAA2B;IAC3B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAC/B,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EACxB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC,CAqD1B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,CAAC,EAAE,eAAe,EAClB,CAAC,EAAE,eAAe,GACjB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAiBvD"}
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Benchmark metrics collection and timing utilities
3
+ */
4
+ /**
5
+ * Run garbage collection if available
6
+ */
7
+ export function runGC() {
8
+ if (global.gc) {
9
+ global.gc();
10
+ }
11
+ }
12
+ /**
13
+ * Get current memory usage
14
+ */
15
+ export function getMemoryUsage() {
16
+ return process.memoryUsage().heapUsed;
17
+ }
18
+ /**
19
+ * Calculate statistics from timing samples
20
+ */
21
+ export function calculateStats(samples) {
22
+ if (samples.length === 0) {
23
+ return { mean: 0, median: 0, min: 0, max: 0, stdDev: 0, samples: [] };
24
+ }
25
+ const sorted = [...samples].sort((a, b) => a - b);
26
+ const sum = samples.reduce((a, b) => a + b, 0);
27
+ const mean = sum / samples.length;
28
+ const mid = Math.floor(sorted.length / 2);
29
+ const median = sorted.length % 2 !== 0
30
+ ? sorted[mid]
31
+ : (sorted[mid - 1] + sorted[mid]) / 2;
32
+ const squaredDiffs = samples.map(x => Math.pow(x - mean, 2));
33
+ const avgSquaredDiff = squaredDiffs.reduce((a, b) => a + b, 0) / samples.length;
34
+ const stdDev = Math.sqrt(avgSquaredDiff);
35
+ return {
36
+ mean,
37
+ median,
38
+ min: sorted[0],
39
+ max: sorted[sorted.length - 1],
40
+ stdDev,
41
+ samples,
42
+ };
43
+ }
44
+ /**
45
+ * High-resolution timer
46
+ */
47
+ export function hrtime() {
48
+ return process.hrtime.bigint();
49
+ }
50
+ /**
51
+ * Convert nanoseconds to milliseconds
52
+ */
53
+ export function nsToMs(ns) {
54
+ return Number(ns) / 1_000_000;
55
+ }
56
+ /**
57
+ * Format bytes to human readable string
58
+ */
59
+ export function formatBytes(bytes) {
60
+ if (bytes === 0)
61
+ return '0 B';
62
+ const k = 1024;
63
+ const sizes = ['B', 'KB', 'MB', 'GB'];
64
+ const i = Math.floor(Math.log(Math.abs(bytes)) / Math.log(k));
65
+ return `${(bytes / Math.pow(k, i)).toFixed(2)} ${sizes[i]}`;
66
+ }
67
+ /**
68
+ * Format milliseconds to human readable string
69
+ */
70
+ export function formatMs(ms) {
71
+ if (ms < 1) {
72
+ return `${(ms * 1000).toFixed(2)} μs`;
73
+ }
74
+ if (ms < 1000) {
75
+ return `${ms.toFixed(2)} ms`;
76
+ }
77
+ return `${(ms / 1000).toFixed(2)} s`;
78
+ }
79
+ /**
80
+ * Run a benchmark function multiple times and collect metrics
81
+ */
82
+ export async function benchmark(name, fn, options = {}) {
83
+ const { iterations = 100, warmup = 5, gcBetweenRuns = true, measureMemory = true, } = options;
84
+ // Warmup runs
85
+ for (let i = 0; i < warmup; i++) {
86
+ await fn();
87
+ if (gcBetweenRuns)
88
+ runGC();
89
+ }
90
+ // Measure memory before
91
+ let memoryBefore = 0;
92
+ if (measureMemory) {
93
+ runGC();
94
+ memoryBefore = getMemoryUsage();
95
+ }
96
+ // Timed runs
97
+ const timings = [];
98
+ for (let i = 0; i < iterations; i++) {
99
+ if (gcBetweenRuns)
100
+ runGC();
101
+ const start = hrtime();
102
+ await fn();
103
+ const end = hrtime();
104
+ timings.push(nsToMs(end - start));
105
+ }
106
+ // Measure memory after
107
+ let memoryResult;
108
+ if (measureMemory) {
109
+ const memoryAfter = getMemoryUsage();
110
+ memoryResult = {
111
+ before: memoryBefore,
112
+ after: memoryAfter,
113
+ delta: memoryAfter - memoryBefore,
114
+ heapUsed: process.memoryUsage().heapUsed,
115
+ };
116
+ }
117
+ return {
118
+ name,
119
+ timing: calculateStats(timings),
120
+ memory: memoryResult,
121
+ iterations,
122
+ warmup,
123
+ };
124
+ }
125
+ /**
126
+ * Compare two benchmark results
127
+ */
128
+ export function compareBenchmarks(a, b) {
129
+ const aTime = a.timing.mean;
130
+ const bTime = b.timing.mean;
131
+ if (aTime < bTime) {
132
+ return {
133
+ winner: a.name,
134
+ ratio: bTime / aTime,
135
+ difference: bTime - aTime,
136
+ };
137
+ }
138
+ else {
139
+ return {
140
+ winner: b.name,
141
+ ratio: aTime / bTime,
142
+ difference: aTime - bTime,
143
+ };
144
+ }
145
+ }
146
+ //# sourceMappingURL=metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/benchmark/metrics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Parsing benchmarks - YAML vs Frontmatter
3
+ */
4
+ import { type BenchmarkResult, type BenchmarkOptions } from './metrics.js';
5
+ /**
6
+ * Parse UASP YAML content
7
+ */
8
+ export declare function parseUaspYaml(content: string): unknown;
9
+ /**
10
+ * Parse SKILL.md frontmatter (simple implementation without gray-matter for comparison)
11
+ */
12
+ export declare function parseSkillMdFrontmatter(content: string): {
13
+ data: unknown;
14
+ content: string;
15
+ };
16
+ /**
17
+ * Parse SKILL.md frontmatter using gray-matter (if available)
18
+ */
19
+ export declare function parseSkillMdWithGrayMatter(content: string): Promise<{
20
+ data: unknown;
21
+ content: string;
22
+ }>;
23
+ /**
24
+ * Benchmark UASP YAML parsing
25
+ */
26
+ export declare function benchmarkUaspParsing(content: string, options?: BenchmarkOptions): Promise<BenchmarkResult>;
27
+ /**
28
+ * Benchmark SKILL.md frontmatter parsing
29
+ */
30
+ export declare function benchmarkSkillMdParsing(content: string, options?: BenchmarkOptions): Promise<BenchmarkResult>;
31
+ /**
32
+ * Benchmark SKILL.md parsing with gray-matter
33
+ */
34
+ export declare function benchmarkSkillMdGrayMatter(content: string, options?: BenchmarkOptions): Promise<BenchmarkResult>;
35
+ /**
36
+ * Run all parsing benchmarks
37
+ */
38
+ export declare function runParsingBenchmarks(uaspContent: string, skillMdContent: string, options?: BenchmarkOptions): Promise<{
39
+ uasp: BenchmarkResult;
40
+ skillMd: BenchmarkResult;
41
+ }>;
42
+ //# sourceMappingURL=parsers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parsers.d.ts","sourceRoot":"","sources":["../../src/benchmark/parsers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAa,KAAK,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEtF;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAY3F;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAS7G;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,eAAe,CAAC,CAE1B;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,eAAe,CAAC,CAE1B;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,eAAe,CAAC,CAmB1B;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,eAAe,CAAA;CAAE,CAAC,CAK9D"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Parsing benchmarks - YAML vs Frontmatter
3
+ */
4
+ import yaml from 'yaml';
5
+ import { benchmark } from './metrics.js';
6
+ /**
7
+ * Parse UASP YAML content
8
+ */
9
+ export function parseUaspYaml(content) {
10
+ return yaml.parse(content);
11
+ }
12
+ /**
13
+ * Parse SKILL.md frontmatter (simple implementation without gray-matter for comparison)
14
+ */
15
+ export function parseSkillMdFrontmatter(content) {
16
+ // Extract frontmatter between --- delimiters
17
+ const match = content.match(/^---\n([\s\S]*?)\n---\n([\s\S]*)$/);
18
+ if (!match) {
19
+ return { data: {}, content };
20
+ }
21
+ const [, frontmatterStr, body] = match;
22
+ const data = yaml.parse(frontmatterStr);
23
+ return { data, content: body };
24
+ }
25
+ /**
26
+ * Parse SKILL.md frontmatter using gray-matter (if available)
27
+ */
28
+ export async function parseSkillMdWithGrayMatter(content) {
29
+ try {
30
+ const matter = await import('gray-matter');
31
+ const result = matter.default(content);
32
+ return { data: result.data, content: result.content };
33
+ }
34
+ catch {
35
+ // gray-matter not installed, use simple parser
36
+ return parseSkillMdFrontmatter(content);
37
+ }
38
+ }
39
+ /**
40
+ * Benchmark UASP YAML parsing
41
+ */
42
+ export async function benchmarkUaspParsing(content, options) {
43
+ return benchmark('UASP YAML', () => parseUaspYaml(content), options);
44
+ }
45
+ /**
46
+ * Benchmark SKILL.md frontmatter parsing
47
+ */
48
+ export async function benchmarkSkillMdParsing(content, options) {
49
+ return benchmark('SKILL.md Frontmatter', () => parseSkillMdFrontmatter(content), options);
50
+ }
51
+ /**
52
+ * Benchmark SKILL.md parsing with gray-matter
53
+ */
54
+ export async function benchmarkSkillMdGrayMatter(content, options) {
55
+ // Pre-import gray-matter to avoid import overhead in benchmark
56
+ let matterFn = null;
57
+ try {
58
+ const matterModule = await import('gray-matter');
59
+ // Handle both ESM default export and CommonJS
60
+ matterFn = (matterModule.default || matterModule);
61
+ }
62
+ catch {
63
+ // Not available
64
+ }
65
+ if (!matterFn) {
66
+ return benchmark('SKILL.md (gray-matter)', () => parseSkillMdFrontmatter(content), options);
67
+ }
68
+ const fn = matterFn;
69
+ return benchmark('SKILL.md (gray-matter)', () => {
70
+ return fn(content);
71
+ }, options);
72
+ }
73
+ /**
74
+ * Run all parsing benchmarks
75
+ */
76
+ export async function runParsingBenchmarks(uaspContent, skillMdContent, options) {
77
+ const uasp = await benchmarkUaspParsing(uaspContent, options);
78
+ const skillMd = await benchmarkSkillMdGrayMatter(skillMdContent, options);
79
+ return { uasp, skillMd };
80
+ }
81
+ //# sourceMappingURL=parsers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../src/benchmark/parsers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,SAAS,EAA+C,MAAM,cAAc,CAAC;AAEtF;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAe;IACrD,6CAA6C;IAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAEjE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;IACvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAExC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,OAAe;IAC9D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,+CAA+C;QAC/C,OAAO,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAe,EACf,OAA0B;IAE1B,OAAO,SAAS,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AACvE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,OAAe,EACf,OAA0B;IAE1B,OAAO,SAAS,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5F,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,OAAe,EACf,OAA0B;IAE1B,+DAA+D;IAC/D,IAAI,QAAQ,GAAqE,IAAI,CAAC;IACtF,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QACjD,8CAA8C;QAC9C,QAAQ,GAAG,CAAC,YAAY,CAAC,OAAO,IAAI,YAAY,CAA4D,CAAC;IAC/G,CAAC;IAAC,MAAM,CAAC;QACP,gBAAgB;IAClB,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,SAAS,CAAC,wBAAwB,EAAE,GAAG,EAAE,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IAC9F,CAAC;IAED,MAAM,EAAE,GAAG,QAAQ,CAAC;IACpB,OAAO,SAAS,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAC9C,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC,EAAE,OAAO,CAAC,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,WAAmB,EACnB,cAAsB,EACtB,OAA0B;IAE1B,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,MAAM,0BAA0B,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAE1E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Benchmark report generation in multiple formats
3
+ */
4
+ import type { BenchmarkResult } from './metrics.js';
5
+ export interface BenchmarkComparison {
6
+ category: string;
7
+ uasp: BenchmarkResult;
8
+ skillMd: BenchmarkResult;
9
+ winner: 'uasp' | 'skill-md' | 'tie';
10
+ speedup: number;
11
+ }
12
+ export interface BenchmarkReport {
13
+ title: string;
14
+ timestamp: string;
15
+ comparisons: BenchmarkComparison[];
16
+ summary: {
17
+ uaspWins: number;
18
+ skillMdWins: number;
19
+ ties: number;
20
+ };
21
+ }
22
+ /**
23
+ * Create a comparison between UASP and SKILL.md benchmarks
24
+ */
25
+ export declare function createComparison(category: string, uasp: BenchmarkResult, skillMd: BenchmarkResult): BenchmarkComparison;
26
+ /**
27
+ * Create a full benchmark report
28
+ */
29
+ export declare function createReport(comparisons: BenchmarkComparison[]): BenchmarkReport;
30
+ /**
31
+ * Format report as console output
32
+ */
33
+ export declare function formatConsoleReport(report: BenchmarkReport): string;
34
+ /**
35
+ * Format report as JSON
36
+ */
37
+ export declare function formatJsonReport(report: BenchmarkReport): string;
38
+ /**
39
+ * Format report as Markdown
40
+ */
41
+ export declare function formatMarkdownReport(report: BenchmarkReport): string;
42
+ /**
43
+ * Print report to console with colors
44
+ */
45
+ export declare function printReport(report: BenchmarkReport): void;
46
+ //# sourceMappingURL=report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/benchmark/report.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAGpD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,eAAe,CAAC;IACzB,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,KAAK,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,mBAAmB,EAAE,CAAC;IACnC,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,eAAe,GACvB,mBAAmB,CAkBrB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,mBAAmB,EAAE,GAAG,eAAe,CAahF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAoCnE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAEhE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAyDpE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAEzD"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Benchmark report generation in multiple formats
3
+ */
4
+ import { formatBytes, formatMs, compareBenchmarks } from './metrics.js';
5
+ /**
6
+ * Create a comparison between UASP and SKILL.md benchmarks
7
+ */
8
+ export function createComparison(category, uasp, skillMd) {
9
+ const comparison = compareBenchmarks(uasp, skillMd);
10
+ let winner;
11
+ let speedup;
12
+ if (comparison.ratio < 1.05 && comparison.ratio > 0.95) {
13
+ winner = 'tie';
14
+ speedup = 1;
15
+ }
16
+ else if (comparison.winner === uasp.name) {
17
+ winner = 'uasp';
18
+ speedup = comparison.ratio;
19
+ }
20
+ else {
21
+ winner = 'skill-md';
22
+ speedup = comparison.ratio;
23
+ }
24
+ return { category, uasp, skillMd, winner, speedup };
25
+ }
26
+ /**
27
+ * Create a full benchmark report
28
+ */
29
+ export function createReport(comparisons) {
30
+ const summary = {
31
+ uaspWins: comparisons.filter(c => c.winner === 'uasp').length,
32
+ skillMdWins: comparisons.filter(c => c.winner === 'skill-md').length,
33
+ ties: comparisons.filter(c => c.winner === 'tie').length,
34
+ };
35
+ return {
36
+ title: 'UASP vs SKILL.md Format Benchmark',
37
+ timestamp: new Date().toISOString(),
38
+ comparisons,
39
+ summary,
40
+ };
41
+ }
42
+ /**
43
+ * Format report as console output
44
+ */
45
+ export function formatConsoleReport(report) {
46
+ const lines = [];
47
+ lines.push('');
48
+ lines.push('═'.repeat(80));
49
+ lines.push(` ${report.title}`);
50
+ lines.push(` Generated: ${report.timestamp}`);
51
+ lines.push('═'.repeat(80));
52
+ lines.push('');
53
+ // Table header
54
+ lines.push('┌────────────────────┬───────────────┬───────────────┬──────────┬─────────┐');
55
+ lines.push('│ Category │ UASP │ SKILL.md │ Winner │ Speedup │');
56
+ lines.push('├────────────────────┼───────────────┼───────────────┼──────────┼─────────┤');
57
+ for (const comp of report.comparisons) {
58
+ const category = comp.category.padEnd(18);
59
+ const uaspTime = formatMs(comp.uasp.timing.mean).padStart(11);
60
+ const skillMdTime = formatMs(comp.skillMd.timing.mean).padStart(11);
61
+ const winner = (comp.winner === 'tie' ? 'Tie' : comp.winner.toUpperCase()).padEnd(8);
62
+ const speedup = comp.winner === 'tie' ? ' - ' : `${comp.speedup.toFixed(2)}x`.padStart(7);
63
+ lines.push(`│ ${category} │ ${uaspTime} │ ${skillMdTime} │ ${winner} │ ${speedup} │`);
64
+ }
65
+ lines.push('└────────────────────┴───────────────┴───────────────┴──────────┴─────────┘');
66
+ lines.push('');
67
+ // Summary
68
+ lines.push('Summary:');
69
+ lines.push(` UASP wins: ${report.summary.uaspWins}`);
70
+ lines.push(` SKILL.md wins: ${report.summary.skillMdWins}`);
71
+ lines.push(` Ties: ${report.summary.ties}`);
72
+ lines.push('');
73
+ return lines.join('\n');
74
+ }
75
+ /**
76
+ * Format report as JSON
77
+ */
78
+ export function formatJsonReport(report) {
79
+ return JSON.stringify(report, null, 2);
80
+ }
81
+ /**
82
+ * Format report as Markdown
83
+ */
84
+ export function formatMarkdownReport(report) {
85
+ const lines = [];
86
+ lines.push(`# ${report.title}`);
87
+ lines.push('');
88
+ lines.push(`Generated: ${report.timestamp}`);
89
+ lines.push('');
90
+ // Table
91
+ lines.push('| Category | UASP | SKILL.md | Winner | Speedup |');
92
+ lines.push('|----------|------|----------|--------|---------|');
93
+ for (const comp of report.comparisons) {
94
+ const winner = comp.winner === 'tie' ? 'Tie' : comp.winner.toUpperCase();
95
+ const speedup = comp.winner === 'tie' ? '-' : `${comp.speedup.toFixed(2)}x`;
96
+ lines.push(`| ${comp.category} | ${formatMs(comp.uasp.timing.mean)} | ${formatMs(comp.skillMd.timing.mean)} | ${winner} | ${speedup} |`);
97
+ }
98
+ lines.push('');
99
+ lines.push('## Summary');
100
+ lines.push('');
101
+ lines.push(`- **UASP wins:** ${report.summary.uaspWins}`);
102
+ lines.push(`- **SKILL.md wins:** ${report.summary.skillMdWins}`);
103
+ lines.push(`- **Ties:** ${report.summary.ties}`);
104
+ lines.push('');
105
+ // Detailed results
106
+ lines.push('## Detailed Results');
107
+ lines.push('');
108
+ for (const comp of report.comparisons) {
109
+ lines.push(`### ${comp.category}`);
110
+ lines.push('');
111
+ lines.push('**UASP:**');
112
+ lines.push(`- Mean: ${formatMs(comp.uasp.timing.mean)}`);
113
+ lines.push(`- Median: ${formatMs(comp.uasp.timing.median)}`);
114
+ lines.push(`- Min: ${formatMs(comp.uasp.timing.min)}`);
115
+ lines.push(`- Max: ${formatMs(comp.uasp.timing.max)}`);
116
+ lines.push(`- Std Dev: ${formatMs(comp.uasp.timing.stdDev)}`);
117
+ if (comp.uasp.memory) {
118
+ lines.push(`- Memory Delta: ${formatBytes(comp.uasp.memory.delta)}`);
119
+ }
120
+ lines.push('');
121
+ lines.push('**SKILL.md:**');
122
+ lines.push(`- Mean: ${formatMs(comp.skillMd.timing.mean)}`);
123
+ lines.push(`- Median: ${formatMs(comp.skillMd.timing.median)}`);
124
+ lines.push(`- Min: ${formatMs(comp.skillMd.timing.min)}`);
125
+ lines.push(`- Max: ${formatMs(comp.skillMd.timing.max)}`);
126
+ lines.push(`- Std Dev: ${formatMs(comp.skillMd.timing.stdDev)}`);
127
+ if (comp.skillMd.memory) {
128
+ lines.push(`- Memory Delta: ${formatBytes(comp.skillMd.memory.delta)}`);
129
+ }
130
+ lines.push('');
131
+ }
132
+ return lines.join('\n');
133
+ }
134
+ /**
135
+ * Print report to console with colors
136
+ */
137
+ export function printReport(report) {
138
+ console.log(formatConsoleReport(report));
139
+ }
140
+ //# sourceMappingURL=report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/benchmark/report.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Search benchmarks - Structured vs full-text search
3
+ */
4
+ import { type BenchmarkResult, type BenchmarkOptions } from './metrics.js';
5
+ import type { RegistrySkill, Skill } from '../types/index.js';
6
+ /**
7
+ * Structured search on UASP registry
8
+ * Searches specific fields: name, description, keywords
9
+ */
10
+ export declare function searchUaspStructured(skills: Array<{
11
+ skill: Skill;
12
+ registrySkill: RegistrySkill;
13
+ }>, query: string): Array<{
14
+ skill: Skill;
15
+ registrySkill: RegistrySkill;
16
+ score: number;
17
+ }>;
18
+ /**
19
+ * Full-text search on SKILL.md content
20
+ */
21
+ export declare function searchSkillMdFullText(skillMdContents: Array<{
22
+ name: string;
23
+ content: string;
24
+ }>, query: string): Array<{
25
+ name: string;
26
+ score: number;
27
+ }>;
28
+ /**
29
+ * Benchmark structured UASP search
30
+ */
31
+ export declare function benchmarkUaspSearch(skills: Array<{
32
+ skill: Skill;
33
+ registrySkill: RegistrySkill;
34
+ }>, query: string, options?: BenchmarkOptions): Promise<BenchmarkResult>;
35
+ /**
36
+ * Benchmark full-text SKILL.md search
37
+ */
38
+ export declare function benchmarkSkillMdSearch(skillMdContents: Array<{
39
+ name: string;
40
+ content: string;
41
+ }>, query: string, options?: BenchmarkOptions): Promise<BenchmarkResult>;
42
+ /**
43
+ * Calculate search precision
44
+ * Measures how relevant the top N results are
45
+ */
46
+ export declare function calculateSearchPrecision(results: Array<{
47
+ name: string;
48
+ score: number;
49
+ }>, expectedTopResults: string[], topN?: number): number;
50
+ /**
51
+ * Run search benchmarks
52
+ */
53
+ export declare function runSearchBenchmarks(skills: Array<{
54
+ skill: Skill;
55
+ registrySkill: RegistrySkill;
56
+ }>, skillMdContents: Array<{
57
+ name: string;
58
+ content: string;
59
+ }>, query: string, options?: BenchmarkOptions): Promise<{
60
+ uasp: BenchmarkResult;
61
+ skillMd: BenchmarkResult;
62
+ }>;
63
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/benchmark/search.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAa,KAAK,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACtF,OAAO,KAAK,EAAY,aAAa,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAExE;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,aAAa,EAAE,aAAa,CAAA;CAAE,CAAC,EAC7D,KAAK,EAAE,MAAM,GACZ,KAAK,CAAC;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,aAAa,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAuCtE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,eAAe,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EACzD,KAAK,EAAE,MAAM,GACZ,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CA4BxC;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,aAAa,EAAE,aAAa,CAAA;CAAE,CAAC,EAC7D,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,eAAe,CAAC,CAM1B;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,eAAe,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EACzD,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,eAAe,CAAC,CAM1B;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EAC/C,kBAAkB,EAAE,MAAM,EAAE,EAC5B,IAAI,GAAE,MAAU,GACf,MAAM,CAIR;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,aAAa,EAAE,aAAa,CAAA;CAAE,CAAC,EAC7D,eAAe,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EACzD,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,eAAe,CAAA;CAAE,CAAC,CAK9D"}