@wootsup/mcp 0.1.0 → 0.4.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 (208) hide show
  1. package/CHANGELOG.md +157 -83
  2. package/README.md +31 -27
  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/catalog/build-catalog.d.ts +31 -0
  8. package/dist/catalog/build-catalog.js +68 -0
  9. package/dist/catalog/build-catalog.js.map +1 -0
  10. package/dist/cli-hint.d.ts +22 -0
  11. package/dist/cli-hint.js +55 -0
  12. package/dist/cli-hint.js.map +1 -0
  13. package/dist/index.js +129 -22
  14. package/dist/index.js.map +1 -1
  15. package/dist/install-skill.js +1 -1
  16. package/dist/modules/apimapper/auto-layout.d.ts +21 -0
  17. package/dist/modules/apimapper/auto-layout.js +54 -0
  18. package/dist/modules/apimapper/auto-layout.js.map +1 -0
  19. package/dist/modules/apimapper/cache.js +25 -17
  20. package/dist/modules/apimapper/cache.js.map +1 -1
  21. package/dist/modules/apimapper/client.d.ts +115 -4
  22. package/dist/modules/apimapper/client.js +699 -304
  23. package/dist/modules/apimapper/client.js.map +1 -1
  24. package/dist/modules/apimapper/connections-format.d.ts +31 -1
  25. package/dist/modules/apimapper/connections-format.js +97 -5
  26. package/dist/modules/apimapper/connections-format.js.map +1 -1
  27. package/dist/modules/apimapper/connections.d.ts +9 -7
  28. package/dist/modules/apimapper/connections.js +449 -127
  29. package/dist/modules/apimapper/connections.js.map +1 -1
  30. package/dist/modules/apimapper/credential-sanitizer.d.ts +5 -0
  31. package/dist/modules/apimapper/credential-sanitizer.js +60 -1
  32. package/dist/modules/apimapper/credential-sanitizer.js.map +1 -1
  33. package/dist/modules/apimapper/credentials.js +105 -61
  34. package/dist/modules/apimapper/credentials.js.map +1 -1
  35. package/dist/modules/apimapper/diagnose.js +21 -2
  36. package/dist/modules/apimapper/diagnose.js.map +1 -1
  37. package/dist/modules/apimapper/elicitation.d.ts +29 -0
  38. package/dist/modules/apimapper/elicitation.js +62 -0
  39. package/dist/modules/apimapper/elicitation.js.map +1 -1
  40. package/dist/modules/apimapper/example-extract.d.ts +13 -0
  41. package/dist/modules/apimapper/example-extract.js +111 -0
  42. package/dist/modules/apimapper/example-extract.js.map +1 -0
  43. package/dist/modules/apimapper/filter-operators.d.ts +24 -0
  44. package/dist/modules/apimapper/filter-operators.js +103 -0
  45. package/dist/modules/apimapper/filter-operators.js.map +1 -0
  46. package/dist/modules/apimapper/flows-format.js +92 -22
  47. package/dist/modules/apimapper/flows-format.js.map +1 -1
  48. package/dist/modules/apimapper/flows.d.ts +8 -7
  49. package/dist/modules/apimapper/flows.js +275 -120
  50. package/dist/modules/apimapper/flows.js.map +1 -1
  51. package/dist/modules/apimapper/gateway/advanced-read-tool.d.ts +9 -0
  52. package/dist/modules/apimapper/gateway/advanced-read-tool.js +172 -0
  53. package/dist/modules/apimapper/gateway/advanced-read-tool.js.map +1 -0
  54. package/dist/modules/apimapper/gateway/advanced-tool.js +66 -106
  55. package/dist/modules/apimapper/gateway/advanced-tool.js.map +1 -1
  56. package/dist/modules/apimapper/gateway/collect-module-tools.d.ts +17 -0
  57. package/dist/modules/apimapper/gateway/collect-module-tools.js +44 -0
  58. package/dist/modules/apimapper/gateway/collect-module-tools.js.map +1 -0
  59. package/dist/modules/apimapper/gateway/essentials.d.ts +1 -1
  60. package/dist/modules/apimapper/gateway/essentials.js +21 -2
  61. package/dist/modules/apimapper/gateway/essentials.js.map +1 -1
  62. package/dist/modules/apimapper/gateway/gateway-shared.d.ts +21 -0
  63. package/dist/modules/apimapper/gateway/gateway-shared.js +124 -0
  64. package/dist/modules/apimapper/gateway/gateway-shared.js.map +1 -0
  65. package/dist/modules/apimapper/gateway/test-support.d.ts +1 -17
  66. package/dist/modules/apimapper/gateway/test-support.js +4 -33
  67. package/dist/modules/apimapper/gateway/test-support.js.map +1 -1
  68. package/dist/modules/apimapper/get-skill-cores.d.ts +4 -0
  69. package/dist/modules/apimapper/get-skill-cores.js +220 -0
  70. package/dist/modules/apimapper/get-skill-cores.js.map +1 -0
  71. package/dist/modules/apimapper/get-skill.d.ts +1 -1
  72. package/dist/modules/apimapper/get-skill.js +74 -9
  73. package/dist/modules/apimapper/get-skill.js.map +1 -1
  74. package/dist/modules/apimapper/graph-builder.d.ts +85 -2
  75. package/dist/modules/apimapper/graph-builder.js +151 -15
  76. package/dist/modules/apimapper/graph-builder.js.map +1 -1
  77. package/dist/modules/apimapper/graph.js +152 -48
  78. package/dist/modules/apimapper/graph.js.map +1 -1
  79. package/dist/modules/apimapper/index.js +27 -13
  80. package/dist/modules/apimapper/index.js.map +1 -1
  81. package/dist/modules/apimapper/jmespath-test.d.ts +4 -0
  82. package/dist/modules/apimapper/jmespath-test.js +152 -0
  83. package/dist/modules/apimapper/jmespath-test.js.map +1 -0
  84. package/dist/modules/apimapper/library.js +553 -88
  85. package/dist/modules/apimapper/library.js.map +1 -1
  86. package/dist/modules/apimapper/license.js +12 -36
  87. package/dist/modules/apimapper/license.js.map +1 -1
  88. package/dist/modules/apimapper/list-footer.d.ts +27 -0
  89. package/dist/modules/apimapper/list-footer.js +57 -0
  90. package/dist/modules/apimapper/list-footer.js.map +1 -0
  91. package/dist/modules/apimapper/local-sources.js +100 -57
  92. package/dist/modules/apimapper/local-sources.js.map +1 -1
  93. package/dist/modules/apimapper/mcp-client-identity.d.ts +32 -0
  94. package/dist/modules/apimapper/mcp-client-identity.js +70 -0
  95. package/dist/modules/apimapper/mcp-client-identity.js.map +1 -0
  96. package/dist/modules/apimapper/merge-constants.d.ts +6 -0
  97. package/dist/modules/apimapper/merge-constants.js +26 -0
  98. package/dist/modules/apimapper/merge-constants.js.map +1 -0
  99. package/dist/modules/apimapper/misc.js +13 -27
  100. package/dist/modules/apimapper/misc.js.map +1 -1
  101. package/dist/modules/apimapper/node-schema.d.ts +52 -2
  102. package/dist/modules/apimapper/node-schema.js +95 -4
  103. package/dist/modules/apimapper/node-schema.js.map +1 -1
  104. package/dist/modules/apimapper/onboarding.d.ts +59 -1
  105. package/dist/modules/apimapper/onboarding.js +231 -28
  106. package/dist/modules/apimapper/onboarding.js.map +1 -1
  107. package/dist/modules/apimapper/read-cache.d.ts +16 -3
  108. package/dist/modules/apimapper/read-cache.js +59 -4
  109. package/dist/modules/apimapper/read-cache.js.map +1 -1
  110. package/dist/modules/apimapper/render/index.js +26 -5
  111. package/dist/modules/apimapper/render/index.js.map +1 -1
  112. package/dist/modules/apimapper/resource-id.d.ts +13 -0
  113. package/dist/modules/apimapper/resource-id.js +69 -0
  114. package/dist/modules/apimapper/resource-id.js.map +1 -0
  115. package/dist/modules/apimapper/schema.js +9 -18
  116. package/dist/modules/apimapper/schema.js.map +1 -1
  117. package/dist/modules/apimapper/settings.js +49 -52
  118. package/dist/modules/apimapper/settings.js.map +1 -1
  119. package/dist/modules/apimapper/sites-tools.d.ts +29 -0
  120. package/dist/modules/apimapper/sites-tools.js +165 -0
  121. package/dist/modules/apimapper/sites-tools.js.map +1 -0
  122. package/dist/modules/apimapper/tool-result.d.ts +66 -0
  123. package/dist/modules/apimapper/tool-result.js +125 -0
  124. package/dist/modules/apimapper/tool-result.js.map +1 -0
  125. package/dist/modules/apimapper/toolslist-size.d.ts +12 -11
  126. package/dist/modules/apimapper/toolslist-size.js +34 -21
  127. package/dist/modules/apimapper/toolslist-size.js.map +1 -1
  128. package/dist/modules/apimapper/types.d.ts +34 -0
  129. package/dist/modules/apimapper/types.js +1 -1
  130. package/dist/modules/apimapper/types.js.map +1 -1
  131. package/dist/modules/apimapper/whitelist-drift.d.ts +85 -0
  132. package/dist/modules/apimapper/whitelist-drift.js +375 -0
  133. package/dist/modules/apimapper/whitelist-drift.js.map +1 -0
  134. package/dist/modules/apimapper/workflows.js +302 -58
  135. package/dist/modules/apimapper/workflows.js.map +1 -1
  136. package/dist/modules/apimapper/yootheme-binding.d.ts +35 -0
  137. package/dist/modules/apimapper/yootheme-binding.js +267 -0
  138. package/dist/modules/apimapper/yootheme-binding.js.map +1 -0
  139. package/dist/platform/index.d.ts +56 -0
  140. package/dist/platform/index.js +158 -2
  141. package/dist/platform/index.js.map +1 -1
  142. package/dist/proxy/bridge.d.ts +35 -0
  143. package/dist/proxy/bridge.js +129 -0
  144. package/dist/proxy/bridge.js.map +1 -0
  145. package/dist/proxy/mode.d.ts +9 -0
  146. package/dist/proxy/mode.js +20 -0
  147. package/dist/proxy/mode.js.map +1 -0
  148. package/dist/setup/detect-clients.d.ts +40 -1
  149. package/dist/setup/detect-clients.js +148 -1
  150. package/dist/setup/detect-clients.js.map +1 -1
  151. package/dist/setup/probe-auth.d.ts +51 -0
  152. package/dist/setup/probe-auth.js +141 -0
  153. package/dist/setup/probe-auth.js.map +1 -0
  154. package/dist/setup/probe-handshake.js +40 -7
  155. package/dist/setup/probe-handshake.js.map +1 -1
  156. package/dist/setup/remove-config.d.ts +8 -0
  157. package/dist/setup/remove-config.js +145 -0
  158. package/dist/setup/remove-config.js.map +1 -0
  159. package/dist/setup/uninstall.d.ts +34 -0
  160. package/dist/setup/uninstall.js +147 -0
  161. package/dist/setup/uninstall.js.map +1 -0
  162. package/dist/setup-cli.d.ts +16 -0
  163. package/dist/setup-cli.js +63 -1
  164. package/dist/setup-cli.js.map +1 -1
  165. package/dist/sites/loader.d.ts +48 -0
  166. package/dist/sites/loader.js +134 -0
  167. package/dist/sites/loader.js.map +1 -0
  168. package/dist/sites/schema.d.ts +69 -0
  169. package/dist/sites/schema.js +71 -0
  170. package/dist/sites/schema.js.map +1 -0
  171. package/dist/sites/secret-resolver.d.ts +47 -0
  172. package/dist/sites/secret-resolver.js +150 -0
  173. package/dist/sites/secret-resolver.js.map +1 -0
  174. package/dist/skill-instructions.d.ts +14 -1
  175. package/dist/skill-instructions.js +35 -6
  176. package/dist/skill-instructions.js.map +1 -1
  177. package/dist/transports/stdio.js +4 -4
  178. package/dist/transports/stdio.js.map +1 -1
  179. package/dist/uninstall-skill.d.ts +27 -0
  180. package/dist/uninstall-skill.js +89 -0
  181. package/dist/uninstall-skill.js.map +1 -0
  182. package/docs/architecture.md +21 -21
  183. package/docs/customgraph-internal-migration.md +4 -4
  184. package/docs/security.md +2 -21
  185. package/docs/tools.md +40 -12
  186. package/manifest.json +77 -79
  187. package/package.json +69 -65
  188. package/skills/apimapper/SKILL.md +128 -7
  189. package/skills/apimapper/reference/conditional-style-multi-items.md +114 -0
  190. package/skills/apimapper/reference/dynamize-existing-layout.md +158 -0
  191. package/skills/apimapper/reference/jmespath-cookbook.md +241 -0
  192. package/skills/apimapper/reference/jmespath-pitfalls.md +189 -0
  193. package/skills/apimapper/reference/joomla.md +1 -1
  194. package/skills/apimapper/reference/library-template-discovery.md +65 -0
  195. package/skills/apimapper/reference/merge-two-sources-on-key.md +204 -0
  196. package/skills/apimapper/reference/oauth.md +143 -52
  197. package/skills/apimapper/reference/troubleshooting.md +22 -2
  198. package/skills/apimapper/reference/yootheme-source-to-builder-handoff.md +348 -0
  199. package/skills/apimapper/reference/yootheme.md +75 -44
  200. package/dist/auth/oauth-provider.d.ts +0 -68
  201. package/dist/auth/oauth-provider.js +0 -232
  202. package/dist/auth/oauth-provider.js.map +0 -1
  203. package/dist/server-http.d.ts +0 -22
  204. package/dist/server-http.js +0 -159
  205. package/dist/server-http.js.map +0 -1
  206. package/dist/transports/http.d.ts +0 -29
  207. package/dist/transports/http.js +0 -267
  208. package/dist/transports/http.js.map +0 -1
@@ -23,7 +23,7 @@
23
23
  // Network-tolerant: any unexpected fetch error is captured into a check
24
24
  // but the function never throws.
25
25
  import { z } from "zod";
26
- import { detailResult, readOnly } from "@getimo/mcp-toolkit";
26
+ import { detailResult, errorResult, readOnly } from "@getimo/mcp-toolkit";
27
27
  import { inspectToken } from "./inspect.js";
28
28
  const REQUIRED_CAPABILITIES = ["flows", "library"];
29
29
  const MIN_SCOPE = "read";
@@ -432,7 +432,26 @@ export function registerDiagnoseTool(server) {
432
432
  },
433
433
  annotations: readOnly({ title: "Diagnose Site", openWorld: true }),
434
434
  }, async ({ token, siteUrl }) => {
435
- const result = await diagnoseSite(token, siteUrl);
435
+ // DEF-LOW-2 (Wave-B audit, 2026-06-03): diagnoseSite is "never-throws by
436
+ // convention" — a "not ready" outcome is a valid diagnosis surfaced inside
437
+ // the detail card, not an errorResult. The defensive try/catch makes the
438
+ // contract structural: an UNEXPECTED throw (e.g. a malformed token that
439
+ // slips past inspectToken, a thrown network adapter) becomes a minimal
440
+ // structured error instead of a generic SDK isError. Ordinary "not ready"
441
+ // diagnoses still flow through the detailResult below.
442
+ let result;
443
+ try {
444
+ result = await diagnoseSite(token, siteUrl);
445
+ }
446
+ catch (e) {
447
+ return errorResult({
448
+ message: e instanceof Error ? e.message : String(e),
449
+ code: "diagnose_assembler_failed",
450
+ suggestion: "The pre-flight diagnosis assembler threw unexpectedly. Verify the " +
451
+ "token + siteUrl are well-formed, then retry.",
452
+ details: { siteUrl },
453
+ });
454
+ }
436
455
  // W3.1 (rc.13 Welle 3) — detailResult: the {ready, checks[],
437
456
  // recommendation, blockers[]} composite renders as a grouped detail.
438
457
  // diagnose NEVER throws and NEVER routes to errorResult — a "not ready"
@@ -1 +1 @@
1
- {"version":3,"file":"diagnose.js","sourceRoot":"","sources":["../../../src/modules/apimapper/diagnose.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diagnose.js","sourceRoot":"","sources":["../../../src/modules/apimapper/diagnose.ts"],"names":[],"mappings":"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"}
@@ -34,6 +34,35 @@ export interface ElicitationCandidate {
34
34
  id: string;
35
35
  label: string;
36
36
  }
37
+ /**
38
+ * Label-aware drop-in for the toolkit's `elicitChoice`.
39
+ *
40
+ * The toolkit's `elicitChoice(server, message, choices)` builds an elicitation
41
+ * `requestedSchema` of shape `{ properties: { choice: { type:'string', enum,
42
+ * title } } }` — i.e. it carries ONLY the `enum` (the candidate VALUES). For an
43
+ * id-based picker that means the prompt shows raw ids like
44
+ * `cred_2c1a04cfc4a3cd1b` with no human-readable name, so the user cannot tell
45
+ * the candidates apart.
46
+ *
47
+ * This helper additionally emits `enumNames` (the candidate LABELS) in the same
48
+ * order as `enum`. `enumNames` is part of the MCP SDK elicitation schema (the
49
+ * `LegacyTitledEnumSchema` variant: `{ type:'string', enum, enumNames }`, the
50
+ * first member of the SDK's `EnumSchema` union), so a client that renders
51
+ * elicitation labels shows the names while the accepted VALUE is still the id
52
+ * (read back from `content.choice`).
53
+ *
54
+ * Contract parity with the toolkit's `elicitChoice` — returns `null` (never
55
+ * throws) on: a client without elicitation support (`elicitInput` rejects),
56
+ * the user declining or cancelling, an `accept` with no `choice` in the
57
+ * content, or any error. Call sites therefore keep their existing
58
+ * `ambiguityFallbackError` recovery path unchanged.
59
+ *
60
+ * @param server the elicitation capability (`{ server: { elicitInput } }`)
61
+ * @param message the prompt shown to the user
62
+ * @param candidates id + label pairs; `enum` = ids, `enumNames` = labels
63
+ * @returns the chosen id, or `null` on decline / cancel / unsupported / error
64
+ */
65
+ export declare function elicitChoiceWithLabels(server: McpServerWithElicitation, message: string, candidates: ElicitationCandidate[]): Promise<string | null>;
37
66
  /**
38
67
  * Render a candidate list as a readable bullet block for the structured
39
68
  * fallback error — so a client without elicitation support still gets a
@@ -61,6 +61,68 @@ export function toElicitationCapability(realServer) {
61
61
  },
62
62
  };
63
63
  }
64
+ /**
65
+ * Label-aware drop-in for the toolkit's `elicitChoice`.
66
+ *
67
+ * The toolkit's `elicitChoice(server, message, choices)` builds an elicitation
68
+ * `requestedSchema` of shape `{ properties: { choice: { type:'string', enum,
69
+ * title } } }` — i.e. it carries ONLY the `enum` (the candidate VALUES). For an
70
+ * id-based picker that means the prompt shows raw ids like
71
+ * `cred_2c1a04cfc4a3cd1b` with no human-readable name, so the user cannot tell
72
+ * the candidates apart.
73
+ *
74
+ * This helper additionally emits `enumNames` (the candidate LABELS) in the same
75
+ * order as `enum`. `enumNames` is part of the MCP SDK elicitation schema (the
76
+ * `LegacyTitledEnumSchema` variant: `{ type:'string', enum, enumNames }`, the
77
+ * first member of the SDK's `EnumSchema` union), so a client that renders
78
+ * elicitation labels shows the names while the accepted VALUE is still the id
79
+ * (read back from `content.choice`).
80
+ *
81
+ * Contract parity with the toolkit's `elicitChoice` — returns `null` (never
82
+ * throws) on: a client without elicitation support (`elicitInput` rejects),
83
+ * the user declining or cancelling, an `accept` with no `choice` in the
84
+ * content, or any error. Call sites therefore keep their existing
85
+ * `ambiguityFallbackError` recovery path unchanged.
86
+ *
87
+ * @param server the elicitation capability (`{ server: { elicitInput } }`)
88
+ * @param message the prompt shown to the user
89
+ * @param candidates id + label pairs; `enum` = ids, `enumNames` = labels
90
+ * @returns the chosen id, or `null` on decline / cancel / unsupported / error
91
+ */
92
+ export async function elicitChoiceWithLabels(server, message, candidates) {
93
+ // Typed `ElicitInputParams` — `requestedSchema` is the toolkit's loose
94
+ // `Record<string, unknown>`, which a `LegacyTitledEnumSchema`-shaped object
95
+ // satisfies structurally. The adapter (`toElicitationCapability`) re-narrows
96
+ // it to the SDK's `ElicitRequestFormParams` at the single interop boundary,
97
+ // so no cast is needed here and the payload validates against the SDK's
98
+ // `EnumSchema` union at runtime.
99
+ const params = {
100
+ mode: "form",
101
+ message,
102
+ requestedSchema: {
103
+ type: "object",
104
+ properties: {
105
+ choice: {
106
+ type: "string",
107
+ enum: candidates.map((c) => c.id),
108
+ enumNames: candidates.map((c) => c.label),
109
+ title: "Choice",
110
+ },
111
+ },
112
+ required: ["choice"],
113
+ },
114
+ };
115
+ try {
116
+ const result = await server.server.elicitInput(params);
117
+ if (result.action === "accept" && result.content?.choice !== undefined) {
118
+ return String(result.content.choice);
119
+ }
120
+ return null;
121
+ }
122
+ catch {
123
+ return null;
124
+ }
125
+ }
64
126
  /**
65
127
  * Render a candidate list as a readable bullet block for the structured
66
128
  * fallback error — so a client without elicitation support still gets a
@@ -1 +1 @@
1
- {"version":3,"file":"elicitation.js","sourceRoot":"","sources":["../../../src/modules/apimapper/elicitation.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,EAAE;AACF,iEAAiE;AACjE,2EAA2E;AAC3E,2EAA2E;AAC3E,4EAA4E;AAC5E,EAAE;AACF,0EAA0E;AAC1E,qEAAqE;AACrE,6EAA6E;AAC7E,gFAAgF;AAChF,2EAA2E;AAC3E,8EAA8E;AAC9E,yEAAyE;AACzE,0EAA0E;AAC1E,wEAAwE;AACxE,4EAA4E;AAC5E,0EAA0E;AAC1E,6EAA6E;AAC7E,2CAA2C;AAC3C,EAAE;AACF,yEAAyE;AACzE,4EAA4E;AAC5E,0EAA0E;AAC1E,uEAAuE;AAEvE,OAAO,EACL,WAAW,GAGZ,MAAM,qBAAqB,CAAC;AAS7B;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,uBAAuB,CACrC,UAAqB;IAErB,OAAO;QACL,MAAM,EAAE;YACN,WAAW,EAAE,CAAC,MAAyB,EAAE,EAAE;YACzC,6DAA6D;YAC7D,kEAAkE;YAClE,qEAAqE;YACrE,yEAAyE;YACzE,gEAAgE;YAChE,oEAAoE;YACpE,+BAA+B;YAC/B,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,MAAiC,CAAC;SACnE;KACF,CAAC;AACJ,CAAC;AAYD;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAkC;IACpE,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAMtC;IACC,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAClD,OAAO,WAAW,CAAC;QACjB,OAAO,EAAE,YAAY,IAAI,CAAC,IAAI,qCAAqC;QACnE,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,UAAU,EACR,4BAA4B,IAAI,CAAC,SAAS,sBAAsB,IAAI,EAAE;QACxE,OAAO,EAAE;YACP,CAAC,aAAa,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,GAAG,IAAI,CAAC,YAAY;SACrB;KACF,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"elicitation.js","sourceRoot":"","sources":["../../../src/modules/apimapper/elicitation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Converts a JS object-literal as used in the embedded examples (unquoted
3
+ * identifier keys, single OR double quotes, trailing commas) into strict JSON
4
+ * and parses it. NO eval / new Function — a malformed example throws.
5
+ */
6
+ export declare function jsLiteralToValue(literal: string): unknown;
7
+ /**
8
+ * Extracts the object-literal argument from the FIRST embedded
9
+ * `Example:\n toolname({ ... })` block of a tool description and parses it to
10
+ * a plain object via the SAFE literal parser. Returns null when no example is
11
+ * present or no balanced object literal follows the call.
12
+ */
13
+ export declare function exampleArgsFromDescription(toolName: string, description: string): Record<string, unknown> | null;
@@ -0,0 +1,111 @@
1
+ // src/modules/apimapper/example-extract.ts — SAFE embedded-Example extractor.
2
+ //
3
+ // Tool descriptions embed a copy-pasteable `Example:\n toolname({ ... })`
4
+ // block. A cold agent copies that block verbatim, so the block MUST parse
5
+ // through the tool's own inputSchema — otherwise the very first verbatim call
6
+ // is rejected by Zod (the F108/F145 verbatim-fail class).
7
+ //
8
+ // This module is the SHARED extractor used by the Welle-1 + Welle-5 pin tests
9
+ // (previously inlined in welle1-reachability.test.ts). It is a bounded,
10
+ // non-eval transform: a malformed literal can only THROW, never execute code.
11
+ /**
12
+ * Converts a JS object-literal as used in the embedded examples (unquoted
13
+ * identifier keys, single OR double quotes, trailing commas) into strict JSON
14
+ * and parses it. NO eval / new Function — a malformed example throws.
15
+ */
16
+ export function jsLiteralToValue(literal) {
17
+ let out = "";
18
+ let i = 0;
19
+ const n = literal.length;
20
+ while (i < n) {
21
+ const ch = literal[i];
22
+ // Pass through double-quoted strings verbatim.
23
+ if (ch === '"') {
24
+ const start = i;
25
+ i++;
26
+ while (i < n && literal[i] !== '"') {
27
+ if (literal[i] === "\\")
28
+ i++;
29
+ i++;
30
+ }
31
+ i++;
32
+ out += literal.slice(start, i);
33
+ continue;
34
+ }
35
+ // Convert single-quoted strings to double-quoted JSON strings.
36
+ if (ch === "'") {
37
+ i++;
38
+ let body = "";
39
+ while (i < n && literal[i] !== "'") {
40
+ if (literal[i] === "\\") {
41
+ body += literal[i] + (literal[i + 1] ?? "");
42
+ i += 2;
43
+ continue;
44
+ }
45
+ body += literal[i];
46
+ i++;
47
+ }
48
+ i++;
49
+ out += JSON.stringify(body);
50
+ continue;
51
+ }
52
+ // Quote bare identifier keys: a `word:` immediately followed by a colon.
53
+ if (/[A-Za-z_$]/.test(ch)) {
54
+ let word = "";
55
+ while (i < n && /[A-Za-z0-9_$]/.test(literal[i])) {
56
+ word += literal[i];
57
+ i++;
58
+ }
59
+ // Look ahead past whitespace for a colon → it's a key.
60
+ let j = i;
61
+ while (j < n && /\s/.test(literal[j]))
62
+ j++;
63
+ if (literal[j] === ":") {
64
+ out += JSON.stringify(word);
65
+ }
66
+ else {
67
+ // Bare word value (true/false/null pass; anything else throws on parse).
68
+ out += word;
69
+ }
70
+ continue;
71
+ }
72
+ out += ch;
73
+ i++;
74
+ }
75
+ // Strip trailing commas before } or ].
76
+ out = out.replace(/,(\s*[}\]])/g, "$1");
77
+ return JSON.parse(out);
78
+ }
79
+ /**
80
+ * Extracts the object-literal argument from the FIRST embedded
81
+ * `Example:\n toolname({ ... })` block of a tool description and parses it to
82
+ * a plain object via the SAFE literal parser. Returns null when no example is
83
+ * present or no balanced object literal follows the call.
84
+ */
85
+ export function exampleArgsFromDescription(toolName, description) {
86
+ const callIdx = description.indexOf(`${toolName}(`);
87
+ if (callIdx === -1)
88
+ return null;
89
+ const braceStart = description.indexOf("{", callIdx);
90
+ if (braceStart === -1)
91
+ return null;
92
+ let depth = 0;
93
+ let end = -1;
94
+ for (let i = braceStart; i < description.length; i++) {
95
+ const ch = description[i];
96
+ if (ch === "{")
97
+ depth++;
98
+ else if (ch === "}") {
99
+ depth--;
100
+ if (depth === 0) {
101
+ end = i;
102
+ break;
103
+ }
104
+ }
105
+ }
106
+ if (end === -1)
107
+ return null;
108
+ const literal = description.slice(braceStart, end + 1);
109
+ return jsLiteralToValue(literal);
110
+ }
111
+ //# sourceMappingURL=example-extract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"example-extract.js","sourceRoot":"","sources":["../../../src/modules/apimapper/example-extract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * All valid filter operators (mirrors FilterOperators::ALL in PHP and
3
+ * FILTER_OPERATOR_VALUES in admin-ui).
4
+ */
5
+ export declare const FILTER_OPERATORS: readonly ["equals", "not_equals", "contains", "starts_with", "ends_with", "gt", "gte", "lt", "lte", "exists", "not_exists", "empty", "not_empty", "in", "not_in"];
6
+ export type FilterOperator = (typeof FILTER_OPERATORS)[number];
7
+ /**
8
+ * Operators that do NOT require a `value` (existence / emptiness checks).
9
+ * Mirrors FilterOperators::VALUE_LESS.
10
+ */
11
+ export declare const VALUE_LESS_OPERATORS: readonly ["exists", "not_exists", "empty", "not_empty"];
12
+ /**
13
+ * Operators that expect an array (or comma-separated string) value.
14
+ * Mirrors FilterOperators::ARRAY_OPERATORS.
15
+ */
16
+ export declare const ARRAY_OPERATORS: readonly ["in", "not_in"];
17
+ export declare function isValidFilterOperator(op: string): op is FilterOperator;
18
+ export declare function operatorNeedsValue(op: string): boolean;
19
+ /**
20
+ * Build the hard-error message for an unknown operator. Names the offending
21
+ * value, suggests the canonical equivalent when we recognise the spelling,
22
+ * and always lists the full valid set so the agent can recover in one step.
23
+ */
24
+ export declare function unknownOperatorMessage(op: string): string;
@@ -0,0 +1,103 @@
1
+ // filter-operators.ts — canonical Filter-node operator vocabulary (F53).
2
+ //
3
+ // SINGLE SOURCE OF TRUTH for the MCP layer. MUST stay in sync with:
4
+ // • src/modules/core/src/Pipeline/FilterOperators.php (PHP render-time executor)
5
+ // • src/modules/admin-ui/src/shared/steps/schema.ts (FILTER_OPERATOR_VALUES)
6
+ //
7
+ // Why this file exists (F53, cold-agent benchmark 2026-06-10): before this,
8
+ // the MCP graph schema validated filter conditions as
9
+ // `z.record(z.string(), z.unknown())` — i.e. it did NOT validate the operator
10
+ // at all. A cold agent writing `{operator:"greater_than"}` / `">"` / `"<"`
11
+ // passed the loose schema, the condition landed in the flow, and at RENDER
12
+ // time the PHP executor fell into its fail-safe branch (reject every item) →
13
+ // the page showed 0 rows with NO error anywhere. The vocabulary was
14
+ // reverse-engineered independently in all three Round-6 runs. We now reject
15
+ // an unknown operator HARD at the build chokepoint with a message naming the
16
+ // valid set, so the failure surfaces at flow-setup time, not silently on a
17
+ // live page.
18
+ /**
19
+ * All valid filter operators (mirrors FilterOperators::ALL in PHP and
20
+ * FILTER_OPERATOR_VALUES in admin-ui).
21
+ */
22
+ export const FILTER_OPERATORS = [
23
+ "equals",
24
+ "not_equals",
25
+ "contains",
26
+ "starts_with",
27
+ "ends_with",
28
+ "gt",
29
+ "gte",
30
+ "lt",
31
+ "lte",
32
+ "exists",
33
+ "not_exists",
34
+ "empty",
35
+ "not_empty",
36
+ "in",
37
+ "not_in",
38
+ ];
39
+ /**
40
+ * Operators that do NOT require a `value` (existence / emptiness checks).
41
+ * Mirrors FilterOperators::VALUE_LESS.
42
+ */
43
+ export const VALUE_LESS_OPERATORS = ["exists", "not_exists", "empty", "not_empty"];
44
+ /**
45
+ * Operators that expect an array (or comma-separated string) value.
46
+ * Mirrors FilterOperators::ARRAY_OPERATORS.
47
+ */
48
+ export const ARRAY_OPERATORS = ["in", "not_in"];
49
+ /**
50
+ * Common wrong spellings agents reach for, mapped to the canonical operator.
51
+ * Used purely to enrich the error hint — we do NOT silently auto-correct,
52
+ * because a silent rewrite would re-introduce the "what did it actually do?"
53
+ * ambiguity F53 is meant to kill.
54
+ */
55
+ const OPERATOR_SYNONYM_HINTS = {
56
+ ">": "gt",
57
+ ">=": "gte",
58
+ "<": "lt",
59
+ "<=": "lte",
60
+ "=": "equals",
61
+ "==": "equals",
62
+ "===": "equals",
63
+ "!=": "not_equals",
64
+ "!==": "not_equals",
65
+ "<>": "not_equals",
66
+ greater_than: "gt",
67
+ greater_than_or_equal: "gte",
68
+ greater_or_equal: "gte",
69
+ less_than: "lt",
70
+ less_than_or_equal: "lte",
71
+ less_or_equal: "lte",
72
+ eq: "equals",
73
+ ne: "not_equals",
74
+ neq: "not_equals",
75
+ not_equal: "not_equals",
76
+ notequals: "not_equals",
77
+ is: "equals",
78
+ like: "contains",
79
+ includes: "contains",
80
+ startswith: "starts_with",
81
+ endswith: "ends_with",
82
+ is_empty: "empty",
83
+ is_not_empty: "not_empty",
84
+ };
85
+ export function isValidFilterOperator(op) {
86
+ return FILTER_OPERATORS.includes(op);
87
+ }
88
+ export function operatorNeedsValue(op) {
89
+ return !VALUE_LESS_OPERATORS.includes(op);
90
+ }
91
+ /**
92
+ * Build the hard-error message for an unknown operator. Names the offending
93
+ * value, suggests the canonical equivalent when we recognise the spelling,
94
+ * and always lists the full valid set so the agent can recover in one step.
95
+ */
96
+ export function unknownOperatorMessage(op) {
97
+ const suggestion = OPERATOR_SYNONYM_HINTS[op.trim().toLowerCase()];
98
+ const did = suggestion ? ` Did you mean "${suggestion}"?` : "";
99
+ return (`Unknown filter operator "${op}".${did} ` +
100
+ `Valid operators: ${FILTER_OPERATORS.join(", ")}. ` +
101
+ `(Symbolic operators like ">" / "<" are NOT accepted — use "gt" / "lt".)`);
102
+ }
103
+ //# sourceMappingURL=filter-operators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-operators.js","sourceRoot":"","sources":["../../../src/modules/apimapper/filter-operators.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,EAAE;AACF,oEAAoE;AACpE,qFAAqF;AACrF,oFAAoF;AACpF,EAAE;AACF,4EAA4E;AAC5E,sDAAsD;AACtD,8EAA8E;AAC9E,2EAA2E;AAC3E,2EAA2E;AAC3E,6EAA6E;AAC7E,oEAAoE;AACpE,4EAA4E;AAC5E,6EAA6E;AAC7E,2EAA2E;AAC3E,aAAa;AAEb;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,QAAQ;IACR,YAAY;IACZ,UAAU;IACV,aAAa;IACb,WAAW;IACX,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,KAAK;IACL,QAAQ;IACR,YAAY;IACZ,OAAO;IACP,WAAW;IACX,IAAI;IACJ,QAAQ;CACA,CAAC;AAIX;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,CAAU,CAAC;AAE5F;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAU,CAAC;AAEzD;;;;;GAKG;AACH,MAAM,sBAAsB,GAAmC;IAC7D,GAAG,EAAE,IAAI;IACT,IAAI,EAAE,KAAK;IACX,GAAG,EAAE,IAAI;IACT,IAAI,EAAE,KAAK;IACX,GAAG,EAAE,QAAQ;IACb,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,QAAQ;IACf,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,YAAY;IACnB,IAAI,EAAE,YAAY;IAClB,YAAY,EAAE,IAAI;IAClB,qBAAqB,EAAE,KAAK;IAC5B,gBAAgB,EAAE,KAAK;IACvB,SAAS,EAAE,IAAI;IACf,kBAAkB,EAAE,KAAK;IACzB,aAAa,EAAE,KAAK;IACpB,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,YAAY;IAChB,GAAG,EAAE,YAAY;IACjB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,YAAY;IACvB,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,UAAU;IACpB,UAAU,EAAE,aAAa;IACzB,QAAQ,EAAE,WAAW;IACrB,QAAQ,EAAE,OAAO;IACjB,YAAY,EAAE,WAAW;CAC1B,CAAC;AAEF,MAAM,UAAU,qBAAqB,CAAC,EAAU;IAC9C,OAAQ,gBAAsC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EAAU;IAC3C,OAAO,CAAE,oBAA0C,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACnE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,EAAU;IAC/C,MAAM,UAAU,GAAG,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IACnE,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,kBAAkB,UAAU,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,OAAO,CACL,4BAA4B,EAAE,KAAK,GAAG,GAAG;QACzC,oBAAoB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;QACnD,yEAAyE,CAC1E,CAAC;AACJ,CAAC"}
@@ -136,30 +136,70 @@ export function buildFlowDetail(id, flow) {
136
136
  { key: "updated_at", label: "Updated", value: str(f.updated_at), format: "date" },
137
137
  ];
138
138
  const structure = structureAll.filter((e) => e.value !== null);
139
+ // F182 — the last-execution summary (persisted by TraceService, surfaced by
140
+ // flow_get). Present ONLY after the flow has been traced at least once.
141
+ const lastExec = f.last_execution && typeof f.last_execution === "object"
142
+ ? f.last_execution
143
+ : null;
144
+ const lastExecOutputCount = lastExec && typeof lastExec.output_count === "number" ? lastExec.output_count : undefined;
145
+ const lastExecAt = lastExec ? str(lastExec.at) : null;
146
+ const lastExecHadError = lastExec ? lastExec.had_error === true : false;
147
+ const lastExecAllEntries = [
148
+ { key: "last_run_at", label: "Last run", value: lastExecAt, format: "date" },
149
+ {
150
+ key: "last_run_output",
151
+ label: "Items produced",
152
+ value: lastExecOutputCount ?? null,
153
+ },
154
+ {
155
+ key: "last_run_steps",
156
+ label: "Steps",
157
+ value: typeof lastExec?.step_count === "number" ? lastExec.step_count : null,
158
+ },
159
+ { key: "last_run_error", label: "Had error", value: lastExecHadError, format: "boolean" },
160
+ ];
161
+ const lastExecEntries = lastExec
162
+ ? lastExecAllEntries.filter((e) => e.value !== null)
163
+ : [];
164
+ // F182 — the SILENT TRAP: compiled flow whose last run produced 0 items.
165
+ // Bind to it and the YOOtheme source is empty with no error. Emit an explicit
166
+ // warning ONLY when we KNOW the last run was empty (lastExec present AND
167
+ // output_count===0) — never fabricate it for a never-traced flow.
168
+ const zeroItemsWarning = isFlowCompiled(flow) && lastExecOutputCount === 0
169
+ ? "Compiled but last run produced 0 items — verify with apimapper_graph_preview before binding."
170
+ : null;
139
171
  const groups = [{ label: "Flow", entries: overview }];
140
172
  if (structure.length > 0)
141
173
  groups.push({ label: "Structure", entries: structure });
174
+ if (lastExecEntries.length > 0) {
175
+ groups.push({ label: "Last execution", entries: lastExecEntries });
176
+ }
177
+ const nextStepEntries = [];
178
+ if (zeroItemsWarning) {
179
+ nextStepEntries.push({
180
+ key: "zero_items_warning",
181
+ label: "⚠ Warning",
182
+ value: zeroItemsWarning,
183
+ });
184
+ }
185
+ nextStepEntries.push({
186
+ key: "compile",
187
+ label: "Publish",
188
+ value: `apimapper_flow_compile({ id: '${id}' }) — compile + publish to the YOOtheme dropdown`,
189
+ }, {
190
+ key: "trace",
191
+ label: "Debug",
192
+ value: `apimapper_flow_trace({ id: '${id}' }) — inspect the last run's per-step timing`,
193
+ }, {
194
+ key: "update",
195
+ label: "Edit",
196
+ value: `apimapper_flow_update({ id: '${id}', patch: { … } }) — modify nodes/edges`,
197
+ });
142
198
  groups.push({
143
199
  // IA-10 (W3.9): actionable next steps in a dedicated group — visible in
144
200
  // the LLM-readable detail text.
145
201
  label: "Next steps",
146
- entries: [
147
- {
148
- key: "compile",
149
- label: "Publish",
150
- value: `apimapper_flow_compile({ id: '${id}' }) — compile + publish to the YOOtheme dropdown`,
151
- },
152
- {
153
- key: "trace",
154
- label: "Debug",
155
- value: `apimapper_flow_trace({ id: '${id}' }) — inspect the last run's per-step timing`,
156
- },
157
- {
158
- key: "update",
159
- label: "Edit",
160
- value: `apimapper_flow_update({ id: '${id}', patch: { … } }) — modify nodes/edges`,
161
- },
162
- ],
202
+ entries: nextStepEntries,
163
203
  });
164
204
  // W2 sidecar: render the flow diagram from the flow's own nodes + edges.
165
205
  // buildFlowVisualization returns null when the ENV opt-out is set or the
@@ -223,14 +263,44 @@ export function buildFlowTraceTimeline(id, steps, totalMs) {
223
263
  const events = steps.map((raw, idx) => {
224
264
  const s = raw && typeof raw === "object" ? raw : {};
225
265
  const nodeId = str(s.node_id) ?? str(s.nodeId) ?? str(s.id) ?? str(s.node) ?? `step ${idx + 1}`;
226
- const itemCount = num(s.item_count) ?? num(s.itemCount) ?? num(s.count);
227
- const durationMs = num(s.duration_ms) ?? num(s.durationMs) ?? num(s.fetch_ms) ?? num(s.fetchMs) ?? num(s.ms);
266
+ // F185 the native TraceService (PHP) emits `outputCount` for the
267
+ // per-step item count (and `inputCount` for what the step consumed).
268
+ // The reader previously knew only item_count/itemCount/count, so a REAL
269
+ // trace rendered zero counts and the agent had to fall back to
270
+ // graph_preview.node_output_counts for 0-items forensics. Read the native
271
+ // keys FIRST so the genuine shape wins, keeping the legacy aliases as
272
+ // back-compat fallbacks.
273
+ const itemCount = num(s.outputCount) ??
274
+ num(s.output_count) ??
275
+ num(s.item_count) ??
276
+ num(s.itemCount) ??
277
+ num(s.count);
278
+ const inputCount = num(s.inputCount) ?? num(s.input_count);
279
+ const durationMs =
280
+ // Native TraceService key is `duration` (ms, float). Legacy aliases kept.
281
+ num(s.duration) ??
282
+ num(s.duration_ms) ??
283
+ num(s.durationMs) ??
284
+ num(s.fetch_ms) ??
285
+ num(s.fetchMs) ??
286
+ num(s.ms);
228
287
  const stepType = str(s.type) ?? str(s.node_type);
229
288
  const detailParts = [];
230
- if (itemCount !== undefined)
289
+ // F185 when both inputCount and outputCount are known and they differ,
290
+ // show the `in → out` transition: a step that consumed 12 but emitted 0 is
291
+ // the canonical "where did the rows die" signal for 0-items forensics.
292
+ if (inputCount !== undefined &&
293
+ itemCount !== undefined &&
294
+ inputCount !== itemCount) {
295
+ detailParts.push(`${inputCount} → ${itemCount} items`);
296
+ }
297
+ else if (itemCount !== undefined) {
231
298
  detailParts.push(`${itemCount} items`);
232
- if (durationMs !== undefined)
233
- detailParts.push(`${durationMs} ms`);
299
+ }
300
+ if (durationMs !== undefined) {
301
+ // Round to whole ms — the native float (e.g. 305.4) is sub-ms noise.
302
+ detailParts.push(`${Math.round(durationMs)} ms`);
303
+ }
234
304
  const stepError = str(s.error);
235
305
  if (stepError)
236
306
  detailParts.push(`error: ${stepError}`);