@lowdefy/docs-content 0.0.0-experimental-20260710073520
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/LICENSE +201 -0
- package/README.md +20 -0
- package/content/actions/callapi.md +66 -0
- package/content/actions/callmethod.md +41 -0
- package/content/actions/copytoclipboard.md +32 -0
- package/content/actions/displaymessage.md +53 -0
- package/content/actions/downloadcsv.md +89 -0
- package/content/actions/fetch.md +50 -0
- package/content/actions/geolocationcurrentposition.md +56 -0
- package/content/actions/link.md +104 -0
- package/content/actions/login.md +85 -0
- package/content/actions/logout.md +56 -0
- package/content/actions/pdfmake.md +304 -0
- package/content/actions/request.md +67 -0
- package/content/actions/reset.md +27 -0
- package/content/actions/resetvalidation.md +85 -0
- package/content/actions/scrollto.md +85 -0
- package/content/actions/setdarkmode.md +62 -0
- package/content/actions/setfocus.md +33 -0
- package/content/actions/setglobal.md +63 -0
- package/content/actions/setlocale.md +69 -0
- package/content/actions/setstate.md +70 -0
- package/content/actions/throw.md +72 -0
- package/content/actions/validate.md +87 -0
- package/content/actions/wait.md +24 -0
- package/content/agents/agent-endpoint-tools.md +190 -0
- package/content/agents/agent-mcp-tools.md +124 -0
- package/content/agents/agent-multi-agent.md +136 -0
- package/content/agents/agent-properties.md +174 -0
- package/content/agents/agent-server-hooks.md +336 -0
- package/content/agents/agentchat.md +515 -0
- package/content/agents/agentconversations.md +148 -0
- package/content/concepts/ai-agent-docs.md +190 -0
- package/content/concepts/cli.md +213 -0
- package/content/concepts/connections-and-requests.md +7 -0
- package/content/concepts/custom-html.md +3 -0
- package/content/concepts/custom-styling.md +161 -0
- package/content/concepts/events-and-actions.md +271 -0
- package/content/concepts/hosting-files.md +18 -0
- package/content/concepts/i18n.md +320 -0
- package/content/concepts/keyboard-shortcuts.md +218 -0
- package/content/concepts/layout-overview.md +478 -0
- package/content/concepts/lists.md +144 -0
- package/content/concepts/logger.md +43 -0
- package/content/concepts/lowdefy-schema.md +365 -0
- package/content/concepts/menus.md +144 -0
- package/content/concepts/module-authoring.md +564 -0
- package/content/concepts/modules.md +338 -0
- package/content/concepts/operators.md +45 -0
- package/content/concepts/overview.md +19 -0
- package/content/concepts/references-and-templates.md +207 -0
- package/content/concepts/secrets.md +24 -0
- package/content/concepts/selectors.md +143 -0
- package/content/connections/amazonredshift.md +176 -0
- package/content/connections/anthropic.md +232 -0
- package/content/connections/awss3.md +313 -0
- package/content/connections/azureblobstorage.md +133 -0
- package/content/connections/elasticsearch.md +371 -0
- package/content/connections/google.md +228 -0
- package/content/connections/googlecloudstorage.md +139 -0
- package/content/connections/googlesheet.md +313 -0
- package/content/connections/knex.md +206 -0
- package/content/connections/mariadb.md +177 -0
- package/content/connections/mcp.md +134 -0
- package/content/connections/mongodb.md +739 -0
- package/content/connections/mssql.md +191 -0
- package/content/connections/mysql.md +192 -0
- package/content/connections/openai-connection.md +228 -0
- package/content/connections/postgresql.md +200 -0
- package/content/connections/redis.md +116 -0
- package/content/connections/sendgridmail.md +94 -0
- package/content/connections/smtp.md +149 -0
- package/content/connections/sqlite.md +187 -0
- package/content/connections/stripe.md +115 -0
- package/content/container-blocks/affix.md +413 -0
- package/content/container-blocks/alert.md +937 -0
- package/content/container-blocks/badge.md +1222 -0
- package/content/container-blocks/box.md +1453 -0
- package/content/container-blocks/card.md +1200 -0
- package/content/container-blocks/carousel.md +2247 -0
- package/content/container-blocks/collapse.md +1335 -0
- package/content/container-blocks/configprovider.md +1070 -0
- package/content/container-blocks/confirmmodal.md +1159 -0
- package/content/container-blocks/content.md +597 -0
- package/content/container-blocks/descriptions.md +870 -0
- package/content/container-blocks/drawer.md +1379 -0
- package/content/container-blocks/dropdownmenu.md +643 -0
- package/content/container-blocks/flex.md +1510 -0
- package/content/container-blocks/footer.md +380 -0
- package/content/container-blocks/googlemaps.md +546 -0
- package/content/container-blocks/googlemapsheatmap.md +607 -0
- package/content/container-blocks/googlemapsscript.md +61 -0
- package/content/container-blocks/header.md +302 -0
- package/content/container-blocks/label.md +739 -0
- package/content/container-blocks/layout.md +604 -0
- package/content/container-blocks/masonry.md +1090 -0
- package/content/container-blocks/mobilemenu.md +1244 -0
- package/content/container-blocks/modal.md +1180 -0
- package/content/container-blocks/pageheadermenu.md +614 -0
- package/content/container-blocks/pagesidebarlayout.md +438 -0
- package/content/container-blocks/pagesidermenu.md +651 -0
- package/content/container-blocks/popover.md +1421 -0
- package/content/container-blocks/result.md +972 -0
- package/content/container-blocks/sider.md +1064 -0
- package/content/container-blocks/span.md +747 -0
- package/content/container-blocks/spinner.md +267 -0
- package/content/container-blocks/splitter.md +1735 -0
- package/content/container-blocks/tabs.md +1718 -0
- package/content/container-blocks/tooltip.md +1274 -0
- package/content/container-blocks/watermark.md +515 -0
- package/content/controls/for.md +103 -0
- package/content/controls/if.md +107 -0
- package/content/controls/log.md +50 -0
- package/content/controls/parallel.md +71 -0
- package/content/controls/parallel_for.md +36 -0
- package/content/controls/reject.md +56 -0
- package/content/controls/return.md +66 -0
- package/content/controls/set_state.md +98 -0
- package/content/controls/switch.md +90 -0
- package/content/controls/throw.md +79 -0
- package/content/controls/try.md +88 -0
- package/content/deployment/docker.md +149 -0
- package/content/deployment/node-server.md +27 -0
- package/content/deployment/vercel.md +101 -0
- package/content/display-blocks/aggrid.md +1459 -0
- package/content/display-blocks/anchor.md +336 -0
- package/content/display-blocks/avatar.md +1154 -0
- package/content/display-blocks/breadcrumb.md +517 -0
- package/content/display-blocks/button.md +758 -0
- package/content/display-blocks/calendar.md +156 -0
- package/content/display-blocks/dangeroushtml.md +314 -0
- package/content/display-blocks/dangerousmarkdown.md +423 -0
- package/content/display-blocks/diffgit.md +44 -0
- package/content/display-blocks/difflist.md +225 -0
- package/content/display-blocks/diffsidebyside.md +56 -0
- package/content/display-blocks/difftimeline.md +94 -0
- package/content/display-blocks/divider.md +406 -0
- package/content/display-blocks/download.md +60 -0
- package/content/display-blocks/dropdownbutton.md +661 -0
- package/content/display-blocks/echart.md +418 -0
- package/content/display-blocks/floatbutton.md +545 -0
- package/content/display-blocks/html.md +311 -0
- package/content/display-blocks/icon.md +717 -0
- package/content/display-blocks/img.md +479 -0
- package/content/display-blocks/markdown.md +520 -0
- package/content/display-blocks/markdownwithcode.md +730 -0
- package/content/display-blocks/menu.md +1123 -0
- package/content/display-blocks/message.md +941 -0
- package/content/display-blocks/notification.md +1410 -0
- package/content/display-blocks/paragraph.md +643 -0
- package/content/display-blocks/progress.md +818 -0
- package/content/display-blocks/qrcode.md +519 -0
- package/content/display-blocks/s3download.md +240 -0
- package/content/display-blocks/search.md +360 -0
- package/content/display-blocks/skeleton.md +272 -0
- package/content/display-blocks/skeletonavatar.md +222 -0
- package/content/display-blocks/skeletonbutton.md +245 -0
- package/content/display-blocks/skeletoninput.md +223 -0
- package/content/display-blocks/skeletonparagraph.md +201 -0
- package/content/display-blocks/statistic.md +485 -0
- package/content/display-blocks/steps.md +585 -0
- package/content/display-blocks/tag.md +620 -0
- package/content/display-blocks/title.md +654 -0
- package/content/display-blocks/tour.md +2359 -0
- package/content/input-blocks/autocomplete.md +786 -0
- package/content/input-blocks/buttonselector.md +964 -0
- package/content/input-blocks/checkboxselector.md +765 -0
- package/content/input-blocks/checkboxswitch.md +497 -0
- package/content/input-blocks/colorselector.md +884 -0
- package/content/input-blocks/daterangeselector.md +777 -0
- package/content/input-blocks/dateselector.md +693 -0
- package/content/input-blocks/datetimeselector.md +791 -0
- package/content/input-blocks/inputgallery.md +528 -0
- package/content/input-blocks/monthselector.md +717 -0
- package/content/input-blocks/multipleselector.md +1337 -0
- package/content/input-blocks/numberinput.md +855 -0
- package/content/input-blocks/pagination.md +679 -0
- package/content/input-blocks/paragraphinput.md +1664 -0
- package/content/input-blocks/passwordinput.md +480 -0
- package/content/input-blocks/phonenumberinput.md +688 -0
- package/content/input-blocks/radioselector.md +820 -0
- package/content/input-blocks/ratingslider.md +684 -0
- package/content/input-blocks/s3uploadbutton.md +384 -0
- package/content/input-blocks/s3uploaddragger.md +305 -0
- package/content/input-blocks/s3uploadphoto.md +288 -0
- package/content/input-blocks/segmentedselector.md +782 -0
- package/content/input-blocks/selector.md +1162 -0
- package/content/input-blocks/switch.md +552 -0
- package/content/input-blocks/textarea.md +714 -0
- package/content/input-blocks/textinput.md +639 -0
- package/content/input-blocks/tiptapinput.md +226 -0
- package/content/input-blocks/tiptapmentioninput.md +471 -0
- package/content/input-blocks/titleinput.md +1094 -0
- package/content/input-blocks/treeinput.md +144 -0
- package/content/input-blocks/treemultipleselector.md +162 -0
- package/content/input-blocks/treeselector.md +185 -0
- package/content/input-blocks/upload.md +149 -0
- package/content/input-blocks/uploaddragger.md +85 -0
- package/content/input-blocks/uploadphoto.md +84 -0
- package/content/input-blocks/weekselector.md +630 -0
- package/content/list-blocks/controlledlist.md +498 -0
- package/content/list-blocks/list.md +529 -0
- package/content/list-blocks/listselector.md +301 -0
- package/content/list-blocks/masonrylist.md +230 -0
- package/content/migration/upgrade-guide.md +106 -0
- package/content/migration/v4-to-v5.md +589 -0
- package/content/migration/v5-to-v6.md +36 -0
- package/content/operators/_actions.md +58 -0
- package/content/operators/_and.md +76 -0
- package/content/operators/_api.md +254 -0
- package/content/operators/_app.md +114 -0
- package/content/operators/_args.md +65 -0
- package/content/operators/_array.md +331 -0
- package/content/operators/_base64.md +49 -0
- package/content/operators/_boolean.md +33 -0
- package/content/operators/_build.md +166 -0
- package/content/operators/_change_case.md +357 -0
- package/content/operators/_date.md +415 -0
- package/content/operators/_dayjs.md +128 -0
- package/content/operators/_diff.md +61 -0
- package/content/operators/_divide.md +32 -0
- package/content/operators/_eq.md +52 -0
- package/content/operators/_event.md +86 -0
- package/content/operators/_function.md +52 -0
- package/content/operators/_get.md +92 -0
- package/content/operators/_global.md +86 -0
- package/content/operators/_gt.md +50 -0
- package/content/operators/_gte.md +50 -0
- package/content/operators/_hash.md +112 -0
- package/content/operators/_if.md +30 -0
- package/content/operators/_if_none.md +47 -0
- package/content/operators/_index.md +48 -0
- package/content/operators/_input.md +86 -0
- package/content/operators/_intl.md +135 -0
- package/content/operators/_item.md +166 -0
- package/content/operators/_js.md +113 -0
- package/content/operators/_json.md +120 -0
- package/content/operators/_jsonata.md +152 -0
- package/content/operators/_locale.md +65 -0
- package/content/operators/_location.md +40 -0
- package/content/operators/_log.md +22 -0
- package/content/operators/_lt.md +50 -0
- package/content/operators/_lte.md +50 -0
- package/content/operators/_math.md +407 -0
- package/content/operators/_media.md +83 -0
- package/content/operators/_menu.md +62 -0
- package/content/operators/_module.md +340 -0
- package/content/operators/_mql.md +95 -0
- package/content/operators/_ne.md +62 -0
- package/content/operators/_not.md +33 -0
- package/content/operators/_number.md +159 -0
- package/content/operators/_nunjucks.md +117 -0
- package/content/operators/_object.md +253 -0
- package/content/operators/_operator.md +33 -0
- package/content/operators/_or.md +67 -0
- package/content/operators/_product.md +45 -0
- package/content/operators/_random.md +90 -0
- package/content/operators/_ref.md +80 -0
- package/content/operators/_regex.md +69 -0
- package/content/operators/_request.md +35 -0
- package/content/operators/_request_details.md +29 -0
- package/content/operators/_secret.md +56 -0
- package/content/operators/_state.md +134 -0
- package/content/operators/_step.md +98 -0
- package/content/operators/_string.md +327 -0
- package/content/operators/_subtract.md +24 -0
- package/content/operators/_sum.md +45 -0
- package/content/operators/_switch.md +37 -0
- package/content/operators/_t.md +96 -0
- package/content/operators/_theme.md +65 -0
- package/content/operators/_type.md +78 -0
- package/content/operators/_uri.md +49 -0
- package/content/operators/_url_query.md +92 -0
- package/content/operators/_user.md +154 -0
- package/content/operators/_uuid.md +118 -0
- package/content/operators/_var.md +88 -0
- package/content/operators/_yaml.md +96 -0
- package/content/other/introduction.md +39 -0
- package/content/other/next-auth-providers.md +3 -0
- package/content/other/updatesession.md +26 -0
- package/content/plugins/plugins-actions.md +80 -0
- package/content/plugins/plugins-connections.md +98 -0
- package/content/plugins/plugins-dev.md +138 -0
- package/content/plugins/plugins-introduction.md +29 -0
- package/content/plugins/plugins-operators.md +71 -0
- package/content/testing/e2e-auth.md +108 -0
- package/content/testing/e2e-configuration.md +107 -0
- package/content/testing/e2e-getting-started.md +96 -0
- package/content/testing/e2e-introduction.md +53 -0
- package/content/testing/e2e-mocking.md +155 -0
- package/content/testing/e2e-writing-tests.md +214 -0
- package/content/tutorial/tutorial-actions-operators.md +222 -0
- package/content/tutorial/tutorial-add-blocks.md +86 -0
- package/content/tutorial/tutorial-create-page.md +57 -0
- package/content/tutorial/tutorial-display-data-page.md +181 -0
- package/content/tutorial/tutorial-next-steps.md +53 -0
- package/content/tutorial/tutorial-requests-sql.md +22 -0
- package/content/tutorial/tutorial-start.md +71 -0
- package/content/user-authentication/auth-providers.md +15 -0
- package/content/user-authentication/login-and-logout.md +122 -0
- package/content/user-authentication/users-introduction.md +31 -0
- package/index.json +2281 -0
- package/package.json +34 -0
- package/scripts/extractAgentDocs.js +130 -0
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
# Microsoft SQL Server
|
|
2
|
+
|
|
3
|
+
The [Knex](/Knex) connection can be used to connect to [Microsoft SQL Server](https://www.microsoft.com/en-us/sql-server/sql-server-2019).
|
|
4
|
+
|
|
5
|
+
## Connections
|
|
6
|
+
|
|
7
|
+
Connection types:
|
|
8
|
+
- Knex
|
|
9
|
+
|
|
10
|
+
### Knex
|
|
11
|
+
|
|
12
|
+
#### Properties
|
|
13
|
+
- `client: enum`: __Required__ - Should be `mssql` to connect to Microsoft SQL Server.
|
|
14
|
+
- `connection: object | string `: __Required__ - Connection object or string to pass to the [`tedious`](https://www.npmjs.com/package/tedious) database client (knex's `mssql` dialect uses tedious internally).
|
|
15
|
+
- `useNullAsDefault: boolean`: If true, undefined keys are replaced with NULL instead of DEFAULT.
|
|
16
|
+
|
|
17
|
+
#### Examples
|
|
18
|
+
|
|
19
|
+
###### Connection object:
|
|
20
|
+
```yaml
|
|
21
|
+
connections:
|
|
22
|
+
- id: mssql
|
|
23
|
+
type: Knex
|
|
24
|
+
properties:
|
|
25
|
+
client: mssql
|
|
26
|
+
connection:
|
|
27
|
+
host:
|
|
28
|
+
_secret: MSSQL_HOST
|
|
29
|
+
database:
|
|
30
|
+
_secret: MSSQL_DB
|
|
31
|
+
user:
|
|
32
|
+
_secret: MSSQL_USER
|
|
33
|
+
password:
|
|
34
|
+
_secret: MSSQL_PASSWORD
|
|
35
|
+
```
|
|
36
|
+
Environment variables:
|
|
37
|
+
```
|
|
38
|
+
LOWDEFY_SECRET_MSSQL_HOST = database.server.com
|
|
39
|
+
LOWDEFY_SECRET_MSSQL_DB = db
|
|
40
|
+
LOWDEFY_SECRET_MSSQL_USER = user
|
|
41
|
+
LOWDEFY_SECRET_MSSQL_PASSWORD = password
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
###### Secret connection string:
|
|
45
|
+
```yaml
|
|
46
|
+
connections:
|
|
47
|
+
- id: mssql
|
|
48
|
+
type: Knex
|
|
49
|
+
properties:
|
|
50
|
+
client: mssql
|
|
51
|
+
connection:
|
|
52
|
+
_secret: MSSQL_CONNECTION_STRING
|
|
53
|
+
```
|
|
54
|
+
Environment variables:
|
|
55
|
+
```
|
|
56
|
+
LOWDEFY_SECRET_MSSQL_CONNECTION_STRING = mssql://user:password@database.server.com:1433/db
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Requests
|
|
60
|
+
|
|
61
|
+
Request types:
|
|
62
|
+
|
|
63
|
+
- KnexBuilder
|
|
64
|
+
- KnexRaw
|
|
65
|
+
|
|
66
|
+
### KnexBuilder
|
|
67
|
+
|
|
68
|
+
#### Properties
|
|
69
|
+
|
|
70
|
+
- `query: object[]`: **Required** - SQL query builder array. An array of objects, with a single key which is the name of the knex builder function. The value should be an array of arguments to pass to the builder function.
|
|
71
|
+
- `tableName: string | object`: The name of the table to query from.
|
|
72
|
+
|
|
73
|
+
#### Examples
|
|
74
|
+
|
|
75
|
+
###### Build a query:
|
|
76
|
+
|
|
77
|
+
```yaml
|
|
78
|
+
id: knexBuilder
|
|
79
|
+
type: KnexBuilder
|
|
80
|
+
connectionId: knex
|
|
81
|
+
payload:
|
|
82
|
+
name:
|
|
83
|
+
_state: name
|
|
84
|
+
properties:
|
|
85
|
+
query:
|
|
86
|
+
- select:
|
|
87
|
+
- '*'
|
|
88
|
+
- from:
|
|
89
|
+
- users
|
|
90
|
+
- where:
|
|
91
|
+
- name
|
|
92
|
+
- _payload: name
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
###### Using `tableName`:
|
|
96
|
+
|
|
97
|
+
```yaml
|
|
98
|
+
id: knexBuilder
|
|
99
|
+
type: KnexBuilder
|
|
100
|
+
connectionId: knex
|
|
101
|
+
payload:
|
|
102
|
+
name:
|
|
103
|
+
_state: name
|
|
104
|
+
properties:
|
|
105
|
+
tableName: users
|
|
106
|
+
query:
|
|
107
|
+
- select:
|
|
108
|
+
- '*'
|
|
109
|
+
- where:
|
|
110
|
+
- name
|
|
111
|
+
- _payload: name
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
###### Aliases:
|
|
115
|
+
|
|
116
|
+
```yaml
|
|
117
|
+
id: knexBuilder
|
|
118
|
+
type: KnexBuilder
|
|
119
|
+
connectionId: knex
|
|
120
|
+
properties:
|
|
121
|
+
tableName:
|
|
122
|
+
a: tableA
|
|
123
|
+
b: tableB
|
|
124
|
+
query:
|
|
125
|
+
- select:
|
|
126
|
+
- aField: 'a.field'
|
|
127
|
+
- bField: 'b.field'
|
|
128
|
+
- limit:
|
|
129
|
+
- 1
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### KnexRaw
|
|
133
|
+
|
|
134
|
+
#### Properties
|
|
135
|
+
|
|
136
|
+
- `query: string`: **Required** - SQL query string.
|
|
137
|
+
- `parameters: string | number | array | object`: SQL query parameters.
|
|
138
|
+
|
|
139
|
+
#### Examples
|
|
140
|
+
|
|
141
|
+
###### Simple raw query:
|
|
142
|
+
|
|
143
|
+
```yaml
|
|
144
|
+
id: knexRaw
|
|
145
|
+
type: KnexRaw
|
|
146
|
+
connectionId: knex
|
|
147
|
+
properties:
|
|
148
|
+
query: SELECT * FROM "my_table";
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
###### Query with named parameters:
|
|
152
|
+
|
|
153
|
+
```yaml
|
|
154
|
+
id: knexRaw
|
|
155
|
+
type: KnexRaw
|
|
156
|
+
connectionId: knex
|
|
157
|
+
payload:
|
|
158
|
+
selected_name:
|
|
159
|
+
_state: selected_name
|
|
160
|
+
properties:
|
|
161
|
+
query: select * from users where name = :name
|
|
162
|
+
parameters:
|
|
163
|
+
name:
|
|
164
|
+
_payload: selected_name
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
###### Query with positional parameters:
|
|
168
|
+
|
|
169
|
+
```yaml
|
|
170
|
+
id: knexRaw
|
|
171
|
+
type: KnexRaw
|
|
172
|
+
connectionId: knex
|
|
173
|
+
payload:
|
|
174
|
+
selected_name:
|
|
175
|
+
_state: selected_name
|
|
176
|
+
properties:
|
|
177
|
+
query: select * from users where name = ?
|
|
178
|
+
parameters:
|
|
179
|
+
- _payload: selected_name
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
###### Reference a `.sql` file:
|
|
183
|
+
|
|
184
|
+
```yaml
|
|
185
|
+
id: knexRaw
|
|
186
|
+
type: KnexRaw
|
|
187
|
+
connectionId: knex
|
|
188
|
+
properties:
|
|
189
|
+
query:
|
|
190
|
+
_ref: my_query.sql
|
|
191
|
+
```
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
# MySQL
|
|
2
|
+
|
|
3
|
+
The [Knex](/Knex) connection can be used to connect to a [MySQL](https://www.mysql.com) database.
|
|
4
|
+
|
|
5
|
+
## Connections
|
|
6
|
+
|
|
7
|
+
Connection types:
|
|
8
|
+
- Knex
|
|
9
|
+
|
|
10
|
+
### Knex
|
|
11
|
+
|
|
12
|
+
#### Properties
|
|
13
|
+
- `client: enum`: __Required__ - Should be `mysql2` to connect to MySQL. MySQL uses the [`mysql2`](https://www.npmjs.com/package/mysql2) driver.
|
|
14
|
+
- `connection: object | string `: __Required__ - Connection object or string to pass to the database client.
|
|
15
|
+
- `version: string`: Set database version.
|
|
16
|
+
- `useNullAsDefault: boolean`: If true, undefined keys are replaced with NULL instead of DEFAULT.
|
|
17
|
+
|
|
18
|
+
#### Examples
|
|
19
|
+
|
|
20
|
+
###### Connection Object:
|
|
21
|
+
```yaml
|
|
22
|
+
connections:
|
|
23
|
+
- id: mysql
|
|
24
|
+
type: Knex
|
|
25
|
+
properties:
|
|
26
|
+
client: mysql2
|
|
27
|
+
connection:
|
|
28
|
+
host:
|
|
29
|
+
_secret: MYSQL_HOST
|
|
30
|
+
user:
|
|
31
|
+
_secret: MYSQL_USER
|
|
32
|
+
database:
|
|
33
|
+
_secret: MYSQL_DB
|
|
34
|
+
password:
|
|
35
|
+
_secret: MYSQL_PASSWORD
|
|
36
|
+
```
|
|
37
|
+
Environment variables:
|
|
38
|
+
```
|
|
39
|
+
LOWDEFY_SECRET_MYSQL_HOST = database.server.com
|
|
40
|
+
LOWDEFY_SECRET_MYSQL_DB = db
|
|
41
|
+
LOWDEFY_SECRET_MYSQL_USER = user
|
|
42
|
+
LOWDEFY_SECRET_MYSQL_PASSWORD = password
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
###### Connection string:
|
|
46
|
+
```yaml
|
|
47
|
+
connections:
|
|
48
|
+
- id: mysql
|
|
49
|
+
type: Knex
|
|
50
|
+
properties:
|
|
51
|
+
client: mysql2
|
|
52
|
+
connection:
|
|
53
|
+
_secret: MYSQL_CONNECTION_STRING
|
|
54
|
+
```
|
|
55
|
+
Environment variables:
|
|
56
|
+
```
|
|
57
|
+
LOWDEFY_SECRET_MYSQL_CONNECTION_STRING = mysql://user:password@database.server.com/db
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Requests
|
|
61
|
+
|
|
62
|
+
Request types:
|
|
63
|
+
|
|
64
|
+
- KnexBuilder
|
|
65
|
+
- KnexRaw
|
|
66
|
+
|
|
67
|
+
### KnexBuilder
|
|
68
|
+
|
|
69
|
+
#### Properties
|
|
70
|
+
|
|
71
|
+
- `query: object[]`: **Required** - SQL query builder array. An array of objects, with a single key which is the name of the knex builder function. The value should be an array of arguments to pass to the builder function.
|
|
72
|
+
- `tableName: string | object`: The name of the table to query from.
|
|
73
|
+
|
|
74
|
+
#### Examples
|
|
75
|
+
|
|
76
|
+
###### Build a query:
|
|
77
|
+
|
|
78
|
+
```yaml
|
|
79
|
+
id: knexBuilder
|
|
80
|
+
type: KnexBuilder
|
|
81
|
+
connectionId: knex
|
|
82
|
+
payload:
|
|
83
|
+
name:
|
|
84
|
+
_state: name
|
|
85
|
+
properties:
|
|
86
|
+
query:
|
|
87
|
+
- select:
|
|
88
|
+
- '*'
|
|
89
|
+
- from:
|
|
90
|
+
- users
|
|
91
|
+
- where:
|
|
92
|
+
- name
|
|
93
|
+
- _payload: name
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
###### Using `tableName`:
|
|
97
|
+
|
|
98
|
+
```yaml
|
|
99
|
+
id: knexBuilder
|
|
100
|
+
type: KnexBuilder
|
|
101
|
+
connectionId: knex
|
|
102
|
+
payload:
|
|
103
|
+
name:
|
|
104
|
+
_state: name
|
|
105
|
+
properties:
|
|
106
|
+
tableName: users
|
|
107
|
+
query:
|
|
108
|
+
- select:
|
|
109
|
+
- '*'
|
|
110
|
+
- where:
|
|
111
|
+
- name
|
|
112
|
+
- _payload: name
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
###### Aliases:
|
|
116
|
+
|
|
117
|
+
```yaml
|
|
118
|
+
id: knexBuilder
|
|
119
|
+
type: KnexBuilder
|
|
120
|
+
connectionId: knex
|
|
121
|
+
properties:
|
|
122
|
+
tableName:
|
|
123
|
+
a: tableA
|
|
124
|
+
b: tableB
|
|
125
|
+
query:
|
|
126
|
+
- select:
|
|
127
|
+
- aField: 'a.field'
|
|
128
|
+
- bField: 'b.field'
|
|
129
|
+
- limit:
|
|
130
|
+
- 1
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### KnexRaw
|
|
134
|
+
|
|
135
|
+
#### Properties
|
|
136
|
+
|
|
137
|
+
- `query: string`: **Required** - SQL query string.
|
|
138
|
+
- `parameters: string | number | array | object`: SQL query parameters.
|
|
139
|
+
|
|
140
|
+
#### Examples
|
|
141
|
+
|
|
142
|
+
###### Simple raw query:
|
|
143
|
+
|
|
144
|
+
```yaml
|
|
145
|
+
id: knexRaw
|
|
146
|
+
type: KnexRaw
|
|
147
|
+
connectionId: knex
|
|
148
|
+
properties:
|
|
149
|
+
query: SELECT * FROM "my_table";
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
###### Query with named parameters:
|
|
153
|
+
|
|
154
|
+
```yaml
|
|
155
|
+
id: knexRaw
|
|
156
|
+
type: KnexRaw
|
|
157
|
+
connectionId: knex
|
|
158
|
+
payload:
|
|
159
|
+
selected_name:
|
|
160
|
+
_state: selected_name
|
|
161
|
+
properties:
|
|
162
|
+
query: select * from users where name = :name
|
|
163
|
+
parameters:
|
|
164
|
+
name:
|
|
165
|
+
_payload: selected_name
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
###### Query with positional parameters:
|
|
169
|
+
|
|
170
|
+
```yaml
|
|
171
|
+
id: knexRaw
|
|
172
|
+
type: KnexRaw
|
|
173
|
+
connectionId: knex
|
|
174
|
+
payload:
|
|
175
|
+
selected_name:
|
|
176
|
+
_state: selected_name
|
|
177
|
+
properties:
|
|
178
|
+
query: select * from users where name = ?
|
|
179
|
+
parameters:
|
|
180
|
+
- _payload: selected_name
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
###### Reference a `.sql` file:
|
|
184
|
+
|
|
185
|
+
```yaml
|
|
186
|
+
id: knexRaw
|
|
187
|
+
type: KnexRaw
|
|
188
|
+
connectionId: knex
|
|
189
|
+
properties:
|
|
190
|
+
query:
|
|
191
|
+
_ref: my_query.sql
|
|
192
|
+
```
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
# OpenAI
|
|
2
|
+
|
|
3
|
+
The OpenAI connection connects to the [OpenAI API](https://platform.openai.com/docs/) and provides the `OpenAIAgent` agent type for use with [Lowdefy agents](/agents-introduction).
|
|
4
|
+
|
|
5
|
+
> The OpenAI connection is provided by the `@lowdefy/connection-openai` package, which is included by default.
|
|
6
|
+
|
|
7
|
+
## Connections
|
|
8
|
+
|
|
9
|
+
### OpenAI
|
|
10
|
+
|
|
11
|
+
#### Properties
|
|
12
|
+
- `apiKey: string`: __Required__ - OpenAI API key. Use [`_secret`](/_secret) to reference this securely.
|
|
13
|
+
- `baseURL: string`: Optional base URL. Use this to connect to Azure OpenAI or any OpenAI-compatible endpoint.
|
|
14
|
+
|
|
15
|
+
###### Connection example:
|
|
16
|
+
```yaml
|
|
17
|
+
connections:
|
|
18
|
+
- id: openai
|
|
19
|
+
type: OpenAI
|
|
20
|
+
properties:
|
|
21
|
+
apiKey:
|
|
22
|
+
_secret: OPENAI_API_KEY
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
###### Azure OpenAI:
|
|
26
|
+
```yaml
|
|
27
|
+
connections:
|
|
28
|
+
- id: azure_openai
|
|
29
|
+
type: OpenAI
|
|
30
|
+
properties:
|
|
31
|
+
apiKey:
|
|
32
|
+
_secret: AZURE_OPENAI_API_KEY
|
|
33
|
+
baseURL: https://my-resource.openai.azure.com/openai/deployments/my-deployment
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Agent Types
|
|
37
|
+
|
|
38
|
+
### OpenAIAgent
|
|
39
|
+
|
|
40
|
+
The `OpenAIAgent` supports all [common agent properties](/agents-introduction) plus the following:
|
|
41
|
+
|
|
42
|
+
| Property | Type | Description |
|
|
43
|
+
| --- | --- | --- |
|
|
44
|
+
| `reasoningEffort` | string | Reasoning effort for reasoning models (o3, o4-mini): `'none'`, `'minimal'`, `'low'`, `'medium'`, `'high'`, or `'xhigh'`. |
|
|
45
|
+
| `reasoningSummary` | string | Reasoning summary mode: `'auto'` or `'detailed'`. |
|
|
46
|
+
|
|
47
|
+
> `reasoningEffort` and `reasoningSummary` only apply to OpenAI reasoning models (o3, o4-mini). They are ignored for standard models like gpt-4o.
|
|
48
|
+
|
|
49
|
+
###### Standard model:
|
|
50
|
+
```yaml
|
|
51
|
+
agents:
|
|
52
|
+
- id: assistant
|
|
53
|
+
type: OpenAIAgent
|
|
54
|
+
connectionId: openai
|
|
55
|
+
properties:
|
|
56
|
+
model: gpt-4o
|
|
57
|
+
instructions: |
|
|
58
|
+
You are a helpful assistant for our internal tools.
|
|
59
|
+
Search the documentation when users ask questions.
|
|
60
|
+
maxSteps: 5
|
|
61
|
+
tools:
|
|
62
|
+
- search-docs
|
|
63
|
+
- get-user-permissions
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
###### Reasoning model for complex analysis:
|
|
67
|
+
```yaml
|
|
68
|
+
agents:
|
|
69
|
+
- id: code_reviewer
|
|
70
|
+
type: OpenAIAgent
|
|
71
|
+
connectionId: openai
|
|
72
|
+
properties:
|
|
73
|
+
model: o4-mini
|
|
74
|
+
reasoningEffort: high
|
|
75
|
+
reasoningSummary: detailed
|
|
76
|
+
instructions: |
|
|
77
|
+
You review code changes for bugs, security issues, and
|
|
78
|
+
performance problems. Be thorough and specific.
|
|
79
|
+
tools:
|
|
80
|
+
- get-pull-request
|
|
81
|
+
- get-file-contents
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Requests
|
|
85
|
+
|
|
86
|
+
Request types:
|
|
87
|
+
|
|
88
|
+
- GenerateText
|
|
89
|
+
- GenerateObject
|
|
90
|
+
|
|
91
|
+
All AI provider connections (`Anthropic`, `OpenAI`, `Google`, `AIGateway`) provide the same `GenerateText` and `GenerateObject` request types — the `connectionId` selects the provider. These make a single, one-shot model call and return the result. They can be used as page requests, or as steps in [API endpoint routines](/api) — useful for classify, extract, summarize, or decide steps where the surrounding logic stays in your routine.
|
|
92
|
+
|
|
93
|
+
For multi-step tool use, see [agents](/agents-introduction) instead.
|
|
94
|
+
|
|
95
|
+
### GenerateText
|
|
96
|
+
|
|
97
|
+
Generates text from a prompt.
|
|
98
|
+
|
|
99
|
+
#### Properties
|
|
100
|
+
|
|
101
|
+
- `model: string`: **Required** - Model id to generate with.
|
|
102
|
+
- `prompt: string`: Text prompt. Use either `prompt` or `messages`, not both.
|
|
103
|
+
- `messages: object[]`: Model messages (`{ role, content }`). Use either `prompt` or `messages`, not both.
|
|
104
|
+
- `system: string`: System prompt.
|
|
105
|
+
- `maxOutputTokens: number`: Maximum number of tokens to generate.
|
|
106
|
+
- `temperature: number`: Sampling temperature (0 to 2).
|
|
107
|
+
- `topP: number`: Nucleus sampling.
|
|
108
|
+
- `topK: number`: Only sample from the top K options for each subsequent token.
|
|
109
|
+
- `frequencyPenalty: number`: Penalize repeated tokens by frequency.
|
|
110
|
+
- `presencePenalty: number`: Penalize tokens that have already appeared.
|
|
111
|
+
- `seed: number`: Seed for deterministic sampling, if supported by the model.
|
|
112
|
+
- `stopSequences: string[]`: Sequences that stop generation.
|
|
113
|
+
- `maxRetries: number`: Maximum number of retries. Defaults to 2.
|
|
114
|
+
- `providerOptions: object`: Provider-specific options, keyed by provider (e.g. `anthropic`, `openai`, `google`).
|
|
115
|
+
|
|
116
|
+
#### Response
|
|
117
|
+
|
|
118
|
+
```yaml
|
|
119
|
+
text: string # The generated text.
|
|
120
|
+
reasoningText: string # Reasoning text, when the model produced any.
|
|
121
|
+
finishReason: string # 'stop', 'length', 'content-filter', ...
|
|
122
|
+
usage: object # Token usage ({ inputTokens, outputTokens, totalTokens, ... }).
|
|
123
|
+
providerMetadata: object # Provider-specific metadata, when returned.
|
|
124
|
+
warnings: array # Call warnings from the provider, when returned.
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
#### Examples
|
|
128
|
+
|
|
129
|
+
###### Summarize text in an API endpoint routine:
|
|
130
|
+
|
|
131
|
+
```yaml
|
|
132
|
+
api:
|
|
133
|
+
- id: summarize-text
|
|
134
|
+
type: Api
|
|
135
|
+
routine:
|
|
136
|
+
- id: summarize
|
|
137
|
+
type: GenerateText
|
|
138
|
+
connectionId: claude
|
|
139
|
+
properties:
|
|
140
|
+
model: claude-haiku-4-5
|
|
141
|
+
system: You are a concise summarizer.
|
|
142
|
+
prompt:
|
|
143
|
+
_payload: text
|
|
144
|
+
- ':return':
|
|
145
|
+
summary:
|
|
146
|
+
_step: summarize.text
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
###### Text generation as a page request:
|
|
150
|
+
|
|
151
|
+
```yaml
|
|
152
|
+
requests:
|
|
153
|
+
- id: generate_reply
|
|
154
|
+
type: GenerateText
|
|
155
|
+
connectionId: claude
|
|
156
|
+
payload:
|
|
157
|
+
message:
|
|
158
|
+
_state: customer_message
|
|
159
|
+
properties:
|
|
160
|
+
model: claude-haiku-4-5
|
|
161
|
+
system: Draft a friendly reply to the customer message.
|
|
162
|
+
prompt:
|
|
163
|
+
_payload: message
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### GenerateObject
|
|
167
|
+
|
|
168
|
+
Generates a structured object matching a JSON Schema. Ideal for classification, extraction, and routing decisions — the result lands in `_step` (or `_request`) as plain data your config can act on.
|
|
169
|
+
|
|
170
|
+
#### Properties
|
|
171
|
+
|
|
172
|
+
Takes the same properties as `GenerateText`, except `stopSequences`, plus:
|
|
173
|
+
|
|
174
|
+
- `schema: object`: **Required** - JSON Schema describing the object the model must generate.
|
|
175
|
+
- `schemaName: string`: Optional name for the output schema, passed to the model.
|
|
176
|
+
- `schemaDescription: string`: Optional description of the output schema, passed to the model.
|
|
177
|
+
|
|
178
|
+
#### Response
|
|
179
|
+
|
|
180
|
+
```yaml
|
|
181
|
+
object: object # The generated object, matching the schema.
|
|
182
|
+
reasoningText: string # Reasoning text, when the model produced any.
|
|
183
|
+
finishReason: string # 'stop', 'length', 'content-filter', ...
|
|
184
|
+
usage: object # Token usage ({ inputTokens, outputTokens, totalTokens, ... }).
|
|
185
|
+
providerMetadata: object # Provider-specific metadata, when returned.
|
|
186
|
+
warnings: array # Call warnings from the provider, when returned.
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
#### Examples
|
|
190
|
+
|
|
191
|
+
###### Classify then route in an API endpoint routine:
|
|
192
|
+
|
|
193
|
+
```yaml
|
|
194
|
+
api:
|
|
195
|
+
- id: triage-ticket
|
|
196
|
+
type: Api
|
|
197
|
+
routine:
|
|
198
|
+
- id: classify
|
|
199
|
+
type: GenerateObject
|
|
200
|
+
connectionId: claude
|
|
201
|
+
properties:
|
|
202
|
+
model: claude-haiku-4-5
|
|
203
|
+
prompt:
|
|
204
|
+
_payload: ticket_text
|
|
205
|
+
schema:
|
|
206
|
+
type: object
|
|
207
|
+
properties:
|
|
208
|
+
category:
|
|
209
|
+
type: string
|
|
210
|
+
enum:
|
|
211
|
+
- billing
|
|
212
|
+
- technical
|
|
213
|
+
- other
|
|
214
|
+
urgent:
|
|
215
|
+
type: boolean
|
|
216
|
+
- ':if':
|
|
217
|
+
_eq:
|
|
218
|
+
- _step: classify.object.urgent
|
|
219
|
+
- true
|
|
220
|
+
':then':
|
|
221
|
+
- id: escalate
|
|
222
|
+
type: CallApi
|
|
223
|
+
properties:
|
|
224
|
+
endpointId: escalate-ticket
|
|
225
|
+
payload:
|
|
226
|
+
category:
|
|
227
|
+
_step: classify.object.category
|
|
228
|
+
```
|