@syntrologie/adapt-chatbot 2.8.0-canary.31 → 2.8.0-canary.310

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 (126) hide show
  1. package/dist/AdaptiveChatBar.d.ts +85 -0
  2. package/dist/AdaptiveChatBar.d.ts.map +1 -0
  3. package/dist/AdaptiveChatBar.js +10 -0
  4. package/dist/AdaptiveChatBar.js.map +7 -0
  5. package/dist/AdaptiveChatBarMountable.d.ts +35 -0
  6. package/dist/AdaptiveChatBarMountable.d.ts.map +1 -0
  7. package/dist/AdaptiveChatTrail.d.ts +85 -0
  8. package/dist/AdaptiveChatTrail.d.ts.map +1 -0
  9. package/dist/AdaptiveChatTrail.js +9 -0
  10. package/dist/AdaptiveChatTrail.js.map +7 -0
  11. package/dist/AdaptiveChipsStrip.d.ts +1150 -0
  12. package/dist/AdaptiveChipsStrip.d.ts.map +1 -0
  13. package/dist/AdaptiveChipsStrip.js +11 -0
  14. package/dist/AdaptiveChipsStrip.js.map +7 -0
  15. package/dist/AdaptiveChipsStripMountable.d.ts +24 -0
  16. package/dist/AdaptiveChipsStripMountable.d.ts.map +1 -0
  17. package/dist/ChatAssistantLit.d.ts +60 -0
  18. package/dist/ChatAssistantLit.d.ts.map +1 -0
  19. package/dist/ChatAssistantLit.js +12 -0
  20. package/dist/ChatAssistantLit.js.map +7 -0
  21. package/dist/ChatSession.d.ts +178 -0
  22. package/dist/ChatSession.d.ts.map +1 -0
  23. package/dist/ChatTransport.d.ts +283 -0
  24. package/dist/ChatTransport.d.ts.map +1 -0
  25. package/dist/NavLinkMountable.d.ts +25 -0
  26. package/dist/NavLinkMountable.d.ts.map +1 -0
  27. package/dist/NavLinkMountable.test.d.ts +2 -0
  28. package/dist/NavLinkMountable.test.d.ts.map +1 -0
  29. package/dist/TextAnswerMountable.d.ts +17 -0
  30. package/dist/TextAnswerMountable.d.ts.map +1 -0
  31. package/dist/Turnstile.d.ts +83 -0
  32. package/dist/Turnstile.d.ts.map +1 -0
  33. package/dist/cdn.d.ts +2 -6
  34. package/dist/cdn.d.ts.map +1 -1
  35. package/dist/chunk-2ZUJ7DZI.js +8770 -0
  36. package/dist/chunk-2ZUJ7DZI.js.map +7 -0
  37. package/dist/chunk-BNN5YLN3.js +417 -0
  38. package/dist/chunk-BNN5YLN3.js.map +7 -0
  39. package/dist/chunk-FVNSOP7B.js +634 -0
  40. package/dist/chunk-FVNSOP7B.js.map +7 -0
  41. package/dist/chunk-ONGGPQER.js +3722 -0
  42. package/dist/chunk-ONGGPQER.js.map +7 -0
  43. package/dist/chunk-SCVTTLFJ.js +334 -0
  44. package/dist/chunk-SCVTTLFJ.js.map +7 -0
  45. package/dist/chunk-UVKRO5ER.js +13 -0
  46. package/dist/chunk-UVKRO5ER.js.map +7 -0
  47. package/dist/chunk-VLJ3WOEX.js +231 -0
  48. package/dist/chunk-VLJ3WOEX.js.map +7 -0
  49. package/dist/editor-lit.d.ts +37 -0
  50. package/dist/editor-lit.d.ts.map +1 -0
  51. package/dist/editor-lit.js +134 -0
  52. package/dist/editor-lit.js.map +7 -0
  53. package/dist/elements/ActionHandler.d.ts +34 -0
  54. package/dist/elements/ActionHandler.d.ts.map +1 -0
  55. package/dist/elements/ElementInstanceStore.d.ts +155 -0
  56. package/dist/elements/ElementInstanceStore.d.ts.map +1 -0
  57. package/dist/elements/ElementInstanceStore.test.d.ts +2 -0
  58. package/dist/elements/ElementInstanceStore.test.d.ts.map +1 -0
  59. package/dist/elements/ElementTypeHandler.d.ts +77 -0
  60. package/dist/elements/ElementTypeHandler.d.ts.map +1 -0
  61. package/dist/elements/ItemHandler.d.ts +60 -0
  62. package/dist/elements/ItemHandler.d.ts.map +1 -0
  63. package/dist/elements/ItemHandler.test.d.ts +2 -0
  64. package/dist/elements/ItemHandler.test.d.ts.map +1 -0
  65. package/dist/elements/TileHandler.d.ts +52 -0
  66. package/dist/elements/TileHandler.d.ts.map +1 -0
  67. package/dist/elements/blockRenderer.d.ts +46 -0
  68. package/dist/elements/blockRenderer.d.ts.map +1 -0
  69. package/dist/elements/blockRenderer.test.d.ts +13 -0
  70. package/dist/elements/blockRenderer.test.d.ts.map +1 -0
  71. package/dist/elements/blocks.d.ts +58 -0
  72. package/dist/elements/blocks.d.ts.map +1 -0
  73. package/dist/elements/envelope.d.ts +24 -0
  74. package/dist/elements/envelope.d.ts.map +1 -0
  75. package/dist/elements/fetcher.d.ts +40 -0
  76. package/dist/elements/fetcher.d.ts.map +1 -0
  77. package/dist/elements/index.d.ts +32 -0
  78. package/dist/elements/index.d.ts.map +1 -0
  79. package/dist/elements/types.d.ts +106 -0
  80. package/dist/elements/types.d.ts.map +1 -0
  81. package/dist/observer/__tests__/allowlist.test.d.ts +9 -0
  82. package/dist/observer/__tests__/allowlist.test.d.ts.map +1 -0
  83. package/dist/observer/__tests__/observer-isolation.test.d.ts +13 -0
  84. package/dist/observer/__tests__/observer-isolation.test.d.ts.map +1 -0
  85. package/dist/observer/__tests__/queue.test.d.ts +2 -0
  86. package/dist/observer/__tests__/queue.test.d.ts.map +1 -0
  87. package/dist/observer/__tests__/transport.test.d.ts +2 -0
  88. package/dist/observer/__tests__/transport.test.d.ts.map +1 -0
  89. package/dist/observer/allowlist.d.ts +32 -0
  90. package/dist/observer/allowlist.d.ts.map +1 -0
  91. package/dist/observer/index.d.ts +35 -0
  92. package/dist/observer/index.d.ts.map +1 -0
  93. package/dist/observer/queue.d.ts +57 -0
  94. package/dist/observer/queue.d.ts.map +1 -0
  95. package/dist/observer/transport.d.ts +26 -0
  96. package/dist/observer/transport.d.ts.map +1 -0
  97. package/dist/runtime-lit.d.ts +8 -0
  98. package/dist/runtime-lit.d.ts.map +1 -0
  99. package/dist/runtime.d.ts +8 -3
  100. package/dist/runtime.d.ts.map +1 -1
  101. package/dist/runtime.js +1649 -29
  102. package/dist/runtime.js.map +7 -0
  103. package/dist/schema.d.ts +3298 -11
  104. package/dist/schema.d.ts.map +1 -1
  105. package/dist/schema.js +126 -31
  106. package/dist/schema.js.map +7 -0
  107. package/dist/types.d.ts +47 -31
  108. package/dist/types.d.ts.map +1 -1
  109. package/package.json +50 -19
  110. package/dist/ChatAssistant.d.ts +0 -18
  111. package/dist/ChatAssistant.d.ts.map +0 -1
  112. package/dist/ChatAssistant.js +0 -178
  113. package/dist/actionParser.d.ts +0 -15
  114. package/dist/actionParser.d.ts.map +0 -1
  115. package/dist/actionParser.js +0 -52
  116. package/dist/apiClient.d.ts +0 -23
  117. package/dist/apiClient.d.ts.map +0 -1
  118. package/dist/apiClient.js +0 -51
  119. package/dist/cdn.js +0 -37
  120. package/dist/editor.d.ts +0 -17
  121. package/dist/editor.d.ts.map +0 -1
  122. package/dist/editor.js +0 -36
  123. package/dist/types.js +0 -6
  124. package/dist/useChat.d.ts +0 -25
  125. package/dist/useChat.d.ts.map +0 -1
  126. package/dist/useChat.js +0 -106
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,YAAY;IACvB,4CAA4C;;IAE5C,4CAA4C;;IAE5C,iDAAiD;;IAEjD,6DAA6D;;;;;;;;;;;;EAE7D,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAE/D,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO;;;;;;;;;;GAElD;AAMD;;;;GAIG;AACH,eAAO,MAAM,WAAW;;;;QAzBtB,4CAA4C;;QAE5C,4CAA4C;;QAE5C,iDAAiD;;QAEjD,6DAA6D;;;;;;;;;;;;;GAyB9D,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
package/dist/schema.js CHANGED
@@ -1,34 +1,129 @@
1
- /**
2
- * Adaptive Chatbot - Config Schema
3
- *
4
- * Zod schema for validating chatbot widget configuration.
5
- */
6
- import { z } from 'zod';
7
- export const configSchema = z.object({
8
- /** Backend URL for the chat API endpoint */
9
- backendUrl: z.string().min(1, 'Backend URL is required'),
10
- /** MLflow run ID for experiment tracking */
11
- mlflowRunId: z.string().optional(),
12
- /** Greeting message shown when the chat opens */
13
- greeting: z.string().default('Hi! How can I help?'),
14
- /** Maximum number of history messages sent to the backend */
15
- maxHistory: z.number().int().min(1).max(100).default(20),
1
+ import {
2
+ SuggestionChipSchema
3
+ } from "./chunk-FVNSOP7B.js";
4
+ import "./chunk-VLJ3WOEX.js";
5
+ import "./chunk-UVKRO5ER.js";
6
+
7
+ // src/schema.ts
8
+ import { z } from "zod";
9
+ var backendUrlSchema = z.union(
10
+ [
11
+ z.string().url("backendUrl must be an absolute URL").regex(/^https?:\/\//, "backendUrl must use http or https"),
12
+ z.literal("")
13
+ ],
14
+ {
15
+ errorMap: () => ({
16
+ message: 'backendUrl must be either "" (same-origin) or an absolute http(s):// URL \u2014 relative paths are not allowed'
17
+ })
18
+ }
19
+ );
20
+ var fallbackHrefSchema = z.union(
21
+ [
22
+ z.string().url("fallback.ctaHref must be an absolute URL").regex(/^https?:\/\//, "fallback.ctaHref must use http or https"),
23
+ z.literal("")
24
+ ],
25
+ {
26
+ errorMap: () => ({
27
+ message: 'fallback.ctaHref must be either "" (same-origin) or an absolute http(s):// URL'
28
+ })
29
+ }
30
+ );
31
+ var fallbackSchema = z.object({
32
+ /** Header shown on the fallback card. Defaults to a generic "unavailable" copy. */
33
+ title: z.string().optional(),
34
+ /** Body copy explaining the situation in the customer's voice. */
35
+ message: z.string().optional(),
36
+ /** Label for the call-to-action link. If `ctaHref` is set this should be too. */
37
+ ctaLabel: z.string().optional(),
38
+ /** Target of the CTA link — typically the customer's existing support path. */
39
+ ctaHref: fallbackHrefSchema.optional()
40
+ }).strict();
41
+ var configSchema = z.object({
42
+ /** Backend URL for the chat API endpoint. "" for same-origin, or an absolute http(s):// URL. */
43
+ backendUrl: backendUrlSchema,
44
+ /** MLflow run ID for experiment tracking */
45
+ mlflowRunId: z.string().optional(),
46
+ /** Greeting message shown when the chat opens */
47
+ greeting: z.string().default("Hi! How can I help?"),
48
+ /** Maximum number of history messages sent to the backend */
49
+ maxHistory: z.number().int().min(1).max(100).default(20),
50
+ /** Quick-reply suggestions shown in the empty state */
51
+ suggestions: z.array(z.string()).optional(),
52
+ /**
53
+ * Per-customer fallback card rendered when chat can't open (Turnstile
54
+ * failure, network error, etc.). The end-user is redirected to the
55
+ * customer's normal support path — no Cloudflare-branded challenge is
56
+ * ever shown.
57
+ */
58
+ fallback: fallbackSchema.optional()
16
59
  });
17
- export function validateChatbotConfig(data) {
18
- return configSchema.safeParse(data);
60
+ function validateChatbotConfig(data) {
61
+ return configSchema.safeParse(data);
19
62
  }
20
- // ============================================================================
21
- // Tile Widget Props Export
22
- // ============================================================================
23
- /**
24
- * Tile widget definitions for unified JSON Schema generation.
25
- * Maps widget IDs to their props validation schema so the build script
26
- * can inject if/then constraints on tile.props.
27
- */
28
- export const tileWidgets = [
29
- {
30
- widget: 'adaptive-chatbot:assistant',
31
- defName: 'chatbotAssistantProps',
32
- propsSchema: configSchema,
33
- },
63
+ var chatBarPropsSchema = z.object({
64
+ placeholder: z.string().optional().describe('Input placeholder copy. Defaults to "Ask, find, or navigate\u2026".'),
65
+ // `messages` and `inFlight` are runtime state — included here so
66
+ // authors who pre-seed a conversation (e.g. a demo or guided
67
+ // walkthrough) can declare it. Most production deployments will
68
+ // leave these blank and update them via the mountable's API.
69
+ messages: z.array(
70
+ z.object({
71
+ id: z.union([z.number(), z.string()]),
72
+ role: z.enum(["user", "assistant"]),
73
+ text: z.string()
74
+ })
75
+ ).optional(),
76
+ inFlight: z.boolean().optional(),
77
+ forceExpanded: z.boolean().optional().describe(
78
+ "Render the trail + input expanded immediately on mount instead of waiting for the first message. Used on canvases where the chat IS the surface (velvet, dedicated drawer)."
79
+ ),
80
+ backendUrl: z.string().optional().describe(
81
+ "Backend chat endpoint. Empty string + non-undefined enables relative-URL fetches (the host page proxies /api/* to the backend)."
82
+ ),
83
+ greeting: z.string().optional().describe("Greeting line shown above the input on first mount."),
84
+ fallback: z.object({
85
+ title: z.string().optional(),
86
+ message: z.string().optional(),
87
+ ctaLabel: z.string().optional()
88
+ }).passthrough().optional().describe('Per-customer "chat unavailable" card shown when the transport gives up.'),
89
+ elementsEnabled: z.boolean().optional().describe(
90
+ "Opt the chat into the LLM-authored UI element pipeline. When true AND uiTemplates is set, the backend exposes mount_element / patch_element / unmount_element tools scoped to the declared templates."
91
+ ),
92
+ uiTemplates: z.record(z.unknown()).optional().describe(
93
+ "Template declarations the LLM can mount via the elements pipeline. Shape mirrors syntrologie_common.sdk.templates.UiTemplatesBlock. Passed verbatim as forwardedProps.uiTemplates to the AG-UI transport."
94
+ )
95
+ }).strict();
96
+ var chipsStripPropsSchema = z.object({
97
+ chips: z.array(SuggestionChipSchema).default([]).describe(
98
+ "Suggestion chips authored as suggestions:chip compositional actions. Each chip declares an id, a title, and a payload that mounts in the drawer when clicked. Conditional visibility via per-chip triggerWhen."
99
+ )
100
+ }).strict();
101
+ var tileWidgets = [
102
+ {
103
+ widget: "adaptive-chatbot:assistant",
104
+ defName: "chatbotAssistantProps",
105
+ propsSchema: configSchema
106
+ },
107
+ {
108
+ widget: "adaptive-chatbot:chat-bar",
109
+ defName: "chatBarProps",
110
+ propsSchema: chatBarPropsSchema
111
+ },
112
+ {
113
+ widget: "adaptive-chatbot:chips-strip",
114
+ defName: "chipsStripProps",
115
+ propsSchema: chipsStripPropsSchema
116
+ }
34
117
  ];
118
+ var actionStepSchemas = [
119
+ { defName: "suggestionChip", schema: SuggestionChipSchema.innerType() }
120
+ ];
121
+ export {
122
+ actionStepSchemas,
123
+ chatBarPropsSchema,
124
+ chipsStripPropsSchema,
125
+ configSchema,
126
+ tileWidgets,
127
+ validateChatbotConfig
128
+ };
129
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/schema.ts"],
4
+ "sourcesContent": ["/**\n * Adaptive Chatbot - Config Schema\n *\n * Zod schema for validating chatbot widget configuration.\n */\n\nimport { z } from 'zod';\n\nimport { SuggestionChipSchema } from './AdaptiveChipsStrip';\n\n// The widget composes `${backendUrl}/api/adaptive/session` and\n// `${backendUrl}/api/adaptive/action`. backendUrl must be either:\n// - \"\" (empty string) \u2014 same-origin opt-in; resolves to /api/adaptive/*\n// - an absolute http:// or https:// URL \u2014 the chat backend's origin\n// A relative path like \"/api/chat\" produces \"/api/chat/api/adaptive/session\"\n// which 404s on the host SPA and surfaces as a generic SSE error.\n//\n// Split into a `.url()` branch + literal \"\" branch so zod-to-json-schema\n// produces an `anyOf` that AJV (used by `make sdk-validate`) enforces.\n// Refinements alone do not survive the JSON-schema translation.\nconst backendUrlSchema = z.union(\n [\n z\n .string()\n .url('backendUrl must be an absolute URL')\n .regex(/^https?:\\/\\//, 'backendUrl must use http or https'),\n z.literal(''),\n ],\n {\n errorMap: () => ({\n message:\n 'backendUrl must be either \"\" (same-origin) or an absolute http(s):// URL \u2014 relative paths are not allowed',\n }),\n }\n);\n\n// Per-customer fallback card. Rendered in place of the chat input when the\n// chat backend is unreachable for any reason (most commonly: Cloudflare\n// Turnstile bot-check failure for an end-user on a hardened browser / locked\n// network). The customer fills these in; we never show Cloudflare branding\n// to the end-user.\n//\n// `ctaHref` follows the same absolute-URL guard as `backendUrl` so a typo\n// like \"/support\" can't 404 on the host SPA \u2014 must be empty (same-origin)\n// or an absolute http(s):// URL pointing to the customer's existing support\n// path.\nconst fallbackHrefSchema = z.union(\n [\n z\n .string()\n .url('fallback.ctaHref must be an absolute URL')\n .regex(/^https?:\\/\\//, 'fallback.ctaHref must use http or https'),\n z.literal(''),\n ],\n {\n errorMap: () => ({\n message: 'fallback.ctaHref must be either \"\" (same-origin) or an absolute http(s):// URL',\n }),\n }\n);\n\n// `.strict()` so unknown keys are rejected at validation time (matches the\n// emitted JSON Schema's `additionalProperties: false`). Future fields land\n// here intentionally rather than silently slipping through and behaving\n// like feature stubs.\nconst fallbackSchema = z\n .object({\n /** Header shown on the fallback card. Defaults to a generic \"unavailable\" copy. */\n title: z.string().optional(),\n /** Body copy explaining the situation in the customer's voice. */\n message: z.string().optional(),\n /** Label for the call-to-action link. If `ctaHref` is set this should be too. */\n ctaLabel: z.string().optional(),\n /** Target of the CTA link \u2014 typically the customer's existing support path. */\n ctaHref: fallbackHrefSchema.optional(),\n })\n .strict();\n\nexport const configSchema = z.object({\n /** Backend URL for the chat API endpoint. \"\" for same-origin, or an absolute http(s):// URL. */\n backendUrl: backendUrlSchema,\n /** MLflow run ID for experiment tracking */\n mlflowRunId: z.string().optional(),\n /** Greeting message shown when the chat opens */\n greeting: z.string().default('Hi! How can I help?'),\n /** Maximum number of history messages sent to the backend */\n maxHistory: z.number().int().min(1).max(100).default(20),\n /** Quick-reply suggestions shown in the empty state */\n suggestions: z.array(z.string()).optional(),\n /**\n * Per-customer fallback card rendered when chat can't open (Turnstile\n * failure, network error, etc.). The end-user is redirected to the\n * customer's normal support path \u2014 no Cloudflare-branded challenge is\n * ever shown.\n */\n fallback: fallbackSchema.optional(),\n});\n\nexport type ChatbotConfigSchema = z.infer<typeof configSchema>;\n\nexport function validateChatbotConfig(data: unknown) {\n return configSchema.safeParse(data);\n}\n\n// ============================================================================\n// Chat Bar Props (adaptive-chatbot:chat-bar widget)\n// ============================================================================\n\n/**\n * Props schema for the `adaptive-chatbot:chat-bar` widget. This is the\n * headless chat-input shell \u2014 no transport, no message persistence.\n * Customers wire `chat-message-sent` / `chat-interrupt` / `canvas-close`\n * to their own pipeline.\n *\n * All fields are optional: the bar renders an empty trail + send-only\n * placeholder if nothing is passed. Authors who want a stateful chat\n * use `adaptive-chatbot:assistant` instead.\n */\nexport const chatBarPropsSchema = z\n .object({\n placeholder: z\n .string()\n .optional()\n .describe('Input placeholder copy. Defaults to \"Ask, find, or navigate\u2026\".'),\n // `messages` and `inFlight` are runtime state \u2014 included here so\n // authors who pre-seed a conversation (e.g. a demo or guided\n // walkthrough) can declare it. Most production deployments will\n // leave these blank and update them via the mountable's API.\n messages: z\n .array(\n z.object({\n id: z.union([z.number(), z.string()]),\n role: z.enum(['user', 'assistant']),\n text: z.string(),\n })\n )\n .optional(),\n inFlight: z.boolean().optional(),\n forceExpanded: z\n .boolean()\n .optional()\n .describe(\n 'Render the trail + input expanded immediately on mount instead of waiting for the first message. Used on canvases where the chat IS the surface (velvet, dedicated drawer).'\n ),\n backendUrl: z\n .string()\n .optional()\n .describe(\n 'Backend chat endpoint. Empty string + non-undefined enables relative-URL fetches (the host page proxies /api/* to the backend).'\n ),\n greeting: z.string().optional().describe('Greeting line shown above the input on first mount.'),\n fallback: z\n .object({\n title: z.string().optional(),\n message: z.string().optional(),\n ctaLabel: z.string().optional(),\n })\n .passthrough()\n .optional()\n .describe('Per-customer \"chat unavailable\" card shown when the transport gives up.'),\n elementsEnabled: z\n .boolean()\n .optional()\n .describe(\n 'Opt the chat into the LLM-authored UI element pipeline. When true AND uiTemplates is set, the backend exposes mount_element / patch_element / unmount_element tools scoped to the declared templates.'\n ),\n uiTemplates: z\n .record(z.unknown())\n .optional()\n .describe(\n 'Template declarations the LLM can mount via the elements pipeline. Shape mirrors syntrologie_common.sdk.templates.UiTemplatesBlock. Passed verbatim as forwardedProps.uiTemplates to the AG-UI transport.'\n ),\n })\n .strict();\n\nexport type ChatBarProps = z.infer<typeof chatBarPropsSchema>;\n\n// ============================================================================\n// Chips Strip Props (adaptive-chatbot:chips-strip widget)\n// ============================================================================\n\n/**\n * Props schema for the `adaptive-chatbot:chips-strip` widget. Chips\n * follow the compositional-action shape (see SuggestionChipSchema in\n * AdaptiveChipsStrip.ts) \u2014 same pattern as faq:question.\n */\nexport const chipsStripPropsSchema = z\n .object({\n chips: z\n .array(SuggestionChipSchema)\n .default([])\n .describe(\n 'Suggestion chips authored as suggestions:chip compositional actions. Each chip declares an id, a title, and a payload that mounts in the drawer when clicked. Conditional visibility via per-chip triggerWhen.'\n ),\n })\n .strict();\n\nexport type ChipsStripProps = z.infer<typeof chipsStripPropsSchema>;\n\n// ============================================================================\n// Tile Widget Props Export\n// ============================================================================\n\n/**\n * Tile widget definitions for unified JSON Schema generation.\n * Maps widget IDs to their props validation schema so the build script\n * can inject if/then constraints on tile.props.\n */\nexport const tileWidgets = [\n {\n widget: 'adaptive-chatbot:assistant',\n defName: 'chatbotAssistantProps',\n propsSchema: configSchema,\n },\n {\n widget: 'adaptive-chatbot:chat-bar',\n defName: 'chatBarProps',\n propsSchema: chatBarPropsSchema,\n },\n {\n widget: 'adaptive-chatbot:chips-strip',\n defName: 'chipsStripProps',\n propsSchema: chipsStripPropsSchema,\n },\n];\n\n/**\n * Action step schemas \u2014 registered into the unified canvas-config\n * JSON Schema's action-step union so authors (and the tactician LLM)\n * can emit `suggestions:chip` items inside a chips-strip tile's\n * `props.chips` array with full validation.\n *\n * `.innerType()` strips the `.refine()` wrapper (cross-field\n * refinements don't translate to JSON Schema); runtime Zod still\n * enforces them.\n */\nexport const actionStepSchemas = [\n { defName: 'suggestionChip', schema: SuggestionChipSchema.innerType() },\n];\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
package/dist/types.d.ts CHANGED
@@ -1,41 +1,29 @@
1
1
  /**
2
2
  * Adaptive Chatbot - Types
3
- *
4
- * Type definitions for the AI chat assistant adaptive.
5
3
  */
6
- export type MessageRole = 'user' | 'assistant';
7
- export interface ChatMessage {
8
- id: string;
9
- role: MessageRole;
10
- text: string;
11
- timestamp: number;
12
- }
13
- export interface ChatApiRequest {
14
- message: string;
15
- history: Array<{
16
- role: MessageRole;
17
- content: string;
18
- }>;
19
- mlflow_run_id?: string;
20
- current_config?: Record<string, unknown>;
21
- }
22
- export interface ChatApiResponse {
23
- response: string;
24
- success: boolean;
25
- }
26
- export interface ActionBlock {
27
- kind: string;
28
- [key: string]: unknown;
29
- }
30
- export interface ParsedResponse {
31
- displayText: string;
32
- actions: ActionBlock[];
4
+ export interface ChatbotFallback {
5
+ /** Header shown on the fallback card. */
6
+ title?: string;
7
+ /** Body copy explaining the situation. */
8
+ message?: string;
9
+ /** Label for the CTA link. */
10
+ ctaLabel?: string;
11
+ /** Target typically the customer's existing support path. */
12
+ ctaHref?: string;
33
13
  }
34
14
  export interface ChatbotConfig {
35
15
  backendUrl: string;
36
16
  mlflowRunId?: string;
37
17
  greeting?: string;
38
18
  maxHistory?: number;
19
+ suggestions?: string[];
20
+ /**
21
+ * Per-customer fallback card rendered when chat can't open. Endpoint of
22
+ * last resort for users whose browser/network fails the bot check; they
23
+ * see a polite "chat unavailable, contact support at …" instead of a
24
+ * raw Cloudflare challenge.
25
+ */
26
+ fallback?: ChatbotFallback;
39
27
  }
40
28
  export interface ActionHandle {
41
29
  id: string;
@@ -48,14 +36,42 @@ export interface BatchActionHandle {
48
36
  revertAll: () => Promise<void>;
49
37
  isApplied: () => boolean;
50
38
  }
39
+ /**
40
+ * Loose ActionStep shape used by the element handlers (Phase 6c). The
41
+ * handlers build action objects (`{kind: 'core:mountWidget', slot, …}`)
42
+ * and pass them to `actions.applyBatch` — the runtime SDK does the
43
+ * structural validation. We don't want to take a runtime-sdk type
44
+ * dependency here, so duck-type the shape as `Record<string, unknown>`.
45
+ */
46
+ export type ActionStep = Record<string, unknown>;
51
47
  export interface ActionEngine {
52
- apply: (action: unknown) => Promise<ActionHandle>;
53
- applyBatch: (actions: unknown[]) => Promise<BatchActionHandle>;
48
+ apply: (action: ActionStep) => Promise<ActionHandle>;
49
+ applyBatch: (actions: ActionStep[]) => Promise<BatchActionHandle>;
54
50
  }
55
51
  export interface ChatbotWidgetRuntime {
56
52
  actions: ActionEngine;
57
53
  events: {
58
54
  publish: (name: string, props?: Record<string, unknown>) => void;
55
+ /** Optional — runtime's full event bus exposes subscribe; the
56
+ * chatbot uses it to broadcast `element.compositional_append`
57
+ * to container widgets (chips strip, FAQ accordion, nav tips)
58
+ * that opt into LLM-authored item appends. Overloaded to match
59
+ * the runtime SDK's `EventBus.subscribe`: pass `{names:[...]}` to
60
+ * filter (preferred — drops fan-out to a name compare), or a
61
+ * callback to receive every event in the bus.
62
+ */
63
+ subscribe?: {
64
+ (filter: {
65
+ names?: string[];
66
+ }, handler: (event: {
67
+ name: string;
68
+ props?: Record<string, unknown>;
69
+ }) => void): () => void;
70
+ (handler: (event: {
71
+ name: string;
72
+ props?: Record<string, unknown>;
73
+ }) => void): () => void;
74
+ };
59
75
  };
60
76
  }
61
77
  export type { EditorPanelProps } from '@syntrologie/sdk-contracts';
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,WAAW,CAAC;AAE/C,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAMD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAMD,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAMD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,SAAS,EAAE,MAAM,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,SAAS,EAAE,MAAM,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IAClD,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAChE;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE;QACN,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;KAClE,CAAC;CACH;AAMD,YAAY,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,eAAe;IAC9B,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,SAAS,EAAE,MAAM,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,SAAS,EAAE,MAAM,OAAO,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEjD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACrD,UAAU,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACnE;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE;QACN,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;QACjE;;;;;;;WAOG;QACH,SAAS,CAAC,EAAE;YACV,CACE,MAAM,EAAE;gBAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;aAAE,EAC5B,OAAO,EAAE,CAAC,KAAK,EAAE;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;aAAE,KAAK,IAAI,GAC1E,MAAM,IAAI,CAAC;YACd,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;aAAE,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;SAC3F,CAAC;KACH,CAAC;CACH;AAED,YAAY,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@syntrologie/adapt-chatbot",
3
- "version": "2.8.0-canary.31",
3
+ "version": "2.8.0-canary.310",
4
4
  "description": "Adaptive Chatbot - AI chat assistant widget with action execution",
5
5
  "license": "Proprietary",
6
6
  "private": false,
@@ -13,19 +13,46 @@
13
13
  "publishConfig": {
14
14
  "access": "public"
15
15
  },
16
+ "syntrologie": {
17
+ "bundlingMode": "cdn-only"
18
+ },
16
19
  "type": "module",
17
20
  "exports": {
21
+ ".": {
22
+ "types": "./dist/ChatAssistantLit.d.ts",
23
+ "import": "./dist/ChatAssistantLit.js"
24
+ },
18
25
  "./runtime": {
19
26
  "types": "./dist/runtime.d.ts",
20
27
  "import": "./dist/runtime.js"
21
28
  },
29
+ "./runtime-lit": {
30
+ "types": "./src/runtime-lit.ts",
31
+ "import": "./src/runtime-lit.ts"
32
+ },
22
33
  "./schema": {
23
34
  "types": "./dist/schema.d.ts",
24
35
  "import": "./dist/schema.js"
25
36
  },
26
37
  "./editor": {
27
- "types": "./dist/editor.d.ts",
28
- "import": "./dist/editor.js"
38
+ "types": "./dist/editor-lit.d.ts",
39
+ "import": "./dist/editor-lit.js"
40
+ },
41
+ "./editor-lit": {
42
+ "types": "./src/editor-lit.ts",
43
+ "import": "./src/editor-lit.ts"
44
+ },
45
+ "./chat-bar": {
46
+ "types": "./dist/AdaptiveChatBar.d.ts",
47
+ "import": "./dist/AdaptiveChatBar.js"
48
+ },
49
+ "./chat-trail": {
50
+ "types": "./dist/AdaptiveChatTrail.d.ts",
51
+ "import": "./dist/AdaptiveChatTrail.js"
52
+ },
53
+ "./chips-strip": {
54
+ "types": "./dist/AdaptiveChipsStrip.d.ts",
55
+ "import": "./dist/AdaptiveChipsStrip.js"
29
56
  }
30
57
  },
31
58
  "files": [
@@ -37,32 +64,36 @@
37
64
  ],
38
65
  "scripts": {
39
66
  "prepack": "node ../../../scripts/prepare-bundled-deps.mjs",
40
- "build": "tsc",
67
+ "build": "tsc --emitDeclarationOnly && node ../scripts/build-lib.mjs",
41
68
  "typecheck": "tsc --noEmit",
42
69
  "clean": "rm -rf dist",
43
70
  "test": "vitest run",
44
71
  "test:watch": "vitest"
45
72
  },
46
73
  "dependencies": {
47
- "@syntrologie/shared-editor-ui": "*",
48
- "@syntro/design-system": "*"
74
+ "@a2ui/lit": "^0.10.0",
75
+ "@a2ui/web_core": "^0.10.0",
76
+ "@syntrologie/sdk-contracts": "*"
49
77
  },
50
78
  "peerDependencies": {
51
- "react": ">=18.0.0",
52
- "react-dom": ">=18.0.0",
79
+ "lit": "^3.0.0",
53
80
  "zod": "^3.0.0"
54
81
  },
55
82
  "devDependencies": {
56
- "@syntro/design-system": "^1.0.0",
83
+ "@open-wc/testing": "4.0.0",
84
+ "@open-wc/testing-helpers": "3.0.1",
85
+ "@syntro/design-system": "1.0.0",
86
+ "@syntrologie/chat": "*",
57
87
  "@syntrologie/shared-editor-ui": "*",
58
- "@testing-library/react": "^16.3.2",
59
- "@types/react": "^19.2.0",
60
- "@types/react-dom": "^19.2.0",
61
- "jsdom": "^26.1.0",
62
- "react": "^19.2.0",
63
- "react-dom": "^19.2.0",
64
- "typescript": "^5.9.3",
65
- "vitest": "^4.0.18",
66
- "zod": "^3.25.76"
67
- }
88
+ "jsdom": "26.1.0",
89
+ "lit": "3.3.2",
90
+ "typescript": "5.9.3",
91
+ "vitest": "4.0.18",
92
+ "zod": "3.25.76"
93
+ },
94
+ "bundleDependencies": [
95
+ "@syntro/design-system",
96
+ "@syntrologie/chat",
97
+ "@syntrologie/shared-editor-ui"
98
+ ]
68
99
  }
@@ -1,18 +0,0 @@
1
- /**
2
- * Adaptive Chatbot - ChatAssistant Component
3
- *
4
- * Main React component for the AI chat assistant widget.
5
- * Renders a message list with auto-scroll, loading indicator, and input form.
6
- */
7
- import type { ChatbotConfig, ChatbotWidgetRuntime } from './types';
8
- export interface ChatAssistantProps {
9
- config: ChatbotConfig;
10
- runtime: ChatbotWidgetRuntime;
11
- tileId: string;
12
- }
13
- export declare function ChatAssistant({ config, runtime, tileId }: ChatAssistantProps): import("react/jsx-runtime").JSX.Element;
14
- export declare const ChatAssistantMountableWidget: {
15
- mount(container: HTMLElement, mountConfig?: Record<string, unknown>): () => void;
16
- };
17
- export default ChatAssistant;
18
- //# sourceMappingURL=ChatAssistant.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ChatAssistant.d.ts","sourceRoot":"","sources":["../src/ChatAssistant.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAe,MAAM,SAAS,CAAC;AA+GhF,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,oBAAoB,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,aAAa,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,kBAAkB,2CAwE5E;AAMD,eAAO,MAAM,4BAA4B;qBACtB,WAAW,gBAAgB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CA6CpE,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -1,178 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /**
3
- * Adaptive Chatbot - ChatAssistant Component
4
- *
5
- * Main React component for the AI chat assistant widget.
6
- * Renders a message list with auto-scroll, loading indicator, and input form.
7
- */
8
- import { base, purple, red, slateGrey } from '@syntro/design-system/tokens';
9
- import React, { useEffect, useRef } from 'react';
10
- import { createRoot } from 'react-dom/client';
11
- import { useChat } from './useChat';
12
- // ============================================================================
13
- // Styles
14
- // ============================================================================
15
- const styles = {
16
- container: {
17
- display: 'flex',
18
- flexDirection: 'column',
19
- height: '100%',
20
- fontFamily: 'system-ui, -apple-system, sans-serif',
21
- fontSize: '14px',
22
- touchAction: 'none',
23
- },
24
- messageList: {
25
- flex: 1,
26
- overflowY: 'auto',
27
- padding: '12px',
28
- display: 'flex',
29
- flexDirection: 'column',
30
- gap: '8px',
31
- },
32
- messageBubble: {
33
- maxWidth: '85%',
34
- padding: '8px 12px',
35
- borderRadius: '12px',
36
- lineHeight: 1.5,
37
- wordBreak: 'break-word',
38
- },
39
- userMessage: {
40
- alignSelf: 'flex-end',
41
- backgroundColor: purple[4],
42
- color: base.white,
43
- borderBottomRightRadius: '4px',
44
- },
45
- assistantMessage: {
46
- alignSelf: 'flex-start',
47
- backgroundColor: 'rgba(255, 255, 255, 0.08)',
48
- color: slateGrey[10],
49
- borderBottomLeftRadius: '4px',
50
- },
51
- loadingDots: {
52
- alignSelf: 'flex-start',
53
- padding: '8px 16px',
54
- backgroundColor: 'rgba(255, 255, 255, 0.05)',
55
- borderRadius: '12px',
56
- color: slateGrey[8],
57
- fontSize: '13px',
58
- },
59
- errorBanner: {
60
- padding: '8px 12px',
61
- backgroundColor: 'rgba(239, 68, 68, 0.1)',
62
- color: red[4],
63
- fontSize: '13px',
64
- borderRadius: '8px',
65
- margin: '0 12px',
66
- },
67
- inputForm: {
68
- display: 'flex',
69
- gap: '8px',
70
- padding: '12px',
71
- borderTop: '1px solid rgba(255, 255, 255, 0.06)',
72
- },
73
- input: {
74
- flex: 1,
75
- padding: '8px 12px',
76
- borderRadius: '8px',
77
- border: '1px solid rgba(255, 255, 255, 0.1)',
78
- backgroundColor: 'rgba(0, 0, 0, 0.2)',
79
- color: slateGrey[12],
80
- fontSize: '14px',
81
- outline: 'none',
82
- fontFamily: 'inherit',
83
- },
84
- sendButton: {
85
- padding: '8px 16px',
86
- borderRadius: '8px',
87
- border: 'none',
88
- backgroundColor: purple[4],
89
- color: base.white,
90
- fontWeight: 600,
91
- fontSize: '13px',
92
- cursor: 'pointer',
93
- whiteSpace: 'nowrap',
94
- },
95
- sendButtonDisabled: {
96
- opacity: 0.5,
97
- cursor: 'not-allowed',
98
- },
99
- };
100
- // ============================================================================
101
- // MessageBubble Component
102
- // ============================================================================
103
- function MessageBubble({ message }) {
104
- const isUser = message.role === 'user';
105
- const bubbleStyle = {
106
- ...styles.messageBubble,
107
- ...(isUser ? styles.userMessage : styles.assistantMessage),
108
- };
109
- return _jsx("div", { style: bubbleStyle, children: message.text });
110
- }
111
- export function ChatAssistant({ config, runtime, tileId }) {
112
- const { messages, isLoading, error, sendMessage, clearMessages: _clearMessages, } = useChat({
113
- backendUrl: config.backendUrl,
114
- tileId,
115
- runtime,
116
- greeting: config.greeting,
117
- maxHistory: config.maxHistory,
118
- mlflowRunId: config.mlflowRunId,
119
- });
120
- const messageListRef = useRef(null);
121
- const inputRef = useRef(null);
122
- // Auto-scroll to bottom on new messages
123
- useEffect(() => {
124
- if (messageListRef.current) {
125
- messageListRef.current.scrollTop = messageListRef.current.scrollHeight;
126
- }
127
- }, []);
128
- const handleSubmit = (e) => {
129
- e.preventDefault();
130
- const input = inputRef.current;
131
- if (!input || !input.value.trim() || isLoading)
132
- return;
133
- const text = input.value;
134
- input.value = '';
135
- sendMessage(text);
136
- };
137
- return (_jsxs("div", { style: styles.container, "data-testid": "chat-assistant", children: [_jsxs("div", { ref: messageListRef, style: styles.messageList, children: [messages.map((msg) => (_jsx(MessageBubble, { message: msg }, msg.id))), isLoading && _jsx("div", { style: styles.loadingDots, children: "Thinking..." })] }), error && _jsx("div", { style: styles.errorBanner, children: error }), _jsxs("form", { onSubmit: handleSubmit, style: styles.inputForm, children: [_jsx("input", { ref: inputRef, style: styles.input, placeholder: "Ask anything...", disabled: isLoading, "data-testid": "chat-input" }), _jsx("button", { type: "submit", disabled: isLoading, style: {
138
- ...styles.sendButton,
139
- ...(isLoading ? styles.sendButtonDisabled : {}),
140
- }, "data-testid": "chat-send", children: "Send" })] })] }));
141
- }
142
- // ============================================================================
143
- // Mountable Widget Interface
144
- // ============================================================================
145
- export const ChatAssistantMountableWidget = {
146
- mount(container, mountConfig) {
147
- const { config, runtime, tileId = 'chatbot-widget', } = (mountConfig || {});
148
- // React rendering when config + runtime + ReactDOM are available
149
- if (config && runtime && typeof createRoot === 'function') {
150
- const root = createRoot(container);
151
- root.render(React.createElement(ChatAssistant, {
152
- config,
153
- runtime,
154
- tileId,
155
- }));
156
- return () => {
157
- root.unmount();
158
- };
159
- }
160
- if (!config || !runtime) {
161
- container.innerHTML = `<div style="padding: 16px; color: ${slateGrey[8]};">Chat widget requires config and runtime.</div>`;
162
- return () => {
163
- container.innerHTML = '';
164
- };
165
- }
166
- // HTML fallback
167
- container.innerHTML = `
168
- <div style="padding: 16px; font-family: system-ui; color: ${slateGrey[10]};">
169
- <p style="margin: 0 0 8px; color: ${slateGrey[8]};">${config.greeting || 'Hi! How can I help?'}</p>
170
- <p style="margin: 0; font-size: 12px; color: ${slateGrey[7]};">Chat widget mounted. Awaiting React renderer.</p>
171
- </div>
172
- `;
173
- return () => {
174
- container.innerHTML = '';
175
- };
176
- },
177
- };
178
- export default ChatAssistant;