@cyanheads/mcp-ts-core 0.11.3 → 0.11.4

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 (58) hide show
  1. package/AGENTS.md +1 -1
  2. package/CLAUDE.md +1 -1
  3. package/README.md +1 -1
  4. package/changelog/0.11.x/0.11.4.md +67 -0
  5. package/dist/linter/rules/enrichment-rules.d.ts +3 -2
  6. package/dist/linter/rules/enrichment-rules.d.ts.map +1 -1
  7. package/dist/linter/rules/enrichment-rules.js +35 -7
  8. package/dist/linter/rules/enrichment-rules.js.map +1 -1
  9. package/dist/linter/rules/format-parity-rules.d.ts +8 -4
  10. package/dist/linter/rules/format-parity-rules.d.ts.map +1 -1
  11. package/dist/linter/rules/format-parity-rules.js +72 -20
  12. package/dist/linter/rules/format-parity-rules.js.map +1 -1
  13. package/dist/linter/rules/index.d.ts +1 -1
  14. package/dist/linter/rules/index.d.ts.map +1 -1
  15. package/dist/linter/rules/index.js +1 -1
  16. package/dist/linter/rules/index.js.map +1 -1
  17. package/dist/linter/rules/prompt-rules.d.ts.map +1 -1
  18. package/dist/linter/rules/prompt-rules.js +6 -3
  19. package/dist/linter/rules/prompt-rules.js.map +1 -1
  20. package/dist/linter/rules/resource-rules.d.ts.map +1 -1
  21. package/dist/linter/rules/resource-rules.js +11 -5
  22. package/dist/linter/rules/resource-rules.js.map +1 -1
  23. package/dist/linter/rules/schema-rules.d.ts +21 -2
  24. package/dist/linter/rules/schema-rules.d.ts.map +1 -1
  25. package/dist/linter/rules/schema-rules.js +110 -2
  26. package/dist/linter/rules/schema-rules.js.map +1 -1
  27. package/dist/linter/rules/tool-rules.d.ts.map +1 -1
  28. package/dist/linter/rules/tool-rules.js +11 -5
  29. package/dist/linter/rules/tool-rules.js.map +1 -1
  30. package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts.map +1 -1
  31. package/dist/mcp-server/tools/utils/toolHandlerFactory.js +44 -10
  32. package/dist/mcp-server/tools/utils/toolHandlerFactory.js.map +1 -1
  33. package/dist/testing/fuzz.d.ts.map +1 -1
  34. package/dist/testing/fuzz.js +57 -2
  35. package/dist/testing/fuzz.js.map +1 -1
  36. package/dist/utils/overflow/outlineOnOverflow.d.ts +4 -3
  37. package/dist/utils/overflow/outlineOnOverflow.d.ts.map +1 -1
  38. package/dist/utils/overflow/outlineOnOverflow.js +27 -8
  39. package/dist/utils/overflow/outlineOnOverflow.js.map +1 -1
  40. package/package.json +1 -1
  41. package/scripts/tree.ts +9 -3
  42. package/skills/api-context/SKILL.md +2 -1
  43. package/skills/api-linter/SKILL.md +59 -5
  44. package/skills/api-testing/SKILL.md +3 -1
  45. package/skills/setup/SKILL.md +6 -3
  46. package/skills/techniques/SKILL.md +1 -1
  47. package/skills/techniques/references/outline-on-overflow.md +3 -1
  48. package/templates/Dockerfile +7 -2
  49. package/templates/_tsconfig.build.json +5 -0
  50. package/templates/_tsconfig.json +4 -2
  51. package/templates/package.json +1 -0
  52. package/templates/tests/prompts/echo.prompt.test.ts +4 -3
  53. package/templates/tests/resources/echo.resource.test.ts +11 -3
  54. package/templates/tests/smoke/definitions.smoke.test.ts +8 -4
  55. package/templates/tests/tools/echo.tool.test.ts +23 -4
  56. package/dist/logs/combined.log +0 -16
  57. package/dist/logs/error.log +0 -12
  58. package/dist/logs/interactions.log +0 -0
package/AGENTS.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Developer Protocol
2
2
 
3
3
  **Package:** `@cyanheads/mcp-ts-core`
4
- **Version:** 0.11.3
4
+ **Version:** 0.11.4
5
5
  **Engines:** Bun ≥1.3.0, Node ≥24.0.0
6
6
  **MCP SDK:** `@modelcontextprotocol/sdk` ^1.30.0
7
7
  **Zod:** ^4.4.3
package/CLAUDE.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Developer Protocol
2
2
 
3
3
  **Package:** `@cyanheads/mcp-ts-core`
4
- **Version:** 0.11.3
4
+ **Version:** 0.11.4
5
5
  **Engines:** Bun ≥1.3.0, Node ≥24.0.0
6
6
  **MCP SDK:** `@modelcontextprotocol/sdk` ^1.30.0
7
7
  **Zod:** ^4.4.3
package/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  <div align="center">
7
7
 
8
- [![Version](https://img.shields.io/badge/Version-0.11.3-blue.svg?style=flat-square)](./CHANGELOG.md) [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](./LICENSE) [![MCP Spec](https://img.shields.io/badge/MCP%20Spec-2025--11--25-8A2BE2.svg?style=flat-square)](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/main/docs/specification/2025-11-25/changelog.mdx)
8
+ [![Version](https://img.shields.io/badge/Version-0.11.4-blue.svg?style=flat-square)](./CHANGELOG.md) [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](./LICENSE) [![MCP Spec](https://img.shields.io/badge/MCP%20Spec-2025--11--25-8A2BE2.svg?style=flat-square)](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/main/docs/specification/2025-11-25/changelog.mdx)
9
9
 
10
10
  [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-^1.30.0-green.svg?style=flat-square)](https://modelcontextprotocol.io/) [![TypeScript](https://img.shields.io/badge/TypeScript-^7.0.2-3178C6.svg?style=flat-square)](https://www.typescriptlang.org/) [![Bun](https://img.shields.io/badge/Bun-v1.3.0%2B-blueviolet.svg?style=flat-square)](https://bun.sh/)
11
11
 
@@ -0,0 +1,67 @@
1
+ ---
2
+ summary: "The definition linter reports gaps it previously passed over — an unsatisfiable emitted schema, four format-parity false negatives, and cap names it never matched — so a server carrying one goes red on its next lint:mcp; enrichment trailers no longer fold the next field into a notice, and the scaffold typechecks tests/."
3
+ breaking: false
4
+ security: false
5
+ agent-notes: |
6
+ Upgrading turns the linter red on latent gaps that 0.11.3 passed over. Run
7
+ `bun run lint:mcp` first and expect findings before touching anything else.
8
+ Nothing already deployed changes behavior — definition linting is build-time
9
+ only.
10
+
11
+ New errors. `schema-unsatisfiable` fires on any emitted schema node with an
12
+ empty value set; the common real cause is `z.enum()` handed a non-string array
13
+ (`z.enum([1, 2, 3])` serializes to `{"type":"string","enum":[]}`, which no
14
+ value can satisfy) — rewrite it as `z.literal([1, 2, 3])`. `format-parity` now
15
+ reaches definitions it used to skip: a tool whose output carries a multi-value
16
+ `z.literal([...])` was unverified entirely, and an enum, literal, or boolean
17
+ leaf that `format()` never renders no longer passes on an incidental substring
18
+ match. Both are real parity gaps — render the field.
19
+
20
+ New warnings. `format-parity-depth-limit` names output subtrees past depth 8
21
+ that were never evaluated; flatten the shape, or verify by hand that
22
+ `format()` renders them. `capped-list-no-truncation` matches cap names by
23
+ shape, so a tool capping on `maxRecords`, `maxRows`, or `<noun>_limit` is
24
+ evaluated for the first time. A range filter spelled `max_<noun>`
25
+ (`max_magnitude`, `maxLat`) trips it too — disclose `totalCount` if the array
26
+ is paged at all, or exempt the tool via `truncationAllowlist` /
27
+ `MCP_LINT_TRUNCATION_ALLOWLIST`.
28
+
29
+ A `format()` that escapes markdown no longer has to exempt `_` from its escape
30
+ set to keep parity green; the sentinel is alphanumeric.
31
+
32
+ Not automatic on an existing server, since `init` never overwrites an existing
33
+ file: the tsconfig split, the Dockerfile `--omit=peer` flags, and the
34
+ `scripts/tree.ts` directory-pattern fix. Adopting the tsconfig split
35
+ typechecks `tests/` for the first time and surfaces a one-time backlog
36
+ dominated by `noUncheckedIndexedAccess` on fixture element reads — the errors
37
+ are real. Adopting `--omit=peer` needs the flag on BOTH the production `bun
38
+ install` and the OTEL `bun add`; without it on the second, that install
39
+ re-resolves the graph and pulls every optional peer back in. A
40
+ scaffold-derived `tests/fuzz/` suite needs `fast-check` as a direct
41
+ devDependency.
42
+ ---
43
+
44
+ # 0.11.4 — 2026-08-10
45
+
46
+ ## Added
47
+
48
+ - **`schema-unsatisfiable`** (error) ([#310](https://github.com/cyanheads/mcp-ts-core/issues/310)). Flags any node in the emitted JSON Schema that describes an empty value set — `enum: []`, `anyOf: []`, `oneOf: []`, `type: []`, `not: {}` — a field no value can ever satisfy, which nothing downstream reported: the tool registered, the schema reached the model, and the argument could never be populated. Evaluated on the emitted schema rather than on Zod internals because the two disagree in the case that matters: `z.enum([1, 2, 3])` keeps its options on the Zod side and serializes to `{"type":"string","enum":[]}`. Runs on tool `input`/`output`, resource `params`/`output`, and prompt `args`. Not flagged: `allOf: []` (vacuously true) and empty `required`/`properties`/`prefixItems`, which are absent constraints rather than impossible ones.
49
+ - **`format-parity-depth-limit`** (warning) ([#280](https://github.com/cyanheads/mcp-ts-core/issues/280)). The sentinel walker's depth-8 bail now names the schema path it declined to descend into. The bail returned a state indistinguishable from a field that resolved to nothing, so an unevaluated subtree read as a pass; four array hops from the output root is enough to reach the bound.
50
+ - **`fast-check`** — scaffold `devDependency` (`^4.9.0`) ([#316](https://github.com/cyanheads/mcp-ts-core/issues/316)). `templates/tests/fuzz/echo-tool.fuzz.test.ts` reaches it through the framework's optional peer, which is not installed for you, so a fresh scaffold failed its first test run on `Cannot find package 'fast-check'`.
51
+
52
+ ## Changed
53
+
54
+ - **Every linter change below removes a false negative.** A server carrying a latent gap goes red on its next `lint:mcp`/`devcheck` after upgrading; definition linting is build-time only, so nothing already deployed changes behavior. Newly errors: `schema-unsatisfiable`, plus format parity on multi-value literals and on enum/literal/boolean leaves whose value only appeared as an incidental substring. Newly warns: `format-parity-depth-limit` past depth 8, and `capped-list-no-truncation` on cap names outside the old allowlist.
55
+ - **The format-parity string sentinel is alphanumeric** ([#337](https://github.com/cyanheads/mcp-ts-core/issues/337)). `MCPPARITY<path>`, with the path's non-alphanumerics folded to `Q` so distinct paths keep distinct sentinels. The old `__MCP_PARITY_…__` form did not survive a `format()` that escapes markdown — `\_\_MCP\_PARITY…` is a correct escape and was read as an unrendered field, so a server had to carve `_` out of its escape set to keep the rule green. An alphanumeric run is inert under markdown escaping, HTML escaping, and URL encoding alike, so the matcher needs no branch per convention.
56
+ - **Schema-dictated parity sentinels match as delimited tokens** ([#282](https://github.com/cyanheads/mcp-ts-core/issues/282)). Enum members, literals, booleans, and the unrecognized-type fallback must now appear un-flanked by another alphanumeric or `_`. A short natural-word member (`full`, `all`, `none`) matched incidental output — including a sibling leaf's rendered sentinel — so a required discriminator `format()` never rendered passed parity. An enum leaf's sample has to stay a legal member of its enum, so the fix is the match strategy, not the injected value. Strict string and number leaves keep plain substring matching, and the key-name fallback is unchanged.
57
+ - **`capped-list-no-truncation` matches cap names by shape** ([#278](https://github.com/cyanheads/mcp-ts-core/issues/278)). `isCapFieldName` replaces the enumerated `CAP_FIELD_RE`: camelCase normalizes to snake_case first, then `limit`, `<noun>_limit`, `max_<noun>`, and the `per_page`/`page_size` idioms match. An enumeration turned every new cap noun into a silent gap where the rule never ran at all — the defect class the rule exists to catch. Bare `count`, `size`, `n`, `rows`, and `records` still do not match. The shape cannot separate a cap on how many from an upper bound on a value, so a range filter spelled `max_<noun>` matches too; `truncationAllowlist` exempts a tool that trips it.
58
+ - **`OutlineOptions.notice` receives the budget** ([#328](https://github.com/cyanheads/mcp-ts-core/issues/328)). Signature widened to `(sections, budget) => string`; a single-argument callback is unaffected. The default names the largest section that *fits* the budget with its byte size inline, instead of the three largest — which, since sections arrive sorted largest-first, was by construction the most expensive retrieval available and the one most likely to overflow the budget the outline exists to enforce. When no single section fits, it names none and points at narrowing the request. One section, not several: sizes are per-section, so a multi-section example would advertise a combination that may not fit.
59
+ - **The scaffolded `tsconfig` splits typecheck from emit** ([#316](https://github.com/cyanheads/mcp-ts-core/issues/316)). `tsconfig.json` covers `src/` and `tests/` with `rootDir: "."` and `noEmit: true`, plus an explicit `tsBuildInfoFile: ".tsbuildinfo"` — without it the `--noEmit` run writes its incremental cache into `outDir` and `files: ["dist/"]` publishes it. `tsconfig.build.json` carries `rootDir: "src"`, `include: ["src/**/*"]`, and `noEmit: false`, so the build path is unchanged. A scaffolded server's tests never reached `tsc` before, and could drift from the schemas they exercise with every gate green. The starter tests were updated for the contracts they exercise: `createMockContext({ errors: echoTool.errors })`, awaited `generate`/`list`, and non-null `args`/`params` accesses.
60
+ - **The production Docker stage omits optional peers** ([#317](https://github.com/cyanheads/mcp-ts-core/issues/317)). `--omit=peer` rides the production `bun install` and the OTEL `bun add`, in `templates/Dockerfile` and in this repo's own `Dockerfile`. `--production`/`--omit=dev` do not omit optional peers — Bun auto-installs them — so the runtime image shipped the framework's opt-in tiers, a test runner and several service SDKs among them. The second flag is load-bearing: without it the OTEL step re-resolves the graph and pulls them back in. An optional tier a server actually uses is a direct dependency of that server, never something inherited from the framework's peer list.
61
+
62
+ ## Fixed
63
+
64
+ - **format-parity walks a multi-value literal** ([#310](https://github.com/cyanheads/mcp-ts-core/issues/310)). The `literal` case read the instance getter, and Zod 4's `.value` throws on `z.literal([1, 2, 3])`, so the rule reported `format-parity-walk-failed` and disabled parity for that whole definition — the idiomatic way to advertise a closed non-string set as one schema node. It now reads `_zod.def.values`, a plain array for single- and multi-value literals alike. Guarding the getter is not enough: the instance `.values` is a `Set`, so an index read yields `undefined` and falls through to the throwing `.value`.
65
+ - **Enrichment trailer fields stay out of the preceding container** ([#308](https://github.com/cyanheads/mcp-ts-core/issues/308)). Fields were joined by a bare `\n`, and CommonMark lazy continuation folds an unprefixed line into an open block quote or list item — so a `total` or `echo` enriched after a `notice` rendered as quoted text attributed to that notice. A field whose last line opens a quote (`>`) or a list item (`-`, `+`, `*`, `1.`, `1)`, indented up to three spaces) is now followed by a blank line; every other field keeps the compact single-`\n` layout. The test is the line, not the field kind, so a custom `enrichmentTrailer.render` whose output ends in a bullet terminates the same way. A list marker must be followed by a space or end the line, so `**0 total**` and a `***` rule are not mistaken for bullets.
66
+ - **`scripts/tree.ts` honors directory-only gitignore patterns** ([#304](https://github.com/cyanheads/mcp-ts-core/issues/304)). `ignore` decides a path is a directory from a trailing slash on the path it is given, so a pattern written as `/data/` or `.claude/` matched nothing and the directory was listed in the generated `docs/tree.md` — contradicting that file's own footer. `isIgnored` takes the flag from the `Dirent` the call site already holds. Regenerating this project's tree drops `.agents/`, `.claude/`, `agent-feedback/`, `announcements/`, and `tmp/`.
67
+ - **The fuzz leak heuristic ignores the input's own strings.** `recordLeak` strips every string the generated input carried — object keys included, and their JSON-escaped forms, longest needle first — before checking the client-visible error text for a stack frame or server-side path. A handler that names the offending value in its error data, the pattern the framework recommends, handed the fuzzer its own generated string back; a generated string carries a `<letter>:\` trigram about once in six thousand, which is enough to fail a suite intermittently and nowhere near often enough to reproduce by rerunning it.
@@ -44,8 +44,9 @@ export interface TruncationOptions {
44
44
  truncationAllowlist?: ReadonlyArray<string> | false;
45
45
  }
46
46
  /**
47
- * Warns when a tool takes a cap-like input field (e.g. `limit`, `per_page`) and
48
- * returns an array output, but declares no truncation disclosure — neither a
47
+ * Warns when a tool takes a cap-like input field (`limit`, `per_page`,
48
+ * `maxRecords`, … — see `isCapFieldName`) and returns an array output, but
49
+ * declares no truncation disclosure — neither a
49
50
  * `truncated` key in its declared `enrichment` shape, nor `totalCount` in enrichment,
50
51
  * nor `truncated` or `totalCount` as top-level `output` keys.
51
52
  *
@@ -1 +1 @@
1
- {"version":3,"file":"enrichment-rules.d.ts","sourceRoot":"","sources":["../../../src/linter/rules/enrichment-rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAqDtE;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,EAC/F,cAAc,EAAE,kBAAkB,EAClC,cAAc,EAAE,MAAM,GACrB,cAAc,EAAE,CA0IlB;AAED,sDAAsD;AACtD,MAAM,WAAW,iBAAiB;IAChC,2EAA2E;IAC3E,mBAAmB,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;CACrD;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EACC;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3E,IAAI,GACJ,SAAS,EACb,iBAAiB,CAAC,EAAE,iBAAiB,GACpC,cAAc,EAAE,CA0ClB"}
1
+ {"version":3,"file":"enrichment-rules.d.ts","sourceRoot":"","sources":["../../../src/linter/rules/enrichment-rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAkFtE;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,EAC/F,cAAc,EAAE,kBAAkB,EAClC,cAAc,EAAE,MAAM,GACrB,cAAc,EAAE,CA0IlB;AAED,sDAAsD;AACtD,MAAM,WAAW,iBAAiB;IAChC,2EAA2E;IAC3E,mBAAmB,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;CACrD;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EACC;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3E,IAAI,GACJ,SAAS,EACb,iBAAiB,CAAC,EAAE,iBAAiB,GACpC,cAAc,EAAE,CA0ClB"}
@@ -15,8 +15,35 @@
15
15
  */
16
16
  import { isDefinitionObject } from './definition-rules.js';
17
17
  import { getCoreDefType, objectShape, objectShapeKeys, unwrapWrappers } from './schema-rules.js';
18
- /** Pattern matching depth-0 cap-like input fields (case-insensitive, snake or camel). */
19
- const CAP_FIELD_RE = /^(limit|per_page|perPage|page_size|pageSize|max_results|maxResults|max_items|maxItems)$/i;
18
+ /** Cap-like names that carry no `max`/`limit` morpheme and must be listed outright. */
19
+ const CAP_FIELD_EXACT = new Set(['limit', 'per_page', 'page_size']);
20
+ /**
21
+ * True for a depth-0 input field name that caps how many items come back.
22
+ *
23
+ * Matched by shape, not by an enumeration: an allowlist turns every new cap noun
24
+ * (`maxRecords`, `maxRows`, `resultLimit`) into a silent gap where the rule never
25
+ * runs at all, which is the same defect class the rule exists to catch. Both
26
+ * naming conventions normalize to the same snake form first, so `maxRecords` and
27
+ * `max_records` are one case.
28
+ *
29
+ * - `limit`, and any `<noun>_limit` / `<noun>Limit`
30
+ * - any `max_<noun>` / `max<Noun>`
31
+ * - the page-size idioms `per_page`/`perPage` and `page_size`/`pageSize`
32
+ *
33
+ * Deliberately NOT matched: bare `count`, `size`, `n`, `rows`, `records`, and
34
+ * words that merely start with the letters (`maximum`).
35
+ *
36
+ * The shape cannot separate a cap on *how many* from an upper bound on a *value*,
37
+ * so a range filter spelled `max_<noun>` (`max_magnitude`, `maxLat`, `max_date`)
38
+ * matches as well. The rule still has to clear its other two conditions before it
39
+ * says anything, and `truncationAllowlist` exempts a tool that trips it anyway.
40
+ */
41
+ function isCapFieldName(key) {
42
+ const normalized = key.replace(/([a-z0-9])([A-Z])/g, '$1_$2').toLowerCase();
43
+ return (CAP_FIELD_EXACT.has(normalized) ||
44
+ normalized.startsWith('max_') ||
45
+ normalized.endsWith('_limit'));
46
+ }
20
47
  /**
21
48
  * Output field names that almost always indicate agent-facing context rather
22
49
  * than domain payload. Kept deliberately tiny to avoid false positives —
@@ -199,8 +226,9 @@ export function lintEnrichmentContract(def, definitionType, definitionName) {
199
226
  return diagnostics;
200
227
  }
201
228
  /**
202
- * Warns when a tool takes a cap-like input field (e.g. `limit`, `per_page`) and
203
- * returns an array output, but declares no truncation disclosure — neither a
229
+ * Warns when a tool takes a cap-like input field (`limit`, `per_page`,
230
+ * `maxRecords`, … — see `isCapFieldName`) and returns an array output, but
231
+ * declares no truncation disclosure — neither a
204
232
  * `truncated` key in its declared `enrichment` shape, nor `totalCount` in enrichment,
205
233
  * nor `truncated` or `totalCount` as top-level `output` keys.
206
234
  *
@@ -220,8 +248,8 @@ export function lintCappedListTruncation(def, truncationOptions) {
220
248
  return [];
221
249
  // Check input for a cap-like field
222
250
  const inputKeys = objectShapeKeys(def.input);
223
- const hasCap = inputKeys.some((k) => CAP_FIELD_RE.test(k));
224
- if (!hasCap)
251
+ const capKeys = inputKeys.filter(isCapFieldName);
252
+ if (capKeys.length === 0)
225
253
  return [];
226
254
  // Check output for at least one array-typed field
227
255
  const hasArrayOutput = hasTopLevelArray(def.output);
@@ -236,7 +264,7 @@ export function lintCappedListTruncation(def, truncationOptions) {
236
264
  {
237
265
  rule: 'capped-list-no-truncation',
238
266
  severity: 'warning',
239
- message: `Tool '${name}' accepts a cap-like input (${inputKeys.filter((k) => CAP_FIELD_RE.test(k)).join(', ')}) ` +
267
+ message: `Tool '${name}' accepts a cap-like input (${capKeys.join(', ')}) ` +
240
268
  `and returns an array, but discloses no truncation. A silently capped list leaves the agent ` +
241
269
  `unaware that results were cut off. Disclose via \`ctx.enrich.truncated({ shown, cap })\` and ` +
242
270
  `declare \`truncated\`, \`shown\`, \`cap\` in the \`enrichment\` block; or call \`ctx.enrich.total(n)\` ` +
@@ -1 +1 @@
1
- {"version":3,"file":"enrichment-rules.js","sourceRoot":"","sources":["../../../src/linter/rules/enrichment-rules.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"enrichment-rules.js","sourceRoot":"","sources":["../../../src/linter/rules/enrichment-rules.ts"],"names":[],"mappings":"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"}
@@ -12,12 +12,16 @@
12
12
  *
13
13
  * Approach: sentinel injection.
14
14
  * 1. Walk the output schema, build a synthetic value where every leaf is a
15
- * uniquely identifiable sentinel (distinctive string, large number, or
16
- * boolean/enum/literal with key-name fallback).
15
+ * uniquely identifiable sentinel (distinctive alphanumeric string, large
16
+ * number, or — where the schema dictates the value — a boolean/enum member/
17
+ * literal, which falls back to key-name matching).
17
18
  * 2. Invoke `def.format(synthetic)` once and concatenate `content[].text`.
18
19
  * 3. For each leaf path, verify either the sentinel value or the field's key
19
- * name appears in the rendered text.
20
- * 4. Emit one error per missing path.
20
+ * name appears in the rendered text. Schema-dictated sentinels must appear
21
+ * as a delimited token, since a short member like `full` collides with
22
+ * incidental output.
23
+ * 4. Emit one error per missing path, and one warning per subtree the depth
24
+ * guard could not reach.
21
25
  *
22
26
  * Deterministic, dependency-free. Runs inside `validateDefinitions()` alongside
23
27
  * every other lint rule — picked up automatically by `bun run lint:mcp`,
@@ -1 +1 @@
1
- {"version":3,"file":"format-parity-rules.d.ts","sourceRoot":"","sources":["../../../src/linter/rules/format-parity-rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AA6XlD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,cAAc,EAAE,CAyEpF"}
1
+ {"version":3,"file":"format-parity-rules.d.ts","sourceRoot":"","sources":["../../../src/linter/rules/format-parity-rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAgclD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,cAAc,EAAE,CAyFpF"}
@@ -12,12 +12,16 @@
12
12
  *
13
13
  * Approach: sentinel injection.
14
14
  * 1. Walk the output schema, build a synthetic value where every leaf is a
15
- * uniquely identifiable sentinel (distinctive string, large number, or
16
- * boolean/enum/literal with key-name fallback).
15
+ * uniquely identifiable sentinel (distinctive alphanumeric string, large
16
+ * number, or — where the schema dictates the value — a boolean/enum member/
17
+ * literal, which falls back to key-name matching).
17
18
  * 2. Invoke `def.format(synthetic)` once and concatenate `content[].text`.
18
19
  * 3. For each leaf path, verify either the sentinel value or the field's key
19
- * name appears in the rendered text.
20
- * 4. Emit one error per missing path.
20
+ * name appears in the rendered text. Schema-dictated sentinels must appear
21
+ * as a delimited token, since a short member like `full` collides with
22
+ * incidental output.
23
+ * 4. Emit one error per missing path, and one warning per subtree the depth
24
+ * guard could not reach.
21
25
  *
22
26
  * Deterministic, dependency-free. Runs inside `validateDefinitions()` alongside
23
27
  * every other lint rule — picked up automatically by `bun run lint:mcp`,
@@ -25,6 +29,14 @@
25
29
  *
26
30
  * @module src/linter/rules/format-parity-rules
27
31
  */
32
+ /**
33
+ * Maximum schema nesting the sentinel walk descends. The bound exists because
34
+ * every array / union / record hop multiplies the variant set, and a
35
+ * self-referential shape (Zod 4 recursive objects use getters) would otherwise
36
+ * recurse forever. Anything past it is reported via `format-parity-depth-limit`
37
+ * rather than passed.
38
+ */
39
+ const MAX_WALK_DEPTH = 8;
28
40
  /** Zod 4 stores the type discriminator at `_zod.def.type`. Falls back to `_def.type`. */
29
41
  function zodTypeOf(schema) {
30
42
  if (!schema || typeof schema !== 'object')
@@ -50,8 +62,21 @@ function unwrapSchema(schema) {
50
62
  }
51
63
  return current;
52
64
  }
65
+ /**
66
+ * Sentinel for string leaves — alphanumeric by construction.
67
+ *
68
+ * `content[]` is markdown carrying upstream text the server does not control, so
69
+ * a correct `format()` escapes its values at the render boundary. An
70
+ * underscore-delimited probe does not survive that: `\_\_MCP\_PARITY…` is a
71
+ * correct escape of the sentinel and would read as an unrendered field. An
72
+ * alphanumeric run is inert under markdown escaping, HTML escaping, and URL
73
+ * encoding alike, so the matcher needs no branch per escaping convention.
74
+ *
75
+ * Path separators fold to `Q` rather than being dropped, so `a.bc` and `ab.c`
76
+ * keep distinct sentinels.
77
+ */
53
78
  function stringSentinel(path) {
54
- return `__MCP_PARITY_${path.replace(/[.[\]]/g, '_')}__`;
79
+ return `MCPPARITY${path.replace(/[^A-Za-z0-9]+/g, 'Q')}`;
55
80
  }
56
81
  /** Terminal variant: append one leaf and use its sentinel as the synthetic value. */
57
82
  function leafVariant(state, leaf, numberIndex = state.numberIndex) {
@@ -62,9 +87,11 @@ function leafVariant(state, leaf, numberIndex = state.numberIndex) {
62
87
  };
63
88
  }
64
89
  /** Builds synthetic values and collects every leaf path for each union branch. */
65
- function walkVariants(schema, path, keyName, state, depth = 0) {
66
- if (depth > 8)
90
+ function walkVariants(schema, path, keyName, state, ctx, depth = 0) {
91
+ if (depth > MAX_WALK_DEPTH) {
92
+ ctx.truncatedPaths.add(path || keyName || '<root>');
67
93
  return [{ ...state, value: null }];
94
+ }
68
95
  const node = unwrapSchema(schema);
69
96
  const type = zodTypeOf(node);
70
97
  const n = node;
@@ -90,12 +117,17 @@ function walkVariants(schema, path, keyName, state, depth = 0) {
90
117
  return [leafVariant(state, { path, keyName, sentinel: value, matchStrategy: 'permissive' })];
91
118
  }
92
119
  case 'literal': {
93
- const value = n.value ?? getDefValue(n);
120
+ // Read the def, never the instance getter: Zod 4's `.value` throws on a
121
+ // multi-value literal (`z.literal([1, 2, 3])`, the idiomatic way to
122
+ // advertise a closed non-string set as one schema node), and the instance
123
+ // `.values` is a Set, so an index read on it yields undefined. `_zod.def.values`
124
+ // is a plain array for single- and multi-value literals alike.
125
+ const value = getDefValue(n);
94
126
  return [leafVariant(state, { path, keyName, sentinel: value, matchStrategy: 'permissive' })];
95
127
  }
96
128
  case 'array': {
97
129
  const element = n.element ?? getDefElement(n);
98
- return walkVariants(element, `${path}[]`, keyName, state, depth + 1).map((variant) => ({
130
+ return walkVariants(element, `${path}[]`, keyName, state, ctx, depth + 1).map((variant) => ({
99
131
  ...variant,
100
132
  value: [variant.value],
101
133
  }));
@@ -107,7 +139,7 @@ function walkVariants(schema, path, keyName, state, depth = 0) {
107
139
  const childPath = path ? `${path}.${key}` : key;
108
140
  const nextVariants = [];
109
141
  for (const variant of variants) {
110
- for (const child of walkVariants(childSchema, childPath, key, { leaves: variant.leaves, numberIndex: variant.numberIndex }, depth + 1)) {
142
+ for (const child of walkVariants(childSchema, childPath, key, { leaves: variant.leaves, numberIndex: variant.numberIndex }, ctx, depth + 1)) {
111
143
  nextVariants.push({
112
144
  value: { ...variant.value, [key]: child.value },
113
145
  leaves: child.leaves,
@@ -123,14 +155,14 @@ function walkVariants(schema, path, keyName, state, depth = 0) {
123
155
  case 'discriminated_union': {
124
156
  const options = getDefOptions(n);
125
157
  if (Array.isArray(options) && options.length > 0) {
126
- return options.flatMap((option) => walkVariants(option, path, keyName, state, depth + 1));
158
+ return options.flatMap((option) => walkVariants(option, path, keyName, state, ctx, depth + 1));
127
159
  }
128
160
  return [{ ...state, value: null }];
129
161
  }
130
162
  case 'record': {
131
163
  const valueSchema = getDefValueType(n);
132
164
  if (valueSchema) {
133
- return walkVariants(valueSchema, `${path}.<key>`, keyName, state, depth + 1).map((variant) => ({
165
+ return walkVariants(valueSchema, `${path}.<key>`, keyName, state, ctx, depth + 1).map((variant) => ({
134
166
  ...variant,
135
167
  value: { parity_key: variant.value },
136
168
  }));
@@ -145,7 +177,7 @@ function walkVariants(schema, path, keyName, state, depth = 0) {
145
177
  for (const [i, item] of items.entries()) {
146
178
  const nextVariants = [];
147
179
  for (const variant of variants) {
148
- for (const child of walkVariants(item, `${path}[${i}]`, keyName, { leaves: variant.leaves, numberIndex: variant.numberIndex }, depth + 1)) {
180
+ for (const child of walkVariants(item, `${path}[${i}]`, keyName, { leaves: variant.leaves, numberIndex: variant.numberIndex }, ctx, depth + 1)) {
149
181
  nextVariants.push({
150
182
  value: [...variant.value, child.value],
151
183
  leaves: child.leaves,
@@ -280,13 +312,18 @@ const THOUSANDS_GROUP_PATTERN = /\b\d{1,3}(?:[,._'    ’٬]\d{3})+\b/g;
280
312
  function normalizeDigitGroups(text) {
281
313
  return text.replace(THOUSANDS_GROUP_PATTERN, (match) => match.replace(DIGIT_SEPARATOR_PATTERN, ''));
282
314
  }
283
- function sentinelAppears(sentinel, text) {
315
+ function occursIn(value, text, mode) {
316
+ if (mode === 'substring')
317
+ return text.includes(value);
318
+ return new RegExp(`(?<![A-Za-z0-9_])${escapeRegex(value)}(?![A-Za-z0-9_])`).test(text);
319
+ }
320
+ function sentinelAppears(sentinel, text, mode) {
284
321
  if (sentinel === null || sentinel === undefined)
285
322
  return false;
286
323
  const asString = typeof sentinel === 'string' ? sentinel : String(sentinel);
287
324
  if (asString.length === 0)
288
325
  return false;
289
- if (text.includes(asString))
326
+ if (occursIn(asString, text, mode))
290
327
  return true;
291
328
  // Numeric sentinels may be rendered with locale-aware digit-group separators —
292
329
  // collapse separators only inside well-formed thousands-group runs and retry.
@@ -294,7 +331,7 @@ function sentinelAppears(sentinel, text) {
294
331
  // `total / 10` lossy transform rendered as `90,000,000.1` would otherwise
295
332
  // collapse to `900000001` and falsely satisfy the sentinel match).
296
333
  if (typeof sentinel === 'number' || typeof sentinel === 'bigint') {
297
- return normalizeDigitGroups(text).includes(asString);
334
+ return occursIn(asString, normalizeDigitGroups(text), mode);
298
335
  }
299
336
  return false;
300
337
  }
@@ -327,7 +364,8 @@ function keyNameAppears(keyName, text) {
327
364
  return false;
328
365
  }
329
366
  function leafIsRendered(leaf, text) {
330
- if (sentinelAppears(leaf.sentinel, text))
367
+ const mode = leaf.matchStrategy === 'permissive' ? 'delimited' : 'substring';
368
+ if (sentinelAppears(leaf.sentinel, text, mode))
331
369
  return true;
332
370
  if (leaf.matchStrategy === 'permissive') {
333
371
  return keyNameAppears(leaf.keyName, text);
@@ -354,9 +392,10 @@ export function lintFormatParity(def, displayName) {
354
392
  return [];
355
393
  // Build synthetic samples. Union schemas produce one sample per branch so
356
394
  // list/detail variants are checked against their own formatter path.
395
+ const walkContext = { truncatedPaths: new Set() };
357
396
  let syntheticVariants;
358
397
  try {
359
- syntheticVariants = walkVariants(output, '', '', { leaves: [], numberIndex: 0 });
398
+ syntheticVariants = walkVariants(output, '', '', { leaves: [], numberIndex: 0 }, walkContext);
360
399
  }
361
400
  catch (err) {
362
401
  return [
@@ -371,8 +410,21 @@ export function lintFormatParity(def, displayName) {
371
410
  },
372
411
  ];
373
412
  }
413
+ // Paths the depth guard refused to descend into are unknowns, not passes —
414
+ // report them so the coverage gap is visible instead of reading as enforcement.
415
+ const depthDiagnostics = [...walkContext.truncatedPaths].map((path) => ({
416
+ rule: 'format-parity-depth-limit',
417
+ severity: 'warning',
418
+ message: `Tool '${displayName}' output field '${path}' is nested deeper than the format-parity ` +
419
+ `walker's depth limit (${MAX_WALK_DEPTH}), so it and anything under it were NOT evaluated. ` +
420
+ 'Parity for that subtree is unknown, not verified.\n' +
421
+ 'Fix: flatten the output shape so the field sits within the limit, or verify by hand that ' +
422
+ 'format() renders it.',
423
+ definitionType: 'tool',
424
+ definitionName: displayName,
425
+ }));
374
426
  if (syntheticVariants.every((variant) => variant.leaves.length === 0))
375
- return [];
427
+ return depthDiagnostics;
376
428
  // Run format() and verify each leaf for every variant.
377
429
  const diagnosticsByPath = new Map();
378
430
  for (const variant of syntheticVariants) {
@@ -415,6 +467,6 @@ export function lintFormatParity(def, displayName) {
415
467
  });
416
468
  }
417
469
  }
418
- return [...diagnosticsByPath.values()];
470
+ return [...depthDiagnostics, ...diagnosticsByPath.values()];
419
471
  }
420
472
  //# sourceMappingURL=format-parity-rules.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"format-parity-rules.js","sourceRoot":"","sources":["../../../src/linter/rules/format-parity-rules.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"format-parity-rules.js","sourceRoot":"","sources":["../../../src/linter/rules/format-parity-rules.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ export { checkDuplicateNames, checkNameRequired, checkToolNameFormat } from './n
9
9
  export { DEFAULT_FORMAT_ALLOWLIST, lintSchemaPortability, type PortabilityOptions, } from './portability-rules.js';
10
10
  export { lintPromptDefinition } from './prompt-rules.js';
11
11
  export { lintResourceDefinition } from './resource-rules.js';
12
- export { checkFieldDescriptions, checkIsZodObject, checkSchemaSerializable, } from './schema-rules.js';
12
+ export { checkFieldDescriptions, checkIsZodObject, checkSchemaSatisfiable, checkSchemaSerializable, } from './schema-rules.js';
13
13
  export { lintServerJson } from './server-json-rules.js';
14
14
  export { lintAppToolResourcePairing, lintAuthScopes, lintCanvasConsumerPairing, lintToolDefinition, } from './tool-rules.js';
15
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/linter/rules/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC9F,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,KAAK,kBAAkB,GACxB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EACL,0BAA0B,EAC1B,cAAc,EACd,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/linter/rules/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC9F,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,KAAK,kBAAkB,GACxB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EACL,0BAA0B,EAC1B,cAAc,EACd,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC"}
@@ -9,7 +9,7 @@ export { checkDuplicateNames, checkNameRequired, checkToolNameFormat } from './n
9
9
  export { DEFAULT_FORMAT_ALLOWLIST, lintSchemaPortability, } from './portability-rules.js';
10
10
  export { lintPromptDefinition } from './prompt-rules.js';
11
11
  export { lintResourceDefinition } from './resource-rules.js';
12
- export { checkFieldDescriptions, checkIsZodObject, checkSchemaSerializable, } from './schema-rules.js';
12
+ export { checkFieldDescriptions, checkIsZodObject, checkSchemaSatisfiable, checkSchemaSerializable, } from './schema-rules.js';
13
13
  export { lintServerJson } from './server-json-rules.js';
14
14
  export { lintAppToolResourcePairing, lintAuthScopes, lintCanvasConsumerPairing, lintToolDefinition, } from './tool-rules.js';
15
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/linter/rules/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC9F,OAAO,EACL,wBAAwB,EACxB,qBAAqB,GAEtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EACL,0BAA0B,EAC1B,cAAc,EACd,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/linter/rules/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC9F,OAAO,EACL,wBAAwB,EACxB,qBAAqB,GAEtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EACL,0BAA0B,EAC1B,cAAc,EACd,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-rules.d.ts","sourceRoot":"","sources":["../../../src/linter/rules/prompt-rules.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,OAAO,EAAyB,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAOxF;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,OAAO,EACZ,WAAW,CAAC,EAAE,kBAAkB,GAC/B,cAAc,EAAE,CAoDlB"}
1
+ {"version":3,"file":"prompt-rules.d.ts","sourceRoot":"","sources":["../../../src/linter/rules/prompt-rules.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,OAAO,EAAyB,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAQxF;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,OAAO,EACZ,WAAW,CAAC,EAAE,kBAAkB,GAC/B,cAAc,EAAE,CAuDlB"}
@@ -6,7 +6,7 @@
6
6
  import { invalidDefinitionEntry, isDefinitionObject } from './definition-rules.js';
7
7
  import { checkNameRequired } from './name-rules.js';
8
8
  import { lintSchemaPortability } from './portability-rules.js';
9
- import { checkFieldDescriptions, checkIsZodObject, checkSchemaSerializable, } from './schema-rules.js';
9
+ import { checkFieldDescriptions, checkIsZodObject, checkSchemaSatisfiable, checkSchemaSerializable, } from './schema-rules.js';
10
10
  /**
11
11
  * Runs all lint rules against a single prompt definition.
12
12
  */
@@ -53,8 +53,11 @@ export function lintPromptDefinition(def, portability) {
53
53
  if (argsSerial) {
54
54
  diagnostics.push(argsSerial);
55
55
  }
56
- else if (portability) {
57
- diagnostics.push(...lintSchemaPortability(d.args, 'args', 'prompt', displayName, portability));
56
+ else {
57
+ diagnostics.push(...checkSchemaSatisfiable(d.args, 'args', 'prompt', displayName));
58
+ if (portability) {
59
+ diagnostics.push(...lintSchemaPortability(d.args, 'args', 'prompt', displayName, portability));
60
+ }
58
61
  }
59
62
  }
60
63
  }
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-rules.js","sourceRoot":"","sources":["../../../src/linter/rules/prompt-rules.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAA2B,MAAM,wBAAwB,CAAC;AACxF,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAE3B;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,GAAY,EACZ,WAAgC;IAEhC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,sBAAsB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC7E,MAAM,WAAW,GAAqB,EAAE,CAAC;IACzC,MAAM,CAAC,GAAG,GAA8B,CAAC;IACzC,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACvD,MAAM,WAAW,GAAG,IAAI,IAAI,WAAW,CAAC;IAExC,kBAAkB;IAClB,MAAM,OAAO,GAAG,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC3D,IAAI,OAAO;QAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAEvC,cAAc;IACd,IAAI,OAAO,CAAC,EAAE,WAAW,KAAK,QAAQ,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrE,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,sBAAsB;YAC5B,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,WAAW,WAAW,uBAAuB;YACtD,cAAc,EAAE,QAAQ;YACxB,cAAc,EAAE,WAAW;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,oBAAoB;IACpB,IAAI,OAAO,CAAC,EAAE,QAAQ,KAAK,UAAU,EAAE,CAAC;QACtC,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,mBAAmB;YACzB,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,WAAW,WAAW,mCAAmC;YAClE,cAAc,EAAE,QAAQ;YACxB,cAAc,EAAE,WAAW;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,6DAA6D;IAC7D,IAAI,CAAC,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC1E,IAAI,SAAS,EAAE,CAAC;YACd,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,IAAI,CAAC,GAAG,sBAAsB,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;YACnF,MAAM,UAAU,GAAG,uBAAuB,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;YAClF,IAAI,UAAU,EAAE,CAAC;gBACf,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/B,CAAC;iBAAM,IAAI,WAAW,EAAE,CAAC;gBACvB,WAAW,CAAC,IAAI,CACd,GAAG,qBAAqB,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,CAC7E,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"prompt-rules.js","sourceRoot":"","sources":["../../../src/linter/rules/prompt-rules.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAA2B,MAAM,wBAAwB,CAAC;AACxF,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAE3B;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,GAAY,EACZ,WAAgC;IAEhC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,sBAAsB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC7E,MAAM,WAAW,GAAqB,EAAE,CAAC;IACzC,MAAM,CAAC,GAAG,GAA8B,CAAC;IACzC,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACvD,MAAM,WAAW,GAAG,IAAI,IAAI,WAAW,CAAC;IAExC,kBAAkB;IAClB,MAAM,OAAO,GAAG,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC3D,IAAI,OAAO;QAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAEvC,cAAc;IACd,IAAI,OAAO,CAAC,EAAE,WAAW,KAAK,QAAQ,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrE,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,sBAAsB;YAC5B,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,WAAW,WAAW,uBAAuB;YACtD,cAAc,EAAE,QAAQ;YACxB,cAAc,EAAE,WAAW;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,oBAAoB;IACpB,IAAI,OAAO,CAAC,EAAE,QAAQ,KAAK,UAAU,EAAE,CAAC;QACtC,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,mBAAmB;YACzB,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,WAAW,WAAW,mCAAmC;YAClE,cAAc,EAAE,QAAQ;YACxB,cAAc,EAAE,WAAW;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,6DAA6D;IAC7D,IAAI,CAAC,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC1E,IAAI,SAAS,EAAE,CAAC;YACd,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,IAAI,CAAC,GAAG,sBAAsB,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;YACnF,MAAM,UAAU,GAAG,uBAAuB,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;YAClF,IAAI,UAAU,EAAE,CAAC;gBACf,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,WAAW,CAAC,IAAI,CAAC,GAAG,sBAAsB,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;gBACnF,IAAI,WAAW,EAAE,CAAC;oBAChB,WAAW,CAAC,IAAI,CACd,GAAG,qBAAqB,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,CAC7E,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}