@databricks/appkit-ui 0.21.0 → 0.23.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 (77) hide show
  1. package/CLAUDE.md +11 -0
  2. package/NOTICE.md +1 -0
  3. package/README.md +3 -20
  4. package/dist/cli/commands/generate-types.js +15 -13
  5. package/dist/cli/commands/generate-types.js.map +1 -1
  6. package/dist/cli/commands/setup.js +2 -2
  7. package/dist/cli/commands/setup.js.map +1 -1
  8. package/dist/js/config.d.ts +24 -0
  9. package/dist/js/config.d.ts.map +1 -0
  10. package/dist/js/config.js +49 -0
  11. package/dist/js/config.js.map +1 -0
  12. package/dist/js/index.d.ts +2 -1
  13. package/dist/js/index.js +2 -1
  14. package/dist/react/genie/genie-chat-message-list.d.ts.map +1 -1
  15. package/dist/react/genie/genie-chat-message-list.js +5 -4
  16. package/dist/react/genie/genie-chat-message-list.js.map +1 -1
  17. package/dist/react/genie/genie-chat-message.d.ts.map +1 -1
  18. package/dist/react/genie/genie-chat-message.js +7 -6
  19. package/dist/react/genie/genie-chat-message.js.map +1 -1
  20. package/dist/react/genie/genie-query-visualization.d.ts.map +1 -1
  21. package/dist/react/genie/genie-query-visualization.js +4 -3
  22. package/dist/react/genie/genie-query-visualization.js.map +1 -1
  23. package/dist/react/genie/index.d.ts +1 -1
  24. package/dist/react/genie/types.d.ts +2 -1
  25. package/dist/react/genie/types.d.ts.map +1 -1
  26. package/dist/react/genie/types.js +6 -0
  27. package/dist/react/genie/types.js.map +1 -0
  28. package/dist/react/genie/use-genie-chat.d.ts.map +1 -1
  29. package/dist/react/genie/use-genie-chat.js +60 -23
  30. package/dist/react/genie/use-genie-chat.js.map +1 -1
  31. package/dist/react/hooks/index.d.ts +5 -2
  32. package/dist/react/hooks/index.js +3 -0
  33. package/dist/react/hooks/types.d.ts +30 -1
  34. package/dist/react/hooks/types.d.ts.map +1 -1
  35. package/dist/react/hooks/use-plugin-config.d.ts +25 -0
  36. package/dist/react/hooks/use-plugin-config.d.ts.map +1 -0
  37. package/dist/react/hooks/use-plugin-config.js +32 -0
  38. package/dist/react/hooks/use-plugin-config.js.map +1 -0
  39. package/dist/react/hooks/use-serving-invoke.d.ts +30 -0
  40. package/dist/react/hooks/use-serving-invoke.d.ts.map +1 -0
  41. package/dist/react/hooks/use-serving-invoke.js +82 -0
  42. package/dist/react/hooks/use-serving-invoke.js.map +1 -0
  43. package/dist/react/hooks/use-serving-stream.d.ts +35 -0
  44. package/dist/react/hooks/use-serving-stream.d.ts.map +1 -0
  45. package/dist/react/hooks/use-serving-stream.js +101 -0
  46. package/dist/react/hooks/use-serving-stream.js.map +1 -0
  47. package/dist/react/index.d.ts +6 -3
  48. package/dist/react/index.js +4 -1
  49. package/dist/shared/src/index.d.ts +1 -1
  50. package/dist/shared/src/plugin.d.ts +12 -1
  51. package/dist/shared/src/plugin.d.ts.map +1 -0
  52. package/docs/api/appkit/Class.Plugin.md +83 -20
  53. package/docs/api/appkit/Function.appKitServingTypesPlugin.md +24 -0
  54. package/docs/api/appkit/Function.extractServingEndpoints.md +22 -0
  55. package/docs/api/appkit/Function.findServerFile.md +20 -0
  56. package/docs/api/appkit/Interface.EndpointConfig.md +23 -0
  57. package/docs/api/appkit/Interface.ServingEndpointEntry.md +30 -0
  58. package/docs/api/appkit/Interface.ServingEndpointRegistry.md +3 -0
  59. package/docs/api/appkit/TypeAlias.ExecutionResult.md +36 -0
  60. package/docs/api/appkit/TypeAlias.ServingFactory.md +15 -0
  61. package/docs/api/appkit.md +39 -31
  62. package/docs/app-management.md +1 -1
  63. package/docs/architecture.md +1 -1
  64. package/docs/development/ai-assisted-development.md +2 -2
  65. package/docs/development/local-development.md +1 -1
  66. package/docs/development/remote-bridge.md +1 -1
  67. package/docs/development/templates.md +93 -0
  68. package/docs/development.md +1 -1
  69. package/docs/faq.md +66 -0
  70. package/docs/plugins/caching.md +3 -1
  71. package/docs/plugins/execution-context.md +1 -1
  72. package/docs/plugins/lakebase.md +1 -1
  73. package/docs/plugins/serving.md +223 -0
  74. package/docs.md +2 -2
  75. package/llms.txt +11 -0
  76. package/package.json +60 -58
  77. package/sbom.cdx.json +1 -0
@@ -0,0 +1,35 @@
1
+ import { InferServingChunk, InferServingRequest, ServingAlias } from "./types.js";
2
+
3
+ //#region src/react/hooks/use-serving-stream.d.ts
4
+ interface UseServingStreamOptions<K extends ServingAlias = ServingAlias, T = InferServingChunk<K>> {
5
+ /** Endpoint alias for named mode. Omit for default mode. */
6
+ alias?: K;
7
+ /** If true, starts streaming automatically on mount. Default: false */
8
+ autoStart?: boolean;
9
+ /** Called with accumulated chunks when the stream completes successfully. */
10
+ onComplete?: (chunks: T[]) => void;
11
+ }
12
+ interface UseServingStreamResult<T = unknown, TBody = Record<string, unknown>> {
13
+ /** Trigger the streaming invocation. Pass an optional body override for this invocation. */
14
+ stream: (overrideBody?: TBody) => void;
15
+ /** Accumulated chunks received so far. */
16
+ chunks: T[];
17
+ /** Whether streaming is in progress. */
18
+ streaming: boolean;
19
+ /** Error message, if any. */
20
+ error: string | null;
21
+ /** Reset chunks and abort any active stream. */
22
+ reset: () => void;
23
+ }
24
+ /**
25
+ * Hook for streaming invocation of a serving endpoint via SSE.
26
+ * Calls `POST /api/serving/stream` (default) or `POST /api/serving/{alias}/stream` (named).
27
+ * Accumulates parsed chunks in state.
28
+ *
29
+ * When the type generator has populated `ServingEndpointRegistry`, the chunk type
30
+ * is automatically inferred from the endpoint's OpenAPI schema.
31
+ */
32
+ declare function useServingStream<K extends ServingAlias = ServingAlias>(body: InferServingRequest<K>, options?: UseServingStreamOptions<K>): UseServingStreamResult<InferServingChunk<K>, InferServingRequest<K>>;
33
+ //#endregion
34
+ export { UseServingStreamOptions, UseServingStreamResult, useServingStream };
35
+ //# sourceMappingURL=use-serving-stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-serving-stream.d.ts","names":[],"sources":["../../../src/react/hooks/use-serving-stream.ts"],"mappings":";;;UAUiB,uBAAA,WACL,YAAA,GAAe,YAAA,MACrB,iBAAA,CAAkB,CAAA;;EAGtB,KAAA,GAAQ,CAAA;EAL8B;EAOtC,SAAA;EANU;EAQV,UAAA,IAAc,MAAA,EAAQ,CAAA;AAAA;AAAA,UAGP,sBAAA,sBAEP,MAAA;EATA;EAYR,MAAA,GAAS,YAAA,GAAe,KAAA;EARD;EAUvB,MAAA,EAAQ,CAAA;EAlBR;EAoBA,SAAA;EApByB;EAsBzB,KAAA;EArBI;EAuBJ,KAAA;AAAA;;;;;;;;AAbF;iBAwBgB,gBAAA,WAA2B,YAAA,GAAe,YAAA,CAAA,CACxD,IAAA,EAAM,mBAAA,CAAoB,CAAA,GAC1B,OAAA,GAAS,uBAAA,CAAwB,CAAA,IAChC,sBAAA,CAAuB,iBAAA,CAAkB,CAAA,GAAI,mBAAA,CAAoB,CAAA"}
@@ -0,0 +1,101 @@
1
+ import { connectSSE } from "../../js/sse/connect-sse.js";
2
+ import "../../js/index.js";
3
+ import { usePluginClientConfig } from "./use-plugin-config.js";
4
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
5
+
6
+ //#region src/react/hooks/use-serving-stream.ts
7
+ /**
8
+ * Hook for streaming invocation of a serving endpoint via SSE.
9
+ * Calls `POST /api/serving/stream` (default) or `POST /api/serving/{alias}/stream` (named).
10
+ * Accumulates parsed chunks in state.
11
+ *
12
+ * When the type generator has populated `ServingEndpointRegistry`, the chunk type
13
+ * is automatically inferred from the endpoint's OpenAPI schema.
14
+ */
15
+ function useServingStream(body, options = {}) {
16
+ const { alias, autoStart = false, onComplete } = options;
17
+ const config = usePluginClientConfig("serving");
18
+ const aliasError = useMemo(() => {
19
+ if (!alias || !config.aliases) return null;
20
+ const aliasStr = String(alias);
21
+ if (!config.aliases.includes(aliasStr)) return `Unknown serving alias "${aliasStr}". Available: ${config.aliases.join(", ")}`;
22
+ return null;
23
+ }, [alias, config.aliases]);
24
+ const [chunks, setChunks] = useState([]);
25
+ const [streaming, setStreaming] = useState(false);
26
+ const [error, setError] = useState(aliasError);
27
+ const abortControllerRef = useRef(null);
28
+ const chunksRef = useRef([]);
29
+ const onCompleteRef = useRef(onComplete);
30
+ onCompleteRef.current = onComplete;
31
+ const urlSuffix = alias ? `/api/serving/${encodeURIComponent(String(alias))}/stream` : "/api/serving/stream";
32
+ const reset = useCallback(() => {
33
+ abortControllerRef.current?.abort();
34
+ abortControllerRef.current = null;
35
+ chunksRef.current = [];
36
+ setChunks([]);
37
+ setStreaming(false);
38
+ setError(null);
39
+ }, []);
40
+ const bodyJson = JSON.stringify(body);
41
+ const stream = useCallback((overrideBody) => {
42
+ if (aliasError) {
43
+ setError(aliasError);
44
+ return;
45
+ }
46
+ abortControllerRef.current?.abort();
47
+ setStreaming(true);
48
+ setError(null);
49
+ setChunks([]);
50
+ chunksRef.current = [];
51
+ const abortController = new AbortController();
52
+ abortControllerRef.current = abortController;
53
+ connectSSE({
54
+ url: urlSuffix,
55
+ payload: overrideBody ? JSON.stringify(overrideBody) : bodyJson,
56
+ signal: abortController.signal,
57
+ onMessage: async (message) => {
58
+ if (abortController.signal.aborted) return;
59
+ try {
60
+ const parsed = JSON.parse(message.data);
61
+ chunksRef.current = [...chunksRef.current, parsed];
62
+ setChunks(chunksRef.current);
63
+ } catch {}
64
+ },
65
+ onError: (err) => {
66
+ if (abortController.signal.aborted) return;
67
+ setStreaming(false);
68
+ setError(err instanceof Error ? err.message : "Streaming failed");
69
+ }
70
+ }).then(() => {
71
+ if (abortController.signal.aborted) return;
72
+ setStreaming(false);
73
+ onCompleteRef.current?.(chunksRef.current);
74
+ }).catch(() => {
75
+ if (abortController.signal.aborted) return;
76
+ setStreaming(false);
77
+ setError("Connection error");
78
+ });
79
+ }, [
80
+ urlSuffix,
81
+ bodyJson,
82
+ aliasError
83
+ ]);
84
+ useEffect(() => {
85
+ if (autoStart) stream();
86
+ return () => {
87
+ abortControllerRef.current?.abort();
88
+ };
89
+ }, [stream, autoStart]);
90
+ return {
91
+ stream,
92
+ chunks,
93
+ streaming,
94
+ error,
95
+ reset
96
+ };
97
+ }
98
+
99
+ //#endregion
100
+ export { useServingStream };
101
+ //# sourceMappingURL=use-serving-stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-serving-stream.js","names":[],"sources":["../../../src/react/hooks/use-serving-stream.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { connectSSE } from \"@/js\";\nimport type {\n InferServingChunk,\n InferServingRequest,\n ServingAlias,\n ServingClientConfig,\n} from \"./types\";\nimport { usePluginClientConfig } from \"./use-plugin-config\";\n\nexport interface UseServingStreamOptions<\n K extends ServingAlias = ServingAlias,\n T = InferServingChunk<K>,\n> {\n /** Endpoint alias for named mode. Omit for default mode. */\n alias?: K;\n /** If true, starts streaming automatically on mount. Default: false */\n autoStart?: boolean;\n /** Called with accumulated chunks when the stream completes successfully. */\n onComplete?: (chunks: T[]) => void;\n}\n\nexport interface UseServingStreamResult<\n T = unknown,\n TBody = Record<string, unknown>,\n> {\n /** Trigger the streaming invocation. Pass an optional body override for this invocation. */\n stream: (overrideBody?: TBody) => void;\n /** Accumulated chunks received so far. */\n chunks: T[];\n /** Whether streaming is in progress. */\n streaming: boolean;\n /** Error message, if any. */\n error: string | null;\n /** Reset chunks and abort any active stream. */\n reset: () => void;\n}\n\n/**\n * Hook for streaming invocation of a serving endpoint via SSE.\n * Calls `POST /api/serving/stream` (default) or `POST /api/serving/{alias}/stream` (named).\n * Accumulates parsed chunks in state.\n *\n * When the type generator has populated `ServingEndpointRegistry`, the chunk type\n * is automatically inferred from the endpoint's OpenAPI schema.\n */\nexport function useServingStream<K extends ServingAlias = ServingAlias>(\n body: InferServingRequest<K>,\n options: UseServingStreamOptions<K> = {} as UseServingStreamOptions<K>,\n): UseServingStreamResult<InferServingChunk<K>, InferServingRequest<K>> {\n type TChunk = InferServingChunk<K>;\n const { alias, autoStart = false, onComplete } = options;\n\n const config = usePluginClientConfig<ServingClientConfig>(\"serving\");\n\n const aliasError = useMemo(() => {\n if (!alias || !config.aliases) return null;\n const aliasStr = String(alias);\n if (!config.aliases.includes(aliasStr)) {\n return `Unknown serving alias \"${aliasStr}\". Available: ${config.aliases.join(\", \")}`;\n }\n return null;\n }, [alias, config.aliases]);\n\n const [chunks, setChunks] = useState<TChunk[]>([]);\n const [streaming, setStreaming] = useState(false);\n const [error, setError] = useState<string | null>(aliasError);\n const abortControllerRef = useRef<AbortController | null>(null);\n const chunksRef = useRef<TChunk[]>([]);\n const onCompleteRef = useRef(onComplete);\n onCompleteRef.current = onComplete;\n\n const urlSuffix = alias\n ? `/api/serving/${encodeURIComponent(String(alias))}/stream`\n : \"/api/serving/stream\";\n\n const reset = useCallback(() => {\n abortControllerRef.current?.abort();\n abortControllerRef.current = null;\n chunksRef.current = [];\n setChunks([]);\n setStreaming(false);\n setError(null);\n }, []);\n\n const bodyJson = JSON.stringify(body);\n\n const stream = useCallback(\n (overrideBody?: InferServingRequest<K>) => {\n if (aliasError) {\n setError(aliasError);\n return;\n }\n\n // Abort any existing stream\n abortControllerRef.current?.abort();\n\n setStreaming(true);\n setError(null);\n setChunks([]);\n chunksRef.current = [];\n\n const abortController = new AbortController();\n abortControllerRef.current = abortController;\n\n const payload = overrideBody ? JSON.stringify(overrideBody) : bodyJson;\n\n connectSSE({\n url: urlSuffix,\n payload,\n signal: abortController.signal,\n onMessage: async (message) => {\n if (abortController.signal.aborted) return;\n try {\n const parsed = JSON.parse(message.data);\n\n chunksRef.current = [...chunksRef.current, parsed as TChunk];\n setChunks(chunksRef.current);\n } catch {\n // Skip malformed messages\n }\n },\n onError: (err) => {\n if (abortController.signal.aborted) return;\n setStreaming(false);\n setError(err instanceof Error ? err.message : \"Streaming failed\");\n },\n })\n .then(() => {\n if (abortController.signal.aborted) return;\n // Stream completed\n setStreaming(false);\n onCompleteRef.current?.(chunksRef.current);\n })\n .catch(() => {\n if (abortController.signal.aborted) return;\n setStreaming(false);\n setError(\"Connection error\");\n });\n },\n [urlSuffix, bodyJson, aliasError],\n );\n\n useEffect(() => {\n if (autoStart) {\n stream();\n }\n\n return () => {\n abortControllerRef.current?.abort();\n };\n }, [stream, autoStart]);\n\n return { stream, chunks, streaming, error, reset };\n}\n"],"mappings":";;;;;;;;;;;;;;AA8CA,SAAgB,iBACd,MACA,UAAsC,EAAE,EAC8B;CAEtE,MAAM,EAAE,OAAO,YAAY,OAAO,eAAe;CAEjD,MAAM,SAAS,sBAA2C,UAAU;CAEpE,MAAM,aAAa,cAAc;AAC/B,MAAI,CAAC,SAAS,CAAC,OAAO,QAAS,QAAO;EACtC,MAAM,WAAW,OAAO,MAAM;AAC9B,MAAI,CAAC,OAAO,QAAQ,SAAS,SAAS,CACpC,QAAO,0BAA0B,SAAS,gBAAgB,OAAO,QAAQ,KAAK,KAAK;AAErF,SAAO;IACN,CAAC,OAAO,OAAO,QAAQ,CAAC;CAE3B,MAAM,CAAC,QAAQ,aAAa,SAAmB,EAAE,CAAC;CAClD,MAAM,CAAC,WAAW,gBAAgB,SAAS,MAAM;CACjD,MAAM,CAAC,OAAO,YAAY,SAAwB,WAAW;CAC7D,MAAM,qBAAqB,OAA+B,KAAK;CAC/D,MAAM,YAAY,OAAiB,EAAE,CAAC;CACtC,MAAM,gBAAgB,OAAO,WAAW;AACxC,eAAc,UAAU;CAExB,MAAM,YAAY,QACd,gBAAgB,mBAAmB,OAAO,MAAM,CAAC,CAAC,WAClD;CAEJ,MAAM,QAAQ,kBAAkB;AAC9B,qBAAmB,SAAS,OAAO;AACnC,qBAAmB,UAAU;AAC7B,YAAU,UAAU,EAAE;AACtB,YAAU,EAAE,CAAC;AACb,eAAa,MAAM;AACnB,WAAS,KAAK;IACb,EAAE,CAAC;CAEN,MAAM,WAAW,KAAK,UAAU,KAAK;CAErC,MAAM,SAAS,aACZ,iBAA0C;AACzC,MAAI,YAAY;AACd,YAAS,WAAW;AACpB;;AAIF,qBAAmB,SAAS,OAAO;AAEnC,eAAa,KAAK;AAClB,WAAS,KAAK;AACd,YAAU,EAAE,CAAC;AACb,YAAU,UAAU,EAAE;EAEtB,MAAM,kBAAkB,IAAI,iBAAiB;AAC7C,qBAAmB,UAAU;AAI7B,aAAW;GACT,KAAK;GACL,SAJc,eAAe,KAAK,UAAU,aAAa,GAAG;GAK5D,QAAQ,gBAAgB;GACxB,WAAW,OAAO,YAAY;AAC5B,QAAI,gBAAgB,OAAO,QAAS;AACpC,QAAI;KACF,MAAM,SAAS,KAAK,MAAM,QAAQ,KAAK;AAEvC,eAAU,UAAU,CAAC,GAAG,UAAU,SAAS,OAAiB;AAC5D,eAAU,UAAU,QAAQ;YACtB;;GAIV,UAAU,QAAQ;AAChB,QAAI,gBAAgB,OAAO,QAAS;AACpC,iBAAa,MAAM;AACnB,aAAS,eAAe,QAAQ,IAAI,UAAU,mBAAmB;;GAEpE,CAAC,CACC,WAAW;AACV,OAAI,gBAAgB,OAAO,QAAS;AAEpC,gBAAa,MAAM;AACnB,iBAAc,UAAU,UAAU,QAAQ;IAC1C,CACD,YAAY;AACX,OAAI,gBAAgB,OAAO,QAAS;AACpC,gBAAa,MAAM;AACnB,YAAS,mBAAmB;IAC5B;IAEN;EAAC;EAAW;EAAU;EAAW,CAClC;AAED,iBAAgB;AACd,MAAI,UACF,SAAQ;AAGV,eAAa;AACX,sBAAmB,SAAS,OAAO;;IAEpC,CAAC,QAAQ,UAAU,CAAC;AAEvB,QAAO;EAAE;EAAQ;EAAQ;EAAW;EAAO;EAAO"}
@@ -28,7 +28,7 @@ import { NewFolderInput, NewFolderInputProps } from "./file-browser/new-folder-i
28
28
  import "./file-browser/index.js";
29
29
  import { ColumnCategory, GenieColumnMeta, TransformedGenieData, transformGenieData } from "./genie/genie-query-transform.js";
30
30
  import { ChartInference, getCompatibleChartTypes, inferChartType } from "./genie/genie-chart-inference.js";
31
- import { GenieChatProps, GenieChatStatus, GenieMessageItem, UseGenieChatOptions, UseGenieChatReturn } from "./genie/types.js";
31
+ import { GenieChatProps, GenieChatStatus, GenieMessageItem, TERMINAL_STATUSES, UseGenieChatOptions, UseGenieChatReturn } from "./genie/types.js";
32
32
  import { GenieChat } from "./genie/genie-chat.js";
33
33
  import { GenieChatInput } from "./genie/genie-chat-input.js";
34
34
  import { GenieChatMessage } from "./genie/genie-chat-message.js";
@@ -36,8 +36,11 @@ import { GenieChatMessageList } from "./genie/genie-chat-message-list.js";
36
36
  import { GenieQueryVisualization } from "./genie/genie-query-visualization.js";
37
37
  import { useGenieChat } from "./genie/use-genie-chat.js";
38
38
  import "./genie/index.js";
39
- import { AnalyticsFormat, InferResultByFormat, InferRowType, PluginRegistry, QueryRegistry, TypedArrowTable, UseAnalyticsQueryOptions, UseAnalyticsQueryResult } from "./hooks/types.js";
39
+ import { AnalyticsFormat, InferResultByFormat, InferRowType, InferServingChunk, InferServingRequest, InferServingResponse, PluginRegistry, QueryRegistry, ServingAlias, ServingEndpointRegistry, TypedArrowTable, UseAnalyticsQueryOptions, UseAnalyticsQueryResult } from "./hooks/types.js";
40
40
  import { useAnalyticsQuery } from "./hooks/use-analytics-query.js";
41
+ import { usePluginClientConfig } from "./hooks/use-plugin-config.js";
42
+ import { UseServingInvokeOptions, UseServingInvokeResult, useServingInvoke } from "./hooks/use-serving-invoke.js";
43
+ import { UseServingStreamOptions, UseServingStreamResult, useServingStream } from "./hooks/use-serving-stream.js";
41
44
  import "./hooks/index.js";
42
45
  import { cn } from "./lib/utils.js";
43
46
  import { PortalContainerContext, PortalContainerProvider, usePortalContainer, useResolvedPortalContainer } from "./portal-container-context.js";
@@ -97,4 +100,4 @@ import { Textarea } from "./ui/textarea.js";
97
100
  import { Toggle, toggleVariants } from "./ui/toggle.js";
98
101
  import { ToggleGroup, ToggleGroupItem } from "./ui/toggle-group.js";
99
102
  import "./ui/index.js";
100
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AnalyticsFormat, AreaChart, AreaChartProps, AreaChartSpecificProps, AspectRatio, Avatar, AvatarFallback, AvatarImage, Badge, BarChart, BarChartProps, BarChartSpecificProps, BaseChart, BaseChartProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, CHART_COLOR_VARS, CHART_COLOR_VARS_CATEGORICAL, CHART_COLOR_VARS_DIVERGING, CHART_COLOR_VARS_SEQUENTIAL, Calendar, CalendarDayButton, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, CartesianContext, ChartBaseProps, ChartColorPalette, ChartConfig, ChartContainer, ChartData, ChartInference, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, ChartType, ChartWrapper, ChartWrapperProps, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, ColumnCategory, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DATE_FIELD_PATTERNS, DataFormat, DataProps, DataTable, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DirectoryEntry, DirectoryList, DirectoryListProps, DonutChart, DonutChartProps, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle, FALLBACK_COLORS_CATEGORICAL, FALLBACK_COLORS_DIVERGING, FALLBACK_COLORS_SEQUENTIAL, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, FileBreadcrumb, FileBreadcrumbProps, FileBrowserLabels, FileEntry, FileEntryProps, FilePreview, FilePreviewPanel, FilePreviewPanelProps, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, GenieAttachmentResponse, GenieChat, GenieChatInput, GenieChatMessage, GenieChatMessageList, GenieChatProps, GenieChatStatus, GenieColumnMeta, GenieMessageItem, GenieMessageResponse, GenieQueryVisualization, GenieStatementResponse, GenieStreamEvent, HeatmapChart, HeatmapChartProps, HeatmapChartSpecificProps, HeatmapContext, HoverCard, HoverCardContent, HoverCardTrigger, InferResultByFormat, InferRowType, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Kbd, KbdGroup, Label, LineChart, LineChartProps, LineChartSpecificProps, METADATA_DATE_PATTERNS, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, NAME_FIELD_PATTERNS, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NewFolderInput, NewFolderInputProps, NormalizedChartData, NormalizedChartDataBase, NormalizedHeatmapData, OptionBuilderContext, Orientation, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PieChart, PieChartProps, PieChartSpecificProps, PluginRegistry, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PortalContainerContext, PortalContainerProvider, Progress, QueryProps, QueryRegistry, RadarChart, RadarChartProps, RadarChartSpecificProps, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, ScatterChart, ScatterChartProps, ScatterChartSpecificProps, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, Spinner, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TransformedGenieData, TypedArrowTable, UnifiedChartProps, UseAnalyticsQueryOptions, UseAnalyticsQueryResult, UseChartDataOptions, UseChartDataResult, UseGenieChatOptions, UseGenieChatReturn, badgeVariants, buildCartesianOption, buildHeatmapOption, buildHorizontalBarOption, buildPieOption, buildRadarOption, buttonGroupVariants, buttonVariants, cn, createChart, createTimeSeriesData, formatFileSize, formatLabel, getCompatibleChartTypes, inferChartType, isArrowTable, isDataProps, isQueryProps, navigationMenuTriggerStyle, normalizeChartData, normalizeHeatmapData, sortTimeSeriesAscending, toChartArray, toChartValue, toggleVariants, transformGenieData, truncateLabel, useAllThemeColors, useAnalyticsQuery, useChartData, useFormField, useGenieChat, usePortalContainer, useResolvedPortalContainer, useSidebar, useThemeColors };
103
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AnalyticsFormat, AreaChart, AreaChartProps, AreaChartSpecificProps, AspectRatio, Avatar, AvatarFallback, AvatarImage, Badge, BarChart, BarChartProps, BarChartSpecificProps, BaseChart, BaseChartProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, CHART_COLOR_VARS, CHART_COLOR_VARS_CATEGORICAL, CHART_COLOR_VARS_DIVERGING, CHART_COLOR_VARS_SEQUENTIAL, Calendar, CalendarDayButton, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, CartesianContext, ChartBaseProps, ChartColorPalette, ChartConfig, ChartContainer, ChartData, ChartInference, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, ChartType, ChartWrapper, ChartWrapperProps, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, ColumnCategory, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DATE_FIELD_PATTERNS, DataFormat, DataProps, DataTable, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DirectoryEntry, DirectoryList, DirectoryListProps, DonutChart, DonutChartProps, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle, FALLBACK_COLORS_CATEGORICAL, FALLBACK_COLORS_DIVERGING, FALLBACK_COLORS_SEQUENTIAL, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, FileBreadcrumb, FileBreadcrumbProps, FileBrowserLabels, FileEntry, FileEntryProps, FilePreview, FilePreviewPanel, FilePreviewPanelProps, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, GenieAttachmentResponse, GenieChat, GenieChatInput, GenieChatMessage, GenieChatMessageList, GenieChatProps, GenieChatStatus, GenieColumnMeta, GenieMessageItem, GenieMessageResponse, GenieQueryVisualization, GenieStatementResponse, GenieStreamEvent, HeatmapChart, HeatmapChartProps, HeatmapChartSpecificProps, HeatmapContext, HoverCard, HoverCardContent, HoverCardTrigger, InferResultByFormat, InferRowType, InferServingChunk, InferServingRequest, InferServingResponse, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Kbd, KbdGroup, Label, LineChart, LineChartProps, LineChartSpecificProps, METADATA_DATE_PATTERNS, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, NAME_FIELD_PATTERNS, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NewFolderInput, NewFolderInputProps, NormalizedChartData, NormalizedChartDataBase, NormalizedHeatmapData, OptionBuilderContext, Orientation, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PieChart, PieChartProps, PieChartSpecificProps, PluginRegistry, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PortalContainerContext, PortalContainerProvider, Progress, QueryProps, QueryRegistry, RadarChart, RadarChartProps, RadarChartSpecificProps, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, ScatterChart, ScatterChartProps, ScatterChartSpecificProps, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, ServingAlias, ServingEndpointRegistry, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, Spinner, Switch, TERMINAL_STATUSES, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TransformedGenieData, TypedArrowTable, UnifiedChartProps, UseAnalyticsQueryOptions, UseAnalyticsQueryResult, UseChartDataOptions, UseChartDataResult, UseGenieChatOptions, UseGenieChatReturn, UseServingInvokeOptions, UseServingInvokeResult, UseServingStreamOptions, UseServingStreamResult, badgeVariants, buildCartesianOption, buildHeatmapOption, buildHorizontalBarOption, buildPieOption, buildRadarOption, buttonGroupVariants, buttonVariants, cn, createChart, createTimeSeriesData, formatFileSize, formatLabel, getCompatibleChartTypes, inferChartType, isArrowTable, isDataProps, isQueryProps, navigationMenuTriggerStyle, normalizeChartData, normalizeHeatmapData, sortTimeSeriesAscending, toChartArray, toChartValue, toggleVariants, transformGenieData, truncateLabel, useAllThemeColors, useAnalyticsQuery, useChartData, useFormField, useGenieChat, usePluginClientConfig, usePortalContainer, useResolvedPortalContainer, useServingInvoke, useServingStream, useSidebar, useThemeColors };
@@ -46,6 +46,9 @@ import { GenieChatMessageList } from "./genie/genie-chat-message-list.js";
46
46
  import { useGenieChat } from "./genie/use-genie-chat.js";
47
47
  import { GenieChat } from "./genie/genie-chat.js";
48
48
  import "./genie/index.js";
49
+ import { usePluginClientConfig } from "./hooks/use-plugin-config.js";
50
+ import { useServingInvoke } from "./hooks/use-serving-invoke.js";
51
+ import { useServingStream } from "./hooks/use-serving-stream.js";
49
52
  import "./hooks/index.js";
50
53
  import { Input } from "./ui/input.js";
51
54
  import { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue } from "./ui/select.js";
@@ -94,4 +97,4 @@ import { Toggle, toggleVariants } from "./ui/toggle.js";
94
97
  import { ToggleGroup, ToggleGroupItem } from "./ui/toggle-group.js";
95
98
  import "./ui/index.js";
96
99
 
97
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AreaChart, AspectRatio, Avatar, AvatarFallback, AvatarImage, Badge, BarChart, BaseChart, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, CHART_COLOR_VARS, CHART_COLOR_VARS_CATEGORICAL, CHART_COLOR_VARS_DIVERGING, CHART_COLOR_VARS_SEQUENTIAL, Calendar, CalendarDayButton, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, ChartWrapper, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DATE_FIELD_PATTERNS, DataTable, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DirectoryList, DonutChart, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle, FALLBACK_COLORS_CATEGORICAL, FALLBACK_COLORS_DIVERGING, FALLBACK_COLORS_SEQUENTIAL, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, FileBreadcrumb, FileEntry, FilePreviewPanel, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, GenieChat, GenieChatInput, GenieChatMessage, GenieChatMessageList, GenieQueryVisualization, HeatmapChart, HoverCard, HoverCardContent, HoverCardTrigger, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Kbd, KbdGroup, Label, LineChart, METADATA_DATE_PATTERNS, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, NAME_FIELD_PATTERNS, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NewFolderInput, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PieChart, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PortalContainerContext, PortalContainerProvider, Progress, RadarChart, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, ScatterChart, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, Spinner, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, badgeVariants, buildCartesianOption, buildHeatmapOption, buildHorizontalBarOption, buildPieOption, buildRadarOption, buttonGroupVariants, buttonVariants, cn, createChart, createTimeSeriesData, formatFileSize, formatLabel, getCompatibleChartTypes, inferChartType, isArrowTable, isDataProps, isQueryProps, navigationMenuTriggerStyle, normalizeChartData, normalizeHeatmapData, sortTimeSeriesAscending, toChartArray, toChartValue, toggleVariants, transformGenieData, truncateLabel, useAllThemeColors, useAnalyticsQuery, useChartData, useFormField, useGenieChat, usePortalContainer, useResolvedPortalContainer, useSidebar, useThemeColors };
100
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AreaChart, AspectRatio, Avatar, AvatarFallback, AvatarImage, Badge, BarChart, BaseChart, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, CHART_COLOR_VARS, CHART_COLOR_VARS_CATEGORICAL, CHART_COLOR_VARS_DIVERGING, CHART_COLOR_VARS_SEQUENTIAL, Calendar, CalendarDayButton, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, ChartWrapper, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DATE_FIELD_PATTERNS, DataTable, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DirectoryList, DonutChart, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle, FALLBACK_COLORS_CATEGORICAL, FALLBACK_COLORS_DIVERGING, FALLBACK_COLORS_SEQUENTIAL, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, FileBreadcrumb, FileEntry, FilePreviewPanel, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, GenieChat, GenieChatInput, GenieChatMessage, GenieChatMessageList, GenieQueryVisualization, HeatmapChart, HoverCard, HoverCardContent, HoverCardTrigger, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Kbd, KbdGroup, Label, LineChart, METADATA_DATE_PATTERNS, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, NAME_FIELD_PATTERNS, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NewFolderInput, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PieChart, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PortalContainerContext, PortalContainerProvider, Progress, RadarChart, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, ScatterChart, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, Spinner, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, badgeVariants, buildCartesianOption, buildHeatmapOption, buildHorizontalBarOption, buildPieOption, buildRadarOption, buttonGroupVariants, buttonVariants, cn, createChart, createTimeSeriesData, formatFileSize, formatLabel, getCompatibleChartTypes, inferChartType, isArrowTable, isDataProps, isQueryProps, navigationMenuTriggerStyle, normalizeChartData, normalizeHeatmapData, sortTimeSeriesAscending, toChartArray, toChartValue, toggleVariants, transformGenieData, truncateLabel, useAllThemeColors, useAnalyticsQuery, useChartData, useFormField, useGenieChat, usePluginClientConfig, usePortalContainer, useResolvedPortalContainer, useServingInvoke, useServingStream, useSidebar, useThemeColors };
@@ -1,4 +1,4 @@
1
- import "./plugin.js";
1
+ import { PluginClientConfigs, PluginEndpointMap, PluginEndpoints } from "./plugin.js";
2
2
  import "./cache.js";
3
3
  import "./execute.js";
4
4
  import { GenieAttachmentResponse, GenieMessageResponse, GenieStatementResponse, GenieStreamEvent } from "./genie.js";
@@ -1,2 +1,13 @@
1
1
  import "express";
2
- import "json-schema";
2
+ import "json-schema";
3
+
4
+ //#region ../shared/src/plugin.d.ts
5
+ /** Map of endpoint names to their full paths for a plugin */
6
+ type PluginEndpointMap = Record<string, string>;
7
+ /** Map of plugin names to their endpoint maps */
8
+ type PluginEndpoints = Record<string, PluginEndpointMap>;
9
+ /** Map of plugin names to their client-exposed config */
10
+ type PluginClientConfigs = Record<string, Record<string, unknown>>;
11
+ //#endregion
12
+ export { PluginClientConfigs, PluginEndpointMap, PluginEndpoints };
13
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","names":[],"sources":["../../../../shared/src/plugin.ts"],"mappings":";;;;;KAuNY,iBAAA,GAAoB,MAAA;;KAGpB,eAAA,GAAkB,MAAA,SAAe,iBAAA;;KAGjC,mBAAA,GAAsB,MAAA,SAAe,MAAA"}
@@ -251,7 +251,65 @@ A proxied plugin instance that executes as the user
251
251
 
252
252
  #### Throws[​](#throws "Direct link to Throws")
253
253
 
254
- AuthenticationError if user token is not available in request headers (production only). In development mode (`NODE_ENV=development`), falls back to the service principal instead of throwing.
254
+ AuthenticationError if user token is not available in request headers (production only). In development mode (`NODE_ENV=development`), skips user impersonation instead of throwing.
255
+
256
+ ***
257
+
258
+ ### clientConfig()[​](#clientconfig "Direct link to clientConfig()")
259
+
260
+ ```ts
261
+ clientConfig(): Record<string, unknown>;
262
+
263
+ ```
264
+
265
+ Returns startup config to expose to the client. Override this to surface server-side values that are safe to publish to the frontend, such as feature flags, resource IDs, or other app boot settings.
266
+
267
+ This runs once when the server starts, so it should not depend on request-scoped or user-specific state.
268
+
269
+ String values that match non-public environment variables are redacted unless you intentionally expose them via a matching `PUBLIC_APPKIT_` env var.
270
+
271
+ Values must be JSON-serializable plain data (no functions, Dates, classes, Maps, Sets, BigInts, or circular references). By default returns an empty object (plugin contributes nothing to client config).
272
+
273
+ On the client, read the config with the `usePluginClientConfig` hook (React) or the `getPluginClientConfig` function (vanilla JS), both from `@databricks/appkit-ui`.
274
+
275
+ #### Returns[​](#returns-3 "Direct link to Returns")
276
+
277
+ `Record`<`string`, `unknown`>
278
+
279
+ #### Example[​](#example "Direct link to Example")
280
+
281
+ ```ts
282
+ // Server — plugin definition
283
+ class MyPlugin extends Plugin<MyConfig> {
284
+ clientConfig() {
285
+ return {
286
+ warehouseId: this.config.warehouseId,
287
+ features: { darkMode: true },
288
+ };
289
+ }
290
+ }
291
+
292
+ // Client — React component
293
+ import { usePluginClientConfig } from "@databricks/appkit-ui/react";
294
+
295
+ interface MyPluginConfig { warehouseId: string; features: { darkMode: boolean } }
296
+
297
+ const config = usePluginClientConfig<MyPluginConfig>("myPlugin");
298
+ config.warehouseId; // "abc-123"
299
+
300
+ // Client — vanilla JS
301
+ import { getPluginClientConfig } from "@databricks/appkit-ui/js";
302
+
303
+ const config = getPluginClientConfig<MyPluginConfig>("myPlugin");
304
+
305
+ ```
306
+
307
+ #### Implementation of[​](#implementation-of-2 "Direct link to Implementation of")
308
+
309
+ ```ts
310
+ BasePlugin.clientConfig
311
+
312
+ ```
255
313
 
256
314
  ***
257
315
 
@@ -261,13 +319,18 @@ AuthenticationError if user token is not available in request headers (productio
261
319
  protected execute<T>(
262
320
  fn: (signal?: AbortSignal) => Promise<T>,
263
321
  options: PluginExecutionSettings,
264
- userKey?: string): Promise<T | undefined>;
322
+ userKey?: string): Promise<ExecutionResult<T>>;
265
323
 
266
324
  ```
267
325
 
268
326
  Execute a function with the plugin's interceptor chain.
269
327
 
270
- All errors are caught and `undefined` is returned (production-safe). Route handlers should check for `undefined` and respond with an appropriate error status.
328
+ Returns an [ExecutionResult](./docs/api/appkit/TypeAlias.ExecutionResult.md) discriminated union:
329
+
330
+ * `{ ok: true, data: T }` on success
331
+ * `{ ok: false, status: number, message: string }` on failure
332
+
333
+ Errors are never thrown — the method is production-safe.
271
334
 
272
335
  #### Type Parameters[​](#type-parameters-1 "Direct link to Type Parameters")
273
336
 
@@ -283,9 +346,9 @@ All errors are caught and `undefined` is returned (production-safe). Route handl
283
346
  | `options` | `PluginExecutionSettings` |
284
347
  | `userKey?` | `string` |
285
348
 
286
- #### Returns[​](#returns-3 "Direct link to Returns")
349
+ #### Returns[​](#returns-4 "Direct link to Returns")
287
350
 
288
- `Promise`<`T` | `undefined`>
351
+ `Promise`<[`ExecutionResult`](./docs/api/appkit/TypeAlias.ExecutionResult.md)<`T`>>
289
352
 
290
353
  ***
291
354
 
@@ -315,7 +378,7 @@ userKey?: string): Promise<void>;
315
378
  | `options` | [`StreamExecutionSettings`](./docs/api/appkit/Interface.StreamExecutionSettings.md) |
316
379
  | `userKey?` | `string` |
317
380
 
318
- #### Returns[​](#returns-4 "Direct link to Returns")
381
+ #### Returns[​](#returns-5 "Direct link to Returns")
319
382
 
320
383
  `Promise`<`void`>
321
384
 
@@ -332,11 +395,11 @@ Returns the public exports for this plugin. Override this to define a custom pub
332
395
 
333
396
  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.
334
397
 
335
- #### Returns[​](#returns-5 "Direct link to Returns")
398
+ #### Returns[​](#returns-6 "Direct link to Returns")
336
399
 
337
400
  `unknown`
338
401
 
339
- #### Example[​](#example "Direct link to Example")
402
+ #### Example[​](#example-1 "Direct link to Example")
340
403
 
341
404
  ```ts
342
405
  class MyPlugin extends Plugin {
@@ -353,7 +416,7 @@ appkit.myPlugin.getData();
353
416
 
354
417
  ```
355
418
 
356
- #### Implementation of[​](#implementation-of-2 "Direct link to Implementation of")
419
+ #### Implementation of[​](#implementation-of-3 "Direct link to Implementation of")
357
420
 
358
421
  ```ts
359
422
  BasePlugin.exports
@@ -369,11 +432,11 @@ getEndpoints(): PluginEndpointMap;
369
432
 
370
433
  ```
371
434
 
372
- #### Returns[​](#returns-6 "Direct link to Returns")
435
+ #### Returns[​](#returns-7 "Direct link to Returns")
373
436
 
374
437
  `PluginEndpointMap`
375
438
 
376
- #### Implementation of[​](#implementation-of-3 "Direct link to Implementation of")
439
+ #### Implementation of[​](#implementation-of-4 "Direct link to Implementation of")
377
440
 
378
441
  ```ts
379
442
  BasePlugin.getEndpoints
@@ -389,11 +452,11 @@ getSkipBodyParsingPaths(): ReadonlySet<string>;
389
452
 
390
453
  ```
391
454
 
392
- #### Returns[​](#returns-7 "Direct link to Returns")
455
+ #### Returns[​](#returns-8 "Direct link to Returns")
393
456
 
394
457
  `ReadonlySet`<`string`>
395
458
 
396
- #### Implementation of[​](#implementation-of-4 "Direct link to Implementation of")
459
+ #### Implementation of[​](#implementation-of-5 "Direct link to Implementation of")
397
460
 
398
461
  ```ts
399
462
  BasePlugin.getSkipBodyParsingPaths
@@ -415,11 +478,11 @@ injectRoutes(_: Router): void;
415
478
  | --------- | -------- |
416
479
  | `_` | `Router` |
417
480
 
418
- #### Returns[​](#returns-8 "Direct link to Returns")
481
+ #### Returns[​](#returns-9 "Direct link to Returns")
419
482
 
420
483
  `void`
421
484
 
422
- #### Implementation of[​](#implementation-of-5 "Direct link to Implementation of")
485
+ #### Implementation of[​](#implementation-of-6 "Direct link to Implementation of")
423
486
 
424
487
  ```ts
425
488
  BasePlugin.injectRoutes
@@ -442,7 +505,7 @@ protected registerEndpoint(name: string, path: string): void;
442
505
  | `name` | `string` |
443
506
  | `path` | `string` |
444
507
 
445
- #### Returns[​](#returns-9 "Direct link to Returns")
508
+ #### Returns[​](#returns-10 "Direct link to Returns")
446
509
 
447
510
  `void`
448
511
 
@@ -465,7 +528,7 @@ Returns the `x-forwarded-user` header when present. In development mode (`NODE_E
465
528
  | --------- | --------- |
466
529
  | `req` | `Request` |
467
530
 
468
- #### Returns[​](#returns-10 "Direct link to Returns")
531
+ #### Returns[​](#returns-11 "Direct link to Returns")
469
532
 
470
533
  `string`
471
534
 
@@ -495,7 +558,7 @@ protected route<_TResponse>(router: Router, config: RouteConfig): void;
495
558
  | `router` | `Router` |
496
559
  | `config` | `RouteConfig` |
497
560
 
498
- #### Returns[​](#returns-11 "Direct link to Returns")
561
+ #### Returns[​](#returns-12 "Direct link to Returns")
499
562
 
500
563
  `void`
501
564
 
@@ -508,11 +571,11 @@ setup(): Promise<void>;
508
571
 
509
572
  ```
510
573
 
511
- #### Returns[​](#returns-12 "Direct link to Returns")
574
+ #### Returns[​](#returns-13 "Direct link to Returns")
512
575
 
513
576
  `Promise`<`void`>
514
577
 
515
- #### Implementation of[​](#implementation-of-6 "Direct link to Implementation of")
578
+ #### Implementation of[​](#implementation-of-7 "Direct link to Implementation of")
516
579
 
517
580
  ```ts
518
581
  BasePlugin.setup
@@ -0,0 +1,24 @@
1
+ # Function: appKitServingTypesPlugin()
2
+
3
+ ```ts
4
+ function appKitServingTypesPlugin(options?: AppKitServingTypesPluginOptions): Plugin$1;
5
+
6
+ ```
7
+
8
+ Vite plugin to generate TypeScript types for AppKit serving endpoints. Fetches OpenAPI schemas from Databricks and generates a .d.ts with ServingEndpointRegistry module augmentation.
9
+
10
+ Endpoint discovery order:
11
+
12
+ 1. Explicit `endpoints` option (override)
13
+ 2. AST extraction from server file (server/index.ts or server/server.ts)
14
+ 3. DATABRICKS\_SERVING\_ENDPOINT\_NAME env var (single default endpoint)
15
+
16
+ ## Parameters[​](#parameters "Direct link to Parameters")
17
+
18
+ | Parameter | Type |
19
+ | ---------- | --------------------------------- |
20
+ | `options?` | `AppKitServingTypesPluginOptions` |
21
+
22
+ ## Returns[​](#returns "Direct link to Returns")
23
+
24
+ `Plugin$1`
@@ -0,0 +1,22 @@
1
+ # Function: extractServingEndpoints()
2
+
3
+ ```ts
4
+ function extractServingEndpoints(serverFilePath: string):
5
+ | Record<string, EndpointConfig>
6
+ | null;
7
+
8
+ ```
9
+
10
+ Extract serving endpoint config from a server file by AST-parsing it. Looks for `serving({ endpoints: { alias: { env: "..." }, ... } })` calls and extracts the endpoint alias names and their environment variable mappings.
11
+
12
+ ## Parameters[​](#parameters "Direct link to Parameters")
13
+
14
+ | Parameter | Type | Description |
15
+ | ---------------- | -------- | -------------------------------------- |
16
+ | `serverFilePath` | `string` | Absolute path to the server entry file |
17
+
18
+ ## Returns[​](#returns "Direct link to Returns")
19
+
20
+ \| `Record`<`string`, [`EndpointConfig`](./docs/api/appkit/Interface.EndpointConfig.md)> | `null`
21
+
22
+ Extracted endpoint config, or null if not found or not extractable
@@ -0,0 +1,20 @@
1
+ # Function: findServerFile()
2
+
3
+ ```ts
4
+ function findServerFile(basePath: string): string | null;
5
+
6
+ ```
7
+
8
+ Find the server entry file by checking candidate paths in order.
9
+
10
+ ## Parameters[​](#parameters "Direct link to Parameters")
11
+
12
+ | Parameter | Type | Description |
13
+ | ---------- | -------- | ------------------------------------- |
14
+ | `basePath` | `string` | Project root directory to search from |
15
+
16
+ ## Returns[​](#returns "Direct link to Returns")
17
+
18
+ `string` | `null`
19
+
20
+ Absolute path to the server file, or null if none found
@@ -0,0 +1,23 @@
1
+ # Interface: EndpointConfig
2
+
3
+ ## Properties[​](#properties "Direct link to Properties")
4
+
5
+ ### env[​](#env "Direct link to env")
6
+
7
+ ```ts
8
+ env: string;
9
+
10
+ ```
11
+
12
+ Environment variable holding the endpoint name.
13
+
14
+ ***
15
+
16
+ ### servedModel?[​](#servedmodel "Direct link to servedModel?")
17
+
18
+ ```ts
19
+ optional servedModel: string;
20
+
21
+ ```
22
+
23
+ Target a specific served model (bypasses traffic routing).
@@ -0,0 +1,30 @@
1
+ # Interface: ServingEndpointEntry
2
+
3
+ Shape of a single registry entry.
4
+
5
+ ## Properties[​](#properties "Direct link to Properties")
6
+
7
+ ### chunk[​](#chunk "Direct link to chunk")
8
+
9
+ ```ts
10
+ chunk: unknown;
11
+
12
+ ```
13
+
14
+ ***
15
+
16
+ ### request[​](#request "Direct link to request")
17
+
18
+ ```ts
19
+ request: Record<string, unknown>;
20
+
21
+ ```
22
+
23
+ ***
24
+
25
+ ### response[​](#response "Direct link to response")
26
+
27
+ ```ts
28
+ response: unknown;
29
+
30
+ ```
@@ -0,0 +1,3 @@
1
+ # Interface: ServingEndpointRegistry
2
+
3
+ Registry interface for serving endpoint type generation. Empty by default — augmented by the Vite type generator's `.d.ts` output via module augmentation. When populated, provides autocomplete for alias names and typed request/response/chunk per endpoint.