@lowdefy/docs-content 0.0.0-experimental-20260928120643 → 6.1.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 (226) hide show
  1. package/README.md +0 -1
  2. package/content/actions/link.md +0 -17
  3. package/content/actions/login.md +5 -23
  4. package/content/actions/logout.md +5 -5
  5. package/content/actions/pdfmake.md +2 -2
  6. package/content/actions/setdarkmode.md +2 -2
  7. package/content/agents/agent-properties.md +2 -4
  8. package/content/agents/agentchat.md +6 -21
  9. package/content/agents/agentconversations.md +2 -2
  10. package/content/concepts/ai-agent-docs.md +101 -313
  11. package/content/concepts/cli.md +3 -34
  12. package/content/concepts/connections-and-requests.md +0 -402
  13. package/content/concepts/custom-html.md +0 -40
  14. package/content/concepts/custom-styling.md +5 -50
  15. package/content/concepts/events-and-actions.md +2 -64
  16. package/content/concepts/i18n.md +2 -7
  17. package/content/concepts/keyboard-shortcuts.md +2 -2
  18. package/content/concepts/layout-overview.md +1 -1
  19. package/content/concepts/logger.md +0 -81
  20. package/content/concepts/lowdefy-schema.md +1 -4
  21. package/content/concepts/menus.md +7 -7
  22. package/content/concepts/module-authoring.md +2 -2
  23. package/content/connections/anthropic.md +2 -162
  24. package/content/connections/awss3.md +0 -54
  25. package/content/connections/google.md +2 -162
  26. package/content/connections/mongodb.md +3 -121
  27. package/content/connections/openai-connection.md +2 -162
  28. package/content/container-blocks/affix.md +7 -47
  29. package/content/container-blocks/alert.md +24 -76
  30. package/content/container-blocks/badge.md +24 -100
  31. package/content/container-blocks/box.md +9 -9
  32. package/content/container-blocks/card.md +25 -80
  33. package/content/container-blocks/carousel.md +7 -60
  34. package/content/container-blocks/collapse.md +9 -87
  35. package/content/container-blocks/configprovider.md +13 -35
  36. package/content/container-blocks/confirmmodal.md +23 -69
  37. package/content/container-blocks/content.md +98 -62
  38. package/content/container-blocks/descriptions.md +4 -45
  39. package/content/container-blocks/drawer.md +28 -92
  40. package/content/container-blocks/dropdownmenu.md +31 -119
  41. package/content/container-blocks/flex.md +62 -40
  42. package/content/container-blocks/footer.md +11 -15
  43. package/content/container-blocks/googlemapsheatmap.md +1 -1
  44. package/content/container-blocks/googlemapsscript.md +2 -2
  45. package/content/container-blocks/header.md +36 -71
  46. package/content/container-blocks/label.md +7 -34
  47. package/content/container-blocks/layout.md +34 -52
  48. package/content/container-blocks/masonry.md +71 -17
  49. package/content/container-blocks/mobilemenu.md +88 -131
  50. package/content/container-blocks/modal.md +26 -114
  51. package/content/container-blocks/pageheadermenu.md +31 -81
  52. package/content/container-blocks/pagesidebarlayout.md +26 -169
  53. package/content/container-blocks/pagesidermenu.md +42 -95
  54. package/content/container-blocks/popover.md +31 -34
  55. package/content/container-blocks/result.md +21 -32
  56. package/content/container-blocks/sider.md +122 -85
  57. package/content/container-blocks/span.md +7 -7
  58. package/content/container-blocks/spinner.md +3 -3
  59. package/content/container-blocks/splitter.md +68 -150
  60. package/content/container-blocks/tabs.md +12 -64
  61. package/content/container-blocks/tooltip.md +46 -22
  62. package/content/container-blocks/watermark.md +4 -22
  63. package/content/controls/reject.md +2 -4
  64. package/content/controls/throw.md +0 -1
  65. package/content/controls/try.md +2 -3
  66. package/content/deployment/deployment-environments.md +6 -8
  67. package/content/deployment/docker.md +7 -22
  68. package/content/deployment/node-server.md +0 -4
  69. package/content/deployment/vercel.md +6 -13
  70. package/content/display-blocks/aggrid.md +11 -26
  71. package/content/display-blocks/anchor.md +15 -15
  72. package/content/display-blocks/avatar.md +37 -57
  73. package/content/display-blocks/breadcrumb.md +21 -70
  74. package/content/display-blocks/button.md +18 -92
  75. package/content/display-blocks/calendar.md +0 -12
  76. package/content/display-blocks/dangeroushtml.md +1 -1
  77. package/content/display-blocks/difflist.md +1 -1
  78. package/content/display-blocks/difftimeline.md +1 -1
  79. package/content/display-blocks/divider.md +3 -64
  80. package/content/display-blocks/dropdownbutton.md +28 -79
  81. package/content/display-blocks/echart.md +1 -35
  82. package/content/display-blocks/floatbutton.md +42 -129
  83. package/content/display-blocks/html.md +1 -61
  84. package/content/display-blocks/icon.md +67 -250
  85. package/content/display-blocks/menu.md +73 -145
  86. package/content/display-blocks/message.md +124 -38
  87. package/content/display-blocks/notification.md +222 -94
  88. package/content/display-blocks/paragraph.md +9 -59
  89. package/content/display-blocks/progress.md +17 -96
  90. package/content/display-blocks/qrcode.md +4 -19
  91. package/content/display-blocks/s3download.md +1 -1
  92. package/content/display-blocks/search.md +7 -17
  93. package/content/display-blocks/skeletonbutton.md +0 -1
  94. package/content/display-blocks/skeletoninput.md +0 -1
  95. package/content/display-blocks/statistic.md +17 -75
  96. package/content/display-blocks/steps.md +25 -58
  97. package/content/display-blocks/tag.md +17 -102
  98. package/content/display-blocks/title.md +11 -50
  99. package/content/display-blocks/tour.md +23 -33
  100. package/content/input-blocks/autocomplete.md +9 -81
  101. package/content/input-blocks/buttonselector.md +8 -45
  102. package/content/input-blocks/checkboxselector.md +7 -97
  103. package/content/input-blocks/checkboxswitch.md +3 -33
  104. package/content/input-blocks/colorselector.md +14 -63
  105. package/content/input-blocks/daterangeselector.md +45 -165
  106. package/content/input-blocks/dateselector.md +41 -139
  107. package/content/input-blocks/datetimeselector.md +49 -158
  108. package/content/input-blocks/inputgallery.md +3 -3
  109. package/content/input-blocks/monthselector.md +52 -120
  110. package/content/input-blocks/multipleselector.md +39 -150
  111. package/content/input-blocks/numberinput.md +12 -98
  112. package/content/input-blocks/pagination.md +14 -70
  113. package/content/input-blocks/paragraphinput.md +37 -51
  114. package/content/input-blocks/passwordinput.md +6 -60
  115. package/content/input-blocks/phonenumberinput.md +26 -59
  116. package/content/input-blocks/radioselector.md +7 -83
  117. package/content/input-blocks/ratingslider.md +26 -57
  118. package/content/input-blocks/s3uploadbutton.md +24 -24
  119. package/content/input-blocks/s3uploaddragger.md +3 -3
  120. package/content/input-blocks/s3uploadphoto.md +5 -5
  121. package/content/input-blocks/segmentedselector.md +32 -72
  122. package/content/input-blocks/selector.md +21 -109
  123. package/content/input-blocks/switch.md +17 -65
  124. package/content/input-blocks/textarea.md +3 -32
  125. package/content/input-blocks/textinput.md +28 -69
  126. package/content/input-blocks/tiptapmentioninput.md +1 -1
  127. package/content/input-blocks/titleinput.md +12 -39
  128. package/content/input-blocks/treeinput.md +25 -49
  129. package/content/input-blocks/treemultipleselector.md +10 -127
  130. package/content/input-blocks/treeselector.md +9 -97
  131. package/content/input-blocks/upload.md +15 -64
  132. package/content/input-blocks/uploaddragger.md +1 -17
  133. package/content/input-blocks/uploadphoto.md +1 -18
  134. package/content/input-blocks/weekselector.md +55 -120
  135. package/content/list-blocks/controlledlist.md +15 -24
  136. package/content/list-blocks/list.md +11 -11
  137. package/content/list-blocks/masonrylist.md +34 -7
  138. package/content/migration/upgrade-guide.md +0 -1
  139. package/content/operators/_app.md +1 -2
  140. package/content/operators/_error.md +1 -23
  141. package/content/operators/_get.md +6 -6
  142. package/content/operators/_operator.md +3 -17
  143. package/content/operators/_ref.md +0 -258
  144. package/content/operators/_type.md +3 -14
  145. package/content/operators/_user.md +3 -3
  146. package/content/other/introduction.md +1 -1
  147. package/content/plugins/plugins-dev.md +0 -66
  148. package/content/plugins/plugins-introduction.md +1 -27
  149. package/content/testing/e2e-configuration.md +1 -8
  150. package/content/testing/e2e-getting-started.md +1 -1
  151. package/content/testing/e2e-introduction.md +1 -1
  152. package/content/tutorial/tutorial-actions-operators.md +2 -2
  153. package/content/tutorial/tutorial-add-blocks.md +2 -2
  154. package/content/tutorial/tutorial-create-page.md +2 -48
  155. package/content/tutorial/tutorial-display-data-page.md +3 -3
  156. package/content/tutorial/tutorial-requests-sql.md +0 -153
  157. package/content/tutorial/tutorial-start.md +1 -66
  158. package/content/user-authentication/login-and-logout.md +8 -158
  159. package/content/user-authentication/users-introduction.md +0 -8
  160. package/index.json +2 -6065
  161. package/package.json +1 -7
  162. package/scripts/extractAgentDocs.js +4 -36
  163. package/content/actions/emailotpsend.md +0 -58
  164. package/content/actions/emailotpverify.md +0 -77
  165. package/content/actions/getlocalstorage.md +0 -41
  166. package/content/actions/magiclinkverify.md +0 -113
  167. package/content/actions/posthogalias.md +0 -29
  168. package/content/actions/posthogcapture.md +0 -49
  169. package/content/actions/posthogcapturepageleave.md +0 -38
  170. package/content/actions/posthogfeatureflag.md +0 -50
  171. package/content/actions/posthoggroup.md +0 -37
  172. package/content/actions/posthogidentify.md +0 -54
  173. package/content/actions/posthoginit.md +0 -66
  174. package/content/actions/posthogoptin.md +0 -29
  175. package/content/actions/posthogoptout.md +0 -29
  176. package/content/actions/posthogpageview.md +0 -37
  177. package/content/actions/posthogreloadfeatureflags.md +0 -47
  178. package/content/actions/posthogreset.md +0 -28
  179. package/content/actions/posthogsetpersonproperties.md +0 -36
  180. package/content/actions/removelocalstorage.md +0 -26
  181. package/content/actions/setlocalstorage.md +0 -32
  182. package/content/adapter-reference/mongodbauthadapter.md +0 -46
  183. package/content/agents/agents-introduction.md +0 -107
  184. package/content/callback-reference/auth0logoutcallback.md +0 -54
  185. package/content/concepts/blocks.md +0 -150
  186. package/content/concepts/dynamic-page-content.md +0 -304
  187. package/content/concepts/html-attributes.md +0 -285
  188. package/content/concepts/lowdefy-api.md +0 -1110
  189. package/content/concepts/notifications.md +0 -155
  190. package/content/concepts/page-and-app-state.md +0 -244
  191. package/content/concepts/theming.md +0 -582
  192. package/content/connections/aigateway.md +0 -368
  193. package/content/connections/axioshttp.md +0 -181
  194. package/content/controls/while.md +0 -46
  195. package/content/display-blocks/clickablehtml.md +0 -239
  196. package/content/display-blocks/eventlog.md +0 -363
  197. package/content/display-blocks/pollingtimer.md +0 -263
  198. package/content/input-blocks/captcha.md +0 -40
  199. package/content/input-blocks/placesautocomplete.md +0 -319
  200. package/content/input-blocks/tagmultipleselector.md +0 -114
  201. package/content/input-blocks/tagselector.md +0 -114
  202. package/content/migration/auth-upgrade.md +0 -327
  203. package/content/migration/v3-to-v4.md +0 -417
  204. package/content/migration/v6-to-v7.md +0 -222
  205. package/content/operators/_cron.md +0 -292
  206. package/content/other/mongodbadapter.md +0 -3
  207. package/content/plugins/plugins-icon-sets.md +0 -267
  208. package/content/plugins/posthog.md +0 -275
  209. package/content/provider-reference/auth-js-providers.md +0 -107
  210. package/content/provider-reference/openidconnectprovider.md +0 -44
  211. package/content/testing/config-tests.md +0 -278
  212. package/content/tutorial/tutorial-requests-api.md +0 -155
  213. package/content/user-authentication/auth-configuration.md +0 -266
  214. package/content/user-authentication/auth-steps.md +0 -138
  215. package/content/user-authentication/mcp-oauth.md +0 -292
  216. package/content/user-authentication/organizations.md +0 -221
  217. package/content/user-authentication/protected-pages-apis.md +0 -97
  218. package/content/user-authentication/roles.md +0 -49
  219. package/content/user-authentication/two-factor.md +0 -229
  220. package/content/user-authentication/user-object.md +0 -58
  221. package/content/websockets/websocket-publish.md +0 -108
  222. package/content/websockets/websocket-subscriptions.md +0 -100
  223. package/content/websockets/websockets-introduction.md +0 -97
  224. package/hazards.json +0 -44
  225. package/scripts/hashDocSources.js +0 -38
  226. package/scripts/recordSourceHashes.js +0 -88
package/README.md CHANGED
@@ -6,7 +6,6 @@ Lowdefy documentation extracted as markdown, for serving to AI coding agents via
6
6
 
7
7
  - `content/<section>/<slug>.md` — one markdown file per docs page (concepts, tutorial, operators, actions, connections, blocks, ...).
8
8
  - `index.json` — manifest of all docs: `{ version, docs: [{ slug, title, section, path, kind?, typeName? }] }`. `kind`/`typeName` map a plugin type (e.g. operator `_get`) to its doc.
9
- - `hazards.json` — framework-level hazards served by the dev MCP alongside schemas, docs and config lookups: `[{ id, appliesTo: { kinds?, types?, when? }, message, see }]`. This file is hand-authored and committed, not generated — `pnpm docs:content` wipes `content/` but leaves it untouched. Add an entry only for a behaviour verified in the framework source.
10
9
 
11
10
  ## Regenerating content
12
11
 
@@ -9,8 +9,6 @@
9
9
  input?: object,
10
10
  newTab?:boolean,
11
11
  pageId?: string,
12
- replace?: boolean,
13
- scroll?: boolean,
14
12
  url?: string,
15
13
  urlQuery? object
16
14
  }): void
@@ -32,8 +30,6 @@ The pageId of a page in the app to link to.
32
30
  - `input: object`: Object to set as the input for the linked page.
33
31
  - `newTab: boolean`: Open the link in a new tab.
34
32
  - `pageId: string`: The pageId of a page in the app to link to.
35
- - `replace: boolean`: Replace the current browser history entry instead of pushing a new one, so the browser back button skips this navigation. Defaults to `false`.
36
- - `scroll: boolean`: Scroll to the top of the page after navigating. Set to `false` to keep the current scroll position, for example when a same-page link only updates the `urlQuery`. Defaults to `true`.
37
33
  - `url: string`: Link to an external url.
38
34
  - `urlQuery: object`: Object to set as the urlQuery for the linked page.
39
35
 
@@ -109,19 +105,6 @@ The pageId of a page in the app to link to.
109
105
  _args: row.id
110
106
  ```
111
107
 
112
- ###### Reflect state into the urlQuery without moving the page:
113
- ```yaml
114
- - id: sync_url
115
- type: Link
116
- params:
117
- pageId: my_page_id
118
- urlQuery:
119
- selected:
120
- _state: selected_id
121
- replace: true
122
- scroll: false
123
- ```
124
-
125
108
  ###### Go to the previous page:
126
109
  ```yaml
127
110
  - id: link_back
@@ -10,7 +10,7 @@
10
10
  pageId?: string
11
11
  url?: string
12
12
  urlQuery?: object
13
- } | false
13
+ }
14
14
  providerId?: string,
15
15
  }): void
16
16
  ```
@@ -19,46 +19,28 @@ The `Login` action is used to start the user login flow. If only one provider is
19
19
 
20
20
  The authorization url usually hosts a page where the user can input their credentials. After the user has logged in successfully, the user is redirected to the `api/auth/callback/[provider_id]` route in the Lowdefy app, where the rest of the authorization code flow is completed.
21
21
 
22
- The `callbackUrl` parameter of the Login action specifies where the user lands after login is complete. Three sources are consulted, in order:
23
-
24
- 1. The `callbackUrl` param, if given.
25
- 2. The `?callbackUrl=` query parameter, which Lowdefy sets when it redirects an unauthenticated user to the sign-in page - so a user who was bounced there returns to the page they asked for.
26
- 3. The app's home page.
27
-
28
- If none of the three resolves - an app with no `homePageId` whose menu offers the signed-out user no page to fall back on - the action throws rather than staying silently on the sign-in page.
29
-
30
- To sign in without navigating at all, set `callbackUrl: false`. This is for a login form in a modal or an embedded panel, where the session store re-renders the page with the new user in place. It is not valid for magic-link or social/OAuth sign-in, which redirect through a hop Lowdefy does not control.
31
-
32
- A sign-in the auth server rejects - a wrong password, an expired or already-used link, an invalid code - is an expected outcome, not an app error. The action throws a `UserError`: `catch` actions on the event still run and the error message still displays, but it is logged to the browser console only and is never reported to the server. The auth server's response is available to `catch` actions as `_actions.<actionId>.error.metaData`, with a `code` (for example `INVALID_EMAIL_OR_PASSWORD`) and the HTTP `status`. A network failure or a server fault is still thrown as an action error and reported.
22
+ The `callbackUrl` parameters of the Login action specify where the user is redirected after login is complete. If `callbackUrl` parameters not set, the user will return to the page from which the action was called.
33
23
 
34
24
  #### Parameters
35
25
 
36
26
  ###### object
37
27
  - `authUrl: object`:
38
28
  - `urlQuery: object`: Query parameters to set for the authorization URL.
39
- - `callbackUrl: object | false`: Set to `false` to sign in without navigating. As an object:
29
+ - `callbackUrl: object`:
40
30
  - `home: boolean`: Redirect to the home page after the login flow is complete.
41
31
  - `pageId: string`: The pageId of the page to redirect to after the login flow is complete.
42
- - `url: string`: The URL to redirect to after the login flow is complete. An absolute URL is not `basePath`-prefixed, so it can be an external landing page.
32
+ - `url: string`: The URL to redirect to after the login flow is complete.
43
33
  - `urlQuery: object`: The urlQuery to set for the page the user is redirected to after login.
44
34
  - `providerId: string`: The ID of the provider that should be used for login. If not set and only one provider is configured the configured provider will be used. Else the user will be redirected to a sign in page where they can choose a provider.
45
35
 
46
36
  #### Examples
47
37
 
48
- ###### Login and land on the home page (or the page the user was bounced from):
38
+ ###### Login and return to the same page:
49
39
  ```yaml
50
40
  - id: login
51
41
  type: Login
52
42
  ```
53
43
 
54
- ###### Login in a modal, without navigating:
55
- ```yaml
56
- - id: login
57
- type: Login
58
- params:
59
- callbackUrl: false
60
- ```
61
-
62
44
  ###### Login with the google provider:
63
45
  ```yaml
64
46
  - id: login_with_google
@@ -14,16 +14,16 @@
14
14
 
15
15
  When the `Logout` action is called, the user data and authorization cookies are cleared by the app.
16
16
 
17
- The `callbackUrl` parameter of the Logout action specifies where the user lands after logout is complete. Unlike the `Login` action it has no default and does not read the `?callbackUrl=` query: with no `callbackUrl` the page is reloaded and the server re-applies the page's auth rules, which sends a signed-out user off a protected page to the sign-in page. Defaulting to the home page instead could land them on a page they may no longer see.
17
+ The `callbackUrl` parameters of the Logout action specify where the user is redirected after logout is complete. If `callbackUrl` parameters not set, the user will return to the page from which the action was called.
18
18
 
19
19
  #### Parameters
20
20
 
21
21
  ###### object
22
22
  - `callbackUrl: object`:
23
- - `home: boolean`: Redirect to the home page after the logout flow is complete.
24
- - `pageId: string`: The pageId of the page to redirect to after the logout flow is complete.
25
- - `url: string`: The URL to redirect to after the logout flow is complete. An absolute URL is not `basePath`-prefixed, so it can be an external logout landing page.
26
- - `urlQuery: object`: The urlQuery to set for the page the user is redirected to after logout.
23
+ - `home: boolean`: Redirect to the home page after the login flow is complete.
24
+ - `pageId: string`: The pageId of the page to redirect to after the login flow is complete.
25
+ - `url: string`: The URL to redirect to after the login flow is complete.
26
+ - `urlQuery: object`: The urlQuery to set for the page the user is redirected to after login.
27
27
  - `redirect: boolean`: If set to `false` the user session will be cleared, but the page will not be reloaded.
28
28
 
29
29
  #### Examples
@@ -28,7 +28,7 @@ The `PdfMake` action is used to generate and download a PDF file from a set of d
28
28
  type: Button
29
29
  properties:
30
30
  title: Download PDF
31
- icon: download
31
+ icon: AiOutlineDownload
32
32
  events:
33
33
  onClick:
34
34
  - id: make_pdf
@@ -53,7 +53,7 @@ The `PdfMake` action is used to generate and download a PDF file from a set of d
53
53
  textAlign: center
54
54
  properties:
55
55
  title: Generate & Download PDF
56
- icon: download
56
+ icon: AiOutlineDownload
57
57
  color: '#6293F8'
58
58
  events:
59
59
  onMount:
@@ -33,8 +33,8 @@ The preference is persisted to `localStorage` and triggers re-rendering of the r
33
33
  _if:
34
34
  test:
35
35
  _media: darkMode
36
- then: Sun
37
- else: Moon
36
+ then: AiOutlineSun
37
+ else: AiOutlineMoon
38
38
  events:
39
39
  onClick:
40
40
  - id: toggle
@@ -22,7 +22,7 @@ properties:
22
22
 
23
23
  ## Generation Settings
24
24
 
25
- - `maxOutputTokens: integer`: Maximum tokens the model can generate per step. Defaults to the connection's `maxOutputTokens`.
25
+ - `maxOutputTokens: integer`: Maximum tokens the model can generate per step.
26
26
  - `temperature: number`: Sampling temperature between `0` and `2`. Lower values are more deterministic, higher values more creative. Default depends on the provider.
27
27
  - `topP: number`: Nucleus sampling probability between `0` and `1`. Alternative to temperature — use one or the other.
28
28
  - `topK: integer`: Only sample from the top K token options (not supported by all providers).
@@ -156,15 +156,13 @@ properties:
156
156
  ## Timeouts and Retries
157
157
 
158
158
  - `maxRetries: integer`: Default: `2` - Maximum retries on provider errors. Set to `0` to disable.
159
- - `timeout: number | object`: Timeout configuration. Defaults to the connection's `timeout`.
159
+ - `timeout: number | object`: Timeout configuration.
160
160
  - As a number: total timeout in milliseconds.
161
161
  - As an object with granular control:
162
162
  - `totalMs: number`: Total timeout across all steps.
163
163
  - `stepMs: number`: Timeout per step.
164
164
  - `chunkMs: number`: Timeout between stream chunks.
165
165
 
166
- A chat turn keeps running when the client disconnects, so its `onFinish` hooks still save the whole conversation; `timeout` and `maxSteps` are what bound it. A `CallAgent` step is cancelled with the routine that runs it: when its request closes or the server's request timeout (`config.requestTimeout`) answers first.
167
-
168
166
  ## Provider-Specific Properties
169
167
 
170
168
  - `providerOptions: object`: Pass provider-specific options directly to the AI SDK. Use this for options not covered by the properties above.
@@ -66,9 +66,9 @@ The `AgentChat` block renders a streaming AI chat interface. It connects to a [L
66
66
  | Property | Type | Default | Description |
67
67
  | --- | --- | --- | --- |
68
68
  | `agentId` | string | | __Required__ - The `id` of the agent to connect to. |
69
- | `conversationId` | string | | Active conversation ID. When this changes, messages are cleared. If left empty, the block auto-mints a stable id for the session and surfaces it via `onConversationStart`, so every turn posts a consistent id. App-supplied ids are always authoritative. |
70
- | `messages` | array | | Load messages externally. `undefined` = no sync, `null` = clear, array = load. |
71
- | `feedbackValues` | object | | Ratings already recorded for messages in this conversation, keyed by message id, each `like` or `dislike`. The block does not persist a rating, so without this a reload or a conversation switch shows every message unrated even where your app stored it. A rating clicked this visit takes precedence, so the thumb still responds immediately and a rating the user has just withdrawn is not re-lit by a stale value. |
69
+ | `conversationId` | string | | Active conversation ID. When this changes, any in-flight reply is aborted (so it stops emitting `onDataPart` and tool events into the page) and messages are cleared. If left empty, the block auto-mints a stable id for the session and surfaces it via `onConversationStart`, so every turn posts a consistent id. App-supplied ids are always authoritative. |
70
+ | `messages` | array | | Load messages externally. `undefined` = no sync, `null` = clear, array = load. Re-synced whenever the array's length, last message id or `conversationId` changes. |
71
+ | `loading` | boolean | `false` | The app is still loading this conversation's transcript (for example, reading it from a database after a conversation switch). While `true`, a skeleton replaces the message area, suggestions are hidden and the composer is disabled, so nothing can be sent into a conversation whose messages have not synced yet. Drive it from state alongside `messages`, for the window before the transcript has synced — not while a reply is streaming, since a disabled composer also hides the stop control. |
72
72
  | `urlQuery` | object | | Query parameters sent with each request. Available server-side via `_payload`. |
73
73
  | `sharedState` | object | | Two-way bridge between page state and the agent. See [Shared State](#shared-state). |
74
74
  | `height` | string | `'calc(100dvh - 170px)'` | CSS height of the chat container. Only applies when `display` is `'inline'`. |
@@ -195,8 +195,6 @@ Customize message appearance by role:
195
195
  - `avatar: string`: Avatar image URL.
196
196
  - `variant: string`: `'filled'`, `'outlined'`, `'shadow'`, or `'borderless'`.
197
197
  - `shape: string`: `'default'`, `'round'`, or `'corner'`.
198
- - `styles: object`: Inline styles per bubble part — `root`, `content`, `body`, `header`, `footer`, `avatar`, `extra`. This is how to recolour a bubble: the `filled` background and the `outlined` border come from the theme's `colorPrimary`, and a page stylesheet cannot override them.
199
- - `classNames: object`: Class names per bubble part, same keys as `styles`.
200
198
  - `user: object`: Same properties as `assistant`.
201
199
 
202
200
  ```yaml
@@ -218,8 +216,6 @@ messageDisplay:
218
216
  - `placeholder: string`: Default: `'Type a message...'` — Input placeholder. When `config.i18n` is configured, falls back to the localized `agent.sender.placeholder` builtin key. See the [i18n concept page](/i18n) for the full list of localizable agent UI keys (tool approval buttons, message actions, tool-result captions, etc.).
219
217
  - `submitType: string`: Default: `'enter'` - Submit key. `'enter'` or `'shiftEnter'`.
220
218
  - `allowSpeech: boolean`: Default: `false` - Enable speech input.
221
- - `styles: object`: Inline styles per composer part — `root`, `prefix`, `input`, `suffix`, `footer`, `switch`, `content`. This is how to recolour the composer border, which the theme sets and a page stylesheet cannot override.
222
- - `classNames: object`: Class names per composer part, same keys as `styles`.
223
219
 
224
220
  #### File Attachments
225
221
 
@@ -257,7 +253,7 @@ sender:
257
253
  switches:
258
254
  - key: deep_research
259
255
  label: Deep Research
260
- icon: search
256
+ icon: AiOutlineSearch
261
257
  default: false
262
258
  - key: use_knowledge_base
263
259
  label: Use Knowledge Base
@@ -331,7 +327,7 @@ With the curated form above, the agent can read `legal_name` and `registration_n
331
327
  | `onToolResult` | A tool returns a result. | `toolName`, `toolCallId`, `output`, `error` |
332
328
  | `onError` | A streaming error occurs. | `message` |
333
329
  | `onStop` | User stops generation. | `messages` |
334
- | `onFeedback` | User clicks thumbs up/down. `rating` is `like` or `dislike`, or `default` when the user clicks the selected thumb again to clear the rating — branch on it explicitly rather than treating anything that is not `like` as a dislike. | `messageId`, `messageContent`, `rating` |
330
+ | `onFeedback` | User clicks thumbs up/down. | `messageId`, `messageContent`, `rating` |
335
331
  | `onRegenerate` | User clicks regenerate. | `messageId`, `messages` |
336
332
  | `onDeleteMessage` | User deletes a message. | `messageId`, `content`, `messages` |
337
333
  | `onEditMessage` | User edits and resubmits. | `messageId`, `originalContent`, `newContent`, `messages` |
@@ -339,7 +335,6 @@ With the curated form above, the agent can read `legal_name` and `registration_n
339
335
  | `onSwitchChange` | User toggles a sender switch. | `key`, `checked` |
340
336
  | `onTitleGenerated` | A `data-chat-title` data part arrives — emitted automatically when the agent's [`generateTitle`](/agent-properties) property is set, or manually from an `onFinish` hook. | `title` |
341
337
  | `onDataPart` | Any data part arrives from the server. | `type`, `data`, `id` |
342
- | `onLinkClick` | User clicks a link in a message. Wiring this event suppresses the default navigation for plain left clicks, so the app can open the target in place; modified clicks (new tab, middle click) always navigate. | `href`, `text` |
343
338
 
344
339
  ###### Validate messages before sending:
345
340
  ```yaml
@@ -371,16 +366,6 @@ events:
371
366
  type: success
372
367
  ```
373
368
 
374
- Saving is only half of it — the block does not persist a rating, so a
375
- reload or a conversation switch shows the message unrated again. Pass
376
- what you stored back through `feedbackValues`, keyed by message id:
377
-
378
- ```yaml
379
- properties:
380
- feedbackValues:
381
- _request: saved_feedback_for_conversation
382
- ```
383
-
384
369
  ###### Adapt behavior based on sender switches:
385
370
  ```yaml
386
371
  events:
@@ -448,7 +433,7 @@ Control the chat programmatically using [`CallMethod`](/CallMethod):
448
433
  type: Button
449
434
  properties:
450
435
  title: New Chat
451
- icon: add
436
+ icon: AiOutlinePlus
452
437
  events:
453
438
  onClick:
454
439
  - id: new_id
@@ -25,13 +25,13 @@ The block does not manage data — you load conversations from your database and
25
25
  _state: activeConversationId
26
26
  creation:
27
27
  label: New Chat
28
- icon: add
28
+ icon: AiOutlinePlus
29
29
  menu:
30
30
  - key: rename
31
31
  label: Rename
32
32
  - key: delete
33
33
  label: Delete
34
- icon: delete
34
+ icon: AiOutlineDelete
35
35
  danger: true
36
36
  groupable:
37
37
  collapsible: true