windmill-components 1.537.1 → 1.542.4

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 (273) hide show
  1. package/package/components/AIProviderPicker.svelte +181 -0
  2. package/package/components/AIProviderPicker.svelte.d.ts +15 -0
  3. package/package/components/ArgInfo.svelte +2 -2
  4. package/package/components/ArgInput.svelte +35 -9
  5. package/package/components/ArgInput.svelte.d.ts +3 -3
  6. package/package/components/AssignableTagsInner.svelte +89 -3
  7. package/package/components/ConcurrentJobsChart.svelte +36 -48
  8. package/package/components/ConcurrentJobsChart.svelte.d.ts +8 -20
  9. package/package/components/CustomPopover.svelte.d.ts +1 -1
  10. package/package/components/DropdownSelect.svelte +26 -0
  11. package/package/components/DropdownSelect.svelte.d.ts +11 -0
  12. package/package/components/DropdownV2Inner.svelte +1 -1
  13. package/package/components/{DynSelect.svelte → DynamicInput.svelte} +47 -15
  14. package/package/components/DynamicInput.svelte.d.ts +11 -0
  15. package/package/components/EditableSchemaForm.svelte +119 -95
  16. package/package/components/EditableSchemaForm.svelte.d.ts +4 -4
  17. package/package/components/Editor.svelte +86 -93
  18. package/package/components/Editor.svelte.d.ts +4 -3
  19. package/package/components/EditorBar.svelte +2 -5
  20. package/package/components/FlowBuilder.svelte +3 -3
  21. package/package/components/FlowLogRow.svelte +64 -0
  22. package/package/components/FlowLogRow.svelte.d.ts +15 -0
  23. package/package/components/FlowLogViewer.svelte +406 -373
  24. package/package/components/FlowLogViewer.svelte.d.ts +5 -1
  25. package/package/components/FlowLogViewerWrapper.svelte +44 -1
  26. package/package/components/FlowLoopIterationPreview.svelte.d.ts +1 -1
  27. package/package/components/FlowPreviewContent.svelte.d.ts +1 -1
  28. package/package/components/FlowStatusViewerInner.svelte +34 -3
  29. package/package/components/FolderPicker.svelte +1 -1
  30. package/package/components/InputTransformForm.svelte +20 -10
  31. package/package/components/JobArgs.svelte +1 -1
  32. package/package/components/JobLoader.svelte.d.ts +1 -1
  33. package/package/components/JobStatus.svelte +2 -0
  34. package/package/components/LogSnippetViewer.svelte +3 -3
  35. package/package/components/LogSnippetViewer.svelte.d.ts +1 -1
  36. package/package/components/LogViewer.svelte +87 -71
  37. package/package/components/LogViewer.svelte.d.ts +1 -0
  38. package/package/components/Path.svelte +7 -1
  39. package/package/components/Path.svelte.d.ts +1 -1
  40. package/package/components/PrefixedInput.svelte +120 -0
  41. package/package/components/PrefixedInput.svelte.d.ts +8 -0
  42. package/package/components/QueuePosition.svelte +81 -0
  43. package/package/components/QueuePosition.svelte.d.ts +8 -0
  44. package/package/components/ResourceNarrowing.svelte +13 -0
  45. package/package/components/ResourceNarrowing.svelte.d.ts +6 -0
  46. package/package/components/ResourceTypePicker.svelte +49 -74
  47. package/package/components/RunChart.svelte +74 -89
  48. package/package/components/RunChart.svelte.d.ts +10 -22
  49. package/package/components/S3FilePicker.svelte +1 -1
  50. package/package/components/SchemaForm.svelte.d.ts +2 -2
  51. package/package/components/ScriptBuilder.svelte +2 -1
  52. package/package/components/ScriptEditor.svelte +4 -3
  53. package/package/components/ScriptEditor.svelte.d.ts +2 -1
  54. package/package/components/ServiceLogsInner.svelte +1 -1
  55. package/package/components/ShareModal.svelte.d.ts +1 -1
  56. package/package/components/SimpleEditor.svelte +4 -67
  57. package/package/components/StringTypeNarrowing.svelte +5 -10
  58. package/package/components/TemplateEditor.svelte +2 -16
  59. package/package/components/TimeAgo.svelte +1 -1
  60. package/package/components/TimeAgo.svelte.d.ts +1 -0
  61. package/package/components/Toggle.svelte +2 -1
  62. package/package/components/Toggle.svelte.d.ts +2 -1
  63. package/package/components/WorkerRepl.svelte +1 -1
  64. package/package/components/apps/components/display/AppNavbarItem.svelte +2 -1
  65. package/package/components/apps/components/display/table/AppAggridTable.svelte +44 -48
  66. package/package/components/apps/components/display/table/SyncColumnDefs.svelte +101 -19
  67. package/package/components/apps/components/display/table/SyncColumnDefs.svelte.d.ts +5 -2
  68. package/package/components/apps/components/display/table/utils.js +36 -5
  69. package/package/components/apps/components/inputs/currency/CurrencyInput.svelte +10 -5
  70. package/package/components/apps/editor/AppEditor.svelte +4 -3
  71. package/package/components/apps/editor/AppEditorHeader.svelte +0 -1
  72. package/package/components/apps/editor/GridViewer.svelte.d.ts +11 -4
  73. package/package/components/apps/editor/SettingsPanel.svelte +2 -2
  74. package/package/components/apps/editor/componentsPanel/ListItem.svelte +2 -2
  75. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +1 -1
  76. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte.d.ts +1 -1
  77. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte.d.ts +1 -1
  78. package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +26 -3
  79. package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +1 -1
  80. package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +13 -5
  81. package/package/components/apps/svelte-grid/Grid.svelte.d.ts +30 -11
  82. package/package/components/assets/JobAssetsViewer.svelte +28 -24
  83. package/package/components/auditLogs/AuditLogsTable.svelte +2 -6
  84. package/package/components/chartjs-wrappers/Chart.svelte.d.ts +14 -7
  85. package/package/components/common/OnChange.svelte.d.ts +11 -4
  86. package/package/components/common/badge/Badge.svelte +9 -2
  87. package/package/components/common/badge/Badge.svelte.d.ts +2 -1
  88. package/package/components/common/calendarPicker/CalendarPicker.svelte +5 -1
  89. package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +5 -4
  90. package/package/components/common/drawer/Disposable.svelte +9 -11
  91. package/package/components/common/drawer/Drawer.svelte +3 -4
  92. package/package/components/common/drawer/Drawer.svelte.d.ts +1 -0
  93. package/package/components/common/menu/MenuItem.svelte.d.ts +2 -2
  94. package/package/components/common/modal/Modal.svelte.d.ts +1 -1
  95. package/package/components/common/tabs/TabContent.svelte +2 -7
  96. package/package/components/common/tabs/TabContent.svelte.d.ts +5 -27
  97. package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte +9 -3
  98. package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte.d.ts +1 -0
  99. package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte +8 -4
  100. package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte.d.ts +1 -0
  101. package/package/components/copilot/MetadataGen.svelte +1 -1
  102. package/package/components/copilot/chat/AIChatManager.svelte.js +24 -102
  103. package/package/components/copilot/chat/AssistantMessage.svelte +0 -4
  104. package/package/components/copilot/chat/anthropic.d.ts +15 -0
  105. package/package/components/copilot/chat/anthropic.js +208 -0
  106. package/package/components/copilot/chat/api/apiTools.d.ts +2 -2
  107. package/package/components/copilot/chat/api/apiTools.js +10 -7
  108. package/package/components/copilot/chat/api/core.d.ts +1 -1
  109. package/package/components/copilot/chat/api/core.js +7 -2
  110. package/package/components/copilot/chat/ask/core.d.ts +1 -1
  111. package/package/components/copilot/chat/ask/core.js +7 -2
  112. package/package/components/copilot/chat/flow/core.d.ts +1 -1
  113. package/package/components/copilot/chat/flow/core.js +14 -4
  114. package/package/components/copilot/chat/monaco-adapter.d.ts +6 -5
  115. package/package/components/copilot/chat/navigator/core.d.ts +1 -1
  116. package/package/components/copilot/chat/navigator/core.js +7 -2
  117. package/package/components/copilot/chat/script/CodeDisplay.svelte +10 -111
  118. package/package/components/copilot/chat/script/core.d.ts +5 -4
  119. package/package/components/copilot/chat/script/core.js +131 -19
  120. package/package/components/copilot/chat/shared.d.ts +7 -7
  121. package/package/components/copilot/lib.d.ts +29 -8
  122. package/package/components/copilot/lib.js +199 -24
  123. package/package/components/flows/content/FlowInput.svelte +5 -5
  124. package/package/components/flows/content/FlowModuleComponent.svelte +5 -2
  125. package/package/components/flows/content/FlowModuleEarlyStop.svelte +47 -17
  126. package/package/components/flows/content/FlowModuleSleep.svelte +4 -1
  127. package/package/components/flows/content/FlowModuleSuspend.svelte +0 -1
  128. package/package/components/flows/content/FlowModuleTimeout.svelte +50 -10
  129. package/package/components/flows/content/FlowModuleTimeout.svelte.d.ts +1 -0
  130. package/package/components/flows/content/FlowRetries.svelte +108 -3
  131. package/package/components/flows/content/FlowRetries.svelte.d.ts +3 -2
  132. package/package/components/flows/flowInfers.js +8 -35
  133. package/package/components/flows/flowStore.d.ts +45 -1
  134. package/package/components/flows/flowStore.js +1 -1
  135. package/package/components/flows/map/FlowJobsMenu.svelte +3 -3
  136. package/package/components/flows/map/FlowModuleSchemaItem.svelte +61 -54
  137. package/package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +1 -1
  138. package/package/components/flows/map/FlowModuleSchemaItemViewer.svelte +1 -1
  139. package/package/components/flows/map/InsertModuleButton.svelte +1 -0
  140. package/package/components/flows/map/InsertModuleInner.svelte +12 -15
  141. package/package/components/flows/map/InsertModuleInner.svelte.d.ts +10 -9
  142. package/package/components/flows/propPicker/OutputPickerInner.svelte.d.ts +1 -1
  143. package/package/components/git_sync/DetectionFlow.svelte +15 -17
  144. package/package/components/git_sync/GitSyncContext.svelte.js +1 -1
  145. package/package/components/git_sync/GitSyncRepositoryCard.svelte +0 -1
  146. package/package/components/graph/graphBuilder.svelte.d.ts +5 -1
  147. package/package/components/graph/renderers/edges/BaseEdge.svelte +9 -1
  148. package/package/components/graph/renderers/edges/BaseEdge.svelte.d.ts +4 -1
  149. package/package/components/graph/renderers/nodes/BranchAllStart.svelte +2 -3
  150. package/package/components/graph/renderers/nodes/BranchOneStart.svelte +2 -3
  151. package/package/components/graph/renderers/triggers/TriggerButton.svelte.d.ts +1 -1
  152. package/package/components/graph/renderers/triggers/TriggersBadge.svelte +3 -1
  153. package/package/components/graph/renderers/triggers/TriggersWrapper.svelte +34 -24
  154. package/package/components/graph/renderers/triggers/TriggersWrapper.svelte.d.ts +1 -2
  155. package/package/components/home/ItemsList.svelte +17 -13
  156. package/package/components/home/TreeView.svelte +21 -27
  157. package/package/components/home/TreeView.svelte.d.ts +2 -29
  158. package/package/components/home/TreeViewRoot.svelte +11 -23
  159. package/package/components/home/TreeViewRoot.svelte.d.ts +15 -13
  160. package/package/components/icons/GitIcon.svelte +10 -2
  161. package/package/components/icons/GitIcon.svelte.d.ts +1 -0
  162. package/package/components/meltComponents/MeltButton.svelte.d.ts +1 -1
  163. package/package/components/meltComponents/Popover.svelte +23 -3
  164. package/package/components/meltComponents/Popover.svelte.d.ts +2 -1
  165. package/package/components/monacoLanguagesOptions.d.ts +3 -0
  166. package/package/components/monacoLanguagesOptions.js +109 -0
  167. package/package/components/propertyPicker/ObjectViewer.svelte +7 -2
  168. package/package/components/propertyPicker/PropPicker.svelte +1 -1
  169. package/package/components/propertyPicker/utils.js +14 -7
  170. package/package/components/runs/JobRunsPreview.svelte +212 -177
  171. package/package/components/runs/JobsLoader.svelte +2 -2
  172. package/package/components/runs/JobsLoader.svelte.d.ts +1 -1
  173. package/package/components/runs/NoWorkerWithTagWarning.svelte +18 -5
  174. package/package/components/runs/RunBadges.svelte +100 -0
  175. package/package/components/runs/RunBadges.svelte.d.ts +12 -0
  176. package/package/components/runs/RunLabels.svelte +86 -0
  177. package/package/components/runs/RunLabels.svelte.d.ts +10 -0
  178. package/package/components/runs/RunOption.svelte +20 -0
  179. package/package/components/runs/RunOption.svelte.d.ts +10 -0
  180. package/package/components/runs/RunRow.svelte +239 -151
  181. package/package/components/runs/RunRow.svelte.d.ts +12 -9
  182. package/package/components/runs/RunsBatchActionsDropdown.svelte +13 -17
  183. package/package/components/runs/RunsBatchActionsDropdown.svelte.d.ts +5 -18
  184. package/package/components/runs/RunsFilter.svelte +369 -243
  185. package/package/components/runs/RunsFilter.svelte.d.ts +2 -0
  186. package/package/components/runs/RunsQueue.svelte +96 -25
  187. package/package/components/runs/RunsQueue.svelte.d.ts +7 -21
  188. package/package/components/runs/RunsTable.svelte +62 -71
  189. package/package/components/runs/RunsTable.svelte.d.ts +2 -1
  190. package/package/components/runs/runs-grid.css +95 -0
  191. package/package/components/schema/EditableSchemaDrawer.svelte +12 -12
  192. package/package/components/schema/FlowPropertyEditor.svelte +197 -206
  193. package/package/components/schema/PropertyEditor.svelte +33 -35
  194. package/package/components/schema/SchemaFormDND.svelte.d.ts +2 -2
  195. package/package/components/search/GlobalSearchModal.svelte +8 -1
  196. package/package/components/select/DraggableTags.svelte.d.ts +17 -7
  197. package/package/components/select/MultiSelect.svelte.d.ts +21 -11
  198. package/package/components/select/Select.svelte +2 -1
  199. package/package/components/select/Select.svelte.d.ts +25 -13
  200. package/package/components/select/SelectDropdown.svelte.d.ts +14 -7
  201. package/package/components/settings/TokenDisplay.svelte +1 -1
  202. package/package/components/sidebar/OperatorMenu.svelte +5 -0
  203. package/package/components/sidebar/SidebarContent.svelte +48 -2
  204. package/package/components/sidebar/WorkspaceMenu.svelte +116 -17
  205. package/package/components/toast.js +6 -3
  206. package/package/components/triggers/AddTriggersButton.svelte +7 -6
  207. package/package/components/triggers/CaptureWrapper.svelte +19 -3
  208. package/package/components/triggers/TriggerLabel.svelte +8 -0
  209. package/package/components/triggers/TriggerTokens.svelte +1 -1
  210. package/package/components/triggers/TriggersEditor.svelte +9 -5
  211. package/package/components/triggers/TriggersTable.svelte +2 -2
  212. package/package/components/triggers/TriggersWrapper.svelte +16 -5
  213. package/package/components/triggers/TriggersWrapper.svelte.d.ts +3 -19
  214. package/package/components/{details/EmailTriggerCaptures.svelte → triggers/email/DefaultEmailCapture.svelte} +5 -5
  215. package/package/components/{details/EmailTriggerCaptures.svelte.d.ts → triggers/email/DefaultEmailCapture.svelte.d.ts} +4 -4
  216. package/package/components/{details/EmailTriggerConfigSection.svelte → triggers/email/DefaultEmailConfigSection.svelte} +24 -14
  217. package/package/components/triggers/email/DefaultEmailConfigSection.svelte.d.ts +13 -0
  218. package/package/components/triggers/email/DefaultEmailPanel.svelte +71 -0
  219. package/package/components/triggers/email/DefaultEmailPanel.svelte.d.ts +11 -0
  220. package/package/components/triggers/email/EmailCapture.svelte +39 -0
  221. package/package/components/triggers/email/EmailCapture.svelte.d.ts +43 -0
  222. package/package/components/triggers/email/EmailTriggerEditor.svelte +20 -0
  223. package/package/components/triggers/email/EmailTriggerEditor.svelte.d.ts +11 -0
  224. package/package/components/triggers/email/EmailTriggerEditorConfigSection.svelte +133 -0
  225. package/package/components/triggers/email/EmailTriggerEditorConfigSection.svelte.d.ts +14 -0
  226. package/package/components/triggers/email/EmailTriggerEditorInner.svelte +335 -0
  227. package/package/components/triggers/email/EmailTriggerEditorInner.svelte.d.ts +22 -0
  228. package/package/components/triggers/email/EmailTriggerPanel.svelte +61 -0
  229. package/package/components/triggers/email/EmailTriggerPanel.svelte.d.ts +14 -0
  230. package/package/components/triggers/email/utils.d.ts +4 -0
  231. package/package/components/triggers/email/utils.js +52 -0
  232. package/package/components/triggers/http/RouteEditorConfigSection.svelte +1 -1
  233. package/package/components/triggers/http/utils.js +1 -1
  234. package/package/components/triggers/triggers.svelte.d.ts +1 -0
  235. package/package/components/triggers/triggers.svelte.js +24 -2
  236. package/package/components/triggers/utils.js +19 -5
  237. package/package/components/triggers.d.ts +1 -1
  238. package/package/components/triggers.js +2 -0
  239. package/package/components/wizards/AgGridWizard.svelte +85 -80
  240. package/package/components/workspaceSettings/AISettings.svelte +74 -22
  241. package/package/components/workspaceSettings/AISettings.svelte.d.ts +2 -1
  242. package/package/components/workspaceSettings/CreateWorkspace.svelte +395 -0
  243. package/package/components/workspaceSettings/CreateWorkspace.svelte.d.ts +6 -0
  244. package/package/components/workspaceSettings/DucklakeSettings.svelte +3 -1
  245. package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +1 -1
  246. package/package/components/workspaceSettings/StorageSettings.svelte +69 -48
  247. package/package/gen/core/OpenAPI.js +1 -1
  248. package/package/gen/schemas.gen.d.ts +142 -3
  249. package/package/gen/schemas.gen.js +144 -3
  250. package/package/gen/services.gen.d.ts +129 -1
  251. package/package/gen/services.gen.js +267 -1
  252. package/package/gen/types.gen.d.ts +434 -8
  253. package/package/hubPaths.json +4 -2
  254. package/package/infer.js +1 -1
  255. package/package/keyboardChain.d.ts +5 -0
  256. package/package/keyboardChain.js +40 -0
  257. package/package/services/JobManager.js +2 -2
  258. package/package/stores.d.ts +3 -1
  259. package/package/stores.js +8 -5
  260. package/package/utils/workspaceHierarchy.d.ts +27 -0
  261. package/package/utils/workspaceHierarchy.js +101 -0
  262. package/package/utils.d.ts +6 -3
  263. package/package/utils.js +30 -15
  264. package/package/workspace_settings.js +2 -3
  265. package/package.json +9 -11
  266. package/package/components/DynSelect.svelte.d.ts +0 -11
  267. package/package/components/ObjectTypeNarrowing.svelte +0 -18
  268. package/package/components/ObjectTypeNarrowing.svelte.d.ts +0 -22
  269. package/package/components/details/DetailPageTriggerPanel.svelte +0 -121
  270. package/package/components/details/DetailPageTriggerPanel.svelte.d.ts +0 -20
  271. package/package/components/details/EmailTriggerConfigSection.svelte.d.ts +0 -12
  272. package/package/components/details/EmailTriggerPanel.svelte +0 -76
  273. package/package/components/details/EmailTriggerPanel.svelte.d.ts +0 -26
@@ -25,6 +25,8 @@ export function captureTriggerKindToTriggerKind(kind) {
25
25
  return 'webhooks';
26
26
  case 'email':
27
27
  return 'emails';
28
+ case 'default_email':
29
+ return 'default_emails';
28
30
  case 'http':
29
31
  return 'routes';
30
32
  case 'websocket':
@@ -7,6 +7,7 @@ import Button from '../common/button/Button.svelte';
7
7
  import Popover from '../meltComponents/Popover.svelte';
8
8
  import { offset, flip, shift } from 'svelte-floating-ui/dom';
9
9
  let { value = $bindable(), trigger: trigger_render } = $props();
10
+ const isActionsColumn = $derived(value?._isActionsColumn === true);
10
11
  const presets = [
11
12
  {
12
13
  label: 'None',
@@ -92,16 +93,18 @@ $effect(() => {
92
93
  <input type="text" placeholder="Header name" bind:value={value.headerName} />
93
94
  </Label>
94
95
 
95
- <Label label="Editable value">
96
- <Toggle
97
- on:pointerdown={(e) => {
98
- e?.stopPropagation()
99
- }}
100
- options={{ right: 'Editable' }}
101
- bind:checked={value.editable}
102
- size="xs"
103
- />
104
- </Label>
96
+ {#if !isActionsColumn}
97
+ <Label label="Editable value">
98
+ <Toggle
99
+ on:pointerdown={(e) => {
100
+ e?.stopPropagation()
101
+ }}
102
+ options={{ right: 'Editable' }}
103
+ bind:checked={value.editable}
104
+ size="xs"
105
+ />
106
+ </Label>
107
+ {/if}
105
108
 
106
109
  <Label label="Min width (px)">
107
110
  <input type="number" placeholder="width" bind:value={value.minWidth} />
@@ -124,8 +127,8 @@ $effect(() => {
124
127
  </Tooltip>
125
128
  {/snippet}
126
129
 
127
- <input type="range" step="1" bind:value={value.flex} min={1} max={12} />
128
- <div class="text-xs">{value.flex}</div>
130
+ <input type="range" step="1" bind:value={value.flex} min={0} max={12} />
131
+ <div class="text-xs">{value.flex ?? 0}</div>
129
132
  </Label>
130
133
 
131
134
  <Label label="Hide">
@@ -139,7 +142,8 @@ $effect(() => {
139
142
  />
140
143
  </Label>
141
144
 
142
- <Label label="Value formatter">
145
+ {#if !isActionsColumn}
146
+ <Label label="Value formatter">
143
147
  {#snippet header()}
144
148
  <Tooltip
145
149
  documentationLink="https://www.ag-grid.com/javascript-data-grid/value-formatters/"
@@ -197,83 +201,84 @@ $effect(() => {
197
201
  {/key}
198
202
  </div>
199
203
 
200
- <Label label="Sort">
201
- <select bind:value={value.sort}>
202
- <option value={null}>None</option>
203
- <option value="asc">Ascending</option>
204
- <option value="desc">Descending</option>
205
- </select>
206
- </Label>
204
+ <Label label="Sort">
205
+ <select bind:value={value.sort}>
206
+ <option value={null}>None</option>
207
+ <option value="asc">Ascending</option>
208
+ <option value="desc">Descending</option>
209
+ </select>
210
+ </Label>
207
211
 
208
- <Label label="Filter">
209
- {#snippet header()}
210
- <Tooltip documentationLink="https://www.ag-grid.com/javascript-data-grid/filtering/">
211
- Filtering allows you to limit the rows displayed in your grid to those that match
212
- criteria you specify.
213
- </Tooltip>
214
- {/snippet}
215
- <Toggle
216
- on:pointerdown={(e) => {
217
- e?.stopPropagation()
218
- }}
219
- options={{ right: 'Enable filter' }}
220
- bind:checked={value.filter}
221
- size="xs"
222
- />
223
- </Label>
224
-
225
- <!--
226
- EE only
212
+ <Label label="Filter">
213
+ {#snippet header()}
214
+ <Tooltip documentationLink="https://www.ag-grid.com/javascript-data-grid/filtering/">
215
+ Filtering allows you to limit the rows displayed in your grid to those that match
216
+ criteria you specify.
217
+ </Tooltip>
218
+ {/snippet}
219
+ <Toggle
220
+ on:pointerdown={(e) => {
221
+ e?.stopPropagation()
222
+ }}
223
+ options={{ right: 'Enable filter' }}
224
+ bind:checked={value.filter}
225
+ size="xs"
226
+ />
227
+ </Label>
227
228
 
228
- <Label label="Aggregation function">
229
- <SimpleEditor autoHeight lang="javascript" bind:code={value.aggFunc} />
230
- </Label>
229
+ <!--
230
+ EE only
231
231
 
232
- <Label label="Pivot">
233
- <Toggle bind:checked={value.pivot} size="xs" />
234
- </Label>
232
+ <Label label="Aggregation function">
233
+ <SimpleEditor autoHeight lang="javascript" bind:code={value.aggFunc} />
234
+ </Label>
235
235
 
236
- <Label label="Pivot index">
237
- <input type="number" placeholder="pivot index" bind:value={value.pivotIndex} />
238
- </Label>
236
+ <Label label="Pivot">
237
+ <Toggle bind:checked={value.pivot} size="xs" />
238
+ </Label>
239
239
 
240
- <Label label="Pinned">
241
- <select bind:value={value.pinned}>
242
- <option value={null}>None</option>
243
- <option value="left">Left</option>
244
- <option value="right">Right</option>
245
- </select>
246
- </Label>
240
+ <Label label="Pivot index">
241
+ <input type="number" placeholder="pivot index" bind:value={value.pivotIndex} />
242
+ </Label>
247
243
 
248
- <Label label="Row group">
249
- <Toggle bind:checked={value.rowGroup} size="xs" />
250
- </Label>
244
+ <Label label="Pinned">
245
+ <select bind:value={value.pinned}>
246
+ <option value={null}>None</option>
247
+ <option value="left">Left</option>
248
+ <option value="right">Right</option>
249
+ </select>
250
+ </Label>
251
251
 
252
- <Label label="Row group index">
253
- <input type="number" placeholder="row group index" bind:value={value.rowGroupIndex} />
254
- </Label>
255
- -->
252
+ <Label label="Row group">
253
+ <Toggle bind:checked={value.rowGroup} size="xs" />
254
+ </Label>
256
255
 
257
- <Label label="Type">
258
- <select bind:value={value.cellRendererType}>
259
- <option value="text">Text</option>
260
- <option value="link">Link</option>
261
- </select>
256
+ <Label label="Row group index">
257
+ <input type="number" placeholder="row group index" bind:value={value.rowGroupIndex} />
262
258
  </Label>
259
+ -->
260
+
261
+ <Label label="Type">
262
+ <select bind:value={value.cellRendererType}>
263
+ <option value="text">Text</option>
264
+ <option value="link">Link</option>
265
+ </select>
266
+ </Label>
263
267
 
264
- {#if value.cellRendererType === 'link'}
265
- <Alert type="info" title="Label" size="xs">
266
- They are two ways to define a link:
267
- <ul class="list-disc list-inside">
268
- <li>
269
- <strong>String</strong>: The string will be used as the link and the label.
270
- </li>
271
- <li>
272
- <strong>Object</strong>: The object must have a <code>href</code> and a
273
- <code>label</code> property.
274
- </li>
275
- </ul>
276
- </Alert>
268
+ {#if value.cellRendererType === 'link'}
269
+ <Alert type="info" title="Label" size="xs">
270
+ They are two ways to define a link:
271
+ <ul class="list-disc list-inside">
272
+ <li>
273
+ <strong>String</strong>: The string will be used as the link and the label.
274
+ </li>
275
+ <li>
276
+ <strong>Object</strong>: The object must have a <code>href</code> and a
277
+ <code>label</code> property.
278
+ </li>
279
+ </ul>
280
+ </Alert>
281
+ {/if}
277
282
  {/if}
278
283
  </div>
279
284
  {/if}
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">import { WorkspaceService } from '../../gen';
2
2
  import { setCopilotInfo, workspaceStore } from '../../stores';
3
3
  import { sendUserToast } from '../../toast';
4
- import { AI_DEFAULT_MODELS, fetchAvailableModels } from '../copilot/lib';
4
+ import { AI_PROVIDERS, fetchAvailableModels } from '../copilot/lib';
5
5
  import TestAiKey from '../copilot/TestAIKey.svelte';
6
6
  import Description from '../Description.svelte';
7
7
  import Label from '../Label.svelte';
@@ -13,21 +13,16 @@ import MultiSelect from '../select/MultiSelect.svelte';
13
13
  import { safeSelectItems } from '../select/utils.svelte';
14
14
  import Badge from '../common/badge/Badge.svelte';
15
15
  import Tooltip from '../Tooltip.svelte';
16
- const aiProviderLabels = [
17
- ['openai', 'OpenAI'],
18
- ['azure_openai', 'Azure OpenAI'],
19
- ['anthropic', 'Anthropic'],
20
- ['mistral', 'Mistral'],
21
- ['deepseek', 'DeepSeek'],
22
- ['googleai', 'Google AI'],
23
- ['groq', 'Groq'],
24
- ['openrouter', 'OpenRouter'],
25
- ['togetherai', 'Together AI'],
26
- ['customai', 'Custom AI']
27
- ];
28
- let { aiProviders = $bindable(), codeCompletionModel = $bindable(), defaultModel = $bindable(), usingOpenaiClientCredentialsOauth = $bindable() } = $props();
16
+ import { AIMode } from '../copilot/chat/AIChatManager.svelte';
17
+ import ToggleButtonGroup from '../common/toggleButton-v2/ToggleButtonGroup.svelte';
18
+ import ToggleButton from '../common/toggleButton-v2/ToggleButton.svelte';
19
+ import autosize from '../../autosize';
20
+ const MAX_CUSTOM_PROMPT_LENGTH = 5000;
21
+ let { aiProviders = $bindable(), codeCompletionModel = $bindable(), defaultModel = $bindable(), customPrompts = $bindable(), usingOpenaiClientCredentialsOauth = $bindable() } = $props();
29
22
  let fetchedAiModels = $state(false);
30
- let availableAiModels = $state(Object.fromEntries(aiProviderLabels.map(([provider]) => [provider, AI_DEFAULT_MODELS[provider]])));
23
+ let availableAiModels = $state(Object.fromEntries(Object.keys(AI_PROVIDERS).map((provider) => [provider, AI_PROVIDERS[provider].defaultModels])));
24
+ // Custom system prompt settings
25
+ let selectedAiMode = $state(AIMode.ASK);
31
26
  let selectedAiModels = $derived(Object.values(aiProviders).flatMap((p) => p.models));
32
27
  let modelProviderMap = $derived(Object.fromEntries(Object.entries(aiProviders).flatMap(([provider, config]) => config.models.map((m) => [m, provider]))));
33
28
  $effect(() => {
@@ -49,7 +44,7 @@ $effect(() => {
49
44
  }
50
45
  catch (e) {
51
46
  console.error('failed to fetch models for provider', provider, e);
52
- availableAiModels[provider] = AI_DEFAULT_MODELS[provider];
47
+ availableAiModels[provider] = AI_PROVIDERS[provider].defaultModels;
53
48
  }
54
49
  }
55
50
  fetchedAiModels = true;
@@ -63,10 +58,15 @@ async function editCopilotConfig() {
63
58
  const default_model = defaultModel && modelProviderMap[defaultModel]
64
59
  ? { model: defaultModel, provider: modelProviderMap[defaultModel] }
65
60
  : undefined;
61
+ // Convert customPrompts to include only non-empty prompts
62
+ const custom_prompts = Object.entries(customPrompts)
63
+ .filter(([_, prompt]) => prompt.trim().length > 0)
64
+ .reduce((acc, [mode, prompt]) => ({ ...acc, [mode]: prompt }), {});
66
65
  const config = {
67
66
  providers: aiProviders,
68
67
  code_completion_model,
69
- default_model
68
+ default_model,
69
+ custom_prompts: Object.keys(custom_prompts).length > 0 ? custom_prompts : undefined
70
70
  };
71
71
  await WorkspaceService.editCopilotConfig({
72
72
  workspace: $workspaceStore,
@@ -91,7 +91,7 @@ async function onAiProviderChange(provider) {
91
91
  }
92
92
  catch (e) {
93
93
  console.error('failed to fetch models for provider', provider, e);
94
- availableAiModels[provider] = AI_DEFAULT_MODELS[provider];
94
+ availableAiModels[provider] = AI_PROVIDERS[provider].defaultModels;
95
95
  }
96
96
  }
97
97
  if (aiProviders[provider]?.resource_path &&
@@ -115,12 +115,12 @@ async function onAiProviderChange(provider) {
115
115
  <div class="flex flex-col gap-2">
116
116
  <p class="font-semibold">AI Providers</p>
117
117
  <div class="flex flex-col gap-4">
118
- {#each aiProviderLabels as [provider, label]}
118
+ {#each Object.entries(AI_PROVIDERS) as [provider, details]}
119
119
  <div class="flex flex-col gap-2">
120
120
  <div class="flex flex-row gap-2">
121
121
  <Toggle
122
122
  options={{
123
- right: label
123
+ right: details.label
124
124
  }}
125
125
  checked={!!aiProviders[provider]}
126
126
  on:change={(e) => {
@@ -186,12 +186,12 @@ async function onAiProviderChange(provider) {
186
186
  () => aiProviders[provider].resource_path,
187
187
  (v) => {
188
188
  aiProviders[provider].resource_path = v
189
- onAiProviderChange(provider)
189
+ onAiProviderChange(provider as AIProvider)
190
190
  }
191
191
  }
192
192
  />
193
193
  <TestAiKey
194
- aiProvider={provider}
194
+ aiProvider={provider as AIProvider}
195
195
  resourcePath={aiProviders[provider].resource_path}
196
196
  model={aiProviders[provider].models[0]}
197
197
  />
@@ -276,6 +276,58 @@ async function onAiProviderChange(provider) {
276
276
  </div>
277
277
  {/if}
278
278
 
279
+ {#if Object.keys(aiProviders).length > 0}
280
+ <div class="flex flex-col gap-2">
281
+ <p class="font-semibold">Custom system prompts</p>
282
+ <div class="flex flex-col gap-4">
283
+ <Label label="AI Mode">
284
+ <ToggleButtonGroup
285
+ bind:selected={selectedAiMode}
286
+ on:selected={({ detail }) => {
287
+ selectedAiMode = detail
288
+ }}
289
+ >
290
+ {#snippet children({ item })}
291
+ {#each Object.values(AIMode) as mode}
292
+ <div class="relative">
293
+ <ToggleButton
294
+ value={mode}
295
+ label={mode.charAt(0).toUpperCase() + mode.slice(1)}
296
+ {item}
297
+ />
298
+ {#if customPrompts[mode]?.length > 0}
299
+ <div
300
+ class="absolute -top-1 -right-1 w-2 h-2 bg-blue-500 rounded-full border border-surface"
301
+ ></div>
302
+ {/if}
303
+ </div>
304
+ {/each}
305
+ {/snippet}
306
+ </ToggleButtonGroup>
307
+ </Label>
308
+
309
+ <Label
310
+ label="Custom system prompt for {selectedAiMode.charAt(0).toUpperCase() +
311
+ selectedAiMode.slice(1)} Mode"
312
+ >
313
+ <textarea
314
+ bind:value={customPrompts[selectedAiMode]}
315
+ placeholder="Enter a custom system prompt for {selectedAiMode} mode."
316
+ class="w-full min-h-24 p-2 border border-gray-200 dark:border-gray-700 rounded-md bg-surface text-primary resize-y"
317
+ rows="4"
318
+ maxlength={MAX_CUSTOM_PROMPT_LENGTH}
319
+ use:autosize
320
+ ></textarea>
321
+ <div class="flex justify-end mt-1">
322
+ <span class="text-xs text-secondary">
323
+ {(customPrompts[selectedAiMode] ?? '').length}/{MAX_CUSTOM_PROMPT_LENGTH} characters
324
+ </span>
325
+ </div>
326
+ </Label>
327
+ </div>
328
+ </div>
329
+ {/if}
330
+
279
331
  <Button
280
332
  wrapperClasses="self-start"
281
333
  disabled={!Object.values(aiProviders).every((p) => p.resource_path) ||
@@ -3,8 +3,9 @@ type $$ComponentProps = {
3
3
  aiProviders: Exclude<AIConfig['providers'], undefined>;
4
4
  codeCompletionModel: string | undefined;
5
5
  defaultModel: string | undefined;
6
+ customPrompts: Record<string, string>;
6
7
  usingOpenaiClientCredentialsOauth: boolean;
7
8
  };
8
- declare const AiSettings: import("svelte").Component<$$ComponentProps, {}, "codeCompletionModel" | "defaultModel" | "aiProviders" | "usingOpenaiClientCredentialsOauth">;
9
+ declare const AiSettings: import("svelte").Component<$$ComponentProps, {}, "codeCompletionModel" | "defaultModel" | "aiProviders" | "customPrompts" | "usingOpenaiClientCredentialsOauth">;
9
10
  type AiSettings = ReturnType<typeof AiSettings>;
10
11
  export default AiSettings;