@seed-ship/mcp-ui-solid 6.4.0 → 6.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 (107) hide show
  1. package/CHANGELOG.md +230 -0
  2. package/README.md +37 -0
  3. package/dist/adapters/connector.cjs +112 -0
  4. package/dist/adapters/connector.cjs.map +1 -0
  5. package/dist/adapters/connector.d.ts +71 -0
  6. package/dist/adapters/connector.d.ts.map +1 -0
  7. package/dist/adapters/connector.js +112 -0
  8. package/dist/adapters/connector.js.map +1 -0
  9. package/dist/adapters/index.d.ts +18 -0
  10. package/dist/adapters/index.d.ts.map +1 -0
  11. package/dist/adapters.cjs +6 -0
  12. package/dist/adapters.cjs.map +1 -0
  13. package/dist/adapters.d.cts +18 -0
  14. package/dist/adapters.d.ts +18 -0
  15. package/dist/adapters.js +6 -0
  16. package/dist/adapters.js.map +1 -0
  17. package/dist/components/ExpandableWrapper.cjs +24 -6
  18. package/dist/components/ExpandableWrapper.cjs.map +1 -1
  19. package/dist/components/ExpandableWrapper.d.ts.map +1 -1
  20. package/dist/components/ExpandableWrapper.js +24 -6
  21. package/dist/components/ExpandableWrapper.js.map +1 -1
  22. package/dist/components/FeedbackInline.cjs +6 -2
  23. package/dist/components/FeedbackInline.cjs.map +1 -1
  24. package/dist/components/FeedbackInline.d.ts +2 -2
  25. package/dist/components/FeedbackInline.d.ts.map +1 -1
  26. package/dist/components/FeedbackInline.js +7 -3
  27. package/dist/components/FeedbackInline.js.map +1 -1
  28. package/dist/components/PresentationFeedback.cjs +207 -0
  29. package/dist/components/PresentationFeedback.cjs.map +1 -0
  30. package/dist/components/PresentationFeedback.d.ts +113 -0
  31. package/dist/components/PresentationFeedback.d.ts.map +1 -0
  32. package/dist/components/PresentationFeedback.js +207 -0
  33. package/dist/components/PresentationFeedback.js.map +1 -0
  34. package/dist/components/StreamingUIRenderer.cjs +82 -195
  35. package/dist/components/StreamingUIRenderer.cjs.map +1 -1
  36. package/dist/components/StreamingUIRenderer.d.ts +25 -5
  37. package/dist/components/StreamingUIRenderer.d.ts.map +1 -1
  38. package/dist/components/StreamingUIRenderer.js +84 -197
  39. package/dist/components/StreamingUIRenderer.js.map +1 -1
  40. package/dist/components/UIResourceRenderer.cjs +40 -10
  41. package/dist/components/UIResourceRenderer.cjs.map +1 -1
  42. package/dist/components/UIResourceRenderer.d.ts +20 -0
  43. package/dist/components/UIResourceRenderer.d.ts.map +1 -1
  44. package/dist/components/UIResourceRenderer.js +42 -12
  45. package/dist/components/UIResourceRenderer.js.map +1 -1
  46. package/dist/components/index.d.ts +2 -0
  47. package/dist/components/index.d.ts.map +1 -1
  48. package/dist/components.cjs +3 -0
  49. package/dist/components.cjs.map +1 -1
  50. package/dist/components.d.cts +2 -0
  51. package/dist/components.d.ts +2 -0
  52. package/dist/components.js +3 -0
  53. package/dist/components.js.map +1 -1
  54. package/dist/context/MCPUIStringsContext.cjs +38 -0
  55. package/dist/context/MCPUIStringsContext.cjs.map +1 -0
  56. package/dist/context/MCPUIStringsContext.d.ts +95 -0
  57. package/dist/context/MCPUIStringsContext.d.ts.map +1 -0
  58. package/dist/context/MCPUIStringsContext.js +38 -0
  59. package/dist/context/MCPUIStringsContext.js.map +1 -0
  60. package/dist/index.cjs +12 -0
  61. package/dist/index.cjs.map +1 -1
  62. package/dist/index.d.cts +8 -0
  63. package/dist/index.d.ts +8 -0
  64. package/dist/index.d.ts.map +1 -1
  65. package/dist/index.js +12 -0
  66. package/dist/index.js.map +1 -1
  67. package/dist/mcp-ui-spec/dist/schemas.cjs +103 -0
  68. package/dist/mcp-ui-spec/dist/schemas.cjs.map +1 -1
  69. package/dist/mcp-ui-spec/dist/schemas.js +103 -0
  70. package/dist/mcp-ui-spec/dist/schemas.js.map +1 -1
  71. package/dist/utils/duplicate-mount-registry.cjs +27 -0
  72. package/dist/utils/duplicate-mount-registry.cjs.map +1 -0
  73. package/dist/utils/duplicate-mount-registry.d.ts +84 -0
  74. package/dist/utils/duplicate-mount-registry.d.ts.map +1 -0
  75. package/dist/utils/duplicate-mount-registry.js +27 -0
  76. package/dist/utils/duplicate-mount-registry.js.map +1 -0
  77. package/dist/utils/stable-key.cjs +41 -0
  78. package/dist/utils/stable-key.cjs.map +1 -0
  79. package/dist/utils/stable-key.d.ts +33 -0
  80. package/dist/utils/stable-key.d.ts.map +1 -0
  81. package/dist/utils/stable-key.js +41 -0
  82. package/dist/utils/stable-key.js.map +1 -0
  83. package/docs/briefs/ROADMAP-opendata-macro-mcpui.md +912 -0
  84. package/package.json +17 -5
  85. package/src/adapters/connector.test.ts +165 -0
  86. package/src/adapters/connector.ts +234 -0
  87. package/src/adapters/index.ts +24 -0
  88. package/src/components/ExpandableWrapper.test.tsx +5 -2
  89. package/src/components/ExpandableWrapper.tsx +8 -6
  90. package/src/components/FeedbackInline.test.tsx +6 -3
  91. package/src/components/FeedbackInline.tsx +8 -6
  92. package/src/components/PresentationFeedback.test.tsx +163 -0
  93. package/src/components/PresentationFeedback.tsx +326 -0
  94. package/src/components/StreamingUIRenderer.parity.test.tsx +158 -0
  95. package/src/components/StreamingUIRenderer.tsx +42 -166
  96. package/src/components/UIResourceRenderer.identity.test.tsx +161 -0
  97. package/src/components/UIResourceRenderer.tsx +63 -2
  98. package/src/components/index.ts +10 -0
  99. package/src/context/MCPUIStringsContext.test.tsx +116 -0
  100. package/src/context/MCPUIStringsContext.tsx +128 -0
  101. package/src/index.ts +35 -0
  102. package/src/utils/duplicate-mount-registry.test.ts +82 -0
  103. package/src/utils/duplicate-mount-registry.ts +113 -0
  104. package/src/utils/stable-key.test.ts +96 -0
  105. package/src/utils/stable-key.ts +91 -0
  106. package/tsconfig.tsbuildinfo +1 -1
  107. package/vite.config.ts +1 -0
@@ -7,6 +7,8 @@ export { UIResourceRenderer } from './UIResourceRenderer';
7
7
  export type { UIResourceRendererProps } from './UIResourceRenderer';
8
8
  export { StreamingUIRenderer } from './StreamingUIRenderer';
9
9
  export type { StreamingUIRendererProps } from './StreamingUIRenderer';
10
+ export { PresentationFeedback, DEFAULT_PRESENTATION_FEEDBACK_LABELS, } from './PresentationFeedback';
11
+ export type { PresentationFeedbackProps, PresentationFeedbackLabels, } from './PresentationFeedback';
10
12
  export { GenerativeUIErrorBoundary } from './GenerativeUIErrorBoundary';
11
13
  export type { GenerativeUIErrorBoundaryProps } from './GenerativeUIErrorBoundary';
12
14
  export { FooterRenderer } from './FooterRenderer';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const UIResourceRenderer = require("./components/UIResourceRenderer.cjs");
4
4
  const StreamingUIRenderer = require("./components/StreamingUIRenderer.cjs");
5
+ const PresentationFeedback = require("./components/PresentationFeedback.cjs");
5
6
  const GenerativeUIErrorBoundary = require("./components/GenerativeUIErrorBoundary.cjs");
6
7
  const FooterRenderer = require("./components/FooterRenderer.cjs");
7
8
  const ActionRenderer = require("./components/ActionRenderer.cjs");
@@ -30,6 +31,8 @@ const PortalDropdownMenu = require("./components/PortalDropdownMenu.cjs");
30
31
  exports.UIResourceRenderer = UIResourceRenderer.UIResourceRenderer;
31
32
  exports.default = UIResourceRenderer.UIResourceRenderer;
32
33
  exports.StreamingUIRenderer = StreamingUIRenderer.StreamingUIRenderer;
34
+ exports.DEFAULT_PRESENTATION_FEEDBACK_LABELS = PresentationFeedback.DEFAULT_PRESENTATION_FEEDBACK_LABELS;
35
+ exports.PresentationFeedback = PresentationFeedback.PresentationFeedback;
33
36
  exports.GenerativeUIErrorBoundary = GenerativeUIErrorBoundary.GenerativeUIErrorBoundary;
34
37
  exports.FooterRenderer = FooterRenderer.FooterRenderer;
35
38
  exports.ActionRenderer = ActionRenderer.ActionRenderer;
@@ -1 +1 @@
1
- {"version":3,"file":"components.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"components.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -7,6 +7,8 @@ export { UIResourceRenderer } from './UIResourceRenderer';
7
7
  export type { UIResourceRendererProps } from './UIResourceRenderer';
8
8
  export { StreamingUIRenderer } from './StreamingUIRenderer';
9
9
  export type { StreamingUIRendererProps } from './StreamingUIRenderer';
10
+ export { PresentationFeedback, DEFAULT_PRESENTATION_FEEDBACK_LABELS, } from './PresentationFeedback';
11
+ export type { PresentationFeedbackProps, PresentationFeedbackLabels, } from './PresentationFeedback';
10
12
  export { GenerativeUIErrorBoundary } from './GenerativeUIErrorBoundary';
11
13
  export type { GenerativeUIErrorBoundaryProps } from './GenerativeUIErrorBoundary';
12
14
  export { FooterRenderer } from './FooterRenderer';
@@ -7,6 +7,8 @@ export { UIResourceRenderer } from './UIResourceRenderer';
7
7
  export type { UIResourceRendererProps } from './UIResourceRenderer';
8
8
  export { StreamingUIRenderer } from './StreamingUIRenderer';
9
9
  export type { StreamingUIRendererProps } from './StreamingUIRenderer';
10
+ export { PresentationFeedback, DEFAULT_PRESENTATION_FEEDBACK_LABELS, } from './PresentationFeedback';
11
+ export type { PresentationFeedbackProps, PresentationFeedbackLabels, } from './PresentationFeedback';
10
12
  export { GenerativeUIErrorBoundary } from './GenerativeUIErrorBoundary';
11
13
  export type { GenerativeUIErrorBoundaryProps } from './GenerativeUIErrorBoundary';
12
14
  export { FooterRenderer } from './FooterRenderer';
@@ -1,5 +1,6 @@
1
1
  import { UIResourceRenderer, UIResourceRenderer as UIResourceRenderer2 } from "./components/UIResourceRenderer.js";
2
2
  import { StreamingUIRenderer } from "./components/StreamingUIRenderer.js";
3
+ import { DEFAULT_PRESENTATION_FEEDBACK_LABELS, PresentationFeedback } from "./components/PresentationFeedback.js";
3
4
  import { GenerativeUIErrorBoundary } from "./components/GenerativeUIErrorBoundary.js";
4
5
  import { FooterRenderer } from "./components/FooterRenderer.js";
5
6
  import { ActionRenderer } from "./components/ActionRenderer.js";
@@ -36,6 +37,7 @@ export {
36
37
  CarouselRenderer,
37
38
  ChartJSRenderer,
38
39
  CodeBlockRenderer,
40
+ DEFAULT_PRESENTATION_FEEDBACK_LABELS,
39
41
  DataPreviewSection,
40
42
  ElicitationForm,
41
43
  FooterRenderer,
@@ -48,6 +50,7 @@ export {
48
50
  MapRenderer,
49
51
  ModalRenderer,
50
52
  PortalDropdownMenu,
53
+ PresentationFeedback,
51
54
  RenderContext,
52
55
  RenderProvider,
53
56
  SplitStepper,
@@ -1 +1 @@
1
- {"version":3,"file":"components.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"components.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const web = require("solid-js/web");
4
+ const solidJs = require("solid-js");
5
+ const DEFAULT_MCPUI_STRINGS = {
6
+ expand: "Expand",
7
+ expandedView: "Expanded view",
8
+ copyToClipboard: "Copy to clipboard",
9
+ closeExpandedView: "Close expanded view",
10
+ feedbackUseful: "Useful",
11
+ feedbackNotUseful: "Not useful",
12
+ feedbackPositiveAck: "Thanks!",
13
+ feedbackNegativeAck: "Noted — we'll improve",
14
+ retry: "Retry"
15
+ };
16
+ const MCPUIStringsContext = solidJs.createContext(DEFAULT_MCPUI_STRINGS);
17
+ function useMCPUIStrings() {
18
+ return solidJs.useContext(MCPUIStringsContext);
19
+ }
20
+ function MCPUIStringsProvider(props) {
21
+ const value = () => ({
22
+ ...DEFAULT_MCPUI_STRINGS,
23
+ ...props.strings
24
+ });
25
+ return web.createComponent(MCPUIStringsContext.Provider, {
26
+ get value() {
27
+ return value();
28
+ },
29
+ get children() {
30
+ return props.children;
31
+ }
32
+ });
33
+ }
34
+ exports.DEFAULT_MCPUI_STRINGS = DEFAULT_MCPUI_STRINGS;
35
+ exports.MCPUIStringsContext = MCPUIStringsContext;
36
+ exports.MCPUIStringsProvider = MCPUIStringsProvider;
37
+ exports.useMCPUIStrings = useMCPUIStrings;
38
+ //# sourceMappingURL=MCPUIStringsContext.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MCPUIStringsContext.cjs","sources":["../../src/context/MCPUIStringsContext.tsx"],"sourcesContent":["/**\n * MCPUIStringsContext — i18n for the library's own \"chrome\" strings.\n *\n * @since v6.6.0 (D2 / R4 of ROADMAP-opendata-macro-mcpui)\n *\n * ## Scope — chrome only, NOT content\n *\n * MCP-UI renders two kinds of text :\n *\n * - **Content** — table headers, chart titles, action labels, prompt\n * questions. These come from the payload and are ALREADY localized by\n * whoever produced the payload (the connector / MCP server). MCP-UI\n * renders them verbatim and this context never touches them.\n * - **Chrome** — the handful of strings the library itself hardcodes :\n * the expand-button tooltip, the feedback acknowledgements, etc. THIS\n * is what `MCPUIStrings` covers.\n *\n * There is deliberately no full i18n framework here : no per-renderer\n * `locale` prop, no message catalogue, no ICU. A flat string map behind a\n * context is enough — the chrome surface is small and static.\n *\n * ## Defaults are English\n *\n * `DEFAULT_MCPUI_STRINGS` is English. A published library should not ship\n * hardcoded French. Consumers that want another language wrap their tree\n * in `<MCPUIStringsProvider strings={...}>` with a partial override.\n *\n * Component props that already carry a label (e.g. `FeedbackInline`'s\n * `positiveAck`, `ExpandableWrapper`'s `copyLabel`) keep priority over the\n * provider — the provider only fills the gap when no explicit prop is set.\n *\n * @example\n * ```tsx\n * import { MCPUIStringsProvider } from '@seed-ship/mcp-ui-solid'\n *\n * <MCPUIStringsProvider strings={{ expand: 'Agrandir', feedbackUseful: 'Utile' }}>\n * <App />\n * </MCPUIStringsProvider>\n * ```\n */\n\nimport { createContext, useContext, type JSX } from 'solid-js'\n\n/**\n * The library's own chrome strings. Flat map, no interpolation.\n *\n * Marked exhaustive as of v6.6.0 ; new chrome strings added by later\n * renderers extend this interface (the `MCPUIStringsProvider` merge keeps\n * older consumers working — any unset key falls back to the EN default).\n */\nexport interface MCPUIStrings {\n // ── ExpandableWrapper toolbar ──────────────────────────────\n /** `title` of the expand-to-fullscreen button. */\n expand: string\n /** Heading + `aria-label` of the fullscreen modal when no title is given. */\n expandedView: string\n /** Default tooltip of the copy button (overridden by `copyLabel` prop). */\n copyToClipboard: string\n /** `aria-label` of the close button in the fullscreen modal. */\n closeExpandedView: string\n\n // ── FeedbackInline (response-quality feedback) ─────────────\n /** `title` of the thumb-up button. */\n feedbackUseful: string\n /** `title` of the thumb-down button. */\n feedbackNotUseful: string\n /** Acknowledgement shown after a positive rating (overridden by `positiveAck`). */\n feedbackPositiveAck: string\n /** Acknowledgement shown after a negative rating (overridden by `negativeAck`). */\n feedbackNegativeAck: string\n\n // ── Generic chrome ────────────────────────────────────────\n /** Label of the streaming retry button. */\n retry: string\n}\n\n/**\n * English defaults. A published library ships no hardcoded non-English\n * chrome — consumers localize via `<MCPUIStringsProvider>`.\n */\nexport const DEFAULT_MCPUI_STRINGS: MCPUIStrings = {\n expand: 'Expand',\n expandedView: 'Expanded view',\n copyToClipboard: 'Copy to clipboard',\n closeExpandedView: 'Close expanded view',\n feedbackUseful: 'Useful',\n feedbackNotUseful: 'Not useful',\n feedbackPositiveAck: 'Thanks!',\n feedbackNegativeAck: \"Noted — we'll improve\",\n retry: 'Retry',\n}\n\nexport const MCPUIStringsContext = createContext<MCPUIStrings>(DEFAULT_MCPUI_STRINGS)\n\n/**\n * Reads the active chrome strings. Returns `DEFAULT_MCPUI_STRINGS` when no\n * `<MCPUIStringsProvider>` is mounted above — every renderer works\n * standalone with English chrome.\n */\nexport function useMCPUIStrings(): MCPUIStrings {\n return useContext(MCPUIStringsContext)\n}\n\nexport interface MCPUIStringsProviderProps {\n /**\n * Partial override of the chrome strings. Any key left unset falls back\n * to the English `DEFAULT_MCPUI_STRINGS` — so a consumer can localize\n * just the strings they care about.\n */\n strings?: Partial<MCPUIStrings>\n children: JSX.Element\n}\n\n/**\n * Provides localized chrome strings to every MCP-UI renderer below it.\n * Merges the partial `strings` override over the English defaults.\n */\nexport function MCPUIStringsProvider(props: MCPUIStringsProviderProps): JSX.Element {\n // `props.strings` is read inside the getter so a reactive override\n // (signal-backed) re-propagates ; for the common static case it is read\n // once at mount.\n const value = (): MCPUIStrings => ({ ...DEFAULT_MCPUI_STRINGS, ...props.strings })\n return (\n <MCPUIStringsContext.Provider value={value()}>\n {props.children}\n </MCPUIStringsContext.Provider>\n )\n}\n"],"names":["DEFAULT_MCPUI_STRINGS","expand","expandedView","copyToClipboard","closeExpandedView","feedbackUseful","feedbackNotUseful","feedbackPositiveAck","feedbackNegativeAck","retry","MCPUIStringsContext","createContext","useMCPUIStrings","useContext","MCPUIStringsProvider","props","value","strings","_$createComponent","Provider","children"],"mappings":";;;;AAgFO,MAAMA,wBAAsC;AAAA,EACjDC,QAAQ;AAAA,EACRC,cAAc;AAAA,EACdC,iBAAiB;AAAA,EACjBC,mBAAmB;AAAA,EACnBC,gBAAgB;AAAA,EAChBC,mBAAmB;AAAA,EACnBC,qBAAqB;AAAA,EACrBC,qBAAqB;AAAA,EACrBC,OAAO;AACT;AAEO,MAAMC,sBAAsBC,QAAAA,cAA4BX,qBAAqB;AAO7E,SAASY,kBAAgC;AAC9C,SAAOC,QAAAA,WAAWH,mBAAmB;AACvC;AAgBO,SAASI,qBAAqBC,OAA+C;AAIlF,QAAMC,QAAQA,OAAqB;AAAA,IAAE,GAAGhB;AAAAA,IAAuB,GAAGe,MAAME;AAAAA,EAAAA;AACxE,SAAAC,IAAAA,gBACGR,oBAAoBS,UAAQ;AAAA,IAAA,IAACH,QAAK;AAAA,aAAEA,MAAAA;AAAAA,IAAO;AAAA,IAAA,IAAAI,WAAA;AAAA,aACzCL,MAAMK;AAAAA,IAAQ;AAAA,EAAA,CAAA;AAGrB;;;;;"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * MCPUIStringsContext — i18n for the library's own "chrome" strings.
3
+ *
4
+ * @since v6.6.0 (D2 / R4 of ROADMAP-opendata-macro-mcpui)
5
+ *
6
+ * ## Scope — chrome only, NOT content
7
+ *
8
+ * MCP-UI renders two kinds of text :
9
+ *
10
+ * - **Content** — table headers, chart titles, action labels, prompt
11
+ * questions. These come from the payload and are ALREADY localized by
12
+ * whoever produced the payload (the connector / MCP server). MCP-UI
13
+ * renders them verbatim and this context never touches them.
14
+ * - **Chrome** — the handful of strings the library itself hardcodes :
15
+ * the expand-button tooltip, the feedback acknowledgements, etc. THIS
16
+ * is what `MCPUIStrings` covers.
17
+ *
18
+ * There is deliberately no full i18n framework here : no per-renderer
19
+ * `locale` prop, no message catalogue, no ICU. A flat string map behind a
20
+ * context is enough — the chrome surface is small and static.
21
+ *
22
+ * ## Defaults are English
23
+ *
24
+ * `DEFAULT_MCPUI_STRINGS` is English. A published library should not ship
25
+ * hardcoded French. Consumers that want another language wrap their tree
26
+ * in `<MCPUIStringsProvider strings={...}>` with a partial override.
27
+ *
28
+ * Component props that already carry a label (e.g. `FeedbackInline`'s
29
+ * `positiveAck`, `ExpandableWrapper`'s `copyLabel`) keep priority over the
30
+ * provider — the provider only fills the gap when no explicit prop is set.
31
+ *
32
+ * @example
33
+ * ```tsx
34
+ * import { MCPUIStringsProvider } from '@seed-ship/mcp-ui-solid'
35
+ *
36
+ * <MCPUIStringsProvider strings={{ expand: 'Agrandir', feedbackUseful: 'Utile' }}>
37
+ * <App />
38
+ * </MCPUIStringsProvider>
39
+ * ```
40
+ */
41
+ import { type JSX } from 'solid-js';
42
+ /**
43
+ * The library's own chrome strings. Flat map, no interpolation.
44
+ *
45
+ * Marked exhaustive as of v6.6.0 ; new chrome strings added by later
46
+ * renderers extend this interface (the `MCPUIStringsProvider` merge keeps
47
+ * older consumers working — any unset key falls back to the EN default).
48
+ */
49
+ export interface MCPUIStrings {
50
+ /** `title` of the expand-to-fullscreen button. */
51
+ expand: string;
52
+ /** Heading + `aria-label` of the fullscreen modal when no title is given. */
53
+ expandedView: string;
54
+ /** Default tooltip of the copy button (overridden by `copyLabel` prop). */
55
+ copyToClipboard: string;
56
+ /** `aria-label` of the close button in the fullscreen modal. */
57
+ closeExpandedView: string;
58
+ /** `title` of the thumb-up button. */
59
+ feedbackUseful: string;
60
+ /** `title` of the thumb-down button. */
61
+ feedbackNotUseful: string;
62
+ /** Acknowledgement shown after a positive rating (overridden by `positiveAck`). */
63
+ feedbackPositiveAck: string;
64
+ /** Acknowledgement shown after a negative rating (overridden by `negativeAck`). */
65
+ feedbackNegativeAck: string;
66
+ /** Label of the streaming retry button. */
67
+ retry: string;
68
+ }
69
+ /**
70
+ * English defaults. A published library ships no hardcoded non-English
71
+ * chrome — consumers localize via `<MCPUIStringsProvider>`.
72
+ */
73
+ export declare const DEFAULT_MCPUI_STRINGS: MCPUIStrings;
74
+ export declare const MCPUIStringsContext: import("solid-js").Context<MCPUIStrings>;
75
+ /**
76
+ * Reads the active chrome strings. Returns `DEFAULT_MCPUI_STRINGS` when no
77
+ * `<MCPUIStringsProvider>` is mounted above — every renderer works
78
+ * standalone with English chrome.
79
+ */
80
+ export declare function useMCPUIStrings(): MCPUIStrings;
81
+ export interface MCPUIStringsProviderProps {
82
+ /**
83
+ * Partial override of the chrome strings. Any key left unset falls back
84
+ * to the English `DEFAULT_MCPUI_STRINGS` — so a consumer can localize
85
+ * just the strings they care about.
86
+ */
87
+ strings?: Partial<MCPUIStrings>;
88
+ children: JSX.Element;
89
+ }
90
+ /**
91
+ * Provides localized chrome strings to every MCP-UI renderer below it.
92
+ * Merges the partial `strings` override over the English defaults.
93
+ */
94
+ export declare function MCPUIStringsProvider(props: MCPUIStringsProviderProps): JSX.Element;
95
+ //# sourceMappingURL=MCPUIStringsContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MCPUIStringsContext.d.ts","sourceRoot":"","sources":["../../src/context/MCPUIStringsContext.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,EAA6B,KAAK,GAAG,EAAE,MAAM,UAAU,CAAA;AAE9D;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAE3B,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAA;IACd,6EAA6E;IAC7E,YAAY,EAAE,MAAM,CAAA;IACpB,2EAA2E;IAC3E,eAAe,EAAE,MAAM,CAAA;IACvB,gEAAgE;IAChE,iBAAiB,EAAE,MAAM,CAAA;IAGzB,sCAAsC;IACtC,cAAc,EAAE,MAAM,CAAA;IACtB,wCAAwC;IACxC,iBAAiB,EAAE,MAAM,CAAA;IACzB,mFAAmF;IACnF,mBAAmB,EAAE,MAAM,CAAA;IAC3B,mFAAmF;IACnF,mBAAmB,EAAE,MAAM,CAAA;IAG3B,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,YAUnC,CAAA;AAED,eAAO,MAAM,mBAAmB,0CAAqD,CAAA;AAErF;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAE9C;AAED,MAAM,WAAW,yBAAyB;IACxC;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;IAC/B,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAA;CACtB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,GAAG,GAAG,CAAC,OAAO,CAUlF"}
@@ -0,0 +1,38 @@
1
+ import { createComponent } from "solid-js/web";
2
+ import { createContext, useContext } from "solid-js";
3
+ const DEFAULT_MCPUI_STRINGS = {
4
+ expand: "Expand",
5
+ expandedView: "Expanded view",
6
+ copyToClipboard: "Copy to clipboard",
7
+ closeExpandedView: "Close expanded view",
8
+ feedbackUseful: "Useful",
9
+ feedbackNotUseful: "Not useful",
10
+ feedbackPositiveAck: "Thanks!",
11
+ feedbackNegativeAck: "Noted — we'll improve",
12
+ retry: "Retry"
13
+ };
14
+ const MCPUIStringsContext = createContext(DEFAULT_MCPUI_STRINGS);
15
+ function useMCPUIStrings() {
16
+ return useContext(MCPUIStringsContext);
17
+ }
18
+ function MCPUIStringsProvider(props) {
19
+ const value = () => ({
20
+ ...DEFAULT_MCPUI_STRINGS,
21
+ ...props.strings
22
+ });
23
+ return createComponent(MCPUIStringsContext.Provider, {
24
+ get value() {
25
+ return value();
26
+ },
27
+ get children() {
28
+ return props.children;
29
+ }
30
+ });
31
+ }
32
+ export {
33
+ DEFAULT_MCPUI_STRINGS,
34
+ MCPUIStringsContext,
35
+ MCPUIStringsProvider,
36
+ useMCPUIStrings
37
+ };
38
+ //# sourceMappingURL=MCPUIStringsContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MCPUIStringsContext.js","sources":["../../src/context/MCPUIStringsContext.tsx"],"sourcesContent":["/**\n * MCPUIStringsContext — i18n for the library's own \"chrome\" strings.\n *\n * @since v6.6.0 (D2 / R4 of ROADMAP-opendata-macro-mcpui)\n *\n * ## Scope — chrome only, NOT content\n *\n * MCP-UI renders two kinds of text :\n *\n * - **Content** — table headers, chart titles, action labels, prompt\n * questions. These come from the payload and are ALREADY localized by\n * whoever produced the payload (the connector / MCP server). MCP-UI\n * renders them verbatim and this context never touches them.\n * - **Chrome** — the handful of strings the library itself hardcodes :\n * the expand-button tooltip, the feedback acknowledgements, etc. THIS\n * is what `MCPUIStrings` covers.\n *\n * There is deliberately no full i18n framework here : no per-renderer\n * `locale` prop, no message catalogue, no ICU. A flat string map behind a\n * context is enough — the chrome surface is small and static.\n *\n * ## Defaults are English\n *\n * `DEFAULT_MCPUI_STRINGS` is English. A published library should not ship\n * hardcoded French. Consumers that want another language wrap their tree\n * in `<MCPUIStringsProvider strings={...}>` with a partial override.\n *\n * Component props that already carry a label (e.g. `FeedbackInline`'s\n * `positiveAck`, `ExpandableWrapper`'s `copyLabel`) keep priority over the\n * provider — the provider only fills the gap when no explicit prop is set.\n *\n * @example\n * ```tsx\n * import { MCPUIStringsProvider } from '@seed-ship/mcp-ui-solid'\n *\n * <MCPUIStringsProvider strings={{ expand: 'Agrandir', feedbackUseful: 'Utile' }}>\n * <App />\n * </MCPUIStringsProvider>\n * ```\n */\n\nimport { createContext, useContext, type JSX } from 'solid-js'\n\n/**\n * The library's own chrome strings. Flat map, no interpolation.\n *\n * Marked exhaustive as of v6.6.0 ; new chrome strings added by later\n * renderers extend this interface (the `MCPUIStringsProvider` merge keeps\n * older consumers working — any unset key falls back to the EN default).\n */\nexport interface MCPUIStrings {\n // ── ExpandableWrapper toolbar ──────────────────────────────\n /** `title` of the expand-to-fullscreen button. */\n expand: string\n /** Heading + `aria-label` of the fullscreen modal when no title is given. */\n expandedView: string\n /** Default tooltip of the copy button (overridden by `copyLabel` prop). */\n copyToClipboard: string\n /** `aria-label` of the close button in the fullscreen modal. */\n closeExpandedView: string\n\n // ── FeedbackInline (response-quality feedback) ─────────────\n /** `title` of the thumb-up button. */\n feedbackUseful: string\n /** `title` of the thumb-down button. */\n feedbackNotUseful: string\n /** Acknowledgement shown after a positive rating (overridden by `positiveAck`). */\n feedbackPositiveAck: string\n /** Acknowledgement shown after a negative rating (overridden by `negativeAck`). */\n feedbackNegativeAck: string\n\n // ── Generic chrome ────────────────────────────────────────\n /** Label of the streaming retry button. */\n retry: string\n}\n\n/**\n * English defaults. A published library ships no hardcoded non-English\n * chrome — consumers localize via `<MCPUIStringsProvider>`.\n */\nexport const DEFAULT_MCPUI_STRINGS: MCPUIStrings = {\n expand: 'Expand',\n expandedView: 'Expanded view',\n copyToClipboard: 'Copy to clipboard',\n closeExpandedView: 'Close expanded view',\n feedbackUseful: 'Useful',\n feedbackNotUseful: 'Not useful',\n feedbackPositiveAck: 'Thanks!',\n feedbackNegativeAck: \"Noted — we'll improve\",\n retry: 'Retry',\n}\n\nexport const MCPUIStringsContext = createContext<MCPUIStrings>(DEFAULT_MCPUI_STRINGS)\n\n/**\n * Reads the active chrome strings. Returns `DEFAULT_MCPUI_STRINGS` when no\n * `<MCPUIStringsProvider>` is mounted above — every renderer works\n * standalone with English chrome.\n */\nexport function useMCPUIStrings(): MCPUIStrings {\n return useContext(MCPUIStringsContext)\n}\n\nexport interface MCPUIStringsProviderProps {\n /**\n * Partial override of the chrome strings. Any key left unset falls back\n * to the English `DEFAULT_MCPUI_STRINGS` — so a consumer can localize\n * just the strings they care about.\n */\n strings?: Partial<MCPUIStrings>\n children: JSX.Element\n}\n\n/**\n * Provides localized chrome strings to every MCP-UI renderer below it.\n * Merges the partial `strings` override over the English defaults.\n */\nexport function MCPUIStringsProvider(props: MCPUIStringsProviderProps): JSX.Element {\n // `props.strings` is read inside the getter so a reactive override\n // (signal-backed) re-propagates ; for the common static case it is read\n // once at mount.\n const value = (): MCPUIStrings => ({ ...DEFAULT_MCPUI_STRINGS, ...props.strings })\n return (\n <MCPUIStringsContext.Provider value={value()}>\n {props.children}\n </MCPUIStringsContext.Provider>\n )\n}\n"],"names":["DEFAULT_MCPUI_STRINGS","expand","expandedView","copyToClipboard","closeExpandedView","feedbackUseful","feedbackNotUseful","feedbackPositiveAck","feedbackNegativeAck","retry","MCPUIStringsContext","createContext","useMCPUIStrings","useContext","MCPUIStringsProvider","props","value","strings","_$createComponent","Provider","children"],"mappings":";;AAgFO,MAAMA,wBAAsC;AAAA,EACjDC,QAAQ;AAAA,EACRC,cAAc;AAAA,EACdC,iBAAiB;AAAA,EACjBC,mBAAmB;AAAA,EACnBC,gBAAgB;AAAA,EAChBC,mBAAmB;AAAA,EACnBC,qBAAqB;AAAA,EACrBC,qBAAqB;AAAA,EACrBC,OAAO;AACT;AAEO,MAAMC,sBAAsBC,cAA4BX,qBAAqB;AAO7E,SAASY,kBAAgC;AAC9C,SAAOC,WAAWH,mBAAmB;AACvC;AAgBO,SAASI,qBAAqBC,OAA+C;AAIlF,QAAMC,QAAQA,OAAqB;AAAA,IAAE,GAAGhB;AAAAA,IAAuB,GAAGe,MAAME;AAAAA,EAAAA;AACxE,SAAAC,gBACGR,oBAAoBS,UAAQ;AAAA,IAAA,IAACH,QAAK;AAAA,aAAEA,MAAAA;AAAAA,IAAO;AAAA,IAAA,IAAAI,WAAA;AAAA,aACzCL,MAAMK;AAAAA,IAAQ;AAAA,EAAA,CAAA;AAGrB;"}
package/dist/index.cjs CHANGED
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const UIResourceRenderer = require("./components/UIResourceRenderer.cjs");
4
4
  const StreamingUIRenderer = require("./components/StreamingUIRenderer.cjs");
5
+ const PresentationFeedback = require("./components/PresentationFeedback.cjs");
5
6
  const GenerativeUIErrorBoundary = require("./components/GenerativeUIErrorBoundary.cjs");
6
7
  require("solid-js/web");
7
8
  require("solid-js");
@@ -41,6 +42,9 @@ const AutocompleteFormField = require("./components/AutocompleteFormField.cjs");
41
42
  const GraphRenderer = require("./components/GraphRenderer.cjs");
42
43
  const logger = require("./utils/logger.cjs");
43
44
  const perf = require("./utils/perf.cjs");
45
+ const stableKey = require("./utils/stable-key.cjs");
46
+ const duplicateMountRegistry = require("./utils/duplicate-mount-registry.cjs");
47
+ const MCPUIStringsContext = require("./context/MCPUIStringsContext.cjs");
44
48
  const MCPUITelemetryContext = require("./context/MCPUITelemetryContext.cjs");
45
49
  const telemetry = require("./services/telemetry.cjs");
46
50
  const useStreamingUI = require("./hooks/useStreamingUI.cjs");
@@ -66,6 +70,8 @@ const index = require("./testing/index.cjs");
66
70
  exports.UIResourceRenderer = UIResourceRenderer.UIResourceRenderer;
67
71
  exports.renderCellValue = UIResourceRenderer.renderCellValue;
68
72
  exports.StreamingUIRenderer = StreamingUIRenderer.StreamingUIRenderer;
73
+ exports.DEFAULT_PRESENTATION_FEEDBACK_LABELS = PresentationFeedback.DEFAULT_PRESENTATION_FEEDBACK_LABELS;
74
+ exports.PresentationFeedback = PresentationFeedback.PresentationFeedback;
69
75
  exports.GenerativeUIErrorBoundary = GenerativeUIErrorBoundary.GenerativeUIErrorBoundary;
70
76
  exports.ExpandableWrapper = ExpandableWrapper.ExpandableWrapper;
71
77
  exports.useExpanded = ExpandableWrapper.useExpanded;
@@ -110,6 +116,12 @@ exports.setDebugMode = logger.setDebugMode;
110
116
  exports.PERF_PREFIX = perf.PERF_PREFIX;
111
117
  exports.markRenderEnd = perf.markRenderEnd;
112
118
  exports.markRenderStart = perf.markRenderStart;
119
+ exports.getUiResourceStableKey = stableKey.getUiResourceStableKey;
120
+ exports.setDuplicateMountReporter = duplicateMountRegistry.setDuplicateMountReporter;
121
+ exports.DEFAULT_MCPUI_STRINGS = MCPUIStringsContext.DEFAULT_MCPUI_STRINGS;
122
+ exports.MCPUIStringsContext = MCPUIStringsContext.MCPUIStringsContext;
123
+ exports.MCPUIStringsProvider = MCPUIStringsContext.MCPUIStringsProvider;
124
+ exports.useMCPUIStrings = MCPUIStringsContext.useMCPUIStrings;
113
125
  exports.MCPUITelemetryContext = MCPUITelemetryContext.MCPUITelemetryContext;
114
126
  exports.MCPUITelemetryProvider = MCPUITelemetryContext.MCPUITelemetryProvider;
115
127
  exports.useTelemetry = MCPUITelemetryContext.useTelemetry;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/index.d.cts CHANGED
@@ -35,6 +35,9 @@ export { ExpandableWrapper, useExpanded } from './components/ExpandableWrapper';
35
35
  export { ComponentToolbar } from './components/ComponentToolbar';
36
36
  export { FeedbackInline } from './components/FeedbackInline';
37
37
  export type { FeedbackInlineProps, FeedbackInlineContext } from './components/FeedbackInline';
38
+ export { PresentationFeedback, DEFAULT_PRESENTATION_FEEDBACK_LABELS, } from './components/PresentationFeedback';
39
+ export type { PresentationFeedbackProps, PresentationFeedbackLabels, } from './components/PresentationFeedback';
40
+ export type { ConnectorRenderFeedback, ConnectorRenderProblem, ConnectorPreferredLayout, } from '@seed-ship/mcp-ui-spec';
38
41
  export { ChatBusProvider, useChatBus } from './hooks/useChatBus';
39
42
  export { ChatPrompt } from './components/ChatPrompt';
40
43
  export { ElicitationForm } from './components/ElicitationForm';
@@ -61,6 +64,11 @@ export type { CitationEntry } from './types';
61
64
  export { GraphRenderer, isG6Available, graphToMermaid, graphToJSON } from './components/GraphRenderer';
62
65
  export { setDebugMode, isDebugEnabled } from './utils/logger';
63
66
  export { markRenderStart, markRenderEnd, PERF_PREFIX } from './utils/perf';
67
+ export { getUiResourceStableKey } from './utils/stable-key';
68
+ export { setDuplicateMountReporter } from './utils/duplicate-mount-registry';
69
+ export type { DuplicateMountInfo, DuplicateMountReporter, } from './utils/duplicate-mount-registry';
70
+ export { MCPUIStringsProvider, MCPUIStringsContext, useMCPUIStrings, DEFAULT_MCPUI_STRINGS, } from './context/MCPUIStringsContext';
71
+ export type { MCPUIStrings, MCPUIStringsProviderProps, } from './context/MCPUIStringsContext';
64
72
  export { MCPUITelemetryProvider, MCPUITelemetryContext, useTelemetry, } from './context/MCPUITelemetryContext';
65
73
  export type { MCPUITelemetryProviderProps } from './context/MCPUITelemetryContext';
66
74
  export { createTelemetryDispatcher } from './services/telemetry';
package/dist/index.d.ts CHANGED
@@ -35,6 +35,9 @@ export { ExpandableWrapper, useExpanded } from './components/ExpandableWrapper';
35
35
  export { ComponentToolbar } from './components/ComponentToolbar';
36
36
  export { FeedbackInline } from './components/FeedbackInline';
37
37
  export type { FeedbackInlineProps, FeedbackInlineContext } from './components/FeedbackInline';
38
+ export { PresentationFeedback, DEFAULT_PRESENTATION_FEEDBACK_LABELS, } from './components/PresentationFeedback';
39
+ export type { PresentationFeedbackProps, PresentationFeedbackLabels, } from './components/PresentationFeedback';
40
+ export type { ConnectorRenderFeedback, ConnectorRenderProblem, ConnectorPreferredLayout, } from '@seed-ship/mcp-ui-spec';
38
41
  export { ChatBusProvider, useChatBus } from './hooks/useChatBus';
39
42
  export { ChatPrompt } from './components/ChatPrompt';
40
43
  export { ElicitationForm } from './components/ElicitationForm';
@@ -61,6 +64,11 @@ export type { CitationEntry } from './types';
61
64
  export { GraphRenderer, isG6Available, graphToMermaid, graphToJSON } from './components/GraphRenderer';
62
65
  export { setDebugMode, isDebugEnabled } from './utils/logger';
63
66
  export { markRenderStart, markRenderEnd, PERF_PREFIX } from './utils/perf';
67
+ export { getUiResourceStableKey } from './utils/stable-key';
68
+ export { setDuplicateMountReporter } from './utils/duplicate-mount-registry';
69
+ export type { DuplicateMountInfo, DuplicateMountReporter, } from './utils/duplicate-mount-registry';
70
+ export { MCPUIStringsProvider, MCPUIStringsContext, useMCPUIStrings, DEFAULT_MCPUI_STRINGS, } from './context/MCPUIStringsContext';
71
+ export type { MCPUIStrings, MCPUIStringsProviderProps, } from './context/MCPUIStringsContext';
64
72
  export { MCPUITelemetryProvider, MCPUITelemetryContext, useTelemetry, } from './context/MCPUITelemetryContext';
65
73
  export type { MCPUITelemetryProviderProps } from './context/MCPUITelemetryContext';
66
74
  export { createTelemetryDispatcher } from './services/telemetry';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { UIResourceRenderer, renderCellValue } from "./components/UIResourceRenderer.js";
2
2
  import { StreamingUIRenderer } from "./components/StreamingUIRenderer.js";
3
+ import { DEFAULT_PRESENTATION_FEEDBACK_LABELS, PresentationFeedback } from "./components/PresentationFeedback.js";
3
4
  import { GenerativeUIErrorBoundary } from "./components/GenerativeUIErrorBoundary.js";
4
5
  import "solid-js/web";
5
6
  import "solid-js";
@@ -39,6 +40,9 @@ import { AutocompleteFormField } from "./components/AutocompleteFormField.js";
39
40
  import { GraphRenderer, graphToJSON, graphToMermaid, isG6Available } from "./components/GraphRenderer.js";
40
41
  import { isDebugEnabled, setDebugMode } from "./utils/logger.js";
41
42
  import { PERF_PREFIX, markRenderEnd, markRenderStart } from "./utils/perf.js";
43
+ import { getUiResourceStableKey } from "./utils/stable-key.js";
44
+ import { setDuplicateMountReporter } from "./utils/duplicate-mount-registry.js";
45
+ import { DEFAULT_MCPUI_STRINGS, MCPUIStringsContext, MCPUIStringsProvider, useMCPUIStrings } from "./context/MCPUIStringsContext.js";
42
46
  import { MCPUITelemetryContext, MCPUITelemetryProvider, useTelemetry } from "./context/MCPUITelemetryContext.js";
43
47
  import { createTelemetryDispatcher } from "./services/telemetry.js";
44
48
  import { useStreamingUI } from "./hooks/useStreamingUI.js";
@@ -74,6 +78,8 @@ export {
74
78
  ComponentRegistry,
75
79
  ComponentToolbar,
76
80
  DEFAULT_IFRAME_DOMAINS,
81
+ DEFAULT_MCPUI_STRINGS,
82
+ DEFAULT_PRESENTATION_FEEDBACK_LABELS,
77
83
  DEFAULT_RESOURCE_LIMITS,
78
84
  DataPreviewSection,
79
85
  DraggableGridItem,
@@ -87,10 +93,13 @@ export {
87
93
  GraphRenderer,
88
94
  MCPActionContext,
89
95
  MCPActionProvider,
96
+ MCPUIStringsContext,
97
+ MCPUIStringsProvider,
90
98
  MCPUITelemetryContext,
91
99
  MCPUITelemetryProvider,
92
100
  PERF_PREFIX,
93
101
  PortalDropdownMenu,
102
+ PresentationFeedback,
94
103
  PromptReplacedError,
95
104
  ResizeHandle,
96
105
  ScratchpadPanel,
@@ -119,6 +128,7 @@ export {
119
128
  elicitationToPromptConfig,
120
129
  evaluateCondition,
121
130
  getIframeSandbox,
131
+ getUiResourceStableKey,
122
132
  graphToJSON,
123
133
  graphToMermaid,
124
134
  isDebugEnabled,
@@ -128,6 +138,7 @@ export {
128
138
  mergeScratchpadSections,
129
139
  renderCellValue,
130
140
  setDebugMode,
141
+ setDuplicateMountReporter,
131
142
  setServerCapabilities,
132
143
  useAction,
133
144
  useAutocomplete,
@@ -142,6 +153,7 @@ export {
142
153
  useFormPersistence,
143
154
  useMCPAction,
144
155
  useMCPActionSafe,
156
+ useMCPUIStrings,
145
157
  useModal,
146
158
  useResize,
147
159
  useScratchpadState,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -545,11 +545,108 @@ types.object({
545
545
  metadata: RegistryMetadataSchema.optional(),
546
546
  components: types.array(ComponentSchema).min(1)
547
547
  });
548
+ const ConnectorFollowupSchema = types.object({
549
+ /** Display text of the suggestion. */
550
+ label: types.string().min(1),
551
+ /** The follow-up query to run when the suggestion is picked. */
552
+ query: types.string().optional(),
553
+ /** Normalized intent of the follow-up query. */
554
+ intent: types.string().optional(),
555
+ /** What kind of follow-up this is — drives grouping / iconography. */
556
+ kind: types.enum(["refine", "compare", "expand", "clarify"]).optional()
557
+ });
558
+ const ConnectorActionSchema = ActionParamsSchema;
559
+ const ConnectorPreferredLayoutSchema = types.enum([
560
+ "table",
561
+ "cards",
562
+ "bar",
563
+ "line",
564
+ "doughnut",
565
+ "map",
566
+ "metric"
567
+ ]);
568
+ const ConnectorRenderHintsSchema = types.object({
569
+ /** Preferred top-level layout for `primary`. */
570
+ preferredLayout: ConnectorPreferredLayoutSchema.optional(),
571
+ /** Data domain — drives presets/examples, NOT the same axis as `intent`. */
572
+ domain: types.enum(["real_estate", "dpe", "pollution", "employment", "education", "health", "generic"]).optional(),
573
+ /** Connector's confidence in the result, 0..1. */
574
+ confidence: types.number().min(0).max(1).optional()
575
+ });
576
+ const CONNECTOR_DYNAMIC_RESULT_V1 = "connector-dynamic-result/v1";
577
+ const ConnectorDynamicResultV1Schema = types.object({
578
+ /** Version discriminant — REQUIRED. */
579
+ schemaVersion: types.literal(CONNECTOR_DYNAMIC_RESULT_V1),
580
+ /** Stable id of the connector that produced this result. */
581
+ connectorId: types.string().min(1),
582
+ /** MCP tool that was invoked. */
583
+ toolName: types.string().min(1),
584
+ /** The raw user query. */
585
+ query: types.string(),
586
+ /**
587
+ * Stable key for storing / retrieving persisted presentation feedback.
588
+ * Optional in the payload, but REQUIRED once a feedback entry is
589
+ * persisted against this result. Recommended derivation :
590
+ * `hash(connectorId + toolName + normalizedIntent)` — NOT the raw query,
591
+ * so two close phrasings of the same ask share the key.
592
+ */
593
+ queryHash: types.string().optional(),
594
+ /** Normalized user intent (e.g. `real_estate_city`, `dpe_city`). */
595
+ intent: types.string().optional(),
596
+ /** Primary result — a `UIComponent` or `UILayout` (passthrough, see header). */
597
+ primary: types.record(types.unknown()),
598
+ /** Supplemental components — related datasets, source cards, etc. */
599
+ supplemental: types.array(types.record(types.unknown())).optional(),
600
+ /** Follow-up actions (tool calls / links) the user can trigger. */
601
+ actions: types.array(ConnectorActionSchema).optional(),
602
+ /** Suggested follow-up queries. */
603
+ followups: types.array(ConnectorFollowupSchema).optional(),
604
+ /** Non-binding rendering hints. */
605
+ renderHints: ConnectorRenderHintsSchema.optional()
606
+ });
607
+ const ConnectorRenderProblemSchema = types.enum([
608
+ "too_raw",
609
+ "wrong_columns",
610
+ "wrong_chart",
611
+ "missing_context",
612
+ "wrong_unit",
613
+ "bad_grouping",
614
+ "missing_dataset_context"
615
+ ]);
616
+ types.object({
617
+ /** Connector whose result is being rated. */
618
+ connectorId: types.string().min(1),
619
+ /** Tool that produced the result. */
620
+ toolName: types.string().min(1),
621
+ /** Stable key tying this feedback to a `ConnectorDynamicResultV1.queryHash`. */
622
+ queryHash: types.string().optional(),
623
+ /** What was rated (e.g. `'primary'`, `'supplemental'`). */
624
+ renderKind: types.string().optional(),
625
+ /** The layout type that was shown (e.g. `'table'`, `'bar'`). */
626
+ layoutType: types.string().optional(),
627
+ /** Overall judgement — REQUIRED. */
628
+ verdict: types.enum(["readable", "not_readable"]),
629
+ /** Zero or more precise problems (refines a `not_readable` verdict). */
630
+ problems: types.array(ConnectorRenderProblemSchema).optional(),
631
+ /** Layout the user would prefer instead. */
632
+ preferredLayout: ConnectorPreferredLayoutSchema.optional(),
633
+ /** Fields the user says are missing from the render. */
634
+ missingFields: types.array(types.string()).optional(),
635
+ /** Columns the user wishes were shown. */
636
+ selectedColumns: types.array(types.string()).optional(),
637
+ /** A unit the user flags as wrong. */
638
+ wrongUnit: types.string().optional(),
639
+ /** A grouping the user flags as wrong. */
640
+ wrongGrouping: types.string().optional(),
641
+ /** Free-text comment. */
642
+ comment: types.string().optional()
643
+ });
548
644
  exports.ActionGroupGapSchema = ActionGroupGapSchema;
549
645
  exports.ActionGroupLayoutSchema = ActionGroupLayoutSchema;
550
646
  exports.ActionGroupParamsSchema = ActionGroupParamsSchema;
551
647
  exports.ActionParamsSchema = ActionParamsSchema;
552
648
  exports.ArtifactComponentParamsSchema = ArtifactComponentParamsSchema;
649
+ exports.CONNECTOR_DYNAMIC_RESULT_V1 = CONNECTOR_DYNAMIC_RESULT_V1;
553
650
  exports.CarouselComponentParamsSchema = CarouselComponentParamsSchema;
554
651
  exports.ChartDatasetSchema = ChartDatasetSchema;
555
652
  exports.ChartTimeAxisSchema = ChartTimeAxisSchema;
@@ -560,6 +657,12 @@ exports.ComponentExampleSchema = ComponentExampleSchema;
560
657
  exports.ComponentSchema = ComponentSchema;
561
658
  exports.ComponentSchemaSchema = ComponentSchemaSchema;
562
659
  exports.ComponentTypeSchema = ComponentTypeSchema;
660
+ exports.ConnectorActionSchema = ConnectorActionSchema;
661
+ exports.ConnectorDynamicResultV1Schema = ConnectorDynamicResultV1Schema;
662
+ exports.ConnectorFollowupSchema = ConnectorFollowupSchema;
663
+ exports.ConnectorPreferredLayoutSchema = ConnectorPreferredLayoutSchema;
664
+ exports.ConnectorRenderHintsSchema = ConnectorRenderHintsSchema;
665
+ exports.ConnectorRenderProblemSchema = ConnectorRenderProblemSchema;
563
666
  exports.FormComponentParamsSchema = FormComponentParamsSchema;
564
667
  exports.FormFieldOptionSchema = FormFieldOptionSchema;
565
668
  exports.FormFieldSchema = FormFieldSchema;