windmill-components 1.522.0 → 1.531.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/components/AIAgentLogViewer.svelte +123 -0
- package/package/components/AIAgentLogViewer.svelte.d.ts +13 -0
- package/package/components/AppConnectInner.svelte +10 -10
- package/package/components/AutoscalingConfigEditor.svelte +76 -2
- package/package/components/Dev.svelte +12 -28
- package/package/components/DiffEditor.svelte +6 -3
- package/package/components/DiffEditor.svelte.d.ts +1 -0
- package/package/components/DisplayResult.svelte +16 -10
- package/package/components/DisplayResult.svelte.d.ts +1 -0
- package/package/components/EditableSchemaForm.svelte +5 -2
- package/package/components/Editor.svelte +26 -8
- package/package/components/Editor.svelte.d.ts +1 -1
- package/package/components/EditorBar.svelte +25 -5
- package/package/components/EditorSettings.svelte +6 -0
- package/package/components/FirstStepInputs.svelte +2 -2
- package/package/components/FlowBuilder.svelte +18 -36
- package/package/components/FlowGraphViewerStep.svelte +7 -0
- package/package/components/FlowJobResult.svelte +15 -63
- package/package/components/FlowJobResult.svelte.d.ts +10 -4
- package/package/components/FlowLogViewer.svelte +660 -0
- package/package/components/FlowLogViewer.svelte.d.ts +34 -0
- package/package/components/FlowLogViewerWrapper.svelte +52 -0
- package/package/components/FlowLogViewerWrapper.svelte.d.ts +21 -0
- package/package/components/FlowLoopIterationPreview.svelte +3 -3
- package/package/components/FlowPreviewContent.svelte +4 -5
- package/package/components/FlowPreviewContent.svelte.d.ts +7 -7
- package/package/components/FlowPreviewResult.svelte +4 -5
- package/package/components/FlowPreviewResult.svelte.d.ts +3 -5
- package/package/components/FlowStatusViewer.svelte +28 -16
- package/package/components/FlowStatusViewer.svelte.d.ts +19 -27
- package/package/components/FlowStatusViewerInner.svelte +483 -296
- package/package/components/FlowStatusViewerInner.svelte.d.ts +27 -33
- package/package/components/FlowTimeline.svelte +11 -13
- package/package/components/FlowTimeline.svelte.d.ts +6 -5
- package/package/components/FlowWrapper.svelte +3 -2
- package/package/components/HighlightCode.svelte +4 -1
- package/package/components/IconedResourceType.svelte +9 -5
- package/package/components/JobLoader.svelte +61 -8
- package/package/components/JobLoader.svelte.d.ts +9 -1
- package/package/components/LogViewer.svelte +8 -2
- package/package/components/LogViewer.svelte.d.ts +1 -0
- package/package/components/LogViewerHeader.svelte +32 -0
- package/package/components/LogViewerHeader.svelte.d.ts +8 -0
- package/package/components/ModulePreviewForm.svelte +10 -6
- package/package/components/ModulePreviewResultViewer.svelte +16 -0
- package/package/components/ModulePreviewResultViewer.svelte.d.ts +1 -1
- package/package/components/ModuleTest.svelte +59 -16
- package/package/components/RelativeLineNumbers.svelte +16 -0
- package/package/components/RelativeLineNumbers.svelte.d.ts +18 -0
- package/package/components/ResourceEditor.svelte +9 -4
- package/package/components/ScriptBuilder.svelte +13 -11
- package/package/components/ScriptEditor.svelte +2 -2
- package/package/components/SimpleEditor.svelte +10 -4
- package/package/components/SimpleEditor.svelte.d.ts +1 -0
- package/package/components/TemplateEditor.svelte +1 -1
- package/package/components/UserSettings.svelte +4 -4
- package/package/components/apps/components/display/AppAccordionList.svelte +1 -1
- package/package/components/apps/components/display/AppCarouselList.svelte +10 -8
- package/package/components/apps/components/display/AppJobIdFlowStatus.svelte +3 -3
- package/package/components/apps/components/display/table/AppAggridTable.svelte +2 -2
- package/package/components/apps/components/helpers/HiddenComponent.svelte +0 -1
- package/package/components/apps/components/helpers/InputValue.svelte +6 -1
- package/package/components/apps/components/helpers/NonRunnableComponent.svelte +8 -4
- package/package/components/apps/components/helpers/NonRunnableComponent.svelte.d.ts +1 -1
- package/package/components/apps/components/helpers/RunnableComponent.svelte +7 -8
- package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +1 -1
- package/package/components/apps/components/helpers/RunnableWrapper.svelte +12 -3
- package/package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +1 -1
- package/package/components/apps/components/inputs/AppCodeInputComponent.svelte +0 -5
- package/package/components/apps/components/layout/AppConditionalWrapper.svelte +1 -1
- package/package/components/apps/components/layout/AppContainer.svelte +1 -1
- package/package/components/apps/components/layout/AppDecisionTree.svelte +31 -20
- package/package/components/apps/components/layout/AppDrawer.svelte +1 -1
- package/package/components/apps/components/layout/AppList.svelte +9 -8
- package/package/components/apps/components/layout/AppModal.svelte +1 -1
- package/package/components/apps/components/layout/AppSplitpanes.svelte +5 -2
- package/package/components/apps/components/layout/AppStepper.svelte +9 -5
- package/package/components/apps/components/layout/AppTabs.svelte +2 -2
- package/package/components/apps/editor/AppJobsDrawer.svelte +2 -2
- package/package/components/apps/editor/GridEditor.svelte +24 -19
- package/package/components/apps/editor/GridEditor.svelte.d.ts +4 -1
- package/package/components/apps/editor/GridViewer.svelte +1 -1
- package/package/components/apps/editor/SubGridEditor.svelte +7 -11
- package/package/components/apps/editor/SubGridEditor.svelte.d.ts +3 -19
- package/package/components/apps/editor/appUtils.js +17 -68
- package/package/components/apps/editor/component/ComponentInner.svelte +845 -694
- package/package/components/apps/editor/component/componentCallbacks.svelte.js +8 -1
- package/package/components/apps/editor/contextPanel/components/OutputHeader.svelte +9 -46
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +29 -43
- package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +2 -1
- package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +1 -0
- package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte +2 -2
- package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte.d.ts +1 -0
- package/package/components/apps/svelte-grid/Grid.svelte +23 -25
- package/package/components/apps/svelte-grid/Grid.svelte.d.ts +21 -9
- package/package/components/apps/svelte-grid/MoveResize.svelte +13 -15
- package/package/components/apps/svelte-grid/MoveResize.svelte.d.ts +17 -24
- package/package/components/apps/utils.d.ts +2 -0
- package/package/components/apps/utils.js +22 -0
- package/package/components/auditLogs/AuditLogsFilters.svelte.d.ts +1 -1
- package/package/components/common/fileDownload/FileDownload.svelte +1 -3
- package/package/components/common/fileDownload/FileDownload.svelte.d.ts +4 -18
- package/package/components/common/languageIcons/LanguageIcon.svelte +5 -2
- package/package/components/copilot/FlowInlineScriptAIButton.svelte +58 -0
- package/package/components/copilot/FlowInlineScriptAIButton.svelte.d.ts +3 -0
- package/package/components/copilot/MetadataGen.svelte +19 -1
- package/package/components/copilot/MetadataGen.svelte.d.ts +1 -1
- package/package/components/copilot/ScriptGen.svelte +23 -31
- package/package/components/copilot/ScriptGen.svelte.d.ts +0 -1
- package/package/components/copilot/autocomplete/Autocompletor.js +2 -0
- package/package/components/copilot/chat/AIChatDisplay.svelte +4 -4
- package/package/components/copilot/chat/AIChatInput.svelte +29 -6
- package/package/components/copilot/chat/AIChatManager.svelte.js +110 -26
- package/package/components/copilot/chat/AIChatMessage.svelte +3 -0
- package/package/components/copilot/chat/ToolContentDisplay.svelte +84 -0
- package/package/components/copilot/chat/ToolContentDisplay.svelte.d.ts +11 -0
- package/package/components/copilot/chat/ToolExecutionDisplay.svelte +105 -0
- package/package/components/copilot/chat/ToolExecutionDisplay.svelte.d.ts +7 -0
- package/package/components/copilot/chat/api/apiTools.d.ts +7 -0
- package/package/components/copilot/chat/api/apiTools.js +192 -0
- package/package/components/copilot/chat/api/core.d.ts +7 -0
- package/package/components/copilot/chat/api/core.js +61 -0
- package/package/components/copilot/chat/flow/FlowAIChat.svelte +4 -6
- package/package/components/copilot/chat/flow/core.js +213 -42
- package/package/components/copilot/chat/flow/utils.js +3 -0
- package/package/components/copilot/chat/monaco-adapter.d.ts +1 -1
- package/package/components/copilot/chat/monaco-adapter.js +10 -4
- package/package/components/copilot/chat/navigator/core.d.ts +1 -1
- package/package/components/copilot/chat/navigator/core.js +20 -22
- package/package/components/copilot/chat/script/core.d.ts +11 -3
- package/package/components/copilot/chat/script/core.js +92 -15
- package/package/components/copilot/chat/shared.d.ts +30 -3
- package/package/components/copilot/chat/shared.js +228 -9
- package/package/components/copilot/lib.d.ts +1 -1
- package/package/components/copilot/lib.js +15 -6
- package/package/components/custom_ui.d.ts +2 -0
- package/package/components/details/DetailPageLayout.svelte +34 -33
- package/package/components/flow_builder.d.ts +1 -2
- package/package/components/flows/FlowEditor.svelte +3 -3
- package/package/components/flows/FlowEditor.svelte.d.ts +7 -6
- package/package/components/flows/common/FlowCard.svelte +2 -2
- package/package/components/flows/common/FlowCard.svelte.d.ts +1 -0
- package/package/components/flows/common/FlowCardHeader.svelte +13 -4
- package/package/components/flows/common/FlowCardHeader.svelte.d.ts +1 -0
- package/package/components/flows/content/BranchPredicateEditor.svelte +4 -7
- package/package/components/flows/content/BranchPredicateEditor.svelte.d.ts +12 -11
- package/package/components/flows/content/FlowConstants.svelte +3 -3
- package/package/components/flows/content/FlowEditorPanel.svelte +3 -3
- package/package/components/flows/content/FlowEditorPanel.svelte.d.ts +2 -4
- package/package/components/flows/content/FlowInputsQuick.svelte +2 -1
- package/package/components/flows/content/FlowLoop.svelte +2 -2
- package/package/components/flows/content/FlowModuleComponent.svelte +130 -108
- package/package/components/flows/content/FlowModuleComponent.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowModuleEarlyStop.svelte +2 -2
- package/package/components/flows/content/FlowModuleSkip.svelte +1 -1
- package/package/components/flows/content/FlowModuleSleep.svelte +1 -1
- package/package/components/flows/content/FlowModuleSuspend.svelte +1 -1
- package/package/components/flows/content/FlowModuleWrapper.svelte +15 -5
- package/package/components/flows/content/FlowModuleWrapper.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowResult.svelte +2 -3
- package/package/components/flows/content/FlowResult.svelte.d.ts +2 -4
- package/package/components/flows/content/FlowWhileLoop.svelte +1 -1
- package/package/components/flows/dfs.d.ts +3 -1
- package/package/components/flows/dfs.js +5 -1
- package/package/components/flows/flowInfers.js +78 -0
- package/package/components/flows/flowState.d.ts +2 -3
- package/package/components/flows/flowState.js +2 -2
- package/package/components/flows/flowStateUtils.svelte.d.ts +4 -4
- package/package/components/flows/flowStateUtils.svelte.js +14 -13
- package/package/components/flows/flowStore.d.ts +3 -4
- package/package/components/flows/header/FlowPreviewButtons.svelte +2 -1
- package/package/components/flows/header/FlowYamlEditor.svelte +10 -1
- package/package/components/flows/map/FlowGraphPreviewButton.svelte +1 -1
- package/package/components/flows/map/FlowJobsMenu.svelte +7 -3
- package/package/components/flows/map/FlowJobsMenu.svelte.d.ts +1 -0
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +12 -12
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +26 -19
- package/package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +6 -4
- package/package/components/flows/map/InsertModuleInner.svelte +9 -1
- package/package/components/flows/map/InsertModuleInner.svelte.d.ts +1 -0
- package/package/components/flows/map/MapItem.svelte +4 -2
- package/package/components/flows/pickers/TopLevelNode.svelte +4 -1
- package/package/components/flows/propPicker/InputPickerInner.svelte +5 -4
- package/package/components/flows/propPicker/OutputBadge.svelte +11 -9
- package/package/components/flows/propPicker/OutputPickerInner.svelte +10 -1
- package/package/components/flows/propPicker/OutputPickerInner.svelte.d.ts +1 -1
- package/package/components/flows/testSteps.svelte.d.ts +3 -2
- package/package/components/flows/testSteps.svelte.js +26 -23
- package/package/components/flows/types.d.ts +1 -1
- package/package/components/flows/utils.d.ts +3 -5
- package/package/components/flows/utils.js +3 -4
- package/package/components/git_sync/GitSyncContext.svelte.js +2 -1
- package/package/components/graph/FlowGraphV2.svelte +44 -24
- package/package/components/graph/FlowGraphV2.svelte.d.ts +5 -2
- package/package/components/graph/graphBuilder.svelte.d.ts +49 -17
- package/package/components/graph/graphBuilder.svelte.js +30 -14
- package/package/components/graph/model.d.ts +9 -6
- package/package/components/graph/renderers/edges/BaseEdge.svelte +3 -3
- package/package/components/graph/renderers/edges/BaseEdge.svelte.d.ts +2 -3
- package/package/components/graph/renderers/nodes/AIToolNode.svelte +234 -0
- package/package/components/graph/renderers/nodes/AIToolNode.svelte.d.ts +24 -0
- package/package/components/graph/renderers/nodes/AssetNode.svelte +15 -10
- package/package/components/graph/renderers/nodes/AssetNode.svelte.d.ts +18 -1
- package/package/components/graph/renderers/nodes/BranchAllEndNode.svelte +1 -1
- package/package/components/graph/renderers/nodes/BranchAllStart.svelte +1 -1
- package/package/components/graph/renderers/nodes/BranchOneStart.svelte +1 -1
- package/package/components/graph/renderers/nodes/ForLoopEndNode.svelte +2 -2
- package/package/components/graph/renderers/nodes/ForLoopStartNode.svelte +1 -1
- package/package/components/graph/renderers/nodes/ModuleNode.svelte +21 -21
- package/package/components/graph/renderers/nodes/NewAIToolNode.svelte +64 -0
- package/package/components/graph/renderers/nodes/NewAIToolNode.svelte.d.ts +7 -0
- package/package/components/graph/renderers/nodes/branchOneEndNode.svelte +1 -1
- package/package/components/icons/RubyIcon.svelte +656 -0
- package/package/components/icons/RubyIcon.svelte.d.ts +7 -0
- package/package/components/instanceSettings.js +9 -0
- package/package/components/modulesTest.svelte.d.ts +6 -3
- package/package/components/modulesTest.svelte.js +32 -0
- package/package/components/preview/FlowPreviewStatus.svelte +3 -1
- package/package/components/raw_apps/RawAppEditor.svelte +27 -26
- package/package/components/raw_apps/RawAppEditor.svelte.d.ts +17 -17
- package/package/components/runs/{JobPreview.svelte → JobRunsPreview.svelte} +1 -4
- package/package/components/runs/{JobPreview.svelte.d.ts → JobRunsPreview.svelte.d.ts} +3 -3
- package/package/components/runs/RunRow.svelte +5 -1
- package/package/components/schema/AddProperty.svelte +41 -36
- package/package/components/schema/AddProperty.svelte.d.ts +2 -2
- package/package/components/schema/AddPropertyV2.svelte +41 -37
- package/package/components/schema/AddPropertyV2.svelte.d.ts +1 -1
- package/package/components/schema/FlowPropertyEditor.svelte +8 -6
- package/package/components/search/RunsSearch.svelte +1 -1
- package/package/components/settings/CreateToken.svelte +132 -12
- package/package/components/settings/CreateToken.svelte.d.ts +3 -20
- package/package/components/settings/TokenDisplay.svelte +18 -42
- package/package/components/settings/TokenDisplay.svelte.d.ts +0 -1
- package/package/components/settings/TokensTable.svelte +2 -4
- package/package/components/settings/TokensTable.svelte.d.ts +3 -19
- package/package/components/settings/WorkspaceUserSettings.svelte +428 -69
- package/package/components/sidebar/MenuButton.svelte +12 -10
- package/package/components/stepHistoryLoader.svelte.d.ts +2 -2
- package/package/components/stepHistoryLoader.svelte.js +7 -12
- package/package/components/triggers/http/OpenAPISpecGenerator.svelte +2 -2
- package/package/components/tutorials/FlowBuilderTutorialBranchOne.svelte +1 -1
- package/package/components/tutorials/FlowBuilderTutorialForLoop.svelte +4 -4
- package/package/components/tutorials/utils.js +3 -0
- package/package/components/worker_group.d.ts +4 -1
- package/package/components/worker_group.js +3 -2
- package/package/editorLangUtils.d.ts +1 -1
- package/package/editorLangUtils.js +2 -0
- package/package/editorUtils.d.ts +2 -1
- package/package/editorUtils.js +2 -1
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +296 -8
- package/package/gen/schemas.gen.js +364 -70
- package/package/gen/services.gen.d.ts +118 -16
- package/package/gen/services.gen.js +226 -19
- package/package/gen/types.gen.d.ts +660 -16
- package/package/hubPaths.json +7 -4
- package/package/infer.js +10 -1
- package/package/monaco_workers/graphql.worker.bundle.js +144 -110
- package/package/script_helpers.d.ts +3 -0
- package/package/script_helpers.js +58 -3
- package/package/scripts.d.ts +1 -1
- package/package/scripts.js +3 -2
- package/package/stores.d.ts +2 -0
- package/package/stores.js +2 -0
- package/package/svelte5Utils.svelte.d.ts +16 -0
- package/package/svelte5Utils.svelte.js +26 -0
- package/package/utils.d.ts +1 -1
- package/package.json +20 -19
- package/package/components/AllFlowLogs.svelte +0 -31
- package/package/components/AllFlowLogs.svelte.d.ts +0 -8
- package/package/components/copilot/chat/navigator/apiTools.d.ts +0 -68
- package/package/components/copilot/chat/navigator/apiTools.js +0 -258
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
<script lang="ts">import { userWorkspaces, workspaceStore } from '../../stores';
|
|
2
|
-
import { Button } from '../common';
|
|
2
|
+
import { Badge, Button } from '../common';
|
|
3
3
|
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 { IntegrationService, UserService } from '../../gen';
|
|
8
|
-
import { createEventDispatcher } from 'svelte';
|
|
7
|
+
import { FlowService, IntegrationService, ScriptService, UserService } from '../../gen';
|
|
9
8
|
import MultiSelect from '../select/MultiSelect.svelte';
|
|
10
9
|
import { safeSelectItems } from '../select/utils.svelte';
|
|
11
10
|
import TokenDisplay from './TokenDisplay.svelte';
|
|
12
11
|
import ScopeSelector from './ScopeSelector.svelte';
|
|
12
|
+
import Alert from '../common/alert/Alert.svelte';
|
|
13
|
+
import FolderPicker from '../FolderPicker.svelte';
|
|
13
14
|
let { showMcpMode = false, defaultNewTokenWorkspace, scopes, onTokenCreated, newTokenLabel = $bindable(undefined) } = $props();
|
|
14
15
|
let newToken = $state(undefined);
|
|
15
16
|
let newMcpToken = $state(undefined);
|
|
@@ -21,9 +22,12 @@ let newMcpScope = $state('favorites');
|
|
|
21
22
|
let loadingApps = $state(false);
|
|
22
23
|
let errorFetchApps = $state(false);
|
|
23
24
|
let allApps = $state([]);
|
|
25
|
+
let loadingRunnables = $state(false);
|
|
26
|
+
let includedRunnables = $state([]);
|
|
27
|
+
let selectedFolder = $state('');
|
|
28
|
+
let runnablesCache = new Map();
|
|
24
29
|
let customScopes = $state([]);
|
|
25
30
|
let showCustomScopes = $state(false);
|
|
26
|
-
const dispatch = createEventDispatcher();
|
|
27
31
|
function ensureCurrentWorkspaceIncluded(workspacesList, currentWorkspace) {
|
|
28
32
|
if (!currentWorkspace) {
|
|
29
33
|
return workspacesList;
|
|
@@ -42,7 +46,13 @@ async function createToken(mcpMode = false) {
|
|
|
42
46
|
}
|
|
43
47
|
let tokenScopes = scopes;
|
|
44
48
|
if (mcpMode) {
|
|
45
|
-
|
|
49
|
+
if (newMcpScope === 'folder') {
|
|
50
|
+
const folderPath = `f/${selectedFolder}/*`;
|
|
51
|
+
tokenScopes = [`mcp:all:${folderPath}`];
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
tokenScopes = [`mcp:${newMcpScope}`];
|
|
55
|
+
}
|
|
46
56
|
if (newMcpApps.length > 0) {
|
|
47
57
|
tokenScopes.push(`mcp:hub:${newMcpApps.join(',')}`);
|
|
48
58
|
}
|
|
@@ -64,10 +74,7 @@ async function createToken(mcpMode = false) {
|
|
|
64
74
|
else {
|
|
65
75
|
newToken = `${createdToken}`;
|
|
66
76
|
}
|
|
67
|
-
|
|
68
|
-
if (onTokenCreated) {
|
|
69
|
-
onTokenCreated(newToken ?? newMcpToken ?? '');
|
|
70
|
-
}
|
|
77
|
+
onTokenCreated(newToken ?? newMcpToken ?? '');
|
|
71
78
|
mcpCreationMode = false;
|
|
72
79
|
}
|
|
73
80
|
catch (err) {
|
|
@@ -76,6 +83,8 @@ async function createToken(mcpMode = false) {
|
|
|
76
83
|
}
|
|
77
84
|
const workspaces = $derived(ensureCurrentWorkspaceIncluded($userWorkspaces, $workspaceStore));
|
|
78
85
|
const mcpBaseUrl = $derived(`${window.location.origin}/api/mcp/w/${newTokenWorkspace}/sse?token=`);
|
|
86
|
+
const warning = $derived(newMcpScope === 'favorites' ? `You do not have any favorite scripts or flows. You can favorite some scripts and flows to include them, or change the scope to "All scripts/flows" to include all your scripts and flows.` : 'Create your first scripts or flows to make them available via MCP.');
|
|
87
|
+
const noScriptsOrFlowsAvailableWarning = $derived(includedRunnables.length === 0 ? warning : '');
|
|
79
88
|
$effect(() => {
|
|
80
89
|
if (mcpCreationMode) {
|
|
81
90
|
getAllApps();
|
|
@@ -103,6 +112,64 @@ async function getAllApps() {
|
|
|
103
112
|
loadingApps = false;
|
|
104
113
|
}
|
|
105
114
|
}
|
|
115
|
+
async function getScripts(favoriteOnly = false, workspace, folder) {
|
|
116
|
+
if (!workspace) {
|
|
117
|
+
return [];
|
|
118
|
+
}
|
|
119
|
+
const pathStart = folder ? `f/${folder}` : undefined;
|
|
120
|
+
const scripts = await ScriptService.listScripts({
|
|
121
|
+
starredOnly: favoriteOnly,
|
|
122
|
+
workspace,
|
|
123
|
+
pathStart
|
|
124
|
+
});
|
|
125
|
+
return scripts.map((x) => x.path);
|
|
126
|
+
}
|
|
127
|
+
async function getFlows(favoriteOnly = false, workspace, folder) {
|
|
128
|
+
if (!workspace) {
|
|
129
|
+
return [];
|
|
130
|
+
}
|
|
131
|
+
const pathStart = folder ? `f/${folder}` : undefined;
|
|
132
|
+
const flows = await FlowService.listFlows({
|
|
133
|
+
starredOnly: favoriteOnly,
|
|
134
|
+
workspace,
|
|
135
|
+
pathStart
|
|
136
|
+
});
|
|
137
|
+
return flows.map((x) => x.path);
|
|
138
|
+
}
|
|
139
|
+
async function getScriptsAndFlows(favoriteOnly = false, workspace, folder) {
|
|
140
|
+
const cacheKey = `${workspace}-${favoriteOnly}${folder ? `-${folder}` : ''}`;
|
|
141
|
+
if (runnablesCache.has(cacheKey)) {
|
|
142
|
+
includedRunnables = runnablesCache.get(cacheKey) || [];
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
try {
|
|
146
|
+
loadingRunnables = true;
|
|
147
|
+
const [scripts, flows] = await Promise.all([getScripts(favoriteOnly, workspace, folder), getFlows(favoriteOnly, workspace, folder)]);
|
|
148
|
+
const combined = [...scripts, ...flows];
|
|
149
|
+
runnablesCache.set(cacheKey, combined);
|
|
150
|
+
includedRunnables = combined;
|
|
151
|
+
}
|
|
152
|
+
finally {
|
|
153
|
+
loadingRunnables = false;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
$effect(() => {
|
|
157
|
+
if (mcpCreationMode) {
|
|
158
|
+
const workspace = newTokenWorkspace || $workspaceStore;
|
|
159
|
+
if (workspace) {
|
|
160
|
+
const folderParam = selectedFolder.length > 0 ? selectedFolder : undefined;
|
|
161
|
+
getScriptsAndFlows(newMcpScope === 'favorites', workspace, folderParam);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
includedRunnables = [];
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
$effect(() => {
|
|
169
|
+
if (mcpCreationMode && newMcpScope !== 'folder') {
|
|
170
|
+
selectedFolder = '';
|
|
171
|
+
}
|
|
172
|
+
});
|
|
106
173
|
</script>
|
|
107
174
|
|
|
108
175
|
<div>
|
|
@@ -189,10 +256,23 @@ async function getAllApps() {
|
|
|
189
256
|
label="All scripts/flows"
|
|
190
257
|
tooltip="Make all your scripts and flows available as tools"
|
|
191
258
|
/>
|
|
259
|
+
<ToggleButton
|
|
260
|
+
{item}
|
|
261
|
+
value="folder"
|
|
262
|
+
label="Folder"
|
|
263
|
+
tooltip="Make all scripts and flows in the selected folder available as tools"
|
|
264
|
+
/>
|
|
192
265
|
{/snippet}
|
|
193
266
|
</ToggleButtonGroup>
|
|
194
267
|
</div>
|
|
195
268
|
|
|
269
|
+
{#if newMcpScope === 'folder'}
|
|
270
|
+
<div>
|
|
271
|
+
<span class="block mb-1">Select Folder</span>
|
|
272
|
+
<FolderPicker bind:folderName={selectedFolder} />
|
|
273
|
+
</div>
|
|
274
|
+
{/if}
|
|
275
|
+
|
|
196
276
|
<div>
|
|
197
277
|
<span class="block mb-1">Hub scripts (optional)</span>
|
|
198
278
|
{#if loadingApps}
|
|
@@ -241,6 +321,46 @@ async function getAllApps() {
|
|
|
241
321
|
</select>
|
|
242
322
|
</div>
|
|
243
323
|
{/if}
|
|
324
|
+
{#if mcpCreationMode && (newMcpScope !== 'folder' || selectedFolder.length > 0)}
|
|
325
|
+
{#if loadingRunnables}
|
|
326
|
+
<div class="flex flex-col gap-2 col-span-2 pr-4">
|
|
327
|
+
<span class="block text-xs text-tertiary">Scripts & Flows that will be available via MCP</span>
|
|
328
|
+
<div class="flex flex-wrap gap-1">
|
|
329
|
+
<Badge rounded small color="dark-gray" baseClass="animate-skeleton">Loading...</Badge>
|
|
330
|
+
</div>
|
|
331
|
+
</div>
|
|
332
|
+
{:else}
|
|
333
|
+
<div class="flex flex-col gap-2 col-span-2 pr-4">
|
|
334
|
+
{#if noScriptsOrFlowsAvailableWarning}
|
|
335
|
+
<Alert type="info" title="No scripts or flows available" size="xs">
|
|
336
|
+
{noScriptsOrFlowsAvailableWarning}
|
|
337
|
+
</Alert>
|
|
338
|
+
{:else}
|
|
339
|
+
<span class="block text-xs text-tertiary">Scripts & Flows that will be available via MCP</span>
|
|
340
|
+
<div class="flex flex-wrap gap-1">
|
|
341
|
+
|
|
342
|
+
{#if includedRunnables.length <= 5}
|
|
343
|
+
{#each includedRunnables as scriptOrFlow}
|
|
344
|
+
<Badge rounded small color="blue">{scriptOrFlow}</Badge>
|
|
345
|
+
{/each}
|
|
346
|
+
{:else}
|
|
347
|
+
{#each includedRunnables.slice(0, 3) as scriptOrFlow}
|
|
348
|
+
<Badge rounded small color="blue">{scriptOrFlow}</Badge>
|
|
349
|
+
{/each}
|
|
350
|
+
<Badge
|
|
351
|
+
rounded
|
|
352
|
+
small
|
|
353
|
+
color="dark-gray"
|
|
354
|
+
>
|
|
355
|
+
+{includedRunnables.length - 3} more
|
|
356
|
+
</Badge>
|
|
357
|
+
{/if}
|
|
358
|
+
</div>
|
|
359
|
+
{/if}
|
|
360
|
+
</div>
|
|
361
|
+
{/if}
|
|
362
|
+
{/if}
|
|
363
|
+
|
|
244
364
|
</div>
|
|
245
365
|
|
|
246
366
|
<div class="mt-4 flex justify-end gap-2 flex-row">
|
|
@@ -253,7 +373,7 @@ async function getAllApps() {
|
|
|
253
373
|
</Button>
|
|
254
374
|
<Button
|
|
255
375
|
on:click={() => createToken(mcpCreationMode)}
|
|
256
|
-
disabled={mcpCreationMode && newTokenWorkspace == undefined}
|
|
376
|
+
disabled={mcpCreationMode && (newTokenWorkspace == undefined || (newMcpScope === 'folder' && !selectedFolder))}
|
|
257
377
|
>
|
|
258
378
|
New token
|
|
259
379
|
</Button>
|
|
@@ -261,10 +381,10 @@ async function getAllApps() {
|
|
|
261
381
|
</div>
|
|
262
382
|
|
|
263
383
|
{#if newToken}
|
|
264
|
-
<TokenDisplay token={newToken}
|
|
384
|
+
<TokenDisplay token={newToken} />
|
|
265
385
|
{/if}
|
|
266
386
|
|
|
267
387
|
{#if newMcpToken}
|
|
268
|
-
<TokenDisplay token={newMcpToken}
|
|
388
|
+
<TokenDisplay token={newMcpToken} mcpUrl={`${mcpBaseUrl}${newMcpToken}`} />
|
|
269
389
|
{/if}
|
|
270
390
|
</div>
|
|
@@ -4,26 +4,9 @@ interface Props {
|
|
|
4
4
|
newTokenLabel?: string;
|
|
5
5
|
defaultNewTokenWorkspace?: string;
|
|
6
6
|
scopes?: string[];
|
|
7
|
-
onTokenCreated
|
|
7
|
+
onTokenCreated: (token: string) => void;
|
|
8
8
|
displayCreateToken?: boolean;
|
|
9
9
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
$$bindings?: Bindings;
|
|
13
|
-
} & Exports;
|
|
14
|
-
(internal: unknown, props: Props & {
|
|
15
|
-
$$events?: Events;
|
|
16
|
-
$$slots?: Slots;
|
|
17
|
-
}): Exports & {
|
|
18
|
-
$set?: any;
|
|
19
|
-
$on?: any;
|
|
20
|
-
};
|
|
21
|
-
z_$$bindings?: Bindings;
|
|
22
|
-
}
|
|
23
|
-
declare const CreateToken: $$__sveltets_2_IsomorphicComponent<Props, {
|
|
24
|
-
tokenCreated: CustomEvent<any>;
|
|
25
|
-
} & {
|
|
26
|
-
[evt: string]: CustomEvent<any>;
|
|
27
|
-
}, {}, {}, "newTokenLabel">;
|
|
28
|
-
type CreateToken = InstanceType<typeof CreateToken>;
|
|
10
|
+
declare const CreateToken: import("svelte").Component<Props, {}, "newTokenLabel">;
|
|
11
|
+
type CreateToken = ReturnType<typeof CreateToken>;
|
|
29
12
|
export default CreateToken;
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
<script lang="ts">import { copyToClipboard } from '../../utils';
|
|
2
2
|
import { Clipboard } from 'lucide-svelte';
|
|
3
|
-
import ClipboardPanel from '../details/ClipboardPanel.svelte';
|
|
4
3
|
import Alert from '../common/alert/Alert.svelte';
|
|
5
|
-
let { token,
|
|
4
|
+
let { token, mcpUrl, title, onCopy } = $props();
|
|
6
5
|
function handleCopyClick() {
|
|
7
6
|
copyToClipboard(token);
|
|
8
7
|
onCopy?.();
|
|
9
8
|
}
|
|
10
|
-
const displayTitle = $derived(title || (
|
|
9
|
+
const displayTitle = $derived(title || (mcpUrl ? 'MCP URL Generated Successfully' : 'Token Created Successfully'));
|
|
10
|
+
const label = $derived(mcpUrl ? 'Your MCP Server URL' : 'Your Token');
|
|
11
|
+
const info = $derived(`Make sure to copy your ${mcpUrl ? 'MCP Server URL' : 'personal access token'} now. You won\'t be able to see it again!`);
|
|
12
|
+
const tokenOrUrl = $derived(mcpUrl ? mcpUrl : token);
|
|
11
13
|
const colorScheme = {
|
|
12
14
|
gradient: 'from-blue-50 to-indigo-50 dark:from-blue-900/20 dark:to-indigo-900/20',
|
|
13
15
|
border: 'border-blue-200 dark:border-blue-700',
|
|
@@ -24,7 +26,7 @@ const colorScheme = {
|
|
|
24
26
|
<div class="border rounded-lg mb-6 p-4 bg-gradient-to-r {colorScheme.gradient} {colorScheme.border} shadow-sm">
|
|
25
27
|
<div class="flex items-start gap-3">
|
|
26
28
|
<div class="flex-shrink-0 w-8 h-8 {colorScheme.iconBg} rounded-full flex items-center justify-center mt-0.5">
|
|
27
|
-
{#if
|
|
29
|
+
{#if mcpUrl}
|
|
28
30
|
<svg class="w-4 h-4 {colorScheme.iconColor}" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
29
31
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13.828 10.172a4 4 0 00-5.656 0l-4 4a4 4 0 105.656 5.656l1.102-1.101m-.758-4.899a4 4 0 005.656 0l4-4a4 4 0 00-5.656-5.656l-1.1 1.1"></path>
|
|
30
32
|
</svg>
|
|
@@ -39,24 +41,16 @@ const colorScheme = {
|
|
|
39
41
|
{displayTitle}
|
|
40
42
|
</h4>
|
|
41
43
|
|
|
42
|
-
{#if type === 'mcp' && mcpUrl}
|
|
43
44
|
<div class="space-y-3">
|
|
44
45
|
<div>
|
|
45
46
|
<!-- svelte-ignore a11y_label_has_associated_control -->
|
|
46
|
-
<label class="block text-xs font-medium {colorScheme.labelColor} mb-1">
|
|
47
|
-
|
|
48
|
-
</label>
|
|
49
|
-
<ClipboardPanel content={mcpUrl} />
|
|
50
|
-
</div>
|
|
51
|
-
<div>
|
|
52
|
-
<!-- svelte-ignore a11y_label_has_associated_control -->
|
|
53
|
-
<label class="block text-xs font-medium {colorScheme.labelColor} mb-1">
|
|
54
|
-
Your Token:
|
|
47
|
+
<label class="block text-xs font-medium {colorScheme.labelColor} mb-1 mt-4">
|
|
48
|
+
{label}
|
|
55
49
|
</label>
|
|
56
50
|
<div class="bg-white dark:bg-gray-800 rounded-md p-3 border {colorScheme.border}">
|
|
57
51
|
<div class="flex items-center justify-between gap-2">
|
|
58
52
|
<code class="text-sm font-mono text-gray-800 dark:text-gray-200 break-all flex-1">
|
|
59
|
-
{
|
|
53
|
+
{tokenOrUrl}
|
|
60
54
|
</code>
|
|
61
55
|
<button
|
|
62
56
|
onclick={handleCopyClick}
|
|
@@ -69,35 +63,17 @@ const colorScheme = {
|
|
|
69
63
|
</div>
|
|
70
64
|
</div>
|
|
71
65
|
<Alert type="warning" title="Important" size="xs">
|
|
72
|
-
|
|
73
|
-
</Alert>
|
|
74
|
-
<div class="{colorScheme.infoBg} rounded-md p-2 border {colorScheme.infoBorder}">
|
|
75
|
-
<p class="text-xs {colorScheme.infoText}">
|
|
76
|
-
<strong>Next steps:</strong> Use this URL in your MCP-compatible client (like Claude Desktop) to access your Windmill scripts and flows as tools.
|
|
77
|
-
</p>
|
|
78
|
-
</div>
|
|
79
|
-
</div>
|
|
80
|
-
{:else}
|
|
81
|
-
<div class="bg-white dark:bg-gray-800 rounded-md p-3 border {colorScheme.border}">
|
|
82
|
-
<div class="flex items-center justify-between gap-2">
|
|
83
|
-
<code class="text-sm font-mono text-gray-800 dark:text-gray-200 break-all flex-1">
|
|
84
|
-
{token}
|
|
85
|
-
</code>
|
|
86
|
-
<button
|
|
87
|
-
onclick={handleCopyClick}
|
|
88
|
-
class="flex-shrink-0 p-1.5 text-gray-500 hover:text-gray-400 dark:hover:text-gray-200 hover:bg-gray-100 dark:hover:bg-gray-700 rounded transition-colors"
|
|
89
|
-
title="Copy token"
|
|
90
|
-
>
|
|
91
|
-
<Clipboard size={16} />
|
|
92
|
-
</button>
|
|
93
|
-
</div>
|
|
94
|
-
</div>
|
|
95
|
-
<div class="mt-3">
|
|
96
|
-
<Alert type="warning" title="Important" size="xs">
|
|
97
|
-
Make sure to copy your personal access token now. You won't be able to see it again!
|
|
66
|
+
{info}
|
|
98
67
|
</Alert>
|
|
68
|
+
{#if mcpUrl}
|
|
69
|
+
<div class="{colorScheme.infoBg} rounded-md p-2 border {colorScheme.infoBorder}">
|
|
70
|
+
<p class="text-xs {colorScheme.infoText}">
|
|
71
|
+
<strong>Next steps:</strong> Use this URL in your MCP-compatible client (like Claude Desktop) to access your Windmill scripts and flows as tools.
|
|
72
|
+
</p>
|
|
73
|
+
</div>
|
|
74
|
+
{/if}
|
|
99
75
|
</div>
|
|
100
|
-
|
|
76
|
+
|
|
101
77
|
</div>
|
|
102
78
|
</div>
|
|
103
79
|
</div>
|
|
@@ -1,20 +1,18 @@
|
|
|
1
1
|
<script lang="ts">import TableCustom from '../TableCustom.svelte';
|
|
2
2
|
import { displayDate } from '../../utils';
|
|
3
3
|
import { UserService } from '../../gen';
|
|
4
|
-
import { createEventDispatcher } from 'svelte';
|
|
5
4
|
import { sendUserToast } from '../../toast';
|
|
6
5
|
import CreateToken from './CreateToken.svelte';
|
|
7
|
-
let { showMcpMode = false, openWithMcpMode = false, defaultNewTokenLabel, defaultNewTokenWorkspace, scopes } = $props();
|
|
6
|
+
let { showMcpMode = false, openWithMcpMode = false, defaultNewTokenLabel, defaultNewTokenWorkspace, scopes, onTokenCreated } = $props();
|
|
8
7
|
// --- Local State ---
|
|
9
8
|
let tokens = $state([]);
|
|
10
9
|
let tokenPage = $state(1);
|
|
11
10
|
let newTokenLabel = $state(defaultNewTokenLabel);
|
|
12
|
-
const dispatch = createEventDispatcher();
|
|
13
11
|
$effect(() => {
|
|
14
12
|
listTokens();
|
|
15
13
|
});
|
|
16
14
|
function handleTokenCreated(token) {
|
|
17
|
-
|
|
15
|
+
onTokenCreated(token);
|
|
18
16
|
listTokens();
|
|
19
17
|
}
|
|
20
18
|
async function handleDeleteClick(tokenPrefix) {
|
|
@@ -4,24 +4,8 @@ interface Props {
|
|
|
4
4
|
defaultNewTokenLabel?: string;
|
|
5
5
|
defaultNewTokenWorkspace?: string;
|
|
6
6
|
scopes?: string[];
|
|
7
|
+
onTokenCreated: (token: string) => void;
|
|
7
8
|
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
$$bindings?: Bindings;
|
|
11
|
-
} & Exports;
|
|
12
|
-
(internal: unknown, props: Props & {
|
|
13
|
-
$$events?: Events;
|
|
14
|
-
$$slots?: Slots;
|
|
15
|
-
}): Exports & {
|
|
16
|
-
$set?: any;
|
|
17
|
-
$on?: any;
|
|
18
|
-
};
|
|
19
|
-
z_$$bindings?: Bindings;
|
|
20
|
-
}
|
|
21
|
-
declare const TokensTable: $$__sveltets_2_IsomorphicComponent<Props, {
|
|
22
|
-
tokenCreated: CustomEvent<any>;
|
|
23
|
-
} & {
|
|
24
|
-
[evt: string]: CustomEvent<any>;
|
|
25
|
-
}, {}, {}, "">;
|
|
26
|
-
type TokensTable = InstanceType<typeof TokensTable>;
|
|
9
|
+
declare const TokensTable: import("svelte").Component<Props, {}, "">;
|
|
10
|
+
type TokensTable = ReturnType<typeof TokensTable>;
|
|
27
11
|
export default TokensTable;
|