@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
@@ -1,66 +0,0 @@
1
- # PostHogInit
2
-
3
- ```
4
- (params: {
5
- apiKey?: string,
6
- apiHost?: string,
7
- options?: object,
8
- debug?: boolean,
9
- enabled?: boolean,
10
- }): Promise<null>
11
- ```
12
-
13
- The `PostHogInit` action downloads and initialises the [PostHog](https://posthog.com) `posthog-js` browser SDK. Every other PostHog action does nothing until it has run, so run it from the `onInit` event of every page, sharing the actions between pages with `_ref`.
14
-
15
- `PostHogInit` is idempotent: the first call loads PostHog, and later calls with the same `apiKey` do nothing. Calling it with a different `apiKey` throws, because a second PostHog instance would split the session. With `enabled: false`, `posthog-js` is never downloaded and every other PostHog action becomes a silent no-op. A later call with `enabled: true` still loads PostHog; a call with `enabled: false` after PostHog was loaded throws.
16
-
17
- Every event carries the deployment environment: when the app declares [`config.environments`](/lowdefy-schema), `PostHogInit` registers the current environment's name (`LOWDEFY_ENVIRONMENT`) as the `environment` super property, so staging and production events can be told apart in one PostHog project.
18
-
19
- An environment with `posthog: { enabled: false }` in `config.environments` switches PostHog off there: `PostHogInit` behaves as `enabled: false` whatever its params say, needs no `apiKey`, and every other PostHog action is a no-op.
20
-
21
- If `posthog-js` fails to download, for example on a flaky network, a warning is logged to the browser console and the other PostHog actions do nothing.
22
-
23
- The action is part of the [`@lowdefy/plugin-posthog`](/PostHog) plugin, which is included by default. See the [PostHog guide](/PostHog) for how the actions fit together.
24
-
25
- #### Parameters
26
-
27
- ###### object
28
- - `apiKey: string`: __Required__ unless `enabled` is `false` - The PostHog project API key. This is a public, write only key that is meant to ship in the browser bundle, so read it with [`_build.env`](/_build). Never use a personal API key here.
29
- - `apiHost: string`: The PostHog ingestion host. Defaults to `https://us.i.posthog.com`. Use `https://eu.i.posthog.com` for the EU cloud, or the host of a self hosted instance.
30
- - `options: object`: Passed through to `posthog.init` as its config object. Set `capture_pageview: history_change` to capture a pageview on every client side navigation. Other common options are `person_profiles`, `capture_pageleave`, `autocapture`, `disable_session_recording`, `persistence` and `opt_out_capturing_by_default`. See the [posthog-js config reference](https://posthog.com/docs/libraries/js/config).
31
- - `debug: boolean`: Log everything PostHog does to the browser console.
32
- - `enabled: boolean`: Set to `false` to skip loading PostHog. Defaults to `true`.
33
-
34
- #### Response
35
-
36
- `null`, once `posthog-js` has loaded.
37
-
38
- #### Examples
39
-
40
- ###### Initialise PostHog on every page:
41
- ```yaml
42
- # shared/posthog_init.yaml
43
- - id: init_posthog
44
- type: PostHogInit
45
- params:
46
- apiKey:
47
- _build.env: POSTHOG_API_KEY
48
- enabled:
49
- _build.ne:
50
- - _build.env: POSTHOG_API_KEY
51
- - null
52
- options:
53
- capture_pageview: history_change
54
- person_profiles: identified_only
55
- ```
56
-
57
- ```yaml
58
- # pages/reports.yaml
59
- id: reports
60
- type: PageHeaderMenu
61
- events:
62
- onInit:
63
- _ref: shared/posthog_init.yaml
64
- ```
65
-
66
- With `POSTHOG_API_KEY` unset, for example in local development, `enabled` is `false` and PostHog is never loaded.
@@ -1,29 +0,0 @@
1
- # PostHogOptIn
2
-
3
- ```
4
- (void): Promise<null>
5
- ```
6
-
7
- The `PostHogOptIn` action starts capturing for this person. Pair it with [`PostHogOptOut`](/PostHogOptOut) and a [`PostHogInit`](/PostHogInit) that sets `options.opt_out_capturing_by_default: true` when consent is required before any data is sent. The choice is remembered in the persistence store configured on `PostHogInit`.
8
-
9
- When PostHog is disabled or `posthog-js` could not be loaded, the action does nothing.
10
-
11
- The action is part of the [`@lowdefy/plugin-posthog`](/PostHog) plugin, which is included by default. See the [PostHog guide](/PostHog) for how the actions fit together.
12
-
13
- #### Parameters
14
-
15
- The `PostHogOptIn` action does not take any parameters.
16
-
17
- #### Examples
18
-
19
- ###### Accept analytics from a consent banner:
20
- ```yaml
21
- - id: accept_analytics
22
- type: Button
23
- properties:
24
- title: Accept
25
- events:
26
- onClick:
27
- - id: opt_in
28
- type: PostHogOptIn
29
- ```
@@ -1,29 +0,0 @@
1
- # PostHogOptOut
2
-
3
- ```
4
- (void): Promise<null>
5
- ```
6
-
7
- The `PostHogOptOut` action stops capturing for this person. The choice is remembered in the persistence store configured on [`PostHogInit`](/PostHogInit). See [`PostHogOptIn`](/PostHogOptIn) for consent flows.
8
-
9
- When PostHog is disabled or `posthog-js` could not be loaded, the action does nothing.
10
-
11
- The action is part of the [`@lowdefy/plugin-posthog`](/PostHog) plugin, which is included by default. See the [PostHog guide](/PostHog) for how the actions fit together.
12
-
13
- #### Parameters
14
-
15
- The `PostHogOptOut` action does not take any parameters.
16
-
17
- #### Examples
18
-
19
- ###### Reject analytics from a consent banner:
20
- ```yaml
21
- - id: reject_analytics
22
- type: Button
23
- properties:
24
- title: Reject
25
- events:
26
- onClick:
27
- - id: opt_out
28
- type: PostHogOptOut
29
- ```
@@ -1,37 +0,0 @@
1
- # PostHogPageview
2
-
3
- ```
4
- (params: {
5
- properties?: object,
6
- }): Promise<null>
7
- ```
8
-
9
- The `PostHogPageview` action captures a `$pageview` event by hand.
10
-
11
- A Lowdefy app routes on the client without a page load, so the `posthog-js` default only captures the first page. The simplest fix is to set `capture_pageview: history_change` in the [`PostHogInit`](/PostHogInit) options, which captures a pageview on every navigation, and not use this action at all. Use `PostHogPageview` when pageviews need extra properties or tighter control: set `capture_pageview: false` and run it from each page's `onMountAsync` event.
12
-
13
- When PostHog is disabled or `posthog-js` could not be loaded, the action does nothing. Invalid params always throw, even when PostHog is disabled.
14
-
15
- The action is part of the [`@lowdefy/plugin-posthog`](/PostHog) plugin, which is included by default. See the [PostHog guide](/PostHog) for how the actions fit together.
16
-
17
- #### Parameters
18
-
19
- ###### object
20
- - `properties: object`: Properties to add to the `$pageview` event.
21
-
22
- #### Examples
23
-
24
- ###### Capture pageviews by hand:
25
- ```yaml
26
- id: reports
27
- type: PageHeaderMenu
28
- events:
29
- onInit:
30
- _ref: shared/posthog_init.yaml # PostHogInit with options.capture_pageview: false
31
- onMountAsync:
32
- - id: capture_pageview
33
- type: PostHogPageview
34
- params:
35
- properties:
36
- section: reports
37
- ```
@@ -1,47 +0,0 @@
1
- # PostHogReloadFeatureFlags
2
-
3
- ```
4
- (params: {
5
- timeout?: integer,
6
- }): Promise<{ flags: string[], variants: object }>
7
- ```
8
-
9
- The `PostHogReloadFeatureFlags` action asks PostHog to evaluate this person's feature flags again, and resolves once the new flags have arrived. Run it after [`PostHogIdentify`](/PostHogIdentify) or [`PostHogGroup`](/PostHogGroup) changed the targeting, then read the flags from its response or with [`PostHogFeatureFlag`](/PostHogFeatureFlag).
10
-
11
- It resolves with empty results if PostHog does not answer within `timeout` milliseconds, so a flaky network can never stall the action chain. When PostHog is disabled or `posthog-js` could not be loaded, it resolves with empty results straight away.
12
-
13
- The action is part of the [`@lowdefy/plugin-posthog`](/PostHog) plugin, which is included by default. See the [PostHog guide](/PostHog) for how the actions fit together.
14
-
15
- #### Parameters
16
-
17
- ###### object
18
- - `timeout: integer`: Milliseconds to wait for PostHog to answer. Defaults to `5000`. Must not be negative.
19
-
20
- #### Response
21
-
22
- An object:
23
- - `flags: string[]`: The keys of the flags enabled for this person.
24
- - `variants: object`: Every flag key mapped to its value.
25
-
26
- When PostHog does not answer in time, or is disabled, the response is `{ flags: [], variants: {} }`.
27
-
28
- #### Examples
29
-
30
- ###### Reload flags after switching organization:
31
- ```yaml
32
- - id: set_group
33
- type: PostHogGroup
34
- params:
35
- type: organization
36
- key:
37
- _state: organization_id
38
- - id: reload_flags
39
- type: PostHogReloadFeatureFlags
40
- params:
41
- timeout: 3000
42
- - id: store_flags
43
- type: SetState
44
- params:
45
- feature_flags:
46
- _actions: reload_flags.response.variants
47
- ```
@@ -1,28 +0,0 @@
1
- # PostHogReset
2
-
3
- ```
4
- (params: {
5
- resetDeviceId?: boolean,
6
- }): Promise<null>
7
- ```
8
-
9
- The `PostHogReset` action forgets the current person and starts a fresh anonymous session. Run it on sign out so the next person on a shared browser is not merged into this one.
10
-
11
- When PostHog is disabled or `posthog-js` could not be loaded, the action does nothing. Invalid params always throw, even when PostHog is disabled.
12
-
13
- The action is part of the [`@lowdefy/plugin-posthog`](/PostHog) plugin, which is included by default. See the [PostHog guide](/PostHog) for how the actions fit together.
14
-
15
- #### Parameters
16
-
17
- ###### object
18
- - `resetDeviceId: boolean`: Also generate a new device id, so the browser is not recognised as the same device. Defaults to `false`.
19
-
20
- #### Examples
21
-
22
- ###### Reset PostHog on sign out:
23
- ```yaml
24
- - id: reset_posthog
25
- type: PostHogReset
26
- - id: logout
27
- type: Logout
28
- ```
@@ -1,36 +0,0 @@
1
- # PostHogSetPersonProperties
2
-
3
- ```
4
- (params: {
5
- set?: object,
6
- setOnce?: object,
7
- }): Promise<null>
8
- ```
9
-
10
- The `PostHogSetPersonProperties` action updates the properties of the person [`PostHogIdentify`](/PostHogIdentify) identified. Each call is a billable event; `posthog-js` skips a call identical to the previous one. Never send personally identifiable information.
11
-
12
- When PostHog is disabled or `posthog-js` could not be loaded, the action does nothing. Invalid params always throw, even when PostHog is disabled.
13
-
14
- The action is part of the [`@lowdefy/plugin-posthog`](/PostHog) plugin, which is included by default. See the [PostHog guide](/PostHog) for how the actions fit together.
15
-
16
- #### Parameters
17
-
18
- ###### object
19
- At least one of `set` or `setOnce` is required.
20
- - `set: object`: Person properties to set.
21
- - `setOnce: object`: Person properties that are only set if the person does not have them yet.
22
-
23
- #### Examples
24
-
25
- ###### Record a plan change:
26
- ```yaml
27
- - id: set_person_properties
28
- type: PostHogSetPersonProperties
29
- params:
30
- set:
31
- plan:
32
- _state: selected_plan
33
- setOnce:
34
- first_plan:
35
- _state: selected_plan
36
- ```
@@ -1,26 +0,0 @@
1
- # RemoveLocalStorage
2
-
3
- ```
4
- (params: {
5
- key: string
6
- }): void
7
- ```
8
-
9
- The `RemoveLocalStorage` action removes a key from the browser's [local storage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage). Removing a key that is not set does nothing.
10
-
11
- Keys starting with `lowdefy_` or `lf-` are reserved for settings Lowdefy stores itself, such as the dark mode preference, and the action throws an error if one is used. If the browser blocks local storage, the action fails with an error that is shown to the user and triggers the event's `catch` actions, but is not logged as an app error.
12
-
13
- #### Parameters
14
-
15
- ###### object
16
- - `key: string`: __Required__ - The local storage key to remove. Keys starting with `lowdefy_` or `lf-` are reserved.
17
-
18
- #### Examples
19
-
20
- ###### Clear a stored preference:
21
- ```yaml
22
- - id: clear_preference
23
- type: RemoveLocalStorage
24
- params:
25
- key: dashboard_filters
26
- ```
@@ -1,32 +0,0 @@
1
- # SetLocalStorage
2
-
3
- ```
4
- (params: {
5
- key: string,
6
- value: any
7
- }): void
8
- ```
9
-
10
- The `SetLocalStorage` action stores a value in the browser's [local storage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage), under the given key. Values are serialized, so objects, arrays and dates are read back as the same types by the [`GetLocalStorage`](/GetLocalStorage) action.
11
-
12
- Local storage is per browser and per origin, and it is not sent to the server. Do not store secrets, tokens or personal data in it.
13
-
14
- Keys starting with `lowdefy_` or `lf-` are reserved for settings Lowdefy stores itself, such as the dark mode preference, and the action throws an error if one is used. If the browser blocks local storage, or the storage quota is full, the action fails with an error that is shown to the user and triggers the event's `catch` actions, but is not logged as an app error.
15
-
16
- #### Parameters
17
-
18
- ###### object
19
- - `key: string`: __Required__ - The local storage key to write to. Keys starting with `lowdefy_` or `lf-` are reserved.
20
- - `value: any`: __Required__ - The value to store.
21
-
22
- #### Examples
23
-
24
- ###### Remember a user preference:
25
- ```yaml
26
- - id: save_preference
27
- type: SetLocalStorage
28
- params:
29
- key: dashboard_filters
30
- value:
31
- _state: filters
32
- ```
@@ -1,46 +0,0 @@
1
- # MongoDBAuthAdapter
2
-
3
- The MongoDBAuthAdapter stores the auth engine's users, sessions, accounts, organizations and related records in a MongoDB database. It is configured as `auth.database` and ships with the `MongoDBCollection` connection package.
4
-
5
- Collection names follow the fixed `user-*` naming convention applied by the auth engine (`users`, `user-sessions`, `user-accounts`, ...) — there is no collection rename configuration. The `attributes` fields on users, members and invitations are stored as native sub-documents, so they can be filtered and aggregated with normal MongoDB queries.
6
-
7
- If you are upgrading from the old `MongoDBAdapter`: the type is renamed, `databaseUri` becomes `uri`, and `options.databaseName` folds into the URI path or the `database` property. See the [auth upgrade guide](/auth-upgrade).
8
-
9
- #### Properties
10
-
11
- ###### object
12
- - `uri: string`: Required - Connection uri string for the MongoDB deployment. Should be stored using the _secret operator.
13
- - `database: string`: Set the MongoDB database name. This is optional if the database name is specified in the `uri`.
14
- - `mongoDBClientOptions: object`: See the [driver documentation](https://mongodb.github.io/node-mongodb-native/) for more information.
15
-
16
- #### Examples
17
-
18
- ###### Minimum configuration.
19
-
20
- ```yaml
21
- lowdefy: 6.0.0
22
- auth:
23
- database:
24
- id: auth_db
25
- type: MongoDBAuthAdapter
26
- properties:
27
- uri:
28
- _secret: AUTH_DATABASE_URI
29
- ```
30
-
31
- ###### Full configuration.
32
-
33
- ```yaml
34
- lowdefy: 6.0.0
35
- auth:
36
- database:
37
- id: auth_db
38
- type: MongoDBAuthAdapter
39
- properties:
40
- uri:
41
- _secret: AUTH_DATABASE_URI
42
- database: my-database # Optional
43
- # Optional MongoDB client options, only set these if necessary
44
- mongoDBClientOptions:
45
- connectTimeoutMS: 2000
46
- ```
@@ -1,107 +0,0 @@
1
- # Agents
2
-
3
- Lowdefy agents add AI chat capabilities to your app. An agent connects to an AI model provider (like Anthropic, OpenAI, or Google), can use tools to interact with your app's APIs, and streams responses to an [`AgentChat`](/AgentChat) block in the browser.
4
-
5
- Agents are defined at the root of your Lowdefy configuration, alongside `connections` and `pages`. You define the agent in YAML, and Lowdefy handles the streaming, tool execution, and UI.
6
-
7
- ## Quick Start
8
-
9
- A connection, an agent, and a chat block — that's all you need:
10
-
11
- ```yaml
12
- lowdefy: 6.0.0
13
-
14
- connections:
15
- - id: anthropic
16
- type: Anthropic
17
- properties:
18
- apiKey:
19
- _secret: ANTHROPIC_API_KEY
20
-
21
- agents:
22
- - id: assistant
23
- type: ClaudeAgent
24
- connectionId: anthropic
25
- properties:
26
- model: claude-sonnet-4-20250514
27
- instructions: |
28
- You are a helpful assistant for Acme Corp. Answer questions
29
- about our products and services. Be friendly and concise.
30
-
31
- pages:
32
- - id: chat
33
- type: PageHeaderMenu
34
- properties:
35
- title: Chat
36
- blocks:
37
- - id: chat
38
- type: AgentChat
39
- properties:
40
- agentId: assistant
41
- ```
42
-
43
- Set the `ANTHROPIC_API_KEY` [secret](/secrets) and you have a fully working AI chat — streaming responses, markdown rendering, code highlighting, and editable messages all work out of the box.
44
-
45
- ## How Agents Work
46
-
47
- When a user sends a message in an [`AgentChat`](/AgentChat) block:
48
-
49
- 1. The message is sent to the Lowdefy server via a streaming API endpoint.
50
- 2. The server loads the agent configuration, creates a connection to the AI provider, and starts a conversation with the model.
51
- 3. If the agent has tools, the model can call them. Tool calls execute server-side (API endpoints, MCP servers, or sub-agents) and the results are sent back to the model.
52
- 4. The model's response streams back to the browser in real time, updating the chat UI as tokens arrive.
53
-
54
- This tool loop continues until the model produces a final text response or reaches the `maxSteps` limit.
55
-
56
- ## Agent Definition
57
-
58
- Agents are defined in the top-level `agents` array in your Lowdefy configuration:
59
-
60
- - `id: string`: __Required__ - A unique identifier for the agent.
61
- - `type: string`: __Required__ - The agent type. See [Anthropic](/Anthropic), [OpenAI](/OpenAI-connection), and [Google](/Google) for available types.
62
- - `connectionId: string`: __Required__ - The `id` of the connection to use.
63
- - `properties: object`: Model, instructions, and behavior settings. See [Agent Properties](/agent-properties). __Operators are evaluated__.
64
- - `tools: array`: API endpoint tools. See [Endpoint Tools](/agent-endpoint-tools).
65
- - `mcp: array`: MCP server tools. See [MCP Tools](/agent-mcp-tools).
66
- - `agents: array`: Sub-agent tools. See [Multi-Agent](/agent-multi-agent).
67
- - `hooks: object`: Server-side lifecycle hooks. See [Server Hooks](/agent-server-hooks).
68
-
69
- ###### Agent with tools, sub-agents, and hooks:
70
- ```yaml
71
- agents:
72
- - id: support_agent
73
- type: ClaudeAgent
74
- connectionId: anthropic
75
- properties:
76
- model: claude-sonnet-4-20250514
77
- instructions: |
78
- You are a customer support agent. Help users find products
79
- and answer questions. Be friendly and concise.
80
- maxSteps: 5
81
- tools:
82
- - search-products
83
- - endpointId: create-ticket
84
- confirm: true
85
- mcp:
86
- - mcp_knowledge_base
87
- agents:
88
- - agentId: billing_agent
89
- description: Handles billing and payment questions.
90
- hooks:
91
- onFinish:
92
- - save-conversation
93
- ```
94
-
95
- ## Beyond Chat
96
-
97
- Agents can also run headlessly from [API endpoint routines](/api) using the `CallAgent` step — the agent loops through its tools to completion and the result lands in the routine's `_step` results, no chat UI involved. See [Running Agents As A Routine Step](/api) for details.
98
-
99
- ## What's Next
100
-
101
- - [Agent Properties](/agent-properties) — Configure model, temperature, pruning, and more.
102
- - [Endpoint Tools](/agent-endpoint-tools) — Give the agent access to your database and APIs.
103
- - [MCP Tools](/agent-mcp-tools) — Connect to external tool providers via the MCP standard.
104
- - [Multi-Agent](/agent-multi-agent) — Delegate tasks to specialized sub-agents.
105
- - [Server Hooks](/agent-server-hooks) — Save conversations, generate titles, and run server-side logic.
106
- - [AgentChat](/AgentChat) — Configure the chat UI block.
107
- - [AgentConversations](/AgentConversations) — Add a conversation history sidebar.
@@ -1,54 +0,0 @@
1
- # Auth0LogoutCallback
2
-
3
- The Auth0LogoutCallback can be used to log the user out from Auth0 when logging out of the Lowdefy app. The callback takes a `returnToPageId` property, which is the pageId the user will be directed to after logout from Auth0 is complete. The URL which the user will be directed to needs to be configured with Auth0 as an allowed logout URL.
4
-
5
- To trigger the Auth0 logout, the `Logout` action `callbackUrl.url` param should be set to `AUTH0_LOGOUT`.
6
-
7
- #### Properties
8
-
9
- ###### object
10
- - `issuer: string`: Auth0 issuer URL. This should be the same that was used for the `Auth0Provider`.
11
- - `clientId: string`: Auth0 client ID. This should be the same that was used for the `Auth0Provider`.
12
- - `returnToPagedId: string`: The pageId in the Lowdefy application to which the user should be redirected affter logging out from Auth0.
13
-
14
- #### Examples
15
-
16
- ###### Configuring Auth0LogoutCallback.
17
-
18
- ```yaml
19
- lowdefy: 6.0.0
20
- providers:
21
- - id: auth0
22
- type: Auth0Provider
23
- properties:
24
- clientId:
25
- _secret: AUTH0_CLIENT_ID
26
- clientSecret:
27
- _secret: AUTH0_CLIENT_SECRET
28
- issuer:
29
- _secret: AUTH0_ISSUER
30
- callbacks:
31
- - id: auth0_logout
32
- type: Auth0LogoutCallback
33
- properties:
34
- clientId:
35
- _secret: AUTH0_CLIENT_ID
36
- issuer:
37
- _secret: AUTH0_ISSUER
38
- returnToPagedId: logged-out
39
- ```
40
-
41
- The Auth0 allowed logout URLS should be set to `https://my-app.com/logged-out` for production and `http://localhost:3000/logged-out` for development.
42
-
43
- ###### Logging out.
44
- ```yaml
45
- id: logout_button
46
- type: Button
47
- events:
48
- onClick:
49
- - id: logout
50
- type: Logout
51
- params:
52
- callbackUrl:
53
- url: AUTH0_LOGOUT
54
- ```