@flowdrop/flowdrop 1.13.0 → 1.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/dist/components/ConfigPanel.svelte +7 -1
- package/dist/components/NodeSwapPicker.svelte +5 -1
- package/dist/components/PipelineStatus.svelte +11 -2
- package/dist/components/SettingsPanel.svelte +5 -1
- package/dist/components/WorkflowEditor.svelte +5 -1
- package/dist/components/chat/AIChatPanel.svelte +1 -5
- package/dist/components/form/FormAutocomplete.svelte +2 -5
- package/dist/components/interrupt/ChoicePrompt.svelte +5 -1
- package/dist/components/interrupt/InterruptBubble.svelte +4 -5
- package/dist/components/playground/ChatBubble.svelte +6 -8
- package/dist/components/playground/ChatInput.svelte +11 -5
- package/dist/components/playground/ControlPanel.svelte +42 -29
- package/dist/components/playground/ExecutionConsole.svelte +5 -1
- package/dist/components/playground/ExecutionConsole.svelte.d.ts +2 -0
- package/dist/components/playground/ExecutionList.svelte +7 -2
- package/dist/components/playground/LogRow.svelte +2 -1
- package/dist/components/playground/MessageBubble.svelte +1 -4
- package/dist/components/playground/MessageCard.svelte +2 -1
- package/dist/components/playground/MessageMarkdown.svelte +15 -5
- package/dist/components/playground/MessageNotice.svelte +2 -1
- package/dist/components/playground/MessageStream.svelte +138 -17
- package/dist/components/playground/MessageStream.svelte.d.ts +5 -0
- package/dist/components/playground/MessageTagChip.svelte +24 -6
- package/dist/components/playground/PipelineKanbanView.svelte +40 -11
- package/dist/components/playground/PipelinePanel.svelte +5 -1
- package/dist/components/playground/PipelineTableView.svelte +20 -6
- package/dist/components/playground/Playground.svelte +84 -22
- package/dist/components/playground/PlaygroundStudio.svelte +21 -7
- package/dist/components/playground/pipelineViewUtils.svelte.js +11 -4
- package/dist/openapi/v1/openapi.yaml +6403 -0
- package/dist/schemas/v1/workflow.schema.json +36 -0
- package/dist/services/playgroundService.d.ts +23 -4
- package/dist/services/playgroundService.js +22 -9
- package/dist/stores/playgroundStore.svelte.d.ts +22 -1
- package/dist/stores/playgroundStore.svelte.js +109 -32
- package/dist/types/playground.d.ts +36 -2
- package/package.json +7 -1
|
@@ -3,14 +3,17 @@
|
|
|
3
3
|
import Icon from '@iconify/svelte';
|
|
4
4
|
import Playground from './Playground.svelte';
|
|
5
5
|
import PipelinePanel from './PipelinePanel.svelte';
|
|
6
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
getPipelinePanelOpen,
|
|
8
|
+
pipelinePanelActions
|
|
9
|
+
} from '../../stores/pipelinePanelStore.svelte.js';
|
|
7
10
|
import {
|
|
8
11
|
getActiveExecutionId,
|
|
9
12
|
getPinnedExecutionId,
|
|
10
13
|
getLatestExecutionId,
|
|
11
14
|
getPipelineRefreshTrigger,
|
|
12
|
-
|
|
13
|
-
playgroundActions
|
|
15
|
+
getSelectableExecutions,
|
|
16
|
+
playgroundActions
|
|
14
17
|
} from '../../stores/playgroundStore.svelte.js';
|
|
15
18
|
import { setEndpointConfig, workflowApi } from '../../services/api.js';
|
|
16
19
|
import { logger } from '../../utils/logger.js';
|
|
@@ -57,14 +60,17 @@
|
|
|
57
60
|
initialPipelineWidth = 500,
|
|
58
61
|
onSessionNavigate,
|
|
59
62
|
onClose,
|
|
60
|
-
extraPipelineViews = []
|
|
63
|
+
extraPipelineViews = []
|
|
61
64
|
}: Props = $props();
|
|
62
65
|
|
|
66
|
+
// svelte-ignore state_referenced_locally — seed mutable state from the prop's initial value; workflow may load asynchronously below
|
|
63
67
|
let resolvedWorkflow = $state<Workflow | null>(workflowProp ?? null);
|
|
68
|
+
// svelte-ignore state_referenced_locally — initial loading flag derived from whether a workflow was provided up front
|
|
64
69
|
let workflowLoading = $state(workflowProp === undefined);
|
|
65
70
|
let workflowError = $state<string | null>(null);
|
|
66
71
|
|
|
67
72
|
let splitEl = $state<HTMLElement | null>(null);
|
|
73
|
+
// svelte-ignore state_referenced_locally — seed mutable width from the initial prop; it changes as the user drags the resizer
|
|
68
74
|
let pipelineWidth = $state(initialPipelineWidth);
|
|
69
75
|
let isResizing = $state(false);
|
|
70
76
|
let containerWidth = $state(0);
|
|
@@ -100,7 +106,8 @@
|
|
|
100
106
|
|
|
101
107
|
async function loadWorkflow(): Promise<void> {
|
|
102
108
|
if (!endpointConfig) {
|
|
103
|
-
workflowError =
|
|
109
|
+
workflowError =
|
|
110
|
+
'Provide a workflow prop or an endpointConfig so the workflow can be fetched.';
|
|
104
111
|
workflowLoading = false;
|
|
105
112
|
return;
|
|
106
113
|
}
|
|
@@ -149,11 +156,15 @@
|
|
|
149
156
|
}
|
|
150
157
|
</script>
|
|
151
158
|
|
|
152
|
-
<div
|
|
159
|
+
<div
|
|
160
|
+
class="playground-studio"
|
|
161
|
+
class:playground-studio--resizing={isResizing}
|
|
162
|
+
style="--playground-studio-min-chat-width: {minChatWidth}px"
|
|
163
|
+
>
|
|
153
164
|
<div class="playground-studio__panes" bind:this={splitEl}>
|
|
154
165
|
{#if getPipelinePanelOpen() && resolvedWorkflow && endpointConfig}
|
|
155
166
|
{@const activeId = getActiveExecutionId()}
|
|
156
|
-
{@const executions =
|
|
167
|
+
{@const executions = getSelectableExecutions()}
|
|
157
168
|
|
|
158
169
|
<div class="playground-studio__pipeline" style="width: {pipelineWidth}px;">
|
|
159
170
|
<button
|
|
@@ -178,6 +189,9 @@
|
|
|
178
189
|
/>
|
|
179
190
|
</div>
|
|
180
191
|
|
|
192
|
+
<!-- Focusable ARIA splitter: keyboard/pointer handlers drive the resize -->
|
|
193
|
+
<!-- svelte-ignore a11y_no_noninteractive_tabindex -->
|
|
194
|
+
<!-- svelte-ignore a11y_no_noninteractive_element_interactions -->
|
|
181
195
|
<div
|
|
182
196
|
class="playground-studio__resizer"
|
|
183
197
|
class:playground-studio__resizer--active={isResizing}
|
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
import { EnhancedFlowDropApiClient } from '../../api/enhanced-client.js';
|
|
2
2
|
import { logger } from '../../utils/logger.js';
|
|
3
3
|
const KNOWN_STATUSES = new Set([
|
|
4
|
-
'idle',
|
|
5
|
-
'
|
|
4
|
+
'idle',
|
|
5
|
+
'pending',
|
|
6
|
+
'running',
|
|
7
|
+
'paused',
|
|
8
|
+
'interrupted',
|
|
9
|
+
'completed',
|
|
10
|
+
'skipped',
|
|
11
|
+
'failed',
|
|
12
|
+
'cancelled'
|
|
6
13
|
]);
|
|
7
14
|
export function resolveStatus(raw) {
|
|
8
15
|
if (!raw)
|
|
@@ -36,7 +43,7 @@ export function createPipelineDataFetcher(getPipelineId, endpointConfig) {
|
|
|
36
43
|
status: info.status,
|
|
37
44
|
last_executed: info.last_executed,
|
|
38
45
|
execution_time: info.execution_time,
|
|
39
|
-
error: info.error
|
|
46
|
+
error: info.error
|
|
40
47
|
};
|
|
41
48
|
}
|
|
42
49
|
nodeStatusMap = map;
|
|
@@ -48,7 +55,7 @@ export function createPipelineDataFetcher(getPipelineId, endpointConfig) {
|
|
|
48
55
|
label: col.label,
|
|
49
56
|
statuses: col.statuses,
|
|
50
57
|
icon: col.icon,
|
|
51
|
-
color: col.color
|
|
58
|
+
color: col.color
|
|
52
59
|
}));
|
|
53
60
|
}
|
|
54
61
|
}
|