@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.
Files changed (304) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +20 -0
  3. package/content/actions/callapi.md +66 -0
  4. package/content/actions/callmethod.md +41 -0
  5. package/content/actions/copytoclipboard.md +32 -0
  6. package/content/actions/displaymessage.md +53 -0
  7. package/content/actions/downloadcsv.md +89 -0
  8. package/content/actions/fetch.md +50 -0
  9. package/content/actions/geolocationcurrentposition.md +56 -0
  10. package/content/actions/link.md +104 -0
  11. package/content/actions/login.md +85 -0
  12. package/content/actions/logout.md +56 -0
  13. package/content/actions/pdfmake.md +304 -0
  14. package/content/actions/request.md +67 -0
  15. package/content/actions/reset.md +27 -0
  16. package/content/actions/resetvalidation.md +85 -0
  17. package/content/actions/scrollto.md +85 -0
  18. package/content/actions/setdarkmode.md +62 -0
  19. package/content/actions/setfocus.md +33 -0
  20. package/content/actions/setglobal.md +63 -0
  21. package/content/actions/setlocale.md +69 -0
  22. package/content/actions/setstate.md +70 -0
  23. package/content/actions/throw.md +72 -0
  24. package/content/actions/validate.md +87 -0
  25. package/content/actions/wait.md +24 -0
  26. package/content/agents/agent-endpoint-tools.md +190 -0
  27. package/content/agents/agent-mcp-tools.md +124 -0
  28. package/content/agents/agent-multi-agent.md +136 -0
  29. package/content/agents/agent-properties.md +174 -0
  30. package/content/agents/agent-server-hooks.md +336 -0
  31. package/content/agents/agentchat.md +515 -0
  32. package/content/agents/agentconversations.md +148 -0
  33. package/content/concepts/ai-agent-docs.md +190 -0
  34. package/content/concepts/cli.md +213 -0
  35. package/content/concepts/connections-and-requests.md +7 -0
  36. package/content/concepts/custom-html.md +3 -0
  37. package/content/concepts/custom-styling.md +161 -0
  38. package/content/concepts/events-and-actions.md +271 -0
  39. package/content/concepts/hosting-files.md +18 -0
  40. package/content/concepts/i18n.md +320 -0
  41. package/content/concepts/keyboard-shortcuts.md +218 -0
  42. package/content/concepts/layout-overview.md +478 -0
  43. package/content/concepts/lists.md +144 -0
  44. package/content/concepts/logger.md +43 -0
  45. package/content/concepts/lowdefy-schema.md +365 -0
  46. package/content/concepts/menus.md +144 -0
  47. package/content/concepts/module-authoring.md +564 -0
  48. package/content/concepts/modules.md +338 -0
  49. package/content/concepts/operators.md +45 -0
  50. package/content/concepts/overview.md +19 -0
  51. package/content/concepts/references-and-templates.md +207 -0
  52. package/content/concepts/secrets.md +24 -0
  53. package/content/concepts/selectors.md +143 -0
  54. package/content/connections/amazonredshift.md +176 -0
  55. package/content/connections/anthropic.md +232 -0
  56. package/content/connections/awss3.md +313 -0
  57. package/content/connections/azureblobstorage.md +133 -0
  58. package/content/connections/elasticsearch.md +371 -0
  59. package/content/connections/google.md +228 -0
  60. package/content/connections/googlecloudstorage.md +139 -0
  61. package/content/connections/googlesheet.md +313 -0
  62. package/content/connections/knex.md +206 -0
  63. package/content/connections/mariadb.md +177 -0
  64. package/content/connections/mcp.md +134 -0
  65. package/content/connections/mongodb.md +739 -0
  66. package/content/connections/mssql.md +191 -0
  67. package/content/connections/mysql.md +192 -0
  68. package/content/connections/openai-connection.md +228 -0
  69. package/content/connections/postgresql.md +200 -0
  70. package/content/connections/redis.md +116 -0
  71. package/content/connections/sendgridmail.md +94 -0
  72. package/content/connections/smtp.md +149 -0
  73. package/content/connections/sqlite.md +187 -0
  74. package/content/connections/stripe.md +115 -0
  75. package/content/container-blocks/affix.md +413 -0
  76. package/content/container-blocks/alert.md +937 -0
  77. package/content/container-blocks/badge.md +1222 -0
  78. package/content/container-blocks/box.md +1453 -0
  79. package/content/container-blocks/card.md +1200 -0
  80. package/content/container-blocks/carousel.md +2247 -0
  81. package/content/container-blocks/collapse.md +1335 -0
  82. package/content/container-blocks/configprovider.md +1070 -0
  83. package/content/container-blocks/confirmmodal.md +1159 -0
  84. package/content/container-blocks/content.md +597 -0
  85. package/content/container-blocks/descriptions.md +870 -0
  86. package/content/container-blocks/drawer.md +1379 -0
  87. package/content/container-blocks/dropdownmenu.md +643 -0
  88. package/content/container-blocks/flex.md +1510 -0
  89. package/content/container-blocks/footer.md +380 -0
  90. package/content/container-blocks/googlemaps.md +546 -0
  91. package/content/container-blocks/googlemapsheatmap.md +607 -0
  92. package/content/container-blocks/googlemapsscript.md +61 -0
  93. package/content/container-blocks/header.md +302 -0
  94. package/content/container-blocks/label.md +739 -0
  95. package/content/container-blocks/layout.md +604 -0
  96. package/content/container-blocks/masonry.md +1090 -0
  97. package/content/container-blocks/mobilemenu.md +1244 -0
  98. package/content/container-blocks/modal.md +1180 -0
  99. package/content/container-blocks/pageheadermenu.md +614 -0
  100. package/content/container-blocks/pagesidebarlayout.md +438 -0
  101. package/content/container-blocks/pagesidermenu.md +651 -0
  102. package/content/container-blocks/popover.md +1421 -0
  103. package/content/container-blocks/result.md +972 -0
  104. package/content/container-blocks/sider.md +1064 -0
  105. package/content/container-blocks/span.md +747 -0
  106. package/content/container-blocks/spinner.md +267 -0
  107. package/content/container-blocks/splitter.md +1735 -0
  108. package/content/container-blocks/tabs.md +1718 -0
  109. package/content/container-blocks/tooltip.md +1274 -0
  110. package/content/container-blocks/watermark.md +515 -0
  111. package/content/controls/for.md +103 -0
  112. package/content/controls/if.md +107 -0
  113. package/content/controls/log.md +50 -0
  114. package/content/controls/parallel.md +71 -0
  115. package/content/controls/parallel_for.md +36 -0
  116. package/content/controls/reject.md +56 -0
  117. package/content/controls/return.md +66 -0
  118. package/content/controls/set_state.md +98 -0
  119. package/content/controls/switch.md +90 -0
  120. package/content/controls/throw.md +79 -0
  121. package/content/controls/try.md +88 -0
  122. package/content/deployment/docker.md +149 -0
  123. package/content/deployment/node-server.md +27 -0
  124. package/content/deployment/vercel.md +101 -0
  125. package/content/display-blocks/aggrid.md +1459 -0
  126. package/content/display-blocks/anchor.md +336 -0
  127. package/content/display-blocks/avatar.md +1154 -0
  128. package/content/display-blocks/breadcrumb.md +517 -0
  129. package/content/display-blocks/button.md +758 -0
  130. package/content/display-blocks/calendar.md +156 -0
  131. package/content/display-blocks/dangeroushtml.md +314 -0
  132. package/content/display-blocks/dangerousmarkdown.md +423 -0
  133. package/content/display-blocks/diffgit.md +44 -0
  134. package/content/display-blocks/difflist.md +225 -0
  135. package/content/display-blocks/diffsidebyside.md +56 -0
  136. package/content/display-blocks/difftimeline.md +94 -0
  137. package/content/display-blocks/divider.md +406 -0
  138. package/content/display-blocks/download.md +60 -0
  139. package/content/display-blocks/dropdownbutton.md +661 -0
  140. package/content/display-blocks/echart.md +418 -0
  141. package/content/display-blocks/floatbutton.md +545 -0
  142. package/content/display-blocks/html.md +311 -0
  143. package/content/display-blocks/icon.md +717 -0
  144. package/content/display-blocks/img.md +479 -0
  145. package/content/display-blocks/markdown.md +520 -0
  146. package/content/display-blocks/markdownwithcode.md +730 -0
  147. package/content/display-blocks/menu.md +1123 -0
  148. package/content/display-blocks/message.md +941 -0
  149. package/content/display-blocks/notification.md +1410 -0
  150. package/content/display-blocks/paragraph.md +643 -0
  151. package/content/display-blocks/progress.md +818 -0
  152. package/content/display-blocks/qrcode.md +519 -0
  153. package/content/display-blocks/s3download.md +240 -0
  154. package/content/display-blocks/search.md +360 -0
  155. package/content/display-blocks/skeleton.md +272 -0
  156. package/content/display-blocks/skeletonavatar.md +222 -0
  157. package/content/display-blocks/skeletonbutton.md +245 -0
  158. package/content/display-blocks/skeletoninput.md +223 -0
  159. package/content/display-blocks/skeletonparagraph.md +201 -0
  160. package/content/display-blocks/statistic.md +485 -0
  161. package/content/display-blocks/steps.md +585 -0
  162. package/content/display-blocks/tag.md +620 -0
  163. package/content/display-blocks/title.md +654 -0
  164. package/content/display-blocks/tour.md +2359 -0
  165. package/content/input-blocks/autocomplete.md +786 -0
  166. package/content/input-blocks/buttonselector.md +964 -0
  167. package/content/input-blocks/checkboxselector.md +765 -0
  168. package/content/input-blocks/checkboxswitch.md +497 -0
  169. package/content/input-blocks/colorselector.md +884 -0
  170. package/content/input-blocks/daterangeselector.md +777 -0
  171. package/content/input-blocks/dateselector.md +693 -0
  172. package/content/input-blocks/datetimeselector.md +791 -0
  173. package/content/input-blocks/inputgallery.md +528 -0
  174. package/content/input-blocks/monthselector.md +717 -0
  175. package/content/input-blocks/multipleselector.md +1337 -0
  176. package/content/input-blocks/numberinput.md +855 -0
  177. package/content/input-blocks/pagination.md +679 -0
  178. package/content/input-blocks/paragraphinput.md +1664 -0
  179. package/content/input-blocks/passwordinput.md +480 -0
  180. package/content/input-blocks/phonenumberinput.md +688 -0
  181. package/content/input-blocks/radioselector.md +820 -0
  182. package/content/input-blocks/ratingslider.md +684 -0
  183. package/content/input-blocks/s3uploadbutton.md +384 -0
  184. package/content/input-blocks/s3uploaddragger.md +305 -0
  185. package/content/input-blocks/s3uploadphoto.md +288 -0
  186. package/content/input-blocks/segmentedselector.md +782 -0
  187. package/content/input-blocks/selector.md +1162 -0
  188. package/content/input-blocks/switch.md +552 -0
  189. package/content/input-blocks/textarea.md +714 -0
  190. package/content/input-blocks/textinput.md +639 -0
  191. package/content/input-blocks/tiptapinput.md +226 -0
  192. package/content/input-blocks/tiptapmentioninput.md +471 -0
  193. package/content/input-blocks/titleinput.md +1094 -0
  194. package/content/input-blocks/treeinput.md +144 -0
  195. package/content/input-blocks/treemultipleselector.md +162 -0
  196. package/content/input-blocks/treeselector.md +185 -0
  197. package/content/input-blocks/upload.md +149 -0
  198. package/content/input-blocks/uploaddragger.md +85 -0
  199. package/content/input-blocks/uploadphoto.md +84 -0
  200. package/content/input-blocks/weekselector.md +630 -0
  201. package/content/list-blocks/controlledlist.md +498 -0
  202. package/content/list-blocks/list.md +529 -0
  203. package/content/list-blocks/listselector.md +301 -0
  204. package/content/list-blocks/masonrylist.md +230 -0
  205. package/content/migration/upgrade-guide.md +106 -0
  206. package/content/migration/v4-to-v5.md +589 -0
  207. package/content/migration/v5-to-v6.md +36 -0
  208. package/content/operators/_actions.md +58 -0
  209. package/content/operators/_and.md +76 -0
  210. package/content/operators/_api.md +254 -0
  211. package/content/operators/_app.md +114 -0
  212. package/content/operators/_args.md +65 -0
  213. package/content/operators/_array.md +331 -0
  214. package/content/operators/_base64.md +49 -0
  215. package/content/operators/_boolean.md +33 -0
  216. package/content/operators/_build.md +166 -0
  217. package/content/operators/_change_case.md +357 -0
  218. package/content/operators/_date.md +415 -0
  219. package/content/operators/_dayjs.md +128 -0
  220. package/content/operators/_diff.md +61 -0
  221. package/content/operators/_divide.md +32 -0
  222. package/content/operators/_eq.md +52 -0
  223. package/content/operators/_event.md +86 -0
  224. package/content/operators/_function.md +52 -0
  225. package/content/operators/_get.md +92 -0
  226. package/content/operators/_global.md +86 -0
  227. package/content/operators/_gt.md +50 -0
  228. package/content/operators/_gte.md +50 -0
  229. package/content/operators/_hash.md +112 -0
  230. package/content/operators/_if.md +30 -0
  231. package/content/operators/_if_none.md +47 -0
  232. package/content/operators/_index.md +48 -0
  233. package/content/operators/_input.md +86 -0
  234. package/content/operators/_intl.md +135 -0
  235. package/content/operators/_item.md +166 -0
  236. package/content/operators/_js.md +113 -0
  237. package/content/operators/_json.md +120 -0
  238. package/content/operators/_jsonata.md +152 -0
  239. package/content/operators/_locale.md +65 -0
  240. package/content/operators/_location.md +40 -0
  241. package/content/operators/_log.md +22 -0
  242. package/content/operators/_lt.md +50 -0
  243. package/content/operators/_lte.md +50 -0
  244. package/content/operators/_math.md +407 -0
  245. package/content/operators/_media.md +83 -0
  246. package/content/operators/_menu.md +62 -0
  247. package/content/operators/_module.md +340 -0
  248. package/content/operators/_mql.md +95 -0
  249. package/content/operators/_ne.md +62 -0
  250. package/content/operators/_not.md +33 -0
  251. package/content/operators/_number.md +159 -0
  252. package/content/operators/_nunjucks.md +117 -0
  253. package/content/operators/_object.md +253 -0
  254. package/content/operators/_operator.md +33 -0
  255. package/content/operators/_or.md +67 -0
  256. package/content/operators/_product.md +45 -0
  257. package/content/operators/_random.md +90 -0
  258. package/content/operators/_ref.md +80 -0
  259. package/content/operators/_regex.md +69 -0
  260. package/content/operators/_request.md +35 -0
  261. package/content/operators/_request_details.md +29 -0
  262. package/content/operators/_secret.md +56 -0
  263. package/content/operators/_state.md +134 -0
  264. package/content/operators/_step.md +98 -0
  265. package/content/operators/_string.md +327 -0
  266. package/content/operators/_subtract.md +24 -0
  267. package/content/operators/_sum.md +45 -0
  268. package/content/operators/_switch.md +37 -0
  269. package/content/operators/_t.md +96 -0
  270. package/content/operators/_theme.md +65 -0
  271. package/content/operators/_type.md +78 -0
  272. package/content/operators/_uri.md +49 -0
  273. package/content/operators/_url_query.md +92 -0
  274. package/content/operators/_user.md +154 -0
  275. package/content/operators/_uuid.md +118 -0
  276. package/content/operators/_var.md +88 -0
  277. package/content/operators/_yaml.md +96 -0
  278. package/content/other/introduction.md +39 -0
  279. package/content/other/next-auth-providers.md +3 -0
  280. package/content/other/updatesession.md +26 -0
  281. package/content/plugins/plugins-actions.md +80 -0
  282. package/content/plugins/plugins-connections.md +98 -0
  283. package/content/plugins/plugins-dev.md +138 -0
  284. package/content/plugins/plugins-introduction.md +29 -0
  285. package/content/plugins/plugins-operators.md +71 -0
  286. package/content/testing/e2e-auth.md +108 -0
  287. package/content/testing/e2e-configuration.md +107 -0
  288. package/content/testing/e2e-getting-started.md +96 -0
  289. package/content/testing/e2e-introduction.md +53 -0
  290. package/content/testing/e2e-mocking.md +155 -0
  291. package/content/testing/e2e-writing-tests.md +214 -0
  292. package/content/tutorial/tutorial-actions-operators.md +222 -0
  293. package/content/tutorial/tutorial-add-blocks.md +86 -0
  294. package/content/tutorial/tutorial-create-page.md +57 -0
  295. package/content/tutorial/tutorial-display-data-page.md +181 -0
  296. package/content/tutorial/tutorial-next-steps.md +53 -0
  297. package/content/tutorial/tutorial-requests-sql.md +22 -0
  298. package/content/tutorial/tutorial-start.md +71 -0
  299. package/content/user-authentication/auth-providers.md +15 -0
  300. package/content/user-authentication/login-and-logout.md +122 -0
  301. package/content/user-authentication/users-introduction.md +31 -0
  302. package/index.json +2281 -0
  303. package/package.json +34 -0
  304. 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
+ ```