@databricks/appkit 0.4.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (201) hide show
  1. package/CLAUDE.md +1 -0
  2. package/dist/analytics/analytics.d.ts +11 -1
  3. package/dist/analytics/analytics.d.ts.map +1 -1
  4. package/dist/analytics/analytics.js +12 -5
  5. package/dist/analytics/analytics.js.map +1 -1
  6. package/dist/appkit/package.js +1 -1
  7. package/dist/cache/index.js +11 -10
  8. package/dist/cache/index.js.map +1 -1
  9. package/dist/cache/storage/memory.js +4 -2
  10. package/dist/cache/storage/memory.js.map +1 -1
  11. package/dist/cache/storage/persistent.js +7 -0
  12. package/dist/cache/storage/persistent.js.map +1 -1
  13. package/dist/connectors/lakebase/client.js +8 -4
  14. package/dist/connectors/lakebase/client.js.map +1 -1
  15. package/dist/connectors/sql-warehouse/client.js +5 -2
  16. package/dist/connectors/sql-warehouse/client.js.map +1 -1
  17. package/dist/context/execution-context.d.ts +17 -0
  18. package/dist/context/execution-context.d.ts.map +1 -0
  19. package/dist/context/service-context.d.ts +21 -0
  20. package/dist/context/service-context.d.ts.map +1 -0
  21. package/dist/context/service-context.js +2 -6
  22. package/dist/context/service-context.js.map +1 -1
  23. package/dist/context/user-context.d.ts +29 -0
  24. package/dist/context/user-context.d.ts.map +1 -0
  25. package/dist/core/appkit.d.ts.map +1 -1
  26. package/dist/core/appkit.js +35 -12
  27. package/dist/core/appkit.js.map +1 -1
  28. package/dist/errors/authentication.js +3 -6
  29. package/dist/errors/authentication.js.map +1 -1
  30. package/dist/errors/base.js +4 -0
  31. package/dist/errors/base.js.map +1 -1
  32. package/dist/errors/configuration.js +3 -6
  33. package/dist/errors/configuration.js.map +1 -1
  34. package/dist/errors/connection.js +3 -6
  35. package/dist/errors/connection.js.map +1 -1
  36. package/dist/errors/execution.js +3 -6
  37. package/dist/errors/execution.js.map +1 -1
  38. package/dist/errors/initialization.js +3 -6
  39. package/dist/errors/initialization.js.map +1 -1
  40. package/dist/errors/server.js +3 -6
  41. package/dist/errors/server.js.map +1 -1
  42. package/dist/errors/tunnel.js +3 -6
  43. package/dist/errors/tunnel.js.map +1 -1
  44. package/dist/errors/validation.js +3 -6
  45. package/dist/errors/validation.js.map +1 -1
  46. package/dist/index.d.ts +2 -1
  47. package/dist/index.js +4 -1
  48. package/dist/index.js.map +1 -1
  49. package/dist/logging/wide-event-emitter.js +1 -3
  50. package/dist/logging/wide-event-emitter.js.map +1 -1
  51. package/dist/logging/wide-event.js +2 -0
  52. package/dist/logging/wide-event.js.map +1 -1
  53. package/dist/plugin/dev-reader.js +3 -6
  54. package/dist/plugin/dev-reader.js.map +1 -1
  55. package/dist/plugin/interceptors/retry.js +3 -0
  56. package/dist/plugin/interceptors/retry.js.map +1 -1
  57. package/dist/plugin/plugin.d.ts +10 -24
  58. package/dist/plugin/plugin.d.ts.map +1 -1
  59. package/dist/plugin/plugin.js +23 -30
  60. package/dist/plugin/plugin.js.map +1 -1
  61. package/dist/server/base-server.js +2 -0
  62. package/dist/server/base-server.js.map +1 -1
  63. package/dist/server/index.d.ts +23 -1
  64. package/dist/server/index.d.ts.map +1 -1
  65. package/dist/server/index.js +29 -13
  66. package/dist/server/index.js.map +1 -1
  67. package/dist/server/remote-tunnel/remote-tunnel-controller.js +30 -15
  68. package/dist/server/remote-tunnel/remote-tunnel-controller.js.map +1 -1
  69. package/dist/server/remote-tunnel/remote-tunnel-manager.js +5 -1
  70. package/dist/server/remote-tunnel/remote-tunnel-manager.js.map +1 -1
  71. package/dist/server/static-server.js +1 -0
  72. package/dist/server/static-server.js.map +1 -1
  73. package/dist/server/vite-dev-server.js +1 -0
  74. package/dist/server/vite-dev-server.js.map +1 -1
  75. package/dist/shared/src/plugin.d.ts +25 -1
  76. package/dist/shared/src/plugin.d.ts.map +1 -1
  77. package/dist/stream/arrow-stream-processor.js +5 -10
  78. package/dist/stream/arrow-stream-processor.js.map +1 -1
  79. package/dist/stream/buffers.js +7 -0
  80. package/dist/stream/buffers.js.map +1 -1
  81. package/dist/stream/stream-manager.js +5 -0
  82. package/dist/stream/stream-manager.js.map +1 -1
  83. package/dist/stream/stream-registry.js +1 -0
  84. package/dist/stream/stream-registry.js.map +1 -1
  85. package/dist/stream/validator.js +2 -6
  86. package/dist/stream/validator.js.map +1 -1
  87. package/dist/telemetry/noop.js +1 -0
  88. package/dist/telemetry/noop.js.map +1 -1
  89. package/dist/telemetry/telemetry-manager.js +4 -6
  90. package/dist/telemetry/telemetry-manager.js.map +1 -1
  91. package/dist/telemetry/telemetry-provider.js +3 -0
  92. package/dist/telemetry/telemetry-provider.js.map +1 -1
  93. package/dist/type-generator/spinner.js +9 -11
  94. package/dist/type-generator/spinner.js.map +1 -1
  95. package/docs/docs/api/appkit/Class.AppKitError/index.html +5 -3
  96. package/docs/docs/api/appkit/Class.AppKitError.md +7 -0
  97. package/docs/docs/api/appkit/Class.AuthenticationError/index.html +3 -3
  98. package/docs/docs/api/appkit/Class.ConfigurationError/index.html +3 -3
  99. package/docs/docs/api/appkit/Class.ConnectionError/index.html +3 -3
  100. package/docs/docs/api/appkit/Class.ExecutionError/index.html +3 -3
  101. package/docs/docs/api/appkit/Class.InitializationError/index.html +3 -3
  102. package/docs/docs/api/appkit/Class.Plugin/index.html +28 -21
  103. package/docs/docs/api/appkit/Class.Plugin.md +34 -34
  104. package/docs/docs/api/appkit/Class.ServerError/index.html +3 -3
  105. package/docs/docs/api/appkit/Class.TunnelError/index.html +3 -3
  106. package/docs/docs/api/appkit/Class.ValidationError/index.html +3 -3
  107. package/docs/docs/api/appkit/Function.appKitTypesPlugin/index.html +3 -3
  108. package/docs/docs/api/appkit/Function.createApp/index.html +4 -4
  109. package/docs/docs/api/appkit/Function.getExecutionContext/index.html +26 -0
  110. package/docs/docs/api/appkit/Function.getExecutionContext.md +19 -0
  111. package/docs/docs/api/appkit/Function.isSQLTypeMarker/index.html +4 -4
  112. package/docs/docs/api/appkit/Interface.BasePluginConfig/index.html +3 -3
  113. package/docs/docs/api/appkit/Interface.CacheConfig/index.html +3 -3
  114. package/docs/docs/api/appkit/Interface.ITelemetry/index.html +3 -3
  115. package/docs/docs/api/appkit/Interface.StreamExecutionSettings/index.html +3 -3
  116. package/docs/docs/api/appkit/Interface.TelemetryConfig/index.html +3 -3
  117. package/docs/docs/api/appkit/TypeAlias.IAppRouter/index.html +3 -3
  118. package/docs/docs/api/appkit/Variable.sql/index.html +3 -3
  119. package/docs/docs/api/appkit/index.html +4 -4
  120. package/docs/docs/api/appkit-ui/data/AreaChart/index.html +2 -2
  121. package/docs/docs/api/appkit-ui/data/BarChart/index.html +2 -2
  122. package/docs/docs/api/appkit-ui/data/DataTable/index.html +2 -2
  123. package/docs/docs/api/appkit-ui/data/DonutChart/index.html +2 -2
  124. package/docs/docs/api/appkit-ui/data/HeatmapChart/index.html +2 -2
  125. package/docs/docs/api/appkit-ui/data/LineChart/index.html +2 -2
  126. package/docs/docs/api/appkit-ui/data/PieChart/index.html +2 -2
  127. package/docs/docs/api/appkit-ui/data/RadarChart/index.html +2 -2
  128. package/docs/docs/api/appkit-ui/data/ScatterChart/index.html +2 -2
  129. package/docs/docs/api/appkit-ui/index.html +2 -2
  130. package/docs/docs/api/appkit-ui/styling/index.html +2 -2
  131. package/docs/docs/api/appkit-ui/ui/Accordion/index.html +2 -2
  132. package/docs/docs/api/appkit-ui/ui/Alert/index.html +2 -2
  133. package/docs/docs/api/appkit-ui/ui/AlertDialog/index.html +2 -2
  134. package/docs/docs/api/appkit-ui/ui/AspectRatio/index.html +2 -2
  135. package/docs/docs/api/appkit-ui/ui/Avatar/index.html +2 -2
  136. package/docs/docs/api/appkit-ui/ui/Badge/index.html +2 -2
  137. package/docs/docs/api/appkit-ui/ui/Breadcrumb/index.html +2 -2
  138. package/docs/docs/api/appkit-ui/ui/Button/index.html +2 -2
  139. package/docs/docs/api/appkit-ui/ui/ButtonGroup/index.html +2 -2
  140. package/docs/docs/api/appkit-ui/ui/Calendar/index.html +2 -2
  141. package/docs/docs/api/appkit-ui/ui/Card/index.html +2 -2
  142. package/docs/docs/api/appkit-ui/ui/Carousel/index.html +2 -2
  143. package/docs/docs/api/appkit-ui/ui/ChartContainer/index.html +2 -2
  144. package/docs/docs/api/appkit-ui/ui/Checkbox/index.html +2 -2
  145. package/docs/docs/api/appkit-ui/ui/Collapsible/index.html +2 -2
  146. package/docs/docs/api/appkit-ui/ui/Command/index.html +2 -2
  147. package/docs/docs/api/appkit-ui/ui/ContextMenu/index.html +2 -2
  148. package/docs/docs/api/appkit-ui/ui/Dialog/index.html +2 -2
  149. package/docs/docs/api/appkit-ui/ui/Drawer/index.html +2 -2
  150. package/docs/docs/api/appkit-ui/ui/DropdownMenu/index.html +2 -2
  151. package/docs/docs/api/appkit-ui/ui/Empty/index.html +2 -2
  152. package/docs/docs/api/appkit-ui/ui/Field/index.html +2 -2
  153. package/docs/docs/api/appkit-ui/ui/FormControl/index.html +2 -2
  154. package/docs/docs/api/appkit-ui/ui/HoverCard/index.html +2 -2
  155. package/docs/docs/api/appkit-ui/ui/Input/index.html +2 -2
  156. package/docs/docs/api/appkit-ui/ui/InputGroup/index.html +2 -2
  157. package/docs/docs/api/appkit-ui/ui/InputOTP/index.html +2 -2
  158. package/docs/docs/api/appkit-ui/ui/Item/index.html +2 -2
  159. package/docs/docs/api/appkit-ui/ui/Kbd/index.html +2 -2
  160. package/docs/docs/api/appkit-ui/ui/Label/index.html +2 -2
  161. package/docs/docs/api/appkit-ui/ui/Menubar/index.html +2 -2
  162. package/docs/docs/api/appkit-ui/ui/NavigationMenu/index.html +2 -2
  163. package/docs/docs/api/appkit-ui/ui/Pagination/index.html +2 -2
  164. package/docs/docs/api/appkit-ui/ui/Popover/index.html +2 -2
  165. package/docs/docs/api/appkit-ui/ui/Progress/index.html +2 -2
  166. package/docs/docs/api/appkit-ui/ui/RadioGroup/index.html +2 -2
  167. package/docs/docs/api/appkit-ui/ui/ResizableHandle/index.html +2 -2
  168. package/docs/docs/api/appkit-ui/ui/ScrollArea/index.html +2 -2
  169. package/docs/docs/api/appkit-ui/ui/Select/index.html +2 -2
  170. package/docs/docs/api/appkit-ui/ui/Separator/index.html +2 -2
  171. package/docs/docs/api/appkit-ui/ui/Sheet/index.html +2 -2
  172. package/docs/docs/api/appkit-ui/ui/Sidebar/index.html +2 -2
  173. package/docs/docs/api/appkit-ui/ui/Skeleton/index.html +2 -2
  174. package/docs/docs/api/appkit-ui/ui/Slider/index.html +2 -2
  175. package/docs/docs/api/appkit-ui/ui/Spinner/index.html +2 -2
  176. package/docs/docs/api/appkit-ui/ui/Switch/index.html +2 -2
  177. package/docs/docs/api/appkit-ui/ui/Table/index.html +2 -2
  178. package/docs/docs/api/appkit-ui/ui/Tabs/index.html +2 -2
  179. package/docs/docs/api/appkit-ui/ui/Textarea/index.html +2 -2
  180. package/docs/docs/api/appkit-ui/ui/Toaster/index.html +2 -2
  181. package/docs/docs/api/appkit-ui/ui/Toggle/index.html +2 -2
  182. package/docs/docs/api/appkit-ui/ui/ToggleGroup/index.html +2 -2
  183. package/docs/docs/api/appkit-ui/ui/Tooltip/index.html +2 -2
  184. package/docs/docs/api/appkit.md +6 -5
  185. package/docs/docs/api/index.html +2 -2
  186. package/docs/docs/app-management/index.html +2 -2
  187. package/docs/docs/architecture/index.html +2 -2
  188. package/docs/docs/category/development/index.html +2 -2
  189. package/docs/docs/configuration/index.html +2 -2
  190. package/docs/docs/core-principles/index.html +2 -2
  191. package/docs/docs/development/index.html +2 -2
  192. package/docs/docs/development/llm-guide/index.html +2 -2
  193. package/docs/docs/development/local-development/index.html +2 -2
  194. package/docs/docs/development/project-setup/index.html +2 -2
  195. package/docs/docs/development/remote-bridge/index.html +2 -2
  196. package/docs/docs/development/type-generation/index.html +2 -2
  197. package/docs/docs/index.html +2 -2
  198. package/docs/docs/plugins/index.html +7 -3
  199. package/docs/docs/plugins.md +36 -11
  200. package/llms.txt +1 -0
  201. package/package.json +1 -1
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="generator" content="Docusaurus v3.9.2">
6
6
  <title data-rh="true">ToggleGroup | AppKit</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://databricks.github.io/appkit/docs/api/appkit-ui/ui/ToggleGroup"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="keywords" content="Databricks Apps, Node.js, React.js, SDK, TypeScript, SQL, Databricks, AI, full-stack, development"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="ToggleGroup | AppKit"><meta data-rh="true" name="description" content="Group of toggle buttons for selecting one or more options"><meta data-rh="true" property="og:description" content="Group of toggle buttons for selecting one or more options"><link data-rh="true" rel="icon" href="/appkit/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://databricks.github.io/appkit/docs/api/appkit-ui/ui/ToggleGroup"><link data-rh="true" rel="alternate" href="https://databricks.github.io/appkit/docs/api/appkit-ui/ui/ToggleGroup" hreflang="en"><link data-rh="true" rel="alternate" href="https://databricks.github.io/appkit/docs/api/appkit-ui/ui/ToggleGroup" hreflang="x-default"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"API reference","item":"https://databricks.github.io/appkit/docs/api/"},{"@type":"ListItem","position":2,"name":"@databricks/appkit-ui","item":"https://databricks.github.io/appkit/docs/api/appkit-ui/"},{"@type":"ListItem","position":3,"name":"ToggleGroup","item":"https://databricks.github.io/appkit/docs/api/appkit-ui/ui/ToggleGroup"}]}</script><link rel="stylesheet" href="/appkit/assets/css/styles.0ec7398f.css">
7
- <script src="/appkit/assets/js/runtime~main.a874f05e.js" defer="defer"></script>
8
- <script src="/appkit/assets/js/main.e19edae3.js" defer="defer"></script>
7
+ <script src="/appkit/assets/js/runtime~main.46b4a147.js" defer="defer"></script>
8
+ <script src="/appkit/assets/js/main.109beba6.js" defer="defer"></script>
9
9
  </head>
10
10
  <body class="navigation-with-keyboard">
11
11
  <svg style="display: none;"><defs>
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="generator" content="Docusaurus v3.9.2">
6
6
  <title data-rh="true">Tooltip | AppKit</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://databricks.github.io/appkit/docs/api/appkit-ui/ui/Tooltip"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="keywords" content="Databricks Apps, Node.js, React.js, SDK, TypeScript, SQL, Databricks, AI, full-stack, development"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Tooltip | AppKit"><meta data-rh="true" name="description" content="Brief informational message that appears on hover"><meta data-rh="true" property="og:description" content="Brief informational message that appears on hover"><link data-rh="true" rel="icon" href="/appkit/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://databricks.github.io/appkit/docs/api/appkit-ui/ui/Tooltip"><link data-rh="true" rel="alternate" href="https://databricks.github.io/appkit/docs/api/appkit-ui/ui/Tooltip" hreflang="en"><link data-rh="true" rel="alternate" href="https://databricks.github.io/appkit/docs/api/appkit-ui/ui/Tooltip" hreflang="x-default"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"API reference","item":"https://databricks.github.io/appkit/docs/api/"},{"@type":"ListItem","position":2,"name":"@databricks/appkit-ui","item":"https://databricks.github.io/appkit/docs/api/appkit-ui/"},{"@type":"ListItem","position":3,"name":"Tooltip","item":"https://databricks.github.io/appkit/docs/api/appkit-ui/ui/Tooltip"}]}</script><link rel="stylesheet" href="/appkit/assets/css/styles.0ec7398f.css">
7
- <script src="/appkit/assets/js/runtime~main.a874f05e.js" defer="defer"></script>
8
- <script src="/appkit/assets/js/main.e19edae3.js" defer="defer"></script>
7
+ <script src="/appkit/assets/js/runtime~main.46b4a147.js" defer="defer"></script>
8
+ <script src="/appkit/assets/js/main.109beba6.js" defer="defer"></script>
9
9
  </head>
10
10
  <body class="navigation-with-keyboard">
11
11
  <svg style="display: none;"><defs>
@@ -41,8 +41,9 @@ Core library for building Databricks applications with type-safe SQL queries, pl
41
41
 
42
42
  ## Functions[​](#functions "Direct link to Functions")
43
43
 
44
- | Function | Description |
45
- | -------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
46
- | [appKitTypesPlugin](/appkit/docs/api/appkit/Function.appKitTypesPlugin.md) | Vite plugin to generate types for AppKit queries. Calls generateFromEntryPoint under the hood. |
47
- | [createApp](/appkit/docs/api/appkit/Function.createApp.md) | Bootstraps AppKit with the provided configuration. |
48
- | [isSQLTypeMarker](/appkit/docs/api/appkit/Function.isSQLTypeMarker.md) | Type guard to check if a value is a SQL type marker |
44
+ | Function | Description |
45
+ | ------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------- |
46
+ | [appKitTypesPlugin](/appkit/docs/api/appkit/Function.appKitTypesPlugin.md) | Vite plugin to generate types for AppKit queries. Calls generateFromEntryPoint under the hood. |
47
+ | [createApp](/appkit/docs/api/appkit/Function.createApp.md) | Bootstraps AppKit with the provided configuration. |
48
+ | [getExecutionContext](/appkit/docs/api/appkit/Function.getExecutionContext.md) | Get the current execution context. |
49
+ | [isSQLTypeMarker](/appkit/docs/api/appkit/Function.isSQLTypeMarker.md) | Type guard to check if a value is a SQL type marker |
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="generator" content="Docusaurus v3.9.2">
6
6
  <title data-rh="true">API reference | AppKit</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://databricks.github.io/appkit/docs/api/"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="keywords" content="Databricks Apps, Node.js, React.js, SDK, TypeScript, SQL, Databricks, AI, full-stack, development"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="API reference | AppKit"><meta data-rh="true" name="description" content="This section contains the API reference for the AppKit packages."><meta data-rh="true" property="og:description" content="This section contains the API reference for the AppKit packages."><link data-rh="true" rel="icon" href="/appkit/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://databricks.github.io/appkit/docs/api/"><link data-rh="true" rel="alternate" href="https://databricks.github.io/appkit/docs/api/" hreflang="en"><link data-rh="true" rel="alternate" href="https://databricks.github.io/appkit/docs/api/" hreflang="x-default"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"API reference","item":"https://databricks.github.io/appkit/docs/api/"}]}</script><link rel="stylesheet" href="/appkit/assets/css/styles.0ec7398f.css">
7
- <script src="/appkit/assets/js/runtime~main.a874f05e.js" defer="defer"></script>
8
- <script src="/appkit/assets/js/main.e19edae3.js" defer="defer"></script>
7
+ <script src="/appkit/assets/js/runtime~main.46b4a147.js" defer="defer"></script>
8
+ <script src="/appkit/assets/js/main.109beba6.js" defer="defer"></script>
9
9
  </head>
10
10
  <body class="navigation-with-keyboard">
11
11
  <svg style="display: none;"><defs>
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="generator" content="Docusaurus v3.9.2">
6
6
  <title data-rh="true">App management | AppKit</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://databricks.github.io/appkit/docs/app-management"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="keywords" content="Databricks Apps, Node.js, React.js, SDK, TypeScript, SQL, Databricks, AI, full-stack, development"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="App management | AppKit"><meta data-rh="true" name="description" content="Manage your AppKit application throughout its lifecycle using the Databricks CLI. This guide covers deploying, starting, stopping, monitoring, and deleting apps."><meta data-rh="true" property="og:description" content="Manage your AppKit application throughout its lifecycle using the Databricks CLI. This guide covers deploying, starting, stopping, monitoring, and deleting apps."><link data-rh="true" rel="icon" href="/appkit/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://databricks.github.io/appkit/docs/app-management"><link data-rh="true" rel="alternate" href="https://databricks.github.io/appkit/docs/app-management" hreflang="en"><link data-rh="true" rel="alternate" href="https://databricks.github.io/appkit/docs/app-management" hreflang="x-default"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"App management","item":"https://databricks.github.io/appkit/docs/app-management"}]}</script><link rel="stylesheet" href="/appkit/assets/css/styles.0ec7398f.css">
7
- <script src="/appkit/assets/js/runtime~main.a874f05e.js" defer="defer"></script>
8
- <script src="/appkit/assets/js/main.e19edae3.js" defer="defer"></script>
7
+ <script src="/appkit/assets/js/runtime~main.46b4a147.js" defer="defer"></script>
8
+ <script src="/appkit/assets/js/main.109beba6.js" defer="defer"></script>
9
9
  </head>
10
10
  <body class="navigation-with-keyboard">
11
11
  <svg style="display: none;"><defs>
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="generator" content="Docusaurus v3.9.2">
6
6
  <title data-rh="true">Architecture | AppKit</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://databricks.github.io/appkit/docs/architecture"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="keywords" content="Databricks Apps, Node.js, React.js, SDK, TypeScript, SQL, Databricks, AI, full-stack, development"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Architecture | AppKit"><meta data-rh="true" name="description" content="AppKit follows a plugin-based architecture designed for building production-ready Databricks applications. This document provides a high-level overview of the system components and their interactions."><meta data-rh="true" property="og:description" content="AppKit follows a plugin-based architecture designed for building production-ready Databricks applications. This document provides a high-level overview of the system components and their interactions."><link data-rh="true" rel="icon" href="/appkit/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://databricks.github.io/appkit/docs/architecture"><link data-rh="true" rel="alternate" href="https://databricks.github.io/appkit/docs/architecture" hreflang="en"><link data-rh="true" rel="alternate" href="https://databricks.github.io/appkit/docs/architecture" hreflang="x-default"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Architecture","item":"https://databricks.github.io/appkit/docs/architecture"}]}</script><link rel="stylesheet" href="/appkit/assets/css/styles.0ec7398f.css">
7
- <script src="/appkit/assets/js/runtime~main.a874f05e.js" defer="defer"></script>
8
- <script src="/appkit/assets/js/main.e19edae3.js" defer="defer"></script>
7
+ <script src="/appkit/assets/js/runtime~main.46b4a147.js" defer="defer"></script>
8
+ <script src="/appkit/assets/js/main.109beba6.js" defer="defer"></script>
9
9
  </head>
10
10
  <body class="navigation-with-keyboard">
11
11
  <svg style="display: none;"><defs>
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="generator" content="Docusaurus v3.9.2">
6
6
  <title data-rh="true">Development | AppKit</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://databricks.github.io/appkit/docs/category/development"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="keywords" content="Databricks Apps, Node.js, React.js, SDK, TypeScript, SQL, Databricks, AI, full-stack, development"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Development | AppKit"><meta data-rh="true" name="description" content="Guides for developing AppKit applications"><meta data-rh="true" property="og:description" content="Guides for developing AppKit applications"><link data-rh="true" rel="icon" href="/appkit/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://databricks.github.io/appkit/docs/category/development"><link data-rh="true" rel="alternate" href="https://databricks.github.io/appkit/docs/category/development" hreflang="en"><link data-rh="true" rel="alternate" href="https://databricks.github.io/appkit/docs/category/development" hreflang="x-default"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Development","item":"https://databricks.github.io/appkit/docs/category/development"}]}</script><link rel="stylesheet" href="/appkit/assets/css/styles.0ec7398f.css">
7
- <script src="/appkit/assets/js/runtime~main.a874f05e.js" defer="defer"></script>
8
- <script src="/appkit/assets/js/main.e19edae3.js" defer="defer"></script>
7
+ <script src="/appkit/assets/js/runtime~main.46b4a147.js" defer="defer"></script>
8
+ <script src="/appkit/assets/js/main.109beba6.js" defer="defer"></script>
9
9
  </head>
10
10
  <body class="navigation-with-keyboard">
11
11
  <svg style="display: none;"><defs>
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="generator" content="Docusaurus v3.9.2">
6
6
  <title data-rh="true">Configuration | AppKit</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://databricks.github.io/appkit/docs/configuration"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="keywords" content="Databricks Apps, Node.js, React.js, SDK, TypeScript, SQL, Databricks, AI, full-stack, development"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Configuration | AppKit"><meta data-rh="true" name="description" content="This guide covers environment variables and configuration options for AppKit applications."><meta data-rh="true" property="og:description" content="This guide covers environment variables and configuration options for AppKit applications."><link data-rh="true" rel="icon" href="/appkit/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://databricks.github.io/appkit/docs/configuration"><link data-rh="true" rel="alternate" href="https://databricks.github.io/appkit/docs/configuration" hreflang="en"><link data-rh="true" rel="alternate" href="https://databricks.github.io/appkit/docs/configuration" hreflang="x-default"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Configuration","item":"https://databricks.github.io/appkit/docs/configuration"}]}</script><link rel="stylesheet" href="/appkit/assets/css/styles.0ec7398f.css">
7
- <script src="/appkit/assets/js/runtime~main.a874f05e.js" defer="defer"></script>
8
- <script src="/appkit/assets/js/main.e19edae3.js" defer="defer"></script>
7
+ <script src="/appkit/assets/js/runtime~main.46b4a147.js" defer="defer"></script>
8
+ <script src="/appkit/assets/js/main.109beba6.js" defer="defer"></script>
9
9
  </head>
10
10
  <body class="navigation-with-keyboard">
11
11
  <svg style="display: none;"><defs>
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="generator" content="Docusaurus v3.9.2">
6
6
  <title data-rh="true">Core principles | AppKit</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://databricks.github.io/appkit/docs/core-principles"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="keywords" content="Databricks Apps, Node.js, React.js, SDK, TypeScript, SQL, Databricks, AI, full-stack, development"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Core principles | AppKit"><meta data-rh="true" name="description" content="Learn about the fundamental concepts and principles behind AppKit."><meta data-rh="true" property="og:description" content="Learn about the fundamental concepts and principles behind AppKit."><link data-rh="true" rel="icon" href="/appkit/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://databricks.github.io/appkit/docs/core-principles"><link data-rh="true" rel="alternate" href="https://databricks.github.io/appkit/docs/core-principles" hreflang="en"><link data-rh="true" rel="alternate" href="https://databricks.github.io/appkit/docs/core-principles" hreflang="x-default"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Core principles","item":"https://databricks.github.io/appkit/docs/core-principles"}]}</script><link rel="stylesheet" href="/appkit/assets/css/styles.0ec7398f.css">
7
- <script src="/appkit/assets/js/runtime~main.a874f05e.js" defer="defer"></script>
8
- <script src="/appkit/assets/js/main.e19edae3.js" defer="defer"></script>
7
+ <script src="/appkit/assets/js/runtime~main.46b4a147.js" defer="defer"></script>
8
+ <script src="/appkit/assets/js/main.109beba6.js" defer="defer"></script>
9
9
  </head>
10
10
  <body class="navigation-with-keyboard">
11
11
  <svg style="display: none;"><defs>
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="generator" content="Docusaurus v3.9.2">
6
6
  <title data-rh="true">Development | AppKit</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://databricks.github.io/appkit/docs/development/"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="keywords" content="Databricks Apps, Node.js, React.js, SDK, TypeScript, SQL, Databricks, AI, full-stack, development"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Development | AppKit"><meta data-rh="true" name="description" content="AppKit provides multiple development workflows to suit different needs: local development with hot reload, AI-assisted development with MCP, and remote tunneling to deployed backends."><meta data-rh="true" property="og:description" content="AppKit provides multiple development workflows to suit different needs: local development with hot reload, AI-assisted development with MCP, and remote tunneling to deployed backends."><link data-rh="true" rel="icon" href="/appkit/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://databricks.github.io/appkit/docs/development/"><link data-rh="true" rel="alternate" href="https://databricks.github.io/appkit/docs/development/" hreflang="en"><link data-rh="true" rel="alternate" href="https://databricks.github.io/appkit/docs/development/" hreflang="x-default"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Development","item":"https://databricks.github.io/appkit/docs/category/development"},{"@type":"ListItem","position":2,"name":"Development","item":"https://databricks.github.io/appkit/docs/development/"}]}</script><link rel="stylesheet" href="/appkit/assets/css/styles.0ec7398f.css">
7
- <script src="/appkit/assets/js/runtime~main.a874f05e.js" defer="defer"></script>
8
- <script src="/appkit/assets/js/main.e19edae3.js" defer="defer"></script>
7
+ <script src="/appkit/assets/js/runtime~main.46b4a147.js" defer="defer"></script>
8
+ <script src="/appkit/assets/js/main.109beba6.js" defer="defer"></script>
9
9
  </head>
10
10
  <body class="navigation-with-keyboard">
11
11
  <svg style="display: none;"><defs>
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="generator" content="Docusaurus v3.9.2">
6
6
  <title data-rh="true">LLM Guide | AppKit</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://databricks.github.io/appkit/docs/development/llm-guide"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="keywords" content="Databricks Apps, Node.js, React.js, SDK, TypeScript, SQL, Databricks, AI, full-stack, development"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="LLM Guide | AppKit"><meta data-rh="true" name="description" content="This document provides prescriptive guidance for AI coding assistants generating code with Databricks AppKit. It is intentionally opinionated to ensure consistent, production-ready code generation."><meta data-rh="true" property="og:description" content="This document provides prescriptive guidance for AI coding assistants generating code with Databricks AppKit. It is intentionally opinionated to ensure consistent, production-ready code generation."><link data-rh="true" rel="icon" href="/appkit/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://databricks.github.io/appkit/docs/development/llm-guide"><link data-rh="true" rel="alternate" href="https://databricks.github.io/appkit/docs/development/llm-guide" hreflang="en"><link data-rh="true" rel="alternate" href="https://databricks.github.io/appkit/docs/development/llm-guide" hreflang="x-default"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Development","item":"https://databricks.github.io/appkit/docs/category/development"},{"@type":"ListItem","position":2,"name":"LLM Guide","item":"https://databricks.github.io/appkit/docs/development/llm-guide"}]}</script><link rel="stylesheet" href="/appkit/assets/css/styles.0ec7398f.css">
7
- <script src="/appkit/assets/js/runtime~main.a874f05e.js" defer="defer"></script>
8
- <script src="/appkit/assets/js/main.e19edae3.js" defer="defer"></script>
7
+ <script src="/appkit/assets/js/runtime~main.46b4a147.js" defer="defer"></script>
8
+ <script src="/appkit/assets/js/main.109beba6.js" defer="defer"></script>
9
9
  </head>
10
10
  <body class="navigation-with-keyboard">
11
11
  <svg style="display: none;"><defs>
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="generator" content="Docusaurus v3.9.2">
6
6
  <title data-rh="true">Local development | AppKit</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://databricks.github.io/appkit/docs/development/local-development"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="keywords" content="Databricks Apps, Node.js, React.js, SDK, TypeScript, SQL, Databricks, AI, full-stack, development"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Local development | AppKit"><meta data-rh="true" name="description" content="Once your app is bootstrapped according to the Manual quick start guide, you can start the development server with hot reload for both UI and backend code."><meta data-rh="true" property="og:description" content="Once your app is bootstrapped according to the Manual quick start guide, you can start the development server with hot reload for both UI and backend code."><link data-rh="true" rel="icon" href="/appkit/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://databricks.github.io/appkit/docs/development/local-development"><link data-rh="true" rel="alternate" href="https://databricks.github.io/appkit/docs/development/local-development" hreflang="en"><link data-rh="true" rel="alternate" href="https://databricks.github.io/appkit/docs/development/local-development" hreflang="x-default"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Development","item":"https://databricks.github.io/appkit/docs/category/development"},{"@type":"ListItem","position":2,"name":"Local development","item":"https://databricks.github.io/appkit/docs/development/local-development"}]}</script><link rel="stylesheet" href="/appkit/assets/css/styles.0ec7398f.css">
7
- <script src="/appkit/assets/js/runtime~main.a874f05e.js" defer="defer"></script>
8
- <script src="/appkit/assets/js/main.e19edae3.js" defer="defer"></script>
7
+ <script src="/appkit/assets/js/runtime~main.46b4a147.js" defer="defer"></script>
8
+ <script src="/appkit/assets/js/main.109beba6.js" defer="defer"></script>
9
9
  </head>
10
10
  <body class="navigation-with-keyboard">
11
11
  <svg style="display: none;"><defs>
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="generator" content="Docusaurus v3.9.2">
6
6
  <title data-rh="true">Project setup | AppKit</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://databricks.github.io/appkit/docs/development/project-setup"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="keywords" content="Databricks Apps, Node.js, React.js, SDK, TypeScript, SQL, Databricks, AI, full-stack, development"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Project setup | AppKit"><meta data-rh="true" name="description" content="This guide covers the recommended project structure and scaffolding for AppKit applications."><meta data-rh="true" property="og:description" content="This guide covers the recommended project structure and scaffolding for AppKit applications."><link data-rh="true" rel="icon" href="/appkit/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://databricks.github.io/appkit/docs/development/project-setup"><link data-rh="true" rel="alternate" href="https://databricks.github.io/appkit/docs/development/project-setup" hreflang="en"><link data-rh="true" rel="alternate" href="https://databricks.github.io/appkit/docs/development/project-setup" hreflang="x-default"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Development","item":"https://databricks.github.io/appkit/docs/category/development"},{"@type":"ListItem","position":2,"name":"Project setup","item":"https://databricks.github.io/appkit/docs/development/project-setup"}]}</script><link rel="stylesheet" href="/appkit/assets/css/styles.0ec7398f.css">
7
- <script src="/appkit/assets/js/runtime~main.a874f05e.js" defer="defer"></script>
8
- <script src="/appkit/assets/js/main.e19edae3.js" defer="defer"></script>
7
+ <script src="/appkit/assets/js/runtime~main.46b4a147.js" defer="defer"></script>
8
+ <script src="/appkit/assets/js/main.109beba6.js" defer="defer"></script>
9
9
  </head>
10
10
  <body class="navigation-with-keyboard">
11
11
  <svg style="display: none;"><defs>
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="generator" content="Docusaurus v3.9.2">
6
6
  <title data-rh="true">Remote Bridge | AppKit</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://databricks.github.io/appkit/docs/development/remote-bridge"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="keywords" content="Databricks Apps, Node.js, React.js, SDK, TypeScript, SQL, Databricks, AI, full-stack, development"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Remote Bridge | AppKit"><meta data-rh="true" name="description" content="Remote bridge allows you to develop against a deployed backend while keeping your UI and queries local. This is useful for testing against production data or debugging deployed backend code without redeploying your app."><meta data-rh="true" property="og:description" content="Remote bridge allows you to develop against a deployed backend while keeping your UI and queries local. This is useful for testing against production data or debugging deployed backend code without redeploying your app."><link data-rh="true" rel="icon" href="/appkit/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://databricks.github.io/appkit/docs/development/remote-bridge"><link data-rh="true" rel="alternate" href="https://databricks.github.io/appkit/docs/development/remote-bridge" hreflang="en"><link data-rh="true" rel="alternate" href="https://databricks.github.io/appkit/docs/development/remote-bridge" hreflang="x-default"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Development","item":"https://databricks.github.io/appkit/docs/category/development"},{"@type":"ListItem","position":2,"name":"Remote Bridge","item":"https://databricks.github.io/appkit/docs/development/remote-bridge"}]}</script><link rel="stylesheet" href="/appkit/assets/css/styles.0ec7398f.css">
7
- <script src="/appkit/assets/js/runtime~main.a874f05e.js" defer="defer"></script>
8
- <script src="/appkit/assets/js/main.e19edae3.js" defer="defer"></script>
7
+ <script src="/appkit/assets/js/runtime~main.46b4a147.js" defer="defer"></script>
8
+ <script src="/appkit/assets/js/main.109beba6.js" defer="defer"></script>
9
9
  </head>
10
10
  <body class="navigation-with-keyboard">
11
11
  <svg style="display: none;"><defs>
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="generator" content="Docusaurus v3.9.2">
6
6
  <title data-rh="true">Type generation | AppKit</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://databricks.github.io/appkit/docs/development/type-generation"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="keywords" content="Databricks Apps, Node.js, React.js, SDK, TypeScript, SQL, Databricks, AI, full-stack, development"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Type generation | AppKit"><meta data-rh="true" name="description" content="AppKit can automatically generate TypeScript types for your SQL queries, providing end-to-end type safety from database to UI."><meta data-rh="true" property="og:description" content="AppKit can automatically generate TypeScript types for your SQL queries, providing end-to-end type safety from database to UI."><link data-rh="true" rel="icon" href="/appkit/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://databricks.github.io/appkit/docs/development/type-generation"><link data-rh="true" rel="alternate" href="https://databricks.github.io/appkit/docs/development/type-generation" hreflang="en"><link data-rh="true" rel="alternate" href="https://databricks.github.io/appkit/docs/development/type-generation" hreflang="x-default"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Development","item":"https://databricks.github.io/appkit/docs/category/development"},{"@type":"ListItem","position":2,"name":"Type generation","item":"https://databricks.github.io/appkit/docs/development/type-generation"}]}</script><link rel="stylesheet" href="/appkit/assets/css/styles.0ec7398f.css">
7
- <script src="/appkit/assets/js/runtime~main.a874f05e.js" defer="defer"></script>
8
- <script src="/appkit/assets/js/main.e19edae3.js" defer="defer"></script>
7
+ <script src="/appkit/assets/js/runtime~main.46b4a147.js" defer="defer"></script>
8
+ <script src="/appkit/assets/js/main.109beba6.js" defer="defer"></script>
9
9
  </head>
10
10
  <body class="navigation-with-keyboard">
11
11
  <svg style="display: none;"><defs>
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="generator" content="Docusaurus v3.9.2">
6
6
  <title data-rh="true">Getting started | AppKit</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://databricks.github.io/appkit/docs/"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="keywords" content="Databricks Apps, Node.js, React.js, SDK, TypeScript, SQL, Databricks, AI, full-stack, development"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Getting started | AppKit"><meta data-rh="true" name="description" content="Learn how to get started with AppKit."><meta data-rh="true" property="og:description" content="Learn how to get started with AppKit."><link data-rh="true" rel="icon" href="/appkit/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://databricks.github.io/appkit/docs/"><link data-rh="true" rel="alternate" href="https://databricks.github.io/appkit/docs/" hreflang="en"><link data-rh="true" rel="alternate" href="https://databricks.github.io/appkit/docs/" hreflang="x-default"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Getting started","item":"https://databricks.github.io/appkit/docs/"}]}</script><link rel="stylesheet" href="/appkit/assets/css/styles.0ec7398f.css">
7
- <script src="/appkit/assets/js/runtime~main.a874f05e.js" defer="defer"></script>
8
- <script src="/appkit/assets/js/main.e19edae3.js" defer="defer"></script>
7
+ <script src="/appkit/assets/js/runtime~main.46b4a147.js" defer="defer"></script>
8
+ <script src="/appkit/assets/js/main.109beba6.js" defer="defer"></script>
9
9
  </head>
10
10
  <body class="navigation-with-keyboard">
11
11
  <svg style="display: none;"><defs>
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="generator" content="Docusaurus v3.9.2">
6
6
  <title data-rh="true">Plugins | AppKit</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://databricks.github.io/appkit/docs/plugins"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="keywords" content="Databricks Apps, Node.js, React.js, SDK, TypeScript, SQL, Databricks, AI, full-stack, development"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Plugins | AppKit"><meta data-rh="true" name="description" content="Plugins are modular extensions that add capabilities to your AppKit application. They follow a defined lifecycle and have access to shared services like caching, telemetry, and streaming."><meta data-rh="true" property="og:description" content="Plugins are modular extensions that add capabilities to your AppKit application. They follow a defined lifecycle and have access to shared services like caching, telemetry, and streaming."><link data-rh="true" rel="icon" href="/appkit/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://databricks.github.io/appkit/docs/plugins"><link data-rh="true" rel="alternate" href="https://databricks.github.io/appkit/docs/plugins" hreflang="en"><link data-rh="true" rel="alternate" href="https://databricks.github.io/appkit/docs/plugins" hreflang="x-default"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Plugins","item":"https://databricks.github.io/appkit/docs/plugins"}]}</script><link rel="stylesheet" href="/appkit/assets/css/styles.0ec7398f.css">
7
- <script src="/appkit/assets/js/runtime~main.a874f05e.js" defer="defer"></script>
8
- <script src="/appkit/assets/js/main.e19edae3.js" defer="defer"></script>
7
+ <script src="/appkit/assets/js/runtime~main.46b4a147.js" defer="defer"></script>
8
+ <script src="/appkit/assets/js/main.109beba6.js" defer="defer"></script>
9
9
  </head>
10
10
  <body class="navigation-with-keyboard">
11
11
  <svg style="display: none;"><defs>
@@ -118,7 +118,7 @@
118
118
  <p>If you need custom API routes or background logic, implement an AppKit plugin.</p>
119
119
  <h3 class="anchor anchorTargetStickyNavbar_scV4" id="basic-plugin-example">Basic plugin example<a href="#basic-plugin-example" class="hash-link" aria-label="Direct link to Basic plugin example" title="Direct link to Basic plugin example" translate="no">​</a></h3>
120
120
  <p>Extend the <a class="" href="/appkit/docs/api/appkit/Class.Plugin"><code>Plugin</code></a> class and export with <code>toPlugin()</code>:</p>
121
- <div class="language-typescript codeBlockContainer_crgn theme-code-block" style="--prism-color:#000000;--prism-background-color:#ffffff"><div class="codeBlockContent__42J"><pre tabindex="0" class="prism-code language-typescript codeBlock_CnLD thin-scrollbar" style="color:#000000;background-color:#ffffff"><code class="codeBlockLines_sJEA"><span class="token-line" style="color:#000000"><span class="token keyword" style="color:rgb(0, 0, 255)">import</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">{</span><span class="token plain"> Plugin</span><span class="token punctuation" style="color:rgb(4, 81, 165)">,</span><span class="token plain"> toPlugin </span><span class="token punctuation" style="color:rgb(4, 81, 165)">}</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(0, 0, 255)">from</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">&quot;@databricks/appkit&quot;</span><span class="token punctuation" style="color:rgb(4, 81, 165)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token keyword" style="color:rgb(0, 0, 255)">import</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(0, 0, 255)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(38, 127, 153)">express</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(0, 0, 255)">from</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">&quot;express&quot;</span><span class="token punctuation" style="color:rgb(4, 81, 165)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token keyword" style="color:rgb(0, 0, 255)">class</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(38, 127, 153)">MyPlugin</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(0, 0, 255)">extends</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(38, 127, 153)">Plugin</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> name </span><span class="token operator" style="color:rgb(0, 0, 0)">=</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">&quot;myPlugin&quot;</span><span class="token punctuation" style="color:rgb(4, 81, 165)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> envVars </span><span class="token operator" style="color:rgb(0, 0, 0)">=</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token punctuation" style="color:rgb(4, 81, 165)">;</span><span class="token plain"> </span><span class="token comment" style="color:rgb(0, 128, 0)">// list required env vars here</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> </span><span class="token function" style="color:rgb(0, 0, 255)">injectRoutes</span><span class="token punctuation" style="color:rgb(4, 81, 165)">(</span><span class="token plain">router</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token plain"> express</span><span class="token punctuation" style="color:rgb(4, 81, 165)">.</span><span class="token plain">Router</span><span class="token punctuation" style="color:rgb(4, 81, 165)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> </span><span class="token keyword" style="color:rgb(0, 0, 255)">this</span><span class="token punctuation" style="color:rgb(4, 81, 165)">.</span><span class="token function" style="color:rgb(0, 0, 255)">route</span><span class="token punctuation" style="color:rgb(4, 81, 165)">(</span><span class="token plain">router</span><span class="token punctuation" style="color:rgb(4, 81, 165)">,</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> name</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">&quot;hello&quot;</span><span class="token punctuation" style="color:rgb(4, 81, 165)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> method</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">&quot;get&quot;</span><span class="token punctuation" style="color:rgb(4, 81, 165)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> path</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">&quot;/hello&quot;</span><span class="token punctuation" style="color:rgb(4, 81, 165)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> </span><span class="token function-variable function" style="color:rgb(0, 0, 255)">handler</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(0, 0, 255)">async</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">(</span><span class="token plain">_req</span><span class="token punctuation" style="color:rgb(4, 81, 165)">,</span><span class="token plain"> res</span><span class="token punctuation" style="color:rgb(4, 81, 165)">)</span><span class="token plain"> </span><span class="token operator" style="color:rgb(0, 0, 0)">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> res</span><span class="token punctuation" style="color:rgb(4, 81, 165)">.</span><span class="token function" style="color:rgb(0, 0, 255)">json</span><span class="token punctuation" style="color:rgb(4, 81, 165)">(</span><span class="token punctuation" style="color:rgb(4, 81, 165)">{</span><span class="token plain"> ok</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token plain"> </span><span class="token boolean">true</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">}</span><span class="token punctuation" style="color:rgb(4, 81, 165)">)</span><span class="token punctuation" style="color:rgb(4, 81, 165)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">}</span><span class="token punctuation" style="color:rgb(4, 81, 165)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">}</span><span class="token punctuation" style="color:rgb(4, 81, 165)">)</span><span class="token punctuation" style="color:rgb(4, 81, 165)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token punctuation" style="color:rgb(4, 81, 165)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token keyword" style="color:rgb(0, 0, 255)">export</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(0, 0, 255)">const</span><span class="token plain"> myPlugin </span><span class="token operator" style="color:rgb(0, 0, 0)">=</span><span class="token plain"> </span><span class="token generic-function function" style="color:rgb(0, 0, 255)">toPlugin</span><span class="token generic-function generic class-name operator" style="color:rgb(0, 0, 0)">&lt;</span><span class="token generic-function generic class-name keyword" style="color:rgb(0, 0, 255)">typeof</span><span class="token generic-function generic class-name" style="color:rgb(38, 127, 153)"> MyPlugin</span><span class="token generic-function generic class-name punctuation" style="color:rgb(4, 81, 165)">,</span><span class="token generic-function generic class-name" style="color:rgb(38, 127, 153)"> Record</span><span class="token generic-function generic class-name operator" style="color:rgb(0, 0, 0)">&lt;</span><span class="token generic-function generic class-name builtin" style="color:rgb(0, 112, 193)">string</span><span class="token generic-function generic class-name punctuation" style="color:rgb(4, 81, 165)">,</span><span class="token generic-function generic class-name" style="color:rgb(38, 127, 153)"> </span><span class="token generic-function generic class-name builtin" style="color:rgb(0, 112, 193)">never</span><span class="token generic-function generic class-name operator" style="color:rgb(0, 0, 0)">&gt;</span><span class="token generic-function generic class-name punctuation" style="color:rgb(4, 81, 165)">,</span><span class="token generic-function generic class-name" style="color:rgb(38, 127, 153)"> </span><span class="token generic-function generic class-name string" style="color:rgb(163, 21, 21)">&quot;myPlugin&quot;</span><span class="token generic-function generic class-name operator" style="color:rgb(0, 0, 0)">&gt;</span><span class="token punctuation" style="color:rgb(4, 81, 165)">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> MyPlugin</span><span class="token punctuation" style="color:rgb(4, 81, 165)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">&quot;myPlugin&quot;</span><span class="token punctuation" style="color:rgb(4, 81, 165)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token punctuation" style="color:rgb(4, 81, 165)">)</span><span class="token punctuation" style="color:rgb(4, 81, 165)">;</span><br></span></code></pre></div></div>
121
+ <div class="language-typescript codeBlockContainer_crgn theme-code-block" style="--prism-color:#000000;--prism-background-color:#ffffff"><div class="codeBlockContent__42J"><pre tabindex="0" class="prism-code language-typescript codeBlock_CnLD thin-scrollbar" style="color:#000000;background-color:#ffffff"><code class="codeBlockLines_sJEA"><span class="token-line" style="color:#000000"><span class="token keyword" style="color:rgb(0, 0, 255)">import</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">{</span><span class="token plain"> Plugin</span><span class="token punctuation" style="color:rgb(4, 81, 165)">,</span><span class="token plain"> toPlugin </span><span class="token punctuation" style="color:rgb(4, 81, 165)">}</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(0, 0, 255)">from</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">&quot;@databricks/appkit&quot;</span><span class="token punctuation" style="color:rgb(4, 81, 165)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token keyword" style="color:rgb(0, 0, 255)">import</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(0, 0, 255)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(38, 127, 153)">express</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(0, 0, 255)">from</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">&quot;express&quot;</span><span class="token punctuation" style="color:rgb(4, 81, 165)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token keyword" style="color:rgb(0, 0, 255)">class</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(38, 127, 153)">MyPlugin</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(0, 0, 255)">extends</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(38, 127, 153)">Plugin</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> name </span><span class="token operator" style="color:rgb(0, 0, 0)">=</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">&quot;myPlugin&quot;</span><span class="token punctuation" style="color:rgb(4, 81, 165)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> envVars </span><span class="token operator" style="color:rgb(0, 0, 0)">=</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token string" style="color:rgb(163, 21, 21)">&quot;MY_API_KEY&quot;</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token punctuation" style="color:rgb(4, 81, 165)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> </span><span class="token keyword" style="color:rgb(0, 0, 255)">async</span><span class="token plain"> </span><span class="token function" style="color:rgb(0, 0, 255)">setup</span><span class="token punctuation" style="color:rgb(4, 81, 165)">(</span><span class="token punctuation" style="color:rgb(4, 81, 165)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> </span><span class="token comment" style="color:rgb(0, 128, 0)">// Initialize your plugin</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> </span><span class="token function" style="color:rgb(0, 0, 255)">myCustomMethod</span><span class="token punctuation" style="color:rgb(4, 81, 165)">(</span><span class="token punctuation" style="color:rgb(4, 81, 165)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> </span><span class="token comment" style="color:rgb(0, 128, 0)">// Some implementation</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> </span><span class="token keyword" style="color:rgb(0, 0, 255)">async</span><span class="token plain"> </span><span class="token function" style="color:rgb(0, 0, 255)">shutdown</span><span class="token punctuation" style="color:rgb(4, 81, 165)">(</span><span class="token punctuation" style="color:rgb(4, 81, 165)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> </span><span class="token comment" style="color:rgb(0, 128, 0)">// Clean up resources</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> </span><span class="token function" style="color:rgb(0, 0, 255)">exports</span><span class="token punctuation" style="color:rgb(4, 81, 165)">(</span><span class="token punctuation" style="color:rgb(4, 81, 165)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> </span><span class="token comment" style="color:rgb(0, 128, 0)">// an object with the methods from this plugin to expose</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> </span><span class="token keyword" style="color:rgb(0, 0, 255)">return</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> myCustomMethod</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(0, 0, 255)">this</span><span class="token punctuation" style="color:rgb(4, 81, 165)">.</span><span class="token plain">myCustomMethod</span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token punctuation" style="color:rgb(4, 81, 165)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token keyword" style="color:rgb(0, 0, 255)">export</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(0, 0, 255)">const</span><span class="token plain"> myPlugin </span><span class="token operator" style="color:rgb(0, 0, 0)">=</span><span class="token plain"> </span><span class="token generic-function function" style="color:rgb(0, 0, 255)">toPlugin</span><span class="token generic-function generic class-name operator" style="color:rgb(0, 0, 0)">&lt;</span><span class="token generic-function generic class-name keyword" style="color:rgb(0, 0, 255)">typeof</span><span class="token generic-function generic class-name" style="color:rgb(38, 127, 153)"> MyPlugin</span><span class="token generic-function generic class-name punctuation" style="color:rgb(4, 81, 165)">,</span><span class="token generic-function generic class-name" style="color:rgb(38, 127, 153)"> Record</span><span class="token generic-function generic class-name operator" style="color:rgb(0, 0, 0)">&lt;</span><span class="token generic-function generic class-name builtin" style="color:rgb(0, 112, 193)">string</span><span class="token generic-function generic class-name punctuation" style="color:rgb(4, 81, 165)">,</span><span class="token generic-function generic class-name" style="color:rgb(38, 127, 153)"> </span><span class="token generic-function generic class-name builtin" style="color:rgb(0, 112, 193)">never</span><span class="token generic-function generic class-name operator" style="color:rgb(0, 0, 0)">&gt;</span><span class="token generic-function generic class-name punctuation" style="color:rgb(4, 81, 165)">,</span><span class="token generic-function generic class-name" style="color:rgb(38, 127, 153)"> </span><span class="token generic-function generic class-name string" style="color:rgb(163, 21, 21)">&quot;myPlugin&quot;</span><span class="token generic-function generic class-name operator" style="color:rgb(0, 0, 0)">&gt;</span><span class="token punctuation" style="color:rgb(4, 81, 165)">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> MyPlugin</span><span class="token punctuation" style="color:rgb(4, 81, 165)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">&quot;myPlugin&quot;</span><span class="token punctuation" style="color:rgb(4, 81, 165)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token punctuation" style="color:rgb(4, 81, 165)">)</span><span class="token punctuation" style="color:rgb(4, 81, 165)">;</span><br></span></code></pre></div></div>
122
122
  <h3 class="anchor anchorTargetStickyNavbar_scV4" id="key-extension-points">Key extension points<a href="#key-extension-points" class="hash-link" aria-label="Direct link to Key extension points" title="Direct link to Key extension points" translate="no">​</a></h3>
123
123
  <ul>
124
124
  <li class=""><strong>Route injection</strong>: Implement <code>injectRoutes()</code> to add custom endpoints using <a class="" href="/appkit/docs/api/appkit/TypeAlias.IAppRouter"><code>IAppRouter</code></a></li>
@@ -131,6 +131,10 @@
131
131
  </li>
132
132
  <li class=""><strong>Execution interceptors</strong>: Use <code>execute()</code> and <code>executeStream()</code> with <a class="" href="/appkit/docs/api/appkit/Interface.StreamExecutionSettings"><code>StreamExecutionSettings</code></a></li>
133
133
  </ul>
134
+ <p><strong>Consuming your plugin programmatically</strong></p>
135
+ <p>Optionally, you may want to provide a way to consume your plugin programmatically using the AppKit object.
136
+ To do that, your plugin needs to implement the <code>exports</code> method, returning an object with the methods you want to expose. From the previous example, the plugin could be consumed as follows:</p>
137
+ <div class="language-ts codeBlockContainer_crgn theme-code-block" style="--prism-color:#000000;--prism-background-color:#ffffff"><div class="codeBlockContent__42J"><pre tabindex="0" class="prism-code language-ts codeBlock_CnLD thin-scrollbar" style="color:#000000;background-color:#ffffff"><code class="codeBlockLines_sJEA"><span class="token-line" style="color:#000000"><span class="token keyword" style="color:rgb(0, 0, 255)">const</span><span class="token plain"> AppKit </span><span class="token operator" style="color:rgb(0, 0, 0)">=</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(0, 0, 255)">await</span><span class="token plain"> </span><span class="token function" style="color:rgb(0, 0, 255)">createApp</span><span class="token punctuation" style="color:rgb(4, 81, 165)">(</span><span class="token punctuation" style="color:rgb(4, 81, 165)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> plugins</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> </span><span class="token function" style="color:rgb(0, 0, 255)">server</span><span class="token punctuation" style="color:rgb(4, 81, 165)">(</span><span class="token punctuation" style="color:rgb(4, 81, 165)">{</span><span class="token plain"> port</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(9, 134, 88)">8000</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">}</span><span class="token punctuation" style="color:rgb(4, 81, 165)">)</span><span class="token punctuation" style="color:rgb(4, 81, 165)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> </span><span class="token function" style="color:rgb(0, 0, 255)">analytics</span><span class="token punctuation" style="color:rgb(4, 81, 165)">(</span><span class="token punctuation" style="color:rgb(4, 81, 165)">)</span><span class="token punctuation" style="color:rgb(4, 81, 165)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> </span><span class="token function" style="color:rgb(0, 0, 255)">myPlugin</span><span class="token punctuation" style="color:rgb(4, 81, 165)">(</span><span class="token punctuation" style="color:rgb(4, 81, 165)">)</span><span class="token punctuation" style="color:rgb(4, 81, 165)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token punctuation" style="color:rgb(4, 81, 165)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token punctuation" style="color:rgb(4, 81, 165)">}</span><span class="token punctuation" style="color:rgb(4, 81, 165)">)</span><span class="token punctuation" style="color:rgb(4, 81, 165)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">AppKit</span><span class="token punctuation" style="color:rgb(4, 81, 165)">.</span><span class="token plain">myPlugin</span><span class="token punctuation" style="color:rgb(4, 81, 165)">.</span><span class="token function" style="color:rgb(0, 0, 255)">myCustomMethod</span><span class="token punctuation" style="color:rgb(4, 81, 165)">(</span><span class="token punctuation" style="color:rgb(4, 81, 165)">)</span><span class="token punctuation" style="color:rgb(4, 81, 165)">;</span><br></span></code></pre></div></div>
134
138
  <p>See the <a class="" href="/appkit/docs/api/appkit/Class.Plugin"><code>Plugin</code></a> API reference for complete documentation.</p>
135
139
  <h2 class="anchor anchorTargetStickyNavbar_scV4" id="caching">Caching<a href="#caching" class="hash-link" aria-label="Direct link to Caching" title="Direct link to Caching" translate="no">​</a></h2>
136
140
  <p>AppKit provides both global and plugin-level caching capabilities.</p>
@@ -232,17 +232,25 @@ import type express from "express";
232
232
 
233
233
  class MyPlugin extends Plugin {
234
234
  name = "myPlugin";
235
- envVars = []; // list required env vars here
236
-
237
- injectRoutes(router: express.Router) {
238
- this.route(router, {
239
- name: "hello",
240
- method: "get",
241
- path: "/hello",
242
- handler: async (_req, res) => {
243
- res.json({ ok: true });
244
- },
245
- });
235
+ envVars = ["MY_API_KEY"];
236
+
237
+ async setup() {
238
+ // Initialize your plugin
239
+ }
240
+
241
+ myCustomMethod() {
242
+ // Some implementation
243
+ }
244
+
245
+ async shutdown() {
246
+ // Clean up resources
247
+ }
248
+
249
+ exports() {
250
+ // an object with the methods from this plugin to expose
251
+ return {
252
+ myCustomMethod: this.myCustomMethod
253
+ }
246
254
  }
247
255
  }
248
256
 
@@ -268,6 +276,23 @@ export const myPlugin = toPlugin<typeof MyPlugin, Record<string, never>, "myPlug
268
276
 
269
277
  * **Execution interceptors**: Use `execute()` and `executeStream()` with [`StreamExecutionSettings`](/appkit/docs/api/appkit/Interface.StreamExecutionSettings.md)
270
278
 
279
+ **Consuming your plugin programmatically**
280
+
281
+ Optionally, you may want to provide a way to consume your plugin programmatically using the AppKit object. To do that, your plugin needs to implement the `exports` method, returning an object with the methods you want to expose. From the previous example, the plugin could be consumed as follows:
282
+
283
+ ```ts
284
+ const AppKit = await createApp({
285
+ plugins: [
286
+ server({ port: 8000 }),
287
+ analytics(),
288
+ myPlugin(),
289
+ ],
290
+ });
291
+
292
+ AppKit.myPlugin.myCustomMethod();
293
+
294
+ ```
295
+
271
296
  See the [`Plugin`](/appkit/docs/api/appkit/Class.Plugin.md) API reference for complete documentation.
272
297
 
273
298
  ## Caching[​](#caching "Direct link to Caching")
package/llms.txt CHANGED
@@ -38,6 +38,7 @@ The CLI will display the documentation content directly in the terminal.
38
38
  - [Class: ValidationError](./docs/docs/api./docs/Class.ValidationError.md): Error thrown when input validation fails.
39
39
  - [Function: appKitTypesPlugin()](./docs/docs/api./docs/Function.appKitTypesPlugin.md): Vite plugin to generate types for AppKit queries.
40
40
  - [Function: createApp()](./docs/docs/api./docs/Function.createApp.md): Bootstraps AppKit with the provided configuration.
41
+ - [Function: getExecutionContext()](./docs/docs/api./docs/Function.getExecutionContext.md): Get the current execution context.
41
42
  - [Function: isSQLTypeMarker()](./docs/docs/api./docs/Function.isSQLTypeMarker.md): Type guard to check if a value is a SQL type marker
42
43
  - [Interface: BasePluginConfig](./docs/docs/api./docs/Interface.BasePluginConfig.md): Base configuration interface for AppKit plugins
43
44
  - [Interface: CacheConfig](./docs/docs/api./docs/Interface.CacheConfig.md): Configuration for caching
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@databricks/appkit",
3
3
  "type": "module",
4
- "version": "0.4.1",
4
+ "version": "0.5.0",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
7
7
  "packageManager": "pnpm@10.21.0",