@dzhechkov/harness-core 0.3.23 → 0.3.24

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.
@@ -14,6 +14,12 @@ export interface BenchmarkCheck {
14
14
  readonly name: string;
15
15
  readonly passed: boolean;
16
16
  readonly detail?: string | undefined;
17
+ /**
18
+ * When true this check is informational ONLY — it is excluded from the
19
+ * pass-rate / grade math (so it can ship without regressing existing grades).
20
+ * Surfaced as a warning in output. Used by S16 (capability-declaration nudge).
21
+ */
22
+ readonly advisory?: boolean;
17
23
  }
18
24
  /** Score for a single skill benchmark. */
19
25
  export interface BenchmarkScore {
@@ -1 +1 @@
1
- {"version":3,"file":"benchmark.d.ts","sourceRoot":"","sources":["../src/benchmark.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEzE,uCAAuC;AACvC,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,0CAA0C;AAC1C,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC5C,uEAAuE;IACvE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;CAC7B;AAED,iDAAiD;AACjD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED,mDAAmD;AACnD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,SAAS;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;CAC5G;AAUD,gEAAgE;AAChE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,cAAc,CA4GhF;AAED,iCAAiC;AACjC,wBAAgB,eAAe,CAAC,SAAS,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,eAAe,CAUzF;AAED,uCAAuC;AACvC,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EACnC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAClC,aAAa,CAiBf"}
1
+ {"version":3,"file":"benchmark.d.ts","sourceRoot":"","sources":["../src/benchmark.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEzE,uCAAuC;AACvC,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,0CAA0C;AAC1C,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC5C,uEAAuE;IACvE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;CAC7B;AAED,iDAAiD;AACjD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED,mDAAmD;AACnD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,SAAS;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;CAC5G;AAUD,gEAAgE;AAChE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,cAAc,CAqJhF;AAED,iCAAiC;AACjC,wBAAgB,eAAe,CAAC,SAAS,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,eAAe,CAUzF;AAED,uCAAuC;AACvC,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EACnC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAClC,aAAa,CAqBf"}
package/dist/benchmark.js CHANGED
@@ -9,6 +9,7 @@
9
9
  */
10
10
  import { existsSync, readFileSync, statSync } from 'node:fs';
11
11
  import { join } from 'node:path';
12
+ import { detectScriptCapabilities, parseDeclaredCapabilities } from './capability-vocab.js';
12
13
  import { estimateSkillCost } from './cost-scoring.js';
13
14
  function gradeFromRate(rate) {
14
15
  if (rate >= 90)
@@ -101,10 +102,51 @@ export function benchmarkSkill(skillDir, skillId) {
101
102
  const hasAntiPatterns = /^##\s+.*(Anti.?[Pp]atterns?|Self.?check|Error Handling|Troubleshooting|Gotchas|Caveats|Limitations|Pitfalls|Common (Mistakes|Issues|Pitfalls)|Prohibited|Warnings?|Антипаттерны|Самопроверка|Ошибки|Ограничения|Предостережени)/mi.test(content)
102
103
  || /\*\*\s*PROHIBITED/i.test(content);
103
104
  checks.push({ id: 'S14', name: 'anti-patterns or self-check', passed: hasAntiPatterns });
104
- const passed = checks.filter((c) => c.passed).length;
105
- const passRate = Math.round((passed / checks.length) * 100);
105
+ // S15: capability declaration matches usage (advisory, contradiction-only).
106
+ // Phase 1 auto-detects network + shell from scripts/ only (never SKILL.md prose).
107
+ // PASS unless a declared `capabilities.<cap>: false` is contradicted by detected
108
+ // usage. Absent block, or under-declaration (uses it, declares nothing), PASS —
109
+ // so the ~all skills that declare nothing today stay green.
110
+ const declaredCaps = parseDeclaredCapabilities(content);
111
+ const detectedCaps = detectScriptCapabilities(skillDir);
112
+ const contradictions = [];
113
+ if (detectedCaps.network && declaredCaps.network === false)
114
+ contradictions.push('network');
115
+ if (detectedCaps.shell && declaredCaps.shell === false)
116
+ contradictions.push('shell');
117
+ checks.push({
118
+ id: 'S15',
119
+ name: 'capability declaration matches usage',
120
+ passed: contradictions.length === 0,
121
+ detail: contradictions.length > 0
122
+ ? `scripts use ${contradictions.join(' + ')} but capabilities declare it false`
123
+ : undefined,
124
+ });
125
+ // S16: side-effecting skills should declare their capabilities (ADVISORY — not
126
+ // graded). Warns when scripts use network/shell but the capability is not
127
+ // declared at all (neither true nor false). The adoption nudge for the manifest;
128
+ // excluded from the grade so it never regresses an existing skill.
129
+ const undeclaredUsed = [];
130
+ if (detectedCaps.network && declaredCaps.network === undefined)
131
+ undeclaredUsed.push('network');
132
+ if (detectedCaps.shell && declaredCaps.shell === undefined)
133
+ undeclaredUsed.push('shell');
134
+ checks.push({
135
+ id: 'S16',
136
+ name: 'side-effects declared (advisory)',
137
+ passed: undeclaredUsed.length === 0,
138
+ advisory: true,
139
+ detail: undeclaredUsed.length > 0
140
+ ? `scripts use ${undeclaredUsed.join(' + ')} — add a capabilities: block declaring it`
141
+ : undefined,
142
+ });
143
+ // grade math is over GRADED checks only — advisory checks (S16) are excluded
144
+ // so they ship without changing any existing grade.
145
+ const graded = checks.filter((c) => !c.advisory);
146
+ const passed = graded.filter((c) => c.passed).length;
147
+ const passRate = graded.length > 0 ? Math.round((passed / graded.length) * 100) : 0;
106
148
  return {
107
- skillId, skillDir, checks, passed, total: checks.length,
149
+ skillId, skillDir, checks, passed, total: graded.length,
108
150
  passRate, grade: gradeFromRate(passRate), cost: estimateSkillCost(content),
109
151
  };
110
152
  }
@@ -124,8 +166,13 @@ export function benchmarkSkills(skillDirs) {
124
166
  export function compareSkills(skillADir, skillAId, skillBDir, skillBId) {
125
167
  const skillA = benchmarkSkill(skillADir, skillAId);
126
168
  const skillB = benchmarkSkill(skillBDir, skillBId);
169
+ // deltaChecks is GRADED-ONLY — advisory checks (e.g. S16) never touch the grade,
170
+ // so surfacing them in the A/B diff would misrepresent an adoption nudge as a
171
+ // quality difference. Mirrors the graded filter in the grade math above.
127
172
  const deltaChecks = [];
128
173
  for (const checkA of skillA.checks) {
174
+ if (checkA.advisory)
175
+ continue;
129
176
  const checkB = skillB.checks.find((c) => c.id === checkA.id);
130
177
  if (checkB && checkA.passed !== checkB.passed) {
131
178
  deltaChecks.push({ id: checkA.id, aPass: checkA.passed, bPass: checkB.passed });
@@ -1 +1 @@
1
- {"version":3,"file":"benchmark.js","sourceRoot":"","sources":["../src/benchmark.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"benchmark.js","sourceRoot":"","sources":["../src/benchmark.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Shared capability vocabulary — the single source of truth for how the harness
3
+ * classifies agent capabilities, used by BOTH `mcp-scan` (project settings audit)
4
+ * and `benchmark` (per-skill S15 capability-declaration check).
5
+ *
6
+ * Keeping these regexes/sets here (rather than private to mcp-scan) guarantees the
7
+ * project-level scan and the per-skill manifest speak ONE diffable vocabulary.
8
+ *
9
+ * @packageDocumentation
10
+ */
11
+ /** The capability classes the harness recognises. */
12
+ export type CapabilityClass = 'shell' | 'network' | 'file-write' | 'secrets' | 'mcp' | 'policy';
13
+ export declare const SHELL_TOOLS: Set<string>;
14
+ export declare const NETWORK_TOOLS: Set<string>;
15
+ export declare const WRITE_TOOLS: Set<string>;
16
+ export declare const READ_TOOLS: Set<string>;
17
+ /** Recognised + benign tools (so they aren't flagged "unknown"). */
18
+ export declare const SAFE_TOOLS: Set<string>;
19
+ /** Interpreter binaries that can run arbitrary code. */
20
+ export declare const INTERPRETER_RE: RegExp;
21
+ /** Package runners that fetch + execute arbitrary remote code. */
22
+ export declare const PACKAGE_RUNNERS: Set<string>;
23
+ /** Inline-code argument flags. */
24
+ export declare const INLINE_CODE_ARGS: Set<string>;
25
+ /** Binaries that imply outbound network. */
26
+ export declare const SHELL_NET_RE: RegExp;
27
+ /** Binaries / redirects that imply filesystem writes. */
28
+ export declare const SHELL_WRITE_RE: RegExp;
29
+ /** Concrete secret-file location patterns (not bare "secret"/"credential" substrings). */
30
+ export declare const SECRET_FILE_RE: RegExp;
31
+ export declare const MAX_FILE_BYTES: number;
32
+ /** Parse a Claude permission grant like `Bash(git *)` → `{ tool, arg }`. Never throws. */
33
+ export declare function parseGrant(grant: unknown): {
34
+ tool: string;
35
+ arg: string | null;
36
+ };
37
+ export declare function isWildcard(arg: string | null): boolean;
38
+ export declare function toolKind(tool: string): CapabilityClass | 'read' | 'safe' | 'unknown';
39
+ /** Self-declared capability surface parsed from a skill's `capabilities:` block. */
40
+ export interface DeclaredCapabilities {
41
+ network?: boolean;
42
+ shell?: boolean;
43
+ 'file-write'?: boolean;
44
+ dangerous?: boolean;
45
+ }
46
+ /** Capabilities statically detected in a skill's `scripts/`. P1: network + shell only. */
47
+ export interface DetectedCapabilities {
48
+ network: boolean;
49
+ shell: boolean;
50
+ }
51
+ /** Strip comments + heredocs (keeps string literals — curl inside an arg string is real). */
52
+ export declare function stripComments(text: string): string;
53
+ /**
54
+ * Strip comments, heredocs AND quoted string literals. Used for the IDENTIFIER
55
+ * pass (fetch/axios/execSync/http modules) where the token is real code, never a
56
+ * quoted search pattern — this is what kills FPs like `grep "writeFileSync"`.
57
+ */
58
+ export declare function stripCodeNoise(text: string): string;
59
+ /**
60
+ * Statically detect network + shell capability usage in a skill's `scripts/`.
61
+ * Reads only `scripts/` (never SKILL.md prose), recursively (bounded), skipping
62
+ * binary / symlinked / oversized files. Deterministic, no execution.
63
+ *
64
+ * Known scope (Phase 1, by design — documented, not bugs): file-write and
65
+ * `dangerous` are not auto-detected; dynamically-assembled commands
66
+ * (`$RUNNER install`, eval'd strings) and indirected calls evade static regexes.
67
+ * S15 is a best-effort self-consistency LINT, not a sandbox.
68
+ */
69
+ export declare function detectScriptCapabilities(skillDir: string): DetectedCapabilities;
70
+ /**
71
+ * Parse the `capabilities:` block from a SKILL.md document. Reads only the
72
+ * frontmatter region (the first `---`-fenced block) and only DIRECT children of
73
+ * `capabilities:` (so a nested `limits.network` is never mistaken for a top-level
74
+ * declaration). Absent block or absent key → `undefined` ("not asserted").
75
+ */
76
+ export declare function parseDeclaredCapabilities(skillMd: string): DeclaredCapabilities;
77
+ /** Declared runtime limits (inert today — no enforcement home in Claude Code settings). */
78
+ export interface DeclaredLimits {
79
+ toolTimeoutMs?: number;
80
+ maxToolCallsPerTurn?: number;
81
+ requireApprovalForDangerous?: boolean;
82
+ }
83
+ /**
84
+ * Parse the nested `capabilities.limits` block from a SKILL.md frontmatter.
85
+ * Fail-open: a malformed/absent block yields `{}` (never throws). These values
86
+ * are INERT — Claude Code settings.json has no timeout/rate-limit field; they are
87
+ * only machine-actionable in an MCP host's policy.json.
88
+ */
89
+ export declare function parseDeclaredLimits(skillMd: string): DeclaredLimits;
90
+ //# sourceMappingURL=capability-vocab.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-vocab.d.ts","sourceRoot":"","sources":["../src/capability-vocab.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,qDAAqD;AACrD,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,CAAC;AAGhG,eAAO,MAAM,WAAW,aAA2C,CAAC;AACpE,eAAO,MAAM,aAAa,aAAqC,CAAC;AAChE,eAAO,MAAM,WAAW,aAA0D,CAAC;AACnF,eAAO,MAAM,UAAU,aAAoB,CAAC;AAC5C,oEAAoE;AACpE,eAAO,MAAM,UAAU,aAGrB,CAAC;AAEH,wDAAwD;AACxD,eAAO,MAAM,cAAc,QAAmE,CAAC;AAC/F,kEAAkE;AAClE,eAAO,MAAM,eAAe,aAAsF,CAAC;AACnH,kCAAkC;AAClC,eAAO,MAAM,gBAAgB,aAAiD,CAAC;AAE/E,4CAA4C;AAC5C,eAAO,MAAM,YAAY,QAA4D,CAAC;AACtF,yDAAyD;AACzD,eAAO,MAAM,cAAc,QAA0D,CAAC;AACtF,0FAA0F;AAC1F,eAAO,MAAM,cAAc,QACsK,CAAC;AAElM,eAAO,MAAM,cAAc,QAAkB,CAAC;AAM9C,0FAA0F;AAC1F,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAO/E;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAEtD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAUpF;AAMD,oFAAoF;AACpF,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,0FAA0F;AAC1F,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;CAChB;AAOD,6FAA6F;AAC7F,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKnD;AAsDD;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,oBAAoB,CA+B/E;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,CA4B/E;AAED,2FAA2F;AAC3F,MAAM,WAAW,cAAc;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,2BAA2B,CAAC,EAAE,OAAO,CAAC;CACvC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CA2CnE"}
@@ -0,0 +1,286 @@
1
+ /**
2
+ * Shared capability vocabulary — the single source of truth for how the harness
3
+ * classifies agent capabilities, used by BOTH `mcp-scan` (project settings audit)
4
+ * and `benchmark` (per-skill S15 capability-declaration check).
5
+ *
6
+ * Keeping these regexes/sets here (rather than private to mcp-scan) guarantees the
7
+ * project-level scan and the per-skill manifest speak ONE diffable vocabulary.
8
+ *
9
+ * @packageDocumentation
10
+ */
11
+ import { existsSync, lstatSync, readdirSync, readFileSync } from 'node:fs';
12
+ import { extname, join } from 'node:path';
13
+ // --- Claude permission-grammar tool sets (lowercase for case-insensitive tests) ---
14
+ export const SHELL_TOOLS = new Set(['bash', 'powershell', 'shell']);
15
+ export const NETWORK_TOOLS = new Set(['webfetch', 'websearch']);
16
+ export const WRITE_TOOLS = new Set(['write', 'edit', 'multiedit', 'notebookedit']);
17
+ export const READ_TOOLS = new Set(['read']);
18
+ /** Recognised + benign tools (so they aren't flagged "unknown"). */
19
+ export const SAFE_TOOLS = new Set([
20
+ 'glob', 'grep', 'task', 'bashoutput', 'killbash', 'todowrite',
21
+ 'notebookread', 'slashcommand', 'exitplanmode', 'ls',
22
+ ]);
23
+ /** Interpreter binaries that can run arbitrary code. */
24
+ export const INTERPRETER_RE = /^(bash|sh|zsh|fish|node|nodejs|python\d?|deno|ruby|perl|php)$/i;
25
+ /** Package runners that fetch + execute arbitrary remote code. */
26
+ export const PACKAGE_RUNNERS = new Set(['npx', 'npm', 'pnpm', 'yarn', 'uvx', 'uv', 'pipx', 'bunx', 'bun', 'deno']);
27
+ /** Inline-code argument flags. */
28
+ export const INLINE_CODE_ARGS = new Set(['-c', '-e', '-eval', '--eval', '-p']);
29
+ /** Binaries that imply outbound network. */
30
+ export const SHELL_NET_RE = /\b(curl|wget|nc|ncat|netcat|ssh|scp|sftp|telnet|ftp)\b/i;
31
+ /** Binaries / redirects that imply filesystem writes. */
32
+ export const SHELL_WRITE_RE = /\b(rm|mv|cp|tee|dd|truncate|chmod|chown|mkfifo)\b|>>?/;
33
+ /** Concrete secret-file location patterns (not bare "secret"/"credential" substrings). */
34
+ export const SECRET_FILE_RE = /\.env\b|\.env\.|id_rsa|id_ed25519|id_ecdsa|\.ssh\/|\.aws\/|\.config\/gcloud|application_default_credentials|\.npmrc|\.netrc|\.git-credentials|\.kube\/config|\.pem\b|\.p12\b|\.pfx\b|\.key\b/i;
35
+ export const MAX_FILE_BYTES = 5 * 1024 * 1024;
36
+ // ---------------------------------------------------------------------------
37
+ // permission-grammar helpers
38
+ // ---------------------------------------------------------------------------
39
+ /** Parse a Claude permission grant like `Bash(git *)` → `{ tool, arg }`. Never throws. */
40
+ export function parseGrant(grant) {
41
+ if (typeof grant !== 'string')
42
+ return { tool: '', arg: null };
43
+ const s = grant.trim();
44
+ const m = /^([A-Za-z_][\w-]*)\s*\((.*)\)\s*$/.exec(s);
45
+ if (m)
46
+ return { tool: m[1] ?? s, arg: m[2] ?? null };
47
+ const id = /^([A-Za-z_][\w-]*|\*)/.exec(s);
48
+ return { tool: id ? (id[1] ?? s) : s, arg: null };
49
+ }
50
+ export function isWildcard(arg) {
51
+ return arg === null || arg.trim() === '' || arg.includes('*');
52
+ }
53
+ export function toolKind(tool) {
54
+ const t = tool.toLowerCase();
55
+ if (t === '*')
56
+ return 'shell';
57
+ if (SHELL_TOOLS.has(t))
58
+ return 'shell';
59
+ if (NETWORK_TOOLS.has(t))
60
+ return 'network';
61
+ if (WRITE_TOOLS.has(t))
62
+ return 'file-write';
63
+ if (READ_TOOLS.has(t))
64
+ return 'read';
65
+ if (t.startsWith('mcp__'))
66
+ return 'mcp';
67
+ if (SAFE_TOOLS.has(t))
68
+ return 'safe';
69
+ return 'unknown';
70
+ }
71
+ /** Strip heredoc bodies (`<<EOF … EOF`, incl. `<<-'EOF'`) — unquoted free text. */
72
+ function stripHeredocs(text) {
73
+ return text.replace(/<<-?\s*(['"]?)(\w+)\1[\s\S]*?\n[ \t]*\2\b/g, ' ');
74
+ }
75
+ /** Strip comments + heredocs (keeps string literals — curl inside an arg string is real). */
76
+ export function stripComments(text) {
77
+ return stripHeredocs(text)
78
+ .replace(/\/\*[\s\S]*?\*\//g, ' ') // /* paired block */
79
+ .replace(/\/\*[\s\S]*$/g, ' ') // unterminated block → EOF
80
+ .replace(/(^|[^:])\/\/[^\n]*/g, '$1 ') // // line (not http://)
81
+ .replace(/(^|\s)#[^\n]*/g, '$1 '); // # shell/py
82
+ }
83
+ /**
84
+ * Strip comments, heredocs AND quoted string literals. Used for the IDENTIFIER
85
+ * pass (fetch/axios/execSync/http modules) where the token is real code, never a
86
+ * quoted search pattern — this is what kills FPs like `grep "writeFileSync"`.
87
+ */
88
+ export function stripCodeNoise(text) {
89
+ return stripComments(text)
90
+ .replace(/'(?:[^'\\]|\\.)*'/g, ' ')
91
+ .replace(/"(?:[^"\\]|\\.)*"/g, ' ')
92
+ .replace(/`(?:[^`\\]|\\.)*`/g, ' ');
93
+ }
94
+ const SCRIPT_EXTS = new Set(['.sh', '.bash', '.zsh', '.js', '.mjs', '.cjs', '.ts', '.py', '.rb', '.pl', '.php']);
95
+ // command position = line start, after a shell separator, after `sudo`/`do`/`then`,
96
+ // inside `$( )`, or right after an opening quote (covers subprocess.run("curl …")).
97
+ const CMD_PREFIX = `(?:^|[;&|(\\n]|&&|\\|\\||\\$\\(|\\bsudo\\s+|\\bthen\\s+|\\bdo\\s+|["'\`])\\s*`;
98
+ // the next token must look like an argument/subcommand (a word/path/flag), not an
99
+ // operator — so `uv = coord` / `ssh = cfg` (assignments) and `grep "curl"` don't match.
100
+ const ARG_FOLLOWS = `(?=\\s+[\\w./~-])`;
101
+ // a network binary AT command position, followed by an argument.
102
+ const CMD_NET_RE = new RegExp(`${CMD_PREFIX}(curl|wget|nc|ncat|netcat|ssh|scp|sftp|telnet|ftp)\\b${ARG_FOLLOWS}`, 'i');
103
+ // a package-runner / interpreter AT command position, followed by an argument → shell.
104
+ const CMD_SHELL_RE = new RegExp(`${CMD_PREFIX}(${[...PACKAGE_RUNNERS].join('|')}|python\\d?|node|nodejs|bash|sh|zsh|ruby|perl|php)\\b${ARG_FOLLOWS}`, 'i');
105
+ // network via library identifiers (matched on noise-stripped code — never in a quote).
106
+ const NETWORK_CALL_RE = /\bfetch\s*\(|\baxios\b|WebFetch\s*\(|\bWebSearch\b|\brequests\.|\burllib3?\b|\bhttpx\b|\baiohttp\b|\bparamiko\b|\bsmtplib\b|\bftplib\b|\bhttp\.client\b|\bsocket\.(?:socket|create_connection)\s*\(|\b(?:https?|net|dgram|tls|dns)\.(?:get|request|createConnection|connect|createSocket|resolve\w*)\s*\(|\bnew\s+WebSocket\b|(?:require\(|from\s+)['"](?:node:)?(?:http|https|net|dgram|tls|ws|node-fetch|got|undici)['"]/;
107
+ // shell exec via library identifiers (language-agnostic).
108
+ const EXEC_CALL_RE = /child_process|execSync|execFileSync|spawnSync|\bspawn\s*\(|\bexec(?:File)?\s*\(|\bsubprocess\b|\bos\.system\b|\bos\.popen\b|\bPopen\b|\bOpen3\b|\bcommands\.get(?:status)?output\b|%x[([{]|(?:^|[^.\w])system\s*\(/m;
109
+ function isProbablyBinary(buf) {
110
+ return /[\x00-\x08\x0E-\x1F]/.test(buf);
111
+ }
112
+ function collectScriptFiles(dir, depth, acc) {
113
+ if (depth > 3 || acc.length >= 200)
114
+ return;
115
+ let entries;
116
+ try {
117
+ entries = readdirSync(dir);
118
+ }
119
+ catch {
120
+ return;
121
+ }
122
+ for (const name of entries) {
123
+ if (acc.length >= 200)
124
+ return;
125
+ const abs = join(dir, name);
126
+ let st;
127
+ try {
128
+ st = lstatSync(abs);
129
+ }
130
+ catch {
131
+ continue;
132
+ }
133
+ if (st.isSymbolicLink())
134
+ continue;
135
+ if (st.isDirectory()) {
136
+ collectScriptFiles(abs, depth + 1, acc);
137
+ }
138
+ else if (st.isFile() && st.size <= 256 * 1024) {
139
+ acc.push(abs);
140
+ }
141
+ }
142
+ }
143
+ /**
144
+ * Statically detect network + shell capability usage in a skill's `scripts/`.
145
+ * Reads only `scripts/` (never SKILL.md prose), recursively (bounded), skipping
146
+ * binary / symlinked / oversized files. Deterministic, no execution.
147
+ *
148
+ * Known scope (Phase 1, by design — documented, not bugs): file-write and
149
+ * `dangerous` are not auto-detected; dynamically-assembled commands
150
+ * (`$RUNNER install`, eval'd strings) and indirected calls evade static regexes.
151
+ * S15 is a best-effort self-consistency LINT, not a sandbox.
152
+ */
153
+ export function detectScriptCapabilities(skillDir) {
154
+ const out = { network: false, shell: false };
155
+ const scriptsDir = join(skillDir, 'scripts');
156
+ if (!existsSync(scriptsDir))
157
+ return out;
158
+ const files = [];
159
+ collectScriptFiles(scriptsDir, 0, files);
160
+ for (const abs of files) {
161
+ const ext = extname(abs).toLowerCase();
162
+ let raw;
163
+ try {
164
+ raw = readFileSync(abs, 'utf-8');
165
+ }
166
+ catch {
167
+ continue;
168
+ }
169
+ if (isProbablyBinary(raw))
170
+ continue;
171
+ const hasShebang = /^#!/.test(raw);
172
+ const isShellExt = ext === '.sh' || ext === '.bash' || ext === '.zsh';
173
+ // shell scripts (by extension, or extensionless with a shell shebang) ARE shell usage
174
+ if (isShellExt || (ext === '' && /^#![^\n]*\b(bash|sh|zsh)\b/.test(raw)))
175
+ out.shell = true;
176
+ if (!SCRIPT_EXTS.has(ext) && !hasShebang)
177
+ continue;
178
+ const commentless = stripComments(raw); // strings kept → curl in an arg string survives
179
+ const noiseless = stripCodeNoise(raw); // strings gone → identifier pass
180
+ if (CMD_NET_RE.test(commentless) || NETWORK_CALL_RE.test(noiseless))
181
+ out.network = true;
182
+ if (out.shell || CMD_SHELL_RE.test(commentless) || EXEC_CALL_RE.test(noiseless))
183
+ out.shell = true;
184
+ }
185
+ return out;
186
+ }
187
+ /**
188
+ * Parse the `capabilities:` block from a SKILL.md document. Reads only the
189
+ * frontmatter region (the first `---`-fenced block) and only DIRECT children of
190
+ * `capabilities:` (so a nested `limits.network` is never mistaken for a top-level
191
+ * declaration). Absent block or absent key → `undefined` ("not asserted").
192
+ */
193
+ export function parseDeclaredCapabilities(skillMd) {
194
+ const fmMatch = /^---\r?\n([\s\S]*?)\r?\n---/.exec(skillMd);
195
+ const fm = fmMatch ? (fmMatch[1] ?? '') : '';
196
+ const block = /^capabilities:[ \t]*\r?\n((?:[ \t]+.*\r?\n?)*)/m.exec(fm);
197
+ if (!block)
198
+ return {};
199
+ const lines = (block[1] ?? '').split('\n');
200
+ const firstReal = lines.find((l) => l.trim() !== '');
201
+ if (!firstReal)
202
+ return {};
203
+ const childIndent = (/^[ \t]*/.exec(firstReal)?.[0]) ?? '';
204
+ const out = {};
205
+ const read = (key) => {
206
+ const re = new RegExp(`^${childIndent}${key.replace('-', '\\-')}:[ \\t]*(true|false)\\b`);
207
+ for (const l of lines) {
208
+ const m = re.exec(l);
209
+ if (m)
210
+ return m[1] === 'true';
211
+ }
212
+ return undefined;
213
+ };
214
+ const network = read('network');
215
+ const shell = read('shell');
216
+ const fileWrite = read('file-write');
217
+ const dangerous = read('dangerous');
218
+ if (network !== undefined)
219
+ out.network = network;
220
+ if (shell !== undefined)
221
+ out.shell = shell;
222
+ if (fileWrite !== undefined)
223
+ out['file-write'] = fileWrite;
224
+ if (dangerous !== undefined)
225
+ out.dangerous = dangerous;
226
+ return out;
227
+ }
228
+ /**
229
+ * Parse the nested `capabilities.limits` block from a SKILL.md frontmatter.
230
+ * Fail-open: a malformed/absent block yields `{}` (never throws). These values
231
+ * are INERT — Claude Code settings.json has no timeout/rate-limit field; they are
232
+ * only machine-actionable in an MCP host's policy.json.
233
+ */
234
+ export function parseDeclaredLimits(skillMd) {
235
+ const fmMatch = /^---\r?\n([\s\S]*?)\r?\n---/.exec(skillMd);
236
+ const fm = fmMatch ? (fmMatch[1] ?? '') : '';
237
+ // Anchor under capabilities: — only a `limits:` that is a DIRECT child of
238
+ // capabilities counts (not some unrelated indented `limits:` elsewhere).
239
+ const capBlock = /^capabilities:[ \t]*\r?\n((?:[ \t]+.*\r?\n?)*)/m.exec(fm);
240
+ if (!capBlock)
241
+ return {};
242
+ const capLines = (capBlock[1] ?? '').split('\n');
243
+ const firstReal = capLines.find((l) => l.trim() !== '');
244
+ if (!firstReal)
245
+ return {};
246
+ const childIndent = (/^[ \t]*/.exec(firstReal)?.[0]) ?? '';
247
+ // find the `limits:` line at the capabilities-child indent, then capture only
248
+ // its strictly-deeper-indented children.
249
+ const limitsIdx = capLines.findIndex((l) => new RegExp(`^${childIndent}limits:[ \\t]*$`).test(l));
250
+ if (limitsIdx === -1)
251
+ return {};
252
+ const body = [];
253
+ for (let i = limitsIdx + 1; i < capLines.length; i++) {
254
+ const l = capLines[i] ?? '';
255
+ if (l.trim() === '')
256
+ continue;
257
+ const indent = (/^[ \t]*/.exec(l)?.[0]) ?? '';
258
+ if (indent.length <= childIndent.length)
259
+ break; // back to a sibling → end of limits
260
+ body.push(l);
261
+ }
262
+ const text = body.join('\n');
263
+ const out = {};
264
+ const num = (key) => {
265
+ const m = new RegExp(`^[ \\t]+${key}:[ \\t]*(\\d+)\\b`, 'm').exec(text);
266
+ if (!m)
267
+ return undefined;
268
+ const n = Number(m[1]);
269
+ return Number.isSafeInteger(n) && n >= 0 ? n : undefined; // fail-open on absurd values
270
+ };
271
+ const bool = (key) => {
272
+ const m = new RegExp(`^[ \\t]+${key}:[ \\t]*(true|false)\\b`, 'm').exec(text);
273
+ return m ? m[1] === 'true' : undefined;
274
+ };
275
+ const tt = num('toolTimeoutMs');
276
+ const mc = num('maxToolCallsPerTurn');
277
+ const ra = bool('requireApprovalForDangerous');
278
+ if (tt !== undefined)
279
+ out.toolTimeoutMs = tt;
280
+ if (mc !== undefined)
281
+ out.maxToolCallsPerTurn = mc;
282
+ if (ra !== undefined)
283
+ out.requireApprovalForDangerous = ra;
284
+ return out;
285
+ }
286
+ //# sourceMappingURL=capability-vocab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-vocab.js","sourceRoot":"","sources":["../src/capability-vocab.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -36,6 +36,12 @@ export { MODEL_PRICES, pricingFor, normalizeUsage, usageCost, invocationCost, co
36
36
  export type { ModelPricing, NormalizedUsage, RawUsage, CallRecord, InvocationCost, CostEstimate, } from './cost-scoring.js';
37
37
  export { importEcc } from './import-ecc.js';
38
38
  export type { ImportEccReport, ImportEccOptions, ImportedSkill } from './import-ecc.js';
39
+ export { scanMcp, parseGrant } from './mcp-scan.js';
40
+ export { detectScriptCapabilities, parseDeclaredCapabilities, parseDeclaredLimits, stripCodeNoise, toolKind, } from './capability-vocab.js';
41
+ export type { CapabilityClass, DeclaredCapabilities, DetectedCapabilities, DeclaredLimits } from './capability-vocab.js';
42
+ export { reconcileCapabilities, RECONCILE_BANNER } from './reconcile.js';
43
+ export type { ReconcileReport, ReconcileFinding, ReconcileAxis, AxisState, LimitsRollup, PolicyArtifact, } from './reconcile.js';
44
+ export type { McpFinding, McpScanReport, McpVerdict, McpSeverity, McpCapability, } from './mcp-scan.js';
39
45
  export type { RegistryEntry, Registry } from './registry.js';
40
46
  export type { BenchmarkCheck, BenchmarkScore, BenchmarkReport, CompareResult } from './benchmark.js';
41
47
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,mFAAmF;AACnF,eAAO,MAAM,oBAAoB,EAAE,MACiD,CAAC;AAErF,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAClH,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACtH,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClE,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAChE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAChF,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EACL,YAAY,EACZ,UAAU,EACV,cAAc,EACd,SAAS,EACT,cAAc,EACd,cAAc,EACd,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,UAAU,EACV,cAAc,EACd,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACxF,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC7D,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -25,4 +25,7 @@ export { discoverInstalled, checkUpgrades } from './upgrade.js';
25
25
  export { computeRiskScore } from './risk-scoring.js';
26
26
  export { MODEL_PRICES, pricingFor, normalizeUsage, usageCost, invocationCost, costEfficiency, estimateSkillCost, } from './cost-scoring.js';
27
27
  export { importEcc } from './import-ecc.js';
28
+ export { scanMcp, parseGrant } from './mcp-scan.js';
29
+ export { detectScriptCapabilities, parseDeclaredCapabilities, parseDeclaredLimits, stripCodeNoise, toolKind, } from './capability-vocab.js';
30
+ export { reconcileCapabilities, RECONCILE_BANNER } from './reconcile.js';
28
31
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,mFAAmF;AACnF,MAAM,CAAC,MAAM,oBAAoB,GAC9B,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAyB,CAAC,OAAO,CAAC;AAErF,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAElH,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAK7C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGhE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EACL,YAAY,EACZ,UAAU,EACV,cAAc,EACd,SAAS,EACT,cAAc,EACd,cAAc,EACd,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAS3B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,mFAAmF;AACnF,MAAM,CAAC,MAAM,oBAAoB,GAC9B,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAyB,CAAC,OAAO,CAAC;AAErF,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAElH,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAK7C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGhE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EACL,YAAY,EACZ,UAAU,EACV,cAAc,EACd,SAAS,EACT,cAAc,EACd,cAAc,EACd,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAS3B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,mBAAmB,EACnB,cAAc,EACd,QAAQ,GACT,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}