@wootsup/yt-builder-mcp 1.2.0 → 1.3.0

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 (165) hide show
  1. package/README.md +15 -11
  2. package/dist/catalog/build-catalog.d.ts +63 -0
  3. package/dist/catalog/build-catalog.d.ts.map +1 -0
  4. package/dist/catalog/build-catalog.js +166 -0
  5. package/dist/catalog/build-catalog.js.map +1 -0
  6. package/dist/gateway/advanced-read-tool.d.ts +37 -0
  7. package/dist/gateway/advanced-read-tool.d.ts.map +1 -0
  8. package/dist/gateway/advanced-read-tool.js +156 -0
  9. package/dist/gateway/advanced-read-tool.js.map +1 -0
  10. package/dist/gateway/advanced-tool/domains.d.ts +18 -3
  11. package/dist/gateway/advanced-tool/domains.d.ts.map +1 -1
  12. package/dist/gateway/advanced-tool/domains.js +28 -9
  13. package/dist/gateway/advanced-tool/domains.js.map +1 -1
  14. package/dist/gateway/advanced-tool/register.d.ts.map +1 -1
  15. package/dist/gateway/advanced-tool/register.js +43 -11
  16. package/dist/gateway/advanced-tool/register.js.map +1 -1
  17. package/dist/gateway/essentials.d.ts +14 -4
  18. package/dist/gateway/essentials.d.ts.map +1 -1
  19. package/dist/gateway/essentials.js +41 -5
  20. package/dist/gateway/essentials.js.map +1 -1
  21. package/dist/gateway/test-support.d.ts +2 -2
  22. package/dist/gateway/test-support.js +2 -2
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +10 -0
  25. package/dist/index.js.map +1 -1
  26. package/dist/install-skill.js +1 -1
  27. package/dist/proxy/bridge.d.ts +36 -0
  28. package/dist/proxy/bridge.d.ts.map +1 -0
  29. package/dist/proxy/bridge.js +129 -0
  30. package/dist/proxy/bridge.js.map +1 -0
  31. package/dist/proxy/mode.d.ts +10 -0
  32. package/dist/proxy/mode.d.ts.map +1 -0
  33. package/dist/proxy/mode.js +20 -0
  34. package/dist/proxy/mode.js.map +1 -0
  35. package/dist/server.d.ts +5 -3
  36. package/dist/server.d.ts.map +1 -1
  37. package/dist/server.js +13 -3
  38. package/dist/server.js.map +1 -1
  39. package/dist/setup-wizard.d.ts.map +1 -1
  40. package/dist/setup-wizard.js +7 -0
  41. package/dist/setup-wizard.js.map +1 -1
  42. package/dist/sites/client-pool.d.ts.map +1 -1
  43. package/dist/sites/client-pool.js +21 -3
  44. package/dist/sites/client-pool.js.map +1 -1
  45. package/dist/sites/registry.d.ts +30 -0
  46. package/dist/sites/registry.d.ts.map +1 -1
  47. package/dist/sites/registry.js.map +1 -1
  48. package/dist/sites/store.d.ts +8 -1
  49. package/dist/sites/store.d.ts.map +1 -1
  50. package/dist/sites/store.js +17 -2
  51. package/dist/sites/store.js.map +1 -1
  52. package/dist/sites/tools/use-site.d.ts.map +1 -1
  53. package/dist/sites/tools/use-site.js +26 -6
  54. package/dist/sites/tools/use-site.js.map +1 -1
  55. package/dist/tools/bind-guidance.d.ts +80 -0
  56. package/dist/tools/bind-guidance.d.ts.map +1 -0
  57. package/dist/tools/bind-guidance.js +95 -0
  58. package/dist/tools/bind-guidance.js.map +1 -0
  59. package/dist/tools/elements/builders.d.ts.map +1 -1
  60. package/dist/tools/elements/builders.js +59 -11
  61. package/dist/tools/elements/builders.js.map +1 -1
  62. package/dist/tools/elements/handlers-write.d.ts +19 -2
  63. package/dist/tools/elements/handlers-write.d.ts.map +1 -1
  64. package/dist/tools/elements/handlers-write.js +179 -10
  65. package/dist/tools/elements/handlers-write.js.map +1 -1
  66. package/dist/tools/elements/handlers.d.ts +6 -1
  67. package/dist/tools/elements/handlers.d.ts.map +1 -1
  68. package/dist/tools/elements/handlers.js +74 -7
  69. package/dist/tools/elements/handlers.js.map +1 -1
  70. package/dist/tools/elements/layout-hierarchy-rules.d.ts +62 -0
  71. package/dist/tools/elements/layout-hierarchy-rules.d.ts.map +1 -0
  72. package/dist/tools/elements/layout-hierarchy-rules.js +154 -0
  73. package/dist/tools/elements/layout-hierarchy-rules.js.map +1 -0
  74. package/dist/tools/format/elements-format.d.ts +35 -0
  75. package/dist/tools/format/elements-format.d.ts.map +1 -1
  76. package/dist/tools/format/elements-format.js +124 -1
  77. package/dist/tools/format/elements-format.js.map +1 -1
  78. package/dist/tools/format/inspection-format.d.ts +18 -0
  79. package/dist/tools/format/inspection-format.d.ts.map +1 -1
  80. package/dist/tools/format/inspection-format.js +22 -1
  81. package/dist/tools/format/inspection-format.js.map +1 -1
  82. package/dist/tools/format/pages-format.d.ts.map +1 -1
  83. package/dist/tools/format/pages-format.js +7 -0
  84. package/dist/tools/format/pages-format.js.map +1 -1
  85. package/dist/tools/format/sources-format.d.ts +8 -0
  86. package/dist/tools/format/sources-format.d.ts.map +1 -1
  87. package/dist/tools/format/sources-format.js +10 -0
  88. package/dist/tools/format/sources-format.js.map +1 -1
  89. package/dist/tools/health.d.ts.map +1 -1
  90. package/dist/tools/health.js +24 -0
  91. package/dist/tools/health.js.map +1 -1
  92. package/dist/tools/index.d.ts.map +1 -1
  93. package/dist/tools/index.js +4 -0
  94. package/dist/tools/index.js.map +1 -1
  95. package/dist/tools/inspection.d.ts +24 -0
  96. package/dist/tools/inspection.d.ts.map +1 -1
  97. package/dist/tools/inspection.js +140 -41
  98. package/dist/tools/inspection.js.map +1 -1
  99. package/dist/tools/layout-flatten.d.ts +11 -8
  100. package/dist/tools/layout-flatten.d.ts.map +1 -1
  101. package/dist/tools/layout-flatten.js +17 -6
  102. package/dist/tools/layout-flatten.js.map +1 -1
  103. package/dist/tools/multi-items/builders.d.ts.map +1 -1
  104. package/dist/tools/multi-items/builders.js +11 -2
  105. package/dist/tools/multi-items/builders.js.map +1 -1
  106. package/dist/tools/multi-items/inspect-handler.d.ts +13 -0
  107. package/dist/tools/multi-items/inspect-handler.d.ts.map +1 -1
  108. package/dist/tools/multi-items/inspect-handler.js +147 -3
  109. package/dist/tools/multi-items/inspect-handler.js.map +1 -1
  110. package/dist/tools/pages/builders.d.ts.map +1 -1
  111. package/dist/tools/pages/builders.js +88 -25
  112. package/dist/tools/pages/builders.js.map +1 -1
  113. package/dist/tools/pages/handlers-read.d.ts +5 -1
  114. package/dist/tools/pages/handlers-read.d.ts.map +1 -1
  115. package/dist/tools/pages/handlers-read.js +192 -47
  116. package/dist/tools/pages/handlers-read.js.map +1 -1
  117. package/dist/tools/pages/handlers-write.d.ts +95 -1
  118. package/dist/tools/pages/handlers-write.d.ts.map +1 -1
  119. package/dist/tools/pages/handlers-write.js +137 -8
  120. package/dist/tools/pages/handlers-write.js.map +1 -1
  121. package/dist/tools/pages/index.d.ts +1 -1
  122. package/dist/tools/pages/index.d.ts.map +1 -1
  123. package/dist/tools/pages/index.js +1 -1
  124. package/dist/tools/pages/index.js.map +1 -1
  125. package/dist/tools/pages/schemas.d.ts +54 -0
  126. package/dist/tools/pages/schemas.d.ts.map +1 -1
  127. package/dist/tools/pages/schemas.js +199 -2
  128. package/dist/tools/pages/schemas.js.map +1 -1
  129. package/dist/tools/shared-schemas.d.ts.map +1 -1
  130. package/dist/tools/shared-schemas.js +15 -13
  131. package/dist/tools/shared-schemas.js.map +1 -1
  132. package/dist/tools/sources/builders.d.ts.map +1 -1
  133. package/dist/tools/sources/builders.js +64 -6
  134. package/dist/tools/sources/builders.js.map +1 -1
  135. package/dist/tools/sources/handlers-bind.d.ts +13 -1
  136. package/dist/tools/sources/handlers-bind.d.ts.map +1 -1
  137. package/dist/tools/sources/handlers-bind.js +163 -1
  138. package/dist/tools/sources/handlers-bind.js.map +1 -1
  139. package/dist/tools/sources/handlers.d.ts +3 -0
  140. package/dist/tools/sources/handlers.d.ts.map +1 -1
  141. package/dist/tools/sources/handlers.js +43 -6
  142. package/dist/tools/sources/handlers.js.map +1 -1
  143. package/dist/tools/sparse-fields.d.ts +23 -0
  144. package/dist/tools/sparse-fields.d.ts.map +1 -1
  145. package/dist/tools/sparse-fields.js +29 -0
  146. package/dist/tools/sparse-fields.js.map +1 -1
  147. package/dist/tools/sublayout/builders.d.ts +23 -0
  148. package/dist/tools/sublayout/builders.d.ts.map +1 -0
  149. package/dist/tools/sublayout/builders.js +54 -0
  150. package/dist/tools/sublayout/builders.js.map +1 -0
  151. package/dist/tools/sublayout/index.d.ts +13 -0
  152. package/dist/tools/sublayout/index.d.ts.map +1 -0
  153. package/dist/tools/sublayout/index.js +13 -0
  154. package/dist/tools/sublayout/index.js.map +1 -0
  155. package/dist/tools/sublayout/inspect-sublayout-handler.d.ts +95 -0
  156. package/dist/tools/sublayout/inspect-sublayout-handler.d.ts.map +1 -0
  157. package/dist/tools/sublayout/inspect-sublayout-handler.js +181 -0
  158. package/dist/tools/sublayout/inspect-sublayout-handler.js.map +1 -0
  159. package/dist/tools/tool-builder/results.d.ts +31 -0
  160. package/dist/tools/tool-builder/results.d.ts.map +1 -1
  161. package/dist/tools/tool-builder/results.js +95 -4
  162. package/dist/tools/tool-builder/results.js.map +1 -1
  163. package/manifest.json +1 -1
  164. package/package.json +4 -2
  165. package/skills/yt-builder-mcp/SKILL.md +146 -81
package/README.md CHANGED
@@ -63,22 +63,25 @@ The wizard auto-detects and configures the following clients:
63
63
 
64
64
  ## Tool surface (gateway model)
65
65
 
66
- The server registers **29 domain tools + 1 gateway = 30 reachable** tools,
67
- of which **23 are advertised in `tools/list`** (well under Cursor's ~40-tool
66
+ The server registers **31 domain tools + 1 gateway = 32 reachable** tools,
67
+ of which **27 are advertised in `tools/list`** (well under Cursor's ~40-tool
68
68
  cap):
69
69
 
70
70
  - **2 direct top-level tools** (always in `tools/list`):
71
71
  `yootheme_builder_health`, `yootheme_builder_diagnose`. The
72
72
  "the gateway itself might be broken" escape hatch.
73
- - **20 essential forwarded tools** (always in `tools/list`): the most-used
74
- reads and writes (`pages_list`, `pages_create`, `pages_delete`, `get_etag`,
75
- `element_list`, `element_add`, `element_update_settings`, `sources_list`,
76
- `element_types_list`, `inspect_multi_items_binding`, and the multi-site
77
- `sites_list` / `sites_test`, among others).
73
+ - **24 essential forwarded tools** (always in `tools/list`): the most-used
74
+ reads and writes (`pages_list`, `pages_create`, `pages_delete`,
75
+ `page_dynamize`, `get_etag`, `element_list`, `element_add`,
76
+ `element_update_settings`, `sources_list`, `element_types_list`,
77
+ `inspect_multi_items_binding`, the multi-site `sites_list` / `sites_test` /
78
+ `use_site`, and the bind→save→publish chain `element_bind_source` /
79
+ `page_save` / `page_publish`, among others).
78
80
  - **1 gateway tool** (`yootheme_builder_advanced`): exposes the remaining
79
- **7 advanced tools** behind a single entry. Call
80
- `yootheme_builder_advanced({ tool: "<name>" })` for discovery (returns the
81
- schema) or `({ tool, arguments })` to execute.
81
+ **5 advanced tools** behind a single entry (`page_get_schema`,
82
+ `element_get_binding`, `element_unbind_source`, `clean_implode_directives`,
83
+ `inspect_sublayout`). Call `yootheme_builder_advanced({ tool: "<name>" })`
84
+ for discovery (returns the schema) or `({ tool, arguments })` to execute.
82
85
 
83
86
  See `skills/yt-builder-mcp/SKILL.md` for the full catalog and canonical
84
87
  workflows, and `docs/TOOL-CATALOG.md` for an auto-generated reference.
@@ -93,6 +96,7 @@ workflows, and `docs/TOOL-CATALOG.md` for an auto-generated reference.
93
96
  | Elements | 7 | `element_list`, `element_get`, `element_add`, `element_update_settings`, `element_move`, `element_clone`, `element_delete` |
94
97
  | Sources | 5 | `sources_list`, `element_get_binding`, `element_bind_source`, `element_unbind_source`, `inspect_multi_items_binding` |
95
98
  | Inspection | 3 | `element_types_list`, `element_type_get_schema`, `clean_implode_directives` |
99
+ | Sublayout | 1 | `inspect_sublayout` (F154 — fragment subtree + render-time inner-grid gate; advanced/gateway-routed) |
96
100
  | Gateway | 1 | `advanced` |
97
101
 
98
102
  All tool names are prefixed with `yootheme_builder_` at the MCP server boundary.
@@ -120,7 +124,7 @@ client without per-client write logic.
120
124
 
121
125
  The skill ships with the 5 canonical workflows (build hero, bind
122
126
  source, clone section, diagnose 401, add custom element) plus a
123
- 23-tool auto-generated catalog appendix.
127
+ 26-tool auto-generated catalog appendix.
124
128
 
125
129
  ## DXT bundle (Claude Desktop one-click install)
126
130
 
@@ -0,0 +1,63 @@
1
+ /**
2
+ * packages/mcp/src/catalog/build-catalog.ts — net-new (Slice 0b Task 12).
3
+ *
4
+ * Builds the machine-readable tool catalogue (SSOT for the PHP-served MCP
5
+ * surface). Modelled on API Mapper's
6
+ * `packages/apimapper-mcp/src/catalog/build-catalog.ts`, adapted to yt-builder's
7
+ * `buildAllTools(pool)` entrypoint:
8
+ *
9
+ * - yt-builder's tools carry `inputSchema` as a RAW Zod shape (ZodRawShape,
10
+ * no `_zod` marker), so `toJsonSchema` always takes the raw-shape branch
11
+ * (`z.object(inputSchema)`).
12
+ * - `tier` is derived per-name from the gateway essentials lists
13
+ * (`isEssential || isDirectTopLevel` ⇒ essential, else advanced). There is
14
+ * NO separate advanced registry to query.
15
+ * - The 32 catalogued tools are exactly what `buildAllTools` returns; the two
16
+ * top-level gateways are registered at server level (server.ts), not here.
17
+ *
18
+ * @license MIT
19
+ */
20
+ /**
21
+ * Convert a tool inputSchema to JSON Schema. yt-builder tools yield a RAW Zod
22
+ * shape (ZodRawShape) — the `_zod` guard keeps this a faithful port of the
23
+ * API Mapper utility, but for this server the raw-shape branch
24
+ * (`z.object(inputSchema)`) is the one that always fires. Native
25
+ * `z.toJSONSchema` (zod 4).
26
+ */
27
+ export declare function toJsonSchema(inputSchema: unknown): object;
28
+ /**
29
+ * Post-process a generated JSON Schema for MCP-client compatibility + semantic
30
+ * correctness, recursively at EVERY schema node. Two structural fixes:
31
+ *
32
+ * A1 (#4): drop from a node's `required` array any property that carries a
33
+ * `default`. Zod `.default()` lands the key in `required` (a zod4 toJSONSchema
34
+ * quirk), but a field WITH a default is semantically OPTIONAL — advertising it
35
+ * as required makes a strict client (and the PHP gateway validator) reject a
36
+ * call that legitimately omits it.
37
+ *
38
+ * A2 (#1): replace an EMPTY-object `additionalProperties: {}` (what
39
+ * z.record(z.string(), z.unknown()) emits) with `true`. The Anthropic client
40
+ * rejects an empty `{}` schema for additionalProperties; `true` is the
41
+ * faithful "any value" equivalent. A boolean `false`
42
+ * (z.object().strict()) is left untouched.
43
+ *
44
+ * Recurses through every schema-bearing position zod4 emits: `properties`
45
+ * values, `items` (object or tuple array), an object-valued
46
+ * `additionalProperties`, and the `oneOf`/`anyOf`/`allOf`/`prefixItems` branch
47
+ * arrays.
48
+ */
49
+ export declare function normalizeJsonSchema(node: unknown): void;
50
+ export interface CatalogTool {
51
+ name: string;
52
+ description: string;
53
+ jsonSchema: object;
54
+ annotations: Record<string, unknown>;
55
+ tier: 'essential' | 'advanced';
56
+ }
57
+ export interface Catalog {
58
+ version: string;
59
+ generatedFrom: 'zod';
60
+ tools: CatalogTool[];
61
+ }
62
+ export declare function buildCatalog(): Promise<Catalog>;
63
+ //# sourceMappingURL=build-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-catalog.d.ts","sourceRoot":"","sources":["../../src/catalog/build-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AASH;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,OAAO,GAAG,MAAM,CAezD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CA+CvD;AAED,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,IAAI,EAAE,WAAW,GAAG,UAAU,CAAC;CAClC;AACD,MAAM,WAAW,OAAO;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,KAAK,CAAC;IACrB,KAAK,EAAE,WAAW,EAAE,CAAC;CACxB;AA6BD,wBAAsB,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,CAiBrD"}
@@ -0,0 +1,166 @@
1
+ /**
2
+ * packages/mcp/src/catalog/build-catalog.ts — net-new (Slice 0b Task 12).
3
+ *
4
+ * Builds the machine-readable tool catalogue (SSOT for the PHP-served MCP
5
+ * surface). Modelled on API Mapper's
6
+ * `packages/apimapper-mcp/src/catalog/build-catalog.ts`, adapted to yt-builder's
7
+ * `buildAllTools(pool)` entrypoint:
8
+ *
9
+ * - yt-builder's tools carry `inputSchema` as a RAW Zod shape (ZodRawShape,
10
+ * no `_zod` marker), so `toJsonSchema` always takes the raw-shape branch
11
+ * (`z.object(inputSchema)`).
12
+ * - `tier` is derived per-name from the gateway essentials lists
13
+ * (`isEssential || isDirectTopLevel` ⇒ essential, else advanced). There is
14
+ * NO separate advanced registry to query.
15
+ * - The 32 catalogued tools are exactly what `buildAllTools` returns; the two
16
+ * top-level gateways are registered at server level (server.ts), not here.
17
+ *
18
+ * @license MIT
19
+ */
20
+ import { z } from 'zod';
21
+ import { buildAllTools } from '../tools/index.js';
22
+ import { isEssential, isDirectTopLevel } from '../gateway/essentials.js';
23
+ import { SiteRegistry } from '../sites/registry.js';
24
+ import { ClientPool } from '../sites/client-pool.js';
25
+ import { PlainSecretResolver } from '../sites/secret-resolver.js';
26
+ /**
27
+ * Convert a tool inputSchema to JSON Schema. yt-builder tools yield a RAW Zod
28
+ * shape (ZodRawShape) — the `_zod` guard keeps this a faithful port of the
29
+ * API Mapper utility, but for this server the raw-shape branch
30
+ * (`z.object(inputSchema)`) is the one that always fires. Native
31
+ * `z.toJSONSchema` (zod 4).
32
+ */
33
+ export function toJsonSchema(inputSchema) {
34
+ try {
35
+ if (inputSchema && typeof inputSchema === 'object') {
36
+ const isZodObject = '_zod' in inputSchema;
37
+ const schema = isZodObject
38
+ ? inputSchema
39
+ : z.object(inputSchema);
40
+ const json = z.toJSONSchema(schema);
41
+ normalizeJsonSchema(json);
42
+ return json;
43
+ }
44
+ }
45
+ catch {
46
+ /* malformed/unsupported shape → safe fallback */
47
+ }
48
+ return { type: 'object' };
49
+ }
50
+ /**
51
+ * Post-process a generated JSON Schema for MCP-client compatibility + semantic
52
+ * correctness, recursively at EVERY schema node. Two structural fixes:
53
+ *
54
+ * A1 (#4): drop from a node's `required` array any property that carries a
55
+ * `default`. Zod `.default()` lands the key in `required` (a zod4 toJSONSchema
56
+ * quirk), but a field WITH a default is semantically OPTIONAL — advertising it
57
+ * as required makes a strict client (and the PHP gateway validator) reject a
58
+ * call that legitimately omits it.
59
+ *
60
+ * A2 (#1): replace an EMPTY-object `additionalProperties: {}` (what
61
+ * z.record(z.string(), z.unknown()) emits) with `true`. The Anthropic client
62
+ * rejects an empty `{}` schema for additionalProperties; `true` is the
63
+ * faithful "any value" equivalent. A boolean `false`
64
+ * (z.object().strict()) is left untouched.
65
+ *
66
+ * Recurses through every schema-bearing position zod4 emits: `properties`
67
+ * values, `items` (object or tuple array), an object-valued
68
+ * `additionalProperties`, and the `oneOf`/`anyOf`/`allOf`/`prefixItems` branch
69
+ * arrays.
70
+ */
71
+ export function normalizeJsonSchema(node) {
72
+ if (Array.isArray(node)) {
73
+ for (const child of node)
74
+ normalizeJsonSchema(child);
75
+ return;
76
+ }
77
+ if (!node || typeof node !== 'object')
78
+ return;
79
+ const obj = node;
80
+ // A2: empty-object additionalProperties → true (recurse into a non-empty one).
81
+ if ('additionalProperties' in obj) {
82
+ const ap = obj.additionalProperties;
83
+ if (ap &&
84
+ typeof ap === 'object' &&
85
+ !Array.isArray(ap) &&
86
+ Object.keys(ap).length === 0) {
87
+ obj.additionalProperties = true;
88
+ }
89
+ else {
90
+ normalizeJsonSchema(ap);
91
+ }
92
+ }
93
+ // A1: drop default-bearing keys from THIS node's `required`.
94
+ const props = obj.properties;
95
+ if (Array.isArray(obj.required) && props && typeof props === 'object') {
96
+ const propMap = props;
97
+ const kept = obj.required.filter((key) => {
98
+ if (typeof key !== 'string')
99
+ return true;
100
+ const p = propMap[key];
101
+ return !(p && typeof p === 'object' && 'default' in p);
102
+ });
103
+ // An emptied required array is dropped (zod itself omits an empty `required`).
104
+ if (kept.length === 0)
105
+ delete obj.required;
106
+ else
107
+ obj.required = kept;
108
+ }
109
+ // Recurse into the standard schema-bearing positions.
110
+ if (props && typeof props === 'object') {
111
+ for (const v of Object.values(props)) {
112
+ normalizeJsonSchema(v);
113
+ }
114
+ }
115
+ if ('items' in obj)
116
+ normalizeJsonSchema(obj.items);
117
+ for (const kw of ['oneOf', 'anyOf', 'allOf', 'prefixItems']) {
118
+ if (kw in obj)
119
+ normalizeJsonSchema(obj[kw]);
120
+ }
121
+ }
122
+ /**
123
+ * One-site, in-memory, zero-IO {@link ClientPool}. Mirrors the stub
124
+ * `scripts/extract-tools.mjs` wires (a single `wordpress` site with an inline
125
+ * stub bearer), but importing the classes from `src/sites/*` rather than the
126
+ * compiled `dist/index.js` barrel. `buildAllTools` only reads `pool.registry`
127
+ * for tool registration and never resolves a bearer or hits the network at
128
+ * catalogue-build time.
129
+ */
130
+ function stubPool() {
131
+ const stubFile = {
132
+ schema_version: 1,
133
+ default_site_id: 'build-catalog-stub',
134
+ sites: [
135
+ {
136
+ site_id: 'build-catalog-stub',
137
+ url: 'https://example.com',
138
+ platform: 'wordpress',
139
+ bearer: 'build-catalog-stub',
140
+ is_default: true,
141
+ },
142
+ ],
143
+ };
144
+ const registry = new SiteRegistry(stubFile);
145
+ const resolver = new PlainSecretResolver();
146
+ return new ClientPool(registry, resolver);
147
+ }
148
+ export async function buildCatalog() {
149
+ const tools = buildAllTools(stubPool()); // flat AnyToolDefinition[] — 32 entries
150
+ const catalogTools = tools.map((t) => ({
151
+ name: t.name,
152
+ description: t.description ?? '',
153
+ jsonSchema: toJsonSchema(t.inputSchema),
154
+ annotations: t.annotations ?? {},
155
+ tier: isEssential(t.name) || isDirectTopLevel(t.name) ? 'essential' : 'advanced',
156
+ }));
157
+ if (catalogTools.length === 0) {
158
+ throw new Error('buildCatalog produced 0 tools — registration likely failed');
159
+ }
160
+ return {
161
+ version: process.env.npm_package_version ?? '0.0.0',
162
+ generatedFrom: 'zod',
163
+ tools: catalogTools,
164
+ };
165
+ }
166
+ //# sourceMappingURL=build-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-catalog.js","sourceRoot":"","sources":["../../src/catalog/build-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,WAAoB;IAC7C,IAAI,CAAC;QACD,IAAI,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;YACjD,MAAM,WAAW,GAAG,MAAM,IAAK,WAAuC,CAAC;YACvE,MAAM,MAAM,GAAG,WAAW;gBACtB,CAAC,CAAE,WAA4B;gBAC/B,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAA4B,CAAC,CAAC;YAC7C,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC,MAAM,CAAW,CAAC;YAC9C,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAC1B,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACL,iDAAiD;IACrD,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC9B,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAa;IAC7C,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,KAAK,MAAM,KAAK,IAAI,IAAI;YAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACrD,OAAO;IACX,CAAC;IACD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO;IAC9C,MAAM,GAAG,GAAG,IAA+B,CAAC;IAE5C,+EAA+E;IAC/E,IAAI,sBAAsB,IAAI,GAAG,EAAE,CAAC;QAChC,MAAM,EAAE,GAAG,GAAG,CAAC,oBAAoB,CAAC;QACpC,IACI,EAAE;YACF,OAAO,EAAE,KAAK,QAAQ;YACtB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,EAAY,CAAC,CAAC,MAAM,KAAK,CAAC,EACxC,CAAC;YACC,GAAG,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACpC,CAAC;aAAM,CAAC;YACJ,mBAAmB,CAAC,EAAE,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;IAED,6DAA6D;IAC7D,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC;IAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACpE,MAAM,OAAO,GAAG,KAAgC,CAAC;QACjD,MAAM,IAAI,GAAI,GAAG,CAAC,QAAsB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;YACpD,IAAI,OAAO,GAAG,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAC;YACzC,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YACvB,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,SAAS,IAAK,CAAY,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QACH,+EAA+E;QAC/E,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,GAAG,CAAC,QAAQ,CAAC;;YACtC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC7B,CAAC;IAED,sDAAsD;IACtD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAgC,CAAC,EAAE,CAAC;YAC9D,mBAAmB,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;IACL,CAAC;IACD,IAAI,OAAO,IAAI,GAAG;QAAE,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnD,KAAK,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CAAU,EAAE,CAAC;QACnE,IAAI,EAAE,IAAI,GAAG;YAAE,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;AACL,CAAC;AAeD;;;;;;;GAOG;AACH,SAAS,QAAQ;IACb,MAAM,QAAQ,GAAG;QACb,cAAc,EAAE,CAAU;QAC1B,eAAe,EAAE,oBAAoB;QACrC,KAAK,EAAE;YACH;gBACI,OAAO,EAAE,oBAAoB;gBAC7B,GAAG,EAAE,qBAAqB;gBAC1B,QAAQ,EAAE,WAAoB;gBAC9B,MAAM,EAAE,oBAAoB;gBAC5B,UAAU,EAAE,IAAI;aACnB;SACJ;KACJ,CAAC;IACF,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAI,mBAAmB,EAAE,CAAC;IAC3C,OAAO,IAAI,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY;IAC9B,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,wCAAwC;IACjF,MAAM,YAAY,GAAkB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAClD,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,EAAE;QAChC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC;QACvC,WAAW,EAAG,CAAC,CAAC,WAAuC,IAAI,EAAE;QAC7D,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU;KACnF,CAAC,CAAC,CAAC;IACJ,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAClF,CAAC;IACD,OAAO;QACH,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,OAAO;QACnD,aAAa,EAAE,KAAK;QACpB,KAAK,EAAE,YAAY;KACtB,CAAC;AACN,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * `yootheme_builder_advanced_read` — a READ-ONLY sibling of the
3
+ * `yootheme_builder_advanced` gateway (F200a, 2026-06-12).
4
+ *
5
+ * The Desktop-E2E #2 forensic showed approval-gates firing on EVERY advanced
6
+ * call. Root cause: the single `yootheme_builder_advanced` gateway is annotated
7
+ * `readOnlyHint:false` + `destructiveHint:true` (correctly — it can route into
8
+ * delete / unbind handlers), so spec-compliant MCP hosts gate it
9
+ * conservatively. The read-only L2 subtools (page_get_schema,
10
+ * element_get_binding, inspect_sublayout) inherited that gate even though they
11
+ * mutate nothing — a per-call approval tax on pure inspection.
12
+ *
13
+ * This second gateway WHITELISTS only read-only advanced entries (annotation
14
+ * `readOnlyHint:true`) and is itself annotated `readOnly()`, so hosts can
15
+ * auto-allow it. Writing subtools (unbind, clean-implode) stay reachable ONLY
16
+ * through the existing (gated) `yootheme_builder_advanced` — defense-in-depth:
17
+ * the read gateway physically cannot route to them (they are not in its
18
+ * registry view).
19
+ *
20
+ * Two modes mirror the write gateway:
21
+ * { tool } → discovery (target schema + annotations; no invoke).
22
+ * { tool, arguments } → execution (strict-validated, then handler called).
23
+ *
24
+ * @license MIT
25
+ */
26
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
27
+ import type { AdvancedToolEntry } from './capturing-server.js';
28
+ /** The pinned name — never rename (host configs + skill docs reference it). */
29
+ export declare const ADVANCED_READ_TOOL_NAME = "yootheme_builder_advanced_read";
30
+ /**
31
+ * Registers `yootheme_builder_advanced_read` on the real McpServer.
32
+ *
33
+ * @param realServer the McpServer that exposes the read gateway tool
34
+ * @param advancedRegistry the captured non-essential tools (from CapturingServer)
35
+ */
36
+ export declare function registerAdvancedReadTool(realServer: McpServer, advancedRegistry: Map<string, AdvancedToolEntry>): void;
37
+ //# sourceMappingURL=advanced-read-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advanced-read-tool.d.ts","sourceRoot":"","sources":["../../src/gateway/advanced-read-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAM/D,+EAA+E;AAC/E,eAAO,MAAM,uBAAuB,mCAAmC,CAAC;AAgExE;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACpC,UAAU,EAAE,SAAS,EACrB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,GACjD,IAAI,CAwEN"}
@@ -0,0 +1,156 @@
1
+ /**
2
+ * `yootheme_builder_advanced_read` — a READ-ONLY sibling of the
3
+ * `yootheme_builder_advanced` gateway (F200a, 2026-06-12).
4
+ *
5
+ * The Desktop-E2E #2 forensic showed approval-gates firing on EVERY advanced
6
+ * call. Root cause: the single `yootheme_builder_advanced` gateway is annotated
7
+ * `readOnlyHint:false` + `destructiveHint:true` (correctly — it can route into
8
+ * delete / unbind handlers), so spec-compliant MCP hosts gate it
9
+ * conservatively. The read-only L2 subtools (page_get_schema,
10
+ * element_get_binding, inspect_sublayout) inherited that gate even though they
11
+ * mutate nothing — a per-call approval tax on pure inspection.
12
+ *
13
+ * This second gateway WHITELISTS only read-only advanced entries (annotation
14
+ * `readOnlyHint:true`) and is itself annotated `readOnly()`, so hosts can
15
+ * auto-allow it. Writing subtools (unbind, clean-implode) stay reachable ONLY
16
+ * through the existing (gated) `yootheme_builder_advanced` — defense-in-depth:
17
+ * the read gateway physically cannot route to them (they are not in its
18
+ * registry view).
19
+ *
20
+ * Two modes mirror the write gateway:
21
+ * { tool } → discovery (target schema + annotations; no invoke).
22
+ * { tool, arguments } → execution (strict-validated, then handler called).
23
+ *
24
+ * @license MIT
25
+ */
26
+ import { z } from 'zod';
27
+ import { readOnly } from '../tools/tool-builder.js';
28
+ import { isEssential, isDirectTopLevel } from './essentials.js';
29
+ import { discoveryResult } from './advanced-tool/discovery.js';
30
+ import { renderGroupedList } from './advanced-tool/domains.js';
31
+ import { errorResult, executeAdvancedTool } from './advanced-tool/execute.js';
32
+ /** The pinned name — never rename (host configs + skill docs reference it). */
33
+ export const ADVANCED_READ_TOOL_NAME = 'yootheme_builder_advanced_read';
34
+ /**
35
+ * True iff a captured advanced entry advertises `readOnlyHint:true`. The
36
+ * single source of truth for "is this subtool safe to auto-allow" — the same
37
+ * annotation the host reads. No name allowlist to drift: adding a new
38
+ * read-only advanced tool surfaces here automatically.
39
+ */
40
+ function isReadOnlyEntry(entry) {
41
+ const annotations = entry.config.annotations;
42
+ return annotations?.readOnlyHint === true;
43
+ }
44
+ /**
45
+ * Builds the read-gateway's input schema.
46
+ *
47
+ * F205 (P2): `tool` is a free z.string(), NOT a z.enum — same trap as the write
48
+ * gateway. The MCP SDK validates the inputSchema before the handler runs; an
49
+ * enum rejected first-class names with a raw McpError -32602 so the handler's
50
+ * not_read_only / first_class_tool / unknown steering never ran. A plain string
51
+ * lets every name reach the handler.
52
+ */
53
+ function readGatewayInputSchema() {
54
+ return {
55
+ tool: z.string().describe('Read-only advanced tool to route to (e.g. "yootheme_builder_page_get_schema"). ' +
56
+ 'Must be one of the read-only advanced tools listed in this description. ' +
57
+ 'First-class tools (yootheme_builder_health, ...) are called DIRECTLY; ' +
58
+ 'writing tools use yootheme_builder_advanced. ' +
59
+ 'Omit `arguments` to discover its schema first.'),
60
+ arguments: z.record(z.string(), z.unknown()).optional().describe('Arguments for the target tool. Omit for discovery mode ' +
61
+ "(returns the tool's schema + annotations)."),
62
+ // `input` is a tolerated alias for `arguments` (same back-compat carve
63
+ // the write gateway makes — see register.ts F107).
64
+ input: z.record(z.string(), z.unknown()).optional().describe('Alias for `arguments` (tolerated for back-compat). Prefer `arguments`.'),
65
+ };
66
+ }
67
+ /** Builds the read-gateway's description, listing only the whitelisted read-only tools. */
68
+ function buildReadDescription(readOnlyNames) {
69
+ const count = readOnlyNames.length;
70
+ return (`Routes to ${String(count)} READ-ONLY advanced YOOtheme Builder tool` +
71
+ `${count === 1 ? '' : 's'}. ` +
72
+ // F214: stop the model habitually routing first-class tools through the
73
+ // gateway (a wasted invalid_arguments cycle each time). State the scope
74
+ // boundary up front, before the grouped-tool list.
75
+ 'ONLY for the read-only advanced tools listed below — every tool that ' +
76
+ 'appears directly in tools/list is FIRST-CLASS: call it directly, never via this gateway. ' +
77
+ 'Itself read-only (no write-approval gate) — prefer it over ' +
78
+ 'yootheme_builder_advanced for inspection. Call { tool } for its ' +
79
+ 'schema, or { tool, arguments } to run it.' +
80
+ '\n\nAvailable read-only advanced tools by domain:\n' +
81
+ `${renderGroupedList(readOnlyNames)}\n\n` +
82
+ 'Writing tools (unbind, clean-implode): use yootheme_builder_advanced. ' +
83
+ 'Connectivity: yootheme_builder_health / yootheme_builder_diagnose.');
84
+ }
85
+ /**
86
+ * Registers `yootheme_builder_advanced_read` on the real McpServer.
87
+ *
88
+ * @param realServer the McpServer that exposes the read gateway tool
89
+ * @param advancedRegistry the captured non-essential tools (from CapturingServer)
90
+ */
91
+ export function registerAdvancedReadTool(realServer, advancedRegistry) {
92
+ // Build the read-only view of the registry — the gateway literally cannot
93
+ // see (let alone route to) writing tools.
94
+ const readOnlyRegistry = new Map();
95
+ for (const [name, entry] of advancedRegistry) {
96
+ if (isReadOnlyEntry(entry)) {
97
+ readOnlyRegistry.set(name, entry);
98
+ }
99
+ }
100
+ const readOnlyNames = [...readOnlyRegistry.keys()].sort();
101
+ realServer.registerTool(ADVANCED_READ_TOOL_NAME, {
102
+ title: 'Advanced Read-Only Gateway',
103
+ description: buildReadDescription(readOnlyNames),
104
+ inputSchema: readGatewayInputSchema(),
105
+ // F200a: read-only annotation so hosts auto-allow. Unlike the write
106
+ // gateway, this one can never reach a mutating handler.
107
+ annotations: readOnly('Advanced Read-Only Gateway'),
108
+ }, async (args, extra) => {
109
+ const entry = readOnlyRegistry.get(args.tool);
110
+ if (!entry) {
111
+ // F205: a WRITE subtool name that exists in the FULL advanced
112
+ // registry but not the read whitelist gets a targeted steer to
113
+ // the write gateway. This branch MUST stay ahead of the
114
+ // first_class_tool check (an advanced write subtool is not a
115
+ // first-class tool).
116
+ if (advancedRegistry.has(args.tool)) {
117
+ return errorResult({
118
+ message: `"${args.tool}" is not a read-only tool — it mutates state and is not ` +
119
+ 'reachable through yootheme_builder_advanced_read.',
120
+ code: 'not_read_only',
121
+ suggestion: `Call it through the full gateway instead: ` +
122
+ `yootheme_builder_advanced({ tool: "${args.tool}", arguments: {...} }).`,
123
+ details: { tool: args.tool },
124
+ });
125
+ }
126
+ // F205: a first-class tool (L1 essential or L3 direct
127
+ // top-level) is steered to a direct call rather than treated
128
+ // as a typo.
129
+ if (isEssential(args.tool) || isDirectTopLevel(args.tool)) {
130
+ return errorResult({
131
+ message: `"${args.tool}" is a FIRST-CLASS tool — it appears directly in tools/list.`,
132
+ code: 'first_class_tool',
133
+ suggestion: `Call "${args.tool}" directly instead of routing it through ` +
134
+ 'yootheme_builder_advanced_read. This gateway only routes the read-only ' +
135
+ 'advanced tools listed in its description.',
136
+ details: { tool: args.tool },
137
+ });
138
+ }
139
+ return errorResult({
140
+ message: `Unknown read-only advanced tool: "${args.tool}".`,
141
+ code: 'unknown_read_tool',
142
+ suggestion: 'This gateway routes ONLY read-only advanced tools. If you meant a ' +
143
+ 'WRITING tool (unbind, clean-implode), use yootheme_builder_advanced ' +
144
+ 'instead. Otherwise pick one of the valid read-only tools below.\n\n' +
145
+ `Valid read-only advanced tools by domain:\n${renderGroupedList(readOnlyNames)}`,
146
+ details: { valid_read_tools_by_domain: renderGroupedList(readOnlyNames) },
147
+ });
148
+ }
149
+ // `arguments` is canonical; `input` is a tolerated alias (F107).
150
+ const callArgs = args.arguments ?? args.input;
151
+ if (callArgs === undefined)
152
+ return discoveryResult(args.tool, entry);
153
+ return executeAdvancedTool(args.tool, entry, callArgs, extra);
154
+ });
155
+ }
156
+ //# sourceMappingURL=advanced-read-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advanced-read-tool.js","sourceRoot":"","sources":["../../src/gateway/advanced-read-tool.ts"],"names":[],"mappings":"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"}
@@ -23,14 +23,19 @@ import type { AdvancedToolEntry } from '../capturing-server.js';
23
23
  export declare const DOMAIN_ORDER: readonly ["pages", "elements", "sources", "multi-items", "inspection"];
24
24
  /**
25
25
  * Prefix→domain routing table. Each domain accepts plural
26
- * (`pages_list`) + singular (`page_save`, `element_add`, `source_…`)
27
- * stems via `stem.startsWith(prefix + '_')` or full-equality. Anything
28
- * outside the taxonomy falls through to 'misc'.
26
+ * (`pages_list`) + singular (`page_get_schema`, `element_unbind_source`,
27
+ * `source_…`) stems via `stem.startsWith(prefix + '_')` or full-equality.
28
+ * Anything outside the taxonomy falls through to 'misc'.
29
29
  *
30
30
  * The `multi-items` domain captures the YT-Pro Multi-Items binding
31
31
  * pattern tools (inspect / clean-implode). Stems used:
32
32
  * - `inspect_multi_items_binding` → starts with `inspect_multi_items`
33
33
  * - `clean_implode_directives` → starts with `clean_implode`
34
+ *
35
+ * The `inspection` domain captures layout inspectors that surface a
36
+ * YT-Pro footgun the raw layout tree hides. Stems used:
37
+ * - `inspect_sublayout` (F154) → full-equality `inspect_sublayout`
38
+ * (the YT5 `< SUBLAYOUT` fragment-subtree + inner-grid-gate inspector).
34
39
  */
35
40
  export declare const DOMAIN_PREFIX_MAP: Record<(typeof DOMAIN_ORDER)[number], readonly string[]>;
36
41
  export declare const TOOL_PREFIX = "yootheme_builder_";
@@ -40,6 +45,16 @@ export declare function domainOf(toolName: string): string;
40
45
  export declare function groupByDomain(toolNames: string[]): Map<string, string[]>;
41
46
  /** Renders the grouped tool list as readable text (used in description + errors). */
42
47
  export declare function renderGroupedList(toolNames: string[]): string;
48
+ /**
49
+ * F176 (2026-06-12): the former "★ Bind a source" callout was removed. The
50
+ * bind tool (`yootheme_builder_element_bind_source`) plus `page_save` /
51
+ * `page_publish` were promoted to L1 by F116 and live in `tools/list` as
52
+ * first-class entries; the DISJOINT-LANE invariant guarantees they are NEVER
53
+ * in the advanced registry, so the gateway description must not advertise a
54
+ * gateway wrap for them (it would steer agents into an `unknown_tool` dead
55
+ * end on a current build). The binding workflow is now discoverable directly
56
+ * in `tools/list`.
57
+ */
43
58
  /** Builds the gateway tool's description, grouping every advanced tool by domain. */
44
59
  export declare function buildDescription(toolNames: string[]): string;
45
60
  /** Re-export the AdvancedToolEntry type so consumers don't need a second import path. */
@@ -1 +1 @@
1
- {"version":3,"file":"domains.d.ts","sourceRoot":"","sources":["../../../src/gateway/advanced-tool/domains.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,wEAAyE,CAAC;AAEnG;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAMtF,CAAC;AAEF,eAAO,MAAM,WAAW,sBAAsB,CAAC;AAE/C,8FAA8F;AAC9F,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQjD;AAED,uEAAuE;AACvE,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAYxE;AAED,qFAAqF;AACrF,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,CAO7D;AAED,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,CAe5D;AAED,yFAAyF;AACzF,YAAY,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"domains.d.ts","sourceRoot":"","sources":["../../../src/gateway/advanced-tool/domains.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,wEAAyE,CAAC;AAEnG;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAMtF,CAAC;AAEF,eAAO,MAAM,WAAW,sBAAsB,CAAC;AAE/C,8FAA8F;AAC9F,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQjD;AAED,uEAAuE;AACvE,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAYxE;AAED,qFAAqF;AACrF,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,CAO7D;AAED;;;;;;;;;GASG;AAEH,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,CAmB5D;AAED,yFAAyF;AACzF,YAAY,EAAE,iBAAiB,EAAE,CAAC"}
@@ -22,21 +22,26 @@
22
22
  export const DOMAIN_ORDER = ['pages', 'elements', 'sources', 'multi-items', 'inspection'];
23
23
  /**
24
24
  * Prefix→domain routing table. Each domain accepts plural
25
- * (`pages_list`) + singular (`page_save`, `element_add`, `source_…`)
26
- * stems via `stem.startsWith(prefix + '_')` or full-equality. Anything
27
- * outside the taxonomy falls through to 'misc'.
25
+ * (`pages_list`) + singular (`page_get_schema`, `element_unbind_source`,
26
+ * `source_…`) stems via `stem.startsWith(prefix + '_')` or full-equality.
27
+ * Anything outside the taxonomy falls through to 'misc'.
28
28
  *
29
29
  * The `multi-items` domain captures the YT-Pro Multi-Items binding
30
30
  * pattern tools (inspect / clean-implode). Stems used:
31
31
  * - `inspect_multi_items_binding` → starts with `inspect_multi_items`
32
32
  * - `clean_implode_directives` → starts with `clean_implode`
33
+ *
34
+ * The `inspection` domain captures layout inspectors that surface a
35
+ * YT-Pro footgun the raw layout tree hides. Stems used:
36
+ * - `inspect_sublayout` (F154) → full-equality `inspect_sublayout`
37
+ * (the YT5 `< SUBLAYOUT` fragment-subtree + inner-grid-gate inspector).
33
38
  */
34
39
  export const DOMAIN_PREFIX_MAP = {
35
40
  pages: ['pages', 'page'],
36
41
  elements: ['elements', 'element'],
37
42
  sources: ['sources', 'source'],
38
43
  'multi-items': ['inspect_multi_items', 'clean_implode'],
39
- inspection: ['inspection'],
44
+ inspection: ['inspection', 'inspect_sublayout'],
40
45
  };
41
46
  export const TOOL_PREFIX = 'yootheme_builder_';
42
47
  /** Maps a tool name to its display domain (the first underscore-segment after the prefix). */
@@ -76,6 +81,16 @@ export function renderGroupedList(toolNames) {
76
81
  }
77
82
  return lines.join('\n');
78
83
  }
84
+ /**
85
+ * F176 (2026-06-12): the former "★ Bind a source" callout was removed. The
86
+ * bind tool (`yootheme_builder_element_bind_source`) plus `page_save` /
87
+ * `page_publish` were promoted to L1 by F116 and live in `tools/list` as
88
+ * first-class entries; the DISJOINT-LANE invariant guarantees they are NEVER
89
+ * in the advanced registry, so the gateway description must not advertise a
90
+ * gateway wrap for them (it would steer agents into an `unknown_tool` dead
91
+ * end on a current build). The binding workflow is now discoverable directly
92
+ * in `tools/list`.
93
+ */
79
94
  /** Builds the gateway tool's description, grouping every advanced tool by domain. */
80
95
  export function buildDescription(toolNames) {
81
96
  const toolCount = toolNames.length;
@@ -84,11 +99,15 @@ export function buildDescription(toolNames) {
84
99
  const domainList = domains.join(', ');
85
100
  return (`Routes to ${String(toolCount)} advanced YOOtheme Builder tools across ${String(domainCount)} ` +
86
101
  `domain${domainCount === 1 ? '' : 's'}${domainCount > 0 ? ` (${domainList})` : ''}. ` +
87
- 'Call with { tool } for a target\'s schema + annotations, or ' +
88
- '{ tool, arguments } to run it. The target tool\'s own confirmation ' +
89
- 'guards and behavior stay in effect.\n\n' +
90
- 'Available advanced tools by domain:\n' +
102
+ // F214: stop the model habitually routing first-class tools through the
103
+ // gateway (a wasted invalid_arguments cycle each time). State the scope
104
+ // boundary up front, before the grouped-tool list.
105
+ 'ONLY for the advanced tools listed below — every tool that appears ' +
106
+ 'directly in tools/list is FIRST-CLASS: call it directly, never via this gateway. ' +
107
+ 'Call { tool } for its schema, or { tool, arguments } to run it ' +
108
+ '(the target\'s own confirm guards stay in effect).' +
109
+ '\n\nAvailable advanced tools by domain:\n' +
91
110
  `${renderGroupedList(toolNames)}\n\n` +
92
- 'For connectivity diagnostics use yootheme_builder_health or yootheme_builder_diagnose (top-level).');
111
+ 'Connectivity: yootheme_builder_health / yootheme_builder_diagnose.');
93
112
  }
94
113
  //# sourceMappingURL=domains.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"domains.js","sourceRoot":"","sources":["../../../src/gateway/advanced-tool/domains.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"domains.js","sourceRoot":"","sources":["../../../src/gateway/advanced-tool/domains.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/gateway/advanced-tool/register.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAmBhE;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAChC,UAAU,EAAE,SAAS,EACrB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,GACjD,IAAI,CA+CN"}
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/gateway/advanced-tool/register.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AA0ChE;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAChC,UAAU,EAAE,SAAS,EACrB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,GACjD,IAAI,CAyDN"}