@seed-ship/mcp-ui-solid 2.0.1 → 2.1.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 (133) hide show
  1. package/dist/components/AutocompleteDropdown.cjs +201 -0
  2. package/dist/components/AutocompleteDropdown.cjs.map +1 -0
  3. package/dist/components/AutocompleteDropdown.d.ts +71 -0
  4. package/dist/components/AutocompleteDropdown.d.ts.map +1 -0
  5. package/dist/components/AutocompleteDropdown.js +201 -0
  6. package/dist/components/AutocompleteDropdown.js.map +1 -0
  7. package/dist/components/AutocompleteFormField.cjs +289 -0
  8. package/dist/components/AutocompleteFormField.cjs.map +1 -0
  9. package/dist/components/AutocompleteFormField.d.ts +52 -0
  10. package/dist/components/AutocompleteFormField.d.ts.map +1 -0
  11. package/dist/components/AutocompleteFormField.js +289 -0
  12. package/dist/components/AutocompleteFormField.js.map +1 -0
  13. package/dist/components/DraggableGridItem.cjs +133 -0
  14. package/dist/components/DraggableGridItem.cjs.map +1 -0
  15. package/dist/components/DraggableGridItem.d.ts +95 -0
  16. package/dist/components/DraggableGridItem.d.ts.map +1 -0
  17. package/dist/components/DraggableGridItem.js +133 -0
  18. package/dist/components/DraggableGridItem.js.map +1 -0
  19. package/dist/components/EditableUIResourceRenderer.cjs +203 -0
  20. package/dist/components/EditableUIResourceRenderer.cjs.map +1 -0
  21. package/dist/components/EditableUIResourceRenderer.d.ts +43 -0
  22. package/dist/components/EditableUIResourceRenderer.d.ts.map +1 -0
  23. package/dist/components/EditableUIResourceRenderer.js +203 -0
  24. package/dist/components/EditableUIResourceRenderer.js.map +1 -0
  25. package/dist/components/GhostText.cjs +105 -0
  26. package/dist/components/GhostText.cjs.map +1 -0
  27. package/dist/components/GhostText.d.ts +113 -0
  28. package/dist/components/GhostText.d.ts.map +1 -0
  29. package/dist/components/GhostText.js +105 -0
  30. package/dist/components/GhostText.js.map +1 -0
  31. package/dist/components/ResizeHandle.cjs +173 -0
  32. package/dist/components/ResizeHandle.cjs.map +1 -0
  33. package/dist/components/ResizeHandle.d.ts +50 -0
  34. package/dist/components/ResizeHandle.d.ts.map +1 -0
  35. package/dist/components/ResizeHandle.js +173 -0
  36. package/dist/components/ResizeHandle.js.map +1 -0
  37. package/dist/context/AutocompleteContext.cjs +158 -0
  38. package/dist/context/AutocompleteContext.cjs.map +1 -0
  39. package/dist/context/AutocompleteContext.d.ts +77 -0
  40. package/dist/context/AutocompleteContext.d.ts.map +1 -0
  41. package/dist/context/AutocompleteContext.js +158 -0
  42. package/dist/context/AutocompleteContext.js.map +1 -0
  43. package/dist/hooks/index.d.ts +6 -0
  44. package/dist/hooks/index.d.ts.map +1 -1
  45. package/dist/hooks/useAutocomplete.cjs +234 -0
  46. package/dist/hooks/useAutocomplete.cjs.map +1 -0
  47. package/dist/hooks/useAutocomplete.d.ts +119 -0
  48. package/dist/hooks/useAutocomplete.d.ts.map +1 -0
  49. package/dist/hooks/useAutocomplete.js +234 -0
  50. package/dist/hooks/useAutocomplete.js.map +1 -0
  51. package/dist/hooks/useDragDrop.cjs +170 -0
  52. package/dist/hooks/useDragDrop.cjs.map +1 -0
  53. package/dist/hooks/useDragDrop.d.ts +100 -0
  54. package/dist/hooks/useDragDrop.d.ts.map +1 -0
  55. package/dist/hooks/useDragDrop.js +170 -0
  56. package/dist/hooks/useDragDrop.js.map +1 -0
  57. package/dist/hooks/useResize.cjs +209 -0
  58. package/dist/hooks/useResize.cjs.map +1 -0
  59. package/dist/hooks/useResize.d.ts +87 -0
  60. package/dist/hooks/useResize.d.ts.map +1 -0
  61. package/dist/hooks/useResize.js +209 -0
  62. package/dist/hooks/useResize.js.map +1 -0
  63. package/dist/hooks.cjs +6 -0
  64. package/dist/hooks.cjs.map +1 -1
  65. package/dist/hooks.d.cts +6 -0
  66. package/dist/hooks.d.ts +6 -0
  67. package/dist/hooks.js +6 -0
  68. package/dist/hooks.js.map +1 -1
  69. package/dist/index.cjs +29 -0
  70. package/dist/index.cjs.map +1 -1
  71. package/dist/index.d.cts +18 -3
  72. package/dist/index.d.ts +18 -3
  73. package/dist/index.d.ts.map +1 -1
  74. package/dist/index.js +29 -0
  75. package/dist/index.js.map +1 -1
  76. package/dist/plugins/duckdb.cjs +192 -0
  77. package/dist/plugins/duckdb.cjs.map +1 -0
  78. package/dist/plugins/duckdb.d.ts +20 -0
  79. package/dist/plugins/duckdb.d.ts.map +1 -0
  80. package/dist/plugins/duckdb.js +170 -0
  81. package/dist/plugins/duckdb.js.map +1 -0
  82. package/dist/plugins/groq.cjs +97 -0
  83. package/dist/plugins/groq.cjs.map +1 -0
  84. package/dist/plugins/groq.d.ts +13 -0
  85. package/dist/plugins/groq.d.ts.map +1 -0
  86. package/dist/plugins/groq.js +97 -0
  87. package/dist/plugins/groq.js.map +1 -0
  88. package/dist/plugins/index.d.ts +10 -0
  89. package/dist/plugins/index.d.ts.map +1 -0
  90. package/dist/plugins/rest.cjs +92 -0
  91. package/dist/plugins/rest.cjs.map +1 -0
  92. package/dist/plugins/rest.d.ts +13 -0
  93. package/dist/plugins/rest.d.ts.map +1 -0
  94. package/dist/plugins/rest.js +92 -0
  95. package/dist/plugins/rest.js.map +1 -0
  96. package/dist/plugins/supabase.cjs +79 -0
  97. package/dist/plugins/supabase.cjs.map +1 -0
  98. package/dist/plugins/supabase.d.ts +13 -0
  99. package/dist/plugins/supabase.d.ts.map +1 -0
  100. package/dist/plugins/supabase.js +79 -0
  101. package/dist/plugins/supabase.js.map +1 -0
  102. package/dist/types/index.d.ts +430 -0
  103. package/dist/types/index.d.ts.map +1 -1
  104. package/dist/types.d.cts +430 -0
  105. package/dist/types.d.ts +430 -0
  106. package/package.json +16 -1
  107. package/src/components/AutocompleteDropdown.tsx +329 -0
  108. package/src/components/AutocompleteFormField.tsx +288 -0
  109. package/src/components/DraggableGridItem.tsx +274 -0
  110. package/src/components/EditableUIResourceRenderer.tsx +273 -0
  111. package/src/components/GhostText.tsx +262 -0
  112. package/src/components/ResizeHandle.tsx +262 -0
  113. package/src/context/AutocompleteContext.tsx +317 -0
  114. package/src/hooks/index.ts +23 -0
  115. package/src/hooks/useAutocomplete.test.ts +334 -0
  116. package/src/hooks/useAutocomplete.ts +466 -0
  117. package/src/hooks/useDragDrop.test.ts +355 -0
  118. package/src/hooks/useDragDrop.ts +379 -0
  119. package/src/hooks/useResize.test.ts +313 -0
  120. package/src/hooks/useResize.ts +372 -0
  121. package/src/index.ts +71 -0
  122. package/src/plugins/duckdb.ts +269 -0
  123. package/src/plugins/groq.ts +137 -0
  124. package/src/plugins/index.ts +14 -0
  125. package/src/plugins/rest.ts +147 -0
  126. package/src/plugins/supabase.ts +120 -0
  127. package/src/styles/autocomplete.css +356 -0
  128. package/src/styles/drag-drop.css +297 -0
  129. package/src/styles/index.css +7 -0
  130. package/src/types/index.ts +529 -0
  131. package/src/vite-env.d.ts +18 -0
  132. package/tsconfig.tsbuildinfo +1 -1
  133. package/vite.config.ts +2 -0
package/dist/index.cjs CHANGED
@@ -15,17 +15,37 @@ require("./components/ActionGroupRenderer.cjs");
15
15
  require("./components/LightboxOverlay.cjs");
16
16
  require("./components/ImageGalleryRenderer.cjs");
17
17
  require("./components/CodeBlockRenderer.cjs");
18
+ const DraggableGridItem = require("./components/DraggableGridItem.cjs");
19
+ const ResizeHandle = require("./components/ResizeHandle.cjs");
20
+ const EditableUIResourceRenderer = require("./components/EditableUIResourceRenderer.cjs");
21
+ const GhostText = require("./components/GhostText.cjs");
22
+ const AutocompleteDropdown = require("./components/AutocompleteDropdown.cjs");
23
+ const AutocompleteFormField = require("./components/AutocompleteFormField.cjs");
18
24
  const useStreamingUI = require("./hooks/useStreamingUI.cjs");
19
25
  const useAction = require("./hooks/useAction.cjs");
20
26
  const useConditionalField = require("./hooks/useConditionalField.cjs");
21
27
  const useModal = require("./hooks/useModal.cjs");
22
28
  const useFormPersistence = require("./hooks/useFormPersistence.cjs");
29
+ const useDragDrop = require("./hooks/useDragDrop.cjs");
30
+ const useResize = require("./hooks/useResize.cjs");
31
+ const useAutocomplete = require("./hooks/useAutocomplete.cjs");
23
32
  const MCPActionContext = require("./context/MCPActionContext.cjs");
33
+ const AutocompleteContext = require("./context/AutocompleteContext.cjs");
34
+ const groq = require("./plugins/groq.cjs");
35
+ const supabase = require("./plugins/supabase.cjs");
36
+ const rest = require("./plugins/rest.cjs");
24
37
  const validation = require("./services/validation.cjs");
25
38
  const componentRegistry = require("./services/component-registry.cjs");
26
39
  exports.UIResourceRenderer = UIResourceRenderer.UIResourceRenderer;
27
40
  exports.StreamingUIRenderer = StreamingUIRenderer.StreamingUIRenderer;
28
41
  exports.GenerativeUIErrorBoundary = GenerativeUIErrorBoundary.GenerativeUIErrorBoundary;
42
+ exports.DraggableGridItem = DraggableGridItem.DraggableGridItem;
43
+ exports.ResizeHandle = ResizeHandle.ResizeHandle;
44
+ exports.EditableUIResourceRenderer = EditableUIResourceRenderer.EditableUIResourceRenderer;
45
+ exports.GhostText = GhostText.GhostText;
46
+ exports.GhostTextInput = GhostText.GhostTextInput;
47
+ exports.AutocompleteDropdown = AutocompleteDropdown.AutocompleteDropdown;
48
+ exports.AutocompleteFormField = AutocompleteFormField.AutocompleteFormField;
29
49
  exports.useStreamingUI = useStreamingUI.useStreamingUI;
30
50
  exports.useAction = useAction.useAction;
31
51
  exports.useToolAction = useAction.useToolAction;
@@ -34,10 +54,19 @@ exports.useConditionalField = useConditionalField.useConditionalField;
34
54
  exports.useConfirmModal = useModal.useConfirmModal;
35
55
  exports.useModal = useModal.useModal;
36
56
  exports.useFormPersistence = useFormPersistence.useFormPersistence;
57
+ exports.useDragDrop = useDragDrop.useDragDrop;
58
+ exports.useResize = useResize.useResize;
59
+ exports.useAutocomplete = useAutocomplete.useAutocomplete;
37
60
  exports.MCPActionContext = MCPActionContext.MCPActionContext;
38
61
  exports.MCPActionProvider = MCPActionContext.MCPActionProvider;
39
62
  exports.useMCPAction = MCPActionContext.useMCPAction;
40
63
  exports.useMCPActionSafe = MCPActionContext.useMCPActionSafe;
64
+ exports.AutocompleteProvider = AutocompleteContext.AutocompleteProvider;
65
+ exports.useAutocompleteContext = AutocompleteContext.useAutocompleteContext;
66
+ exports.useAutocompleteContextSafe = AutocompleteContext.useAutocompleteContextSafe;
67
+ exports.createGroqPlugin = groq.createGroqPlugin;
68
+ exports.createSupabasePlugin = supabase.createSupabasePlugin;
69
+ exports.createRestPlugin = rest.createRestPlugin;
41
70
  exports.DEFAULT_IFRAME_DOMAINS = validation.DEFAULT_IFRAME_DOMAINS;
42
71
  exports.DEFAULT_RESOURCE_LIMITS = validation.DEFAULT_RESOURCE_LIMITS;
43
72
  exports.validateComponent = validation.validateComponent;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/index.d.cts CHANGED
@@ -28,11 +28,26 @@
28
28
  * ```
29
29
  */
30
30
  export { UIResourceRenderer, StreamingUIRenderer, GenerativeUIErrorBoundary } from './components';
31
+ export { DraggableGridItem } from './components/DraggableGridItem';
32
+ export { ResizeHandle } from './components/ResizeHandle';
33
+ export { EditableUIResourceRenderer } from './components/EditableUIResourceRenderer';
34
+ export { GhostText, GhostTextInput } from './components/GhostText';
35
+ export { AutocompleteDropdown } from './components/AutocompleteDropdown';
36
+ export { AutocompleteFormField } from './components/AutocompleteFormField';
31
37
  export type { UIResourceRendererProps, StreamingUIRendererProps, GenerativeUIErrorBoundaryProps, } from './components';
32
- export { useStreamingUI, useAction, useToolAction, useConditionalField, evaluateCondition, useModal, useConfirmModal, useFormPersistence, } from './hooks';
33
- export type { UseStreamingUIOptions, StreamingUIState, StreamProgress, StreamError, CompleteMetadata, UseActionReturn, UseActionOptions, UseToolActionReturn, UseConditionalFieldOptions, UseModalReturn, UseConfirmModalReturn, UseFormPersistenceOptions, UseFormPersistenceReturn, } from './hooks';
38
+ export type { DraggableGridItemProps } from './components/DraggableGridItem';
39
+ export type { ResizeHandleProps as ResizeHandleComponentProps } from './components/ResizeHandle';
40
+ export type { EditableUIResourceRendererProps } from './components/EditableUIResourceRenderer';
41
+ export type { GhostTextProps, GhostTextInputProps } from './components/GhostText';
42
+ export type { AutocompleteDropdownProps } from './components/AutocompleteDropdown';
43
+ export type { AutocompleteFormFieldProps, AutocompleteFormFieldParams } from './components/AutocompleteFormField';
44
+ export { useStreamingUI, useAction, useToolAction, useConditionalField, evaluateCondition, useModal, useConfirmModal, useFormPersistence, useDragDrop, useResize, useAutocomplete, } from './hooks';
45
+ export type { UseStreamingUIOptions, StreamingUIState, StreamProgress, StreamError, CompleteMetadata, UseActionReturn, UseActionOptions, UseToolActionReturn, UseConditionalFieldOptions, UseModalReturn, UseConfirmModalReturn, UseFormPersistenceOptions, UseFormPersistenceReturn, UseDragDropOptions, UseDragDropReturn, DragProps, UseResizeOptions, UseResizeReturn, ResizeEdge, UseAutocompleteOptions, UseAutocompleteReturn, } from './hooks';
34
46
  export { MCPActionProvider, MCPActionContext, useMCPAction, useMCPActionSafe } from './context';
47
+ export { AutocompleteProvider, useAutocompleteContext, useAutocompleteContextSafe, } from './context/AutocompleteContext';
35
48
  export type { MCPActionContextValue, MCPActionProviderProps, ActionRequest, ActionResult, } from './context';
36
- export type { UIComponent, UILayout, GridPosition, ComponentType, RendererError, ChartComponentParams, TableComponentParams, MetricComponentParams, TextComponentParams, ActionComponentParams, GridComponentParams, FormFieldOption, FormFieldType, FormFieldParams, FormComponentParams, ShowWhenOperator, ShowWhenCondition, ActionRequestBase, ActionResultBase, ActionLifecycleCallbacks, ModalSize, ModalComponentParams, ActionGroupLayout, ActionGroupGap, ActionGroupParams, GalleryImage, ImageGalleryParams, VideoComponentParams, CodeComponentParams, MapMarker, MapComponentParams, IframePolicy, ValidationOptions, } from './types';
49
+ export type { AutocompleteContextValue, AutocompleteProviderProps, } from './context/AutocompleteContext';
50
+ export { createGroqPlugin, createSupabasePlugin, createRestPlugin, } from './plugins';
51
+ export type { UIComponent, UILayout, GridPosition, ComponentType, RendererError, ChartComponentParams, TableComponentParams, MetricComponentParams, TextComponentParams, ActionComponentParams, GridComponentParams, FormFieldOption, FormFieldType, FormFieldParams, FormComponentParams, ShowWhenOperator, ShowWhenCondition, ActionRequestBase, ActionResultBase, ActionLifecycleCallbacks, ModalSize, ModalComponentParams, ActionGroupLayout, ActionGroupGap, ActionGroupParams, GalleryImage, ImageGalleryParams, VideoComponentParams, CodeComponentParams, MapMarker, MapComponentParams, IframePolicy, ValidationOptions, ResizeConstraints, DragDropConfig, DragEventData, DraggableGridItemProps as DraggableGridItemPropsType, AutocompleteResultType, AutocompleteOption, AutocompleteResult, AutocompleteContext, AutocompletePlugin, GroqPluginConfig, SupabasePluginConfig, DuckDBPluginConfig, RestPluginConfig, FieldAutocompleteConfig, AutocompleteProviderConfig, } from './types';
37
52
  export { validateComponent, validateLayout, validateIframeDomain, DEFAULT_RESOURCE_LIMITS, DEFAULT_IFRAME_DOMAINS, ComponentRegistry, } from './services';
38
53
  //# sourceMappingURL=index.d.ts.map
package/dist/index.d.ts CHANGED
@@ -28,11 +28,26 @@
28
28
  * ```
29
29
  */
30
30
  export { UIResourceRenderer, StreamingUIRenderer, GenerativeUIErrorBoundary } from './components';
31
+ export { DraggableGridItem } from './components/DraggableGridItem';
32
+ export { ResizeHandle } from './components/ResizeHandle';
33
+ export { EditableUIResourceRenderer } from './components/EditableUIResourceRenderer';
34
+ export { GhostText, GhostTextInput } from './components/GhostText';
35
+ export { AutocompleteDropdown } from './components/AutocompleteDropdown';
36
+ export { AutocompleteFormField } from './components/AutocompleteFormField';
31
37
  export type { UIResourceRendererProps, StreamingUIRendererProps, GenerativeUIErrorBoundaryProps, } from './components';
32
- export { useStreamingUI, useAction, useToolAction, useConditionalField, evaluateCondition, useModal, useConfirmModal, useFormPersistence, } from './hooks';
33
- export type { UseStreamingUIOptions, StreamingUIState, StreamProgress, StreamError, CompleteMetadata, UseActionReturn, UseActionOptions, UseToolActionReturn, UseConditionalFieldOptions, UseModalReturn, UseConfirmModalReturn, UseFormPersistenceOptions, UseFormPersistenceReturn, } from './hooks';
38
+ export type { DraggableGridItemProps } from './components/DraggableGridItem';
39
+ export type { ResizeHandleProps as ResizeHandleComponentProps } from './components/ResizeHandle';
40
+ export type { EditableUIResourceRendererProps } from './components/EditableUIResourceRenderer';
41
+ export type { GhostTextProps, GhostTextInputProps } from './components/GhostText';
42
+ export type { AutocompleteDropdownProps } from './components/AutocompleteDropdown';
43
+ export type { AutocompleteFormFieldProps, AutocompleteFormFieldParams } from './components/AutocompleteFormField';
44
+ export { useStreamingUI, useAction, useToolAction, useConditionalField, evaluateCondition, useModal, useConfirmModal, useFormPersistence, useDragDrop, useResize, useAutocomplete, } from './hooks';
45
+ export type { UseStreamingUIOptions, StreamingUIState, StreamProgress, StreamError, CompleteMetadata, UseActionReturn, UseActionOptions, UseToolActionReturn, UseConditionalFieldOptions, UseModalReturn, UseConfirmModalReturn, UseFormPersistenceOptions, UseFormPersistenceReturn, UseDragDropOptions, UseDragDropReturn, DragProps, UseResizeOptions, UseResizeReturn, ResizeEdge, UseAutocompleteOptions, UseAutocompleteReturn, } from './hooks';
34
46
  export { MCPActionProvider, MCPActionContext, useMCPAction, useMCPActionSafe } from './context';
47
+ export { AutocompleteProvider, useAutocompleteContext, useAutocompleteContextSafe, } from './context/AutocompleteContext';
35
48
  export type { MCPActionContextValue, MCPActionProviderProps, ActionRequest, ActionResult, } from './context';
36
- export type { UIComponent, UILayout, GridPosition, ComponentType, RendererError, ChartComponentParams, TableComponentParams, MetricComponentParams, TextComponentParams, ActionComponentParams, GridComponentParams, FormFieldOption, FormFieldType, FormFieldParams, FormComponentParams, ShowWhenOperator, ShowWhenCondition, ActionRequestBase, ActionResultBase, ActionLifecycleCallbacks, ModalSize, ModalComponentParams, ActionGroupLayout, ActionGroupGap, ActionGroupParams, GalleryImage, ImageGalleryParams, VideoComponentParams, CodeComponentParams, MapMarker, MapComponentParams, IframePolicy, ValidationOptions, } from './types';
49
+ export type { AutocompleteContextValue, AutocompleteProviderProps, } from './context/AutocompleteContext';
50
+ export { createGroqPlugin, createSupabasePlugin, createRestPlugin, } from './plugins';
51
+ export type { UIComponent, UILayout, GridPosition, ComponentType, RendererError, ChartComponentParams, TableComponentParams, MetricComponentParams, TextComponentParams, ActionComponentParams, GridComponentParams, FormFieldOption, FormFieldType, FormFieldParams, FormComponentParams, ShowWhenOperator, ShowWhenCondition, ActionRequestBase, ActionResultBase, ActionLifecycleCallbacks, ModalSize, ModalComponentParams, ActionGroupLayout, ActionGroupGap, ActionGroupParams, GalleryImage, ImageGalleryParams, VideoComponentParams, CodeComponentParams, MapMarker, MapComponentParams, IframePolicy, ValidationOptions, ResizeConstraints, DragDropConfig, DragEventData, DraggableGridItemProps as DraggableGridItemPropsType, AutocompleteResultType, AutocompleteOption, AutocompleteResult, AutocompleteContext, AutocompletePlugin, GroqPluginConfig, SupabasePluginConfig, DuckDBPluginConfig, RestPluginConfig, FieldAutocompleteConfig, AutocompleteProviderConfig, } from './types';
37
52
  export { validateComponent, validateLayout, validateIframeDomain, DEFAULT_RESOURCE_LIMITS, DEFAULT_IFRAME_DOMAINS, ComponentRegistry, } from './services';
38
53
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AAEjG,YAAY,EACV,uBAAuB,EACvB,wBAAwB,EACxB,8BAA8B,GAC/B,MAAM,cAAc,CAAA;AAGrB,OAAO,EACL,cAAc,EACd,SAAS,EACT,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,QAAQ,EACR,eAAe,EACf,kBAAkB,GACnB,MAAM,SAAS,CAAA;AAEhB,YAAY,EACV,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,0BAA0B,EAC1B,cAAc,EACd,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,SAAS,CAAA;AAGhB,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAE/F,YAAY,EACV,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,EACb,YAAY,GACb,MAAM,WAAW,CAAA;AAGlB,YAAY,EACV,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EAEnB,eAAe,EACf,aAAa,EACb,eAAe,EACf,mBAAmB,EAEnB,gBAAgB,EAChB,iBAAiB,EAEjB,iBAAiB,EACjB,gBAAgB,EAChB,wBAAwB,EAExB,SAAS,EACT,oBAAoB,EAEpB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EAEjB,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,EAEpB,mBAAmB,EACnB,SAAS,EACT,kBAAkB,EAElB,YAAY,EACZ,iBAAiB,GAClB,MAAM,SAAS,CAAA;AAGhB,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -13,31 +13,60 @@ import "./components/ActionGroupRenderer.js";
13
13
  import "./components/LightboxOverlay.js";
14
14
  import "./components/ImageGalleryRenderer.js";
15
15
  import "./components/CodeBlockRenderer.js";
16
+ import { DraggableGridItem } from "./components/DraggableGridItem.js";
17
+ import { ResizeHandle } from "./components/ResizeHandle.js";
18
+ import { EditableUIResourceRenderer } from "./components/EditableUIResourceRenderer.js";
19
+ import { GhostText, GhostTextInput } from "./components/GhostText.js";
20
+ import { AutocompleteDropdown } from "./components/AutocompleteDropdown.js";
21
+ import { AutocompleteFormField } from "./components/AutocompleteFormField.js";
16
22
  import { useStreamingUI } from "./hooks/useStreamingUI.js";
17
23
  import { useAction, useToolAction } from "./hooks/useAction.js";
18
24
  import { evaluateCondition, useConditionalField } from "./hooks/useConditionalField.js";
19
25
  import { useConfirmModal, useModal } from "./hooks/useModal.js";
20
26
  import { useFormPersistence } from "./hooks/useFormPersistence.js";
27
+ import { useDragDrop } from "./hooks/useDragDrop.js";
28
+ import { useResize } from "./hooks/useResize.js";
29
+ import { useAutocomplete } from "./hooks/useAutocomplete.js";
21
30
  import { MCPActionContext, MCPActionProvider, useMCPAction, useMCPActionSafe } from "./context/MCPActionContext.js";
31
+ import { AutocompleteProvider, useAutocompleteContext, useAutocompleteContextSafe } from "./context/AutocompleteContext.js";
32
+ import { createGroqPlugin } from "./plugins/groq.js";
33
+ import { createSupabasePlugin } from "./plugins/supabase.js";
34
+ import { createRestPlugin } from "./plugins/rest.js";
22
35
  import { DEFAULT_IFRAME_DOMAINS, DEFAULT_RESOURCE_LIMITS, validateComponent, validateIframeDomain, validateLayout } from "./services/validation.js";
23
36
  import { ComponentRegistry } from "./services/component-registry.js";
24
37
  export {
38
+ AutocompleteDropdown,
39
+ AutocompleteFormField,
40
+ AutocompleteProvider,
25
41
  ComponentRegistry,
26
42
  DEFAULT_IFRAME_DOMAINS,
27
43
  DEFAULT_RESOURCE_LIMITS,
44
+ DraggableGridItem,
45
+ EditableUIResourceRenderer,
28
46
  GenerativeUIErrorBoundary,
47
+ GhostText,
48
+ GhostTextInput,
29
49
  MCPActionContext,
30
50
  MCPActionProvider,
51
+ ResizeHandle,
31
52
  StreamingUIRenderer,
32
53
  UIResourceRenderer,
54
+ createGroqPlugin,
55
+ createRestPlugin,
56
+ createSupabasePlugin,
33
57
  evaluateCondition,
34
58
  useAction,
59
+ useAutocomplete,
60
+ useAutocompleteContext,
61
+ useAutocompleteContextSafe,
35
62
  useConditionalField,
36
63
  useConfirmModal,
64
+ useDragDrop,
37
65
  useFormPersistence,
38
66
  useMCPAction,
39
67
  useMCPActionSafe,
40
68
  useModal,
69
+ useResize,
41
70
  useStreamingUI,
42
71
  useToolAction,
43
72
  validateComponent,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from === "object" || typeof from === "function") {
10
+ for (let key of __getOwnPropNames(from))
11
+ if (!__hasOwnProp.call(to, key) && key !== except)
12
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
13
+ }
14
+ return to;
15
+ };
16
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
17
+ // If the importer is in node compatibility mode or this is not an ESM
18
+ // file that has been converted to a CommonJS file using a Babel-
19
+ // compatible transform (i.e. "__esModule" has not been set), then set
20
+ // "default" to the CommonJS "module.exports" for node compatibility.
21
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
+ mod
23
+ ));
24
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
25
+ let duckdbPromise = null;
26
+ function isTestEnvironment() {
27
+ return typeof process !== "undefined" && (process.env.NODE_ENV === "test" || process.env.VITEST === "true" || typeof globalThis.vitest !== "undefined");
28
+ }
29
+ async function loadDuckDB() {
30
+ if (isTestEnvironment()) {
31
+ throw new Error("[DuckDB Plugin] DuckDB WASM is not available in test environment");
32
+ }
33
+ if (duckdbPromise) {
34
+ return duckdbPromise;
35
+ }
36
+ duckdbPromise = (async () => {
37
+ try {
38
+ let duckdb;
39
+ try {
40
+ duckdb = await import(
41
+ /* @vite-ignore */
42
+ "@duckdb/duckdb-wasm"
43
+ );
44
+ } catch (importError) {
45
+ throw new Error(
46
+ "[DuckDB Plugin] @duckdb/duckdb-wasm is not installed. Install it with: npm install @duckdb/duckdb-wasm"
47
+ );
48
+ }
49
+ const JSDELIVR_BUNDLES = duckdb.getJsDelivrBundles();
50
+ const bundle = await duckdb.selectBundle(JSDELIVR_BUNDLES);
51
+ const worker = new Worker(bundle.mainWorker);
52
+ const logger = new duckdb.ConsoleLogger();
53
+ const db = new duckdb.AsyncDuckDB(logger, worker);
54
+ await db.instantiate(bundle.mainModule, bundle.pthreadWorker);
55
+ const conn = await db.connect();
56
+ return { db, conn };
57
+ } catch (error) {
58
+ console.error("[DuckDB Plugin] Failed to load DuckDB WASM:", error);
59
+ duckdbPromise = null;
60
+ throw error;
61
+ }
62
+ })();
63
+ return duckdbPromise;
64
+ }
65
+ function createDuckDBPlugin(config) {
66
+ const { query, data } = config;
67
+ let isReady = false;
68
+ let initPromise = null;
69
+ let connection = null;
70
+ const initialize = async () => {
71
+ if (initPromise) return initPromise;
72
+ initPromise = (async () => {
73
+ try {
74
+ const { conn } = await loadDuckDB();
75
+ connection = conn;
76
+ if (data) {
77
+ await loadData(conn, data);
78
+ }
79
+ isReady = true;
80
+ } catch (error) {
81
+ console.error("[DuckDB Plugin] Initialization error:", error);
82
+ throw error;
83
+ }
84
+ })();
85
+ return initPromise;
86
+ };
87
+ const loadData = async (conn, dataConfig) => {
88
+ const { tableName, source, format = "csv" } = dataConfig;
89
+ try {
90
+ if (typeof source === "string") {
91
+ if (source.startsWith("http://") || source.startsWith("https://")) {
92
+ if (format === "csv") {
93
+ await conn.query(`
94
+ CREATE TABLE IF NOT EXISTS ${tableName} AS
95
+ SELECT * FROM read_csv_auto('${source}')
96
+ `);
97
+ } else if (format === "json") {
98
+ await conn.query(`
99
+ CREATE TABLE IF NOT EXISTS ${tableName} AS
100
+ SELECT * FROM read_json_auto('${source}')
101
+ `);
102
+ } else if (format === "parquet") {
103
+ await conn.query(`
104
+ CREATE TABLE IF NOT EXISTS ${tableName} AS
105
+ SELECT * FROM read_parquet('${source}')
106
+ `);
107
+ }
108
+ } else {
109
+ console.warn("[DuckDB Plugin] Inline data not yet supported, use URL instead");
110
+ }
111
+ }
112
+ } catch (error) {
113
+ console.error("[DuckDB Plugin] Error loading data:", error);
114
+ throw error;
115
+ }
116
+ };
117
+ return {
118
+ id: "duckdb",
119
+ name: "DuckDB WASM",
120
+ configure(newConfig) {
121
+ Object.assign(config, newConfig);
122
+ },
123
+ isReady() {
124
+ return isReady;
125
+ },
126
+ async getSuggestions(input, _context) {
127
+ if (!isReady) {
128
+ try {
129
+ await initialize();
130
+ } catch (error) {
131
+ console.error("[DuckDB Plugin] Failed to initialize:", error);
132
+ return { type: "options", options: [] };
133
+ }
134
+ }
135
+ if (!connection) {
136
+ return { type: "options", options: [] };
137
+ }
138
+ if (!input.trim()) {
139
+ return { type: "options", options: [] };
140
+ }
141
+ try {
142
+ const preparedQuery = query.replace(/:search/g, input.replace(/'/g, "''"));
143
+ const result = await connection.query(preparedQuery);
144
+ const rows = result.toArray();
145
+ const columns = result.schema.fields.map((f) => f.name);
146
+ const valueColumn = columns[0];
147
+ const labelColumn = columns.length > 1 ? columns[1] : columns[0];
148
+ const options = rows.map((row) => {
149
+ const rowObj = {};
150
+ columns.forEach((col, idx) => {
151
+ rowObj[col] = row[idx] ?? row[col];
152
+ });
153
+ return {
154
+ value: String(rowObj[valueColumn]),
155
+ label: String(rowObj[labelColumn]),
156
+ metadata: rowObj
157
+ };
158
+ });
159
+ return {
160
+ type: "options",
161
+ options
162
+ };
163
+ } catch (error) {
164
+ console.error("[DuckDB Plugin] Query error:", error);
165
+ return { type: "options", options: [] };
166
+ }
167
+ },
168
+ async dispose() {
169
+ if (connection) {
170
+ try {
171
+ await connection.close();
172
+ } catch (e) {
173
+ console.error("[DuckDB Plugin] Error closing connection:", e);
174
+ }
175
+ connection = null;
176
+ }
177
+ isReady = false;
178
+ initPromise = null;
179
+ }
180
+ };
181
+ }
182
+ async function preloadDuckDB() {
183
+ try {
184
+ await loadDuckDB();
185
+ } catch (error) {
186
+ console.error("[DuckDB Plugin] Preload error:", error);
187
+ }
188
+ }
189
+ exports.createDuckDBPlugin = createDuckDBPlugin;
190
+ exports.default = createDuckDBPlugin;
191
+ exports.preloadDuckDB = preloadDuckDB;
192
+ //# sourceMappingURL=duckdb.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"duckdb.cjs","sources":["../../src/plugins/duckdb.ts"],"sourcesContent":["/**\n * DuckDB WASM Autocomplete Plugin\n * Provides SQL-based suggestions using DuckDB WASM\n *\n * Sprint Autocomplete Feature\n *\n * Note: DuckDB WASM is ~2MB and is lazy-loaded on first use.\n * This plugin requires @duckdb/duckdb-wasm as an optional peer dependency.\n */\n\nimport type {\n AutocompletePlugin,\n AutocompleteResult,\n AutocompleteContext,\n AutocompleteOption,\n DuckDBPluginConfig\n} from '../types'\n\n// Type for DuckDB connection (lazy loaded)\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DuckDBConnection = any\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DuckDBInstance = any\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DuckDBModule = any\n\n// Module state for DuckDB (singleton)\nlet duckdbPromise: Promise<{ db: DuckDBInstance; conn: DuckDBConnection }> | null = null\n\n/**\n * Check if we're in a test environment\n */\nfunction isTestEnvironment(): boolean {\n return typeof process !== 'undefined' && (\n process.env.NODE_ENV === 'test' ||\n process.env.VITEST === 'true' ||\n typeof (globalThis as any).vitest !== 'undefined'\n )\n}\n\n/**\n * Lazy load DuckDB WASM\n */\nasync function loadDuckDB(): Promise<{ db: DuckDBInstance; conn: DuckDBConnection }> {\n // In test environment, throw early to avoid import issues\n if (isTestEnvironment()) {\n throw new Error('[DuckDB Plugin] DuckDB WASM is not available in test environment')\n }\n\n if (duckdbPromise) {\n return duckdbPromise\n }\n\n duckdbPromise = (async () => {\n try {\n // Dynamic import to avoid bundling if not used\n // The import is wrapped to handle missing module gracefully\n let duckdb: DuckDBModule\n try {\n duckdb = await import(/* @vite-ignore */ '@duckdb/duckdb-wasm')\n } catch (importError) {\n throw new Error(\n '[DuckDB Plugin] @duckdb/duckdb-wasm is not installed. ' +\n 'Install it with: npm install @duckdb/duckdb-wasm'\n )\n }\n\n // Get WASM bundles\n const JSDELIVR_BUNDLES = duckdb.getJsDelivrBundles()\n\n // Select best bundle for the browser\n const bundle = await duckdb.selectBundle(JSDELIVR_BUNDLES)\n\n // Instantiate worker and database\n const worker = new Worker(bundle.mainWorker!)\n const logger = new duckdb.ConsoleLogger()\n const db = new duckdb.AsyncDuckDB(logger, worker)\n\n await db.instantiate(bundle.mainModule, bundle.pthreadWorker)\n\n // Create connection\n const conn = await db.connect()\n\n return { db, conn }\n } catch (error) {\n console.error('[DuckDB Plugin] Failed to load DuckDB WASM:', error)\n duckdbPromise = null\n throw error\n }\n })()\n\n return duckdbPromise\n}\n\n/**\n * Create a DuckDB WASM autocomplete plugin\n */\nexport function createDuckDBPlugin(config: DuckDBPluginConfig): AutocompletePlugin {\n const { query, data } = config\n\n let isReady = false\n let initPromise: Promise<void> | null = null\n let connection: DuckDBConnection | null = null\n\n /**\n * Initialize DuckDB and load data if provided\n */\n const initialize = async (): Promise<void> => {\n if (initPromise) return initPromise\n\n initPromise = (async () => {\n try {\n const { conn } = await loadDuckDB()\n connection = conn\n\n // Load data if provided\n if (data) {\n await loadData(conn, data)\n }\n\n isReady = true\n } catch (error) {\n console.error('[DuckDB Plugin] Initialization error:', error)\n throw error\n }\n })()\n\n return initPromise\n }\n\n /**\n * Load data into DuckDB\n */\n const loadData = async (\n conn: DuckDBConnection,\n dataConfig: NonNullable<DuckDBPluginConfig['data']>\n ): Promise<void> => {\n const { tableName, source, format = 'csv' } = dataConfig\n\n try {\n if (typeof source === 'string') {\n // URL - fetch and load\n if (source.startsWith('http://') || source.startsWith('https://')) {\n if (format === 'csv') {\n await conn.query(`\n CREATE TABLE IF NOT EXISTS ${tableName} AS\n SELECT * FROM read_csv_auto('${source}')\n `)\n } else if (format === 'json') {\n await conn.query(`\n CREATE TABLE IF NOT EXISTS ${tableName} AS\n SELECT * FROM read_json_auto('${source}')\n `)\n } else if (format === 'parquet') {\n await conn.query(`\n CREATE TABLE IF NOT EXISTS ${tableName} AS\n SELECT * FROM read_parquet('${source}')\n `)\n }\n } else {\n // Inline data (CSV/JSON string)\n // For inline data, we'd need to use DuckDB's data registration\n console.warn('[DuckDB Plugin] Inline data not yet supported, use URL instead')\n }\n }\n } catch (error) {\n console.error('[DuckDB Plugin] Error loading data:', error)\n throw error\n }\n }\n\n return {\n id: 'duckdb',\n name: 'DuckDB WASM',\n\n configure(newConfig: Record<string, any>) {\n // Allow runtime reconfiguration\n Object.assign(config, newConfig)\n },\n\n isReady() {\n return isReady\n },\n\n async getSuggestions(\n input: string,\n _context?: AutocompleteContext\n ): Promise<AutocompleteResult> {\n // Ensure DuckDB is initialized\n if (!isReady) {\n try {\n await initialize()\n } catch (error) {\n console.error('[DuckDB Plugin] Failed to initialize:', error)\n return { type: 'options', options: [] }\n }\n }\n\n if (!connection) {\n return { type: 'options', options: [] }\n }\n\n if (!input.trim()) {\n return { type: 'options', options: [] }\n }\n\n try {\n // Replace :search placeholder with actual value\n const preparedQuery = query.replace(/:search/g, input.replace(/'/g, \"''\"))\n\n const result = await connection.query(preparedQuery)\n const rows = result.toArray()\n\n // Get column names\n const columns = result.schema.fields.map((f: any) => f.name)\n const valueColumn = columns[0]\n const labelColumn = columns.length > 1 ? columns[1] : columns[0]\n\n const options: AutocompleteOption[] = rows.map((row: any) => {\n // Convert row to object\n const rowObj: Record<string, any> = {}\n columns.forEach((col: string, idx: number) => {\n rowObj[col] = row[idx] ?? row[col]\n })\n\n return {\n value: String(rowObj[valueColumn]),\n label: String(rowObj[labelColumn]),\n metadata: rowObj\n }\n })\n\n return {\n type: 'options',\n options\n }\n } catch (error) {\n console.error('[DuckDB Plugin] Query error:', error)\n return { type: 'options', options: [] }\n }\n },\n\n async dispose() {\n if (connection) {\n try {\n await connection.close()\n } catch (e) {\n console.error('[DuckDB Plugin] Error closing connection:', e)\n }\n connection = null\n }\n isReady = false\n initPromise = null\n }\n }\n}\n\n/**\n * Preload DuckDB WASM (call early to warm cache)\n */\nexport async function preloadDuckDB(): Promise<void> {\n try {\n await loadDuckDB()\n } catch (error) {\n console.error('[DuckDB Plugin] Preload error:', error)\n }\n}\n\nexport default createDuckDBPlugin\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA2BA,IAAI,gBAAgF;AAKpF,SAAS,oBAA6B;AACpC,SAAO,OAAO,YAAY,gBACxB,QAAQ,IAAI,aAAa,UACzB,QAAQ,IAAI,WAAW,UACvB,OAAQ,WAAmB,WAAW;AAE1C;AAKA,eAAe,aAAsE;AAEnF,MAAI,qBAAqB;AACvB,UAAM,IAAI,MAAM,kEAAkE;AAAA,EACpF;AAEA,MAAI,eAAe;AACjB,WAAO;AAAA,EACT;AAEA,mBAAiB,YAAY;AAC3B,QAAI;AAGF,UAAI;AACJ,UAAI;AACF,iBAAS,MAAM;AAAA;AAAA,UAA0B;AAAA,QAAA;AAAA,MAC3C,SAAS,aAAa;AACpB,cAAM,IAAI;AAAA,UACR;AAAA,QAAA;AAAA,MAGJ;AAGA,YAAM,mBAAmB,OAAO,mBAAA;AAGhC,YAAM,SAAS,MAAM,OAAO,aAAa,gBAAgB;AAGzD,YAAM,SAAS,IAAI,OAAO,OAAO,UAAW;AAC5C,YAAM,SAAS,IAAI,OAAO,cAAA;AAC1B,YAAM,KAAK,IAAI,OAAO,YAAY,QAAQ,MAAM;AAEhD,YAAM,GAAG,YAAY,OAAO,YAAY,OAAO,aAAa;AAG5D,YAAM,OAAO,MAAM,GAAG,QAAA;AAEtB,aAAO,EAAE,IAAI,KAAA;AAAA,IACf,SAAS,OAAO;AACd,cAAQ,MAAM,+CAA+C,KAAK;AAClE,sBAAgB;AAChB,YAAM;AAAA,IACR;AAAA,EACF,GAAA;AAEA,SAAO;AACT;AAKO,SAAS,mBAAmB,QAAgD;AACjF,QAAM,EAAE,OAAO,KAAA,IAAS;AAExB,MAAI,UAAU;AACd,MAAI,cAAoC;AACxC,MAAI,aAAsC;AAK1C,QAAM,aAAa,YAA2B;AAC5C,QAAI,YAAa,QAAO;AAExB,mBAAe,YAAY;AACzB,UAAI;AACF,cAAM,EAAE,SAAS,MAAM,WAAA;AACvB,qBAAa;AAGb,YAAI,MAAM;AACR,gBAAM,SAAS,MAAM,IAAI;AAAA,QAC3B;AAEA,kBAAU;AAAA,MACZ,SAAS,OAAO;AACd,gBAAQ,MAAM,yCAAyC,KAAK;AAC5D,cAAM;AAAA,MACR;AAAA,IACF,GAAA;AAEA,WAAO;AAAA,EACT;AAKA,QAAM,WAAW,OACf,MACA,eACkB;AAClB,UAAM,EAAE,WAAW,QAAQ,SAAS,UAAU;AAE9C,QAAI;AACF,UAAI,OAAO,WAAW,UAAU;AAE9B,YAAI,OAAO,WAAW,SAAS,KAAK,OAAO,WAAW,UAAU,GAAG;AACjE,cAAI,WAAW,OAAO;AACpB,kBAAM,KAAK,MAAM;AAAA,2CACc,SAAS;AAAA,6CACP,MAAM;AAAA,aACtC;AAAA,UACH,WAAW,WAAW,QAAQ;AAC5B,kBAAM,KAAK,MAAM;AAAA,2CACc,SAAS;AAAA,8CACN,MAAM;AAAA,aACvC;AAAA,UACH,WAAW,WAAW,WAAW;AAC/B,kBAAM,KAAK,MAAM;AAAA,2CACc,SAAS;AAAA,4CACR,MAAM;AAAA,aACrC;AAAA,UACH;AAAA,QACF,OAAO;AAGL,kBAAQ,KAAK,gEAAgE;AAAA,QAC/E;AAAA,MACF;AAAA,IACF,SAAS,OAAO;AACd,cAAQ,MAAM,uCAAuC,KAAK;AAC1D,YAAM;AAAA,IACR;AAAA,EACF;AAEA,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,MAAM;AAAA,IAEN,UAAU,WAAgC;AAExC,aAAO,OAAO,QAAQ,SAAS;AAAA,IACjC;AAAA,IAEA,UAAU;AACR,aAAO;AAAA,IACT;AAAA,IAEA,MAAM,eACJ,OACA,UAC6B;AAE7B,UAAI,CAAC,SAAS;AACZ,YAAI;AACF,gBAAM,WAAA;AAAA,QACR,SAAS,OAAO;AACd,kBAAQ,MAAM,yCAAyC,KAAK;AAC5D,iBAAO,EAAE,MAAM,WAAW,SAAS,CAAA,EAAC;AAAA,QACtC;AAAA,MACF;AAEA,UAAI,CAAC,YAAY;AACf,eAAO,EAAE,MAAM,WAAW,SAAS,CAAA,EAAC;AAAA,MACtC;AAEA,UAAI,CAAC,MAAM,QAAQ;AACjB,eAAO,EAAE,MAAM,WAAW,SAAS,CAAA,EAAC;AAAA,MACtC;AAEA,UAAI;AAEF,cAAM,gBAAgB,MAAM,QAAQ,YAAY,MAAM,QAAQ,MAAM,IAAI,CAAC;AAEzE,cAAM,SAAS,MAAM,WAAW,MAAM,aAAa;AACnD,cAAM,OAAO,OAAO,QAAA;AAGpB,cAAM,UAAU,OAAO,OAAO,OAAO,IAAI,CAAC,MAAW,EAAE,IAAI;AAC3D,cAAM,cAAc,QAAQ,CAAC;AAC7B,cAAM,cAAc,QAAQ,SAAS,IAAI,QAAQ,CAAC,IAAI,QAAQ,CAAC;AAE/D,cAAM,UAAgC,KAAK,IAAI,CAAC,QAAa;AAE3D,gBAAM,SAA8B,CAAA;AACpC,kBAAQ,QAAQ,CAAC,KAAa,QAAgB;AAC5C,mBAAO,GAAG,IAAI,IAAI,GAAG,KAAK,IAAI,GAAG;AAAA,UACnC,CAAC;AAED,iBAAO;AAAA,YACL,OAAO,OAAO,OAAO,WAAW,CAAC;AAAA,YACjC,OAAO,OAAO,OAAO,WAAW,CAAC;AAAA,YACjC,UAAU;AAAA,UAAA;AAAA,QAEd,CAAC;AAED,eAAO;AAAA,UACL,MAAM;AAAA,UACN;AAAA,QAAA;AAAA,MAEJ,SAAS,OAAO;AACd,gBAAQ,MAAM,gCAAgC,KAAK;AACnD,eAAO,EAAE,MAAM,WAAW,SAAS,CAAA,EAAC;AAAA,MACtC;AAAA,IACF;AAAA,IAEA,MAAM,UAAU;AACd,UAAI,YAAY;AACd,YAAI;AACF,gBAAM,WAAW,MAAA;AAAA,QACnB,SAAS,GAAG;AACV,kBAAQ,MAAM,6CAA6C,CAAC;AAAA,QAC9D;AACA,qBAAa;AAAA,MACf;AACA,gBAAU;AACV,oBAAc;AAAA,IAChB;AAAA,EAAA;AAEJ;AAKA,eAAsB,gBAA+B;AACnD,MAAI;AACF,UAAM,WAAA;AAAA,EACR,SAAS,OAAO;AACd,YAAQ,MAAM,kCAAkC,KAAK;AAAA,EACvD;AACF;;;;"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * DuckDB WASM Autocomplete Plugin
3
+ * Provides SQL-based suggestions using DuckDB WASM
4
+ *
5
+ * Sprint Autocomplete Feature
6
+ *
7
+ * Note: DuckDB WASM is ~2MB and is lazy-loaded on first use.
8
+ * This plugin requires @duckdb/duckdb-wasm as an optional peer dependency.
9
+ */
10
+ import type { AutocompletePlugin, DuckDBPluginConfig } from '../types';
11
+ /**
12
+ * Create a DuckDB WASM autocomplete plugin
13
+ */
14
+ export declare function createDuckDBPlugin(config: DuckDBPluginConfig): AutocompletePlugin;
15
+ /**
16
+ * Preload DuckDB WASM (call early to warm cache)
17
+ */
18
+ export declare function preloadDuckDB(): Promise<void>;
19
+ export default createDuckDBPlugin;
20
+ //# sourceMappingURL=duckdb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"duckdb.d.ts","sourceRoot":"","sources":["../../src/plugins/duckdb.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAIlB,kBAAkB,EACnB,MAAM,UAAU,CAAA;AA8EjB;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,kBAAkB,CA8JjF;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAMnD;AAED,eAAe,kBAAkB,CAAA"}
@@ -0,0 +1,170 @@
1
+ let duckdbPromise = null;
2
+ function isTestEnvironment() {
3
+ return typeof process !== "undefined" && (process.env.NODE_ENV === "test" || process.env.VITEST === "true" || typeof globalThis.vitest !== "undefined");
4
+ }
5
+ async function loadDuckDB() {
6
+ if (isTestEnvironment()) {
7
+ throw new Error("[DuckDB Plugin] DuckDB WASM is not available in test environment");
8
+ }
9
+ if (duckdbPromise) {
10
+ return duckdbPromise;
11
+ }
12
+ duckdbPromise = (async () => {
13
+ try {
14
+ let duckdb;
15
+ try {
16
+ duckdb = await import(
17
+ /* @vite-ignore */
18
+ "@duckdb/duckdb-wasm"
19
+ );
20
+ } catch (importError) {
21
+ throw new Error(
22
+ "[DuckDB Plugin] @duckdb/duckdb-wasm is not installed. Install it with: npm install @duckdb/duckdb-wasm"
23
+ );
24
+ }
25
+ const JSDELIVR_BUNDLES = duckdb.getJsDelivrBundles();
26
+ const bundle = await duckdb.selectBundle(JSDELIVR_BUNDLES);
27
+ const worker = new Worker(bundle.mainWorker);
28
+ const logger = new duckdb.ConsoleLogger();
29
+ const db = new duckdb.AsyncDuckDB(logger, worker);
30
+ await db.instantiate(bundle.mainModule, bundle.pthreadWorker);
31
+ const conn = await db.connect();
32
+ return { db, conn };
33
+ } catch (error) {
34
+ console.error("[DuckDB Plugin] Failed to load DuckDB WASM:", error);
35
+ duckdbPromise = null;
36
+ throw error;
37
+ }
38
+ })();
39
+ return duckdbPromise;
40
+ }
41
+ function createDuckDBPlugin(config) {
42
+ const { query, data } = config;
43
+ let isReady = false;
44
+ let initPromise = null;
45
+ let connection = null;
46
+ const initialize = async () => {
47
+ if (initPromise) return initPromise;
48
+ initPromise = (async () => {
49
+ try {
50
+ const { conn } = await loadDuckDB();
51
+ connection = conn;
52
+ if (data) {
53
+ await loadData(conn, data);
54
+ }
55
+ isReady = true;
56
+ } catch (error) {
57
+ console.error("[DuckDB Plugin] Initialization error:", error);
58
+ throw error;
59
+ }
60
+ })();
61
+ return initPromise;
62
+ };
63
+ const loadData = async (conn, dataConfig) => {
64
+ const { tableName, source, format = "csv" } = dataConfig;
65
+ try {
66
+ if (typeof source === "string") {
67
+ if (source.startsWith("http://") || source.startsWith("https://")) {
68
+ if (format === "csv") {
69
+ await conn.query(`
70
+ CREATE TABLE IF NOT EXISTS ${tableName} AS
71
+ SELECT * FROM read_csv_auto('${source}')
72
+ `);
73
+ } else if (format === "json") {
74
+ await conn.query(`
75
+ CREATE TABLE IF NOT EXISTS ${tableName} AS
76
+ SELECT * FROM read_json_auto('${source}')
77
+ `);
78
+ } else if (format === "parquet") {
79
+ await conn.query(`
80
+ CREATE TABLE IF NOT EXISTS ${tableName} AS
81
+ SELECT * FROM read_parquet('${source}')
82
+ `);
83
+ }
84
+ } else {
85
+ console.warn("[DuckDB Plugin] Inline data not yet supported, use URL instead");
86
+ }
87
+ }
88
+ } catch (error) {
89
+ console.error("[DuckDB Plugin] Error loading data:", error);
90
+ throw error;
91
+ }
92
+ };
93
+ return {
94
+ id: "duckdb",
95
+ name: "DuckDB WASM",
96
+ configure(newConfig) {
97
+ Object.assign(config, newConfig);
98
+ },
99
+ isReady() {
100
+ return isReady;
101
+ },
102
+ async getSuggestions(input, _context) {
103
+ if (!isReady) {
104
+ try {
105
+ await initialize();
106
+ } catch (error) {
107
+ console.error("[DuckDB Plugin] Failed to initialize:", error);
108
+ return { type: "options", options: [] };
109
+ }
110
+ }
111
+ if (!connection) {
112
+ return { type: "options", options: [] };
113
+ }
114
+ if (!input.trim()) {
115
+ return { type: "options", options: [] };
116
+ }
117
+ try {
118
+ const preparedQuery = query.replace(/:search/g, input.replace(/'/g, "''"));
119
+ const result = await connection.query(preparedQuery);
120
+ const rows = result.toArray();
121
+ const columns = result.schema.fields.map((f) => f.name);
122
+ const valueColumn = columns[0];
123
+ const labelColumn = columns.length > 1 ? columns[1] : columns[0];
124
+ const options = rows.map((row) => {
125
+ const rowObj = {};
126
+ columns.forEach((col, idx) => {
127
+ rowObj[col] = row[idx] ?? row[col];
128
+ });
129
+ return {
130
+ value: String(rowObj[valueColumn]),
131
+ label: String(rowObj[labelColumn]),
132
+ metadata: rowObj
133
+ };
134
+ });
135
+ return {
136
+ type: "options",
137
+ options
138
+ };
139
+ } catch (error) {
140
+ console.error("[DuckDB Plugin] Query error:", error);
141
+ return { type: "options", options: [] };
142
+ }
143
+ },
144
+ async dispose() {
145
+ if (connection) {
146
+ try {
147
+ await connection.close();
148
+ } catch (e) {
149
+ console.error("[DuckDB Plugin] Error closing connection:", e);
150
+ }
151
+ connection = null;
152
+ }
153
+ isReady = false;
154
+ initPromise = null;
155
+ }
156
+ };
157
+ }
158
+ async function preloadDuckDB() {
159
+ try {
160
+ await loadDuckDB();
161
+ } catch (error) {
162
+ console.error("[DuckDB Plugin] Preload error:", error);
163
+ }
164
+ }
165
+ export {
166
+ createDuckDBPlugin,
167
+ createDuckDBPlugin as default,
168
+ preloadDuckDB
169
+ };
170
+ //# sourceMappingURL=duckdb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"duckdb.js","sources":["../../src/plugins/duckdb.ts"],"sourcesContent":["/**\n * DuckDB WASM Autocomplete Plugin\n * Provides SQL-based suggestions using DuckDB WASM\n *\n * Sprint Autocomplete Feature\n *\n * Note: DuckDB WASM is ~2MB and is lazy-loaded on first use.\n * This plugin requires @duckdb/duckdb-wasm as an optional peer dependency.\n */\n\nimport type {\n AutocompletePlugin,\n AutocompleteResult,\n AutocompleteContext,\n AutocompleteOption,\n DuckDBPluginConfig\n} from '../types'\n\n// Type for DuckDB connection (lazy loaded)\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DuckDBConnection = any\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DuckDBInstance = any\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DuckDBModule = any\n\n// Module state for DuckDB (singleton)\nlet duckdbPromise: Promise<{ db: DuckDBInstance; conn: DuckDBConnection }> | null = null\n\n/**\n * Check if we're in a test environment\n */\nfunction isTestEnvironment(): boolean {\n return typeof process !== 'undefined' && (\n process.env.NODE_ENV === 'test' ||\n process.env.VITEST === 'true' ||\n typeof (globalThis as any).vitest !== 'undefined'\n )\n}\n\n/**\n * Lazy load DuckDB WASM\n */\nasync function loadDuckDB(): Promise<{ db: DuckDBInstance; conn: DuckDBConnection }> {\n // In test environment, throw early to avoid import issues\n if (isTestEnvironment()) {\n throw new Error('[DuckDB Plugin] DuckDB WASM is not available in test environment')\n }\n\n if (duckdbPromise) {\n return duckdbPromise\n }\n\n duckdbPromise = (async () => {\n try {\n // Dynamic import to avoid bundling if not used\n // The import is wrapped to handle missing module gracefully\n let duckdb: DuckDBModule\n try {\n duckdb = await import(/* @vite-ignore */ '@duckdb/duckdb-wasm')\n } catch (importError) {\n throw new Error(\n '[DuckDB Plugin] @duckdb/duckdb-wasm is not installed. ' +\n 'Install it with: npm install @duckdb/duckdb-wasm'\n )\n }\n\n // Get WASM bundles\n const JSDELIVR_BUNDLES = duckdb.getJsDelivrBundles()\n\n // Select best bundle for the browser\n const bundle = await duckdb.selectBundle(JSDELIVR_BUNDLES)\n\n // Instantiate worker and database\n const worker = new Worker(bundle.mainWorker!)\n const logger = new duckdb.ConsoleLogger()\n const db = new duckdb.AsyncDuckDB(logger, worker)\n\n await db.instantiate(bundle.mainModule, bundle.pthreadWorker)\n\n // Create connection\n const conn = await db.connect()\n\n return { db, conn }\n } catch (error) {\n console.error('[DuckDB Plugin] Failed to load DuckDB WASM:', error)\n duckdbPromise = null\n throw error\n }\n })()\n\n return duckdbPromise\n}\n\n/**\n * Create a DuckDB WASM autocomplete plugin\n */\nexport function createDuckDBPlugin(config: DuckDBPluginConfig): AutocompletePlugin {\n const { query, data } = config\n\n let isReady = false\n let initPromise: Promise<void> | null = null\n let connection: DuckDBConnection | null = null\n\n /**\n * Initialize DuckDB and load data if provided\n */\n const initialize = async (): Promise<void> => {\n if (initPromise) return initPromise\n\n initPromise = (async () => {\n try {\n const { conn } = await loadDuckDB()\n connection = conn\n\n // Load data if provided\n if (data) {\n await loadData(conn, data)\n }\n\n isReady = true\n } catch (error) {\n console.error('[DuckDB Plugin] Initialization error:', error)\n throw error\n }\n })()\n\n return initPromise\n }\n\n /**\n * Load data into DuckDB\n */\n const loadData = async (\n conn: DuckDBConnection,\n dataConfig: NonNullable<DuckDBPluginConfig['data']>\n ): Promise<void> => {\n const { tableName, source, format = 'csv' } = dataConfig\n\n try {\n if (typeof source === 'string') {\n // URL - fetch and load\n if (source.startsWith('http://') || source.startsWith('https://')) {\n if (format === 'csv') {\n await conn.query(`\n CREATE TABLE IF NOT EXISTS ${tableName} AS\n SELECT * FROM read_csv_auto('${source}')\n `)\n } else if (format === 'json') {\n await conn.query(`\n CREATE TABLE IF NOT EXISTS ${tableName} AS\n SELECT * FROM read_json_auto('${source}')\n `)\n } else if (format === 'parquet') {\n await conn.query(`\n CREATE TABLE IF NOT EXISTS ${tableName} AS\n SELECT * FROM read_parquet('${source}')\n `)\n }\n } else {\n // Inline data (CSV/JSON string)\n // For inline data, we'd need to use DuckDB's data registration\n console.warn('[DuckDB Plugin] Inline data not yet supported, use URL instead')\n }\n }\n } catch (error) {\n console.error('[DuckDB Plugin] Error loading data:', error)\n throw error\n }\n }\n\n return {\n id: 'duckdb',\n name: 'DuckDB WASM',\n\n configure(newConfig: Record<string, any>) {\n // Allow runtime reconfiguration\n Object.assign(config, newConfig)\n },\n\n isReady() {\n return isReady\n },\n\n async getSuggestions(\n input: string,\n _context?: AutocompleteContext\n ): Promise<AutocompleteResult> {\n // Ensure DuckDB is initialized\n if (!isReady) {\n try {\n await initialize()\n } catch (error) {\n console.error('[DuckDB Plugin] Failed to initialize:', error)\n return { type: 'options', options: [] }\n }\n }\n\n if (!connection) {\n return { type: 'options', options: [] }\n }\n\n if (!input.trim()) {\n return { type: 'options', options: [] }\n }\n\n try {\n // Replace :search placeholder with actual value\n const preparedQuery = query.replace(/:search/g, input.replace(/'/g, \"''\"))\n\n const result = await connection.query(preparedQuery)\n const rows = result.toArray()\n\n // Get column names\n const columns = result.schema.fields.map((f: any) => f.name)\n const valueColumn = columns[0]\n const labelColumn = columns.length > 1 ? columns[1] : columns[0]\n\n const options: AutocompleteOption[] = rows.map((row: any) => {\n // Convert row to object\n const rowObj: Record<string, any> = {}\n columns.forEach((col: string, idx: number) => {\n rowObj[col] = row[idx] ?? row[col]\n })\n\n return {\n value: String(rowObj[valueColumn]),\n label: String(rowObj[labelColumn]),\n metadata: rowObj\n }\n })\n\n return {\n type: 'options',\n options\n }\n } catch (error) {\n console.error('[DuckDB Plugin] Query error:', error)\n return { type: 'options', options: [] }\n }\n },\n\n async dispose() {\n if (connection) {\n try {\n await connection.close()\n } catch (e) {\n console.error('[DuckDB Plugin] Error closing connection:', e)\n }\n connection = null\n }\n isReady = false\n initPromise = null\n }\n }\n}\n\n/**\n * Preload DuckDB WASM (call early to warm cache)\n */\nexport async function preloadDuckDB(): Promise<void> {\n try {\n await loadDuckDB()\n } catch (error) {\n console.error('[DuckDB Plugin] Preload error:', error)\n }\n}\n\nexport default createDuckDBPlugin\n"],"names":[],"mappings":"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"}