@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.
- package/README.md +0 -1
- package/content/actions/link.md +0 -17
- package/content/actions/login.md +5 -23
- package/content/actions/logout.md +5 -5
- package/content/actions/pdfmake.md +2 -2
- package/content/actions/setdarkmode.md +2 -2
- package/content/agents/agent-properties.md +2 -4
- package/content/agents/agentchat.md +6 -21
- package/content/agents/agentconversations.md +2 -2
- package/content/concepts/ai-agent-docs.md +101 -313
- package/content/concepts/cli.md +3 -34
- package/content/concepts/connections-and-requests.md +0 -402
- package/content/concepts/custom-html.md +0 -40
- package/content/concepts/custom-styling.md +5 -50
- package/content/concepts/events-and-actions.md +2 -64
- package/content/concepts/i18n.md +2 -7
- package/content/concepts/keyboard-shortcuts.md +2 -2
- package/content/concepts/layout-overview.md +1 -1
- package/content/concepts/logger.md +0 -81
- package/content/concepts/lowdefy-schema.md +1 -4
- package/content/concepts/menus.md +7 -7
- package/content/concepts/module-authoring.md +2 -2
- package/content/connections/anthropic.md +2 -162
- package/content/connections/awss3.md +0 -54
- package/content/connections/google.md +2 -162
- package/content/connections/mongodb.md +3 -121
- package/content/connections/openai-connection.md +2 -162
- package/content/container-blocks/affix.md +7 -47
- package/content/container-blocks/alert.md +24 -76
- package/content/container-blocks/badge.md +24 -100
- package/content/container-blocks/box.md +9 -9
- package/content/container-blocks/card.md +25 -80
- package/content/container-blocks/carousel.md +7 -60
- package/content/container-blocks/collapse.md +9 -87
- package/content/container-blocks/configprovider.md +13 -35
- package/content/container-blocks/confirmmodal.md +23 -69
- package/content/container-blocks/content.md +98 -62
- package/content/container-blocks/descriptions.md +4 -45
- package/content/container-blocks/drawer.md +28 -92
- package/content/container-blocks/dropdownmenu.md +31 -119
- package/content/container-blocks/flex.md +62 -40
- package/content/container-blocks/footer.md +11 -15
- package/content/container-blocks/googlemapsheatmap.md +1 -1
- package/content/container-blocks/googlemapsscript.md +2 -2
- package/content/container-blocks/header.md +36 -71
- package/content/container-blocks/label.md +7 -34
- package/content/container-blocks/layout.md +34 -52
- package/content/container-blocks/masonry.md +71 -17
- package/content/container-blocks/mobilemenu.md +88 -131
- package/content/container-blocks/modal.md +26 -114
- package/content/container-blocks/pageheadermenu.md +31 -81
- package/content/container-blocks/pagesidebarlayout.md +26 -169
- package/content/container-blocks/pagesidermenu.md +42 -95
- package/content/container-blocks/popover.md +31 -34
- package/content/container-blocks/result.md +21 -32
- package/content/container-blocks/sider.md +122 -85
- package/content/container-blocks/span.md +7 -7
- package/content/container-blocks/spinner.md +3 -3
- package/content/container-blocks/splitter.md +68 -150
- package/content/container-blocks/tabs.md +12 -64
- package/content/container-blocks/tooltip.md +46 -22
- package/content/container-blocks/watermark.md +4 -22
- package/content/controls/reject.md +2 -4
- package/content/controls/throw.md +0 -1
- package/content/controls/try.md +2 -3
- package/content/deployment/deployment-environments.md +6 -8
- package/content/deployment/docker.md +7 -22
- package/content/deployment/node-server.md +0 -4
- package/content/deployment/vercel.md +6 -13
- package/content/display-blocks/aggrid.md +11 -26
- package/content/display-blocks/anchor.md +15 -15
- package/content/display-blocks/avatar.md +37 -57
- package/content/display-blocks/breadcrumb.md +21 -70
- package/content/display-blocks/button.md +18 -92
- package/content/display-blocks/calendar.md +0 -12
- package/content/display-blocks/dangeroushtml.md +1 -1
- package/content/display-blocks/difflist.md +1 -1
- package/content/display-blocks/difftimeline.md +1 -1
- package/content/display-blocks/divider.md +3 -64
- package/content/display-blocks/dropdownbutton.md +28 -79
- package/content/display-blocks/echart.md +1 -35
- package/content/display-blocks/floatbutton.md +42 -129
- package/content/display-blocks/html.md +1 -61
- package/content/display-blocks/icon.md +67 -250
- package/content/display-blocks/menu.md +73 -145
- package/content/display-blocks/message.md +124 -38
- package/content/display-blocks/notification.md +222 -94
- package/content/display-blocks/paragraph.md +9 -59
- package/content/display-blocks/progress.md +17 -96
- package/content/display-blocks/qrcode.md +4 -19
- package/content/display-blocks/s3download.md +1 -1
- package/content/display-blocks/search.md +7 -17
- package/content/display-blocks/skeletonbutton.md +0 -1
- package/content/display-blocks/skeletoninput.md +0 -1
- package/content/display-blocks/statistic.md +17 -75
- package/content/display-blocks/steps.md +25 -58
- package/content/display-blocks/tag.md +17 -102
- package/content/display-blocks/title.md +11 -50
- package/content/display-blocks/tour.md +23 -33
- package/content/input-blocks/autocomplete.md +9 -81
- package/content/input-blocks/buttonselector.md +8 -45
- package/content/input-blocks/checkboxselector.md +7 -97
- package/content/input-blocks/checkboxswitch.md +3 -33
- package/content/input-blocks/colorselector.md +14 -63
- package/content/input-blocks/daterangeselector.md +45 -165
- package/content/input-blocks/dateselector.md +41 -139
- package/content/input-blocks/datetimeselector.md +49 -158
- package/content/input-blocks/inputgallery.md +3 -3
- package/content/input-blocks/monthselector.md +52 -120
- package/content/input-blocks/multipleselector.md +39 -150
- package/content/input-blocks/numberinput.md +12 -98
- package/content/input-blocks/pagination.md +14 -70
- package/content/input-blocks/paragraphinput.md +37 -51
- package/content/input-blocks/passwordinput.md +6 -60
- package/content/input-blocks/phonenumberinput.md +26 -59
- package/content/input-blocks/radioselector.md +7 -83
- package/content/input-blocks/ratingslider.md +26 -57
- package/content/input-blocks/s3uploadbutton.md +24 -24
- package/content/input-blocks/s3uploaddragger.md +3 -3
- package/content/input-blocks/s3uploadphoto.md +5 -5
- package/content/input-blocks/segmentedselector.md +32 -72
- package/content/input-blocks/selector.md +21 -109
- package/content/input-blocks/switch.md +17 -65
- package/content/input-blocks/textarea.md +3 -32
- package/content/input-blocks/textinput.md +28 -69
- package/content/input-blocks/tiptapmentioninput.md +1 -1
- package/content/input-blocks/titleinput.md +12 -39
- package/content/input-blocks/treeinput.md +25 -49
- package/content/input-blocks/treemultipleselector.md +10 -127
- package/content/input-blocks/treeselector.md +9 -97
- package/content/input-blocks/upload.md +15 -64
- package/content/input-blocks/uploaddragger.md +1 -17
- package/content/input-blocks/uploadphoto.md +1 -18
- package/content/input-blocks/weekselector.md +55 -120
- package/content/list-blocks/controlledlist.md +15 -24
- package/content/list-blocks/list.md +11 -11
- package/content/list-blocks/masonrylist.md +34 -7
- package/content/migration/upgrade-guide.md +0 -1
- package/content/operators/_app.md +1 -2
- package/content/operators/_error.md +1 -23
- package/content/operators/_get.md +6 -6
- package/content/operators/_operator.md +3 -17
- package/content/operators/_ref.md +0 -258
- package/content/operators/_type.md +3 -14
- package/content/operators/_user.md +3 -3
- package/content/other/introduction.md +1 -1
- package/content/plugins/plugins-dev.md +0 -66
- package/content/plugins/plugins-introduction.md +1 -27
- package/content/testing/e2e-configuration.md +1 -8
- package/content/testing/e2e-getting-started.md +1 -1
- package/content/testing/e2e-introduction.md +1 -1
- package/content/tutorial/tutorial-actions-operators.md +2 -2
- package/content/tutorial/tutorial-add-blocks.md +2 -2
- package/content/tutorial/tutorial-create-page.md +2 -48
- package/content/tutorial/tutorial-display-data-page.md +3 -3
- package/content/tutorial/tutorial-requests-sql.md +0 -153
- package/content/tutorial/tutorial-start.md +1 -66
- package/content/user-authentication/login-and-logout.md +8 -158
- package/content/user-authentication/users-introduction.md +0 -8
- package/index.json +2 -6065
- package/package.json +1 -7
- package/scripts/extractAgentDocs.js +4 -36
- package/content/actions/emailotpsend.md +0 -58
- package/content/actions/emailotpverify.md +0 -77
- package/content/actions/getlocalstorage.md +0 -41
- package/content/actions/magiclinkverify.md +0 -113
- package/content/actions/posthogalias.md +0 -29
- package/content/actions/posthogcapture.md +0 -49
- package/content/actions/posthogcapturepageleave.md +0 -38
- package/content/actions/posthogfeatureflag.md +0 -50
- package/content/actions/posthoggroup.md +0 -37
- package/content/actions/posthogidentify.md +0 -54
- package/content/actions/posthoginit.md +0 -66
- package/content/actions/posthogoptin.md +0 -29
- package/content/actions/posthogoptout.md +0 -29
- package/content/actions/posthogpageview.md +0 -37
- package/content/actions/posthogreloadfeatureflags.md +0 -47
- package/content/actions/posthogreset.md +0 -28
- package/content/actions/posthogsetpersonproperties.md +0 -36
- package/content/actions/removelocalstorage.md +0 -26
- package/content/actions/setlocalstorage.md +0 -32
- package/content/adapter-reference/mongodbauthadapter.md +0 -46
- package/content/agents/agents-introduction.md +0 -107
- package/content/callback-reference/auth0logoutcallback.md +0 -54
- package/content/concepts/blocks.md +0 -150
- package/content/concepts/dynamic-page-content.md +0 -304
- package/content/concepts/html-attributes.md +0 -285
- package/content/concepts/lowdefy-api.md +0 -1110
- package/content/concepts/notifications.md +0 -155
- package/content/concepts/page-and-app-state.md +0 -244
- package/content/concepts/theming.md +0 -582
- package/content/connections/aigateway.md +0 -368
- package/content/connections/axioshttp.md +0 -181
- package/content/controls/while.md +0 -46
- package/content/display-blocks/clickablehtml.md +0 -239
- package/content/display-blocks/eventlog.md +0 -363
- package/content/display-blocks/pollingtimer.md +0 -263
- package/content/input-blocks/captcha.md +0 -40
- package/content/input-blocks/placesautocomplete.md +0 -319
- package/content/input-blocks/tagmultipleselector.md +0 -114
- package/content/input-blocks/tagselector.md +0 -114
- package/content/migration/auth-upgrade.md +0 -327
- package/content/migration/v3-to-v4.md +0 -417
- package/content/migration/v6-to-v7.md +0 -222
- package/content/operators/_cron.md +0 -292
- package/content/other/mongodbadapter.md +0 -3
- package/content/plugins/plugins-icon-sets.md +0 -267
- package/content/plugins/posthog.md +0 -275
- package/content/provider-reference/auth-js-providers.md +0 -107
- package/content/provider-reference/openidconnectprovider.md +0 -44
- package/content/testing/config-tests.md +0 -278
- package/content/tutorial/tutorial-requests-api.md +0 -155
- package/content/user-authentication/auth-configuration.md +0 -266
- package/content/user-authentication/auth-steps.md +0 -138
- package/content/user-authentication/mcp-oauth.md +0 -292
- package/content/user-authentication/organizations.md +0 -221
- package/content/user-authentication/protected-pages-apis.md +0 -97
- package/content/user-authentication/roles.md +0 -49
- package/content/user-authentication/two-factor.md +0 -229
- package/content/user-authentication/user-object.md +0 -58
- package/content/websockets/websocket-publish.md +0 -108
- package/content/websockets/websocket-subscriptions.md +0 -100
- package/content/websockets/websockets-introduction.md +0 -97
- package/hazards.json +0 -44
- package/scripts/hashDocSources.js +0 -38
- 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
|
-
```
|