@wootsup/yt-builder-mcp 1.1.7 → 1.2.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 (157) hide show
  1. package/README.md +7 -7
  2. package/bin/yt-builder-mcp.js +55 -40
  3. package/dist/auth.d.ts +18 -0
  4. package/dist/auth.d.ts.map +1 -1
  5. package/dist/auth.js +18 -0
  6. package/dist/auth.js.map +1 -1
  7. package/dist/cli/invocation-decision.d.ts +57 -0
  8. package/dist/cli/invocation-decision.d.ts.map +1 -0
  9. package/dist/cli/invocation-decision.js +86 -0
  10. package/dist/cli/invocation-decision.js.map +1 -0
  11. package/dist/client.d.ts +28 -0
  12. package/dist/client.d.ts.map +1 -1
  13. package/dist/client.js +40 -1
  14. package/dist/client.js.map +1 -1
  15. package/dist/clients/claude-code.d.ts.map +1 -1
  16. package/dist/clients/claude-code.js +3 -1
  17. package/dist/clients/claude-code.js.map +1 -1
  18. package/dist/clients/claude-desktop.d.ts.map +1 -1
  19. package/dist/clients/claude-desktop.js +3 -1
  20. package/dist/clients/claude-desktop.js.map +1 -1
  21. package/dist/clients/cline.d.ts.map +1 -1
  22. package/dist/clients/cline.js +3 -1
  23. package/dist/clients/cline.js.map +1 -1
  24. package/dist/clients/codex-cli.d.ts +1 -1
  25. package/dist/clients/codex-cli.d.ts.map +1 -1
  26. package/dist/clients/codex-cli.js +98 -0
  27. package/dist/clients/codex-cli.js.map +1 -1
  28. package/dist/clients/continue.d.ts.map +1 -1
  29. package/dist/clients/continue.js +70 -1
  30. package/dist/clients/continue.js.map +1 -1
  31. package/dist/clients/cursor.d.ts.map +1 -1
  32. package/dist/clients/cursor.js +3 -1
  33. package/dist/clients/cursor.js.map +1 -1
  34. package/dist/clients/gemini-cli.d.ts.map +1 -1
  35. package/dist/clients/gemini-cli.js +3 -1
  36. package/dist/clients/gemini-cli.js.map +1 -1
  37. package/dist/clients/index.d.ts +104 -0
  38. package/dist/clients/index.d.ts.map +1 -1
  39. package/dist/clients/index.js +141 -0
  40. package/dist/clients/index.js.map +1 -1
  41. package/dist/clients/roo-code.d.ts.map +1 -1
  42. package/dist/clients/roo-code.js +3 -1
  43. package/dist/clients/roo-code.js.map +1 -1
  44. package/dist/clients/zed.d.ts.map +1 -1
  45. package/dist/clients/zed.js +3 -1
  46. package/dist/clients/zed.js.map +1 -1
  47. package/dist/gateway/essentials.d.ts +4 -4
  48. package/dist/gateway/essentials.d.ts.map +1 -1
  49. package/dist/gateway/essentials.js +19 -5
  50. package/dist/gateway/essentials.js.map +1 -1
  51. package/dist/gateway/test-support.d.ts +3 -3
  52. package/dist/gateway/test-support.js +3 -3
  53. package/dist/index.d.ts +2 -1
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +9 -1
  56. package/dist/index.js.map +1 -1
  57. package/dist/install-skill.js +1 -1
  58. package/dist/server.d.ts +3 -3
  59. package/dist/server.js +3 -3
  60. package/dist/setup-cli.d.ts +41 -0
  61. package/dist/setup-cli.d.ts.map +1 -1
  62. package/dist/setup-cli.js +163 -1
  63. package/dist/setup-cli.js.map +1 -1
  64. package/dist/setup-prompts.d.ts +23 -0
  65. package/dist/setup-prompts.d.ts.map +1 -1
  66. package/dist/setup-prompts.js +76 -1
  67. package/dist/setup-prompts.js.map +1 -1
  68. package/dist/sites/bootstrap.d.ts +41 -0
  69. package/dist/sites/bootstrap.d.ts.map +1 -0
  70. package/dist/sites/bootstrap.js +58 -0
  71. package/dist/sites/bootstrap.js.map +1 -0
  72. package/dist/sites/client-pool.d.ts +33 -0
  73. package/dist/sites/client-pool.d.ts.map +1 -1
  74. package/dist/sites/client-pool.js +51 -1
  75. package/dist/sites/client-pool.js.map +1 -1
  76. package/dist/sites/tools/index.d.ts.map +1 -1
  77. package/dist/sites/tools/index.js +9 -1
  78. package/dist/sites/tools/index.js.map +1 -1
  79. package/dist/sites/tools/use-site.d.ts +47 -0
  80. package/dist/sites/tools/use-site.d.ts.map +1 -0
  81. package/dist/sites/tools/use-site.js +183 -0
  82. package/dist/sites/tools/use-site.js.map +1 -0
  83. package/dist/tools/elements/builders.d.ts.map +1 -1
  84. package/dist/tools/elements/builders.js +16 -7
  85. package/dist/tools/elements/builders.js.map +1 -1
  86. package/dist/tools/elements/handlers-write.d.ts +1 -1
  87. package/dist/tools/elements/handlers-write.d.ts.map +1 -1
  88. package/dist/tools/elements/handlers-write.js +202 -9
  89. package/dist/tools/elements/handlers-write.js.map +1 -1
  90. package/dist/tools/elements/handlers.d.ts.map +1 -1
  91. package/dist/tools/elements/handlers.js +3 -3
  92. package/dist/tools/elements/handlers.js.map +1 -1
  93. package/dist/tools/format/elements-format.d.ts.map +1 -1
  94. package/dist/tools/format/elements-format.js +10 -11
  95. package/dist/tools/format/elements-format.js.map +1 -1
  96. package/dist/tools/format/inspection-format.d.ts +11 -0
  97. package/dist/tools/format/inspection-format.d.ts.map +1 -1
  98. package/dist/tools/format/inspection-format.js +77 -21
  99. package/dist/tools/format/inspection-format.js.map +1 -1
  100. package/dist/tools/inspection.d.ts.map +1 -1
  101. package/dist/tools/inspection.js +194 -1
  102. package/dist/tools/inspection.js.map +1 -1
  103. package/dist/tools/multi-items/builders.d.ts.map +1 -1
  104. package/dist/tools/multi-items/builders.js +7 -1
  105. package/dist/tools/multi-items/builders.js.map +1 -1
  106. package/dist/tools/multi-items/clean-implode-handler.d.ts.map +1 -1
  107. package/dist/tools/multi-items/clean-implode-handler.js +2 -2
  108. package/dist/tools/multi-items/clean-implode-handler.js.map +1 -1
  109. package/dist/tools/multi-items/format/inspection-format.d.ts +41 -0
  110. package/dist/tools/multi-items/format/inspection-format.d.ts.map +1 -0
  111. package/dist/tools/multi-items/format/inspection-format.js +64 -0
  112. package/dist/tools/multi-items/format/inspection-format.js.map +1 -0
  113. package/dist/tools/multi-items/inspect-handler.d.ts +37 -2
  114. package/dist/tools/multi-items/inspect-handler.d.ts.map +1 -1
  115. package/dist/tools/multi-items/inspect-handler.js +93 -10
  116. package/dist/tools/multi-items/inspect-handler.js.map +1 -1
  117. package/dist/tools/multi-items/inspection-cache.d.ts +85 -0
  118. package/dist/tools/multi-items/inspection-cache.d.ts.map +1 -0
  119. package/dist/tools/multi-items/inspection-cache.js +126 -0
  120. package/dist/tools/multi-items/inspection-cache.js.map +1 -0
  121. package/dist/tools/pages/builders.d.ts +31 -2
  122. package/dist/tools/pages/builders.d.ts.map +1 -1
  123. package/dist/tools/pages/builders.js +102 -9
  124. package/dist/tools/pages/builders.js.map +1 -1
  125. package/dist/tools/pages/handlers-read.d.ts +1 -1
  126. package/dist/tools/pages/handlers-read.d.ts.map +1 -1
  127. package/dist/tools/pages/handlers-read.js +78 -21
  128. package/dist/tools/pages/handlers-read.js.map +1 -1
  129. package/dist/tools/pages/handlers-write.d.ts +48 -6
  130. package/dist/tools/pages/handlers-write.d.ts.map +1 -1
  131. package/dist/tools/pages/handlers-write.js +83 -8
  132. package/dist/tools/pages/handlers-write.js.map +1 -1
  133. package/dist/tools/pages/schemas.d.ts +112 -0
  134. package/dist/tools/pages/schemas.d.ts.map +1 -1
  135. package/dist/tools/pages/schemas.js +150 -0
  136. package/dist/tools/pages/schemas.js.map +1 -1
  137. package/dist/tools/shared-schemas.d.ts.map +1 -1
  138. package/dist/tools/shared-schemas.js +15 -2
  139. package/dist/tools/shared-schemas.js.map +1 -1
  140. package/dist/tools/sources/handlers-bind.d.ts.map +1 -1
  141. package/dist/tools/sources/handlers-bind.js +56 -4
  142. package/dist/tools/sources/handlers-bind.js.map +1 -1
  143. package/dist/tools/sources/handlers.d.ts.map +1 -1
  144. package/dist/tools/sources/handlers.js +2 -2
  145. package/dist/tools/sources/handlers.js.map +1 -1
  146. package/dist/uninstall-skill.d.ts +52 -0
  147. package/dist/uninstall-skill.d.ts.map +1 -0
  148. package/dist/uninstall-skill.js +146 -0
  149. package/dist/uninstall-skill.js.map +1 -0
  150. package/dist/uninstall.d.ts +73 -0
  151. package/dist/uninstall.d.ts.map +1 -0
  152. package/dist/uninstall.js +82 -0
  153. package/dist/uninstall.js.map +1 -0
  154. package/icon.png +0 -0
  155. package/manifest.json +10 -10
  156. package/package.json +4 -2
  157. package/skills/yt-builder-mcp/SKILL.md +30 -26
@@ -3,8 +3,12 @@
3
3
  *
4
4
  * Split out of `src/tools/pages.ts` (Round-2 R2-A2-CRIT1). Handler
5
5
  * bodies live in `./handlers-read.ts` (pages_list, page_get_layout,
6
- * page_get_schema, get_etag) and `./handlers-write.ts` (page_save,
7
- * page_publish — 3-phase progress contract).
6
+ * page_get_schema, get_etag, template_summary) and `./handlers-write.ts`
7
+ * (page_save, page_publish, pages_create, pages_delete — 3-phase
8
+ * progress contract).
9
+ *
10
+ * Surface: 9 page-level tools (pre-C4: 7; v1.2 C4 added pages_create +
11
+ * pages_delete wrapping POST /pages and DELETE /pages/{id}).
8
12
  *
9
13
  * @license MIT
10
14
  */
@@ -14,8 +18,8 @@ import { SITE_ID_SCHEMA, TEMPLATE_ID } from '../shared-schemas.js';
14
18
  import { FIELDS, FLAT } from '../sparse-fields.js';
15
19
  import { defineTool, mutating, readOnly, withSiteMeta, } from '../tool-builder.js';
16
20
  import { handleGetEtag, handlePageGetLayout, handlePageGetSchema, handlePagesList, handleTemplateSummary, } from './handlers-read.js';
17
- import { handlePagePublish, handlePageSave } from './handlers-write.js';
18
- import { ETAG_OUTPUT_SCHEMA, PAGES_LIST_OUTPUT_SCHEMA, SCHEMA_OUTPUT_SCHEMA, TEMPLATE_SUMMARY_OUTPUT_SCHEMA, } from './schemas.js';
21
+ import { handlePagePublish, handlePagesCreate, handlePagesDelete, handlePageSave, } from './handlers-write.js';
22
+ import { ETAG_OUTPUT_SCHEMA, PAGES_CREATE_INPUT, PAGES_DELETE_INPUT, PAGES_DELETE_OUTPUT_SCHEMA, PAGES_LIST_OUTPUT_SCHEMA, SCHEMA_OUTPUT_SCHEMA, TEMPLATE_SUMMARY_OUTPUT_SCHEMA, } from './schemas.js';
19
23
  // F-14: page-level save/publish accept OPTIONAL ETag (no precondition lock
20
24
  // at template level — element/binding mutations REQUIRE one via the strict
21
25
  // ETAG in shared-schemas.ts). Schema and description now agree: optional
@@ -27,6 +31,48 @@ const ETAG = z
27
31
  .describe('Optimistic-lock ETag (from yootheme_builder_get_etag). ' +
28
32
  'Optional; when provided, optimistic-lock is enforced (412 on conflict). ' +
29
33
  'When omitted, last-write-wins applies. Recommended for collaborative edits.');
34
+ /**
35
+ * Build the {@link RenderContext} from the data reachable in a page
36
+ * builder. Pure: no I/O, no `any`. Missing `parentTemplateId` / `locale`
37
+ * collapse to `null`.
38
+ */
39
+ export function buildRenderContext(input) {
40
+ return {
41
+ parent_template_id: input.parentTemplateId ?? null,
42
+ locale: input.locale ?? null,
43
+ site_url: input.siteUrl,
44
+ };
45
+ }
46
+ /**
47
+ * Best-effort locale extraction from a resolved site. The registry does
48
+ * not (yet) carry an explicit locale, so we read it from the platform
49
+ * descriptor when present; otherwise `null` (the consumer-stable
50
+ * "unknown" value). Kept narrow + guarded so this stays `any`-free.
51
+ */
52
+ function localeForSite(site) {
53
+ const platform = site.platform;
54
+ if (typeof platform === 'object' && platform !== null && 'locale' in platform) {
55
+ const value = platform.locale;
56
+ if (typeof value === 'string' && value !== '') {
57
+ return value;
58
+ }
59
+ }
60
+ return null;
61
+ }
62
+ /**
63
+ * Stamp a {@link RenderContext} into a tool result's free-form
64
+ * result-level `_meta` (next to the site-meta `withSiteMeta` adds).
65
+ * Never touches `structuredContent` — that stays schema-pure so it keeps
66
+ * validating against the tool's `outputSchema`. Pure: returns a new
67
+ * result, does not mutate the input.
68
+ */
69
+ function withRenderContext(result, ctx) {
70
+ const base = result._meta;
71
+ const mergedMeta = base !== undefined && base !== null && typeof base === 'object'
72
+ ? { ...base, render_context: ctx }
73
+ : { render_context: ctx };
74
+ return { ...result, _meta: mergedMeta };
75
+ }
30
76
  export function buildPagesTools(pool) {
31
77
  return [
32
78
  defineTool({
@@ -102,9 +148,9 @@ export function buildPagesTools(pool) {
102
148
  }),
103
149
  defineTool({
104
150
  name: 'yootheme_builder_page_save',
105
- description: 'Re-run save-transforms and persist. ETag optional when provided, 412 on ' +
106
- 'conflict; when omitted, last-write-wins. Recommended for collaborative edits. ' +
107
- 'No-op when state is byte-identical (returns `no_changes:true`, ETag unchanged). ' +
151
+ description: 'Re-run save-transforms + flush caches. Does NOT accept a layout land edits ' +
152
+ 'via element_add/update/bind/delete first. No-op if byte-identical. New pages: ' +
153
+ 'pages_create. Publish: page_publish. ETag optional. ' +
108
154
  'Operates on the default site unless site_id is provided.',
109
155
  inputSchema: {
110
156
  site_id: SITE_ID_SCHEMA,
@@ -112,7 +158,11 @@ export function buildPagesTools(pool) {
112
158
  etag: ETAG,
113
159
  },
114
160
  annotations: mutating('Save Page'),
115
- handler: async ({ site_id, ...rest }, extra) => withSiteRetry(pool, site_id, async (client, site) => withSiteMeta(await handlePageSave(client, rest, extra), site)),
161
+ handler: async ({ site_id, ...rest }, extra) => withSiteRetry(pool, site_id, async (client, site) => withRenderContext(withSiteMeta(await handlePageSave(client, rest, extra), site), buildRenderContext({
162
+ siteUrl: site.url,
163
+ parentTemplateId: rest.template_id,
164
+ locale: localeForSite(site),
165
+ }))),
116
166
  }),
117
167
  defineTool({
118
168
  name: 'yootheme_builder_page_publish',
@@ -129,7 +179,50 @@ export function buildPagesTools(pool) {
129
179
  // unchanged template snapshots the same ETag and flushes
130
180
  // the same caches. Matrix marks `idempotentHint:true`.
131
181
  annotations: mutating('Publish Page'),
132
- handler: async ({ site_id, ...rest }, extra) => withSiteRetry(pool, site_id, async (client, site) => withSiteMeta(await handlePagePublish(client, rest, extra), site)),
182
+ handler: async ({ site_id, ...rest }, extra) => withSiteRetry(pool, site_id, async (client, site) => withRenderContext(withSiteMeta(await handlePagePublish(client, rest, extra), site), buildRenderContext({
183
+ siteUrl: site.url,
184
+ parentTemplateId: rest.template_id,
185
+ locale: localeForSite(site),
186
+ }))),
187
+ }),
188
+ // ─── C4 (v1.2) — pages_create + pages_delete ──────────────────
189
+ // First-class customer-facing page-level mutations. Both wrap
190
+ // Phase B REST endpoints (POST /pages, DELETE /pages/{id}) and
191
+ // are L1 essentials (see gateway/essentials.ts).
192
+ defineTool({
193
+ name: 'yootheme_builder_pages_create',
194
+ description: 'Create a new WordPress page with a YOOtheme per-page layout. Required: title. ' +
195
+ 'Optional: slug (defaults to sanitize_title(title)), status (default: draft), ' +
196
+ 'layout (JSON, default: {type:"layout",children:[]}). ' +
197
+ 'Supports dry-run mode (dry_run:true) to preflight all hardening layers without persisting. ' +
198
+ 'Returns page_id, slug (post-collision-resolved), template_id, etag, warnings. ' +
199
+ 'Operates on the default site unless site_id is provided.',
200
+ inputSchema: { site_id: SITE_ID_SCHEMA, ...PAGES_CREATE_INPUT },
201
+ // No outputSchema: the response shape is a discriminated union
202
+ // (201 wet vs 200 dry-run). page_get_layout uses the same pattern.
203
+ annotations: mutating('Create Page'),
204
+ handler: async ({ site_id, ...rest }, extra) => withSiteRetry(pool, site_id, async (client, site) => withRenderContext(withSiteMeta(await handlePagesCreate(client, rest, extra), site), buildRenderContext({
205
+ siteUrl: site.url,
206
+ // A new page has no caller-supplied parent
207
+ // template; null until the REST response carries
208
+ // one (kept stable rather than absent).
209
+ parentTemplateId: null,
210
+ locale: localeForSite(site),
211
+ }))),
212
+ }),
213
+ defineTool({
214
+ name: 'yootheme_builder_pages_delete',
215
+ description: 'Delete a WordPress page (with associated YOOtheme per-page layout). ' +
216
+ 'Requires confirm:true (gate against accidental deletion). ' +
217
+ 'Default behavior: wp_trash_post (recoverable via wp-admin). ' +
218
+ 'With force:true: permanent wp_delete_post(force=true). ' +
219
+ 'Refuses non-page post types with 403 (Layer 9 defense). ' +
220
+ 'Returns deleted:true, page_id, force_deleted, bumped etag. ' +
221
+ 'Operates on the default site unless site_id is provided.',
222
+ inputSchema: { site_id: SITE_ID_SCHEMA, ...PAGES_DELETE_INPUT },
223
+ outputSchema: PAGES_DELETE_OUTPUT_SCHEMA,
224
+ annotations: mutating('Delete Page'),
225
+ handler: async ({ site_id, ...rest }, extra) => withSiteRetry(pool, site_id, async (client, site) => withSiteMeta(await handlePagesDelete(client, rest, extra), site)),
133
226
  }),
134
227
  ];
135
228
  }
@@ -1 +1 @@
1
- {"version":3,"file":"builders.js","sourceRoot":"","sources":["../../../src/tools/pages/builders.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builders.js","sourceRoot":"","sources":["../../../src/tools/pages/builders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EACH,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,YAAY,GAEf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACH,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,qBAAqB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACH,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACH,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,0BAA0B,EAC1B,wBAAwB,EACxB,oBAAoB,EACpB,8BAA8B,GACjC,MAAM,cAAc,CAAC;AAEtB,2EAA2E;AAC3E,2EAA2E;AAC3E,yEAAyE;AACzE,0EAA0E;AAC1E,8EAA8E;AAC9E,MAAM,IAAI,GAAG,CAAC;KACT,MAAM,EAAE;KACR,QAAQ,EAAE;KACV,QAAQ,CACL,yDAAyD;IACrD,0EAA0E;IAC1E,6EAA6E,CACpF,CAAC;AAkBN;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAIlC;IACG,OAAO;QACH,kBAAkB,EAAE,KAAK,CAAC,gBAAgB,IAAI,IAAI;QAClD,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI;QAC5B,QAAQ,EAAE,KAAK,CAAC,OAAO;KAC1B,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CAAC,IAAkB;IACrC,MAAM,QAAQ,GAAY,IAAI,CAAC,QAAQ,CAAC;IACxC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;QAC5E,MAAM,KAAK,GAAI,QAAiC,CAAC,MAAM,CAAC;QACxD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YAC5C,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAKD;;;;;;GAMG;AACH,SAAS,iBAAiB,CACtB,MAAS,EACT,GAAkB;IAElB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;IAC1B,MAAM,UAAU,GACZ,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAC3D,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE;QAClC,CAAC,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC;IAClC,OAAO,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAgB;IAC5C,OAAO;QACH,UAAU,CAAC;YACP,IAAI,EAAE,6BAA6B;YACnC,WAAW,EACP,sEAAsE;gBACtE,6EAA6E;gBAC7E,gFAAgF;gBAChF,wEAAwE;gBACxE,4EAA4E;gBAC5E,gDAAgD;gBAChD,wCAAwC;gBACxC,mFAAmF;gBACnF,0DAA0D;YAC9D,WAAW,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE;YACxD,YAAY,EAAE,wBAAwB;YACtC,WAAW,EAAE,QAAQ,CAAC,YAAY,CAAC;YACnC,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CACpC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAChD,YAAY,CAAC,MAAM,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;SACnE,CAAC;QAEF,UAAU,CAAC;YACP,IAAI,EAAE,kCAAkC;YACxC,WAAW,EACP,kEAAkE;gBAClE,kEAAkE;gBAClE,0DAA0D;gBAC1D,0DAA0D;YAC9D,WAAW,EAAE;gBACT,OAAO,EAAE,cAAc;gBACvB,WAAW,EAAE,WAAW;gBACxB,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,MAAM;aACjB;YACD,sEAAsE;YACtE,kEAAkE;YAClE,sEAAsE;YACtE,WAAW,EAAE,QAAQ,CAAC,iBAAiB,CAAC;YACxC,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CACpC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAChD,YAAY,CAAC,MAAM,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;SACvE,CAAC;QAEF,UAAU,CAAC;YACP,IAAI,EAAE,kCAAkC;YACxC,WAAW,EACP,+EAA+E;gBAC/E,yEAAyE;gBACzE,iEAAiE;gBACjE,0DAA0D;YAC9D,WAAW,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE;YAClE,YAAY,EAAE,oBAAoB;YAClC,WAAW,EAAE,QAAQ,CAAC,iBAAiB,CAAC;YACxC,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CACpC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAChD,YAAY,CAAC,MAAM,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;SACvE,CAAC;QAEF,UAAU,CAAC;YACP,IAAI,EAAE,2BAA2B;YACjC,WAAW,EACP,kEAAkE;gBAClE,wEAAwE;gBACxE,qFAAqF;gBACrF,sFAAsF;gBACtF,yEAAyE;gBACzE,oFAAoF;gBACpF,0DAA0D;YAC9D,WAAW,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE;YACxC,YAAY,EAAE,kBAAkB;YAChC,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;YACjC,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAC3B,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAChD,YAAY,CAAC,MAAM,aAAa,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;SAC3D,CAAC;QAEF,UAAU,CAAC;YACP,IAAI,EAAE,mCAAmC;YACzC,WAAW,EACP,qEAAqE;gBACrE,mEAAmE;gBACnE,qEAAqE;gBACrE,2CAA2C;gBAC3C,0DAA0D;YAC9D,WAAW,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE;YAClE,YAAY,EAAE,8BAA8B;YAC5C,WAAW,EAAE,QAAQ,CAAC,kBAAkB,CAAC;YACzC,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CACpC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAChD,YAAY,CAAC,MAAM,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;SACzE,CAAC;QAEF,UAAU,CAAC;YACP,IAAI,EAAE,4BAA4B;YAClC,WAAW,EACP,+EAA+E;gBAC/E,gFAAgF;gBAChF,sDAAsD;gBACtD,0DAA0D;YAC9D,WAAW,EAAE;gBACT,OAAO,EAAE,cAAc;gBACvB,WAAW,EAAE,WAAW;gBACxB,IAAI,EAAE,IAAI;aACb;YACD,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC;YAClC,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,CAC3C,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAChD,iBAAiB,CACb,YAAY,CAAC,MAAM,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,EAC7D,kBAAkB,CAAC;gBACf,OAAO,EAAE,IAAI,CAAC,GAAG;gBACjB,gBAAgB,EAAE,IAAI,CAAC,WAAW;gBAClC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC;aAC9B,CAAC,CACL,CAAC;SACb,CAAC;QAEF,UAAU,CAAC;YACP,IAAI,EAAE,+BAA+B;YACrC,WAAW,EACP,yEAAyE;gBACzE,6EAA6E;gBAC7E,iEAAiE;gBACjE,0DAA0D;YAC9D,WAAW,EAAE;gBACT,OAAO,EAAE,cAAc;gBACvB,WAAW,EAAE,WAAW;gBACxB,IAAI,EAAE,IAAI;aACb;YACD,yDAAyD;YACzD,yDAAyD;YACzD,uDAAuD;YACvD,WAAW,EAAE,QAAQ,CAAC,cAAc,CAAC;YACrC,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,CAC3C,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAChD,iBAAiB,CACb,YAAY,CAAC,MAAM,iBAAiB,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,EAChE,kBAAkB,CAAC;gBACf,OAAO,EAAE,IAAI,CAAC,GAAG;gBACjB,gBAAgB,EAAE,IAAI,CAAC,WAAW;gBAClC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC;aAC9B,CAAC,CACL,CAAC;SACb,CAAC;QAEF,iEAAiE;QACjE,8DAA8D;QAC9D,+DAA+D;QAC/D,iDAAiD;QAEjD,UAAU,CAAC;YACP,IAAI,EAAE,+BAA+B;YACrC,WAAW,EACP,gFAAgF;gBAChF,+EAA+E;gBAC/E,uDAAuD;gBACvD,6FAA6F;gBAC7F,gFAAgF;gBAChF,0DAA0D;YAC9D,WAAW,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,kBAAkB,EAAE;YAC/D,+DAA+D;YAC/D,mEAAmE;YACnE,WAAW,EAAE,QAAQ,CAAC,aAAa,CAAC;YACpC,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,CAC3C,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAChD,iBAAiB,CACb,YAAY,CAAC,MAAM,iBAAiB,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,EAChE,kBAAkB,CAAC;gBACf,OAAO,EAAE,IAAI,CAAC,GAAG;gBACjB,2CAA2C;gBAC3C,iDAAiD;gBACjD,wCAAwC;gBACxC,gBAAgB,EAAE,IAAI;gBACtB,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC;aAC9B,CAAC,CACL,CAAC;SACb,CAAC;QAEF,UAAU,CAAC;YACP,IAAI,EAAE,+BAA+B;YACrC,WAAW,EACP,sEAAsE;gBACtE,4DAA4D;gBAC5D,8DAA8D;gBAC9D,yDAAyD;gBACzD,0DAA0D;gBAC1D,6DAA6D;gBAC7D,0DAA0D;YAC9D,WAAW,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,kBAAkB,EAAE;YAC/D,YAAY,EAAE,0BAA0B;YACxC,WAAW,EAAE,QAAQ,CAAC,aAAa,CAAC;YACpC,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,CAC3C,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAChD,YAAY,CAAC,MAAM,iBAAiB,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;SAC5E,CAAC;KACL,CAAC;AACN,CAAC"}
@@ -7,7 +7,7 @@
7
7
  *
8
8
  * @license MIT
9
9
  */
10
- import type { RestClient } from '../../client.js';
10
+ import { type RestClient } from '../../client.js';
11
11
  import { type ToolResult } from '../tool-builder.js';
12
12
  export declare function handlePagesList(client: RestClient, { fields }: {
13
13
  fields?: readonly string[];
@@ -1 +1 @@
1
- {"version":3,"file":"handlers-read.d.ts","sourceRoot":"","sources":["../../../src/tools/pages/handlers-read.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAiBlD,OAAO,EAIH,KAAK,UAAU,EAClB,MAAM,oBAAoB,CAAC;AAI5B,wBAAsB,eAAe,CACjC,MAAM,EAAE,UAAU,EAClB,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAC3C,OAAO,CAAC,UAAU,CAAC,CAyCrB;AAID,wBAAsB,mBAAmB,CACrC,MAAM,EAAE,UAAU,EAClB,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B,GACF,OAAO,CAAC,UAAU,CAAC,CA+DrB;AAID,wBAAsB,mBAAmB,CACrC,MAAM,EAAE,UAAU,EAClB,EAAE,WAAW,EAAE,EAAE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GACzC,OAAO,CAAC,UAAU,CAAC,CA4CrB;AAID,wBAAsB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAoB3E;AAID;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACvC,MAAM,EAAE,UAAU,EAClB,EAAE,WAAW,EAAE,EAAE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GACzC,OAAO,CAAC,UAAU,CAAC,CA6BrB"}
1
+ {"version":3,"file":"handlers-read.d.ts","sourceRoot":"","sources":["../../../src/tools/pages/handlers-read.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAiBpE,OAAO,EAIH,KAAK,UAAU,EAClB,MAAM,oBAAoB,CAAC;AAI5B,wBAAsB,eAAe,CACjC,MAAM,EAAE,UAAU,EAClB,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAC3C,OAAO,CAAC,UAAU,CAAC,CAyCrB;AAID,wBAAsB,mBAAmB,CACrC,MAAM,EAAE,UAAU,EAClB,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B,GACF,OAAO,CAAC,UAAU,CAAC,CAsGrB;AAID,wBAAsB,mBAAmB,CACrC,MAAM,EAAE,UAAU,EAClB,EAAE,WAAW,EAAE,EAAE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GACzC,OAAO,CAAC,UAAU,CAAC,CA4CrB;AAID,wBAAsB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAoB3E;AAID;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACvC,MAAM,EAAE,UAAU,EAClB,EAAE,WAAW,EAAE,EAAE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GACzC,OAAO,CAAC,UAAU,CAAC,CA8CrB"}
@@ -8,6 +8,7 @@
8
8
  * @license MIT
9
9
  */
10
10
  import { detailResult, tableResult } from '@getimo/mcp-toolkit';
11
+ import { encodeTemplateId } from '../../client.js';
11
12
  import { flattenLayout } from '../layout-flatten.js';
12
13
  import { PAGES_COMPACT_COLUMNS, PAGES_TABLE_COLUMNS, SCHEMA_COMPACT_COLUMNS, SCHEMA_TABLE_COLUMNS, buildEtagDetail, buildSchemaRows, mapPageRow, } from '../format/pages-format.js';
13
14
  import { DEFAULT_FIELDS_PAGES_LIST, projectFields, projectedFieldsEcho, projectionFeedback, } from '../sparse-fields.js';
@@ -58,7 +59,7 @@ export async function handlePagesList(client, { fields }) {
58
59
  // ─── page_get_layout ────────────────────────────────────────────────
59
60
  export async function handlePageGetLayout(client, { template_id, flat, fields }) {
60
61
  try {
61
- const data = await client.get(`/pages/${encodeURIComponent(template_id)}/layout`);
62
+ const data = await client.get(`/pages/${encodeTemplateId(template_id)}/layout`);
62
63
  if (flat !== true) {
63
64
  // Default: nested passthrough — unchanged from pre-G.3.
64
65
  return jsonResult(data);
@@ -67,22 +68,61 @@ export async function handlePageGetLayout(client, { template_id, flat, fields })
67
68
  // pickFields per element when `fields[]` was passed; echo the
68
69
  // projection so the AI knows the per-item shape it received.
69
70
  //
70
- // F-208 (Audit 2026-05-26): the REST envelope nests the actual
71
- // node tree as `data.layout.layout` `data.layout` is the
72
- // WHOLE template object (`{name, layout: {…children…}, …}`),
73
- // so walking `data.layout` directly produced double-prefixed
74
- // paths (`/layout/layout/children/0`). Detect the template
75
- // envelope by presence of an inner `layout` field and descend
76
- // one extra hop. Back-compat: when `data.layout` is already
77
- // the node tree (no inner `layout` key), pass it through.
78
- const layoutRoot = data.layout !== null &&
79
- typeof data.layout === 'object' &&
80
- !Array.isArray(data.layout) &&
81
- 'layout' in data.layout &&
82
- data.layout.layout !== null &&
83
- typeof data.layout.layout === 'object'
84
- ? data.layout.layout
85
- : data.layout;
71
+ // Two distinct envelope shapes reach this handler both must
72
+ // flatten to the same element list:
73
+ //
74
+ // (A) Theme templates: `data.layout = {name, layout:
75
+ // {0:{...},1:{...}}, ...}` the actual children live
76
+ // under the INNER `layout` field, keyed by stringified
77
+ // indices. F-208 (Audit 2026-05-26) fix descended one
78
+ // extra hop here so paths anchored on `/layout/0` rather
79
+ // than the double-prefixed `/layout/layout/0`.
80
+ //
81
+ // (B) Per-page templates (Wave-9 F7 fix, 2026-05-29): cold-AI
82
+ // #8 reported `elements:[]` for a non-empty per-page
83
+ // template. Root cause: per-page layouts come from
84
+ // PerPageLayoutEncoder which decodes to the BARE node
85
+ // tree `{type:'layout', children:[{...},{...}]}` — there
86
+ // is NO outer `{name, layout:{...}}` wrapper. The
87
+ // previous envelope-detect only triggered on the inner
88
+ // `layout` key, so for per-page it fell through to
89
+ // walking `data.layout` directly, where flattenLayout
90
+ // iterates top-level entries (`['type', 'layout']` +
91
+ // `['children', [...]]`) and emits nothing — neither
92
+ // entry is a valid element node.
93
+ //
94
+ // Per-page detection: a node with `type === 'layout'` and
95
+ // an array `children`. Pass its `.children` array to
96
+ // flattenLayout so the walker iterates the real elements
97
+ // (and paths anchor on `/layout/0`, `/layout/1`, ... so
98
+ // cold agents can copy them into element_path without
99
+ // further bookkeeping).
100
+ const dataLayout = data.layout;
101
+ const isObjectNode = dataLayout !== null &&
102
+ typeof dataLayout === 'object' &&
103
+ !Array.isArray(dataLayout);
104
+ const layoutObj = isObjectNode ? dataLayout : null;
105
+ const hasInnerLayoutField = layoutObj !== null &&
106
+ 'layout' in layoutObj &&
107
+ layoutObj.layout !== null &&
108
+ typeof layoutObj.layout === 'object';
109
+ const isPerPageRootNode = layoutObj !== null &&
110
+ layoutObj.type === 'layout' &&
111
+ Array.isArray(layoutObj.children);
112
+ let layoutRoot;
113
+ if (hasInnerLayoutField) {
114
+ // Shape (A) — theme template envelope.
115
+ layoutRoot = layoutObj.layout;
116
+ }
117
+ else if (isPerPageRootNode) {
118
+ // Shape (B) — per-page bare-layout-node. Iterate children
119
+ // directly so the walker sees real element nodes.
120
+ layoutRoot = layoutObj.children;
121
+ }
122
+ else {
123
+ // Back-compat: assume already in walkable form.
124
+ layoutRoot = dataLayout;
125
+ }
86
126
  const flatElements = flattenLayout(layoutRoot);
87
127
  const projected = projectFields(flatElements, fields,
88
128
  // No default-set on layout.flat: keep "all" semantics
@@ -117,7 +157,7 @@ export async function handlePageGetLayout(client, { template_id, flat, fields })
117
157
  // ─── page_get_schema ────────────────────────────────────────────────
118
158
  export async function handlePageGetSchema(client, { template_id }) {
119
159
  try {
120
- const data = await client.get(`/pages/${encodeURIComponent(template_id)}/schema`);
160
+ const data = await client.get(`/pages/${encodeTemplateId(template_id)}/schema`);
121
161
  const rawNodes = Array.isArray(data.nodes) ? data.nodes : [];
122
162
  const items = buildSchemaRows(rawNodes.filter((x) => x !== null && typeof x === 'object'));
123
163
  // Templates routinely exceed 21 nodes (a typical home page has
@@ -182,15 +222,32 @@ export async function handleGetEtag(client) {
182
222
  */
183
223
  export async function handleTemplateSummary(client, { template_id }) {
184
224
  try {
185
- const data = await client.get(`/pages/${encodeURIComponent(template_id)}/summary`);
225
+ const data = await client.get(`/pages/${encodeTemplateId(template_id)}/summary`);
186
226
  // F-AUDIT-2 (2026-05-26): template_summary now declares
187
227
  // TEMPLATE_SUMMARY_OUTPUT_SCHEMA. The SDK requires
188
228
  // `structuredContent` when an outputSchema is present, otherwise
189
229
  // it raises `-32602 Output validation error`. Wrap the raw body
190
230
  // with `structuredResult` so the text leg (LLM-readable JSON)
191
231
  // stays unchanged AND the structuredContent leg validates.
192
- const toolkitResult = jsonResult(data);
193
- return structuredResult({ content: toolkitResult.content }, data);
232
+ //
233
+ // Task #46 Friction-3 (2026-05-29): PHP's `json_encode([])` emits
234
+ // `[]` (array) — not `{}` (object). The REST handler emits
235
+ // `counts_by_type: []` for empty templates, but the outputSchema
236
+ // declares `z.record(z.string(), z.number())` which requires an
237
+ // object. The mismatch surfaces as `-32602 counts_by_type
238
+ // expected record, received array`, swallowing the entire response
239
+ // for any empty / freshly-created template. Normalize array→object
240
+ // here so the schema validates and the agent sees the (valid,
241
+ // empty) summary. Same defensive shape applies to any future
242
+ // map-typed REST field that might come back empty.
243
+ const normalized = {
244
+ ...data,
245
+ };
246
+ if (Array.isArray(normalized.counts_by_type)) {
247
+ normalized.counts_by_type = {};
248
+ }
249
+ const toolkitResult = jsonResult(normalized);
250
+ return structuredResult({ content: toolkitResult.content }, normalized);
194
251
  }
195
252
  catch (e) {
196
253
  return errorResult({
@@ -1 +1 @@
1
- {"version":3,"file":"handlers-read.js","sourceRoot":"","sources":["../../../src/tools/pages/handlers-read.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handlers-read.js","sourceRoot":"","sources":["../../../src/tools/pages/handlers-read.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,17 @@
1
1
  /**
2
- * Page-tool WRITE handlers — `page_save`, `page_publish`. Both implement
3
- * the 3-phase progress contract (PHASE_SEND → PHASE_SERVER → PHASE_CONFIRM).
4
- * PHASE_SERVER is emitted BEFORE the await so the synthetic intermediate
5
- * fires even when the REST call ultimately errors the dispatch IS the
6
- * boundary, not the response.
2
+ * Page-tool WRITE handlers — `page_save`, `page_publish`, `pages_create`,
3
+ * `pages_delete`. All implement the 3-phase progress contract
4
+ * (PHASE_SEND PHASE_SERVER PHASE_CONFIRM). PHASE_SERVER is emitted
5
+ * BEFORE the await so the synthetic intermediate fires even when the
6
+ * REST call ultimately errors — the dispatch IS the boundary, not the
7
+ * response.
7
8
  *
8
9
  * Split out of `src/tools/pages.ts` (Round-2 R2-A2-CRIT1).
10
+ * Extended with pages_create / pages_delete (v1.2 — C2 + C3).
9
11
  *
10
12
  * @license MIT
11
13
  */
12
- import type { RestClient } from '../../client.js';
14
+ import { type RestClient } from '../../client.js';
13
15
  import { type HandlerExtra, type ToolResult } from '../tool-builder.js';
14
16
  interface SavePublishInput {
15
17
  template_id: string;
@@ -17,5 +19,45 @@ interface SavePublishInput {
17
19
  }
18
20
  export declare function handlePageSave(client: RestClient, { template_id, etag }: SavePublishInput, extra?: HandlerExtra): Promise<ToolResult>;
19
21
  export declare function handlePagePublish(client: RestClient, { template_id, etag }: SavePublishInput, extra?: HandlerExtra): Promise<ToolResult>;
22
+ /**
23
+ * Input shape for the `pages_create` handler. Mirrors the Zod schema
24
+ * `PAGES_CREATE_INPUT` in `./schemas.ts` — kept as a structural
25
+ * `interface` here so the handler has no runtime Zod dependency and
26
+ * accepts whatever the MCP harness has already validated.
27
+ */
28
+ interface PagesCreateInput {
29
+ readonly title: string;
30
+ readonly slug?: string;
31
+ readonly status?: 'publish' | 'draft' | 'pending' | 'private' | 'future';
32
+ readonly layout?: Record<string, unknown>;
33
+ readonly dry_run?: boolean;
34
+ }
35
+ /**
36
+ * `pages_create` — POST `/pages` with the provided body. On
37
+ * `dry_run:true`, the REST handler runs validation Layers 1+2+4
38
+ * without persisting and returns a dry-run report. On non-dry-run
39
+ * success, the REST handler returns 201 with the wire shape of
40
+ * `PAGES_CREATE_OUTPUT_SCHEMA`.
41
+ */
42
+ export declare function handlePagesCreate(client: RestClient, input: PagesCreateInput, extra?: HandlerExtra): Promise<ToolResult>;
43
+ /**
44
+ * Input shape for the `pages_delete` handler. Mirrors the Zod schema
45
+ * `PAGES_DELETE_INPUT` in `./schemas.ts`. `confirm` is `true` literal —
46
+ * the MCP boundary rejects requests without `confirm:true` before they
47
+ * ever reach this handler.
48
+ */
49
+ interface PagesDeleteInput {
50
+ readonly post_id: number;
51
+ readonly confirm: true;
52
+ readonly force?: boolean;
53
+ }
54
+ /**
55
+ * `pages_delete` — DELETE `/pages/{post_id}` with confirm + force in the
56
+ * body. `force:false` (default) trashes via `wp_delete_post(false)`
57
+ * (recoverable via wp-admin). `force:true` hard-deletes the post
58
+ * (irrecoverable). The REST handler returns 200 with the wire shape of
59
+ * `PAGES_DELETE_OUTPUT_SCHEMA` on success.
60
+ */
61
+ export declare function handlePagesDelete(client: RestClient, input: PagesDeleteInput, extra?: HandlerExtra): Promise<ToolResult>;
20
62
  export {};
21
63
  //# sourceMappingURL=handlers-write.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"handlers-write.d.ts","sourceRoot":"","sources":["../../../src/tools/pages/handlers-write.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAIH,KAAK,YAAY,EACjB,KAAK,UAAU,EAClB,MAAM,oBAAoB,CAAC;AAE5B,UAAU,gBAAgB;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAID,wBAAsB,cAAc,CAChC,MAAM,EAAE,UAAU,EAClB,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,gBAAgB,EACvC,KAAK,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,UAAU,CAAC,CAoBrB;AAID,wBAAsB,iBAAiB,CACnC,MAAM,EAAE,UAAU,EAClB,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,gBAAgB,EACvC,KAAK,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,UAAU,CAAC,CAoBrB"}
1
+ {"version":3,"file":"handlers-write.d.ts","sourceRoot":"","sources":["../../../src/tools/pages/handlers-write.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEpE,OAAO,EAKH,KAAK,YAAY,EACjB,KAAK,UAAU,EAClB,MAAM,oBAAoB,CAAC;AAE5B,UAAU,gBAAgB;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAID,wBAAsB,cAAc,CAChC,MAAM,EAAE,UAAU,EAClB,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,gBAAgB,EACvC,KAAK,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,UAAU,CAAC,CAoBrB;AAID,wBAAsB,iBAAiB,CACnC,MAAM,EAAE,UAAU,EAClB,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,gBAAgB,EACvC,KAAK,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,UAAU,CAAC,CAoBrB;AAID;;;;;GAKG;AACH,UAAU,gBAAgB;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;IACzE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACnC,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,gBAAgB,EACvB,KAAK,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,UAAU,CAAC,CAuBrB;AAID;;;;;GAKG;AACH,UAAU,gBAAgB;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACnC,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,gBAAgB,EACvB,KAAK,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,UAAU,CAAC,CAuCrB"}
@@ -1,23 +1,26 @@
1
1
  /**
2
- * Page-tool WRITE handlers — `page_save`, `page_publish`. Both implement
3
- * the 3-phase progress contract (PHASE_SEND → PHASE_SERVER → PHASE_CONFIRM).
4
- * PHASE_SERVER is emitted BEFORE the await so the synthetic intermediate
5
- * fires even when the REST call ultimately errors the dispatch IS the
6
- * boundary, not the response.
2
+ * Page-tool WRITE handlers — `page_save`, `page_publish`, `pages_create`,
3
+ * `pages_delete`. All implement the 3-phase progress contract
4
+ * (PHASE_SEND PHASE_SERVER PHASE_CONFIRM). PHASE_SERVER is emitted
5
+ * BEFORE the await so the synthetic intermediate fires even when the
6
+ * REST call ultimately errors — the dispatch IS the boundary, not the
7
+ * response.
7
8
  *
8
9
  * Split out of `src/tools/pages.ts` (Round-2 R2-A2-CRIT1).
10
+ * Extended with pages_create / pages_delete (v1.2 — C2 + C3).
9
11
  *
10
12
  * @license MIT
11
13
  */
14
+ import { encodeTemplateId } from '../../client.js';
12
15
  import { PHASE_CONFIRM, PHASE_SEND, PHASE_SERVER } from '../progress-phases.js';
13
- import { createProgressReporter, errorResult, jsonResult, } from '../tool-builder.js';
16
+ import { createProgressReporter, errorResult, jsonResult, structuredResult, } from '../tool-builder.js';
14
17
  // ─── page_save ──────────────────────────────────────────────────────
15
18
  export async function handlePageSave(client, { template_id, etag }, extra) {
16
19
  const progress = extra ? createProgressReporter(extra) : null;
17
20
  await progress?.report(0, 3, PHASE_SEND);
18
21
  await progress?.report(1, 3, PHASE_SERVER);
19
22
  try {
20
- const data = await client.post(`/pages/${encodeURIComponent(template_id)}/save`, { etag });
23
+ const data = await client.post(`/pages/${encodeTemplateId(template_id)}/save`, { etag });
21
24
  await progress?.report(2, 3, PHASE_CONFIRM);
22
25
  return jsonResult(data);
23
26
  }
@@ -36,7 +39,7 @@ export async function handlePagePublish(client, { template_id, etag }, extra) {
36
39
  await progress?.report(0, 3, PHASE_SEND);
37
40
  await progress?.report(1, 3, PHASE_SERVER);
38
41
  try {
39
- const data = await client.post(`/pages/${encodeURIComponent(template_id)}/publish`, { etag });
42
+ const data = await client.post(`/pages/${encodeTemplateId(template_id)}/publish`, { etag });
40
43
  await progress?.report(2, 3, PHASE_CONFIRM);
41
44
  return jsonResult(data);
42
45
  }
@@ -49,4 +52,76 @@ export async function handlePagePublish(client, { template_id, etag }, extra) {
49
52
  });
50
53
  }
51
54
  }
55
+ /**
56
+ * `pages_create` — POST `/pages` with the provided body. On
57
+ * `dry_run:true`, the REST handler runs validation Layers 1+2+4
58
+ * without persisting and returns a dry-run report. On non-dry-run
59
+ * success, the REST handler returns 201 with the wire shape of
60
+ * `PAGES_CREATE_OUTPUT_SCHEMA`.
61
+ */
62
+ export async function handlePagesCreate(client, input, extra) {
63
+ const progress = extra ? createProgressReporter(extra) : null;
64
+ await progress?.report(0, 3, PHASE_SEND);
65
+ await progress?.report(1, 3, PHASE_SERVER);
66
+ try {
67
+ const data = await client.post('/pages', { body: input });
68
+ await progress?.report(2, 3, PHASE_CONFIRM);
69
+ return jsonResult(data);
70
+ }
71
+ catch (e) {
72
+ return errorResult({
73
+ error: e,
74
+ context: {
75
+ title: input.title,
76
+ slug: input.slug,
77
+ dry_run: input.dry_run ?? false,
78
+ },
79
+ hint: 'Common issues: missing title (400), unknown element type in layout ' +
80
+ '(422), Builder pre-check failed (422 dry-run or wet), post_type other ' +
81
+ 'than "page" (403). For dry-run: re-submit without dry_run:true to ' +
82
+ 'actually create.',
83
+ });
84
+ }
85
+ }
86
+ /**
87
+ * `pages_delete` — DELETE `/pages/{post_id}` with confirm + force in the
88
+ * body. `force:false` (default) trashes via `wp_delete_post(false)`
89
+ * (recoverable via wp-admin). `force:true` hard-deletes the post
90
+ * (irrecoverable). The REST handler returns 200 with the wire shape of
91
+ * `PAGES_DELETE_OUTPUT_SCHEMA` on success.
92
+ */
93
+ export async function handlePagesDelete(client, input, extra) {
94
+ const progress = extra ? createProgressReporter(extra) : null;
95
+ await progress?.report(0, 3, PHASE_SEND);
96
+ await progress?.report(1, 3, PHASE_SERVER);
97
+ try {
98
+ const data = await client.delete(`/pages/${encodeURIComponent(String(input.post_id))}`, {
99
+ body: {
100
+ confirm: input.confirm,
101
+ force: input.force ?? false,
102
+ },
103
+ });
104
+ await progress?.report(2, 3, PHASE_CONFIRM);
105
+ // Task #38 (2026-05-29): pages_delete declares
106
+ // `outputSchema: PAGES_DELETE_OUTPUT_SCHEMA` in builders.ts. The
107
+ // host therefore validates `structuredContent` and rejects with
108
+ // `-32602 Output validation error` when it is missing. Use
109
+ // `structuredResult` (mirrors handlePagesList et al.) so the
110
+ // text leg stays LLM-readable AND the structured leg validates.
111
+ const toolkitResult = jsonResult(data);
112
+ return structuredResult({ content: toolkitResult.content }, data);
113
+ }
114
+ catch (e) {
115
+ return errorResult({
116
+ error: e,
117
+ context: {
118
+ post_id: input.post_id,
119
+ force: input.force ?? false,
120
+ },
121
+ hint: 'Common issues: missing confirm:true (400), unknown post id (404), ' +
122
+ 'post_type other than "page" (403). For permanent delete pass ' +
123
+ 'force:true; default is trash (recoverable via wp-admin).',
124
+ });
125
+ }
126
+ }
52
127
  //# sourceMappingURL=handlers-write.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"handlers-write.js","sourceRoot":"","sources":["../../../src/tools/pages/handlers-write.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EACH,sBAAsB,EACtB,WAAW,EACX,UAAU,GAGb,MAAM,oBAAoB,CAAC;AAO5B,uEAAuE;AAEvE,MAAM,CAAC,KAAK,UAAU,cAAc,CAChC,MAAkB,EAClB,EAAE,WAAW,EAAE,IAAI,EAAoB,EACvC,KAAoB;IAEpB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9D,MAAM,QAAQ,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;IACzC,MAAM,QAAQ,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;IAC3C,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAC1B,UAAU,kBAAkB,CAAC,WAAW,CAAC,OAAO,EAChD,EAAE,IAAI,EAAE,CACX,CAAC;QACF,MAAM,QAAQ,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;QAC5C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,OAAO,WAAW,CAAC;YACf,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;YAC9B,IAAI,EACA,qEAAqE;gBACrE,2CAA2C;SAClD,CAAC,CAAC;IACP,CAAC;AACL,CAAC;AAED,uEAAuE;AAEvE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACnC,MAAkB,EAClB,EAAE,WAAW,EAAE,IAAI,EAAoB,EACvC,KAAoB;IAEpB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9D,MAAM,QAAQ,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;IACzC,MAAM,QAAQ,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;IAC3C,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAC1B,UAAU,kBAAkB,CAAC,WAAW,CAAC,UAAU,EACnD,EAAE,IAAI,EAAE,CACX,CAAC;QACF,MAAM,QAAQ,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;QAC5C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,OAAO,WAAW,CAAC;YACf,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;YAC9B,IAAI,EACA,qEAAqE;gBACrE,YAAY;SACnB,CAAC,CAAC;IACP,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"handlers-write.js","sourceRoot":"","sources":["../../../src/tools/pages/handlers-write.ts"],"names":[],"mappings":"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"}