@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.
Files changed (38) hide show
  1. package/README.md +5 -0
  2. package/dist/components/ConfigPanel.svelte +7 -1
  3. package/dist/components/NodeSwapPicker.svelte +5 -1
  4. package/dist/components/PipelineStatus.svelte +11 -2
  5. package/dist/components/SettingsPanel.svelte +5 -1
  6. package/dist/components/WorkflowEditor.svelte +5 -1
  7. package/dist/components/chat/AIChatPanel.svelte +1 -5
  8. package/dist/components/form/FormAutocomplete.svelte +2 -5
  9. package/dist/components/interrupt/ChoicePrompt.svelte +5 -1
  10. package/dist/components/interrupt/InterruptBubble.svelte +4 -5
  11. package/dist/components/playground/ChatBubble.svelte +6 -8
  12. package/dist/components/playground/ChatInput.svelte +11 -5
  13. package/dist/components/playground/ControlPanel.svelte +42 -29
  14. package/dist/components/playground/ExecutionConsole.svelte +5 -1
  15. package/dist/components/playground/ExecutionConsole.svelte.d.ts +2 -0
  16. package/dist/components/playground/ExecutionList.svelte +7 -2
  17. package/dist/components/playground/LogRow.svelte +2 -1
  18. package/dist/components/playground/MessageBubble.svelte +1 -4
  19. package/dist/components/playground/MessageCard.svelte +2 -1
  20. package/dist/components/playground/MessageMarkdown.svelte +15 -5
  21. package/dist/components/playground/MessageNotice.svelte +2 -1
  22. package/dist/components/playground/MessageStream.svelte +138 -17
  23. package/dist/components/playground/MessageStream.svelte.d.ts +5 -0
  24. package/dist/components/playground/MessageTagChip.svelte +24 -6
  25. package/dist/components/playground/PipelineKanbanView.svelte +40 -11
  26. package/dist/components/playground/PipelinePanel.svelte +5 -1
  27. package/dist/components/playground/PipelineTableView.svelte +20 -6
  28. package/dist/components/playground/Playground.svelte +84 -22
  29. package/dist/components/playground/PlaygroundStudio.svelte +21 -7
  30. package/dist/components/playground/pipelineViewUtils.svelte.js +11 -4
  31. package/dist/openapi/v1/openapi.yaml +6403 -0
  32. package/dist/schemas/v1/workflow.schema.json +36 -0
  33. package/dist/services/playgroundService.d.ts +23 -4
  34. package/dist/services/playgroundService.js +22 -9
  35. package/dist/stores/playgroundStore.svelte.d.ts +22 -1
  36. package/dist/stores/playgroundStore.svelte.js +109 -32
  37. package/dist/types/playground.d.ts +36 -2
  38. 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 { getPipelinePanelOpen, pipelinePanelActions } from '../../stores/pipelinePanelStore.svelte.js';
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
- getCurrentSession,
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 = 'Provide a workflow prop or an endpointConfig so the workflow can be fetched.';
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 class="playground-studio" class:playground-studio--resizing={isResizing} style="--playground-studio-min-chat-width: {minChatWidth}px">
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 = getCurrentSession()?.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', 'pending', 'running', 'paused', 'interrupted',
5
- 'completed', 'skipped', 'failed', 'cancelled'
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
  }