@databricks/appkit-ui 0.12.1 → 0.13.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 (90) hide show
  1. package/CLAUDE.md +4 -3
  2. package/dist/react/charts/area/index.d.ts +2 -2
  3. package/dist/react/charts/bar/index.d.ts +2 -2
  4. package/dist/react/charts/base.d.ts +2 -2
  5. package/dist/react/charts/base.d.ts.map +1 -1
  6. package/dist/react/charts/create-chart.d.ts +2 -2
  7. package/dist/react/charts/create-chart.d.ts.map +1 -1
  8. package/dist/react/charts/heatmap/index.d.ts +2 -2
  9. package/dist/react/charts/line/index.d.ts +2 -2
  10. package/dist/react/charts/options.d.ts.map +1 -1
  11. package/dist/react/charts/pie/index.d.ts +3 -3
  12. package/dist/react/charts/radar/index.d.ts +2 -2
  13. package/dist/react/charts/scatter/index.d.ts +2 -2
  14. package/dist/react/charts/wrapper.d.ts +2 -2
  15. package/dist/react/ui/accordion.d.ts +5 -5
  16. package/dist/react/ui/alert-dialog.d.ts +12 -12
  17. package/dist/react/ui/alert.d.ts +4 -4
  18. package/dist/react/ui/aspect-ratio.d.ts +2 -2
  19. package/dist/react/ui/avatar.d.ts +4 -4
  20. package/dist/react/ui/badge.d.ts +4 -4
  21. package/dist/react/ui/breadcrumb.d.ts +8 -8
  22. package/dist/react/ui/button-group.d.ts +6 -6
  23. package/dist/react/ui/button.d.ts +4 -4
  24. package/dist/react/ui/calendar.d.ts +3 -3
  25. package/dist/react/ui/card.d.ts +8 -8
  26. package/dist/react/ui/carousel.d.ts +6 -6
  27. package/dist/react/ui/chart.d.ts +5 -5
  28. package/dist/react/ui/checkbox.d.ts +2 -2
  29. package/dist/react/ui/collapsible.d.ts +4 -4
  30. package/dist/react/ui/command.d.ts +10 -10
  31. package/dist/react/ui/context-menu.d.ts +16 -16
  32. package/dist/react/ui/dialog.d.ts +11 -11
  33. package/dist/react/ui/dialog.d.ts.map +1 -1
  34. package/dist/react/ui/drawer.d.ts +11 -11
  35. package/dist/react/ui/drawer.d.ts.map +1 -1
  36. package/dist/react/ui/dropdown-menu.d.ts +16 -16
  37. package/dist/react/ui/empty.d.ts +7 -7
  38. package/dist/react/ui/field.d.ts +11 -11
  39. package/dist/react/ui/form.d.ts +7 -7
  40. package/dist/react/ui/hover-card.d.ts +4 -4
  41. package/dist/react/ui/input-group.d.ts +7 -7
  42. package/dist/react/ui/input-otp.d.ts +5 -5
  43. package/dist/react/ui/input.d.ts +2 -2
  44. package/dist/react/ui/item.d.ts +11 -11
  45. package/dist/react/ui/kbd.d.ts +3 -3
  46. package/dist/react/ui/label.d.ts +2 -2
  47. package/dist/react/ui/menubar.d.ts +17 -17
  48. package/dist/react/ui/navigation-menu.d.ts +9 -9
  49. package/dist/react/ui/pagination.d.ts +8 -8
  50. package/dist/react/ui/popover.d.ts +5 -5
  51. package/dist/react/ui/progress.d.ts +2 -2
  52. package/dist/react/ui/radio-group.d.ts +3 -3
  53. package/dist/react/ui/resizable.d.ts +4 -4
  54. package/dist/react/ui/scroll-area.d.ts +3 -3
  55. package/dist/react/ui/select.d.ts +11 -11
  56. package/dist/react/ui/separator.d.ts +2 -2
  57. package/dist/react/ui/sheet.d.ts +9 -9
  58. package/dist/react/ui/sidebar.d.ts +41 -24
  59. package/dist/react/ui/sidebar.d.ts.map +1 -1
  60. package/dist/react/ui/sidebar.js.map +1 -1
  61. package/dist/react/ui/skeleton.d.ts +2 -2
  62. package/dist/react/ui/slider.d.ts +2 -2
  63. package/dist/react/ui/sonner.d.ts +2 -2
  64. package/dist/react/ui/spinner.d.ts +2 -2
  65. package/dist/react/ui/switch.d.ts +2 -2
  66. package/dist/react/ui/table.d.ts +9 -9
  67. package/dist/react/ui/tabs.d.ts +5 -5
  68. package/dist/react/ui/textarea.d.ts +2 -2
  69. package/dist/react/ui/toggle-group.d.ts +3 -3
  70. package/dist/react/ui/toggle.d.ts +2 -2
  71. package/dist/react/ui/tooltip.d.ts +5 -5
  72. package/dist/react/ui/tooltip.d.ts.map +1 -1
  73. package/docs/api/appkit/Class.Plugin.md +20 -0
  74. package/docs/api/appkit/Function.createApp.md +29 -0
  75. package/docs/api/appkit-ui/ui/Sidebar.md +304 -37
  76. package/docs/app-management.md +1 -1
  77. package/docs/development/ai-assisted-development.md +63 -3
  78. package/docs/development/llm-guide.md +1 -1
  79. package/docs/development/local-development.md +2 -2
  80. package/docs/development/project-setup.md +8 -8
  81. package/docs/development/remote-bridge.md +1 -1
  82. package/docs/development/type-generation.md +1 -1
  83. package/docs/development.md +3 -3
  84. package/docs/plugins/analytics.md +104 -1
  85. package/docs/plugins/genie.md +162 -0
  86. package/docs/plugins/server.md +1 -1
  87. package/docs/plugins.md +2 -1
  88. package/docs.md +32 -1
  89. package/llms.txt +4 -3
  90. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import * as React$1 from "react";
2
- import * as react_jsx_runtime261 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime265 from "react/jsx-runtime";
3
3
  import * as SliderPrimitive from "@radix-ui/react-slider";
4
4
 
5
5
  //#region src/react/ui/slider.d.ts
@@ -11,7 +11,7 @@ declare function Slider({
11
11
  min,
12
12
  max,
13
13
  ...props
14
- }: React$1.ComponentProps<typeof SliderPrimitive.Root>): react_jsx_runtime261.JSX.Element;
14
+ }: React$1.ComponentProps<typeof SliderPrimitive.Root>): react_jsx_runtime265.JSX.Element;
15
15
  //#endregion
16
16
  export { Slider };
17
17
  //# sourceMappingURL=slider.d.ts.map
@@ -1,11 +1,11 @@
1
- import * as react_jsx_runtime262 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime266 from "react/jsx-runtime";
2
2
  import { ToasterProps } from "sonner";
3
3
 
4
4
  //#region src/react/ui/sonner.d.ts
5
5
  /** Toast notification system for displaying temporary messages */
6
6
  declare const Toaster$1: ({
7
7
  ...props
8
- }: ToasterProps) => react_jsx_runtime262.JSX.Element;
8
+ }: ToasterProps) => react_jsx_runtime266.JSX.Element;
9
9
  //#endregion
10
10
  export { Toaster$1 as Toaster };
11
11
  //# sourceMappingURL=sonner.d.ts.map
@@ -1,11 +1,11 @@
1
- import * as react_jsx_runtime263 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime267 from "react/jsx-runtime";
2
2
 
3
3
  //#region src/react/ui/spinner.d.ts
4
4
  /** Animated loading indicator */
5
5
  declare function Spinner({
6
6
  className,
7
7
  ...props
8
- }: React.ComponentProps<"svg">): react_jsx_runtime263.JSX.Element;
8
+ }: React.ComponentProps<"svg">): react_jsx_runtime267.JSX.Element;
9
9
  //#endregion
10
10
  export { Spinner };
11
11
  //# sourceMappingURL=spinner.d.ts.map
@@ -1,5 +1,5 @@
1
1
  import * as React$1 from "react";
2
- import * as react_jsx_runtime264 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime268 from "react/jsx-runtime";
3
3
  import * as SwitchPrimitive from "@radix-ui/react-switch";
4
4
 
5
5
  //#region src/react/ui/switch.d.ts
@@ -7,7 +7,7 @@ import * as SwitchPrimitive from "@radix-ui/react-switch";
7
7
  declare function Switch({
8
8
  className,
9
9
  ...props
10
- }: React$1.ComponentProps<typeof SwitchPrimitive.Root>): react_jsx_runtime264.JSX.Element;
10
+ }: React$1.ComponentProps<typeof SwitchPrimitive.Root>): react_jsx_runtime268.JSX.Element;
11
11
  //#endregion
12
12
  export { Switch };
13
13
  //# sourceMappingURL=switch.d.ts.map
@@ -1,40 +1,40 @@
1
1
  import * as React$1 from "react";
2
- import * as react_jsx_runtime265 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime269 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/react/ui/table.d.ts
5
5
  /** Structured data display with rows and columns */
6
6
  declare function Table({
7
7
  className,
8
8
  ...props
9
- }: React$1.ComponentProps<"table">): react_jsx_runtime265.JSX.Element;
9
+ }: React$1.ComponentProps<"table">): react_jsx_runtime269.JSX.Element;
10
10
  declare function TableHeader({
11
11
  className,
12
12
  ...props
13
- }: React$1.ComponentProps<"thead">): react_jsx_runtime265.JSX.Element;
13
+ }: React$1.ComponentProps<"thead">): react_jsx_runtime269.JSX.Element;
14
14
  declare function TableBody({
15
15
  className,
16
16
  ...props
17
- }: React$1.ComponentProps<"tbody">): react_jsx_runtime265.JSX.Element;
17
+ }: React$1.ComponentProps<"tbody">): react_jsx_runtime269.JSX.Element;
18
18
  declare function TableFooter({
19
19
  className,
20
20
  ...props
21
- }: React$1.ComponentProps<"tfoot">): react_jsx_runtime265.JSX.Element;
21
+ }: React$1.ComponentProps<"tfoot">): react_jsx_runtime269.JSX.Element;
22
22
  declare function TableRow({
23
23
  className,
24
24
  ...props
25
- }: React$1.ComponentProps<"tr">): react_jsx_runtime265.JSX.Element;
25
+ }: React$1.ComponentProps<"tr">): react_jsx_runtime269.JSX.Element;
26
26
  declare function TableHead({
27
27
  className,
28
28
  ...props
29
- }: React$1.ComponentProps<"th">): react_jsx_runtime265.JSX.Element;
29
+ }: React$1.ComponentProps<"th">): react_jsx_runtime269.JSX.Element;
30
30
  declare function TableCell({
31
31
  className,
32
32
  ...props
33
- }: React$1.ComponentProps<"td">): react_jsx_runtime265.JSX.Element;
33
+ }: React$1.ComponentProps<"td">): react_jsx_runtime269.JSX.Element;
34
34
  declare function TableCaption({
35
35
  className,
36
36
  ...props
37
- }: React$1.ComponentProps<"caption">): react_jsx_runtime265.JSX.Element;
37
+ }: React$1.ComponentProps<"caption">): react_jsx_runtime269.JSX.Element;
38
38
  //#endregion
39
39
  export { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow };
40
40
  //# sourceMappingURL=table.d.ts.map
@@ -1,5 +1,5 @@
1
1
  import * as React$1 from "react";
2
- import * as react_jsx_runtime273 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime277 from "react/jsx-runtime";
3
3
  import * as TabsPrimitive from "@radix-ui/react-tabs";
4
4
 
5
5
  //#region src/react/ui/tabs.d.ts
@@ -7,22 +7,22 @@ import * as TabsPrimitive from "@radix-ui/react-tabs";
7
7
  declare function Tabs({
8
8
  className,
9
9
  ...props
10
- }: React$1.ComponentProps<typeof TabsPrimitive.Root>): react_jsx_runtime273.JSX.Element;
10
+ }: React$1.ComponentProps<typeof TabsPrimitive.Root>): react_jsx_runtime277.JSX.Element;
11
11
  /** Container for tab trigger buttons */
12
12
  declare function TabsList({
13
13
  className,
14
14
  ...props
15
- }: React$1.ComponentProps<typeof TabsPrimitive.List>): react_jsx_runtime273.JSX.Element;
15
+ }: React$1.ComponentProps<typeof TabsPrimitive.List>): react_jsx_runtime277.JSX.Element;
16
16
  /** Button that activates a tab panel */
17
17
  declare function TabsTrigger({
18
18
  className,
19
19
  ...props
20
- }: React$1.ComponentProps<typeof TabsPrimitive.Trigger>): react_jsx_runtime273.JSX.Element;
20
+ }: React$1.ComponentProps<typeof TabsPrimitive.Trigger>): react_jsx_runtime277.JSX.Element;
21
21
  /** Content panel associated with a tab */
22
22
  declare function TabsContent({
23
23
  className,
24
24
  ...props
25
- }: React$1.ComponentProps<typeof TabsPrimitive.Content>): react_jsx_runtime273.JSX.Element;
25
+ }: React$1.ComponentProps<typeof TabsPrimitive.Content>): react_jsx_runtime277.JSX.Element;
26
26
  //#endregion
27
27
  export { Tabs, TabsContent, TabsList, TabsTrigger };
28
28
  //# sourceMappingURL=tabs.d.ts.map
@@ -1,12 +1,12 @@
1
1
  import * as React$1 from "react";
2
- import * as react_jsx_runtime277 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime281 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/react/ui/textarea.d.ts
5
5
  /** Multi-line text input field */
6
6
  declare function Textarea({
7
7
  className,
8
8
  ...props
9
- }: React$1.ComponentProps<"textarea">): react_jsx_runtime277.JSX.Element;
9
+ }: React$1.ComponentProps<"textarea">): react_jsx_runtime281.JSX.Element;
10
10
  //#endregion
11
11
  export { Textarea };
12
12
  //# sourceMappingURL=textarea.d.ts.map
@@ -1,6 +1,6 @@
1
1
  import { toggleVariants } from "./toggle.js";
2
2
  import * as React$1 from "react";
3
- import * as react_jsx_runtime279 from "react/jsx-runtime";
3
+ import * as react_jsx_runtime283 from "react/jsx-runtime";
4
4
  import { VariantProps } from "class-variance-authority";
5
5
  import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
6
6
 
@@ -15,14 +15,14 @@ declare function ToggleGroup({
15
15
  ...props
16
16
  }: React$1.ComponentProps<typeof ToggleGroupPrimitive.Root> & VariantProps<typeof toggleVariants> & {
17
17
  spacing?: number;
18
- }): react_jsx_runtime279.JSX.Element;
18
+ }): react_jsx_runtime283.JSX.Element;
19
19
  declare function ToggleGroupItem({
20
20
  className,
21
21
  children,
22
22
  variant,
23
23
  size,
24
24
  ...props
25
- }: React$1.ComponentProps<typeof ToggleGroupPrimitive.Item> & VariantProps<typeof toggleVariants>): react_jsx_runtime279.JSX.Element;
25
+ }: React$1.ComponentProps<typeof ToggleGroupPrimitive.Item> & VariantProps<typeof toggleVariants>): react_jsx_runtime283.JSX.Element;
26
26
  //#endregion
27
27
  export { ToggleGroup, ToggleGroupItem };
28
28
  //# sourceMappingURL=toggle-group.d.ts.map
@@ -1,5 +1,5 @@
1
1
  import * as React$1 from "react";
2
- import * as react_jsx_runtime278 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime282 from "react/jsx-runtime";
3
3
  import { VariantProps } from "class-variance-authority";
4
4
  import * as TogglePrimitive from "@radix-ui/react-toggle";
5
5
  import * as class_variance_authority_types11 from "class-variance-authority/types";
@@ -15,7 +15,7 @@ declare function Toggle({
15
15
  variant,
16
16
  size,
17
17
  ...props
18
- }: React$1.ComponentProps<typeof TogglePrimitive.Root> & VariantProps<typeof toggleVariants>): react_jsx_runtime278.JSX.Element;
18
+ }: React$1.ComponentProps<typeof TogglePrimitive.Root> & VariantProps<typeof toggleVariants>): react_jsx_runtime282.JSX.Element;
19
19
  //#endregion
20
20
  export { Toggle, toggleVariants };
21
21
  //# sourceMappingURL=toggle.d.ts.map
@@ -1,5 +1,5 @@
1
1
  import * as React$1 from "react";
2
- import * as react_jsx_runtime281 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
3
3
  import * as TooltipPrimitive from "@radix-ui/react-tooltip";
4
4
 
5
5
  //#region src/react/ui/tooltip.d.ts
@@ -7,20 +7,20 @@ import * as TooltipPrimitive from "@radix-ui/react-tooltip";
7
7
  declare function TooltipProvider({
8
8
  delayDuration,
9
9
  ...props
10
- }: React$1.ComponentProps<typeof TooltipPrimitive.Provider>): react_jsx_runtime281.JSX.Element;
10
+ }: React$1.ComponentProps<typeof TooltipPrimitive.Provider>): react_jsx_runtime0.JSX.Element;
11
11
  /** Brief informational message that appears on hover */
12
12
  declare function Tooltip({
13
13
  ...props
14
- }: React$1.ComponentProps<typeof TooltipPrimitive.Root>): react_jsx_runtime281.JSX.Element;
14
+ }: React$1.ComponentProps<typeof TooltipPrimitive.Root>): react_jsx_runtime0.JSX.Element;
15
15
  declare function TooltipTrigger({
16
16
  ...props
17
- }: React$1.ComponentProps<typeof TooltipPrimitive.Trigger>): react_jsx_runtime281.JSX.Element;
17
+ }: React$1.ComponentProps<typeof TooltipPrimitive.Trigger>): react_jsx_runtime0.JSX.Element;
18
18
  declare function TooltipContent({
19
19
  className,
20
20
  sideOffset,
21
21
  children,
22
22
  ...props
23
- }: React$1.ComponentProps<typeof TooltipPrimitive.Content>): react_jsx_runtime281.JSX.Element;
23
+ }: React$1.ComponentProps<typeof TooltipPrimitive.Content>): react_jsx_runtime0.JSX.Element;
24
24
  //#endregion
25
25
  export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };
26
26
  //# sourceMappingURL=tooltip.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.d.ts","names":[],"sources":["../../../src/react/ui/tooltip.tsx"],"sourcesContent":[],"mappings":";;;;;;iBASS,eAAA;;;GAGN,OAAA,CAAM,sBAAsB,gBAAA,CAAiB,YAAS,oBAAA,CAAA,GAAA,CAAA;;AATG,iBAoBnD,OAAA,CAde;EAAA,GAAA;AAAA,CAAA,EAgBrB,OAAA,CAAM,cAhBe,CAAA,OAgBO,gBAAA,CAAiB,IAhBxB,CAAA,CAAA,EAgB6B,oBAAA,CAAA,GAAA,CAAA,OAhB7B;iBAwBf,cAAA,CAxBe;EAAA,GAAA;AAAA,CAAA,EA0BrB,OAAA,CAAM,cA1Be,CAAA,OA0BO,gBAAA,CAAiB,OA1BxB,CAAA,CAAA,EA0BgC,oBAAA,CAAA,GAAA,CAAA,OA1BhC;iBA8Bf,cAAA,CA7BP;EAAA,SAAA;EAAA,UAAA;EAAA,QAAA;EAAA,GAAA;AAAA,CAAA,EAkCC,OAAA,CAAM,cAlCP,CAAA,OAkC6B,gBAAA,CAAiB,OAlC9C,CAAA,CAAA,EAkCsD,oBAAA,CAAA,GAAA,CAAA,OAlCtD"}
1
+ {"version":3,"file":"tooltip.d.ts","names":[],"sources":["../../../src/react/ui/tooltip.tsx"],"sourcesContent":[],"mappings":";;;;;;iBASS,eAAA;;;GAGN,OAAA,CAAM,sBAAsB,gBAAA,CAAiB,YAAS,kBAAA,CAAA,GAAA,CAAA;;AATG,iBAoBnD,OAAA,CAde;EAAA,GAAA;AAAA,CAAA,EAgBrB,OAAA,CAAM,cAhBe,CAAA,OAgBO,gBAAA,CAAiB,IAhBxB,CAAA,CAAA,EAgB6B,kBAAA,CAAA,GAAA,CAAA,OAhB7B;iBAwBf,cAAA,CAxBe;EAAA,GAAA;AAAA,CAAA,EA0BrB,OAAA,CAAM,cA1Be,CAAA,OA0BO,gBAAA,CAAiB,OA1BxB,CAAA,CAAA,EA0BgC,kBAAA,CAAA,GAAA,CAAA,OA1BhC;iBA8Bf,cAAA,CA7BP;EAAA,SAAA;EAAA,UAAA;EAAA,QAAA;EAAA,GAAA;AAAA,CAAA,EAkCC,OAAA,CAAM,cAlCP,CAAA,OAkC6B,gBAAA,CAAiB,OAlC9C,CAAA,CAAA,EAkCsD,kBAAA,CAAA,GAAA,CAAA,OAlCtD"}
@@ -328,10 +328,30 @@ exports(): unknown;
328
328
 
329
329
  Returns the public exports for this plugin. Override this to define a custom public API. By default, returns an empty object.
330
330
 
331
+ The returned object becomes the plugin's public API on the AppKit instance (e.g. `appkit.myPlugin.method()`). AppKit automatically binds method context and adds `asUser(req)` for user-scoped execution.
332
+
331
333
  #### Returns[​](#returns-5 "Direct link to Returns")
332
334
 
333
335
  `unknown`
334
336
 
337
+ #### Example[​](#example "Direct link to Example")
338
+
339
+ ```ts
340
+ class MyPlugin extends Plugin {
341
+ name = "myPlugin";
342
+ private getData() { return []; }
343
+
344
+ exports() {
345
+ return { getData: this.getData };
346
+ }
347
+ }
348
+
349
+ // After registration:
350
+ const appkit = await createApp({ plugins: [myPlugin()] });
351
+ appkit.myPlugin.getData();
352
+
353
+ ```
354
+
335
355
  #### Implementation of[​](#implementation-of-2 "Direct link to Implementation of")
336
356
 
337
357
  ```ts
@@ -12,6 +12,8 @@ function createApp<T>(config: {
12
12
 
13
13
  Bootstraps AppKit with the provided configuration.
14
14
 
15
+ Initializes telemetry, cache, and service context, then registers plugins in phase order (core, normal, deferred) and awaits their setup. The returned object maps each plugin name to its `exports()` API, with an `asUser(req)` method for user-scoped execution.
16
+
15
17
  ## Type Parameters[​](#type-parameters "Direct link to Type Parameters")
16
18
 
17
19
  | Type Parameter |
@@ -31,3 +33,30 @@ Bootstraps AppKit with the provided configuration.
31
33
  ## Returns[​](#returns "Direct link to Returns")
32
34
 
33
35
  `Promise`<`PluginMap`<`T`>>
36
+
37
+ A `PluginMap` keyed by plugin name with typed exports
38
+
39
+ ## Examples[​](#examples "Direct link to Examples")
40
+
41
+ ```ts
42
+ import { createApp, server } from "@databricks/appkit";
43
+
44
+ await createApp({
45
+ plugins: [server()],
46
+ });
47
+
48
+ ```
49
+
50
+ ```ts
51
+ import { createApp, server, analytics } from "@databricks/appkit";
52
+
53
+ const appkit = await createApp({
54
+ plugins: [server({ autoStart: false }), analytics({})],
55
+ });
56
+
57
+ appkit.server.extend((app) => {
58
+ app.get("/custom", (_req, res) => res.json({ ok: true }));
59
+ });
60
+ await appkit.server.start();
61
+
62
+ ```