@cyanheads/mcp-ts-core 0.9.8 → 0.9.9
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.
- package/CLAUDE.md +2 -1
- package/README.md +1 -1
- package/changelog/0.9.x/0.9.9.md +20 -0
- package/dist/testing/fuzz.d.ts +6 -1
- package/dist/testing/fuzz.d.ts.map +1 -1
- package/dist/testing/fuzz.js +93 -49
- package/dist/testing/fuzz.js.map +1 -1
- package/package.json +5 -3
- package/scripts/check-framework-antipatterns.ts +8 -4
- package/skills/release-and-publish/SKILL.md +3 -3
- package/templates/CLAUDE.md +1 -0
- package/scripts/split-changelog.ts +0 -133
package/CLAUDE.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Developer Protocol
|
|
2
2
|
|
|
3
3
|
**Package:** `@cyanheads/mcp-ts-core`
|
|
4
|
-
**Version:** 0.9.
|
|
4
|
+
**Version:** 0.9.9
|
|
5
5
|
**Engines:** Bun ≥1.3.0, Node ≥24.0.0
|
|
6
6
|
**MCP SDK:** `@modelcontextprotocol/sdk` ^1.29.0
|
|
7
7
|
**Zod:** ^4.4.3
|
|
@@ -36,6 +36,7 @@ Both paths share the same public API. Init copies starter `package.json`, config
|
|
|
36
36
|
- **Runtime parity.** All features work across `stdio`/`http`/Worker. Guard non-portable deps via `runtimeCaps` from `/utils` (`isNode`, `isBun`, `isWorkerLike`, `hasBuffer`, `hasProcess`, etc.). Prefer runtime-agnostic abstractions (Hono, Fetch APIs).
|
|
37
37
|
- **Definition linting is build-time only.** Run `bun run lint:mcp` (standalone) or `bun run devcheck` (gate). Not invoked at server startup — new lint rules are additive and never break deployed servers. Every diagnostic links to the rule reference in `api-linter` skill; see that skill for the full rule catalog.
|
|
38
38
|
- **Elicitation for missing input.** Use `ctx.elicit` when the client supports it.
|
|
39
|
+
- **Close the loop on issues.** When implementing work tracked by a GitHub issue, comment on the issue with what landed before moving on. The comment is for future readers — state the concrete changes, not the conversation that produced them.
|
|
39
40
|
|
|
40
41
|
---
|
|
41
42
|
|
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
[](https://www.npmjs.com/package/@cyanheads/mcp-ts-core)
|
|
9
9
|
|
|
10
|
-
[](./CHANGELOG.md) [](./LICENSE) [](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/main/docs/specification/2025-11-25/changelog.mdx)
|
|
11
11
|
|
|
12
12
|
[](https://modelcontextprotocol.io/) [](https://www.typescriptlang.org/) [](https://bun.sh/)
|
|
13
13
|
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "fuzzTool Phase 1 pre-parse, ZodArray minLength, fast-check → optional peer dep, packaging cleanup"
|
|
3
|
+
breaking: false
|
|
4
|
+
security: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 0.9.9 — 2026-05-24
|
|
8
|
+
|
|
9
|
+
## Fixed
|
|
10
|
+
|
|
11
|
+
- **fuzzTool/fuzzResource/fuzzPrompt Phase 1** now pre-parses generated inputs through `def.input.safeParse()` before passing to handlers, matching production semantics where the framework parses at the call boundary. Resolves false-positive crashes from unresolved `.default()` values and unmet `.min()` constraints (#83).
|
|
12
|
+
- **`zodNodeToArbitrary` ZodArray** reads `minLength` from the schema and passes it to `fc.array()`. Arrays declared with `.min(N)` no longer generate empty arrays during fuzz Phase 1 (#83).
|
|
13
|
+
- **fuzzTool Phase 4** (aborted signal) pre-parses the generated sample before passing to the handler.
|
|
14
|
+
|
|
15
|
+
## Changed
|
|
16
|
+
|
|
17
|
+
- **`fast-check`** moved from `devDependencies` to optional `peerDependencies`. Consumers importing `@cyanheads/mcp-ts-core/testing/fuzz` now get an install-time hint instead of a runtime `Cannot find package` crash. Top-level value import converted to lazy `import('fast-check')` via exported `loadFc()` helper (#83).
|
|
18
|
+
- **`scripts/split-changelog.ts`** removed from `package.json` `files:` — one-shot migration script with no consumer value (#118).
|
|
19
|
+
- **`scripts/check-framework-antipatterns.ts`** file header clarified to document consumer-side rationale (#118).
|
|
20
|
+
- **Core rule: "Close the loop on issues"** added to `CLAUDE.md`, `AGENTS.md`, and `templates/CLAUDE.md`.
|
package/dist/testing/fuzz.d.ts
CHANGED
|
@@ -8,12 +8,14 @@
|
|
|
8
8
|
*
|
|
9
9
|
* @module src/testing/fuzz
|
|
10
10
|
*/
|
|
11
|
-
import fc from 'fast-check';
|
|
11
|
+
import type fc from 'fast-check';
|
|
12
12
|
import type { ZodObject, ZodRawShape } from 'zod';
|
|
13
13
|
import type { AnyPromptDefinition } from '../mcp-server/prompts/utils/promptDefinition.js';
|
|
14
14
|
import type { AnyResourceDefinition } from '../mcp-server/resources/utils/resourceDefinition.js';
|
|
15
15
|
import type { AnyToolDefinition } from '../mcp-server/tools/utils/toolDefinition.js';
|
|
16
16
|
import { type MockContextOptions } from './index.js';
|
|
17
|
+
/** Eagerly loads the `fast-check` peer dependency. Called automatically by `fuzzTool`/`fuzzResource`/`fuzzPrompt`. Call manually before using `zodToArbitrary` or `adversarialArbitrary` standalone. */
|
|
18
|
+
export declare function loadFc(): Promise<typeof fc>;
|
|
17
19
|
/** Options for fuzz test runners. */
|
|
18
20
|
export interface FuzzOptions {
|
|
19
21
|
/** Mock context options passed to `createMockContext()`. */
|
|
@@ -30,6 +32,9 @@ export interface FuzzOptions {
|
|
|
30
32
|
/**
|
|
31
33
|
* Converts a Zod schema to a fast-check `Arbitrary` that produces valid values.
|
|
32
34
|
* Supports the JSON-Schema-serializable subset used by MCP tool/resource schemas.
|
|
35
|
+
*
|
|
36
|
+
* Requires `fast-check` to be loaded first — call from within a `fuzzTool()`/
|
|
37
|
+
* `fuzzResource()`/`fuzzPrompt()` run, or call `loadFc()` before standalone use.
|
|
33
38
|
*/
|
|
34
39
|
export declare function zodToArbitrary(schema: unknown): fc.Arbitrary<unknown>;
|
|
35
40
|
/** Strings designed to trigger injection, encoding, or parsing vulnerabilities. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fuzz.d.ts","sourceRoot":"","sources":["../../src/testing/fuzz.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"fuzz.d.ts","sourceRoot":"","sources":["../../src/testing/fuzz.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AAalD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAC;AAC1F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oDAAoD,CAAC;AAChG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAAqB,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAQxE,wMAAwM;AACxM,wBAAsB,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAGjD;AAiBD,qCAAqC;AACrC,MAAM,WAAW,WAAW;IAC1B,4DAA4D;IAC5D,GAAG,CAAC,EAAE,kBAAkB,CAAC;IACzB,oDAAoD;IACpD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAwBD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAErE;AA2HD,mFAAmF;AACnF,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAwDvC,CAAC;AAEX,6EAA6E;AAC7E,wBAAgB,oBAAoB,IAAI,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CA6B5D;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,CAAC,WAAW,CAAC,GAC7B,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAUvC;AA2DD,0DAA0D;AAC1D,MAAM,WAAW,UAAU;IACzB,gFAAgF;IAChF,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACnD,4DAA4D;IAC5D,KAAK,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,sDAAsD;IACtD,kBAAkB,EAAE,OAAO,CAAC;IAC5B,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,QAAQ,CAC5B,GAAG,EAAE,iBAAiB,EACtB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,UAAU,CAAC,CAkGrB;AAMD;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,qBAAqB,EAC1B,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,UAAU,CAAC,CA+ErB;AAMD;;;;;;;;GAQG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,mBAAmB,EACxB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,UAAU,CAAC,CAsErB"}
|
package/dist/testing/fuzz.js
CHANGED
|
@@ -8,9 +8,26 @@
|
|
|
8
8
|
*
|
|
9
9
|
* @module src/testing/fuzz
|
|
10
10
|
*/
|
|
11
|
-
import fc from 'fast-check';
|
|
12
11
|
import { ZodArray, ZodBoolean, ZodDefault, ZodEnum, ZodLiteral, ZodNullable, ZodNumber, ZodOptional, ZodString, ZodUnion, } from 'zod';
|
|
13
12
|
import { createMockContext } from './index.js';
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
// Lazy-loaded peer dependency
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
let _fc;
|
|
17
|
+
/** Eagerly loads the `fast-check` peer dependency. Called automatically by `fuzzTool`/`fuzzResource`/`fuzzPrompt`. Call manually before using `zodToArbitrary` or `adversarialArbitrary` standalone. */
|
|
18
|
+
export async function loadFc() {
|
|
19
|
+
if (!_fc)
|
|
20
|
+
_fc = (await import('fast-check')).default;
|
|
21
|
+
return _fc;
|
|
22
|
+
}
|
|
23
|
+
/** Returns the cached fast-check module. Throws if called before `loadFc()`. */
|
|
24
|
+
function getFc() {
|
|
25
|
+
if (!_fc) {
|
|
26
|
+
throw new Error('fast-check not loaded. Call fuzzTool/fuzzResource/fuzzPrompt first, ' +
|
|
27
|
+
'or `await loadFc()` before using zodToArbitrary/adversarialArbitrary directly.');
|
|
28
|
+
}
|
|
29
|
+
return _fc;
|
|
30
|
+
}
|
|
14
31
|
const DEFAULTS = {
|
|
15
32
|
numRuns: 50,
|
|
16
33
|
numAdversarial: 30,
|
|
@@ -32,22 +49,26 @@ function zodTypeName(schema) {
|
|
|
32
49
|
/**
|
|
33
50
|
* Converts a Zod schema to a fast-check `Arbitrary` that produces valid values.
|
|
34
51
|
* Supports the JSON-Schema-serializable subset used by MCP tool/resource schemas.
|
|
52
|
+
*
|
|
53
|
+
* Requires `fast-check` to be loaded first — call from within a `fuzzTool()`/
|
|
54
|
+
* `fuzzResource()`/`fuzzPrompt()` run, or call `loadFc()` before standalone use.
|
|
35
55
|
*/
|
|
36
56
|
export function zodToArbitrary(schema) {
|
|
37
57
|
return zodNodeToArbitrary(schema, 0);
|
|
38
58
|
}
|
|
39
59
|
function zodNodeToArbitrary(schema, depth) {
|
|
60
|
+
const f = getFc();
|
|
40
61
|
if (depth > 6)
|
|
41
|
-
return
|
|
62
|
+
return f.constant(null);
|
|
42
63
|
// Unwrap wrappers — cast through any to avoid Zod 4 $ZodType vs ZodType mismatch
|
|
43
64
|
if (schema instanceof ZodOptional) {
|
|
44
|
-
return
|
|
65
|
+
return f.option(zodNodeToArbitrary(schema.unwrap(), depth), { nil: undefined });
|
|
45
66
|
}
|
|
46
67
|
if (schema instanceof ZodNullable) {
|
|
47
|
-
return
|
|
68
|
+
return f.option(zodNodeToArbitrary(schema.unwrap(), depth), { nil: null });
|
|
48
69
|
}
|
|
49
70
|
if (schema instanceof ZodDefault) {
|
|
50
|
-
return
|
|
71
|
+
return f.option(zodNodeToArbitrary(schema.removeDefault(), depth), {
|
|
51
72
|
nil: undefined,
|
|
52
73
|
freq: 5,
|
|
53
74
|
});
|
|
@@ -60,68 +81,75 @@ function zodNodeToArbitrary(schema, depth) {
|
|
|
60
81
|
return arbitraryForZodNumber(schema);
|
|
61
82
|
}
|
|
62
83
|
if (schema instanceof ZodBoolean) {
|
|
63
|
-
return
|
|
84
|
+
return f.boolean();
|
|
64
85
|
}
|
|
65
86
|
// Enum / literal
|
|
66
87
|
if (schema instanceof ZodEnum) {
|
|
67
88
|
const values = schema.options;
|
|
68
|
-
return
|
|
89
|
+
return f.constantFrom(...values);
|
|
69
90
|
}
|
|
70
91
|
if (schema instanceof ZodLiteral) {
|
|
71
|
-
return
|
|
92
|
+
return f.constant(schema.value);
|
|
72
93
|
}
|
|
73
94
|
// Array
|
|
74
95
|
if (schema instanceof ZodArray) {
|
|
75
|
-
|
|
96
|
+
const s = schema;
|
|
97
|
+
const minLen = typeof s.minLength === 'number' ? s.minLength : 0;
|
|
98
|
+
return f.array(zodNodeToArbitrary(s.element, depth + 1), {
|
|
99
|
+
minLength: minLen,
|
|
100
|
+
maxLength: Math.max(minLen, 5),
|
|
101
|
+
});
|
|
76
102
|
}
|
|
77
103
|
// Union
|
|
78
104
|
if (schema instanceof ZodUnion) {
|
|
79
105
|
const options = schema._def.options;
|
|
80
|
-
return
|
|
106
|
+
return f.oneof(...options.map((o) => zodNodeToArbitrary(o, depth + 1)));
|
|
81
107
|
}
|
|
82
108
|
// Object — check by _def.type since instanceof ZodObject may have type issues
|
|
83
109
|
if (zodTypeName(schema) === 'object') {
|
|
84
110
|
const shape = schema.shape;
|
|
85
111
|
if (!shape)
|
|
86
|
-
return
|
|
112
|
+
return f.constant({});
|
|
87
113
|
const entries = Object.entries(shape);
|
|
88
114
|
if (entries.length === 0)
|
|
89
|
-
return
|
|
115
|
+
return f.constant({});
|
|
90
116
|
const arbs = {};
|
|
91
117
|
for (const [key, fieldSchema] of entries) {
|
|
92
118
|
arbs[key] = zodNodeToArbitrary(fieldSchema, depth + 1);
|
|
93
119
|
}
|
|
94
|
-
return
|
|
120
|
+
return f.record(arbs);
|
|
95
121
|
}
|
|
96
122
|
// Fallback: generate JSON-safe primitives
|
|
97
|
-
return
|
|
123
|
+
return f.oneof(f.string(), f.integer(), f.boolean(), f.constant(null));
|
|
98
124
|
}
|
|
99
125
|
/**
|
|
100
126
|
* Zod 4 exposes `.minLength`, `.maxLength`, `.format` as direct accessors on ZodString.
|
|
101
127
|
*/
|
|
102
128
|
function arbitraryForZodString(schema) {
|
|
129
|
+
const f = getFc();
|
|
103
130
|
const s = schema;
|
|
104
131
|
const format = s.format;
|
|
105
132
|
if (format === 'email') {
|
|
106
133
|
// fc.emailAddress() can produce emails Zod 4 rejects (e.g. "!a@a.aa").
|
|
107
134
|
// Generate simple, spec-safe emails instead.
|
|
108
|
-
return
|
|
109
|
-
.tuple(
|
|
135
|
+
return f
|
|
136
|
+
.tuple(f.stringMatching(/^[a-z][a-z0-9]{0,10}$/), f.stringMatching(/^[a-z]{2,8}\.[a-z]{2,4}$/))
|
|
110
137
|
.map(([local, domain]) => `${local}@${domain}`);
|
|
111
138
|
}
|
|
112
139
|
if (format === 'url' || format === 'uri')
|
|
113
|
-
return
|
|
140
|
+
return f.webUrl();
|
|
114
141
|
if (format === 'uuid')
|
|
115
|
-
return
|
|
142
|
+
return f.uuid();
|
|
116
143
|
const minLen = typeof s.minLength === 'number' ? s.minLength : 0;
|
|
117
144
|
const maxLen = typeof s.maxLength === 'number' ? s.maxLength : 200;
|
|
118
|
-
return
|
|
145
|
+
return f.string({ minLength: minLen, maxLength: Math.max(minLen, maxLen) });
|
|
119
146
|
}
|
|
120
147
|
/**
|
|
121
148
|
* Zod 4 exposes `.minValue`, `.maxValue`, `.isInt`, `.isFinite` as direct accessors.
|
|
122
149
|
* Zod 4 defaults to `isFinite: true`, rejecting Infinity/NaN — respect that.
|
|
123
150
|
*/
|
|
124
151
|
function arbitraryForZodNumber(schema) {
|
|
152
|
+
const f = getFc();
|
|
125
153
|
const s = schema;
|
|
126
154
|
const isFiniteNum = s.isFinite !== false;
|
|
127
155
|
const rawMin = typeof s.minValue === 'number' ? s.minValue : -1_000_000;
|
|
@@ -130,8 +158,8 @@ function arbitraryForZodNumber(schema) {
|
|
|
130
158
|
const max = isFiniteNum && !Number.isFinite(rawMax) ? 1_000_000 : rawMax;
|
|
131
159
|
const isInt = s.isInt === true;
|
|
132
160
|
return isInt
|
|
133
|
-
?
|
|
134
|
-
:
|
|
161
|
+
? f.integer({ min, max })
|
|
162
|
+
: f.double({ min, max, noNaN: true, noDefaultInfinity: true });
|
|
135
163
|
}
|
|
136
164
|
// ---------------------------------------------------------------------------
|
|
137
165
|
// Adversarial input generators
|
|
@@ -165,9 +193,9 @@ export const ADVERSARIAL_STRINGS = [
|
|
|
165
193
|
// Encoding attacks
|
|
166
194
|
'\0',
|
|
167
195
|
'\x00',
|
|
168
|
-
'
|
|
196
|
+
'',
|
|
169
197
|
'\uD800',
|
|
170
|
-
'
|
|
198
|
+
'',
|
|
171
199
|
// Format string
|
|
172
200
|
'%s%s%s%s%s',
|
|
173
201
|
'%x%x%x%x',
|
|
@@ -196,29 +224,31 @@ export const ADVERSARIAL_STRINGS = [
|
|
|
196
224
|
];
|
|
197
225
|
/** Generates adversarial values for object fields based on expected type. */
|
|
198
226
|
export function adversarialArbitrary() {
|
|
199
|
-
|
|
227
|
+
const f = getFc();
|
|
228
|
+
return f.oneof(
|
|
200
229
|
// Wrong types
|
|
201
|
-
|
|
230
|
+
f.constant(null), f.constant(undefined), f.constant(true), f.constant(false), f.constant(0), f.constant(-1), f.constant(Number.MAX_SAFE_INTEGER), f.constant(Number.MIN_SAFE_INTEGER), f.constant(NaN), f.constant(Infinity), f.constant(-Infinity), f.constant(''), f.constantFrom(...ADVERSARIAL_STRINGS),
|
|
202
231
|
// Arrays where objects expected (and vice versa)
|
|
203
|
-
|
|
232
|
+
f.constant([]), f.constant([1, 2, 3]), f.constant({}),
|
|
204
233
|
// Prototype pollution objects
|
|
205
|
-
|
|
234
|
+
f.constant({ __proto__: { polluted: true } }), f.constant({ constructor: { prototype: { polluted: true } } }),
|
|
206
235
|
// Deeply nested
|
|
207
|
-
|
|
236
|
+
f.constant(buildDeepObject(20)),
|
|
208
237
|
// Circular-safe deep object
|
|
209
|
-
|
|
238
|
+
f.constant(buildWideObject(100)));
|
|
210
239
|
}
|
|
211
240
|
/**
|
|
212
241
|
* Generates an adversarial variant of a Zod object schema's input.
|
|
213
242
|
* Produces objects that match the key structure but have wrong-type values.
|
|
214
243
|
*/
|
|
215
244
|
export function adversarialObjectArbitrary(schema) {
|
|
245
|
+
const f = getFc();
|
|
216
246
|
const shape = schema.shape;
|
|
217
247
|
const keys = shape ? Object.keys(shape) : [];
|
|
218
248
|
if (keys.length === 0) {
|
|
219
249
|
return adversarialArbitrary();
|
|
220
250
|
}
|
|
221
|
-
return
|
|
251
|
+
return f.record(Object.fromEntries(keys.map((k) => [k, adversarialArbitrary()])));
|
|
222
252
|
}
|
|
223
253
|
function buildDeepObject(depth) {
|
|
224
254
|
let obj = { value: 'leaf' };
|
|
@@ -294,6 +324,7 @@ function createProtoPollutionGuard() {
|
|
|
294
324
|
* ```
|
|
295
325
|
*/
|
|
296
326
|
export async function fuzzTool(def, options = {}) {
|
|
327
|
+
const f = await loadFc();
|
|
297
328
|
const numRuns = options.numRuns ?? DEFAULTS.numRuns;
|
|
298
329
|
const numAdversarial = options.numAdversarial ?? DEFAULTS.numAdversarial;
|
|
299
330
|
const timeout = options.timeout ?? DEFAULTS.timeout;
|
|
@@ -308,22 +339,25 @@ export async function fuzzTool(def, options = {}) {
|
|
|
308
339
|
prototypePollution: false,
|
|
309
340
|
};
|
|
310
341
|
const protoGuard = createProtoPollutionGuard();
|
|
311
|
-
// Phase 1: Valid inputs
|
|
342
|
+
// Phase 1: Valid inputs — pre-parse to match production semantics (resolves defaults, enforces constraints)
|
|
312
343
|
const validArb = zodToArbitrary(def.input);
|
|
313
|
-
await
|
|
344
|
+
await f.assert(f.asyncProperty(validArb, async (raw) => {
|
|
314
345
|
report.totalRuns++;
|
|
346
|
+
const parsed = def.input.safeParse(raw);
|
|
347
|
+
if (!parsed.success)
|
|
348
|
+
return;
|
|
315
349
|
const ctx = createMockContext(options.ctx);
|
|
316
350
|
try {
|
|
317
|
-
const result = await withTimeout(def.handler(
|
|
351
|
+
const result = await withTimeout(def.handler(parsed.data, ctx), timeout);
|
|
318
352
|
def.output.parse(result);
|
|
319
353
|
}
|
|
320
354
|
catch (err) {
|
|
321
|
-
report.crashes.push({ input, error: err });
|
|
355
|
+
report.crashes.push({ input: parsed.data, error: err });
|
|
322
356
|
}
|
|
323
357
|
}), fcParams);
|
|
324
358
|
// Phase 2: Adversarial inputs (should be caught by Zod or handler, never crash)
|
|
325
359
|
const advArb = adversarialObjectArbitrary(def.input);
|
|
326
|
-
await
|
|
360
|
+
await f.assert(f.asyncProperty(advArb, async (input) => {
|
|
327
361
|
report.totalRuns++;
|
|
328
362
|
const ctx = createMockContext(options.ctx);
|
|
329
363
|
try {
|
|
@@ -371,8 +405,9 @@ export async function fuzzTool(def, options = {}) {
|
|
|
371
405
|
const controller = new AbortController();
|
|
372
406
|
controller.abort();
|
|
373
407
|
const ctx = createMockContext({ ...options.ctx, signal: controller.signal });
|
|
374
|
-
const
|
|
375
|
-
|
|
408
|
+
const rawSample = generateOne(validArb);
|
|
409
|
+
const parsedSample = def.input.parse(rawSample);
|
|
410
|
+
await withTimeout(def.handler(parsedSample, ctx), timeout);
|
|
376
411
|
}
|
|
377
412
|
catch {
|
|
378
413
|
// Expected
|
|
@@ -393,6 +428,7 @@ export async function fuzzTool(def, options = {}) {
|
|
|
393
428
|
* ```
|
|
394
429
|
*/
|
|
395
430
|
export async function fuzzResource(def, options = {}) {
|
|
431
|
+
const f = await loadFc();
|
|
396
432
|
const numRuns = options.numRuns ?? DEFAULTS.numRuns;
|
|
397
433
|
const numAdversarial = options.numAdversarial ?? DEFAULTS.numAdversarial;
|
|
398
434
|
const timeout = options.timeout ?? DEFAULTS.timeout;
|
|
@@ -409,24 +445,27 @@ export async function fuzzResource(def, options = {}) {
|
|
|
409
445
|
const protoGuard = createProtoPollutionGuard();
|
|
410
446
|
const paramsSchema = def.params;
|
|
411
447
|
if (paramsSchema) {
|
|
412
|
-
// Phase 1: Valid params
|
|
448
|
+
// Phase 1: Valid params — pre-parse to match production semantics
|
|
413
449
|
const validArb = zodToArbitrary(paramsSchema);
|
|
414
|
-
await
|
|
450
|
+
await f.assert(f.asyncProperty(validArb, async (raw) => {
|
|
415
451
|
report.totalRuns++;
|
|
452
|
+
const parsed = paramsSchema.safeParse(raw);
|
|
453
|
+
if (!parsed.success)
|
|
454
|
+
return;
|
|
416
455
|
const ctx = createMockContext({
|
|
417
456
|
...options.ctx,
|
|
418
|
-
uri: new URL(`fuzz://test/${encodeURIComponent(JSON.stringify(
|
|
457
|
+
uri: new URL(`fuzz://test/${encodeURIComponent(JSON.stringify(parsed.data))}`),
|
|
419
458
|
});
|
|
420
459
|
try {
|
|
421
|
-
await withTimeout(def.handler(
|
|
460
|
+
await withTimeout(def.handler(parsed.data, ctx), timeout);
|
|
422
461
|
}
|
|
423
462
|
catch (err) {
|
|
424
|
-
report.crashes.push({ input:
|
|
463
|
+
report.crashes.push({ input: parsed.data, error: err });
|
|
425
464
|
}
|
|
426
465
|
}), fcParams);
|
|
427
466
|
// Phase 2: Adversarial params
|
|
428
467
|
const advArb = adversarialObjectArbitrary(paramsSchema);
|
|
429
|
-
await
|
|
468
|
+
await f.assert(f.asyncProperty(advArb, async (params) => {
|
|
430
469
|
report.totalRuns++;
|
|
431
470
|
const ctx = createMockContext({
|
|
432
471
|
...options.ctx,
|
|
@@ -476,6 +515,7 @@ export async function fuzzResource(def, options = {}) {
|
|
|
476
515
|
* ```
|
|
477
516
|
*/
|
|
478
517
|
export async function fuzzPrompt(def, options = {}) {
|
|
518
|
+
const f = await loadFc();
|
|
479
519
|
const numRuns = options.numRuns ?? DEFAULTS.numRuns;
|
|
480
520
|
const numAdversarial = options.numAdversarial ?? DEFAULTS.numAdversarial;
|
|
481
521
|
const timeout = options.timeout ?? DEFAULTS.timeout;
|
|
@@ -493,23 +533,26 @@ export async function fuzzPrompt(def, options = {}) {
|
|
|
493
533
|
const argsSchema = def.args;
|
|
494
534
|
if (argsSchema) {
|
|
495
535
|
const validArb = zodToArbitrary(argsSchema);
|
|
496
|
-
await
|
|
536
|
+
await f.assert(f.asyncProperty(validArb, async (raw) => {
|
|
497
537
|
report.totalRuns++;
|
|
538
|
+
const parsed = argsSchema.safeParse(raw);
|
|
539
|
+
if (!parsed.success)
|
|
540
|
+
return;
|
|
498
541
|
try {
|
|
499
|
-
const messages = await withTimeout(def.generate(
|
|
542
|
+
const messages = await withTimeout(def.generate(parsed.data), timeout);
|
|
500
543
|
if (!Array.isArray(messages)) {
|
|
501
544
|
report.crashes.push({
|
|
502
|
-
input:
|
|
545
|
+
input: parsed.data,
|
|
503
546
|
error: new Error('generate() did not return array'),
|
|
504
547
|
});
|
|
505
548
|
}
|
|
506
549
|
}
|
|
507
550
|
catch (err) {
|
|
508
|
-
report.crashes.push({ input:
|
|
551
|
+
report.crashes.push({ input: parsed.data, error: err });
|
|
509
552
|
}
|
|
510
553
|
}), fcParams);
|
|
511
554
|
const advArb = adversarialObjectArbitrary(argsSchema);
|
|
512
|
-
await
|
|
555
|
+
await f.assert(f.asyncProperty(advArb, async (args) => {
|
|
513
556
|
report.totalRuns++;
|
|
514
557
|
try {
|
|
515
558
|
const validated = argsSchema.safeParse(args);
|
|
@@ -547,8 +590,9 @@ function withTimeout(promise, ms) {
|
|
|
547
590
|
]);
|
|
548
591
|
}
|
|
549
592
|
function generateOne(arb) {
|
|
593
|
+
const f = getFc();
|
|
550
594
|
let value;
|
|
551
|
-
|
|
595
|
+
f.assert(f.property(arb, (v) => {
|
|
552
596
|
value = v;
|
|
553
597
|
return false; // Stop after first
|
|
554
598
|
}), { numRuns: 1, endOnFailure: true });
|
package/dist/testing/fuzz.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fuzz.js","sourceRoot":"","sources":["../../src/testing/fuzz.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fuzz.js","sourceRoot":"","sources":["../../src/testing/fuzz.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EACL,QAAQ,EACR,UAAU,EACV,UAAU,EACV,OAAO,EACP,UAAU,EACV,WAAW,EACX,SAAS,EACT,WAAW,EACX,SAAS,EACT,QAAQ,GACT,MAAM,KAAK,CAAC;AAIb,OAAO,EAAE,iBAAiB,EAA2B,MAAM,YAAY,CAAC;AAExE,8EAA8E;AAC9E,8BAA8B;AAC9B,8EAA8E;AAE9E,IAAI,GAA0B,CAAC;AAE/B,wMAAwM;AACxM,MAAM,CAAC,KAAK,UAAU,MAAM;IAC1B,IAAI,CAAC,GAAG;QAAE,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC;IACrD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,gFAAgF;AAChF,SAAS,KAAK;IACZ,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,sEAAsE;YACpE,gFAAgF,CACnF,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAoBD,MAAM,QAAQ,GAAG;IACf,OAAO,EAAE,EAAE;IACX,cAAc,EAAE,EAAE;IAClB,OAAO,EAAE,IAAI;CACL,CAAC;AAEX,8EAA8E;AAC9E,4CAA4C;AAC5C,8EAA8E;AAE9E;;;GAGG;AACH,SAAS,WAAW,CAAC,MAAe;IAClC,OAAQ,MAAc,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;AAC3C,CAAC;AAED,8EAA8E;AAC9E,wCAAwC;AACxC,8EAA8E;AAE9E;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,MAAe;IAC5C,OAAO,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAe,EAAE,KAAa;IACxD,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;IAClB,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEvC,iFAAiF;IACjF,IAAI,MAAM,YAAY,WAAW,EAAE,CAAC;QAClC,OAAO,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAE,MAAc,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,MAAM,YAAY,WAAW,EAAE,CAAC;QAClC,OAAO,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAE,MAAc,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IACtF,CAAC;IACD,IAAI,MAAM,YAAY,UAAU,EAAE,CAAC;QACjC,OAAO,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAE,MAAc,CAAC,aAAa,EAAE,EAAE,KAAK,CAAC,EAAE;YAC1E,GAAG,EAAE,SAAS;YACd,IAAI,EAAE,CAAC;SACR,CAAC,CAAC;IACL,CAAC;IAED,aAAa;IACb,IAAI,MAAM,YAAY,SAAS,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE,CAAC;QACpE,OAAO,qBAAqB,CAAC,MAAmB,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,MAAM,YAAY,SAAS,EAAE,CAAC;QAChC,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,MAAM,YAAY,UAAU,EAAE,CAAC;QACjC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;IAED,iBAAiB;IACjB,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAI,MAAc,CAAC,OAAoB,CAAC;QACpD,OAAO,CAAC,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,MAAM,YAAY,UAAU,EAAE,CAAC;QACjC,OAAO,CAAC,CAAC,QAAQ,CAAE,MAAc,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,QAAQ;IACR,IAAI,MAAM,YAAY,QAAQ,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAG,MAAa,CAAC;QACxB,MAAM,MAAM,GAAW,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,OAAO,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE;YACvD,SAAS,EAAE,MAAM;YACjB,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;SAC/B,CAAC,CAAC;IACL,CAAC;IAED,QAAQ;IACR,IAAI,MAAM,YAAY,QAAQ,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAI,MAAc,CAAC,IAAI,CAAC,OAAoB,CAAC;QAC1D,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,8EAA8E;IAC9E,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE,CAAC;QACrC,MAAM,KAAK,GAAI,MAAc,CAAC,KAA4C,CAAC;QAC3E,IAAI,CAAC,KAAK;YAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAEhD,MAAM,IAAI,GAA0C,EAAE,CAAC;QACvD,KAAK,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,OAAO,EAAE,CAAC;YACzC,IAAI,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,0CAA0C;IAC1C,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACzE,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,MAAiB;IAC9C,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;IAClB,MAAM,CAAC,GAAG,MAAa,CAAC;IACxB,MAAM,MAAM,GAAuB,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACvB,uEAAuE;QACvE,6CAA6C;QAC7C,OAAO,CAAC;aACL,KAAK,CACJ,CAAC,CAAC,cAAc,CAAC,uBAAuB,CAAC,EACzC,CAAC,CAAC,cAAc,CAAC,0BAA0B,CAAC,CAC7C;aACA,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,KAAK;QAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5D,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAEvC,MAAM,MAAM,GAAW,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,MAAM,MAAM,GAAW,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;IAE3E,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAAC,MAAiB;IAC9C,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;IAClB,MAAM,CAAC,GAAG,MAAa,CAAC;IACxB,MAAM,WAAW,GAAY,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC;IAClD,MAAM,MAAM,GAAW,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChF,MAAM,MAAM,GAAW,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/E,MAAM,GAAG,GAAG,WAAW,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IAC1E,MAAM,GAAG,GAAG,WAAW,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IACzE,MAAM,KAAK,GAAY,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC;IAExC,OAAO,KAAK;QACV,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;AACnE,CAAC;AAED,8EAA8E;AAC9E,+BAA+B;AAC/B,8EAA8E;AAE9E,mFAAmF;AACnF,MAAM,CAAC,MAAM,mBAAmB,GAAsB;IACpD,sBAAsB;IACtB,WAAW;IACX,aAAa;IACb,WAAW;IACX,iCAAiC;IACjC,iDAAiD;IACjD,mBAAmB;IACnB,2BAA2B;IAC3B,8BAA8B;IAC9B,qBAAqB;IACrB,uBAAuB;IACvB,gBAAgB;IAChB,yBAAyB;IACzB,aAAa;IACb,4CAA4C;IAC5C,oBAAoB;IACpB,YAAY;IACZ,oBAAoB;IACpB,UAAU;IACV,UAAU;IACV,iBAAiB;IACjB,qBAAqB;IACrB,4CAA4C;IAC5C,oBAAoB;IACpB,mBAAmB;IACnB,IAAI;IACJ,MAAM;IACN,GAAG;IACH,QAAQ;IACR,IAAI;IACJ,gBAAgB;IAChB,YAAY;IACZ,UAAU;IACV,UAAU;IACV,YAAY;IACZ,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;IAClB,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;IACnB,qBAAqB;IACrB,SAAS;IACT,gFAAgF;IAChF,QAAQ;IACR,QAAQ;IACR,kBAAkB;IAClB,kDAAkD;IAClD,IAAI;IACJ,MAAM;IACN,WAAW;IACX,KAAK;IACL,UAAU;IACV,WAAW;IACX,EAAE;IACF,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,MAAM;CACE,CAAC;AAEX,6EAA6E;AAC7E,MAAM,UAAU,oBAAoB;IAClC,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;IAClB,OAAO,CAAC,CAAC,KAAK;IACZ,cAAc;IACd,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAChB,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EACrB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAChB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EACjB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EACb,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EACd,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,EACnC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,EACnC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EACf,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EACpB,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,EACrB,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EACd,CAAC,CAAC,YAAY,CAAC,GAAG,mBAAmB,CAAC;IACtC,iDAAiD;IACjD,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EACd,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EACrB,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;IACd,8BAA8B;IAC9B,CAAC,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,EAC7C,CAAC,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAC9D,gBAAgB;IAChB,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IAC/B,4BAA4B;IAC5B,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CACjC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CACxC,MAA8B;IAE9B,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;IAClB,MAAM,KAAK,GAAI,MAAc,CAAC,KAA4C,CAAC;IAC3E,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE7C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,oBAAoB,EAA2C,CAAC;IACzE,CAAC;IAED,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACpF,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,IAAI,GAAG,GAA4B,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACrD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,GAAG,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IACxB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC;IACjC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,SAAS,eAAe,CAAC,SAAiB;IACxC,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxF,MAAM,eAAe,GACnB,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;QAC9B,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;QAC3B,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;QAC1B,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;AAC1C,CAAC;AAED,8EAA8E;AAC9E,gCAAgC;AAChC,8EAA8E;AAE9E,2FAA2F;AAC3F,SAAS,yBAAyB;IAIhC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IACtD,OAAO;QACL,MAAM;QACN,KAAK,CAAC,MAAkB;YACtB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;gBAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBACrB,MAAM,CAAC,kBAAkB,GAAG,IAAI,CAAC;oBACjC,OAAQ,MAAM,CAAC,SAAiB,CAAC,GAAG,CAAC,CAAC;gBACxC,CAAC;YACH,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAkBD,8EAA8E;AAC9E,WAAW;AACX,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,GAAsB,EACtB,UAAuB,EAAE;IAEzB,MAAM,CAAC,GAAG,MAAM,MAAM,EAAE,CAAC;IACzB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC;IACpD,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,QAAQ,CAAC,cAAc,CAAC;IACzE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC;IACpD,MAAM,QAAQ,GAA2B;QACvC,OAAO;QACP,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;KAC1D,CAAC;IAEF,MAAM,MAAM,GAAe;QACzB,SAAS,EAAE,CAAC;QACZ,OAAO,EAAE,EAAE;QACX,KAAK,EAAE,EAAE;QACT,kBAAkB,EAAE,KAAK;KAC1B,CAAC;IAEF,MAAM,UAAU,GAAG,yBAAyB,EAAE,CAAC;IAE/C,4GAA4G;IAC5G,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAA0C,CAAC;IACpF,MAAM,CAAC,CAAC,MAAM,CACZ,CAAC,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACtC,MAAM,CAAC,SAAS,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO;QAC5B,MAAM,GAAG,GAAG,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;YACzE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC,CAAC,EACF,QAAQ,CACT,CAAC;IAEF,gFAAgF;IAChF,MAAM,MAAM,GAAG,0BAA0B,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACrD,MAAM,CAAC,CAAC,MAAM,CACZ,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QACtC,MAAM,CAAC,SAAS,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC7C,IAAI,CAAC,SAAS,CAAC,OAAO;gBAAE,OAAO;YAC/B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;YAC5E,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;YACvC,IAAI,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,eAAe,EAAE,CAAC;gBACvD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC,CAAC,EACF,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,CACzC,CAAC;IAEF,qEAAqE;IACrE,MAAM,cAAc,GAAc;QAChC,IAAI;QACJ,SAAS;QACT,EAAE;QACF,QAAQ;QACR,IAAI;QACJ,EAAE;QACF,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;QACjC,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE;KACnD,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;QACnC,MAAM,CAAC,SAAS,EAAE,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC7C,IAAI,CAAC,SAAS,CAAC,OAAO;gBAAE,SAAS;YACjC,MAAM,GAAG,GAAG,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC3C,MAAM,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;QAC/D,CAAC;QAAC,MAAM,CAAC;YACP,WAAW;QACb,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,MAAM,CAAC,SAAS,EAAE,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,UAAU,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,iBAAiB,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7E,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAChD,MAAM,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,WAAW;IACb,CAAC;IAED,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,GAA0B,EAC1B,UAAuB,EAAE;IAEzB,MAAM,CAAC,GAAG,MAAM,MAAM,EAAE,CAAC;IACzB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC;IACpD,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,QAAQ,CAAC,cAAc,CAAC;IACzE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC;IACpD,MAAM,QAAQ,GAA2B;QACvC,OAAO;QACP,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;KAC1D,CAAC;IAEF,MAAM,MAAM,GAAe;QACzB,SAAS,EAAE,CAAC;QACZ,OAAO,EAAE,EAAE;QACX,KAAK,EAAE,EAAE;QACT,kBAAkB,EAAE,KAAK;KAC1B,CAAC;IAEF,MAAM,UAAU,GAAG,yBAAyB,EAAE,CAAC;IAC/C,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC;IAEhC,IAAI,YAAY,EAAE,CAAC;QACjB,kEAAkE;QAClE,MAAM,QAAQ,GAAG,cAAc,CAAC,YAAY,CAA0C,CAAC;QACvF,MAAM,CAAC,CAAC,MAAM,CACZ,CAAC,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YACtC,MAAM,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO;YAC5B,MAAM,GAAG,GAAG,iBAAiB,CAAC;gBAC5B,GAAG,OAAO,CAAC,GAAG;gBACd,GAAG,EAAE,IAAI,GAAG,CAAC,eAAe,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;aAC/E,CAAC,CAAC;YACH,IAAI,CAAC;gBACH,MAAM,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;YAC5D,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC,CAAC,EACF,QAAQ,CACT,CAAC;QAEF,8BAA8B;QAC9B,MAAM,MAAM,GAAG,0BAA0B,CAAC,YAAY,CAAC,CAAC;QACxD,MAAM,CAAC,CAAC,MAAM,CACZ,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACvC,MAAM,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,GAAG,GAAG,iBAAiB,CAAC;gBAC5B,GAAG,OAAO,CAAC,GAAG;gBACd,GAAG,EAAE,IAAI,GAAG,CAAC,yBAAyB,CAAC;aACxC,CAAC,CAAC;YACH,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACjD,IAAI,CAAC,SAAS,CAAC,OAAO;oBAAE,OAAO;gBAC/B,MAAM,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;YAC/D,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;gBACvC,IAAI,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,eAAe,EAAE,CAAC;oBACvD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC;QACH,CAAC,CAAC,EACF,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,CACzC,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,SAAS,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,iBAAiB,CAAC;YAC5B,GAAG,OAAO,CAAC,GAAG;YACd,GAAG,EAAE,IAAI,GAAG,CAAC,uBAAuB,CAAC;SACtC,CAAC,CAAC;QACH,IAAI,CAAC;YACH,MAAM,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,GAAwB,EACxB,UAAuB,EAAE;IAEzB,MAAM,CAAC,GAAG,MAAM,MAAM,EAAE,CAAC;IACzB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC;IACpD,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,QAAQ,CAAC,cAAc,CAAC;IACzE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC;IACpD,MAAM,QAAQ,GAA2B;QACvC,OAAO;QACP,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;KAC1D,CAAC;IAEF,MAAM,MAAM,GAAe;QACzB,SAAS,EAAE,CAAC;QACZ,OAAO,EAAE,EAAE;QACX,KAAK,EAAE,EAAE;QACT,kBAAkB,EAAE,KAAK;KAC1B,CAAC;IAEF,MAAM,UAAU,GAAG,yBAAyB,EAAE,CAAC;IAC/C,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC;IAE5B,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,QAAQ,GAAG,cAAc,CAAC,UAAU,CAAyC,CAAC;QACpF,MAAM,CAAC,CAAC,MAAM,CACZ,CAAC,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YACtC,MAAM,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO;YAC5B,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;gBACvE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC7B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;wBAClB,KAAK,EAAE,MAAM,CAAC,IAAI;wBAClB,KAAK,EAAE,IAAI,KAAK,CAAC,iCAAiC,CAAC;qBACpD,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC,CAAC,EACF,QAAQ,CACT,CAAC;QAEF,MAAM,MAAM,GAAG,0BAA0B,CAAC,UAAU,CAAC,CAAC;QACtD,MAAM,CAAC,CAAC,MAAM,CACZ,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACrC,MAAM,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC7C,IAAI,CAAC,SAAS,CAAC,OAAO;oBAAE,OAAO;gBAC/B,MAAM,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;YAC3D,CAAC;YAAC,MAAM,CAAC;gBACP,WAAW;YACb,CAAC;QACH,CAAC,CAAC,EACF,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,CACzC,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,SAAS,EAAE,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAS,CAAC,EAAE,OAAO,CAAC,CAAC;YACrE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,iCAAiC,CAAC,EAAE,CAAC,CAAC;YAC1F,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,SAAS,WAAW,CAAI,OAAuB,EAAE,EAAU;IACzD,OAAO,OAAO,CAAC,IAAI,CAAC;QAClB,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;QACxB,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAC/B,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CACtE;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAI,GAAoB;IAC1C,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;IAClB,IAAI,KAAoB,CAAC;IACzB,CAAC,CAAC,MAAM,CACN,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE;QACpB,KAAK,GAAG,CAAC,CAAC;QACV,OAAO,KAAK,CAAC,CAAC,mBAAmB;IACnC,CAAC,CAAC,EACF,EAAE,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CACnC,CAAC;IACF,yFAAyF;IACzF,OAAO,KAAM,CAAC;AAChB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyanheads/mcp-ts-core",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.9",
|
|
4
4
|
"mcpName": "io.github.cyanheads/mcp-ts-core",
|
|
5
5
|
"description": "Agent-native TypeScript framework for building MCP servers. Declarative definitions with auth, multi-backend storage, OpenTelemetry, and first-class support for Bun/Node/Cloudflare Workers.",
|
|
6
6
|
"main": "dist/core/index.js",
|
|
@@ -18,7 +18,6 @@
|
|
|
18
18
|
"scripts/lint-mcp.ts",
|
|
19
19
|
"scripts/lint-packaging.ts",
|
|
20
20
|
"scripts/list-skills.ts",
|
|
21
|
-
"scripts/split-changelog.ts",
|
|
22
21
|
"scripts/tree.ts",
|
|
23
22
|
"skills/",
|
|
24
23
|
"templates/",
|
|
@@ -198,7 +197,6 @@
|
|
|
198
197
|
"depcheck": "^1.4.7",
|
|
199
198
|
"diff": "^9.0.0",
|
|
200
199
|
"execa": "^9.6.1",
|
|
201
|
-
"fast-check": "^4.8.0",
|
|
202
200
|
"fast-xml-parser": "^5.8.0",
|
|
203
201
|
"ignore": "^7.0.5",
|
|
204
202
|
"js-yaml": "^4.1.1",
|
|
@@ -295,6 +293,7 @@
|
|
|
295
293
|
"chrono-node": "^2.9.0",
|
|
296
294
|
"defuddle": "^0.18.1",
|
|
297
295
|
"diff": "latest",
|
|
296
|
+
"fast-check": "^4.8.0",
|
|
298
297
|
"fast-xml-parser": "^5.8.0",
|
|
299
298
|
"js-yaml": "^4.1.1",
|
|
300
299
|
"linkedom": "^0.18.12",
|
|
@@ -354,6 +353,9 @@
|
|
|
354
353
|
"diff": {
|
|
355
354
|
"optional": true
|
|
356
355
|
},
|
|
356
|
+
"fast-check": {
|
|
357
|
+
"optional": true
|
|
358
|
+
},
|
|
357
359
|
"fast-xml-parser": {
|
|
358
360
|
"optional": true
|
|
359
361
|
},
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* @fileoverview Guards
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
3
|
+
* @fileoverview Guards against three SDK-coupling antipatterns. Scans `src/`
|
|
4
|
+
* via `git grep` — all rules target framework-internal paths. Shipped to
|
|
5
|
+
* consumers via `package.json` `files:` because `devcheck` invokes it; in
|
|
6
|
+
* consumer projects the scanned paths (`src/mcp-server/tools/`,
|
|
7
|
+
* `src/mcp-server/transports/`) either don't exist or contain consumer code
|
|
8
|
+
* that follows different conventions, so the script exits cleanly with 0
|
|
9
|
+
* findings. Defense-in-depth: harmless when nothing matches, catches real
|
|
10
|
+
* regressions in the framework.
|
|
7
11
|
*
|
|
8
12
|
* Rules:
|
|
9
13
|
* 1. Framework must not downgrade the Zod `inputSchema` passed to
|
|
@@ -4,7 +4,7 @@ description: >
|
|
|
4
4
|
Ship a release end-to-end across every registry the project targets (npm, MCP Registry, GitHub Releases for `.mcpb` bundles, GHCR). Runs the final verification gate, pushes commits and tags, then publishes to each applicable destination. Assumes git wrapup (version bumps, changelog, commit, annotated tag) is already complete — this skill is the post-wrapup publish workflow. Retries transient network failures on publish steps; halts with a partial-state report when retries are exhausted or the failure is terminal.
|
|
5
5
|
metadata:
|
|
6
6
|
author: cyanheads
|
|
7
|
-
version: "2.
|
|
7
|
+
version: "2.6"
|
|
8
8
|
audience: external
|
|
9
9
|
type: workflow
|
|
10
10
|
---
|
|
@@ -178,7 +178,7 @@ If the project uses a non-GHCR registry or a custom image name, respect the proj
|
|
|
178
178
|
Print clickable URLs for every destination that succeeded:
|
|
179
179
|
|
|
180
180
|
- npm: `https://www.npmjs.com/package/<package.json#name>/v/<version>`
|
|
181
|
-
- MCP Registry: `https://registry.modelcontextprotocol.io/v0/servers
|
|
181
|
+
- MCP Registry: `https://registry.modelcontextprotocol.io/v0.1/servers/<mcpName>/versions/<version>` — `mcpName` is the `name` field from `server.json` (URL-encode the `/` as `%2F`)
|
|
182
182
|
- GitHub Release: `https://github.com/<OWNER>/<REPO>/releases/tag/v<VERSION>` (with `.mcpb` asset attached)
|
|
183
183
|
- GHCR: `ghcr.io/<OWNER>/<REPO>:<VERSION>`
|
|
184
184
|
|
|
@@ -189,7 +189,7 @@ Skip any destination that was skipped in its step.
|
|
|
189
189
|
Confirm each published artifact is actually live — don't rely on a successful push exit code alone. For each destination that succeeded:
|
|
190
190
|
|
|
191
191
|
- **npm**: `npm view <package.json#name>@<version> version` — must return the version string
|
|
192
|
-
- **MCP Registry**: `curl -s "https://registry.modelcontextprotocol.io/v0/servers
|
|
192
|
+
- **MCP Registry**: `curl -s "https://registry.modelcontextprotocol.io/v0.1/servers/<mcpName>/versions/<version>"` — must return HTTP 200 with `server.version` matching `<version>` (`mcpName` is the `name` field from `server.json`; URL-encode `/` as `%2F`). The search endpoint (`/v0.1/servers?search=`) paginates and may not include the latest version for packages with many releases — always use the direct version lookup.
|
|
193
193
|
- **GitHub Release**: `gh release view v<VERSION> -R <OWNER>/<REPO> --json assets --jq '.assets[].name'` — must list the `.mcpb` file
|
|
194
194
|
- **GHCR**: fetch an anonymous bearer token, then `curl -s -o /dev/null -w "%{http_code}" -H "Authorization: Bearer $TOKEN" "https://ghcr.io/v2/<OWNER>/<REPO>/manifests/<VERSION>"` — must return HTTP 200
|
|
195
195
|
|
package/templates/CLAUDE.md
CHANGED
|
@@ -50,6 +50,7 @@ Tailor suggestions to what's actually missing or stale — don't recite the full
|
|
|
50
50
|
- **Use `ctx.state`** for tenant-scoped storage. Never access persistence directly.
|
|
51
51
|
- **Check `ctx.elicit` / `ctx.sample`** for presence before calling.
|
|
52
52
|
- **Secrets in env vars only** — never hardcoded.
|
|
53
|
+
- **Close the loop on issues.** When implementing work tracked by a GitHub issue, comment on the issue with what landed before moving on. The comment is for future readers — state the concrete changes, not the conversation that produced them.
|
|
53
54
|
|
|
54
55
|
---
|
|
55
56
|
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* @fileoverview One-shot migration: split the monolithic CHANGELOG.md into
|
|
4
|
-
* per-version files under `changelog/<major.minor>.x/<version>.md`.
|
|
5
|
-
*
|
|
6
|
-
* After the initial migration, this script is no longer needed — the
|
|
7
|
-
* per-version files become the source of truth and `scripts/build-changelog.ts`
|
|
8
|
-
* regenerates CHANGELOG.md from them. Keep this around only long enough to
|
|
9
|
-
* verify the round-trip (split → build → diff).
|
|
10
|
-
*
|
|
11
|
-
* Behavior:
|
|
12
|
-
* • Reads CHANGELOG.md, splits on `## [X.Y.Z] - YYYY-MM-DD` headers
|
|
13
|
-
* • Groups by minor series: 0.1.4 → changelog/0.1.x/0.1.4.md
|
|
14
|
-
* • Writes each version block with an H1 heading
|
|
15
|
-
* • Creates changelog/template.md template if missing
|
|
16
|
-
* • Overwrites existing per-version files (idempotent)
|
|
17
|
-
* • Drops the preamble (title + description) — that's handled by the build script
|
|
18
|
-
*
|
|
19
|
-
* Usage: bun run scripts/split-changelog.ts
|
|
20
|
-
*
|
|
21
|
-
* @module scripts/split-changelog
|
|
22
|
-
*/
|
|
23
|
-
|
|
24
|
-
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
25
|
-
import { resolve } from 'node:path';
|
|
26
|
-
|
|
27
|
-
const CHANGELOG_PATH = resolve('CHANGELOG.md');
|
|
28
|
-
const CHANGELOG_DIR = resolve('changelog');
|
|
29
|
-
const TEMPLATE_PATH = resolve(CHANGELOG_DIR, 'template.md');
|
|
30
|
-
|
|
31
|
-
const TEMPLATE_CONTENT = `# <version> — YYYY-MM-DD
|
|
32
|
-
|
|
33
|
-
<!-- Brief summary of the upcoming release — delete this comment when filled in. -->
|
|
34
|
-
|
|
35
|
-
## Added
|
|
36
|
-
|
|
37
|
-
-
|
|
38
|
-
|
|
39
|
-
## Changed
|
|
40
|
-
|
|
41
|
-
-
|
|
42
|
-
|
|
43
|
-
## Fixed
|
|
44
|
-
|
|
45
|
-
-
|
|
46
|
-
`;
|
|
47
|
-
|
|
48
|
-
interface Section {
|
|
49
|
-
body: string;
|
|
50
|
-
date: string;
|
|
51
|
-
version: string;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
function extractSections(content: string): Section[] {
|
|
55
|
-
const regex = /^## \[([^\]]+)\] - (\d{4}-\d{2}-\d{2})$/gm;
|
|
56
|
-
const matches = [...content.matchAll(regex)];
|
|
57
|
-
if (matches.length === 0) {
|
|
58
|
-
throw new Error('No version sections found in CHANGELOG.md (expected ## [X.Y.Z] - YYYY-MM-DD)');
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
const sections: Section[] = [];
|
|
62
|
-
for (let i = 0; i < matches.length; i++) {
|
|
63
|
-
const match = matches[i] as RegExpMatchArray & { index: number };
|
|
64
|
-
const next = matches[i + 1] as (RegExpMatchArray & { index: number }) | undefined;
|
|
65
|
-
const start = match.index + match[0].length;
|
|
66
|
-
const end = next ? next.index : content.length;
|
|
67
|
-
|
|
68
|
-
let body = content.slice(start, end);
|
|
69
|
-
body = body.replace(/^\n+/, '');
|
|
70
|
-
body = body.replace(/\n+---\n*$/, '\n');
|
|
71
|
-
body = body.replace(/\n*$/, '\n');
|
|
72
|
-
|
|
73
|
-
sections.push({
|
|
74
|
-
version: match[1] as string,
|
|
75
|
-
date: match[2] as string,
|
|
76
|
-
body,
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
return sections;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* Promote heading levels by stripping one `#` from H2+ lines. Assumes no H1
|
|
84
|
-
* or H2 in section bodies (the version H2 was already stripped); the existing
|
|
85
|
-
* CHANGELOG.md uses H3 for Added/Changed/Fixed etc., which become H2 here.
|
|
86
|
-
*/
|
|
87
|
-
function promoteHeadings(body: string): string {
|
|
88
|
-
return body.replace(/^(#{2,6}) /gm, (_, hashes: string) => `${hashes.slice(1)} `);
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
function toPerVersionFile(section: Section): string {
|
|
92
|
-
return `# ${section.version} — ${section.date}\n\n${promoteHeadings(section.body)}`;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/** Extract the `major.minor.x` series directory for a version string. */
|
|
96
|
-
function seriesOf(version: string): string {
|
|
97
|
-
const [major, minor] = version.split('.');
|
|
98
|
-
if (!major || !minor) throw new Error(`Cannot derive series from version: ${version}`);
|
|
99
|
-
return `${major}.${minor}.x`;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
function main(): void {
|
|
103
|
-
const content = readFileSync(CHANGELOG_PATH, 'utf-8');
|
|
104
|
-
const sections = extractSections(content);
|
|
105
|
-
|
|
106
|
-
mkdirSync(CHANGELOG_DIR, { recursive: true });
|
|
107
|
-
|
|
108
|
-
const seriesCounts = new Map<string, number>();
|
|
109
|
-
|
|
110
|
-
for (const section of sections) {
|
|
111
|
-
const series = seriesOf(section.version);
|
|
112
|
-
const seriesDir = resolve(CHANGELOG_DIR, series);
|
|
113
|
-
mkdirSync(seriesDir, { recursive: true });
|
|
114
|
-
const path = resolve(seriesDir, `${section.version}.md`);
|
|
115
|
-
writeFileSync(path, toPerVersionFile(section));
|
|
116
|
-
seriesCounts.set(series, (seriesCounts.get(series) ?? 0) + 1);
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
for (const [series, count] of [...seriesCounts.entries()].sort()) {
|
|
120
|
-
console.log(` + changelog/${series}/ (${count} file${count === 1 ? '' : 's'})`);
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
if (!existsSync(TEMPLATE_PATH)) {
|
|
124
|
-
writeFileSync(TEMPLATE_PATH, TEMPLATE_CONTENT);
|
|
125
|
-
console.log(' + changelog/template.md (format reference)');
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
console.log(`\nSplit ${sections.length} versions into ${seriesCounts.size} series.`);
|
|
129
|
-
console.log('Next: `bun run scripts/build-changelog.ts` to regenerate CHANGELOG.md,');
|
|
130
|
-
console.log(' then `diff` against the original to verify byte-equality.');
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
main();
|