@wootsup/mcp 0.1.0-rc.9 → 0.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 (240) hide show
  1. package/CHANGELOG.md +148 -83
  2. package/README.md +36 -32
  3. package/SECURITY.md +15 -6
  4. package/dist/auth/keychain.d.ts +27 -1
  5. package/dist/auth/keychain.js +48 -2
  6. package/dist/auth/keychain.js.map +1 -1
  7. package/dist/cli-hint.d.ts +22 -0
  8. package/dist/cli-hint.js +55 -0
  9. package/dist/cli-hint.js.map +1 -0
  10. package/dist/index.d.ts +19 -0
  11. package/dist/index.js +163 -22
  12. package/dist/index.js.map +1 -1
  13. package/dist/install-skill.js +1 -1
  14. package/dist/modules/apimapper/cache.d.ts +2 -2
  15. package/dist/modules/apimapper/cache.js +119 -29
  16. package/dist/modules/apimapper/cache.js.map +1 -1
  17. package/dist/modules/apimapper/client.d.ts +102 -1
  18. package/dist/modules/apimapper/client.js +631 -297
  19. package/dist/modules/apimapper/client.js.map +1 -1
  20. package/dist/modules/apimapper/connections-format.d.ts +51 -0
  21. package/dist/modules/apimapper/connections-format.js +261 -0
  22. package/dist/modules/apimapper/connections-format.js.map +1 -0
  23. package/dist/modules/apimapper/connections-trim.d.ts +82 -0
  24. package/dist/modules/apimapper/connections-trim.js +224 -0
  25. package/dist/modules/apimapper/connections-trim.js.map +1 -0
  26. package/dist/modules/apimapper/connections.d.ts +14 -2
  27. package/dist/modules/apimapper/connections.js +612 -153
  28. package/dist/modules/apimapper/connections.js.map +1 -1
  29. package/dist/modules/apimapper/credential-sanitizer.d.ts +5 -0
  30. package/dist/modules/apimapper/credential-sanitizer.js +60 -1
  31. package/dist/modules/apimapper/credential-sanitizer.js.map +1 -1
  32. package/dist/modules/apimapper/credentials-format.d.ts +21 -0
  33. package/dist/modules/apimapper/credentials-format.js +145 -0
  34. package/dist/modules/apimapper/credentials-format.js.map +1 -0
  35. package/dist/modules/apimapper/credentials.d.ts +12 -2
  36. package/dist/modules/apimapper/credentials.js +226 -73
  37. package/dist/modules/apimapper/credentials.js.map +1 -1
  38. package/dist/modules/apimapper/diagnose.d.ts +54 -2
  39. package/dist/modules/apimapper/diagnose.js +213 -12
  40. package/dist/modules/apimapper/diagnose.js.map +1 -1
  41. package/dist/modules/apimapper/elicitation.d.ts +54 -0
  42. package/dist/modules/apimapper/elicitation.js +90 -0
  43. package/dist/modules/apimapper/elicitation.js.map +1 -0
  44. package/dist/modules/apimapper/flows-format.d.ts +50 -0
  45. package/dist/modules/apimapper/flows-format.js +318 -0
  46. package/dist/modules/apimapper/flows-format.js.map +1 -0
  47. package/dist/modules/apimapper/flows.d.ts +13 -2
  48. package/dist/modules/apimapper/flows.js +312 -122
  49. package/dist/modules/apimapper/flows.js.map +1 -1
  50. package/dist/modules/apimapper/gateway/advanced-tool.d.ts +9 -0
  51. package/dist/modules/apimapper/gateway/advanced-tool.js +265 -0
  52. package/dist/modules/apimapper/gateway/advanced-tool.js.map +1 -0
  53. package/dist/modules/apimapper/gateway/capturing-server.d.ts +81 -0
  54. package/dist/modules/apimapper/gateway/capturing-server.js +87 -0
  55. package/dist/modules/apimapper/gateway/capturing-server.js.map +1 -0
  56. package/dist/modules/apimapper/gateway/essentials.d.ts +4 -0
  57. package/dist/modules/apimapper/gateway/essentials.js +35 -0
  58. package/dist/modules/apimapper/gateway/essentials.js.map +1 -0
  59. package/dist/modules/apimapper/gateway/test-support.d.ts +17 -0
  60. package/dist/modules/apimapper/gateway/test-support.js +43 -0
  61. package/dist/modules/apimapper/gateway/test-support.js.map +1 -0
  62. package/dist/modules/apimapper/get-skill.d.ts +3 -3
  63. package/dist/modules/apimapper/get-skill.js +47 -7
  64. package/dist/modules/apimapper/get-skill.js.map +1 -1
  65. package/dist/modules/apimapper/graph-builder.js +1 -1
  66. package/dist/modules/apimapper/graph-builder.js.map +1 -1
  67. package/dist/modules/apimapper/graph.d.ts +2 -2
  68. package/dist/modules/apimapper/graph.js +170 -35
  69. package/dist/modules/apimapper/graph.js.map +1 -1
  70. package/dist/modules/apimapper/index.d.ts +17 -1
  71. package/dist/modules/apimapper/index.js +68 -17
  72. package/dist/modules/apimapper/index.js.map +1 -1
  73. package/dist/modules/apimapper/inspect.d.ts +3 -2
  74. package/dist/modules/apimapper/inspect.js +97 -13
  75. package/dist/modules/apimapper/inspect.js.map +1 -1
  76. package/dist/modules/apimapper/library.d.ts +2 -2
  77. package/dist/modules/apimapper/library.js +665 -80
  78. package/dist/modules/apimapper/library.js.map +1 -1
  79. package/dist/modules/apimapper/license-format.d.ts +22 -0
  80. package/dist/modules/apimapper/license-format.js +149 -0
  81. package/dist/modules/apimapper/license-format.js.map +1 -0
  82. package/dist/modules/apimapper/license.d.ts +16 -2
  83. package/dist/modules/apimapper/license.js +62 -38
  84. package/dist/modules/apimapper/license.js.map +1 -1
  85. package/dist/modules/apimapper/local-sources.d.ts +2 -2
  86. package/dist/modules/apimapper/local-sources.js +44 -30
  87. package/dist/modules/apimapper/local-sources.js.map +1 -1
  88. package/dist/modules/apimapper/misc.d.ts +30 -2
  89. package/dist/modules/apimapper/misc.js +114 -49
  90. package/dist/modules/apimapper/misc.js.map +1 -1
  91. package/dist/modules/apimapper/node-schema.d.ts +52 -0
  92. package/dist/modules/apimapper/node-schema.js +70 -2
  93. package/dist/modules/apimapper/node-schema.js.map +1 -1
  94. package/dist/modules/apimapper/normalizers.d.ts +1 -0
  95. package/dist/modules/apimapper/normalizers.js +51 -0
  96. package/dist/modules/apimapper/normalizers.js.map +1 -1
  97. package/dist/modules/apimapper/onboarding.d.ts +78 -3
  98. package/dist/modules/apimapper/onboarding.js +428 -26
  99. package/dist/modules/apimapper/onboarding.js.map +1 -1
  100. package/dist/modules/apimapper/read-cache.d.ts +31 -2
  101. package/dist/modules/apimapper/read-cache.js +20 -6
  102. package/dist/modules/apimapper/read-cache.js.map +1 -1
  103. package/dist/modules/apimapper/render/_shared.d.ts +24 -0
  104. package/dist/modules/apimapper/render/_shared.js +84 -0
  105. package/dist/modules/apimapper/render/_shared.js.map +1 -0
  106. package/dist/modules/apimapper/render/dag.d.ts +18 -0
  107. package/dist/modules/apimapper/render/dag.js +70 -0
  108. package/dist/modules/apimapper/render/dag.js.map +1 -0
  109. package/dist/modules/apimapper/render/index.d.ts +2 -0
  110. package/dist/modules/apimapper/render/index.js +112 -0
  111. package/dist/modules/apimapper/render/index.js.map +1 -0
  112. package/dist/modules/apimapper/render/renderers/chart-bar.d.ts +2 -0
  113. package/dist/modules/apimapper/render/renderers/chart-bar.js +70 -0
  114. package/dist/modules/apimapper/render/renderers/chart-bar.js.map +1 -0
  115. package/dist/modules/apimapper/render/renderers/chart-line.d.ts +2 -0
  116. package/dist/modules/apimapper/render/renderers/chart-line.js +71 -0
  117. package/dist/modules/apimapper/render/renderers/chart-line.js.map +1 -0
  118. package/dist/modules/apimapper/render/renderers/diff.d.ts +2 -0
  119. package/dist/modules/apimapper/render/renderers/diff.js +154 -0
  120. package/dist/modules/apimapper/render/renderers/diff.js.map +1 -0
  121. package/dist/modules/apimapper/render/renderers/flow-diagram.d.ts +1 -0
  122. package/dist/modules/apimapper/render/renderers/flow-diagram.js +180 -0
  123. package/dist/modules/apimapper/render/renderers/flow-diagram.js.map +1 -0
  124. package/dist/modules/apimapper/render/renderers/json-tree.d.ts +2 -0
  125. package/dist/modules/apimapper/render/renderers/json-tree.js +87 -0
  126. package/dist/modules/apimapper/render/renderers/json-tree.js.map +1 -0
  127. package/dist/modules/apimapper/render/renderers/schema-diagram.d.ts +2 -0
  128. package/dist/modules/apimapper/render/renderers/schema-diagram.js +83 -0
  129. package/dist/modules/apimapper/render/renderers/schema-diagram.js.map +1 -0
  130. package/dist/modules/apimapper/render/renderers/table.d.ts +2 -0
  131. package/dist/modules/apimapper/render/renderers/table.js +75 -0
  132. package/dist/modules/apimapper/render/renderers/table.js.map +1 -0
  133. package/dist/modules/apimapper/render/schemas.d.ts +23 -0
  134. package/dist/modules/apimapper/render/schemas.js +56 -0
  135. package/dist/modules/apimapper/render/schemas.js.map +1 -0
  136. package/dist/modules/apimapper/render/secret-masking.d.ts +5 -0
  137. package/dist/modules/apimapper/render/secret-masking.js +51 -0
  138. package/dist/modules/apimapper/render/secret-masking.js.map +1 -0
  139. package/dist/modules/apimapper/render/sidecar.d.ts +21 -0
  140. package/dist/modules/apimapper/render/sidecar.js +66 -0
  141. package/dist/modules/apimapper/render/sidecar.js.map +1 -0
  142. package/dist/modules/apimapper/render/token-cap.d.ts +21 -0
  143. package/dist/modules/apimapper/render/token-cap.js +57 -0
  144. package/dist/modules/apimapper/render/token-cap.js.map +1 -0
  145. package/dist/modules/apimapper/schema.d.ts +2 -2
  146. package/dist/modules/apimapper/schema.js +92 -33
  147. package/dist/modules/apimapper/schema.js.map +1 -1
  148. package/dist/modules/apimapper/settings-format.d.ts +23 -0
  149. package/dist/modules/apimapper/settings-format.js +135 -0
  150. package/dist/modules/apimapper/settings-format.js.map +1 -0
  151. package/dist/modules/apimapper/settings.d.ts +2 -2
  152. package/dist/modules/apimapper/settings.js +100 -42
  153. package/dist/modules/apimapper/settings.js.map +1 -1
  154. package/dist/modules/apimapper/sites-tools.d.ts +29 -0
  155. package/dist/modules/apimapper/sites-tools.js +165 -0
  156. package/dist/modules/apimapper/sites-tools.js.map +1 -0
  157. package/dist/modules/apimapper/skill-resources.d.ts +2 -2
  158. package/dist/modules/apimapper/skill-resources.js.map +1 -1
  159. package/dist/modules/apimapper/token-baseline.harness.d.ts +91 -0
  160. package/dist/modules/apimapper/token-baseline.harness.js +291 -0
  161. package/dist/modules/apimapper/token-baseline.harness.js.map +1 -0
  162. package/dist/modules/apimapper/tool-result.d.ts +46 -0
  163. package/dist/modules/apimapper/tool-result.js +63 -0
  164. package/dist/modules/apimapper/tool-result.js.map +1 -0
  165. package/dist/modules/apimapper/toolslist-size.d.ts +56 -0
  166. package/dist/modules/apimapper/toolslist-size.js +192 -0
  167. package/dist/modules/apimapper/toolslist-size.js.map +1 -0
  168. package/dist/modules/apimapper/types.d.ts +44 -8
  169. package/dist/modules/apimapper/types.js +26 -1
  170. package/dist/modules/apimapper/types.js.map +1 -1
  171. package/dist/modules/apimapper/use-profile.d.ts +21 -0
  172. package/dist/modules/apimapper/use-profile.js +56 -2
  173. package/dist/modules/apimapper/use-profile.js.map +1 -1
  174. package/dist/modules/apimapper/whitelist-drift.d.ts +85 -0
  175. package/dist/modules/apimapper/whitelist-drift.js +360 -0
  176. package/dist/modules/apimapper/whitelist-drift.js.map +1 -0
  177. package/dist/modules/apimapper/workflows.d.ts +2 -2
  178. package/dist/modules/apimapper/workflows.js +202 -20
  179. package/dist/modules/apimapper/workflows.js.map +1 -1
  180. package/dist/modules/apimapper/yootheme-binding.d.ts +35 -0
  181. package/dist/modules/apimapper/yootheme-binding.js +186 -0
  182. package/dist/modules/apimapper/yootheme-binding.js.map +1 -0
  183. package/dist/platform/index.d.ts +56 -0
  184. package/dist/platform/index.js +195 -7
  185. package/dist/platform/index.js.map +1 -1
  186. package/dist/setup/detect-clients.d.ts +40 -1
  187. package/dist/setup/detect-clients.js +148 -1
  188. package/dist/setup/detect-clients.js.map +1 -1
  189. package/dist/setup/probe-handshake.js +40 -7
  190. package/dist/setup/probe-handshake.js.map +1 -1
  191. package/dist/setup/remove-config.d.ts +8 -0
  192. package/dist/setup/remove-config.js +145 -0
  193. package/dist/setup/remove-config.js.map +1 -0
  194. package/dist/setup/uninstall.d.ts +34 -0
  195. package/dist/setup/uninstall.js +147 -0
  196. package/dist/setup/uninstall.js.map +1 -0
  197. package/dist/setup-cli.d.ts +60 -0
  198. package/dist/setup-cli.js +155 -5
  199. package/dist/setup-cli.js.map +1 -1
  200. package/dist/sites/loader.d.ts +41 -0
  201. package/dist/sites/loader.js +119 -0
  202. package/dist/sites/loader.js.map +1 -0
  203. package/dist/sites/schema.d.ts +69 -0
  204. package/dist/sites/schema.js +71 -0
  205. package/dist/sites/schema.js.map +1 -0
  206. package/dist/sites/secret-resolver.d.ts +47 -0
  207. package/dist/sites/secret-resolver.js +150 -0
  208. package/dist/sites/secret-resolver.js.map +1 -0
  209. package/dist/skill-instructions.d.ts +1 -1
  210. package/dist/skill-instructions.js +5 -0
  211. package/dist/skill-instructions.js.map +1 -1
  212. package/dist/transports/stdio.js +4 -4
  213. package/dist/transports/stdio.js.map +1 -1
  214. package/dist/uninstall-skill.d.ts +27 -0
  215. package/dist/uninstall-skill.js +89 -0
  216. package/dist/uninstall-skill.js.map +1 -0
  217. package/docs/architecture.md +22 -22
  218. package/docs/customgraph-internal-migration.md +4 -4
  219. package/docs/security.md +2 -21
  220. package/docs/tools.md +40 -12
  221. package/manifest.json +77 -70
  222. package/package.json +68 -60
  223. package/skills/apimapper/SKILL.md +53 -7
  224. package/skills/apimapper/reference/conditional-style-multi-items.md +114 -0
  225. package/skills/apimapper/reference/jmespath-pitfalls.md +108 -0
  226. package/skills/apimapper/reference/joomla.md +1 -1
  227. package/skills/apimapper/reference/library-template-discovery.md +65 -0
  228. package/skills/apimapper/reference/merge-two-sources-on-key.md +99 -0
  229. package/skills/apimapper/reference/render.md +132 -0
  230. package/skills/apimapper/reference/troubleshooting.md +21 -1
  231. package/skills/apimapper/reference/yootheme.md +1 -1
  232. package/dist/auth/oauth-provider.d.ts +0 -68
  233. package/dist/auth/oauth-provider.js +0 -232
  234. package/dist/auth/oauth-provider.js.map +0 -1
  235. package/dist/server-http.d.ts +0 -22
  236. package/dist/server-http.js +0 -159
  237. package/dist/server-http.js.map +0 -1
  238. package/dist/transports/http.d.ts +0 -29
  239. package/dist/transports/http.js +0 -267
  240. package/dist/transports/http.js.map +0 -1
@@ -13,8 +13,25 @@
13
13
  // from the aggregated payload. Rules are simple and intentionally narrow —
14
14
  // the goal is "show the user a sensible first step", not "complete agent
15
15
  // reasoning". When in doubt, suggest nothing.
16
- import { formatResult, readOnly } from "@getimo/mcp-toolkit";
16
+ //
17
+ // rc.13 Welle 3 (2026-05-21) — W3.1 heavy-tool migration. The tool output
18
+ // moves from `formatResult(report)` (pretty-printed JSON dump) to
19
+ // `detailResult`: a scalar summary (site / license / counts) renders as
20
+ // `groups`; the verbose nested sections (connection + flow lists, full
21
+ // category breakdown, featured + popular catalog, the anti-iteration hint,
22
+ // suggestions, errors) go into `appendText`. Migration is purely additive —
23
+ // every fact the AI received before is still in the output — and the flat
24
+ // key-value rendering is a token win on the #1 baseline payload.
25
+ // `buildOnboardingReport` itself is unchanged: it stays a pure data
26
+ // assembler so its callers and pin-tests are untouched.
27
+ import { detailResult, errorResult, readOnly, } from "@getimo/mcp-toolkit";
17
28
  import { request, WP_BASE } from "./client.js";
29
+ // F-LS-04 (live-smoke 2026-05-20) — the PHP /connections endpoint emits
30
+ // camelCase keys (authType, credentialId). The onboarding allConns list +
31
+ // the expired-OAuth filter both read snake_case (auth_type, credential_id).
32
+ // Without this bridge, every connection in the report appears as auth=none
33
+ // with credential_id=null, and the reconnect-oauth suggestion never fires.
34
+ import { normalizeConnectionFromWire } from "./normalizers.js";
18
35
  async function safeRequest(tool, path) {
19
36
  try {
20
37
  const r = await request(path);
@@ -31,6 +48,57 @@ async function safeRequest(tool, path) {
31
48
  };
32
49
  }
33
50
  }
51
+ // ── Token-validity check (Wave-12 F1, Cold-AI #6) ──────────────────────
52
+ /**
53
+ * Wave-12 F1 (2026-05-31) — decide whether an OAuth credential is *actually*
54
+ * expired in a way that requires the customer to reconnect. This mirrors the
55
+ * canonical PHP-side check in
56
+ * `src/modules/core/src/Credential/CredentialRepository::calculateStatus`.
57
+ *
58
+ * Cold-AI #6 hit a wasted tool-call: `apimapper_onboarding` suggested
59
+ * "Reconnect Google Sheets" for a credential whose access token had expired,
60
+ * BUT whose refresh-token would auto-renew it on next use. The previous
61
+ * heuristic only checked `oauth_token_expires_at < now`, so Google/GitHub
62
+ * (refresh-token providers) were chronically flagged as expired.
63
+ *
64
+ * Canonical precedence:
65
+ *
66
+ * 1. **`status` field (preferred).** PHP `/credentials` computes this with
67
+ * full knowledge of the refresh-token state. Only `'expired'` means a
68
+ * reconnect is required. `'broken'` is a separate UX (Remove & Reconnect)
69
+ * and intentionally NOT covered by this reconnect-oauth suggestion.
70
+ * 2. **`token_hard_expires_at` (legacy + cross-check).** Server emits this
71
+ * ONLY for credentials WITHOUT a refresh-token (e.g. Meta/Instagram).
72
+ * Present + in the past → truly expired. Null/absent → refreshable
73
+ * access-token, do NOT suggest reconnect.
74
+ * 3. **Last-resort fallback.** Pre-status response shape with only
75
+ * `oauth_token_expires_at`: if it's in the past AND no field signals
76
+ * refreshability, suggest reconnect. This preserves the pre-F1 behaviour
77
+ * for older server builds and conservative defaults (a true expiry is
78
+ * better surfaced as a false-positive than silently swallowed).
79
+ */
80
+ export function isOAuthCredentialExpired(credential, nowMs = Date.now()) {
81
+ // (1) Canonical `status` wins when present.
82
+ const status = typeof credential.status === "string" ? credential.status.toLowerCase() : null;
83
+ if (status) {
84
+ return status === "expired";
85
+ }
86
+ // (2) Hard-expiry field present? It's only set for non-refreshable tokens.
87
+ // `token_hard_expires_at === null` (explicit) signals refreshable → not expired.
88
+ if ("token_hard_expires_at" in credential) {
89
+ const hard = credential.token_hard_expires_at;
90
+ if (hard === null || hard === undefined || hard === "") {
91
+ return false; // refreshable token, server explicitly cleared the hard-expiry
92
+ }
93
+ const t = Date.parse(hard);
94
+ return Number.isFinite(t) && t < nowMs;
95
+ }
96
+ // (3) Last-resort fallback for pre-status server builds.
97
+ if (!credential.oauth_token_expires_at)
98
+ return false;
99
+ const t = Date.parse(credential.oauth_token_expires_at);
100
+ return Number.isFinite(t) && t < nowMs;
101
+ }
34
102
  // ── Suggestion rules ───────────────────────────────────────────────────
35
103
  /**
36
104
  * Pure function — given aggregated state, derive a small list of
@@ -69,17 +137,84 @@ export function deriveSuggestions(args) {
69
137
  }
70
138
  return out;
71
139
  }
140
+ /**
141
+ * rc.10 B (2026-05-19) — Infer the host platform from the configured
142
+ * WP_BASE URL. WordPress installs typically end in `/wp-json/...` or
143
+ * contain `/wordpress/`; Joomla installs expose `option=com_…` or
144
+ * `/administrator/`. We only return `unknown` when neither pattern
145
+ * matches — the AI then has explicit signal that something is off.
146
+ *
147
+ * L-4 (W3F-5): this is the FALLBACK when the live `/identity` call
148
+ * couldn't be reached or returned an unrecognised value. The canonical
149
+ * source of truth is the server-side identity payload (`.platform`),
150
+ * which `buildOnboardingReport` queries first.
151
+ */
152
+ function detectPlatform(baseUrl) {
153
+ const u = baseUrl.toLowerCase();
154
+ if (/\/wp-json|\/wordpress|wp\-content/.test(u) || /\bwordpress\b/.test(u)) {
155
+ return "wordpress";
156
+ }
157
+ if (/option=com_|\/administrator|\bjoomla\b/.test(u)) {
158
+ return "joomla";
159
+ }
160
+ return "unknown";
161
+ }
162
+ /**
163
+ * L-4 (W3F-5): map an `/identity.platform` string to the OnboardingReport
164
+ * enum. Server emits `"wordpress"` / `"joomla"`; anything else is treated
165
+ * as `"unknown"` (the same conservative default the URL heuristic uses).
166
+ */
167
+ function normaliseIdentityPlatform(raw) {
168
+ if (typeof raw !== "string")
169
+ return null;
170
+ const v = raw.trim().toLowerCase();
171
+ if (v === "wordpress")
172
+ return "wordpress";
173
+ if (v === "joomla")
174
+ return "joomla";
175
+ if (v === "")
176
+ return null;
177
+ return "unknown";
178
+ }
72
179
  /**
73
180
  * Run the five sub-calls in parallel + assemble an OnboardingReport.
74
181
  * Never throws. Sub-call failures land in `errors[]`.
75
182
  */
76
183
  export async function buildOnboardingReport() {
77
- const [health, license, connections, flows, popular] = await Promise.allSettled([
78
- safeRequest("apimapper_health", "/connections"),
184
+ // rc.10 B (2026-05-19) added /library/categories and /library/featured
185
+ // in parallel so a single onboarding call returns the full catalog brief.
186
+ // ~30 ms extra wall-clock (parallel) saves 5-10s of nachgelagerte
187
+ // discovery calls.
188
+ //
189
+ // F-LS-01 (live-smoke 2026-05-20) — removed the apimapper_health parallel
190
+ // call. /wp-json/api-mapper/v1/health does NOT exist on the WP backend
191
+ // (route-list audit: 0 matches; only /connections/health-check and
192
+ // /admin/health-warnings exist). Its only consumer was the
193
+ // plugin_version / api_version derivation, which was already always
194
+ // undefined because of the same 404. Removing the call drops the
195
+ // spurious apimapper_health entry from errors[] so the AI no longer
196
+ // chases a phantom outage on a fresh install.
197
+ // L-4 (W3F-5): `/identity` is included in the parallel batch so the
198
+ // platform string is sourced from the server, not from a URL regex.
199
+ // The endpoint is public on both WordPress and Joomla — even an
200
+ // unauthenticated probe answers — so the call is safe to fire on
201
+ // every onboarding. A failure here drops us back to the legacy URL
202
+ // heuristic via `detectPlatform()`.
203
+ // WP↔Joomla parity fix (2026-06-07) — added /library/catalog to the parallel
204
+ // batch. On a Joomla fresh install /library/categories often rejects and
205
+ // /library/popular is empty, which previously collapsed total_count to 0
206
+ // ("0 templates" in the briefing despite a full catalogue). The catalog
207
+ // endpoint carries the authoritative total, so the count cascade can fall
208
+ // back to it before degrading to the featured/popular list length.
209
+ const [identity, license, connections, flows, popular, featured, categories, catalog] = await Promise.allSettled([
210
+ safeRequest("apimapper_identity", "/identity"),
79
211
  safeRequest("apimapper_license_status", "/license"),
80
212
  safeRequest("apimapper_connection_list", "/connections"),
81
213
  safeRequest("apimapper_flow_list", "/flows"),
82
214
  safeRequest("apimapper_library_popular", "/library/popular?limit=5"),
215
+ safeRequest("apimapper_library_featured", "/library/featured?limit=5"),
216
+ safeRequest("apimapper_library_categories", "/library/categories"),
217
+ safeRequest("apimapper_library_catalog", "/library/catalog"),
83
218
  ]);
84
219
  const errors = [];
85
220
  // Helper that pulls .value from a settled promise + records any error.
@@ -95,12 +230,35 @@ export async function buildOnboardingReport() {
95
230
  }
96
231
  return s.value.data;
97
232
  };
98
- void take(health); // health call is just used to populate errors[]; data unused
233
+ const identityData = take(identity);
99
234
  const licenseData = take(license);
100
235
  const connData = take(connections);
101
236
  const flowData = take(flows);
102
237
  const popularData = take(popular);
103
- const allConns = Array.isArray(connData?.connections) ? connData.connections : [];
238
+ const featuredData = take(featured);
239
+ const categoriesData = take(categories);
240
+ const catalogData = take(catalog);
241
+ // L-4 (W3F-5): canonical platform from /identity if present + valid;
242
+ // otherwise fall back to the URL-shape heuristic. The result is the
243
+ // same union the OnboardingReport.site.platform type expects.
244
+ const platformFromIdentity = identityData
245
+ ? normaliseIdentityPlatform(identityData.platform)
246
+ : null;
247
+ const sitePlatform = platformFromIdentity ?? detectPlatform(WP_BASE);
248
+ // L-4 follow-up: surface the upstream `plugin_version` so the
249
+ // onboarding report carries it even though we removed the
250
+ // /health-based probe at F-LS-01. /identity returns this field on
251
+ // both platforms.
252
+ const pluginVersionFromIdentity = identityData && typeof identityData.plugin_version === "string"
253
+ ? identityData.plugin_version
254
+ : undefined;
255
+ // F-LS-04 — bridge camelCase /connections wire-shape to snake_case so the
256
+ // downstream c.auth_type + c.credential_id reads (both here in the
257
+ // expired-OAuth filter and in the connection-items map below) see the
258
+ // real upstream values instead of undefined.
259
+ const allConns = Array.isArray(connData?.connections)
260
+ ? connData.connections.map((c) => normalizeConnectionFromWire(c))
261
+ : [];
104
262
  const allFlows = Array.isArray(flowData?.flows) ? flowData.flows : [];
105
263
  // F-A6-15: PHP /library/popular returns `connections`; tolerate legacy `items`.
106
264
  const popItems = Array.isArray(popularData?.connections)
@@ -108,6 +266,42 @@ export async function buildOnboardingReport() {
108
266
  : Array.isArray(popularData?.items)
109
267
  ? popularData.items
110
268
  : [];
269
+ const featuredItems = Array.isArray(featuredData?.connections)
270
+ ? featuredData.connections
271
+ : Array.isArray(featuredData?.items)
272
+ ? featuredData.items
273
+ : [];
274
+ // rc.10 B — categories shape: {categories: [{id, name, count}, ...]}.
275
+ // When the call fails or shape is unexpected, fall back to an empty list;
276
+ // total_count then falls back to popItems.length so the AI still gets a
277
+ // best-effort number.
278
+ const categoryRows = Array.isArray(categoriesData?.categories)
279
+ ? categoriesData.categories.filter((c) => typeof c?.id === "string" && typeof c?.name === "string" && typeof c?.count === "number")
280
+ : [];
281
+ // WP↔Joomla parity fix (2026-06-07) — derive a TRUE catalogue total from the
282
+ // /library/catalog response: the authoritative `total` field if present and
283
+ // positive, else the length of the inner items/connections list (PHP emits
284
+ // `connections`, legacy emits `items`). 0 when the call failed or the
285
+ // catalogue is genuinely empty.
286
+ const catalogItemsLen = Array.isArray(catalogData?.connections)
287
+ ? catalogData.connections.length
288
+ : Array.isArray(catalogData?.items)
289
+ ? catalogData.items.length
290
+ : 0;
291
+ const catalogTotal = typeof catalogData?.total === "number" && Number.isFinite(catalogData.total) && catalogData.total > 0
292
+ ? catalogData.total
293
+ : catalogItemsLen;
294
+ // Count cascade — NEVER read 0 while any source shows templates:
295
+ // 1. categorySum (authoritative when categories load) — wins if > 0
296
+ // 2. catalogTotal (the /library/catalog total) — the Joomla fresh-install
297
+ // rescue, since categories there often reject and popular is empty
298
+ // 3. max(featured, popular) — last-resort floor from the brief lists
299
+ const categorySum = categoryRows.reduce((sum, c) => sum + c.count, 0);
300
+ const libraryTotalCount = categorySum > 0
301
+ ? categorySum
302
+ : catalogTotal && catalogTotal > 0
303
+ ? catalogTotal
304
+ : Math.max(featuredItems.length, popItems.length);
111
305
  // ── Conditional second-stage call: credentials, only if any conn has an oauth creds.
112
306
  const oauthCredIds = allConns
113
307
  .filter((c) => (c.auth_type || "").startsWith("oauth2") && c.credential_id)
@@ -121,14 +315,13 @@ export async function buildOnboardingReport() {
121
315
  else {
122
316
  const creds = Array.isArray(credRes.data?.credentials) ? credRes.data.credentials : [];
123
317
  const now = Date.now();
124
- expiredOauthCredentialIds = new Set(creds
125
- .filter((c) => {
126
- if (!c.oauth_token_expires_at)
127
- return false;
128
- const t = Date.parse(c.oauth_token_expires_at);
129
- return Number.isFinite(t) && t < now;
130
- })
131
- .map((c) => c.id));
318
+ // Wave-12 F1 (Cold-AI #6, 2026-05-31): delegate to the canonical
319
+ // token-validity check that mirrors `CredentialRepository::calculateStatus`.
320
+ // Refresh-token providers (Google, GitHub, ...) report status='active'
321
+ // even when their short-lived access-token's oauth_token_expires_at is
322
+ // in the past — the previous heuristic flagged them as expired, causing
323
+ // a false-positive reconnect-oauth suggestion.
324
+ expiredOauthCredentialIds = new Set(creds.filter((c) => isOAuthCredentialExpired(c, now)).map((c) => c.id));
132
325
  }
133
326
  }
134
327
  const published = allFlows.filter((f) => f.is_compiled).length;
@@ -139,21 +332,52 @@ export async function buildOnboardingReport() {
139
332
  expiredOauthCredentialIds,
140
333
  popular: popItems,
141
334
  });
142
- // License: licenseData is the raw /license response; surface known fields.
335
+ // License: the raw /license response is
336
+ // { success, license: { tier, is_valid, expires_at, beta_channel, ... } }
337
+ // — unwrap one level. F-LS-02 (live-smoke 2026-05-20): previously read
338
+ // o.tier / o.status from the OUTER envelope, which never has those
339
+ // fields, so tier/status were always undefined. Status is derived from
340
+ // is_valid:boolean → "valid"/"invalid"; if a future backend version
341
+ // emits a flat shape (no inner license envelope) the same mapper still
342
+ // works because `inner` falls back to `outer`. A legacy `status` string
343
+ // on `inner` wins over the is_valid derivation, so existing wire
344
+ // shapes that emit a precomputed status are still respected.
143
345
  const licMap = (() => {
144
346
  if (!licenseData || typeof licenseData !== "object")
145
347
  return { available: false };
146
- const o = licenseData;
348
+ const outer = licenseData;
349
+ const inner = outer.license && typeof outer.license === "object"
350
+ ? outer.license
351
+ : outer; // forward-compat: backend may flatten in future
352
+ const derivedStatus = typeof inner.is_valid === "boolean"
353
+ ? inner.is_valid
354
+ ? "valid"
355
+ : "invalid"
356
+ : undefined;
147
357
  return {
148
358
  available: true,
149
- status: typeof o.status === "string" ? o.status : undefined,
150
- tier: typeof o.tier === "string" ? o.tier : undefined,
151
- expires_at: typeof o.expires_at === "string" ? o.expires_at : null,
152
- beta_channel: typeof o.beta_channel === "boolean" ? o.beta_channel : undefined,
359
+ status: typeof inner.status === "string" ? inner.status : derivedStatus,
360
+ tier: typeof inner.tier === "string" ? inner.tier : undefined,
361
+ expires_at: typeof inner.expires_at === "string" ? inner.expires_at : null,
362
+ beta_channel: typeof inner.beta_channel === "boolean" ? inner.beta_channel : undefined,
153
363
  };
154
364
  })();
365
+ // rc.10 B — free-text hint that lives ADJACENT to the library data
366
+ // so the LLM reads it in the natural flow. `next_tools[]` arrays are
367
+ // ignored by most agents; prose anchored to numbers is not.
368
+ const libraryHint = `Catalog has ${libraryTotalCount} templates across ${categoryRows.length} categories. ` +
369
+ `Skip pagination and category-iteration: a single library_list({}) call returns the ` +
370
+ `complete catalog. Use the categories list above to filter results client-side rather ` +
371
+ `than calling library_list({category}) per slug.`;
155
372
  return {
156
- site: { wp_base: WP_BASE },
373
+ site: {
374
+ wp_base: WP_BASE,
375
+ platform: sitePlatform,
376
+ // L-4 (W3F-5): plugin_version is now sourced from /identity (which
377
+ // exposes it on both WordPress and Joomla). Undefined when the
378
+ // probe failed or the field was missing.
379
+ ...(pluginVersionFromIdentity ? { plugin_version: pluginVersionFromIdentity } : {}),
380
+ },
157
381
  license: licMap,
158
382
  connections: {
159
383
  count: allConns.length,
@@ -178,29 +402,207 @@ export async function buildOnboardingReport() {
178
402
  })),
179
403
  },
180
404
  library: {
405
+ total_count: libraryTotalCount,
406
+ categories: categoryRows,
407
+ featured: featuredItems.slice(0, 5).map((f) => ({
408
+ id: f.id,
409
+ name: f.name,
410
+ category: f.category,
411
+ })),
181
412
  popular: popItems.slice(0, 5).map((p) => ({
182
413
  id: p.id,
183
414
  name: p.name,
184
415
  category: p.category,
185
416
  })),
417
+ hint: libraryHint,
186
418
  },
187
419
  suggestions,
188
420
  errors,
189
421
  };
190
422
  }
423
+ // ── structuredContent builder ──────────────────────────────────────────
424
+ /**
425
+ * W3.1 (rc.13 Welle 3) — render an OnboardingReport as a `detailResult`.
426
+ *
427
+ * Onboarding is the largest baseline payload and the #1 token-reduction
428
+ * lever for Welle 3. The migration is purely additive — every fact the AI
429
+ * received under the previous `formatResult(report)` JSON dump is still in
430
+ * the output — but the shape is split for both token-efficiency and Rich
431
+ * Card rendering:
432
+ *
433
+ * - `groups` — the scalar summary: site status, license tier, and the
434
+ * connection / flow / library counts. This is what the Rich Card
435
+ * "detail" component renders, and detailResult flattens it to compact
436
+ * `label: value` lines for the LLM (far cheaper than pretty-printed
437
+ * JSON).
438
+ * - `appendText` — the verbose nested sections (connection list, flow
439
+ * list, full category breakdown, featured + popular catalog, the
440
+ * anti-iteration hint, suggestions, and any sub-call errors). The
441
+ * toolkit documents `appendText` as "appended to the LLM output but
442
+ * NOT shown in the Rich Card" — exactly right for catalog/suggestion
443
+ * detail that would clutter the card yet the AI still needs verbatim.
444
+ *
445
+ * Pure function — no I/O — so the test suite pins it directly.
446
+ */
447
+ export function buildOnboardingDetail(report) {
448
+ const siteEntries = [
449
+ { key: "wp_base", label: "Site URL", value: report.site.wp_base, format: "code", copyable: true },
450
+ { key: "platform", label: "Platform", value: report.site.platform, format: "badge" },
451
+ ];
452
+ if (report.site.plugin_version) {
453
+ siteEntries.push({
454
+ key: "plugin_version",
455
+ label: "Plugin version",
456
+ value: report.site.plugin_version,
457
+ });
458
+ }
459
+ if (report.site.api_version) {
460
+ siteEntries.push({
461
+ key: "api_version",
462
+ label: "API version",
463
+ value: report.site.api_version,
464
+ });
465
+ }
466
+ const licenseEntries = report.license.available
467
+ ? [
468
+ { key: "tier", label: "Tier", value: report.license.tier ?? "—", format: "badge" },
469
+ { key: "status", label: "Status", value: report.license.status ?? "—", format: "status" },
470
+ { key: "expires_at", label: "Expires", value: report.license.expires_at ?? "—", format: "date" },
471
+ ]
472
+ : [{ key: "available", label: "License", value: "unavailable", format: "status" }];
473
+ const countEntries = [
474
+ { key: "connections", label: "Connections", value: report.connections.count },
475
+ { key: "flows", label: "Flows", value: report.flows.count },
476
+ { key: "flows_published", label: "Flows published", value: report.flows.published },
477
+ { key: "flows_draft", label: "Flows draft", value: report.flows.draft },
478
+ { key: "library_templates", label: "Library templates", value: report.library.total_count },
479
+ { key: "library_categories", label: "Library categories", value: report.library.categories.length },
480
+ { key: "suggestions", label: "Suggested next steps", value: report.suggestions.length },
481
+ { key: "errors", label: "Sub-call errors", value: report.errors.length },
482
+ ];
483
+ const groups = [
484
+ { label: "Site", entries: siteEntries },
485
+ { label: "License", entries: licenseEntries },
486
+ { label: "Counts", entries: countEntries },
487
+ ];
488
+ const appendText = buildOnboardingAppendText(report);
489
+ const errorCount = report.errors.length;
490
+ const badge = errorCount > 0
491
+ ? { text: `${errorCount} sub-call error${errorCount === 1 ? "" : "s"}`, variant: "warning" }
492
+ : { text: "all checks ok", variant: "success" };
493
+ return detailResult({
494
+ title: "Onboarding briefing",
495
+ subtitle: `${report.site.platform} install — ${report.connections.count} connection(s), ${report.flows.count} flow(s)`,
496
+ badge,
497
+ groups,
498
+ appendText,
499
+ });
500
+ }
501
+ /**
502
+ * W3.1 — assemble the verbose `appendText` block: every nested section the
503
+ * scalar `groups` cannot carry. Anchored to plain prose + line lists so the
504
+ * LLM reads it in natural order. Nothing here is dropped relative to the
505
+ * old JSON dump — only re-shaped from `{...}` to readable lines.
506
+ */
507
+ function buildOnboardingAppendText(report) {
508
+ const lines = [];
509
+ // Connections detail.
510
+ lines.push(`Connections (${report.connections.count}):`);
511
+ if (report.connections.items.length === 0) {
512
+ lines.push(" (none)");
513
+ }
514
+ else {
515
+ for (const c of report.connections.items) {
516
+ lines.push(` - ${c.name} [id=${c.id}] source=${c.source ?? "—"} auth=${c.auth_type ?? "none"}` +
517
+ (c.credential_id ? ` credential=${c.credential_id}` : ""));
518
+ }
519
+ }
520
+ // Flows detail.
521
+ lines.push("", `Flows (${report.flows.count}; ${report.flows.published} published, ${report.flows.draft} draft):`);
522
+ if (report.flows.items.length === 0) {
523
+ lines.push(" (none)");
524
+ }
525
+ else {
526
+ for (const f of report.flows.items) {
527
+ lines.push(` - ${f.name} [id=${f.id}] source=${f.source ?? "—"} ` +
528
+ `${f.is_compiled ? "published" : "draft"} nodes=${f.node_count ?? "?"}`);
529
+ }
530
+ }
531
+ // Library catalog detail.
532
+ lines.push("", `Library: ${report.library.total_count} templates across ${report.library.categories.length} categories.`);
533
+ if (report.library.categories.length > 0) {
534
+ lines.push(" Categories:");
535
+ for (const cat of report.library.categories) {
536
+ lines.push(` - ${cat.name} [id=${cat.id}] (${cat.count})`);
537
+ }
538
+ }
539
+ if (report.library.featured.length > 0) {
540
+ lines.push(" Featured:");
541
+ for (const f of report.library.featured) {
542
+ lines.push(` - ${f.name} [id=${f.id}] category=${f.category ?? "—"}`);
543
+ }
544
+ }
545
+ if (report.library.popular.length > 0) {
546
+ lines.push(" Popular:");
547
+ for (const p of report.library.popular) {
548
+ lines.push(` - ${p.name} [id=${p.id}] category=${p.category ?? "—"}`);
549
+ }
550
+ }
551
+ lines.push(` ${report.library.hint}`);
552
+ // Suggested next steps.
553
+ lines.push("", `Suggested next steps (${report.suggestions.length}):`);
554
+ if (report.suggestions.length === 0) {
555
+ lines.push(" (none)");
556
+ }
557
+ else {
558
+ for (const s of report.suggestions) {
559
+ lines.push(` - [${s.type}] ${s.label}\n → ${s.action}`);
560
+ }
561
+ }
562
+ // Sub-call errors.
563
+ if (report.errors.length > 0) {
564
+ lines.push("", `Sub-call errors (${report.errors.length}):`);
565
+ for (const e of report.errors) {
566
+ lines.push(` - ${e.tool}: ${e.error}`);
567
+ }
568
+ }
569
+ return lines.join("\n");
570
+ }
191
571
  // ── MCP tool registration ──────────────────────────────────────────────
192
572
  export function registerOnboardingTool(server) {
193
573
  server.registerTool("apimapper_onboarding", {
194
574
  title: "Onboarding Report (Composite)",
195
- description: "Aggregate health, license, connections, flows, and popular library items into a single " +
196
- "onboarding report with suggested next actions. Run this first when meeting a new install — " +
197
- "tolerates partial failures and never throws." +
575
+ description: "ONE-SHOT BRIEFING run this FIRST when meeting a new install. Aggregates site platform, " +
576
+ "license tier, connections, flows, and a complete library brief (total_count + categories + " +
577
+ "featured + popular + free-text hint) into a single response. After this call you have full " +
578
+ "orientation; do NOT chain apimapper_library_categories or apimapper_library_list to " +
579
+ "rediscover what is already in the report. Tolerates partial failures and never throws." +
198
580
  "\n\nExample:\n apimapper_onboarding({})",
199
581
  inputSchema: {},
200
- annotations: readOnly(),
582
+ annotations: readOnly({ title: "Onboarding Walkthrough", openWorld: true }),
201
583
  }, async () => {
202
- const report = await buildOnboardingReport();
203
- return formatResult(report, false, { maxChars: 6000 });
584
+ // DEF-LOW-2 (Wave-B audit, 2026-06-03): buildOnboardingReport is
585
+ // "never-throws by convention" (it tolerates partial sub-call failures
586
+ // and records them in report.errors[]). The SDK catch is the backstop,
587
+ // but a defensive try/catch makes the never-throws contract STRUCTURAL —
588
+ // any unexpected throw becomes a minimal structured error instead of a
589
+ // generic SDK isError.
590
+ try {
591
+ const report = await buildOnboardingReport();
592
+ // W3.1 (rc.13 Welle 3) — detailResult: scalar summary in `groups`,
593
+ // verbose catalog/suggestion/error detail in `appendText`. The flat
594
+ // key-value rendering replaces the pretty-printed JSON dump — a token
595
+ // win on the largest baseline payload, with nothing lost.
596
+ return buildOnboardingDetail(report);
597
+ }
598
+ catch (e) {
599
+ return errorResult({
600
+ message: e instanceof Error ? e.message : String(e),
601
+ code: "onboarding_assembler_failed",
602
+ suggestion: "The onboarding report assembler threw unexpectedly. Run " +
603
+ "apimapper_health to check connectivity + auth, then retry.",
604
+ });
605
+ }
204
606
  });
205
607
  }
206
608
  //# sourceMappingURL=onboarding.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"onboarding.js","sourceRoot":"","sources":["../../../src/modules/apimapper/onboarding.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"onboarding.js","sourceRoot":"","sources":["../../../src/modules/apimapper/onboarding.ts"],"names":[],"mappings":"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"}