windmill-components 1.531.0 → 1.532.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.
- package/package/components/ArgInput.svelte +44 -1
- package/package/components/EditableSchemaForm.svelte +27 -18
- package/package/components/EditableSchemaForm.svelte.d.ts +1 -0
- package/package/components/Editor.svelte +2 -2
- package/package/components/Editor.svelte.d.ts +1 -0
- package/package/components/EditorBar.svelte +2 -2
- package/package/components/EditorBar.svelte.d.ts +1 -0
- package/package/components/FieldHeader.svelte +1 -1
- package/package/components/FlowWrapper.svelte +3 -2
- package/package/components/ModuleTest.svelte +4 -1
- package/package/components/ResourceEditor.svelte +4 -0
- package/package/components/ScriptEditor.svelte +1 -0
- package/package/components/StringTypeNarrowing.svelte.d.ts +1 -1
- package/package/components/copilot/FlowInlineScriptAIButton.svelte +4 -2
- package/package/components/copilot/FlowInlineScriptAIButton.svelte.d.ts +4 -1
- package/package/components/copilot/autocomplete/Autocompletor.js +0 -2
- package/package/components/copilot/chat/AIChat.svelte +2 -4
- package/package/components/copilot/chat/AIChatInput.svelte +4 -3
- package/package/components/copilot/chat/AIChatManager.svelte.js +21 -9
- package/package/components/copilot/chat/AvailableContextList.svelte +115 -24
- package/package/components/copilot/chat/AvailableContextList.svelte.d.ts +1 -0
- package/package/components/copilot/chat/ContextElementBadge.svelte +31 -15
- package/package/components/copilot/chat/ContextElementBadge.svelte.d.ts +5 -20
- package/package/components/copilot/chat/ContextManager.svelte.d.ts +15 -2
- package/package/components/copilot/chat/ContextManager.svelte.js +102 -15
- package/package/components/copilot/chat/ContextTextarea.svelte +1 -1
- package/package/components/copilot/chat/context.d.ts +14 -1
- package/package/components/copilot/chat/context.js +1 -0
- package/package/components/copilot/chat/flow/FlowAIChat.svelte +1 -1
- package/package/components/copilot/chat/flow/core.d.ts +2 -1
- package/package/components/copilot/chat/flow/core.js +52 -18
- package/package/components/copilot/chat/script/core.d.ts +2 -2
- package/package/components/copilot/chat/script/core.js +51 -122
- package/package/components/copilot/chat/shared.d.ts +13 -2
- package/package/components/copilot/chat/shared.js +155 -4
- package/package/components/flows/FlowEditor.svelte +12 -0
- package/package/components/flows/FlowModuleIcon.svelte +39 -0
- package/package/components/flows/FlowModuleIcon.svelte.d.ts +10 -0
- package/package/components/flows/content/FlowModuleComponent.svelte +2 -0
- package/package/components/flows/map/MapItem.svelte +8 -39
- package/package/components/schema/FlowPropertyEditor.svelte +75 -17
- package/package/components/schema/PropertyEditor.svelte.d.ts +1 -1
- package/package/components/schema/jsonSchemaResource.svelte.d.ts +2 -0
- package/package/components/schema/jsonSchemaResource.svelte.js +40 -0
- package/package/utils.d.ts +1 -1
- package/package.json +13 -13
|
@@ -13,6 +13,8 @@ import ToggleButton from '../common/toggleButton-v2/ToggleButton.svelte';
|
|
|
13
13
|
import Button from '../common/button/Button.svelte';
|
|
14
14
|
import { Pen, Plus, Trash2 } from 'lucide-svelte';
|
|
15
15
|
import Popover from '../meltComponents/Popover.svelte';
|
|
16
|
+
import ResourcePicker from '../ResourcePicker.svelte';
|
|
17
|
+
import Tooltip from '../Tooltip.svelte';
|
|
16
18
|
let { format = $bindable(undefined), contentEncoding = undefined, type = undefined, oneOf = $bindable(undefined), required = false, pattern = undefined, password = undefined, variableEditor = undefined, itemPicker = undefined, nullable = $bindable(undefined), disabled = $bindable(undefined), defaultValue = $bindable(undefined), propsNames = [], showExpr = $bindable(undefined), extra = {}, customErrorMessage = undefined, itemsType = undefined, properties = $bindable(undefined), order = $bindable(undefined), requiredProperty = $bindable(undefined), displayWebhookWarning = true } = $props();
|
|
17
19
|
let oneOfSelected = $state(undefined);
|
|
18
20
|
const dispatch = createEventDispatcher();
|
|
@@ -56,8 +58,15 @@ function renameVariant(name, selected) {
|
|
|
56
58
|
variantName = '';
|
|
57
59
|
}
|
|
58
60
|
}
|
|
59
|
-
let initialObjectSelected = $state(
|
|
61
|
+
let initialObjectSelected = $state(format === 'json-schema'
|
|
62
|
+
? 'json-schema'
|
|
63
|
+
: format?.startsWith('jsonschema-')
|
|
64
|
+
? 'custom-object'
|
|
65
|
+
: Object.keys(properties ?? {}).length == 0
|
|
66
|
+
? 'resource'
|
|
67
|
+
: 'custom-object');
|
|
60
68
|
let isDynSelect = $derived(format?.startsWith('dynselect-') ?? false);
|
|
69
|
+
let customObjectSelected = $state(format?.startsWith('jsonschema-') ? 'json-schema-resource' : 'editor');
|
|
61
70
|
</script>
|
|
62
71
|
|
|
63
72
|
<div class="flex flex-col gap-2">
|
|
@@ -224,33 +233,82 @@ let isDynSelect = $derived(format?.startsWith('dynselect-') ?? false);
|
|
|
224
233
|
<Tabs
|
|
225
234
|
bind:selected={initialObjectSelected}
|
|
226
235
|
on:selected={(e) => {
|
|
227
|
-
if (e.detail === '
|
|
236
|
+
if (e.detail === 'json-schema') {
|
|
237
|
+
format = 'json-schema'
|
|
238
|
+
} else {
|
|
228
239
|
format = ''
|
|
229
240
|
}
|
|
230
241
|
}}
|
|
231
242
|
>
|
|
232
243
|
<Tab value="resource">Resource</Tab>
|
|
233
244
|
<Tab value="custom-object">Custom Object</Tab>
|
|
245
|
+
<Tab value="json-schema">
|
|
246
|
+
JSON Schema
|
|
247
|
+
<Tooltip>
|
|
248
|
+
This displays a JSON schema editor, useful when a JSON schema input is expected.
|
|
249
|
+
</Tooltip>
|
|
250
|
+
</Tab>
|
|
234
251
|
{#snippet content()}
|
|
235
252
|
<div class="pt-2">
|
|
236
253
|
<TabContent value="custom-object">
|
|
237
|
-
<
|
|
238
|
-
bind:
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
254
|
+
<ToggleButtonGroup
|
|
255
|
+
bind:selected={customObjectSelected}
|
|
256
|
+
class="mb-2"
|
|
257
|
+
on:selected={(e) => {
|
|
258
|
+
if (e.detail === 'editor') {
|
|
259
|
+
format = undefined
|
|
260
|
+
} else {
|
|
261
|
+
properties = undefined
|
|
262
|
+
order = undefined
|
|
263
|
+
requiredProperty = undefined
|
|
264
|
+
}
|
|
265
|
+
}}
|
|
266
|
+
>
|
|
267
|
+
{#snippet children({ item })}
|
|
268
|
+
<ToggleButton value="editor" label="Editor" {item} />
|
|
269
|
+
<ToggleButton
|
|
270
|
+
value="json-schema-resource"
|
|
271
|
+
label="JSON Schema Resource"
|
|
272
|
+
{item}
|
|
273
|
+
tooltip="Select a JSON schema resource to specify the object's properties"
|
|
274
|
+
showTooltipIcon
|
|
275
|
+
/>
|
|
276
|
+
{/snippet}
|
|
277
|
+
</ToggleButtonGroup>
|
|
278
|
+
{#if customObjectSelected === 'editor'}
|
|
279
|
+
<EditableSchemaDrawer
|
|
280
|
+
bind:schema={
|
|
281
|
+
() => {
|
|
282
|
+
return {
|
|
283
|
+
properties: properties,
|
|
284
|
+
order: order,
|
|
285
|
+
required: requiredProperty
|
|
286
|
+
}
|
|
287
|
+
},
|
|
288
|
+
(v) => {
|
|
289
|
+
properties = v.properties
|
|
290
|
+
order = v.order
|
|
291
|
+
requiredProperty = v.required
|
|
292
|
+
dispatch('schemaChange')
|
|
244
293
|
}
|
|
245
|
-
},
|
|
246
|
-
(v) => {
|
|
247
|
-
properties = v.properties
|
|
248
|
-
order = v.order
|
|
249
|
-
requiredProperty = v.required
|
|
250
|
-
dispatch('schemaChange')
|
|
251
294
|
}
|
|
252
|
-
|
|
253
|
-
|
|
295
|
+
/>
|
|
296
|
+
{:else if customObjectSelected === 'json-schema-resource'}
|
|
297
|
+
<ResourcePicker
|
|
298
|
+
resourceType="json_schema"
|
|
299
|
+
bind:value={
|
|
300
|
+
() => {
|
|
301
|
+
if (format?.startsWith('jsonschema-')) {
|
|
302
|
+
return format.substring('jsonschema-'.length)
|
|
303
|
+
}
|
|
304
|
+
return undefined
|
|
305
|
+
},
|
|
306
|
+
(v) => {
|
|
307
|
+
format = 'jsonschema-' + v
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
/>
|
|
311
|
+
{/if}
|
|
254
312
|
</TabContent>
|
|
255
313
|
|
|
256
314
|
<TabContent value="resource">
|
|
@@ -46,6 +46,6 @@ declare const PropertyEditor: $$__sveltets_2_IsomorphicComponent<Props, {
|
|
|
46
46
|
[evt: string]: CustomEvent<any>;
|
|
47
47
|
}, {}, {
|
|
48
48
|
focus: () => void;
|
|
49
|
-
}, "description" | "title" | "properties" | "placeholder" | "pattern" | "extra" | "oneOf" | "format" | "order" | "enum_" | "contentEncoding" | "
|
|
49
|
+
}, "description" | "title" | "properties" | "placeholder" | "pattern" | "extra" | "oneOf" | "format" | "order" | "enum_" | "contentEncoding" | "customErrorMessage" | "itemsType">;
|
|
50
50
|
type PropertyEditor = InstanceType<typeof PropertyEditor>;
|
|
51
51
|
export default PropertyEditor;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { AppService } from '../../gen';
|
|
3
|
+
import { sendUserToast } from '../../utils';
|
|
4
|
+
let loadedJsonSchemaResources = $state({});
|
|
5
|
+
const jsonSchemaResourceSchema = z.object({
|
|
6
|
+
schema: z.record(z.string(), z.any())
|
|
7
|
+
});
|
|
8
|
+
export async function getJsonSchemaFromResource(path, workspace) {
|
|
9
|
+
if (loadedJsonSchemaResources[workspace]?.[path]) {
|
|
10
|
+
return loadedJsonSchemaResources[workspace][path];
|
|
11
|
+
}
|
|
12
|
+
try {
|
|
13
|
+
const resourceValue = await AppService.getPublicResource({
|
|
14
|
+
path,
|
|
15
|
+
workspace
|
|
16
|
+
});
|
|
17
|
+
const parsedResource = jsonSchemaResourceSchema.safeParse(resourceValue);
|
|
18
|
+
if (parsedResource.success) {
|
|
19
|
+
const workspaceResources = loadedJsonSchemaResources[workspace];
|
|
20
|
+
if (!workspaceResources) {
|
|
21
|
+
loadedJsonSchemaResources[workspace] = {};
|
|
22
|
+
}
|
|
23
|
+
loadedJsonSchemaResources[workspace][path] = parsedResource.data.schema;
|
|
24
|
+
return parsedResource.data.schema;
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
console.error('Invalid JSON schema resource:', parsedResource.error);
|
|
28
|
+
sendUserToast('Invalid JSON schema resource: ' + parsedResource.error, true);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
console.error(err);
|
|
33
|
+
sendUserToast('Could not load JSON schema resource: ' + err, true);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export async function clearJsonSchemaResourceCache(path, workspace) {
|
|
37
|
+
if (loadedJsonSchemaResources[workspace]?.[path]) {
|
|
38
|
+
delete loadedJsonSchemaResources[workspace][path];
|
|
39
|
+
}
|
|
40
|
+
}
|
package/package/utils.d.ts
CHANGED
|
@@ -97,7 +97,7 @@ export declare function removeMarkdown(text: string): string;
|
|
|
97
97
|
export declare function truncate(s: string, n: number, suffix?: string): string;
|
|
98
98
|
export declare function truncateRev(s: string, n: number, prefix?: string): string;
|
|
99
99
|
export declare function isString(value: any): value is string | String;
|
|
100
|
-
export type InputCat = 'string' | 'email' | 'number' | 'boolean' | 'list' | 'resource-object' | 'enum' | 'date' | 'base64' | 'resource-string' | 'object' | 'sql' | 'yaml' | 'currency' | 'oneOf' | 'dynselect';
|
|
100
|
+
export type InputCat = 'string' | 'email' | 'number' | 'boolean' | 'list' | 'resource-object' | 'enum' | 'date' | 'base64' | 'resource-string' | 'object' | 'sql' | 'yaml' | 'currency' | 'oneOf' | 'dynselect' | 'json-schema';
|
|
101
101
|
export declare namespace DynamicSelect {
|
|
102
102
|
type HelperScript = {
|
|
103
103
|
type: 'inline';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "windmill-components",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.532.0",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"dev": "vite dev",
|
|
6
6
|
"build": "vite build",
|
|
@@ -78,13 +78,13 @@
|
|
|
78
78
|
"type": "module",
|
|
79
79
|
"dependencies": {
|
|
80
80
|
"@aws-crypto/sha256-js": "^4.0.0",
|
|
81
|
-
"@codingame/monaco-vscode-configuration-service-override": "~
|
|
82
|
-
"@codingame/monaco-vscode-editor-api": "~
|
|
83
|
-
"@codingame/monaco-vscode-standalone-css-language-features": "~
|
|
84
|
-
"@codingame/monaco-vscode-standalone-html-language-features": "~
|
|
85
|
-
"@codingame/monaco-vscode-standalone-json-language-features": "~
|
|
86
|
-
"@codingame/monaco-vscode-standalone-languages": "~
|
|
87
|
-
"@codingame/monaco-vscode-standalone-typescript-language-features": "~
|
|
81
|
+
"@codingame/monaco-vscode-configuration-service-override": "~20.2.1",
|
|
82
|
+
"@codingame/monaco-vscode-editor-api": "~20.2.1",
|
|
83
|
+
"@codingame/monaco-vscode-standalone-css-language-features": "~20.2.1",
|
|
84
|
+
"@codingame/monaco-vscode-standalone-html-language-features": "~20.2.1",
|
|
85
|
+
"@codingame/monaco-vscode-standalone-json-language-features": "~20.2.1",
|
|
86
|
+
"@codingame/monaco-vscode-standalone-languages": "~20.2.1",
|
|
87
|
+
"@codingame/monaco-vscode-standalone-typescript-language-features": "~20.2.1",
|
|
88
88
|
"@json2csv/plainjs": "^7.0.6",
|
|
89
89
|
"@leeoniya/ufuzzy": "^1.0.8",
|
|
90
90
|
"@popperjs/core": "^2.11.6",
|
|
@@ -117,10 +117,10 @@
|
|
|
117
117
|
"lru-cache": "^11.1.0",
|
|
118
118
|
"lucide-svelte": "^0.399.0",
|
|
119
119
|
"minimatch": "^10.0.1",
|
|
120
|
-
"monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~
|
|
121
|
-
"monaco-editor-wrapper": "6.
|
|
120
|
+
"monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~20.2.1",
|
|
121
|
+
"monaco-editor-wrapper": "6.12.0",
|
|
122
122
|
"monaco-graphql": "=1.6.0",
|
|
123
|
-
"monaco-languageclient": "9.
|
|
123
|
+
"monaco-languageclient": "9.11.0",
|
|
124
124
|
"monaco-vim": "^0.4.1",
|
|
125
125
|
"ol": "^7.4.0",
|
|
126
126
|
"openai": "^4.87.1",
|
|
@@ -137,10 +137,10 @@
|
|
|
137
137
|
"svelte-infinite-loading": "^1.4.0",
|
|
138
138
|
"svelte-tiny-virtual-list": "^2.0.5",
|
|
139
139
|
"tailwind-merge": "^1.13.2",
|
|
140
|
-
"vscode": "npm:@codingame/monaco-vscode-extension-api@~
|
|
140
|
+
"vscode": "npm:@codingame/monaco-vscode-extension-api@~20.2.1",
|
|
141
141
|
"vscode-languageclient": "~9.0.1",
|
|
142
142
|
"vscode-uri": "~3.1.0",
|
|
143
|
-
"vscode-ws-jsonrpc": "~3.
|
|
143
|
+
"vscode-ws-jsonrpc": "~3.5.0",
|
|
144
144
|
"windmill-parser-wasm-csharp": "1.510.1",
|
|
145
145
|
"windmill-parser-wasm-go": "1.510.1",
|
|
146
146
|
"windmill-parser-wasm-java": "1.510.1",
|