windmill-components 1.504.6 → 1.511.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/ata/index.js +1 -1
- package/package/components/AppConnectInner.svelte +184 -29
- package/package/components/ArgInput.svelte +33 -103
- package/package/components/AuthSettings.svelte +45 -1
- package/package/components/Dev.svelte +31 -24
- package/package/components/DisplayResult.svelte +53 -26
- package/package/components/DisplayResult.svelte.d.ts +1 -1
- package/package/components/DynSelect.svelte +3 -3
- package/package/components/Editor.svelte +115 -88
- package/package/components/Editor.svelte.d.ts +30 -55
- package/package/components/EditorBar.svelte +2 -2
- package/package/components/ErrorOrRecoveryHandler.svelte +73 -67
- package/package/components/ErrorOrRecoveryHandler.svelte.d.ts +8 -24
- package/package/components/FlowBuilder.svelte +11 -2
- package/package/components/FlowJobResult.svelte +12 -17
- package/package/components/FlowJobResult.svelte.d.ts +5 -18
- package/package/components/FlowPreviewContent.svelte +13 -10
- package/package/components/FlowPreviewContent.svelte.d.ts +1 -1
- package/package/components/FlowPreviewResult.svelte +14 -6
- package/package/components/FlowStatusViewer.svelte +11 -24
- package/package/components/FlowStatusViewer.svelte.d.ts +19 -18
- package/package/components/FlowStatusViewerInner.svelte +110 -131
- package/package/components/FlowStatusViewerInner.svelte.d.ts +20 -18
- package/package/components/GitDiffPreview.svelte +55 -0
- package/package/components/GitDiffPreview.svelte.d.ts +13 -0
- package/package/components/HistoricInputs.svelte +2 -2
- package/package/components/HttpAgentWorkerDrawer.svelte +1 -1
- package/package/components/InitGitRepoPopover.svelte +410 -0
- package/package/components/InitGitRepoPopover.svelte.d.ts +13 -0
- package/package/components/InstanceSetting.svelte +21 -9
- package/package/components/InstanceSettings.svelte +16 -3
- package/package/components/JobLoader.svelte +567 -0
- package/package/components/JobLoader.svelte.d.ts +53 -0
- package/package/components/JobLogs.svelte +6 -4
- package/package/components/JobLogs.svelte.d.ts +5 -18
- package/package/components/JsonEditor.svelte +11 -11
- package/package/components/JsonEditor.svelte.d.ts +14 -56
- package/package/components/Label.svelte +6 -11
- package/package/components/Label.svelte.d.ts +14 -39
- package/package/components/LightweightResourcePicker.svelte +18 -39
- package/package/components/LightweightResourcePicker.svelte.d.ts +6 -22
- package/package/components/LogViewer.svelte +35 -41
- package/package/components/LogViewer.svelte.d.ts +6 -20
- package/package/components/ModulePreviewResultViewer.svelte +3 -1
- package/package/components/ModulePreviewResultViewer.svelte.d.ts +1 -0
- package/package/components/ModuleTest.svelte +16 -11
- package/package/components/NumberTypeNarrowing.svelte +13 -16
- package/package/components/NumberTypeNarrowing.svelte.d.ts +4 -18
- package/package/components/PullGitRepoPopover.svelte +355 -0
- package/package/components/PullGitRepoPopover.svelte.d.ts +18 -0
- package/package/components/ResourceTypePicker.svelte +20 -17
- package/package/components/ResourceTypePicker.svelte.d.ts +7 -6
- package/package/components/S3FilePicker.svelte +5 -3
- package/package/components/SavedInputs.svelte +2 -2
- package/package/components/ScriptBuilder.svelte +4 -3
- package/package/components/ScriptEditor.svelte +34 -31
- package/package/components/ScriptEditor.svelte.d.ts +3 -3
- package/package/components/Section.svelte +7 -20
- package/package/components/Section.svelte.d.ts +20 -47
- package/package/components/ServiceLogsInner.svelte +2 -1
- package/package/components/ServiceLogsInner.svelte.d.ts +1 -0
- package/package/components/SimpleEditor.svelte +4 -4
- package/package/components/SimpleEditor.svelte.d.ts +1 -0
- package/package/components/SqlRepl.svelte +0 -1
- package/package/components/Subsection.svelte +10 -12
- package/package/components/Subsection.svelte.d.ts +15 -39
- package/package/components/UserSettings.svelte +1 -1
- package/package/components/WorkerGroup.svelte +260 -165
- package/package/components/WorkerGroup.svelte.d.ts +2 -0
- package/package/components/WorkerTagPicker.svelte +3 -3
- package/package/components/WorkerTagSelect.svelte +33 -4
- package/package/components/apps/components/buttons/AppButton.svelte +7 -1
- package/package/components/apps/components/buttons/AppButton.svelte.d.ts +1 -0
- package/package/components/apps/components/display/AppCustomComponent.svelte +1 -1
- package/package/components/apps/components/display/AppDisplayComponentByJobId.svelte +16 -11
- package/package/components/apps/components/display/AppJobIdLogComponent.svelte +13 -10
- package/package/components/apps/components/display/AppMenu.svelte +5 -0
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +3 -3
- package/package/components/apps/components/display/dbtable/DeleteRow.svelte +3 -3
- package/package/components/apps/components/display/dbtable/InsertRowRunnable.svelte +3 -3
- package/package/components/apps/components/display/dbtable/UpdateCell.svelte +3 -3
- package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +3 -3
- package/package/components/apps/components/helpers/RunnableComponent.svelte +65 -54
- package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +5 -5
- package/package/components/apps/components/inputs/AppUserResource.svelte +26 -8
- package/package/components/apps/editor/AppEditorHeader.svelte +11 -5
- package/package/components/apps/editor/AppJobsDrawer.svelte +5 -5
- package/package/components/apps/editor/RunnableJobPanel.svelte +4 -4
- package/package/components/apps/editor/component/components.d.ts +12 -0
- package/package/components/apps/editor/component/components.js +19 -7
- package/package/components/assets/AssetButtons.svelte +38 -0
- package/package/components/assets/AssetButtons.svelte.d.ts +15 -0
- package/package/components/assets/AssetsDropdownButton.svelte +60 -72
- package/package/components/assets/AssetsDropdownButton.svelte.d.ts +3 -4
- package/package/components/assets/AssetsUsageDrawer.svelte +10 -10
- package/package/components/assets/JobAssetsViewer.svelte +79 -0
- package/package/components/assets/JobAssetsViewer.svelte.d.ts +7 -0
- package/package/components/assets/README_DEV.md +0 -0
- package/package/components/assets/lib.d.ts +9 -1
- package/package/components/assets/lib.js +48 -7
- package/package/components/common/fileUpload/FileUpload.svelte +126 -84
- package/package/components/common/fileUpload/FileUpload.svelte.d.ts +13 -3
- package/package/components/common/fileUpload/S3ArgInput.svelte +111 -0
- package/package/components/common/fileUpload/S3ArgInput.svelte.d.ts +21 -0
- package/package/components/common/table/ScriptRow.svelte +3 -1
- package/package/components/copilot/AIFormSettings.svelte +3 -4
- package/package/components/copilot/AIFormSettings.svelte.d.ts +5 -19
- package/package/components/copilot/autocomplete/Autocompletor.d.ts +3 -1
- package/package/components/copilot/autocomplete/Autocompletor.js +269 -35
- package/package/components/copilot/autocomplete/request.d.ts +3 -0
- package/package/components/copilot/autocomplete/request.js +15 -7
- package/package/components/copilot/chat/AIChatDisplay.svelte +8 -0
- package/package/components/copilot/chat/AIChatManager.svelte.js +13 -8
- package/package/components/copilot/chat/flow/ModuleAcceptReject.svelte +5 -5
- package/package/components/copilot/chat/flow/core.d.ts +1 -1
- package/package/components/copilot/chat/flow/core.js +2 -38
- package/package/components/copilot/chat/navigator/apiTools.d.ts +8 -0
- package/package/components/copilot/chat/navigator/apiTools.js +95 -15
- package/package/components/copilot/chat/navigator/core.d.ts +1 -1
- package/package/components/copilot/chat/navigator/core.js +2 -1
- package/package/components/copilot/chat/script/core.d.ts +11 -2
- package/package/components/copilot/chat/script/core.js +165 -23
- package/package/components/copilot/chat/shared.d.ts +10 -0
- package/package/components/copilot/chat/shared.js +56 -0
- package/package/components/copilot/lib.d.ts +1 -0
- package/package/components/copilot/lib.js +30 -9
- package/package/components/custom_ui.d.ts +1 -0
- package/package/components/flows/FlowAssetsHandler.svelte +133 -0
- package/package/components/flows/FlowAssetsHandler.svelte.d.ts +14 -0
- package/package/components/flows/content/FlowModuleCache.svelte +4 -4
- package/package/components/flows/content/FlowModuleCache.svelte.d.ts +4 -18
- package/package/components/flows/content/FlowModuleComponent.svelte +16 -19
- package/package/components/flows/content/FlowModuleDeleteAfterUse.svelte +3 -4
- package/package/components/flows/content/FlowModuleDeleteAfterUse.svelte.d.ts +4 -18
- package/package/components/flows/content/FlowModuleSleep.svelte +6 -7
- package/package/components/flows/content/FlowModuleSleep.svelte.d.ts +4 -18
- package/package/components/flows/content/FlowModuleSuspend.svelte +19 -17
- package/package/components/flows/content/FlowModuleSuspend.svelte.d.ts +4 -18
- package/package/components/flows/content/FlowModuleTimeout.svelte +4 -4
- package/package/components/flows/content/FlowModuleTimeout.svelte.d.ts +4 -18
- package/package/components/flows/flowStore.d.ts +1 -1
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +1 -0
- package/package/components/flows/propPicker/OutputPicker.svelte +9 -4
- package/package/components/flows/scheduleUtils.js +1 -1
- package/package/components/flows/types.d.ts +2 -1
- package/package/components/graph/FlowGraphV2.svelte +8 -104
- package/package/components/graph/FlowGraphV2.svelte.d.ts +0 -2
- package/package/components/graph/graphBuilder.svelte.d.ts +6 -3
- package/package/components/graph/graphBuilder.svelte.js +35 -9
- package/package/components/graph/renderers/edges/BaseEdge.svelte +2 -5
- package/package/components/graph/renderers/edges/BaseEdge.svelte.d.ts +1 -0
- package/package/components/graph/renderers/nodes/AssetNode.svelte +23 -20
- package/package/components/graph/renderers/nodes/AssetNode.svelte.d.ts +5 -10
- package/package/components/graph/renderers/nodes/AssetsOverflowedNode.svelte +1 -1
- package/package/components/graph/util.js +1 -1
- package/package/components/home/ItemsList.svelte +2 -0
- package/package/components/icons/AssetGenericIcon.svelte +0 -3
- package/package/components/jobs/JobPreview.svelte +10 -6
- package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +13 -12
- package/package/components/runs/BatchReRunOptionsPane.svelte +5 -1
- package/package/components/runs/JobPreview.svelte +26 -16
- package/package/components/runs/{JobLoader.svelte.d.ts → JobsLoader.svelte.d.ts} +3 -3
- package/package/components/runs/NoWorkerWithTagWarning.svelte +2 -2
- package/package/components/runs/NoWorkerWithTagWarning.svelte.d.ts +1 -0
- package/package/components/runs/RunsFilter.svelte.d.ts +1 -1
- package/package/components/scriptEditor/LogPanel.svelte +3 -2
- package/package/components/script_builder.d.ts +2 -2
- package/package/components/settings/CreateToken.svelte +76 -41
- package/package/components/settings/CreateToken.svelte.d.ts +1 -1
- package/package/components/settings/ScopeSelector.svelte +613 -0
- package/package/components/settings/ScopeSelector.svelte.d.ts +8 -0
- package/package/components/settings/TokenDisplay.svelte +103 -0
- package/package/components/settings/TokenDisplay.svelte.d.ts +10 -0
- package/package/components/settings/TokensTable.svelte +70 -349
- package/package/components/sidebar/CriticalAlertModal.svelte +3 -0
- package/package/components/triggers/DeleteTriggerButton.svelte +1 -1
- package/package/components/triggers/TriggerEditorToolbar.svelte +3 -3
- package/package/components/triggers/TriggerRetriesAndErrorHandler.svelte +55 -0
- package/package/components/triggers/TriggerRetriesAndErrorHandler.svelte.d.ts +13 -0
- package/package/components/triggers/TriggersEditor.svelte +45 -3
- package/package/components/triggers/TriggersWrapper.svelte +2 -2
- package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +47 -6
- package/package/components/triggers/gcp/utils.js +9 -1
- package/package/components/triggers/http/OpenAPISpecGenerator.svelte +3 -2
- package/package/components/triggers/http/RouteEditorConfigSection.svelte +26 -23
- package/package/components/triggers/http/RouteEditorConfigSection.svelte.d.ts +5 -19
- package/package/components/triggers/http/RouteEditorInner.svelte +219 -175
- package/package/components/triggers/http/RouteEditorInner.svelte.d.ts +6 -2
- package/package/components/triggers/http/utils.js +9 -3
- package/package/components/triggers/kafka/KafkaTriggerEditorInner.svelte +47 -6
- package/package/components/triggers/kafka/utils.js +9 -1
- package/package/components/triggers/mqtt/MqttEditorConfigSection.svelte +4 -132
- package/package/components/triggers/mqtt/MqttEditorConfigSection.svelte.d.ts +2 -5
- package/package/components/triggers/mqtt/MqttTriggerEditorInner.svelte +182 -13
- package/package/components/triggers/mqtt/utils.js +9 -1
- package/package/components/triggers/nats/NatsTriggerEditorInner.svelte +47 -6
- package/package/components/triggers/nats/utils.js +9 -1
- package/package/components/triggers/postgres/PostgresTriggerEditorInner.svelte +41 -2
- package/package/components/triggers/postgres/utils.js +9 -1
- package/package/components/triggers/schedules/ScheduleEditorInner.svelte +38 -92
- package/package/components/triggers/sqs/SqsTriggerEditorInner.svelte +47 -6
- package/package/components/triggers/sqs/utils.js +9 -1
- package/package/components/triggers/utils.js +12 -0
- package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +47 -6
- package/package/components/triggers/websocket/utils.js +11 -1
- package/package/components/workspaceSettings/AISettings.svelte +0 -2
- package/package/components/workspaceSettings/FilterList.svelte +56 -0
- package/package/components/workspaceSettings/FilterList.svelte.d.ts +8 -0
- package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +785 -0
- package/package/components/workspaceSettings/GitSyncFilterSettings.svelte.d.ts +18 -0
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +305 -23
- package/package/gen/schemas.gen.js +305 -23
- package/package/gen/services.gen.d.ts +33 -1
- package/package/gen/services.gen.js +66 -2
- package/package/gen/types.gen.d.ts +216 -11
- package/package/history.svelte.js +0 -2
- package/package/hub.d.ts +1 -0
- package/package/hubPaths.json +5 -2
- package/package/infer.js +16 -10
- package/package/svelte5Utils.svelte.d.ts +1 -0
- package/package/svelte5Utils.svelte.js +25 -18
- package/package/toast.js +10 -0
- package/package/utils.d.ts +3 -2
- package/package/utils.js +20 -5
- package/package.json +11 -11
- package/package/components/ResultJobLoader.svelte +0 -219
- package/package/components/ResultJobLoader.svelte.d.ts +0 -52
- package/package/components/TestJobLoader.svelte +0 -274
- package/package/components/TestJobLoader.svelte.d.ts +0 -43
- package/package/components/icons/AssetVarIcon.svelte +0 -31
- package/package/components/icons/AssetVarIcon.svelte.d.ts +0 -9
- /package/package/components/runs/{JobLoader.svelte → JobsLoader.svelte} +0 -0
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<script lang="ts">import { onDestroy, tick } from 'svelte';
|
|
5
5
|
import { fade } from 'svelte/transition';
|
|
6
6
|
import {} from '../../gen';
|
|
7
|
-
import
|
|
7
|
+
import JobLoader from '../JobLoader.svelte';
|
|
8
8
|
import DisplayResult from '../DisplayResult.svelte';
|
|
9
9
|
import JobArgs from '../JobArgs.svelte';
|
|
10
10
|
import { writable } from 'svelte/store';
|
|
@@ -19,7 +19,7 @@ let job = $state(undefined);
|
|
|
19
19
|
let hovered = $state(false);
|
|
20
20
|
let timeout;
|
|
21
21
|
let result = $state();
|
|
22
|
-
let
|
|
22
|
+
let jobLoader = $state();
|
|
23
23
|
let loaded = false;
|
|
24
24
|
let wrapper = $state();
|
|
25
25
|
let popupOnTop = $state(true);
|
|
@@ -31,7 +31,11 @@ async function instantOpen() {
|
|
|
31
31
|
openStore.set(id);
|
|
32
32
|
if (!loaded) {
|
|
33
33
|
await tick();
|
|
34
|
-
|
|
34
|
+
jobLoader?.watchJob(id, {
|
|
35
|
+
done(job) {
|
|
36
|
+
onDone(job);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
35
39
|
}
|
|
36
40
|
}
|
|
37
41
|
else {
|
|
@@ -58,8 +62,8 @@ function staggeredClose() {
|
|
|
58
62
|
close();
|
|
59
63
|
}, loaded ? 100 : 300);
|
|
60
64
|
}
|
|
61
|
-
function onDone(
|
|
62
|
-
job =
|
|
65
|
+
function onDone(njob) {
|
|
66
|
+
job = njob;
|
|
63
67
|
result = job['result'];
|
|
64
68
|
loaded = true;
|
|
65
69
|
}
|
|
@@ -70,7 +74,7 @@ onDestroy(() => {
|
|
|
70
74
|
|
|
71
75
|
<svelte:window onkeydown={({ key }) => ['Escape', 'Esc'].includes(key) && close()} />
|
|
72
76
|
{#if hovered}
|
|
73
|
-
<
|
|
77
|
+
<JobLoader bind:job bind:this={jobLoader} />
|
|
74
78
|
{/if}
|
|
75
79
|
|
|
76
80
|
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
@@ -9,7 +9,7 @@ import RawAppInputsSpecEditor from './RawAppInputsSpecEditor.svelte';
|
|
|
9
9
|
import SplitPanesWrapper from '../splitPanes/SplitPanesWrapper.svelte';
|
|
10
10
|
import SchemaForm from '../SchemaForm.svelte';
|
|
11
11
|
import RunnableJobPanelInner from '../apps/editor/RunnableJobPanelInner.svelte';
|
|
12
|
-
import
|
|
12
|
+
import JobLoader from '../JobLoader.svelte';
|
|
13
13
|
let { runnable = $bindable(), id, appPath } = $props();
|
|
14
14
|
const dispatch = createEventDispatcher();
|
|
15
15
|
async function fork(nrunnable) {
|
|
@@ -37,7 +37,7 @@ function getSchema(runnable) {
|
|
|
37
37
|
}
|
|
38
38
|
return {};
|
|
39
39
|
}
|
|
40
|
-
let
|
|
40
|
+
let jobLoader = $state();
|
|
41
41
|
let testJob = $state();
|
|
42
42
|
let testIsLoading = $state(false);
|
|
43
43
|
let scriptProgress = $state(0);
|
|
@@ -54,15 +54,15 @@ function onFieldsChange(fields) {
|
|
|
54
54
|
async function testPreview() {
|
|
55
55
|
selectedTab = 'test';
|
|
56
56
|
if (runnable?.type == 'runnableByName' && runnable.inlineScript?.language != 'frontend') {
|
|
57
|
-
await
|
|
57
|
+
await jobLoader?.runPreview(appPath + '/' + id, runnable.inlineScript?.content ?? '', runnable.inlineScript?.language, args, undefined);
|
|
58
58
|
}
|
|
59
59
|
else if (runnable?.type == 'runnableByPath') {
|
|
60
|
-
if (
|
|
60
|
+
if (jobLoader && runnable?.type == 'runnableByPath') {
|
|
61
61
|
if (runnable.runType == 'flow') {
|
|
62
|
-
await
|
|
62
|
+
await jobLoader.runFlowByPath(runnable.path, args);
|
|
63
63
|
}
|
|
64
64
|
else if (runnable.runType == 'script' || runnable.runType == 'hubscript') {
|
|
65
|
-
await
|
|
65
|
+
await jobLoader.runScriptByPath(runnable.path, args);
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
}
|
|
@@ -74,9 +74,10 @@ $effect(() => {
|
|
|
74
74
|
});
|
|
75
75
|
</script>
|
|
76
76
|
|
|
77
|
-
<
|
|
77
|
+
<JobLoader
|
|
78
|
+
noCode={true}
|
|
78
79
|
bind:scriptProgress
|
|
79
|
-
bind:this={
|
|
80
|
+
bind:this={jobLoader}
|
|
80
81
|
bind:isLoading={testIsLoading}
|
|
81
82
|
bind:job={testJob}
|
|
82
83
|
/>
|
|
@@ -97,8 +98,8 @@ $effect(() => {
|
|
|
97
98
|
isLoading={testIsLoading}
|
|
98
99
|
onRun={testPreview}
|
|
99
100
|
onCancel={async () => {
|
|
100
|
-
if (
|
|
101
|
-
await
|
|
101
|
+
if (jobLoader) {
|
|
102
|
+
await jobLoader.cancelJob()
|
|
102
103
|
}
|
|
103
104
|
}}
|
|
104
105
|
on:delete
|
|
@@ -116,8 +117,8 @@ $effect(() => {
|
|
|
116
117
|
isLoading={testIsLoading}
|
|
117
118
|
onRun={testPreview}
|
|
118
119
|
onCancel={async () => {
|
|
119
|
-
if (
|
|
120
|
-
await
|
|
120
|
+
if (jobLoader) {
|
|
121
|
+
await jobLoader.cancelJob()
|
|
121
122
|
}
|
|
122
123
|
}}
|
|
123
124
|
/>
|
|
@@ -12,6 +12,7 @@ import Alert from '../common/alert/Alert.svelte';
|
|
|
12
12
|
import { batchReRunDefaultPropertyExpr, buildExtraLibForBatchReruns, mergeSchemasForBatchReruns } from '../jobs/batchReruns';
|
|
13
13
|
import Toggle from '../Toggle.svelte';
|
|
14
14
|
import { TriangleAlert } from 'lucide-svelte';
|
|
15
|
+
import { readFieldsRecursively } from '../../utils';
|
|
15
16
|
let { selectedIds, options = $bindable() } = $props();
|
|
16
17
|
let selected = $state();
|
|
17
18
|
$effect(() => {
|
|
@@ -103,7 +104,10 @@ function propertyAlwaysHasSameType(propertyName, group) {
|
|
|
103
104
|
const selectedUsesLatestSchema = $derived(!!selected &&
|
|
104
105
|
(selected?.kind === 'flow' ||
|
|
105
106
|
(options[selected.kind][selected.script_path]?.use_latest_version ?? false)));
|
|
106
|
-
const jobGroupsPromise = $derived(
|
|
107
|
+
const jobGroupsPromise = $derived.by(() => {
|
|
108
|
+
readFieldsRecursively(selectedIds);
|
|
109
|
+
return untrack(() => fetchJobGroups());
|
|
110
|
+
});
|
|
107
111
|
</script>
|
|
108
112
|
|
|
109
113
|
<div class="flex-1 flex flex-col">
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script lang="ts">import { base } from '../../base';
|
|
2
2
|
import { ConcurrencyGroupsService } from '../../gen';
|
|
3
|
-
import
|
|
3
|
+
import JobLoader from '../JobLoader.svelte';
|
|
4
4
|
import DisplayResult from '../DisplayResult.svelte';
|
|
5
5
|
import JobArgs from '../JobArgs.svelte';
|
|
6
6
|
import LogViewer from '../LogViewer.svelte';
|
|
@@ -14,13 +14,14 @@ import { workspaceStore } from '../../stores';
|
|
|
14
14
|
import WorkflowTimeline from '../WorkflowTimeline.svelte';
|
|
15
15
|
import Popover from '../Popover.svelte';
|
|
16
16
|
import { isFlowPreview, isScriptPreview, truncateRev } from '../../utils';
|
|
17
|
-
import { createEventDispatcher, untrack } from 'svelte';
|
|
17
|
+
import { createEventDispatcher, setContext, untrack } from 'svelte';
|
|
18
18
|
import { ListFilter } from 'lucide-svelte';
|
|
19
|
+
import FlowAssetsHandler, { initFlowGraphAssetsCtx } from '../flows/FlowAssetsHandler.svelte';
|
|
20
|
+
import JobAssetsViewer from '../assets/JobAssetsViewer.svelte';
|
|
19
21
|
let { id, blankLink = false, workspace } = $props();
|
|
20
22
|
let job = $state(undefined);
|
|
21
23
|
let result = $state();
|
|
22
|
-
function onDone(
|
|
23
|
-
job = event.detail;
|
|
24
|
+
function onDone(job) {
|
|
24
25
|
result = job['result'];
|
|
25
26
|
}
|
|
26
27
|
let currentJob = $state(undefined);
|
|
@@ -31,6 +32,7 @@ async function getConcurrencyKey(job) {
|
|
|
31
32
|
concurrencyKey = await ConcurrencyGroupsService.getConcurrencyKey({ id: job.id });
|
|
32
33
|
}
|
|
33
34
|
let viewTab = $state('result');
|
|
35
|
+
setContext('FlowGraphAssetContext', initFlowGraphAssetsCtx({ getModules: () => job?.raw_flow?.modules ?? [] }));
|
|
34
36
|
function asWorkflowStatus(x) {
|
|
35
37
|
return x;
|
|
36
38
|
}
|
|
@@ -41,24 +43,24 @@ $effect(() => {
|
|
|
41
43
|
}
|
|
42
44
|
});
|
|
43
45
|
$effect(() => {
|
|
44
|
-
id &&
|
|
46
|
+
id &&
|
|
47
|
+
jobLoader &&
|
|
48
|
+
untrack(() => jobLoader?.watchJob(id, {
|
|
49
|
+
done(x) {
|
|
50
|
+
onDone(x);
|
|
51
|
+
}
|
|
52
|
+
}));
|
|
45
53
|
});
|
|
46
54
|
$effect(() => {
|
|
47
|
-
job?.logs == undefined && job && viewTab == 'logs' && untrack(() =>
|
|
55
|
+
job?.logs == undefined && job && viewTab == 'logs' && untrack(() => jobLoader?.getLogs());
|
|
48
56
|
});
|
|
49
57
|
$effect(() => {
|
|
50
58
|
job?.id && lastJobId !== job.id && untrack(() => job && getConcurrencyKey(job));
|
|
51
59
|
});
|
|
52
|
-
let
|
|
60
|
+
let jobLoader = $state(undefined);
|
|
53
61
|
</script>
|
|
54
62
|
|
|
55
|
-
<
|
|
56
|
-
lazyLogs
|
|
57
|
-
workspaceOverride={workspace}
|
|
58
|
-
bind:job={currentJob}
|
|
59
|
-
bind:this={testJobLoader}
|
|
60
|
-
on:done={onDone}
|
|
61
|
-
/>
|
|
63
|
+
<JobLoader lazyLogs workspaceOverride={workspace} bind:job={currentJob} bind:this={jobLoader} />
|
|
62
64
|
|
|
63
65
|
<div class="p-4 flex flex-col gap-2 items-start h-full">
|
|
64
66
|
{#if job}
|
|
@@ -165,9 +167,9 @@ let testJobLoader = $state(undefined);
|
|
|
165
167
|
{/if}
|
|
166
168
|
|
|
167
169
|
<div class=" w-full rounded-md min-h-full">
|
|
168
|
-
{#if job?.
|
|
170
|
+
{#if job?.workflow_as_code_status}
|
|
169
171
|
<WorkflowTimeline
|
|
170
|
-
flow_status={asWorkflowStatus(job.
|
|
172
|
+
flow_status={asWorkflowStatus(job.workflow_as_code_status)}
|
|
171
173
|
flowDone={job.type == 'CompletedJob'}
|
|
172
174
|
/>
|
|
173
175
|
{/if}
|
|
@@ -176,6 +178,7 @@ let testJobLoader = $state(undefined);
|
|
|
176
178
|
<Tabs bind:selected={viewTab}>
|
|
177
179
|
<Tab size="xs" value="result">Result</Tab>
|
|
178
180
|
<Tab size="xs" value="logs">Logs</Tab>
|
|
181
|
+
<Tab size="xs" value="assets">Assets</Tab>
|
|
179
182
|
{#if isScriptPreview(job?.job_kind)}
|
|
180
183
|
<Tab size="xs" value="code">Code</Tab>
|
|
181
184
|
{/if}
|
|
@@ -189,6 +192,8 @@ let testJobLoader = $state(undefined);
|
|
|
189
192
|
<FlowStatusViewer jobId={job.id} workspaceId={job.workspace_id} />
|
|
190
193
|
</div>
|
|
191
194
|
</div>
|
|
195
|
+
{:else if viewTab == 'assets'}
|
|
196
|
+
<JobAssetsViewer {job} />
|
|
192
197
|
{:else}
|
|
193
198
|
<div class="flex flex-col border rounded-md p-2 mt-2 h-full overflow-auto">
|
|
194
199
|
{#if viewTab == 'logs'}
|
|
@@ -247,3 +252,8 @@ let testJobLoader = $state(undefined);
|
|
|
247
252
|
</div>
|
|
248
253
|
{/if}
|
|
249
254
|
</div>
|
|
255
|
+
<FlowAssetsHandler
|
|
256
|
+
modules={job?.raw_flow?.modules ?? []}
|
|
257
|
+
enableDbExplore
|
|
258
|
+
enablePathScriptAndFlowAssets
|
|
259
|
+
/>
|
|
@@ -40,9 +40,9 @@ interface Props {
|
|
|
40
40
|
perPage?: number | undefined;
|
|
41
41
|
allowWildcards?: boolean;
|
|
42
42
|
}
|
|
43
|
-
declare const
|
|
43
|
+
declare const JobsLoader: import("svelte").Component<Props, {
|
|
44
44
|
loadExtraJobs: () => Promise<boolean>;
|
|
45
45
|
loadJobs: (nMinTs: string | undefined, nMaxTs: string | undefined, reset: boolean, shouldGetCount?: boolean) => Promise<void>;
|
|
46
46
|
}, "jobs" | "loading" | "minTs" | "maxTs" | "jobKinds" | "queue_count" | "suspended_count" | "completedJobs" | "externalJobs" | "extendedJobs">;
|
|
47
|
-
type
|
|
48
|
-
export default
|
|
47
|
+
type JobsLoader = ReturnType<typeof JobsLoader>;
|
|
48
|
+
export default JobsLoader;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { AlertTriangle } from 'lucide-svelte';
|
|
3
3
|
import Popover from '../Popover.svelte';
|
|
4
4
|
import { onDestroy } from 'svelte';
|
|
5
|
-
let { tag } = $props();
|
|
5
|
+
let { tag, tagLabel = undefined } = $props();
|
|
6
6
|
let noWorkerWithTag = $state(false);
|
|
7
7
|
let timeout = undefined;
|
|
8
8
|
let visible = true;
|
|
@@ -35,7 +35,7 @@ onDestroy(() => {
|
|
|
35
35
|
<Popover notClickable placement="top">
|
|
36
36
|
<AlertTriangle size={16} class="text-yellow-500" />
|
|
37
37
|
{#snippet text()}
|
|
38
|
-
No worker with tag <b>{tag}</b> is currently running.
|
|
38
|
+
No worker with {tagLabel ?? 'tag'} <b>{tag}</b> is currently running.
|
|
39
39
|
{/snippet}
|
|
40
40
|
</Popover>
|
|
41
41
|
{/if}
|
|
@@ -40,6 +40,6 @@ declare const RunsFilter: $$__sveltets_2_IsomorphicComponent<Props, {
|
|
|
40
40
|
successChange: CustomEvent<any>;
|
|
41
41
|
} & {
|
|
42
42
|
[evt: string]: CustomEvent<any>;
|
|
43
|
-
}, {}, {}, "path" | "tag" | "success" | "worker" | "
|
|
43
|
+
}, {}, {}, "path" | "tag" | "success" | "worker" | "label" | "folder" | "user" | "isSkipped" | "argFilter" | "resultFilter" | "schedulePath" | "jobKindsCat" | "concurrencyKey" | "argError" | "resultError" | "allWorkspaces" | "allowWildcards" | "filterBy">;
|
|
44
44
|
type RunsFilter = InstanceType<typeof RunsFilter>;
|
|
45
45
|
export default RunsFilter;
|
|
@@ -76,10 +76,10 @@ let forceJson = $state(false);
|
|
|
76
76
|
{#if selectedTab === 'logs'}
|
|
77
77
|
<SplitPanesWrapper>
|
|
78
78
|
<Splitpanes horizontal>
|
|
79
|
-
{#if previewJob?.
|
|
79
|
+
{#if previewJob?.workflow_as_code_status}
|
|
80
80
|
<Pane class="relative">
|
|
81
81
|
<WorkflowTimeline
|
|
82
|
-
flow_status={asWorkflowStatus(previewJob.
|
|
82
|
+
flow_status={asWorkflowStatus(previewJob.workflow_as_code_status)}
|
|
83
83
|
flowDone={previewJob.type == 'CompletedJob'}
|
|
84
84
|
/>
|
|
85
85
|
</Pane>
|
|
@@ -93,6 +93,7 @@ let forceJson = $state(false);
|
|
|
93
93
|
isLoading={previewJob?.['running'] == false && previewIsLoading}
|
|
94
94
|
tag={previewJob?.tag}
|
|
95
95
|
download={customUi?.disableDownload !== true}
|
|
96
|
+
tagLabel={customUi?.tagLabel}
|
|
96
97
|
/>
|
|
97
98
|
</Pane>
|
|
98
99
|
<Pane>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { NewScript } from '../gen';
|
|
2
|
-
import type {
|
|
2
|
+
import type { AssetWithAltAccessType } from './assets/lib';
|
|
3
3
|
import type { ScriptBuilderWhitelabelCustomUi } from './custom_ui';
|
|
4
4
|
import type { DiffDrawerI } from './diff_drawer';
|
|
5
5
|
import type { ScriptBuilderFunctionExports } from './scriptBuilder';
|
|
@@ -8,7 +8,7 @@ import type { NewScriptWithDraftAndDraftTriggers, Trigger } from './triggers/uti
|
|
|
8
8
|
export interface ScriptBuilderProps {
|
|
9
9
|
script: NewScript & {
|
|
10
10
|
draft_triggers?: Trigger[];
|
|
11
|
-
|
|
11
|
+
assets?: AssetWithAltAccessType[];
|
|
12
12
|
};
|
|
13
13
|
disableAi?: boolean;
|
|
14
14
|
fullyLoaded?: boolean;
|
|
@@ -4,12 +4,13 @@ import ToggleButton from '../common/toggleButton-v2/ToggleButton.svelte';
|
|
|
4
4
|
import ToggleButtonGroup from '../common/toggleButton-v2/ToggleButtonGroup.svelte';
|
|
5
5
|
import { triggerableByAI } from '../../actions/triggerableByAI.svelte';
|
|
6
6
|
import Toggle from '../Toggle.svelte';
|
|
7
|
-
import { UserService } from '../../gen';
|
|
8
|
-
import { copyToClipboard } from '../../utils';
|
|
9
|
-
import { Clipboard } from 'lucide-svelte';
|
|
10
|
-
import ClipboardPanel from '../details/ClipboardPanel.svelte';
|
|
7
|
+
import { IntegrationService, UserService } from '../../gen';
|
|
11
8
|
import { createEventDispatcher } from 'svelte';
|
|
12
|
-
|
|
9
|
+
import MultiSelect from '../select/MultiSelect.svelte';
|
|
10
|
+
import { safeSelectItems } from '../select/utils.svelte';
|
|
11
|
+
import TokenDisplay from './TokenDisplay.svelte';
|
|
12
|
+
import ScopeSelector from './ScopeSelector.svelte';
|
|
13
|
+
let { showMcpMode = false, defaultNewTokenWorkspace, scopes, onTokenCreated, newTokenLabel = $bindable(undefined) } = $props();
|
|
13
14
|
let newToken = $state(undefined);
|
|
14
15
|
let newMcpToken = $state(undefined);
|
|
15
16
|
let newTokenExpiration = $state(undefined);
|
|
@@ -19,10 +20,9 @@ let mcpCreationMode = $state(false);
|
|
|
19
20
|
let newMcpScope = $state('favorites');
|
|
20
21
|
let loadingApps = $state(false);
|
|
21
22
|
let errorFetchApps = $state(false);
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
23
|
+
let allApps = $state([]);
|
|
24
|
+
let customScopes = $state([]);
|
|
25
|
+
let showCustomScopes = $state(false);
|
|
26
26
|
const dispatch = createEventDispatcher();
|
|
27
27
|
function ensureCurrentWorkspaceIncluded(workspacesList, currentWorkspace) {
|
|
28
28
|
if (!currentWorkspace) {
|
|
@@ -47,6 +47,9 @@ async function createToken(mcpMode = false) {
|
|
|
47
47
|
tokenScopes.push(`mcp:hub:${newMcpApps.join(',')}`);
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
|
+
else if (showCustomScopes && customScopes.length > 0) {
|
|
51
|
+
tokenScopes = customScopes;
|
|
52
|
+
}
|
|
50
53
|
const createdToken = await UserService.createToken({
|
|
51
54
|
requestBody: {
|
|
52
55
|
label: newTokenLabel,
|
|
@@ -62,8 +65,8 @@ async function createToken(mcpMode = false) {
|
|
|
62
65
|
newToken = `${createdToken}`;
|
|
63
66
|
}
|
|
64
67
|
dispatch('tokenCreated', newToken ?? newMcpToken);
|
|
65
|
-
if (
|
|
66
|
-
|
|
68
|
+
if (onTokenCreated) {
|
|
69
|
+
onTokenCreated(newToken ?? newMcpToken ?? '');
|
|
67
70
|
}
|
|
68
71
|
mcpCreationMode = false;
|
|
69
72
|
}
|
|
@@ -73,37 +76,36 @@ async function createToken(mcpMode = false) {
|
|
|
73
76
|
}
|
|
74
77
|
const workspaces = $derived(ensureCurrentWorkspaceIncluded($userWorkspaces, $workspaceStore));
|
|
75
78
|
const mcpBaseUrl = $derived(`${window.location.origin}/api/mcp/w/${newTokenWorkspace}/sse?token=`);
|
|
79
|
+
$effect(() => {
|
|
80
|
+
if (mcpCreationMode) {
|
|
81
|
+
getAllApps();
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
newMcpApps = [];
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
async function getAllApps() {
|
|
88
|
+
if (allApps.length > 0) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
try {
|
|
92
|
+
loadingApps = true;
|
|
93
|
+
allApps = (await IntegrationService.listHubIntegrations({
|
|
94
|
+
kind: 'script'
|
|
95
|
+
})).map((x) => x.name);
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
console.error('Hub is not available');
|
|
99
|
+
allApps = [];
|
|
100
|
+
errorFetchApps = true;
|
|
101
|
+
}
|
|
102
|
+
finally {
|
|
103
|
+
loadingApps = false;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
76
106
|
</script>
|
|
77
107
|
|
|
78
108
|
<div>
|
|
79
|
-
{#if newToken}
|
|
80
|
-
<div
|
|
81
|
-
class="border rounded-md mb-6 px-2 py-2 bg-green-50 dark:bg-green-200 dark:text-green-800 flex flex-row flex-wrap"
|
|
82
|
-
>
|
|
83
|
-
<div>
|
|
84
|
-
Added token: <button onclick={handleCopyClick} class="inline-flex gap-2 items-center">
|
|
85
|
-
{newToken}
|
|
86
|
-
<Clipboard size={12} />
|
|
87
|
-
</button>
|
|
88
|
-
</div>
|
|
89
|
-
<div class="pt-1 text-xs ml-2">
|
|
90
|
-
Make sure to copy your personal access token now. You won't be able to see it again!
|
|
91
|
-
</div>
|
|
92
|
-
</div>
|
|
93
|
-
{/if}
|
|
94
|
-
|
|
95
|
-
{#if newMcpToken}
|
|
96
|
-
<div
|
|
97
|
-
class="border rounded-md mb-6 px-2 py-2 bg-green-50 dark:bg-green-200 dark:text-green-800 flex flex-row flex-wrap"
|
|
98
|
-
>
|
|
99
|
-
<p class="text-sm mb-2">New MCP URL:</p>
|
|
100
|
-
<ClipboardPanel content={`${mcpBaseUrl}${newMcpToken}`} />
|
|
101
|
-
<p class="pt-1 text-xs">
|
|
102
|
-
Make sure to copy this URL now. You won't be able to see it again!
|
|
103
|
-
</p>
|
|
104
|
-
</div>
|
|
105
|
-
{/if}
|
|
106
|
-
|
|
107
109
|
<div class="py-3 px-3 border rounded-md mb-6 bg-surface-secondary min-w-min">
|
|
108
110
|
<h3 class="pb-3 font-semibold">Add a new token</h3>
|
|
109
111
|
|
|
@@ -149,7 +151,27 @@ const mcpBaseUrl = $derived(`${window.location.origin}/api/mcp/w/${newTokenWorks
|
|
|
149
151
|
</div>
|
|
150
152
|
{/if}
|
|
151
153
|
|
|
152
|
-
|
|
154
|
+
{#if !mcpCreationMode && (!scopes || scopes.length === 0)}
|
|
155
|
+
<div class="flex flex-col gap-2">
|
|
156
|
+
<Toggle
|
|
157
|
+
checked={showCustomScopes}
|
|
158
|
+
on:change={(e) => {
|
|
159
|
+
showCustomScopes = e.detail
|
|
160
|
+
}}
|
|
161
|
+
options={{
|
|
162
|
+
right: 'Limit token permissions',
|
|
163
|
+
rightTooltip:
|
|
164
|
+
'By default, tokens have full API access. Enable this to restrict the token to specific scopes.'
|
|
165
|
+
}}
|
|
166
|
+
size="xs"
|
|
167
|
+
/>
|
|
168
|
+
{#if showCustomScopes}
|
|
169
|
+
<ScopeSelector bind:selectedScopes={customScopes} />
|
|
170
|
+
{/if}
|
|
171
|
+
</div>
|
|
172
|
+
{/if}
|
|
173
|
+
|
|
174
|
+
<div class="mt-2 grid grid-cols-1 md:grid-cols-2 gap-4">
|
|
153
175
|
{#if mcpCreationMode}
|
|
154
176
|
<div>
|
|
155
177
|
<span class="block mb-1">Scope</span>
|
|
@@ -178,7 +200,12 @@ const mcpBaseUrl = $derived(`${window.location.origin}/api/mcp/w/${newTokenWorks
|
|
|
178
200
|
{:else if errorFetchApps}
|
|
179
201
|
<div>Error fetching apps</div>
|
|
180
202
|
{:else}
|
|
181
|
-
|
|
203
|
+
<MultiSelect
|
|
204
|
+
items={safeSelectItems(allApps)}
|
|
205
|
+
placeholder="Select apps"
|
|
206
|
+
bind:value={newMcpApps}
|
|
207
|
+
class="!bg-surface"
|
|
208
|
+
/>
|
|
182
209
|
{/if}
|
|
183
210
|
</div>
|
|
184
211
|
|
|
@@ -232,4 +259,12 @@ const mcpBaseUrl = $derived(`${window.location.origin}/api/mcp/w/${newTokenWorks
|
|
|
232
259
|
</Button>
|
|
233
260
|
</div>
|
|
234
261
|
</div>
|
|
262
|
+
|
|
263
|
+
{#if newToken}
|
|
264
|
+
<TokenDisplay token={newToken} type="token" />
|
|
265
|
+
{/if}
|
|
266
|
+
|
|
267
|
+
{#if newMcpToken}
|
|
268
|
+
<TokenDisplay token={newMcpToken} type="mcp" mcpUrl={`${mcpBaseUrl}${newMcpToken}`} />
|
|
269
|
+
{/if}
|
|
235
270
|
</div>
|
|
@@ -4,7 +4,7 @@ interface Props {
|
|
|
4
4
|
newTokenLabel?: string;
|
|
5
5
|
defaultNewTokenWorkspace?: string;
|
|
6
6
|
scopes?: string[];
|
|
7
|
-
|
|
7
|
+
onTokenCreated?: (token: string) => void;
|
|
8
8
|
displayCreateToken?: boolean;
|
|
9
9
|
}
|
|
10
10
|
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|