windmill-components 1.504.5 → 1.510.1
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 +161 -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 +7 -4
- 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/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/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/PullGitRepoPopover.svelte +355 -0
- package/package/components/PullGitRepoPopover.svelte.d.ts +18 -0
- 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/ServiceLogsInner.svelte +2 -1
- package/package/components/ServiceLogsInner.svelte.d.ts +1 -0
- package/package/components/UserSettings.svelte +1 -1
- package/package/components/WorkerTagSelect.svelte +32 -3
- 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/autocomplete/Autocompletor.js +23 -5
- 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 +135 -1
- 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 +27 -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/FlowModuleComponent.svelte +16 -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/schema/AddPropertyFormV2.svelte +42 -33
- package/package/components/schema/AddPropertyFormV2.svelte.d.ts +1 -0
- package/package/components/schema/AddPropertyV2.svelte +2 -1
- package/package/components/schema/AddPropertyV2.svelte.d.ts +1 -0
- package/package/components/schema/EditableSchemaWrapper.svelte +3 -1
- package/package/components/schema/editable_schema_wrapper.d.ts +3 -0
- 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 +43 -2
- package/package/components/triggers/gcp/utils.js +9 -1
- package/package/components/triggers/http/OpenAPISpecGenerator.svelte +1 -0
- package/package/components/triggers/http/RouteEditorInner.svelte +208 -164
- 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 +43 -2
- 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 +178 -9
- package/package/components/triggers/mqtt/utils.js +9 -1
- package/package/components/triggers/nats/NatsTriggerEditorInner.svelte +43 -2
- 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 +34 -88
- package/package/components/triggers/sqs/SqsTriggerEditorInner.svelte +43 -2
- package/package/components/triggers/sqs/utils.js +9 -1
- package/package/components/triggers/utils.js +12 -0
- package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +43 -2
- 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
|
@@ -3,7 +3,7 @@ import { Button } from '../common';
|
|
|
3
3
|
import { CornerDownLeft } from 'lucide-svelte';
|
|
4
4
|
import Popover from '../meltComponents/Popover.svelte';
|
|
5
5
|
let name = $state('');
|
|
6
|
-
let { customName = undefined, disabled = false, trigger } = $props();
|
|
6
|
+
let { customName = undefined, disabled = false, trigger, noPopover } = $props();
|
|
7
7
|
const dispatch = createEventDispatcher();
|
|
8
8
|
function addField() {
|
|
9
9
|
dispatch('add', { name });
|
|
@@ -12,37 +12,46 @@ function addField() {
|
|
|
12
12
|
const trigger_render = $derived(trigger);
|
|
13
13
|
</script>
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
placeholder={`${customName ?? 'Field'} name`}
|
|
24
|
-
onkeydown={(event) => {
|
|
25
|
-
if (event.key === 'Enter') {
|
|
26
|
-
addField()
|
|
27
|
-
close()
|
|
28
|
-
}
|
|
29
|
-
}}
|
|
30
|
-
{disabled}
|
|
31
|
-
/>
|
|
32
|
-
<Button
|
|
33
|
-
variant="contained"
|
|
34
|
-
color="dark"
|
|
35
|
-
size="xs"
|
|
36
|
-
id="flow-editor-add-property"
|
|
37
|
-
on:click={() => {
|
|
15
|
+
{#snippet form({ close })}
|
|
16
|
+
<div class="flex flex-row gap-2 p-2 rounded-md">
|
|
17
|
+
<input
|
|
18
|
+
bind:value={name}
|
|
19
|
+
class="max-w-80"
|
|
20
|
+
placeholder={`${customName ?? 'Field'} name`}
|
|
21
|
+
onkeydown={(event) => {
|
|
22
|
+
if (event.key === 'Enter') {
|
|
38
23
|
addField()
|
|
39
24
|
close()
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
25
|
+
}
|
|
26
|
+
}}
|
|
27
|
+
{disabled}
|
|
28
|
+
/>
|
|
29
|
+
<Button
|
|
30
|
+
variant="contained"
|
|
31
|
+
color="dark"
|
|
32
|
+
size="xs"
|
|
33
|
+
id="flow-editor-add-property"
|
|
34
|
+
on:click={() => {
|
|
35
|
+
addField()
|
|
36
|
+
close()
|
|
37
|
+
}}
|
|
38
|
+
disabled={!name || disabled}
|
|
39
|
+
shortCut={{ Icon: CornerDownLeft, withoutModifier: true }}
|
|
40
|
+
>
|
|
41
|
+
Add {customName ? customName.toLowerCase() : 'field'}
|
|
42
|
+
</Button>
|
|
43
|
+
</div>
|
|
44
|
+
{/snippet}
|
|
45
|
+
|
|
46
|
+
{#if noPopover}
|
|
47
|
+
{@render form({ close: () => {} })}
|
|
48
|
+
{:else}
|
|
49
|
+
<Popover closeButton={false} class="w-full" {disabled}>
|
|
50
|
+
{#snippet trigger()}
|
|
51
|
+
{@render trigger_render?.()}
|
|
52
|
+
{/snippet}
|
|
53
|
+
{#snippet content({ close })}
|
|
54
|
+
{@render form({ close })}
|
|
55
|
+
{/snippet}
|
|
56
|
+
</Popover>
|
|
57
|
+
{/if}
|
|
@@ -2,6 +2,7 @@ interface Props {
|
|
|
2
2
|
customName?: string | undefined;
|
|
3
3
|
disabled?: boolean;
|
|
4
4
|
trigger?: import('svelte').Snippet;
|
|
5
|
+
noPopover?: boolean;
|
|
5
6
|
}
|
|
6
7
|
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> {
|
|
7
8
|
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { emptySchema, sendUserToast } from '../../utils';
|
|
3
3
|
import { createEventDispatcher } from 'svelte';
|
|
4
4
|
import AddPropertyFormV2 from './AddPropertyFormV2.svelte';
|
|
5
|
-
let { schema = $bindable(emptySchema()), trigger } = $props();
|
|
5
|
+
let { schema = $bindable(emptySchema()), trigger, noPopover } = $props();
|
|
6
6
|
export const DEFAULT_PROPERTY = {
|
|
7
7
|
selectedType: 'string',
|
|
8
8
|
description: '',
|
|
@@ -130,6 +130,7 @@ const trigger_render = $derived(trigger);
|
|
|
130
130
|
</script>
|
|
131
131
|
|
|
132
132
|
<AddPropertyFormV2
|
|
133
|
+
{noPopover}
|
|
133
134
|
on:add={(e) => {
|
|
134
135
|
try {
|
|
135
136
|
handleAddOrEditArgument({
|
|
@@ -2,6 +2,7 @@ import { type Schema, type ModalSchemaProperty } from '../../common';
|
|
|
2
2
|
interface Props {
|
|
3
3
|
schema?: Schema | any;
|
|
4
4
|
trigger?: import('svelte').Snippet;
|
|
5
|
+
noPopover?: boolean;
|
|
5
6
|
}
|
|
6
7
|
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> {
|
|
7
8
|
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
@@ -7,7 +7,7 @@ import AddPropertyV2 from './AddPropertyV2.svelte';
|
|
|
7
7
|
import { Plus } from 'lucide-svelte';
|
|
8
8
|
import Select from '../select/Select.svelte';
|
|
9
9
|
import { safeSelectItems } from '../select/utils.svelte';
|
|
10
|
-
let { schema = $bindable(), uiOnly = false, noPreview = false, fullHeight = true, formatExtension = $bindable(undefined), onSchemaChange } = $props();
|
|
10
|
+
let { schema = $bindable(), uiOnly = false, noPreview = false, fullHeight = true, formatExtension = $bindable(undefined), onSchemaChange, customUi } = $props();
|
|
11
11
|
let resourceIsTextFile = $state(false);
|
|
12
12
|
let addPropertyComponent = $state(undefined);
|
|
13
13
|
let editableSchemaForm = $state(undefined);
|
|
@@ -61,6 +61,7 @@ let suggestedFileExtensions = $state([
|
|
|
61
61
|
>
|
|
62
62
|
{#if noPreview}
|
|
63
63
|
<AddPropertyV2
|
|
64
|
+
noPopover={customUi?.noAddPopover}
|
|
64
65
|
bind:schema
|
|
65
66
|
bind:this={addPropertyComponent}
|
|
66
67
|
on:change={() => onSchemaChange?.({ schema: $state.snapshot(schema) })}
|
|
@@ -96,6 +97,7 @@ let suggestedFileExtensions = $state([
|
|
|
96
97
|
{#snippet addProperty()}
|
|
97
98
|
{#if !noPreview}
|
|
98
99
|
<AddPropertyV2
|
|
100
|
+
noPopover={customUi?.noAddPopover}
|
|
99
101
|
bind:schema
|
|
100
102
|
bind:this={addPropertyComponent}
|
|
101
103
|
on:change={() => onSchemaChange?.({ schema })}
|
|
@@ -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> {
|