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
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
<script lang="ts">import { JobService } from '../gen';
|
|
2
|
+
import { workspaceStore } from '../stores';
|
|
3
|
+
import FlowLogViewerWrapper from './FlowLogViewerWrapper.svelte';
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { onMount } from 'svelte';
|
|
6
|
+
const resultSchema = z.object({
|
|
7
|
+
messages: z.array(z.object({
|
|
8
|
+
role: z.string(),
|
|
9
|
+
content: z.string().optional(),
|
|
10
|
+
agent_action: z
|
|
11
|
+
.union([
|
|
12
|
+
z.object({
|
|
13
|
+
type: z.literal('tool_call'),
|
|
14
|
+
job_id: z.string(),
|
|
15
|
+
module_id: z.string(),
|
|
16
|
+
function_name: z.string()
|
|
17
|
+
}),
|
|
18
|
+
z.object({
|
|
19
|
+
type: z.literal('message')
|
|
20
|
+
})
|
|
21
|
+
])
|
|
22
|
+
.optional()
|
|
23
|
+
}))
|
|
24
|
+
});
|
|
25
|
+
let { tools, agentJob, workspaceId, onToolJobLoaded, storedToolCallJobs } = $props();
|
|
26
|
+
const fakeModuleStates = $state({});
|
|
27
|
+
async function loadMissingJobs(agentActions) {
|
|
28
|
+
const promises = agentActions.map(async (toolCall, idx) => {
|
|
29
|
+
if (toolCall.type === 'tool_call') {
|
|
30
|
+
let job = storedToolCallJobs?.[idx];
|
|
31
|
+
if (!job || job.type !== 'CompletedJob') {
|
|
32
|
+
job = await JobService.getJob({
|
|
33
|
+
id: toolCall.job_id,
|
|
34
|
+
workspace: workspaceId ?? $workspaceStore
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
fakeModuleStates[idx.toString()] = {
|
|
38
|
+
args: job.args,
|
|
39
|
+
type: job['success'] ? 'Success' : 'Failure',
|
|
40
|
+
logs: job.logs,
|
|
41
|
+
result: job['result'],
|
|
42
|
+
job_id: toolCall.job_id
|
|
43
|
+
};
|
|
44
|
+
onToolJobLoaded?.(job, idx);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
fakeModuleStates[idx.toString()] = {
|
|
48
|
+
type: 'Success',
|
|
49
|
+
args: {},
|
|
50
|
+
logs: '',
|
|
51
|
+
result: toolCall.content
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
await Promise.all(promises);
|
|
56
|
+
}
|
|
57
|
+
let job = $state(undefined);
|
|
58
|
+
async function loadToolCalls() {
|
|
59
|
+
let parsedResult = resultSchema.safeParse(agentJob.result);
|
|
60
|
+
if (!parsedResult.success) {
|
|
61
|
+
console.error('Invalid result', parsedResult.error);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
let agentActions = parsedResult.data.messages
|
|
65
|
+
.map((m) => (m.agent_action?.type === 'message'
|
|
66
|
+
? {
|
|
67
|
+
type: 'message',
|
|
68
|
+
content: m.content
|
|
69
|
+
}
|
|
70
|
+
: m.agent_action?.type === 'tool_call'
|
|
71
|
+
? {
|
|
72
|
+
type: 'tool_call',
|
|
73
|
+
job_id: m.agent_action.job_id,
|
|
74
|
+
module_id: m.agent_action.module_id,
|
|
75
|
+
function_name: m.agent_action.function_name
|
|
76
|
+
}
|
|
77
|
+
: undefined))
|
|
78
|
+
.filter((m) => m !== undefined);
|
|
79
|
+
await loadMissingJobs(agentActions);
|
|
80
|
+
job = {
|
|
81
|
+
...agentJob,
|
|
82
|
+
raw_flow: {
|
|
83
|
+
modules: agentActions
|
|
84
|
+
.map((toolCall, idx) => {
|
|
85
|
+
if (toolCall.type === 'message') {
|
|
86
|
+
return {
|
|
87
|
+
id: idx.toString(),
|
|
88
|
+
value: {
|
|
89
|
+
type: 'identity'
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
const module = tools.find((m) => m.summary === toolCall.function_name);
|
|
95
|
+
return module
|
|
96
|
+
? {
|
|
97
|
+
...module,
|
|
98
|
+
id: idx.toString()
|
|
99
|
+
}
|
|
100
|
+
: undefined;
|
|
101
|
+
}
|
|
102
|
+
})
|
|
103
|
+
.filter((m) => m !== undefined)
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
onMount(() => {
|
|
108
|
+
loadToolCalls();
|
|
109
|
+
});
|
|
110
|
+
</script>
|
|
111
|
+
|
|
112
|
+
{#if job}
|
|
113
|
+
<div class="p-2">
|
|
114
|
+
<FlowLogViewerWrapper
|
|
115
|
+
{job}
|
|
116
|
+
localModuleStates={fakeModuleStates}
|
|
117
|
+
{workspaceId}
|
|
118
|
+
render={true}
|
|
119
|
+
onSelectedIteration={async () => {}}
|
|
120
|
+
mode="aiagent"
|
|
121
|
+
/>
|
|
122
|
+
</div>
|
|
123
|
+
{/if}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type CompletedJob, type FlowModule, type Job } from '../gen';
|
|
2
|
+
interface Props {
|
|
3
|
+
tools: FlowModule[];
|
|
4
|
+
agentJob: Partial<CompletedJob> & Pick<CompletedJob, 'id'> & {
|
|
5
|
+
type: 'CompletedJob';
|
|
6
|
+
};
|
|
7
|
+
workspaceId?: string | undefined;
|
|
8
|
+
storedToolCallJobs?: Record<number, Job>;
|
|
9
|
+
onToolJobLoaded?: (job: Job, idx: number) => void;
|
|
10
|
+
}
|
|
11
|
+
declare const AiAgentLogViewer: import("svelte").Component<Props, {}, "">;
|
|
12
|
+
type AiAgentLogViewer = ReturnType<typeof AiAgentLogViewer>;
|
|
13
|
+
export default AiAgentLogViewer;
|
|
@@ -155,20 +155,20 @@ export async function loadResourceTypes() {
|
|
|
155
155
|
});
|
|
156
156
|
connectsManual = availableRts
|
|
157
157
|
.filter((x) => connectAndManual.includes(x) || !Object.keys(connects ?? {}).includes(x))
|
|
158
|
-
.map((x) =>
|
|
159
|
-
x,
|
|
160
|
-
apiTokenApps[x] ?? {
|
|
158
|
+
.map((x) => ({
|
|
159
|
+
key: x,
|
|
160
|
+
...(apiTokenApps[x] ?? {
|
|
161
161
|
instructions: '',
|
|
162
162
|
img: undefined,
|
|
163
163
|
linkedSecret: undefined
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
.sort((a, b) => a
|
|
164
|
+
})
|
|
165
|
+
}))
|
|
166
|
+
.sort((a, b) => a.key.localeCompare(b.key));
|
|
167
167
|
const filteredNativeLanguages = filteredConnectsManual?.filter((o) => nativeLanguagesCategory?.includes(o[0]) ?? false);
|
|
168
168
|
try {
|
|
169
169
|
filteredConnectsManual = [
|
|
170
170
|
...(filteredNativeLanguages ?? []),
|
|
171
|
-
...(filteredConnectsManual ?? []).filter((
|
|
171
|
+
...(filteredConnectsManual ?? []).filter(({ key }) => !nativeLanguagesCategory.includes(key))
|
|
172
172
|
];
|
|
173
173
|
}
|
|
174
174
|
catch (e) { }
|
|
@@ -443,7 +443,7 @@ let editScopes = $state(false);
|
|
|
443
443
|
{filter}
|
|
444
444
|
items={connectsManual}
|
|
445
445
|
bind:filteredItems={filteredConnectsManual}
|
|
446
|
-
f={(x) => x
|
|
446
|
+
f={(x) => x.key}
|
|
447
447
|
/>
|
|
448
448
|
{#if step == 1}
|
|
449
449
|
<div class="w-12/12 pb-2 flex flex-row my-1 gap-1">
|
|
@@ -507,7 +507,7 @@ let editScopes = $state(false);
|
|
|
507
507
|
|
|
508
508
|
<div class="grid sm:grid-cols-2 md:grid-cols-3 gap-x-2 gap-y-1 items-center mb-2">
|
|
509
509
|
{#if filteredConnectsManual}
|
|
510
|
-
{#each filteredConnectsManual as
|
|
510
|
+
{#each filteredConnectsManual as { key }}
|
|
511
511
|
{#if nativeLanguagesCategory.includes(key)}
|
|
512
512
|
<Button
|
|
513
513
|
size="sm"
|
|
@@ -530,7 +530,7 @@ let editScopes = $state(false);
|
|
|
530
530
|
<div class="mt-8 mb-4"></div>
|
|
531
531
|
<div class="grid sm:grid-cols-2 md:grid-cols-3 gap-x-2 gap-y-1 items-center mb-2">
|
|
532
532
|
{#if filteredConnectsManual}
|
|
533
|
-
{#each filteredConnectsManual as
|
|
533
|
+
{#each filteredConnectsManual as { key }}
|
|
534
534
|
{#if !nativeLanguagesCategory.includes(key)}
|
|
535
535
|
<!-- Exclude specific items -->
|
|
536
536
|
<Button
|
|
@@ -9,9 +9,31 @@ import { createEventDispatcher } from 'svelte';
|
|
|
9
9
|
import Label from './Label.svelte';
|
|
10
10
|
import MultiSelect from './select/MultiSelect.svelte';
|
|
11
11
|
import { safeSelectItems } from './select/utils.svelte';
|
|
12
|
+
import { ConfigService } from '../gen';
|
|
12
13
|
let { config = $bindable(), worker_tags } = $props();
|
|
13
14
|
const dispatch = createEventDispatcher();
|
|
14
15
|
let test_input = $state(3);
|
|
16
|
+
let healthCheckLoading = $state(false);
|
|
17
|
+
let healthCheckResult = $state(null);
|
|
18
|
+
async function checkKubernetesHealth() {
|
|
19
|
+
if (!config?.integration || config.integration.type !== 'kubernetes')
|
|
20
|
+
return;
|
|
21
|
+
healthCheckLoading = true;
|
|
22
|
+
healthCheckResult = null;
|
|
23
|
+
try {
|
|
24
|
+
await ConfigService.nativeKubernetesAutoscalingHealthcheck();
|
|
25
|
+
healthCheckResult = { success: true };
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
healthCheckResult = {
|
|
29
|
+
success: false,
|
|
30
|
+
error: error.body || error.message || 'Unknown error'
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
finally {
|
|
34
|
+
healthCheckLoading = false;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
15
37
|
</script>
|
|
16
38
|
|
|
17
39
|
<div class="flex flex-row gap-16 pt-2">
|
|
@@ -253,7 +275,7 @@ let test_input = $state(3);
|
|
|
253
275
|
/>
|
|
254
276
|
<ToggleButton disabled value="ecs" label="ECS (soon)" {item} />
|
|
255
277
|
<ToggleButton disabled value="nomad" label="Nomad (soon)" {item} />
|
|
256
|
-
<ToggleButton
|
|
278
|
+
<ToggleButton value="kubernetes" label="Kubernetes" {item} />
|
|
257
279
|
{/snippet}
|
|
258
280
|
</ToggleButtonGroup>
|
|
259
281
|
|
|
@@ -315,6 +337,58 @@ let test_input = $state(3);
|
|
|
315
337
|
</div>
|
|
316
338
|
</div>
|
|
317
339
|
{/if}
|
|
340
|
+
|
|
341
|
+
{#if config.integration.type === 'kubernetes'}
|
|
342
|
+
<div class="text-sm text-secondary mb-3">
|
|
343
|
+
Kubernetes configuration is automatically inferred from the cluster environment.
|
|
344
|
+
The worker group name and namespace will be detected automatically.
|
|
345
|
+
</div>
|
|
346
|
+
|
|
347
|
+
<div class="flex flex-col gap-3 mt-4">
|
|
348
|
+
<div class="flex items-center gap-2">
|
|
349
|
+
<Button
|
|
350
|
+
color="blue"
|
|
351
|
+
size="xs"
|
|
352
|
+
variant="contained"
|
|
353
|
+
startIcon={{ icon: ExternalLink }}
|
|
354
|
+
href="https://windmill.dev/docs/core_concepts/autoscaling#kubernetes"
|
|
355
|
+
target="_blank"
|
|
356
|
+
>
|
|
357
|
+
Setup Guide (Roles & Bindings)
|
|
358
|
+
</Button>
|
|
359
|
+
<Button
|
|
360
|
+
color="light"
|
|
361
|
+
size="xs"
|
|
362
|
+
variant="contained"
|
|
363
|
+
onclick={checkKubernetesHealth}
|
|
364
|
+
disabled={healthCheckLoading}
|
|
365
|
+
>
|
|
366
|
+
{healthCheckLoading ? 'Checking...' : 'Check Health'}
|
|
367
|
+
</Button>
|
|
368
|
+
</div>
|
|
369
|
+
|
|
370
|
+
{#if healthCheckResult !== null}
|
|
371
|
+
<div class="p-2 rounded-md text-sm {healthCheckResult.success ? 'bg-green-100 dark:bg-green-900/30 text-green-700 dark:text-green-300' : 'bg-red-50 dark:bg-red-900/20 text-red-600 dark:text-red-400'}">
|
|
372
|
+
{#if healthCheckResult.success}
|
|
373
|
+
Kubernetes autoscaling is healthy
|
|
374
|
+
{:else}
|
|
375
|
+
{healthCheckResult.error}
|
|
376
|
+
{#if healthCheckResult.error?.includes('permissions') || healthCheckResult.error?.includes('role')}
|
|
377
|
+
<br><small>Please follow the setup guide above to configure proper RBAC permissions.</small>
|
|
378
|
+
{/if}
|
|
379
|
+
{/if}
|
|
380
|
+
</div>
|
|
381
|
+
{/if}
|
|
382
|
+
|
|
383
|
+
<div class="flex flex-row gap-2">
|
|
384
|
+
<Button color="light" size="xs" variant="contained">Test scaling</Button>
|
|
385
|
+
<div class="flex text-xs flex-row gap-2 items-center">
|
|
386
|
+
<input class="!w-16" type="number" bind:value={test_input} />
|
|
387
|
+
workers
|
|
388
|
+
</div>
|
|
389
|
+
</div>
|
|
390
|
+
</div>
|
|
391
|
+
{/if}
|
|
318
392
|
{:else}
|
|
319
393
|
<ToggleButtonGroup selected={'script'} disabled class="mb-4 mt-2">
|
|
320
394
|
{#snippet children({ item })}
|
|
@@ -322,7 +396,7 @@ let test_input = $state(3);
|
|
|
322
396
|
<ToggleButton value="script" label="Custom script" {item} />
|
|
323
397
|
<ToggleButton value="ecs" label="ECS (soon)" {item} />
|
|
324
398
|
<ToggleButton value="nomad" label="Nomad (soon)" {item} />
|
|
325
|
-
<ToggleButton value="kubernetes" label="Kubernetes
|
|
399
|
+
<ToggleButton value="kubernetes" label="Kubernetes" {item} />
|
|
326
400
|
{/snippet}
|
|
327
401
|
</ToggleButtonGroup>
|
|
328
402
|
|
|
@@ -29,7 +29,6 @@ import { workspaceAIClients } from './copilot/lib';
|
|
|
29
29
|
import { Triggers } from './triggers/triggers.svelte';
|
|
30
30
|
import { TestSteps } from './flows/testSteps.svelte';
|
|
31
31
|
import { ModulesTestStates } from './modulesTest.svelte';
|
|
32
|
-
import { updateDerivedModuleStatesFromTestJobs } from './flows/utils';
|
|
33
32
|
let flowCopilotContext = {
|
|
34
33
|
shouldUpdatePropertyType: writable({}),
|
|
35
34
|
exprsToSet: writable({}),
|
|
@@ -81,7 +80,6 @@ let flowPreviewButtons = $state();
|
|
|
81
80
|
const flowPreviewContent = $derived(flowPreviewButtons?.getFlowPreviewContent());
|
|
82
81
|
const job = $derived(flowPreviewContent?.getJob());
|
|
83
82
|
let showJobStatus = $state(false);
|
|
84
|
-
let testModuleId = $state(undefined);
|
|
85
83
|
let currentScript = $state(undefined);
|
|
86
84
|
let schema = $state(emptySchema());
|
|
87
85
|
const href = window.location.href;
|
|
@@ -371,7 +369,7 @@ async function replaceFlow(lastEdit) {
|
|
|
371
369
|
console.error('issue setting new flowstore', e);
|
|
372
370
|
}
|
|
373
371
|
}
|
|
374
|
-
const flowStateStore =
|
|
372
|
+
const flowStateStore = $state({ val: {} });
|
|
375
373
|
const previewArgsStore = $state({ val: {} });
|
|
376
374
|
const scriptEditorDrawer = writable(undefined);
|
|
377
375
|
const moving = writable(undefined);
|
|
@@ -381,8 +379,6 @@ const selectedIdStore = writable('settings-metadata');
|
|
|
381
379
|
const triggersCount = writable(undefined);
|
|
382
380
|
const modulesTestStates = new ModulesTestStates((moduleId) => {
|
|
383
381
|
// Update the derived store with test job states
|
|
384
|
-
delete $derivedModuleStates[moduleId];
|
|
385
|
-
testModuleId = moduleId;
|
|
386
382
|
showJobStatus = false;
|
|
387
383
|
});
|
|
388
384
|
const outputPickerOpenFns = $state({});
|
|
@@ -448,12 +444,12 @@ async function inferModuleArgs(selectedIdStore) {
|
|
|
448
444
|
mod.value.lock = undefined;
|
|
449
445
|
}
|
|
450
446
|
mod.value.input_transforms = input_transforms;
|
|
451
|
-
if (!deepEqual(schema,
|
|
452
|
-
if (
|
|
453
|
-
|
|
447
|
+
if (!deepEqual(schema, flowStateStore.val[mod.id]?.schema)) {
|
|
448
|
+
if (!flowStateStore.val[mod.id]) {
|
|
449
|
+
flowStateStore.val[mod.id] = { schema };
|
|
454
450
|
}
|
|
455
451
|
else {
|
|
456
|
-
|
|
452
|
+
flowStateStore.val[mod.id].schema = schema;
|
|
457
453
|
}
|
|
458
454
|
reload++;
|
|
459
455
|
}
|
|
@@ -496,20 +492,10 @@ $effect(() => {
|
|
|
496
492
|
$effect(() => {
|
|
497
493
|
$selectedIdStore && untrack(() => inferModuleArgs($selectedIdStore));
|
|
498
494
|
});
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
const suspendStatus = $derived(flowPreviewContent?.getSuspendStatus() ?? writable({}));
|
|
495
|
+
let localModuleStates = $state({});
|
|
496
|
+
let suspendStatus = $state({ val: {} });
|
|
502
497
|
// Create a derived store that only shows the module states when showModuleStatus is true
|
|
503
498
|
// this store can also be updated
|
|
504
|
-
let derivedModuleStates = writable({});
|
|
505
|
-
$effect(() => {
|
|
506
|
-
derivedModuleStates.update((currentStates) => {
|
|
507
|
-
return showJobStatus ? $localModuleStates : currentStates;
|
|
508
|
-
});
|
|
509
|
-
});
|
|
510
|
-
$effect(() => {
|
|
511
|
-
updateDerivedModuleStatesFromTestJobs(testModuleId, modulesTestStates, derivedModuleStates);
|
|
512
|
-
});
|
|
513
499
|
let flowModuleSchemaMap = $state();
|
|
514
500
|
function onJobDone() {
|
|
515
501
|
if (!job) {
|
|
@@ -539,10 +525,8 @@ function onJobDone() {
|
|
|
539
525
|
}
|
|
540
526
|
}
|
|
541
527
|
function resetModulesStates() {
|
|
542
|
-
derivedModuleStates.set({});
|
|
543
528
|
showJobStatus = false;
|
|
544
529
|
}
|
|
545
|
-
const individualStepTests = $derived(!(showJobStatus && job) && Object.keys($derivedModuleStates).length > 0);
|
|
546
530
|
const flowHasChanged = $derived(flowPreviewContent?.flowHasChanged());
|
|
547
531
|
</script>
|
|
548
532
|
|
|
@@ -681,7 +665,7 @@ const flowHasChanged = $derived(flowPreviewContent?.flowHasChanged());
|
|
|
681
665
|
bind:this={flowPreviewButtons}
|
|
682
666
|
{onJobDone}
|
|
683
667
|
onRunPreview={() => {
|
|
684
|
-
localModuleStates
|
|
668
|
+
localModuleStates = {}
|
|
685
669
|
showJobStatus = true
|
|
686
670
|
}}
|
|
687
671
|
/>
|
|
@@ -696,19 +680,20 @@ const flowHasChanged = $derived(flowPreviewContent?.flowHasChanged());
|
|
|
696
680
|
disableTutorials
|
|
697
681
|
smallErrorHandler={true}
|
|
698
682
|
disableStaticInputs
|
|
699
|
-
localModuleStates
|
|
683
|
+
{localModuleStates}
|
|
700
684
|
onTestUpTo={flowPreviewButtons?.testUpTo}
|
|
685
|
+
testModuleStates={modulesTestStates}
|
|
701
686
|
isOwner={flowPreviewContent?.getIsOwner?.()}
|
|
702
687
|
onTestFlow={flowPreviewButtons?.runPreview}
|
|
703
688
|
isRunning={flowPreviewContent?.getIsRunning?.()}
|
|
704
689
|
onCancelTestFlow={flowPreviewContent?.cancelTest}
|
|
705
690
|
onOpenPreview={flowPreviewButtons?.openPreview}
|
|
706
691
|
onHideJobStatus={resetModulesStates}
|
|
707
|
-
{individualStepTests}
|
|
708
692
|
flowJob={job}
|
|
709
693
|
{showJobStatus}
|
|
710
694
|
onDelete={(id) => {
|
|
711
|
-
delete
|
|
695
|
+
delete localModuleStates[id]
|
|
696
|
+
delete modulesTestStates.states[id]
|
|
712
697
|
}}
|
|
713
698
|
{flowHasChanged}
|
|
714
699
|
/>
|
|
@@ -733,7 +718,6 @@ const flowHasChanged = $derived(flowPreviewContent?.flowHasChanged());
|
|
|
733
718
|
onTestFlow={flowPreviewButtons?.runPreview}
|
|
734
719
|
{job}
|
|
735
720
|
isOwner={flowPreviewContent?.getIsOwner()}
|
|
736
|
-
{localDurationStatuses}
|
|
737
721
|
{suspendStatus}
|
|
738
722
|
onOpenDetails={flowPreviewButtons?.openPreview}
|
|
739
723
|
/>
|
|
@@ -16,6 +16,7 @@ export let defaultOriginal = undefined;
|
|
|
16
16
|
export let defaultModified = undefined;
|
|
17
17
|
export let readOnly = false;
|
|
18
18
|
export let showButtons = false;
|
|
19
|
+
export let showHistoryButton = true;
|
|
19
20
|
let diffEditor;
|
|
20
21
|
let diffDivEl = null;
|
|
21
22
|
let editorWidth = SIDE_BY_SIDE_MIN_WIDTH;
|
|
@@ -103,9 +104,11 @@ const dispatch = createEventDispatcher();
|
|
|
103
104
|
<div
|
|
104
105
|
class="absolute flex flex-row gap-2 bottom-10 left-1/2 z-10 -translate-x-1/2 rounded-md p-1 w-full justify-center"
|
|
105
106
|
>
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
107
|
+
{#if showHistoryButton}
|
|
108
|
+
<Button on:click={() => dispatch('seeHistory')} variant="contained" size="sm"
|
|
109
|
+
>See changes history</Button
|
|
110
|
+
>
|
|
111
|
+
{/if}
|
|
109
112
|
<Button on:click={() => dispatch('hideDiffMode')} variant="contained" size="sm" color="red"
|
|
110
113
|
>Quit diff mode</Button
|
|
111
114
|
>
|
|
@@ -24,6 +24,7 @@ declare const DiffEditor: $$__sveltets_2_IsomorphicComponent<{
|
|
|
24
24
|
defaultModified?: string | undefined | undefined;
|
|
25
25
|
readOnly?: boolean | undefined;
|
|
26
26
|
showButtons?: boolean | undefined;
|
|
27
|
+
showHistoryButton?: boolean | undefined;
|
|
27
28
|
open?: boolean | undefined;
|
|
28
29
|
setupModel?: ((lang: string, original?: string, modified?: string, modifiedLang?: string) => void) | undefined;
|
|
29
30
|
setOriginal?: ((code: string) => void) | undefined;
|
|
@@ -26,13 +26,14 @@ import { getContext, hasContext, createEventDispatcher, onDestroy } from 'svelte
|
|
|
26
26
|
import { toJsonStr } from '../utils';
|
|
27
27
|
import { userStore } from '../stores';
|
|
28
28
|
import ResultStreamDisplay from './ResultStreamDisplay.svelte';
|
|
29
|
+
import { twMerge } from 'tailwind-merge';
|
|
29
30
|
const IMG_MAX_SIZE = 10000000;
|
|
30
31
|
const TABLE_MAX_SIZE = 5000000;
|
|
31
32
|
const DISPLAY_MAX_SIZE = 100000;
|
|
32
33
|
const dispatch = createEventDispatcher();
|
|
33
34
|
let resultKind = $state();
|
|
34
35
|
let hasBigInt = $state(false);
|
|
35
|
-
let { result, requireHtmlApproval = false, filename = undefined, disableExpand = false, jobId = undefined, workspaceId = undefined, hideAsJson = false, noControls = false, drawerOpen = $bindable(false), nodeId = undefined, language = undefined, appPath = undefined, customUi = undefined, isTest = true, externalToolbarAvailable = false, forceJson = $bindable(false), result_stream = undefined, fixTableSizingToParent = false, copilot_fix, children, loading = false } = $props();
|
|
36
|
+
let { result, requireHtmlApproval = false, filename = undefined, disableExpand = false, jobId = undefined, workspaceId = undefined, hideAsJson = false, noControls = false, drawerOpen = $bindable(false), nodeId = undefined, language = undefined, appPath = undefined, customUi = undefined, isTest = true, externalToolbarAvailable = false, forceJson = $bindable(false), result_stream = undefined, fixTableSizingToParent = false, copilot_fix, children, loading = false, growVertical = false } = $props();
|
|
36
37
|
let enableHtml = $state(false);
|
|
37
38
|
let s3FileDisplayRawMode = $state(false);
|
|
38
39
|
function isTableRow(result) {
|
|
@@ -401,11 +402,11 @@ $effect(() => {
|
|
|
401
402
|
<div class="text-red-400">Non displayable object</div>
|
|
402
403
|
{:else}
|
|
403
404
|
<div
|
|
404
|
-
class=
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
? ''
|
|
408
|
-
|
|
405
|
+
class={twMerge(
|
|
406
|
+
'inline-highlight relative grow flex flex-col',
|
|
407
|
+
['plain', 'markdown'].includes(resultKind ?? '') ? 'min-h-0' : 'min-h-[160px]',
|
|
408
|
+
growVertical ? '' : 'h-full'
|
|
409
|
+
)}
|
|
409
410
|
>
|
|
410
411
|
{#if result != undefined && length != undefined && largeObject != undefined}
|
|
411
412
|
<div class="flex justify-between items-center w-full">
|
|
@@ -460,7 +461,8 @@ $effect(() => {
|
|
|
460
461
|
</div>
|
|
461
462
|
<div class="grow relative">
|
|
462
463
|
{#if !forceJson && resultKind === 'table-col'}
|
|
463
|
-
{@const data =
|
|
464
|
+
{@const data =
|
|
465
|
+
typeof result === 'object' && 'table-col' in result ? result['table-col'] : result}
|
|
464
466
|
<AutoDataTable
|
|
465
467
|
class={fixTableSizingToParent
|
|
466
468
|
? 'absolute inset-0 [&>div]:h-full [&>div]:min-h-[10rem]'
|
|
@@ -468,7 +470,8 @@ $effect(() => {
|
|
|
468
470
|
objects={objectOfArraysToObjects(data)}
|
|
469
471
|
/>
|
|
470
472
|
{:else if !forceJson && resultKind === 'table-row'}
|
|
471
|
-
{@const data =
|
|
473
|
+
{@const data =
|
|
474
|
+
typeof result === 'object' && 'table-row' in result ? result['table-row'] : result}
|
|
472
475
|
<AutoDataTable
|
|
473
476
|
class={fixTableSizingToParent
|
|
474
477
|
? 'absolute inset-0 [&>div]:h-full [&>div]:min-h-[10rem]'
|
|
@@ -476,7 +479,10 @@ $effect(() => {
|
|
|
476
479
|
objects={arrayOfRowsToObjects(data)}
|
|
477
480
|
/>
|
|
478
481
|
{:else if !forceJson && resultKind === 'table-row-object'}
|
|
479
|
-
{@const data =
|
|
482
|
+
{@const data =
|
|
483
|
+
typeof result === 'object' && 'table-row-object' in result
|
|
484
|
+
? result['table-row-object']
|
|
485
|
+
: result}
|
|
480
486
|
<AutoDataTable
|
|
481
487
|
class={fixTableSizingToParent
|
|
482
488
|
? 'absolute inset-0 [&>div]:h-full [&>div]:min-h-[10rem]'
|
|
@@ -781,7 +787,7 @@ $effect(() => {
|
|
|
781
787
|
>
|
|
782
788
|
</button>
|
|
783
789
|
{:else if !s3object?.disable_download}
|
|
784
|
-
<FileDownload {s3object} />
|
|
790
|
+
<FileDownload {workspaceId} {s3object} {appPath} />
|
|
785
791
|
{:else}
|
|
786
792
|
<div class="flex text-secondary pt-2">{s3object?.s3} (download disabled)</div>
|
|
787
793
|
{/if}
|
|
@@ -22,6 +22,7 @@ interface Props {
|
|
|
22
22
|
fixTableSizingToParent?: boolean;
|
|
23
23
|
copilot_fix?: import('svelte').Snippet;
|
|
24
24
|
children?: import('svelte').Snippet;
|
|
25
|
+
growVertical?: boolean;
|
|
25
26
|
}
|
|
26
27
|
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> {
|
|
27
28
|
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
@@ -93,6 +93,7 @@ function alignOrderWithProperties(schema) {
|
|
|
93
93
|
function onSchemaChange() {
|
|
94
94
|
let editSchema = false;
|
|
95
95
|
if (alignOrderWithProperties(schema)) {
|
|
96
|
+
console.log('alignOrderWithProperties', JSON.stringify(schema, null, 2));
|
|
96
97
|
editSchema = true;
|
|
97
98
|
}
|
|
98
99
|
let lkeys = schema?.order ?? Object.keys(schema?.properties ?? {});
|
|
@@ -585,7 +586,8 @@ function updateDynSelectCode(functionName, lang = 'bun') {
|
|
|
585
586
|
property_1: {
|
|
586
587
|
type: 'string'
|
|
587
588
|
}
|
|
588
|
-
}
|
|
589
|
+
},
|
|
590
|
+
order: ['property_1']
|
|
589
591
|
},
|
|
590
592
|
{
|
|
591
593
|
title: 'Option 2',
|
|
@@ -598,7 +600,8 @@ function updateDynSelectCode(functionName, lang = 'bun') {
|
|
|
598
600
|
property_2: {
|
|
599
601
|
type: 'string'
|
|
600
602
|
}
|
|
601
|
-
}
|
|
603
|
+
},
|
|
604
|
+
order: ['property_2']
|
|
602
605
|
}
|
|
603
606
|
]
|
|
604
607
|
}
|
|
@@ -83,7 +83,7 @@ import { MonacoLanguageClient } from 'monaco-languageclient';
|
|
|
83
83
|
import { toSocket, WebSocketMessageReader, WebSocketMessageWriter } from 'vscode-ws-jsonrpc';
|
|
84
84
|
import { CloseAction, ErrorAction, RequestType } from 'vscode-languageclient';
|
|
85
85
|
import { MonacoBinding } from 'y-monaco';
|
|
86
|
-
import { dbSchemas, copilotInfo, codeCompletionSessionEnabled, lspTokenStore, formatOnSave, vimMode } from '../stores';
|
|
86
|
+
import { dbSchemas, copilotInfo, codeCompletionSessionEnabled, lspTokenStore, formatOnSave, vimMode, relativeLineNumbers } from '../stores';
|
|
87
87
|
import { editorConfig, updateOptions } from '../editorUtils';
|
|
88
88
|
import { createHash as randomHash } from '../editorLangUtils';
|
|
89
89
|
import { workspaceStore } from '../stores';
|
|
@@ -107,9 +107,10 @@ import AIChatInlineWidget from './copilot/chat/AIChatInlineWidget.svelte';
|
|
|
107
107
|
import { writable } from 'svelte/store';
|
|
108
108
|
import { formatResourceTypes } from './copilot/chat/script/core';
|
|
109
109
|
import FakeMonacoPlaceHolder from './FakeMonacoPlaceHolder.svelte';
|
|
110
|
-
import { editorPositionMap } from '../utils';
|
|
110
|
+
import { editorPositionMap, readFieldsRecursively } from '../utils';
|
|
111
111
|
import { extToLang, langToExt } from '../editorLangUtils';
|
|
112
112
|
import { aiChatManager } from './copilot/chat/AIChatManager.svelte';
|
|
113
|
+
import { getDbSchemas } from './apps/components/display/dbtable/utils';
|
|
113
114
|
// import EditorTheme from './EditorTheme.svelte'
|
|
114
115
|
let divEl = $state(null);
|
|
115
116
|
let editor = $state(null);
|
|
@@ -405,10 +406,17 @@ function addSqlTypeCompletions() {
|
|
|
405
406
|
});
|
|
406
407
|
}
|
|
407
408
|
let sqlSchemaCompletor = undefined;
|
|
408
|
-
function updateSchema() {
|
|
409
|
+
async function updateSchema() {
|
|
409
410
|
const newSchemaRes = lang === 'graphql' ? args?.api : args?.database;
|
|
410
411
|
if (typeof newSchemaRes === 'string') {
|
|
411
|
-
|
|
412
|
+
const resourcePath = newSchemaRes.replace('$res:', '');
|
|
413
|
+
dbSchema = $dbSchemas[resourcePath];
|
|
414
|
+
if (lang === 'graphql' && dbSchema === undefined) {
|
|
415
|
+
await getDbSchemas(lang, resourcePath, $workspaceStore, $dbSchemas, (e) => {
|
|
416
|
+
console.error('error getting graphql db schema', e);
|
|
417
|
+
});
|
|
418
|
+
dbSchema = $dbSchemas[resourcePath];
|
|
419
|
+
}
|
|
412
420
|
}
|
|
413
421
|
else {
|
|
414
422
|
dbSchema = undefined;
|
|
@@ -425,8 +433,10 @@ function addDBSchemaCompletions() {
|
|
|
425
433
|
if (!schemaLang || !schema) {
|
|
426
434
|
return;
|
|
427
435
|
}
|
|
436
|
+
console.log('adding db schema completions', schemaLang);
|
|
428
437
|
if (schemaLang === 'graphql') {
|
|
429
438
|
graphqlService ||= initializeMode();
|
|
439
|
+
console.log('setting schema config', schema);
|
|
430
440
|
graphqlService?.setSchemaConfig([
|
|
431
441
|
{
|
|
432
442
|
uri: 'my-schema.graphql',
|
|
@@ -519,8 +529,8 @@ let aiChatEditorHandler = $state(undefined);
|
|
|
519
529
|
let showInlineAIChat = $state(false);
|
|
520
530
|
let inlineAIChatSelection = $state(null);
|
|
521
531
|
let selectedCode = $state('');
|
|
522
|
-
export function reviewAndApplyCode(code) {
|
|
523
|
-
aiChatEditorHandler?.reviewAndApply(code);
|
|
532
|
+
export function reviewAndApplyCode(code, applyAll = false) {
|
|
533
|
+
aiChatEditorHandler?.reviewAndApply(code, applyAll);
|
|
524
534
|
}
|
|
525
535
|
function addChatHandler(editor) {
|
|
526
536
|
try {
|
|
@@ -990,7 +1000,7 @@ async function loadMonaco() {
|
|
|
990
1000
|
onFileChanges();
|
|
991
1001
|
try {
|
|
992
1002
|
editor = meditor.create(divEl, {
|
|
993
|
-
...editorConfig(code ?? '', lang, automaticLayout, fixedOverflowWidgets),
|
|
1003
|
+
...editorConfig(code ?? '', lang, automaticLayout, fixedOverflowWidgets, $relativeLineNumbers),
|
|
994
1004
|
model,
|
|
995
1005
|
fontSize: !small ? 14 : 12,
|
|
996
1006
|
lineNumbersMinChars,
|
|
@@ -1313,9 +1323,12 @@ $effect(() => {
|
|
|
1313
1323
|
: sqlTypeCompletor?.dispose();
|
|
1314
1324
|
});
|
|
1315
1325
|
$effect(() => {
|
|
1316
|
-
|
|
1326
|
+
console.log('updating schema', lang, $dbSchemas);
|
|
1327
|
+
readFieldsRecursively(args);
|
|
1328
|
+
lang && $dbSchemas && untrack(() => updateSchema());
|
|
1317
1329
|
});
|
|
1318
1330
|
$effect(() => {
|
|
1331
|
+
console.log('updating db schema completions', dbSchema, lang);
|
|
1319
1332
|
initialized &&
|
|
1320
1333
|
dbSchema &&
|
|
1321
1334
|
['sql', 'graphql'].includes(lang) &&
|
|
@@ -1361,6 +1374,11 @@ $effect(() => {
|
|
|
1361
1374
|
$effect(() => {
|
|
1362
1375
|
files && model && untrack(() => onFileChanges());
|
|
1363
1376
|
});
|
|
1377
|
+
$effect(() => {
|
|
1378
|
+
editor?.updateOptions({
|
|
1379
|
+
lineNumbers: $relativeLineNumbers ? 'relative' : 'on'
|
|
1380
|
+
});
|
|
1381
|
+
});
|
|
1364
1382
|
</script>
|
|
1365
1383
|
|
|
1366
1384
|
<svelte:window onkeydown={onKeyDown} />
|