@wootsup/yt-builder-mcp 1.4.1 → 1.6.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 (154) hide show
  1. package/dist/auth.d.ts +11 -0
  2. package/dist/auth.d.ts.map +1 -1
  3. package/dist/auth.js +11 -0
  4. package/dist/auth.js.map +1 -1
  5. package/dist/cli/doctor-command.d.ts.map +1 -1
  6. package/dist/cli/doctor-command.js +96 -8
  7. package/dist/cli/doctor-command.js.map +1 -1
  8. package/dist/client.d.ts +18 -0
  9. package/dist/client.d.ts.map +1 -1
  10. package/dist/client.js +13 -1
  11. package/dist/client.js.map +1 -1
  12. package/dist/clients/claude-code.d.ts.map +1 -1
  13. package/dist/clients/claude-code.js +5 -2
  14. package/dist/clients/claude-code.js.map +1 -1
  15. package/dist/clients/claude-desktop.d.ts.map +1 -1
  16. package/dist/clients/claude-desktop.js +5 -2
  17. package/dist/clients/claude-desktop.js.map +1 -1
  18. package/dist/clients/cline.d.ts.map +1 -1
  19. package/dist/clients/cline.js +5 -2
  20. package/dist/clients/cline.js.map +1 -1
  21. package/dist/clients/codex-cli.d.ts.map +1 -1
  22. package/dist/clients/codex-cli.js +127 -2
  23. package/dist/clients/codex-cli.js.map +1 -1
  24. package/dist/clients/continue.d.ts.map +1 -1
  25. package/dist/clients/continue.js +11 -2
  26. package/dist/clients/continue.js.map +1 -1
  27. package/dist/clients/cursor.d.ts.map +1 -1
  28. package/dist/clients/cursor.js +5 -2
  29. package/dist/clients/cursor.js.map +1 -1
  30. package/dist/clients/gemini-cli.d.ts.map +1 -1
  31. package/dist/clients/gemini-cli.js +5 -2
  32. package/dist/clients/gemini-cli.js.map +1 -1
  33. package/dist/clients/index.d.ts +49 -0
  34. package/dist/clients/index.d.ts.map +1 -1
  35. package/dist/clients/index.js +79 -0
  36. package/dist/clients/index.js.map +1 -1
  37. package/dist/clients/roo-code.d.ts.map +1 -1
  38. package/dist/clients/roo-code.js +5 -2
  39. package/dist/clients/roo-code.js.map +1 -1
  40. package/dist/clients/zed.d.ts.map +1 -1
  41. package/dist/clients/zed.js +22 -2
  42. package/dist/clients/zed.js.map +1 -1
  43. package/dist/diagnostics/doctor.d.ts +60 -2
  44. package/dist/diagnostics/doctor.d.ts.map +1 -1
  45. package/dist/diagnostics/doctor.js +185 -8
  46. package/dist/diagnostics/doctor.js.map +1 -1
  47. package/dist/diagnostics/startup-self-probe.d.ts +39 -0
  48. package/dist/diagnostics/startup-self-probe.d.ts.map +1 -0
  49. package/dist/diagnostics/startup-self-probe.js +87 -0
  50. package/dist/diagnostics/startup-self-probe.js.map +1 -0
  51. package/dist/gateway/essentials.d.ts +15 -6
  52. package/dist/gateway/essentials.d.ts.map +1 -1
  53. package/dist/gateway/essentials.js +51 -5
  54. package/dist/gateway/essentials.js.map +1 -1
  55. package/dist/index.d.ts +15 -1
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +37 -2
  58. package/dist/index.js.map +1 -1
  59. package/dist/net/proxy-dispatcher.d.ts +7 -0
  60. package/dist/net/proxy-dispatcher.d.ts.map +1 -1
  61. package/dist/net/proxy-dispatcher.js +7 -2
  62. package/dist/net/proxy-dispatcher.js.map +1 -1
  63. package/dist/net/site-basic-auth.d.ts +65 -0
  64. package/dist/net/site-basic-auth.d.ts.map +1 -0
  65. package/dist/net/site-basic-auth.js +118 -0
  66. package/dist/net/site-basic-auth.js.map +1 -0
  67. package/dist/proxy/bridge.d.ts +18 -1
  68. package/dist/proxy/bridge.d.ts.map +1 -1
  69. package/dist/proxy/bridge.js +23 -3
  70. package/dist/proxy/bridge.js.map +1 -1
  71. package/dist/setup-wizard-types.d.ts +9 -0
  72. package/dist/setup-wizard-types.d.ts.map +1 -1
  73. package/dist/setup-wizard.d.ts.map +1 -1
  74. package/dist/setup-wizard.js +37 -0
  75. package/dist/setup-wizard.js.map +1 -1
  76. package/dist/sites/client-pool.d.ts +35 -1
  77. package/dist/sites/client-pool.d.ts.map +1 -1
  78. package/dist/sites/client-pool.js +45 -1
  79. package/dist/sites/client-pool.js.map +1 -1
  80. package/dist/tools/elements/builders.d.ts.map +1 -1
  81. package/dist/tools/elements/builders.js +65 -8
  82. package/dist/tools/elements/builders.js.map +1 -1
  83. package/dist/tools/elements/handlers.d.ts +45 -0
  84. package/dist/tools/elements/handlers.d.ts.map +1 -1
  85. package/dist/tools/elements/handlers.js +178 -2
  86. package/dist/tools/elements/handlers.js.map +1 -1
  87. package/dist/tools/format/elements-format.d.ts.map +1 -1
  88. package/dist/tools/format/elements-format.js +8 -0
  89. package/dist/tools/format/elements-format.js.map +1 -1
  90. package/dist/tools/format/health-format.d.ts +2 -0
  91. package/dist/tools/format/health-format.d.ts.map +1 -1
  92. package/dist/tools/format/health-format.js +11 -0
  93. package/dist/tools/format/health-format.js.map +1 -1
  94. package/dist/tools/format/pages-format.d.ts +42 -0
  95. package/dist/tools/format/pages-format.d.ts.map +1 -1
  96. package/dist/tools/format/pages-format.js +43 -0
  97. package/dist/tools/format/pages-format.js.map +1 -1
  98. package/dist/tools/format/source-schema-format.d.ts +64 -0
  99. package/dist/tools/format/source-schema-format.d.ts.map +1 -0
  100. package/dist/tools/format/source-schema-format.js +161 -0
  101. package/dist/tools/format/source-schema-format.js.map +1 -0
  102. package/dist/tools/health.d.ts.map +1 -1
  103. package/dist/tools/health.js +31 -0
  104. package/dist/tools/health.js.map +1 -1
  105. package/dist/tools/multi-items/builders.js +2 -2
  106. package/dist/tools/multi-items/builders.js.map +1 -1
  107. package/dist/tools/multi-items/clean-implode-handler.d.ts +2 -1
  108. package/dist/tools/multi-items/clean-implode-handler.d.ts.map +1 -1
  109. package/dist/tools/multi-items/clean-implode-handler.js +9 -1
  110. package/dist/tools/multi-items/clean-implode-handler.js.map +1 -1
  111. package/dist/tools/multi-items/inspect-handler.d.ts +8 -0
  112. package/dist/tools/multi-items/inspect-handler.d.ts.map +1 -1
  113. package/dist/tools/multi-items/inspect-handler.js +48 -2
  114. package/dist/tools/multi-items/inspect-handler.js.map +1 -1
  115. package/dist/tools/pages/builders.d.ts.map +1 -1
  116. package/dist/tools/pages/builders.js +126 -28
  117. package/dist/tools/pages/builders.js.map +1 -1
  118. package/dist/tools/pages/handlers-read.d.ts +21 -2
  119. package/dist/tools/pages/handlers-read.d.ts.map +1 -1
  120. package/dist/tools/pages/handlers-read.js +183 -11
  121. package/dist/tools/pages/handlers-read.js.map +1 -1
  122. package/dist/tools/pages/handlers-write.d.ts +42 -1
  123. package/dist/tools/pages/handlers-write.d.ts.map +1 -1
  124. package/dist/tools/pages/handlers-write.js +114 -5
  125. package/dist/tools/pages/handlers-write.js.map +1 -1
  126. package/dist/tools/pages/schemas.d.ts +26 -0
  127. package/dist/tools/pages/schemas.d.ts.map +1 -1
  128. package/dist/tools/pages/schemas.js +38 -0
  129. package/dist/tools/pages/schemas.js.map +1 -1
  130. package/dist/tools/pool-resolve-helper.d.ts +11 -26
  131. package/dist/tools/pool-resolve-helper.d.ts.map +1 -1
  132. package/dist/tools/pool-resolve-helper.js +50 -0
  133. package/dist/tools/pool-resolve-helper.js.map +1 -1
  134. package/dist/tools/sources/builders.d.ts.map +1 -1
  135. package/dist/tools/sources/builders.js +258 -4
  136. package/dist/tools/sources/builders.js.map +1 -1
  137. package/dist/tools/sources/handlers-bind.d.ts +107 -0
  138. package/dist/tools/sources/handlers-bind.d.ts.map +1 -1
  139. package/dist/tools/sources/handlers-bind.js +197 -2
  140. package/dist/tools/sources/handlers-bind.js.map +1 -1
  141. package/dist/tools/sources/handlers.d.ts +54 -0
  142. package/dist/tools/sources/handlers.d.ts.map +1 -1
  143. package/dist/tools/sources/handlers.js +82 -0
  144. package/dist/tools/sources/handlers.js.map +1 -1
  145. package/dist/tools/sparse-fields.d.ts +37 -1
  146. package/dist/tools/sparse-fields.d.ts.map +1 -1
  147. package/dist/tools/sparse-fields.js +35 -5
  148. package/dist/tools/sparse-fields.js.map +1 -1
  149. package/dist/tools/tool-builder/results.d.ts.map +1 -1
  150. package/dist/tools/tool-builder/results.js +39 -0
  151. package/dist/tools/tool-builder/results.js.map +1 -1
  152. package/manifest.json +1 -1
  153. package/package.json +1 -1
  154. package/skills/yt-builder-mcp/SKILL.md +237 -39
@@ -1 +1 @@
1
- {"version":3,"file":"zed.js","sourceRoot":"","sources":["../../src/clients/zed.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EACH,iBAAiB,EACjB,aAAa,EACb,mBAAmB,GAGtB,MAAM,YAAY,CAAC;AAEpB,SAAS,UAAU;IACf,OAAO,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAiB;IACnC,EAAE,EAAE,KAAK;IACT,KAAK,EAAE,KAAK;IACZ,UAAU;IACV,UAAU,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAChE,KAAK,EAAE,KAAK,EAAE,UAAkB,EAAE,MAAuB,EAAE,EAAE;QACzD,MAAM,aAAa,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE;YAC1C,MAAM,OAAO,GACT,OAAO,CAAC,eAAe,KAAK,IAAI;gBAChC,OAAO,OAAO,CAAC,eAAe,KAAK,QAAQ;gBAC3C,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC;gBACnC,CAAC,CAAC,EAAE,GAAI,OAAO,CAAC,eAA2C,EAAE;gBAC7D,CAAC,CAAC,EAAE,CAAC;YACb,OAAO,CAAC,UAAU,CAAC,GAAG;gBAClB,OAAO,EAAE;oBACL,IAAI,EAAE,MAAM,CAAC,OAAO;oBACpB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,GAAG,EAAE,MAAM,CAAC,GAAG;iBAClB;gBACD,QAAQ,EAAE,EAAE;aACf,CAAC;YACF,OAAO,EAAE,GAAG,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;QACpD,CAAC,CAAC,CAAC;IACP,CAAC;IACD,MAAM,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,UAAU,EAAE,EAAE,iBAAiB,CAAC;IAChE,MAAM,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,UAAU,EAAE,EAAE,iBAAiB,CAAC;CACrE,CAAC"}
1
+ {"version":3,"file":"zed.js","sourceRoot":"","sources":["../../src/clients/zed.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EACH,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,mBAAmB,GAGtB,MAAM,YAAY,CAAC;AAEpB;;;;;;GAMG;AACH,SAAS,WAAW,CAAC,KAAc;IAC/B,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACtE,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,MAAM,OAAO,GAAI,KAAiC,CAAC,OAAO,CAAC;IAC3D,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5E,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,OAAQ,OAAmC,CAAC,GAAG,CAAC;AACpD,CAAC;AAED,SAAS,UAAU;IACf,OAAO,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAiB;IACnC,EAAE,EAAE,KAAK;IACT,KAAK,EAAE,KAAK;IACZ,UAAU;IACV,UAAU,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAChE,KAAK,EAAE,KAAK,EAAE,UAAkB,EAAE,MAAuB,EAAE,EAAE;QACzD,MAAM,aAAa,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE;YAC1C,MAAM,OAAO,GACT,OAAO,CAAC,eAAe,KAAK,IAAI;gBAChC,OAAO,OAAO,CAAC,eAAe,KAAK,QAAQ;gBAC3C,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC;gBACnC,CAAC,CAAC,EAAE,GAAI,OAAO,CAAC,eAA2C,EAAE;gBAC7D,CAAC,CAAC,EAAE,CAAC;YACb,+DAA+D;YAC/D,kEAAkE;YAClE,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;YAClD,OAAO,CAAC,UAAU,CAAC,GAAG;gBAClB,OAAO,EAAE;oBACL,IAAI,EAAE,MAAM,CAAC,OAAO;oBACpB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,GAAG,EAAE,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC;iBAC5C;gBACD,QAAQ,EAAE,EAAE;aACf,CAAC;YACF,OAAO,EAAE,GAAG,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;QACpD,CAAC,CAAC,CAAC;IACP,CAAC;IACD,MAAM,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,UAAU,EAAE,EAAE,iBAAiB,CAAC;IAChE,MAAM,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,UAAU,EAAE,EAAE,iBAAiB,CAAC;CACrE,CAAC"}
@@ -22,20 +22,54 @@ export interface DoctorConfig {
22
22
  readonly currentVersion: string;
23
23
  readonly packageName: string;
24
24
  }
25
+ /**
26
+ * WordPress host install-readiness facts, surfaced on the **Bearer-authenticated**
27
+ * `/health` payload (Task 2.1/2.2b PHP side). These diagnose the "some files
28
+ * could not be copied" install-failure class — the Glöckle stress-test failure
29
+ * where a non-`direct` filesystem transport silently blocks plugin
30
+ * updates/uninstalls. Mirrors the canonical PHP shape in
31
+ * `src/modules/rest-bridge/src/HealthController::collectHostCompat()`.
32
+ */
33
+ export interface HostCompat {
34
+ /** WP filesystem transport: 'direct' | 'ftpext' | 'ssh2' | ''. 'direct' = PHP writes files itself. */
35
+ readonly fs_method: string;
36
+ /** Whether the plugin-dir owner matches the web-server user; null when undeterminable (no posix). */
37
+ readonly plugin_dir_owner_matches_web_user: boolean | null;
38
+ /** Whether OPcache is on (stale bytecode can linger after an in-place .php overwrite). */
39
+ readonly opcache_enabled: boolean;
40
+ /** Whether PHP can write into the plugin directory at all. */
41
+ readonly plugin_dir_writable: boolean;
42
+ }
25
43
  export interface DoctorDeps {
26
- /** Probe `<url>/wp-json/yt-builder-mcp/v1/health`. */
44
+ /**
45
+ * Probe `<url>/wp-json/yt-builder-mcp/v1/health` (then the Joomla path).
46
+ * When a bearer token is available the probe authenticates, so the success
47
+ * return can carry the {@link HostCompat} `host` block (authed-tier only —
48
+ * without a token `host` is simply undefined and the doctor still reports
49
+ * reachability + plugin version, no regression).
50
+ */
27
51
  probeHealth: (url: string) => Promise<{
28
52
  ok: true;
29
53
  pluginVersion?: string;
54
+ host?: HostCompat;
30
55
  } | {
31
56
  ok: false;
32
57
  error: unknown;
33
58
  }>;
34
- /** Probe an authenticated endpoint with the bearer. */
59
+ /**
60
+ * Probe an authenticated endpoint with the bearer.
61
+ *
62
+ * P0.5 (U2): when the probe can observe the server's coarse `token_scope`
63
+ * (the authenticated /health payload carries it), it returns `tokenScope`
64
+ * so the doctor can report a "Bearer scope" row — a read-only key is a valid
65
+ * key that nonetheless cannot WRITE, which the bearer-validity check alone
66
+ * would not surface. Optional for back-compat (older probes / tests omit it).
67
+ */
35
68
  probeBearer: (url: string, token: string) => Promise<{
36
69
  ok: boolean;
37
70
  status?: number;
38
71
  error?: unknown;
72
+ tokenScope?: 'read' | 'write';
39
73
  }>;
40
74
  /** Latest version on npm, or null. */
41
75
  fetchLatest: (packageName: string) => Promise<string | null>;
@@ -51,7 +85,31 @@ export interface DoctorDeps {
51
85
  ok: boolean;
52
86
  error?: unknown;
53
87
  }>;
88
+ /**
89
+ * Task 2.3 pre-install mode — probe the platform REST ROOT (`/wp-json/`)
90
+ * reachability, independent of the plugin endpoint. Optional (back-compat).
91
+ * When `/health` 404s (plugin not installed yet) but the REST root IS
92
+ * reachable, the doctor downgrades reachability to an advisory "plugin not
93
+ * yet installed" hint (exit 0) instead of a hard failure — the operator
94
+ * very likely hit an install-upload failure (FS_METHOD / ownership / FTP).
95
+ */
96
+ probeRestRoot?: (url: string) => Promise<{
97
+ ok: boolean;
98
+ error?: unknown;
99
+ }>;
54
100
  }
101
+ /**
102
+ * Validate an **already-peeled** value as {@link HostCompat} — the single source
103
+ * of truth for the host-compat shape. Both validation boundaries call this:
104
+ * • the network boundary (`parseHost` in doctor-command.ts peels `body.host`
105
+ * off the wire response, then delegates here), and
106
+ * • the consumption boundary (`runDoctor` re-validates `health.host` so a
107
+ * directly injected / future probe can't feed it a malformed host).
108
+ * Keeping the shape check in one place means a future `HostCompat` field can't
109
+ * be validated in one boundary but silently skipped in the other. A
110
+ * partial/typo'd bag is discarded (treated as absent), never crashed on.
111
+ */
112
+ export declare function asHostCompat(value: unknown): HostCompat | undefined;
55
113
  /**
56
114
  * Run the self-diagnostic. Pure decision core — all network probes are
57
115
  * injected via {@link DoctorDeps}, so the logic is fully testable offline.
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/diagnostics/doctor.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3D,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,+CAA+C;IAC/C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IACxC,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,qCAAqC;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,iCAAiC;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,UAAU;IACvB,sDAAsD;IACtD,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC5G,uDAAuD;IACvD,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACxG,sCAAsC;IACtC,WAAW,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7D;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACnE;AAsBD;;;GAGG;AACH,wBAAsB,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAiI7F;AAID,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAS/D"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/diagnostics/doctor.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,110 @@ function meetsFloor(v, floor) {
19
19
  function proxyOf(env) {
20
20
  return env.HTTPS_PROXY ?? env.https_proxy ?? env.HTTP_PROXY ?? env.http_proxy ?? null;
21
21
  }
22
+ /**
23
+ * Validate an **already-peeled** value as {@link HostCompat} — the single source
24
+ * of truth for the host-compat shape. Both validation boundaries call this:
25
+ * • the network boundary (`parseHost` in doctor-command.ts peels `body.host`
26
+ * off the wire response, then delegates here), and
27
+ * • the consumption boundary (`runDoctor` re-validates `health.host` so a
28
+ * directly injected / future probe can't feed it a malformed host).
29
+ * Keeping the shape check in one place means a future `HostCompat` field can't
30
+ * be validated in one boundary but silently skipped in the other. A
31
+ * partial/typo'd bag is discarded (treated as absent), never crashed on.
32
+ */
33
+ export function asHostCompat(value) {
34
+ if (value === null || typeof value !== 'object')
35
+ return undefined;
36
+ const v = value;
37
+ const owner = v.plugin_dir_owner_matches_web_user;
38
+ if (typeof v.fs_method !== 'string')
39
+ return undefined;
40
+ if (!(owner === null || typeof owner === 'boolean'))
41
+ return undefined;
42
+ if (typeof v.opcache_enabled !== 'boolean')
43
+ return undefined;
44
+ if (typeof v.plugin_dir_writable !== 'boolean')
45
+ return undefined;
46
+ return {
47
+ fs_method: v.fs_method,
48
+ plugin_dir_owner_matches_web_user: owner,
49
+ opcache_enabled: v.opcache_enabled,
50
+ plugin_dir_writable: v.plugin_dir_writable,
51
+ };
52
+ }
53
+ /** Read a numeric `.status` off a health-probe error (RestError-like), or null. */
54
+ function statusOf(value) {
55
+ if (value !== null && typeof value === 'object' && 'status' in value) {
56
+ const s = value.status;
57
+ if (typeof s === 'number' && Number.isFinite(s))
58
+ return s;
59
+ }
60
+ return null;
61
+ }
62
+ /** Manual FS_METHOD guidance — the copy-pasteable fix for the Glöckle install-failure class. */
63
+ const FS_METHOD_FIX = "plugin updates/uninstalls need FTP credentials or define('FS_METHOD','direct') in wp-config.php so PHP writes files directly.";
64
+ /**
65
+ * Append the "Host readiness" checks for a {@link HostCompat} block (authed
66
+ * /health only). One line per fact with an actionable hint; warnings are
67
+ * tolerated (they never fail the doctor).
68
+ */
69
+ function pushHostChecks(checks, host) {
70
+ // fs_method — the Glöckle class. Non-'direct' transports (ftpext/ssh2)
71
+ // mean WordPress can't write plugin files itself on an upgrade/uninstall.
72
+ if (host.fs_method === 'direct') {
73
+ checks.push({ name: 'host_fs_method', label: 'Host · FS method', status: 'ok', detail: "FS_METHOD=direct — PHP writes files directly." });
74
+ }
75
+ else {
76
+ const method = host.fs_method === '' ? '(unset)' : host.fs_method;
77
+ checks.push({
78
+ name: 'host_fs_method',
79
+ label: 'Host · FS method',
80
+ status: 'warn',
81
+ detail: `FS_METHOD=${method} — ${FS_METHOD_FIX}`,
82
+ fix: `FS_METHOD=${method} → ${FS_METHOD_FIX}`,
83
+ });
84
+ }
85
+ // plugin_dir_owner_matches_web_user — a mismatch can block file ops.
86
+ if (host.plugin_dir_owner_matches_web_user === false) {
87
+ checks.push({
88
+ name: 'host_owner',
89
+ label: 'Host · Dir ownership',
90
+ status: 'warn',
91
+ detail: 'Plugin-dir owner does not match the web-server user — file ops (update/uninstall) may be blocked.',
92
+ fix: 'chown the plugin directory to the web-server user (e.g. www-data), or fix the upload via FTP credentials.',
93
+ });
94
+ }
95
+ else if (host.plugin_dir_owner_matches_web_user === true) {
96
+ checks.push({ name: 'host_owner', label: 'Host · Dir ownership', status: 'ok', detail: 'Plugin-dir owner matches the web-server user.' });
97
+ }
98
+ else {
99
+ checks.push({ name: 'host_owner', label: 'Host · Dir ownership', status: 'info', detail: 'Ownership could not be determined on this host.' });
100
+ }
101
+ // plugin_dir_writable — can PHP write into the plugin directory at all.
102
+ if (host.plugin_dir_writable) {
103
+ checks.push({ name: 'host_writable', label: 'Host · Dir writable', status: 'ok', detail: 'Plugin directory is writable.' });
104
+ }
105
+ else {
106
+ checks.push({
107
+ name: 'host_writable',
108
+ label: 'Host · Dir writable',
109
+ status: 'warn',
110
+ detail: 'Plugin directory is NOT writable — updates/uninstalls will fail.',
111
+ fix: 'Grant the web-server user write access to the plugin directory, or use FTP credentials for file ops.',
112
+ });
113
+ }
114
+ // opcache_enabled — informational, surfaced ONLY when enabled (the
115
+ // stale-bytecode-after-upgrade hint per the brief). When OPcache is off
116
+ // there is nothing to warn about, so we emit no line (no noise).
117
+ if (host.opcache_enabled) {
118
+ checks.push({
119
+ name: 'host_opcache',
120
+ label: 'Host · OPcache',
121
+ status: 'info',
122
+ detail: 'OPcache is enabled — after an in-place upgrade, reload PHP-FPM (or flush OPcache) so old bytecode does not linger.',
123
+ });
124
+ }
125
+ }
22
126
  /**
23
127
  * Run the self-diagnostic. Pure decision core — all network probes are
24
128
  * injected via {@link DoctorDeps}, so the logic is fully testable offline.
@@ -69,22 +173,84 @@ export async function runDoctor(config, deps) {
69
173
  status: 'ok',
70
174
  detail: health.pluginVersion !== undefined ? `OK — plugin ${health.pluginVersion}` : 'OK',
71
175
  });
176
+ // 4b. Host readiness — only present on the authed payload (with a
177
+ // token). Absent host = no token / pre-install → no host section,
178
+ // no failure. Validate at consumption (a malformed bag is ignored).
179
+ const host = asHostCompat(health.host);
180
+ if (host !== undefined) {
181
+ pushHostChecks(checks, host);
182
+ }
72
183
  }
73
184
  else {
74
- const diag = diagnoseNetworkError(health.error, env);
75
- checks.push({
76
- name: 'reachability',
77
- label: 'Plugin reachable',
78
- status: 'fail',
79
- detail: diag !== null ? diag.summary : 'Could not reach the plugin health endpoint.',
80
- fix: diag !== null ? diag.fix : 'Verify the site URL and that the yt-builder-mcp plugin is active.',
81
- });
185
+ // Task 2.3 — pre-install mode. A 404 means the plugin endpoint is
186
+ // not there (plugin not installed at this URL). If the platform
187
+ // REST ROOT is still reachable, the site is up and the upload very
188
+ // likely failed (FS_METHOD / ownership / FTP) — surface advisory
189
+ // guidance and DO NOT fail the doctor.
190
+ const healthStatus = statusOf(health.error);
191
+ const restRoot = healthStatus === 404 && deps.probeRestRoot !== undefined ? await deps.probeRestRoot(url) : null;
192
+ // `restRoot.ok` reflects the same `< 500` "REST surface is up"
193
+ // boundary as `probeRestRoot` (doctor-command.ts): any < 500 means
194
+ // the host answered, so the site is live and only the plugin is
195
+ // missing → advisory pre-install. A 5xx site is NOT "up" for install
196
+ // purposes, so the probe reports not-ok and we hard-fail below (this
197
+ // is reachability triage, not a pre-install case).
198
+ if (healthStatus === 404 && restRoot !== null && restRoot.ok) {
199
+ checks.push({
200
+ name: 'reachability',
201
+ label: 'Plugin reachable',
202
+ status: 'info',
203
+ detail: 'Plugin /health not found (HTTP 404), but the REST root is reachable.',
204
+ });
205
+ checks.push({
206
+ name: 'preinstall',
207
+ label: 'Pre-install',
208
+ status: 'info',
209
+ detail: 'Plugin not yet installed at this URL — the REST root responded, so the site is up. ' +
210
+ 'If the plugin ZIP upload failed, this is the install-readiness check.',
211
+ fix: 'Check FS_METHOD (a non-direct transport blocks the file copy) / plugin-dir ownership / FTP credentials. ' +
212
+ `Manual fix: ${FS_METHOD_FIX}`,
213
+ });
214
+ }
215
+ else {
216
+ const diag = diagnoseNetworkError(health.error, env);
217
+ checks.push({
218
+ name: 'reachability',
219
+ label: 'Plugin reachable',
220
+ status: 'fail',
221
+ detail: diag !== null ? diag.summary : 'Could not reach the plugin health endpoint.',
222
+ fix: diag !== null ? diag.fix : 'Verify the site URL and that the yt-builder-mcp plugin is active.',
223
+ });
224
+ }
82
225
  }
83
226
  // 5. Bearer validity (only meaningful if the site was reachable).
84
227
  if (health.ok) {
85
228
  const bearer = await deps.probeBearer(url, token);
86
229
  if (bearer.ok) {
87
230
  checks.push({ name: 'bearer', label: 'Bearer key', status: 'ok', detail: 'Accepted.' });
231
+ // P0.5 (U2) — Bearer SCOPE, distinct from bearer VALIDITY. A
232
+ // read-only key is accepted (✓ above) yet cannot perform any
233
+ // write tool — the doctor must surface that BEFORE the customer
234
+ // hits a confusing mid-wizard failure. A write/admin key is ok;
235
+ // a read-only key is an `info` row with the regenerate-key fix;
236
+ // an unknown scope (pre-U2 server) emits no row (no noise).
237
+ if (bearer.tokenScope === 'write') {
238
+ checks.push({
239
+ name: 'bearer_scope',
240
+ label: 'Bearer scope',
241
+ status: 'ok',
242
+ detail: 'write — this key can create and edit builder content.',
243
+ });
244
+ }
245
+ else if (bearer.tokenScope === 'read') {
246
+ checks.push({
247
+ name: 'bearer_scope',
248
+ label: 'Bearer scope',
249
+ status: 'info',
250
+ detail: 'read-only — this key can READ but every write tool will be refused.',
251
+ fix: 'Regenerate a write-scoped key in YT Builder MCP → Keys, then update the token.',
252
+ });
253
+ }
88
254
  }
89
255
  else {
90
256
  const diag = diagnoseNetworkError(bearer.error ?? { status: bearer.status }, env);
@@ -153,7 +319,18 @@ const GLYPH = { ok: '✓', warn: '!', fail: '✗', info: 'ℹ' };
153
319
  /** Render a {@link DoctorReport} as a readable, fixed-width-ish text block. */
154
320
  export function formatDoctorReport(report) {
155
321
  const lines = ['yt-builder-mcp doctor', ''];
322
+ let hostSectionOpen = false;
156
323
  for (const c of report.checks) {
324
+ const isHost = c.name.startsWith('host_');
325
+ // Group the host-compat facts under a "Host readiness" heading so the
326
+ // install-readiness block reads as one unit (Task 2.3).
327
+ if (isHost && !hostSectionOpen) {
328
+ lines.push('', ' Host readiness:');
329
+ hostSectionOpen = true;
330
+ }
331
+ else if (!isHost && hostSectionOpen) {
332
+ hostSectionOpen = false;
333
+ }
157
334
  lines.push(` ${GLYPH[c.status]} ${c.label}: ${c.detail}`);
158
335
  if (c.fix !== undefined)
159
336
  lines.push(` → ${c.fix}`);
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/diagnostics/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/diagnostics/doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /** A bounded TLS reachability probe of `url`. Resolves on any HTTP response
2
+ * (including 4xx/5xx — the TLS handshake succeeded), rejects on a transport
3
+ * failure (CA-trust, DNS, timeout, refused). */
4
+ export type TlsProbe = (url: string, timeoutMs: number) => Promise<void>;
5
+ export interface SelfProbeResult {
6
+ /** True → a TLS chain-of-trust failure was detected; the caller must exit. */
7
+ readonly caTrustFailure: boolean;
8
+ /** The actionable stderr message to print when `caTrustFailure` is true. */
9
+ readonly message?: string;
10
+ }
11
+ /** Default bound for the startup probe — short enough to beat the host's ~30s
12
+ * connect-timeout with wide margin, long enough for a real corporate proxy. */
13
+ export declare const DEFAULT_SELF_PROBE_TIMEOUT_MS = 4000;
14
+ /**
15
+ * The default probe: a bounded `fetch` (HEAD) of `url` with an AbortController
16
+ * timeout. Resolves on ANY response (the handshake completed); the only thing we
17
+ * care about is whether the connection rejects with a CA-trust error, which
18
+ * surfaces as a rejected promise whose `.cause` chain carries the TLS code.
19
+ */
20
+ export declare const defaultTlsProbe: TlsProbe;
21
+ /**
22
+ * Build the actionable stderr message for a CA-trust startup failure. Chooses
23
+ * the zero-export `--use-system-ca` remedy on Node ≥ 22.15, else the
24
+ * `NODE_EXTRA_CA_CERTS=<pem>` remedy. Never suggests disabling verification.
25
+ */
26
+ export declare function caTrustStartupMessage(siteUrl: string, nodeVersion: string): string;
27
+ /**
28
+ * Run the startup TLS self-probe against `siteUrl`. Returns `{ caTrustFailure:
29
+ * false }` for every outcome EXCEPT a TLS chain-of-trust rejection — only that
30
+ * one outcome is fail-fast-worthy (everything else must still let the server
31
+ * boot). When `siteUrl` is empty/undefined the probe is skipped (the
32
+ * boot-unconfigured path must stay).
33
+ */
34
+ export declare function runStartupSelfProbe(siteUrl: string | undefined, deps?: {
35
+ readonly probe?: TlsProbe;
36
+ readonly nodeVersion?: string;
37
+ readonly timeoutMs?: number;
38
+ }): Promise<SelfProbeResult>;
39
+ //# sourceMappingURL=startup-self-probe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startup-self-probe.d.ts","sourceRoot":"","sources":["../../src/diagnostics/startup-self-probe.ts"],"names":[],"mappings":"AA4BA;;gDAEgD;AAChD,MAAM,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEzE,MAAM,WAAW,eAAe;IAC5B,8EAA8E;IAC9E,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,4EAA4E;IAC5E,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;+EAC+E;AAC/E,eAAO,MAAM,6BAA6B,OAAO,CAAC;AAElD;;;;;GAKG;AACH,eAAO,MAAM,eAAe,EAAE,QAQ7B,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAUlF;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACrC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,IAAI,GAAE;IACF,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC1B,GACP,OAAO,CAAC,eAAe,CAAC,CAoB1B"}
@@ -0,0 +1,87 @@
1
+ // packages/mcp/src/diagnostics/startup-self-probe.ts
2
+ /**
3
+ * Startup TLS self-probe (P0.4 — fail-fast instead of a 30s /mcp hang).
4
+ *
5
+ * The Glöckle install-blocker: when the configured site sits behind a corporate
6
+ * TLS-inspection proxy whose root CA Node does not trust, the server opened
7
+ * stdio and waited — answering nothing — so the host's 30s `/mcp` connect-timeout
8
+ * fired with an opaque "Server disconnected" toast that "looked like an auth or
9
+ * server problem". The real cause (a self-signed cert in the chain) was invisible.
10
+ *
11
+ * This module sends ONE bounded HTTPS request to the configured site BEFORE the
12
+ * stdio transport is wired. If it rejects with a TLS chain-of-trust error
13
+ * (`isCaTrustError`), `main()` / the proxy bridge writes the actionable
14
+ * `--use-system-ca` / `NODE_EXTRA_CA_CERTS` fix to stderr and exits non-zero in
15
+ * < 2s — turning a silent 30s timeout into an immediate, copy-pasteable remedy.
16
+ * Any OTHER probe outcome (success, 401/404/5xx, DNS, plain timeout) is NOT a
17
+ * reason to abort: the server must still boot for those (auth can be fixed via a
18
+ * tool call; an unconfigured boot must stay). Never disables TLS verification.
19
+ *
20
+ * Pure + deps-injectable (the `probe` fn + `nodeVersion` + `now`) so it is
21
+ * unit-testable offline with no real network.
22
+ *
23
+ * @license MIT
24
+ */
25
+ import { isCaTrustError, supportsSystemCa } from './ca-trust.js';
26
+ /** Default bound for the startup probe — short enough to beat the host's ~30s
27
+ * connect-timeout with wide margin, long enough for a real corporate proxy. */
28
+ export const DEFAULT_SELF_PROBE_TIMEOUT_MS = 4000;
29
+ /**
30
+ * The default probe: a bounded `fetch` (HEAD) of `url` with an AbortController
31
+ * timeout. Resolves on ANY response (the handshake completed); the only thing we
32
+ * care about is whether the connection rejects with a CA-trust error, which
33
+ * surfaces as a rejected promise whose `.cause` chain carries the TLS code.
34
+ */
35
+ export const defaultTlsProbe = async (url, timeoutMs) => {
36
+ const controller = new AbortController();
37
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
38
+ try {
39
+ await fetch(url, { method: 'HEAD', signal: controller.signal, redirect: 'manual' });
40
+ }
41
+ finally {
42
+ clearTimeout(timer);
43
+ }
44
+ };
45
+ /**
46
+ * Build the actionable stderr message for a CA-trust startup failure. Chooses
47
+ * the zero-export `--use-system-ca` remedy on Node ≥ 22.15, else the
48
+ * `NODE_EXTRA_CA_CERTS=<pem>` remedy. Never suggests disabling verification.
49
+ */
50
+ export function caTrustStartupMessage(siteUrl, nodeVersion) {
51
+ const remedy = supportsSystemCa(nodeVersion)
52
+ ? 'set NODE_OPTIONS=--use-system-ca (Node ≥ 22.15 — reads your OS / corporate root CA store)'
53
+ : `set NODE_EXTRA_CA_CERTS=<path-to-corp-root-ca.pem> (this Node ${nodeVersion} is below 22.15, so --use-system-ca is unavailable)`;
54
+ return (`[yt-builder-mcp] fatal: self-signed cert in chain reaching ${siteUrl} — ` +
55
+ 'a corporate TLS-inspection proxy is injecting its own root CA that Node does not trust. ' +
56
+ `Fix: ${remedy}, then restart your AI client. ` +
57
+ 'Re-run `npx -y @wootsup/yt-builder-mcp setup` to bake this automatically. Never disable TLS verification.');
58
+ }
59
+ /**
60
+ * Run the startup TLS self-probe against `siteUrl`. Returns `{ caTrustFailure:
61
+ * false }` for every outcome EXCEPT a TLS chain-of-trust rejection — only that
62
+ * one outcome is fail-fast-worthy (everything else must still let the server
63
+ * boot). When `siteUrl` is empty/undefined the probe is skipped (the
64
+ * boot-unconfigured path must stay).
65
+ */
66
+ export async function runStartupSelfProbe(siteUrl, deps = {}) {
67
+ const url = (siteUrl ?? '').trim();
68
+ if (url === '')
69
+ return { caTrustFailure: false };
70
+ const probe = deps.probe ?? defaultTlsProbe;
71
+ const nodeVersion = deps.nodeVersion ?? process.version;
72
+ const timeoutMs = deps.timeoutMs ?? DEFAULT_SELF_PROBE_TIMEOUT_MS;
73
+ try {
74
+ await probe(url, timeoutMs);
75
+ return { caTrustFailure: false };
76
+ }
77
+ catch (err) {
78
+ if (isCaTrustError(err)) {
79
+ return { caTrustFailure: true, message: caTrustStartupMessage(url, nodeVersion) };
80
+ }
81
+ // Any other failure (DNS, timeout, refused, plain abort) is NOT a
82
+ // boot-blocker — the server must still come up. The proxy bridge's
83
+ // first-frame catch already turns those into actionable JSON-RPC errors.
84
+ return { caTrustFailure: false };
85
+ }
86
+ }
87
+ //# sourceMappingURL=startup-self-probe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startup-self-probe.js","sourceRoot":"","sources":["../../src/diagnostics/startup-self-probe.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAcjE;+EAC+E;AAC/E,MAAM,CAAC,MAAM,6BAA6B,GAAG,IAAI,CAAC;AAElD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAa,KAAK,EAAE,GAAW,EAAE,SAAiB,EAAiB,EAAE;IAC7F,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAC9D,IAAI,CAAC;QACD,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IACxF,CAAC;YAAS,CAAC;QACP,YAAY,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;AACL,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAe,EAAE,WAAmB;IACtE,MAAM,MAAM,GAAG,gBAAgB,CAAC,WAAW,CAAC;QACxC,CAAC,CAAC,2FAA2F;QAC7F,CAAC,CAAC,iEAAiE,WAAW,qDAAqD,CAAC;IACxI,OAAO,CACH,8DAA8D,OAAO,KAAK;QAC1E,0FAA0F;QAC1F,QAAQ,MAAM,iCAAiC;QAC/C,2GAA2G,CAC9G,CAAC;AACN,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,OAA2B,EAC3B,OAII,EAAE;IAEN,MAAM,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACnC,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;IAEjD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,eAAe,CAAC;IAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IACxD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,6BAA6B,CAAC;IAElE,IAAI,CAAC;QACD,MAAM,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC5B,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,qBAAqB,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,CAAC;QACtF,CAAC;QACD,kEAAkE;QAClE,mEAAmE;QACnE,yEAAyE;QACzE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;IACrC,CAAC;AACL,CAAC"}
@@ -15,11 +15,20 @@
15
15
  * entirely (no forward, no capture) so the
16
16
  * SDK never sees a duplicate registration.
17
17
  *
18
- * Why this split: Cursor caps MCP servers at ~40 tools. This adapter
19
- * declares 31 callable tools (26 domain L1/L3 + 4 advanced L2 + 1 gateway).
20
- * The 3-lane shape keeps `tools/list` at 24 (L1) + 2 (L3) + 1 (gateway) =
21
- * 27 entries, well under the cap, while every tool stays fully reachable
22
- * (advanced tools through `yootheme_builder_advanced`).
18
+ * Why this split: Cursor caps MCP servers at ~40 tools. The 3-lane shape
19
+ * keeps `tools/list` at 32 (L1) + 2 (L3) + 2 (gateways) = 36 entries, well
20
+ * under the cap, while every tool stays fully reachable (advanced tools
21
+ * through `yootheme_builder_advanced` / `yootheme_builder_advanced_read`).
22
+ * B4 (2026-06-27): element_get_binding promoted L2 → L1 (binding-read made
23
+ * first-class, mirroring the already-L1 element_bind_source write). L1 26 → 27.
24
+ * U4-L1 (Glöckle onboarding, 2026-06-27): source_get_schema promoted L2 → L1
25
+ * (the archive/category binding entry-point made first-class, mirroring how the
26
+ * bind→verify tools are already L1). L1 27 → 28.
27
+ * HANDOFF-4/5 L1 (Glöckle onboarding, 2026-06-28): render_preview,
28
+ * element_set_source, rename_source, template_set_type promoted L2 → L1 — the
29
+ * core write/refactor + render-verify tools the Glöckle HANDOFF-4/5 ask for,
30
+ * made first-class so a cold agent can discover them in tools/list (L2 was a
31
+ * discoverability workaround). L1 28 → 32, advanced 9 → 5.
23
32
  *
24
33
  * F116 (2026-06-11): the bind→save→publish chain (element_bind_source,
25
34
  * page_save, page_publish) was promoted from the advanced lane to L1. It is
@@ -42,7 +51,7 @@
42
51
  * L1 — Tools kept as first-class entries in `tools/list`.
43
52
  * Forwarded by the CapturingServer to the real McpServer.
44
53
  */
45
- export declare const ESSENTIAL_TOOLS: readonly ["yootheme_builder_pages_list", "yootheme_builder_pages_resolve", "yootheme_builder_get_etag", "yootheme_builder_element_list", "yootheme_builder_element_add", "yootheme_builder_element_update_settings", "yootheme_builder_sources_list", "yootheme_builder_element_types_list", "yootheme_builder_inspect_multi_items_binding", "yootheme_builder_element_get", "yootheme_builder_element_delete", "yootheme_builder_element_clone", "yootheme_builder_element_move", "yootheme_builder_page_get_layout", "yootheme_builder_template_summary", "yootheme_builder_element_type_get_schema", "yootheme_builder_sites_list", "yootheme_builder_sites_test", "yootheme_builder_use_site", "yootheme_builder_pages_create", "yootheme_builder_pages_delete", "yootheme_builder_element_bind_source", "yootheme_builder_page_save", "yootheme_builder_page_publish", "yootheme_builder_page_dynamize", "yootheme_builder_scaffold_section"];
54
+ export declare const ESSENTIAL_TOOLS: readonly ["yootheme_builder_pages_list", "yootheme_builder_pages_resolve", "yootheme_builder_get_etag", "yootheme_builder_element_list", "yootheme_builder_element_add", "yootheme_builder_element_update_settings", "yootheme_builder_sources_list", "yootheme_builder_element_types_list", "yootheme_builder_inspect_multi_items_binding", "yootheme_builder_element_get", "yootheme_builder_element_delete", "yootheme_builder_element_clone", "yootheme_builder_element_move", "yootheme_builder_page_get_layout", "yootheme_builder_template_summary", "yootheme_builder_element_type_get_schema", "yootheme_builder_sites_list", "yootheme_builder_sites_test", "yootheme_builder_use_site", "yootheme_builder_pages_create", "yootheme_builder_pages_delete", "yootheme_builder_element_bind_source", "yootheme_builder_page_save", "yootheme_builder_page_publish", "yootheme_builder_element_get_binding", "yootheme_builder_page_dynamize", "yootheme_builder_scaffold_section", "yootheme_builder_source_get_schema", "yootheme_builder_render_preview", "yootheme_builder_element_set_source", "yootheme_builder_rename_source", "yootheme_builder_template_set_type"];
46
55
  /**
47
56
  * L3 — Tools registered DIRECTLY on the real McpServer, BEFORE the
48
57
  * CapturingServer wraps it. The CapturingServer treats these names as a
@@ -1 +1 @@
1
- {"version":3,"file":"essentials.d.ts","sourceRoot":"","sources":["../../src/gateway/essentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH;;;GAGG;AACH,eAAO,MAAM,eAAe,o5BAoFlB,CAAC;AAEX;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,mEAGzB,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAC7D,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzE,gEAAgE;AAChE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED,4DAA4D;AAC5D,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtD"}
1
+ {"version":3,"file":"essentials.d.ts","sourceRoot":"","sources":["../../src/gateway/essentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAEH;;;GAGG;AACH,eAAO,MAAM,eAAe,onCAyHlB,CAAC;AAEX;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,mEAGzB,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAC7D,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzE,gEAAgE;AAChE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED,4DAA4D;AAC5D,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtD"}