@d34dman/flowdrop 0.0.63 → 0.0.65
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 +2 -0
- package/dist/adapters/agentspec/AgentSpecAdapter.js +1 -40
- package/dist/api/enhanced-client.d.ts +19 -0
- package/dist/api/enhanced-client.js +9 -0
- package/dist/components/App.svelte +32 -36
- package/dist/components/CanvasBanner.stories.svelte +12 -8
- package/dist/components/CanvasBanner.stories.svelte.d.ts +1 -1
- package/dist/components/ConfigModal.svelte +7 -11
- package/dist/components/ConfigModal.svelte.d.ts +5 -23
- package/dist/components/ConfigPanel.stories.svelte +35 -26
- package/dist/components/ConfigPanel.stories.svelte.d.ts +1 -1
- package/dist/components/LoadingSpinner.stories.svelte +13 -13
- package/dist/components/LoadingSpinner.stories.svelte.d.ts +1 -1
- package/dist/components/Logo.stories.svelte +4 -4
- package/dist/components/Logo.stories.svelte.d.ts +1 -1
- package/dist/components/LogsSidebar.svelte +6 -9
- package/dist/components/LogsSidebar.svelte.d.ts +3 -20
- package/dist/components/MarkdownDisplay.stories.svelte +25 -10
- package/dist/components/MarkdownDisplay.stories.svelte.d.ts +1 -1
- package/dist/components/Navbar.stories.svelte +42 -30
- package/dist/components/Navbar.stories.svelte.d.ts +1 -1
- package/dist/components/Navbar.svelte +6 -3
- package/dist/components/NodeSidebar.svelte +1 -0
- package/dist/components/NodeStatusOverlay.stories.svelte +61 -50
- package/dist/components/NodeStatusOverlay.stories.svelte.d.ts +1 -1
- package/dist/components/NodeStatusOverlay.svelte +4 -4
- package/dist/components/PipelineStatus.svelte +10 -12
- package/dist/components/PipelineStatus.svelte.d.ts +2 -2
- package/dist/components/SchemaForm.stories.svelte +97 -82
- package/dist/components/SchemaForm.stories.svelte.d.ts +1 -1
- package/dist/components/SchemaForm.svelte +6 -2
- package/dist/components/SettingsPanel.svelte +6 -1
- package/dist/components/StatusIcon.stories.svelte +15 -15
- package/dist/components/StatusIcon.stories.svelte.d.ts +1 -1
- package/dist/components/StatusIcon.svelte +1 -1
- package/dist/components/StatusLabel.stories.svelte +8 -8
- package/dist/components/StatusLabel.stories.svelte.d.ts +1 -1
- package/dist/components/ThemeToggle.stories.svelte +10 -10
- package/dist/components/ThemeToggle.stories.svelte.d.ts +1 -1
- package/dist/components/WorkflowEditor.svelte +23 -5
- package/dist/components/form/FormAutocomplete.svelte +2 -0
- package/dist/components/form/FormCheckboxGroup.stories.svelte +13 -13
- package/dist/components/form/FormCheckboxGroup.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormField.svelte +2 -2
- package/dist/components/form/FormFieldLight.svelte +4 -4
- package/dist/components/form/FormFieldWrapper.stories.svelte +38 -16
- package/dist/components/form/FormFieldWrapper.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormNumberField.stories.svelte +21 -18
- package/dist/components/form/FormNumberField.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormRangeField.stories.svelte +13 -13
- package/dist/components/form/FormRangeField.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormSelect.stories.svelte +21 -21
- package/dist/components/form/FormSelect.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormTemplateEditor.svelte +0 -13
- package/dist/components/form/FormTemplateEditor.svelte.d.ts +1 -7
- package/dist/components/form/FormTextField.stories.svelte +17 -17
- package/dist/components/form/FormTextField.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormTextarea.stories.svelte +21 -18
- package/dist/components/form/FormTextarea.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormToggle.stories.svelte +13 -13
- package/dist/components/form/FormToggle.stories.svelte.d.ts +1 -1
- package/dist/components/form/index.d.ts +2 -1
- package/dist/components/form/index.js +1 -2
- package/dist/components/form/types.d.ts +8 -20
- package/dist/components/form/types.js +3 -8
- package/dist/components/interrupt/ChoicePrompt.stories.svelte +37 -28
- package/dist/components/interrupt/ChoicePrompt.stories.svelte.d.ts +1 -1
- package/dist/components/interrupt/ConfirmationPrompt.stories.svelte +57 -35
- package/dist/components/interrupt/ConfirmationPrompt.stories.svelte.d.ts +1 -1
- package/dist/components/interrupt/FormPrompt.svelte +1 -0
- package/dist/components/interrupt/ReviewPrompt.stories.svelte +52 -31
- package/dist/components/interrupt/ReviewPrompt.stories.svelte.d.ts +1 -1
- package/dist/components/interrupt/ReviewPrompt.svelte +44 -25
- package/dist/components/interrupt/TextInputPrompt.stories.svelte +32 -19
- package/dist/components/interrupt/TextInputPrompt.stories.svelte.d.ts +1 -1
- package/dist/components/interrupt/TextInputPrompt.svelte +1 -0
- package/dist/components/layouts/MainLayout.svelte +3 -0
- package/dist/components/nodes/GatewayNode.stories.svelte +96 -64
- package/dist/components/nodes/IdeaNode.stories.svelte +40 -36
- package/dist/components/nodes/NotesNode.stories.svelte +61 -54
- package/dist/components/nodes/SimpleNode.stories.svelte +141 -83
- package/dist/components/nodes/SquareNode.stories.svelte +70 -44
- package/dist/components/nodes/TerminalNode.stories.svelte +10 -10
- package/dist/components/nodes/TerminalNode.svelte +6 -2
- package/dist/components/nodes/ToolNode.stories.svelte +177 -59
- package/dist/components/nodes/WorkflowNode.stories.svelte +43 -38
- package/dist/components/playground/MessageBubble.stories.svelte +51 -38
- package/dist/components/playground/MessageBubble.stories.svelte.d.ts +1 -1
- package/dist/components/playground/Playground.svelte +2 -4
- package/dist/config/constants.d.ts +21 -0
- package/dist/config/constants.js +9 -0
- package/dist/core/index.d.ts +7 -5
- package/dist/core/index.js +5 -5
- package/dist/editor/index.d.ts +4 -4
- package/dist/editor/index.js +3 -4
- package/dist/form/code.js +16 -4
- package/dist/form/fieldRegistry.d.ts +8 -82
- package/dist/form/fieldRegistry.js +9 -101
- package/dist/form/full.d.ts +4 -1
- package/dist/form/full.js +6 -1
- package/dist/form/index.d.ts +1 -1
- package/dist/form/index.js +0 -2
- package/dist/form/markdown.js +11 -3
- package/dist/helpers/workflowEditorHelper.d.ts +0 -3
- package/dist/helpers/workflowEditorHelper.js +7 -26
- package/dist/index.js +3 -0
- package/dist/services/apiVariableService.d.ts +1 -3
- package/dist/services/apiVariableService.js +3 -4
- package/dist/services/dynamicSchemaService.js +3 -4
- package/dist/stories/CanvasDecorator.svelte +7 -8
- package/dist/stories/CanvasDecorator.svelte.d.ts +2 -2
- package/dist/stories/NodeDecorator.svelte +13 -14
- package/dist/stories/NodeDecorator.svelte.d.ts +1 -1
- package/dist/stories/utils.d.ts +2 -2
- package/dist/stories/utils.js +55 -55
- package/dist/styles/base.css +12 -4
- package/dist/styles/tokens.css +138 -130
- package/dist/types/interrupt.d.ts +1 -4
- package/dist/utils/errors.d.ts +28 -0
- package/dist/utils/errors.js +44 -0
- package/dist/utils/handleIds.d.ts +35 -0
- package/dist/utils/handleIds.js +58 -0
- package/package.json +53 -12
- package/dist/api/client.d.ts +0 -110
- package/dist/api/client.js +0 -240
|
@@ -11,7 +11,7 @@ declare const ReviewPrompt: $$__sveltets_2_IsomorphicComponent<{
|
|
|
11
11
|
}, {
|
|
12
12
|
[evt: string]: CustomEvent<any>;
|
|
13
13
|
}, {}, {}, string>;
|
|
14
|
-
import ReviewPrompt from
|
|
14
|
+
import ReviewPrompt from './ReviewPrompt.svelte';
|
|
15
15
|
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> {
|
|
16
16
|
new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
|
|
17
17
|
$$bindings?: Bindings;
|
|
@@ -50,11 +50,13 @@
|
|
|
50
50
|
}: Props = $props();
|
|
51
51
|
|
|
52
52
|
/** Local state: map of field -> accepted boolean. Default all to true (accept). */
|
|
53
|
+
// svelte-ignore state_referenced_locally — initial default, user toggles during review
|
|
53
54
|
let decisions = $state<Record<string, boolean>>(
|
|
54
55
|
Object.fromEntries(config.changes.map((c) => [c.field, true]))
|
|
55
56
|
);
|
|
56
57
|
|
|
57
58
|
/** Local state: map of field -> HTML view mode ('rendered' or 'raw'). Default to 'rendered'. */
|
|
59
|
+
// svelte-ignore state_referenced_locally
|
|
58
60
|
let htmlViewMode = $state<Record<string, 'rendered' | 'raw'>>(
|
|
59
61
|
Object.fromEntries(config.changes.map((c) => [c.field, 'rendered']))
|
|
60
62
|
);
|
|
@@ -176,7 +178,11 @@
|
|
|
176
178
|
* Supports strings (word-level), arrays (element-level), and objects (JSON line-level).
|
|
177
179
|
* For HTML strings, strips tags and diffs the plain text content.
|
|
178
180
|
*/
|
|
179
|
-
function computeDiff(
|
|
181
|
+
function computeDiff(
|
|
182
|
+
original: unknown,
|
|
183
|
+
proposed: unknown,
|
|
184
|
+
rawMode: boolean = false
|
|
185
|
+
): Change[] | null {
|
|
180
186
|
if (typeof original === 'string' && typeof proposed === 'string') {
|
|
181
187
|
const origText = !rawMode && containsHtml(original) ? stripHtmlTags(original) : original;
|
|
182
188
|
const propText = !rawMode && containsHtml(proposed) ? stripHtmlTags(proposed) : proposed;
|
|
@@ -335,9 +341,13 @@
|
|
|
335
341
|
<div class="review-prompt__diff-row">
|
|
336
342
|
<span class="review-prompt__diff-label">Original:</span>
|
|
337
343
|
{#if isHtml && !isRawView}
|
|
338
|
-
<span class="review-prompt__diff-value review-prompt__html-content"
|
|
344
|
+
<span class="review-prompt__diff-value review-prompt__html-content"
|
|
345
|
+
>{@html sanitizeHtml(String(change.original))}</span
|
|
346
|
+
>
|
|
339
347
|
{:else if isHtml && isRawView}
|
|
340
|
-
<code class="review-prompt__diff-value review-prompt__raw-html"
|
|
348
|
+
<code class="review-prompt__diff-value review-prompt__raw-html"
|
|
349
|
+
>{change.original}</code
|
|
350
|
+
>
|
|
341
351
|
{:else}
|
|
342
352
|
<span class="review-prompt__diff-value">
|
|
343
353
|
{formatValue(change.original)}
|
|
@@ -347,9 +357,15 @@
|
|
|
347
357
|
<div class="review-prompt__diff-row">
|
|
348
358
|
<span class="review-prompt__diff-label">Proposed:</span>
|
|
349
359
|
{#if isHtml && !isRawView}
|
|
350
|
-
<span
|
|
360
|
+
<span
|
|
361
|
+
class="review-prompt__diff-value review-prompt__diff-value--proposed review-prompt__html-content"
|
|
362
|
+
>{@html sanitizeHtml(String(change.proposed))}</span
|
|
363
|
+
>
|
|
351
364
|
{:else if isHtml && isRawView}
|
|
352
|
-
<code
|
|
365
|
+
<code
|
|
366
|
+
class="review-prompt__diff-value review-prompt__diff-value--proposed review-prompt__raw-html"
|
|
367
|
+
>{change.proposed}</code
|
|
368
|
+
>
|
|
353
369
|
{:else}
|
|
354
370
|
<span class="review-prompt__diff-value review-prompt__diff-value--proposed">
|
|
355
371
|
{formatValue(change.proposed)}
|
|
@@ -359,21 +375,26 @@
|
|
|
359
375
|
{#if diff}
|
|
360
376
|
<div class="review-prompt__diff-row">
|
|
361
377
|
<span class="review-prompt__diff-label">Diff:</span>
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
{
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
378
|
+
{#if isMultiLineDiff(diff)}
|
|
379
|
+
<pre
|
|
380
|
+
class="review-prompt__diff-value review-prompt__diff-block">{#each diff as part}{#if part.added}<span
|
|
381
|
+
class="review-prompt__diff-token--added">{part.value}</span
|
|
382
|
+
>{:else if part.removed}<span class="review-prompt__diff-token--removed"
|
|
383
|
+
>{part.value}</span
|
|
384
|
+
>{:else}<span>{part.value}</span>{/if}{/each}</pre>
|
|
385
|
+
{:else}
|
|
386
|
+
<span class="review-prompt__diff-value review-prompt__diff-inline">
|
|
387
|
+
{#each diff as part}
|
|
388
|
+
{#if part.added}
|
|
389
|
+
<span class="review-prompt__diff-token--added">{part.value}</span>
|
|
390
|
+
{:else if part.removed}
|
|
391
|
+
<span class="review-prompt__diff-token--removed">{part.value}</span>
|
|
392
|
+
{:else}
|
|
393
|
+
<span>{part.value}</span>
|
|
394
|
+
{/if}
|
|
395
|
+
{/each}
|
|
396
|
+
</span>
|
|
397
|
+
{/if}
|
|
377
398
|
</div>
|
|
378
399
|
{/if}
|
|
379
400
|
</div>
|
|
@@ -404,8 +425,8 @@
|
|
|
404
425
|
{#if isResolved && resolvedValue}
|
|
405
426
|
<div class="review-prompt__summary">
|
|
406
427
|
<span class="review-prompt__summary-text">
|
|
407
|
-
{resolvedValue.summary.accepted} accepted, {resolvedValue.summary.rejected} rejected
|
|
408
|
-
|
|
428
|
+
{resolvedValue.summary.accepted} accepted, {resolvedValue.summary.rejected} rejected out of {resolvedValue
|
|
429
|
+
.summary.total} changes
|
|
409
430
|
</span>
|
|
410
431
|
</div>
|
|
411
432
|
{/if}
|
|
@@ -415,9 +436,7 @@
|
|
|
415
436
|
<div class="review-prompt__resolved-badge">
|
|
416
437
|
<Icon icon="mdi:check-circle" />
|
|
417
438
|
<span>
|
|
418
|
-
{resolvedByUserName
|
|
419
|
-
? `Response submitted by ${resolvedByUserName}`
|
|
420
|
-
: 'Response submitted'}
|
|
439
|
+
{resolvedByUserName ? `Response submitted by ${resolvedByUserName}` : 'Response submitted'}
|
|
421
440
|
</span>
|
|
422
441
|
</div>
|
|
423
442
|
{/if}
|
|
@@ -1,34 +1,47 @@
|
|
|
1
1
|
<script module>
|
|
2
|
-
import { defineMeta } from
|
|
3
|
-
import TextInputPrompt from
|
|
4
|
-
import { fn } from
|
|
5
|
-
import { createTextConfig } from
|
|
2
|
+
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
3
|
+
import TextInputPrompt from './TextInputPrompt.svelte';
|
|
4
|
+
import { fn } from 'storybook/test';
|
|
5
|
+
import { createTextConfig } from '../../stories/utils.js';
|
|
6
6
|
|
|
7
7
|
const { Story } = defineMeta({
|
|
8
|
-
title:
|
|
8
|
+
title: 'Interrupt/TextInputPrompt',
|
|
9
9
|
component: TextInputPrompt,
|
|
10
|
-
tags: [
|
|
10
|
+
tags: ['autodocs'],
|
|
11
11
|
args: {
|
|
12
12
|
config: createTextConfig(),
|
|
13
13
|
isResolved: false,
|
|
14
14
|
isSubmitting: false,
|
|
15
|
-
onSubmit: fn()
|
|
16
|
-
}
|
|
15
|
+
onSubmit: fn()
|
|
16
|
+
}
|
|
17
17
|
});
|
|
18
18
|
</script>
|
|
19
19
|
|
|
20
20
|
<Story name="Default" />
|
|
21
21
|
|
|
22
|
-
<Story
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
<Story
|
|
23
|
+
name="Multiline"
|
|
24
|
+
args={{
|
|
25
|
+
config: createTextConfig({
|
|
26
|
+
message: 'Describe the issue in detail:',
|
|
27
|
+
multiline: true,
|
|
28
|
+
placeholder: 'Type your description...'
|
|
29
|
+
})
|
|
30
|
+
}}
|
|
31
|
+
/>
|
|
25
32
|
|
|
26
|
-
<Story
|
|
27
|
-
|
|
28
|
-
|
|
33
|
+
<Story
|
|
34
|
+
name="With Constraints"
|
|
35
|
+
args={{
|
|
36
|
+
config: createTextConfig({ message: 'Enter a short summary:', minLength: 10, maxLength: 100 })
|
|
37
|
+
}}
|
|
38
|
+
/>
|
|
29
39
|
|
|
30
|
-
<Story
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
40
|
+
<Story
|
|
41
|
+
name="Resolved"
|
|
42
|
+
args={{
|
|
43
|
+
isResolved: true,
|
|
44
|
+
resolvedValue: 'The workflow completed successfully with all checks passed.',
|
|
45
|
+
resolvedByUserName: 'Charlie'
|
|
46
|
+
}}
|
|
47
|
+
/>
|
|
@@ -11,7 +11,7 @@ declare const TextInputPrompt: $$__sveltets_2_IsomorphicComponent<{
|
|
|
11
11
|
}, {
|
|
12
12
|
[evt: string]: CustomEvent<any>;
|
|
13
13
|
}, {}, {}, string>;
|
|
14
|
-
import TextInputPrompt from
|
|
14
|
+
import TextInputPrompt from './TextInputPrompt.svelte';
|
|
15
15
|
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> {
|
|
16
16
|
new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
|
|
17
17
|
$$bindings?: Bindings;
|
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
}: Props = $props();
|
|
43
43
|
|
|
44
44
|
/** Local state for input value */
|
|
45
|
+
// svelte-ignore state_referenced_locally — initial default, user edits the input
|
|
45
46
|
let inputValue = $state(config.defaultValue ?? '');
|
|
46
47
|
|
|
47
48
|
/** Display value - either resolved or current input */
|
|
@@ -103,12 +103,15 @@
|
|
|
103
103
|
}: Props = $props();
|
|
104
104
|
|
|
105
105
|
/** Current width of the left sidebar */
|
|
106
|
+
// svelte-ignore state_referenced_locally — initial default, component owns draggable state
|
|
106
107
|
let leftSidebarWidth = $state(initialLeftWidth);
|
|
107
108
|
|
|
108
109
|
/** Current width of the right sidebar */
|
|
110
|
+
// svelte-ignore state_referenced_locally
|
|
109
111
|
let rightSidebarWidth = $state(initialRightWidth);
|
|
110
112
|
|
|
111
113
|
/** Current height of the bottom panel */
|
|
114
|
+
// svelte-ignore state_referenced_locally
|
|
112
115
|
let bottomPanelHeightState = $state(initialBottomHeight);
|
|
113
116
|
|
|
114
117
|
/**
|
|
@@ -1,76 +1,108 @@
|
|
|
1
1
|
<script module>
|
|
2
|
-
import { defineMeta } from
|
|
3
|
-
import NodeDecorator from
|
|
4
|
-
import { createSampleNodeData } from
|
|
2
|
+
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
3
|
+
import NodeDecorator from '../../stories/NodeDecorator.svelte';
|
|
4
|
+
import { createSampleNodeData } from '../../stories/utils.js';
|
|
5
5
|
|
|
6
6
|
const { Story } = defineMeta({
|
|
7
|
-
title:
|
|
8
|
-
tags: [
|
|
7
|
+
title: 'Nodes/GatewayNode',
|
|
8
|
+
tags: ['autodocs'],
|
|
9
9
|
parameters: {
|
|
10
|
-
layout:
|
|
11
|
-
}
|
|
10
|
+
layout: 'centered'
|
|
11
|
+
}
|
|
12
12
|
});
|
|
13
13
|
</script>
|
|
14
14
|
|
|
15
15
|
<Story name="Default">
|
|
16
|
-
<NodeDecorator
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
16
|
+
<NodeDecorator
|
|
17
|
+
data={createSampleNodeData({
|
|
18
|
+
label: 'If/Else',
|
|
19
|
+
config: {
|
|
20
|
+
textInput: '',
|
|
21
|
+
matchText: '',
|
|
22
|
+
operator: 'equals',
|
|
23
|
+
caseSensitive: false,
|
|
24
|
+
branches: [
|
|
25
|
+
{ name: 'True', value: true },
|
|
26
|
+
{ name: 'False', value: false }
|
|
27
|
+
]
|
|
28
|
+
},
|
|
29
|
+
metadata: {
|
|
30
|
+
id: 'if_else',
|
|
31
|
+
name: 'If/Else',
|
|
32
|
+
description: 'Simple conditional logic with text input, match text, and operator',
|
|
33
|
+
category: 'logic',
|
|
34
|
+
version: '1.0.0',
|
|
35
|
+
type: 'gateway',
|
|
36
|
+
supportedTypes: ['gateway'],
|
|
37
|
+
icon: 'mdi:code-braces',
|
|
38
|
+
color: '#8b5cf6',
|
|
39
|
+
inputs: [
|
|
40
|
+
{
|
|
41
|
+
id: 'data',
|
|
42
|
+
name: 'Input Data',
|
|
43
|
+
type: 'input',
|
|
44
|
+
dataType: 'mixed',
|
|
45
|
+
required: false,
|
|
46
|
+
description: 'Optional input data (if not using textInput config)'
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
id: 'trigger',
|
|
50
|
+
name: 'Trigger',
|
|
51
|
+
type: 'input',
|
|
52
|
+
dataType: 'trigger',
|
|
53
|
+
required: false,
|
|
54
|
+
description: ''
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
outputs: []
|
|
58
|
+
}
|
|
59
|
+
})}
|
|
60
|
+
/>
|
|
45
61
|
</Story>
|
|
46
62
|
|
|
47
63
|
<Story name="Multiple Branches">
|
|
48
|
-
<NodeDecorator
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
64
|
+
<NodeDecorator
|
|
65
|
+
data={createSampleNodeData({
|
|
66
|
+
label: 'Switch',
|
|
67
|
+
config: {
|
|
68
|
+
defaultBranch: 'default',
|
|
69
|
+
caseSensitive: false,
|
|
70
|
+
branches: [
|
|
71
|
+
{ name: 'case_1', label: 'Case 1', value: 'option1' },
|
|
72
|
+
{ name: 'case_2', label: 'Case 2', value: 'option2' },
|
|
73
|
+
{ name: 'default', label: 'Default', value: '' }
|
|
74
|
+
]
|
|
75
|
+
},
|
|
76
|
+
metadata: {
|
|
77
|
+
id: 'switch',
|
|
78
|
+
name: 'Switch',
|
|
79
|
+
description: 'Multi-branch routing based on configurable case values',
|
|
80
|
+
category: 'logic',
|
|
81
|
+
version: '1.0.0',
|
|
82
|
+
type: 'gateway',
|
|
83
|
+
supportedTypes: ['gateway'],
|
|
84
|
+
icon: 'mdi:source-branch-sync',
|
|
85
|
+
color: '#8b5cf6',
|
|
86
|
+
inputs: [
|
|
87
|
+
{
|
|
88
|
+
id: 'value',
|
|
89
|
+
name: 'Value',
|
|
90
|
+
type: 'input',
|
|
91
|
+
dataType: 'string',
|
|
92
|
+
required: true,
|
|
93
|
+
description: 'The value to match against branch cases'
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
id: 'trigger',
|
|
97
|
+
name: 'Trigger',
|
|
98
|
+
type: 'input',
|
|
99
|
+
dataType: 'trigger',
|
|
100
|
+
required: false,
|
|
101
|
+
description: ''
|
|
102
|
+
}
|
|
103
|
+
],
|
|
104
|
+
outputs: []
|
|
105
|
+
}
|
|
106
|
+
})}
|
|
107
|
+
/>
|
|
76
108
|
</Story>
|
|
@@ -1,48 +1,52 @@
|
|
|
1
1
|
<script module>
|
|
2
|
-
import { defineMeta } from
|
|
3
|
-
import NodeDecorator from
|
|
2
|
+
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
3
|
+
import NodeDecorator from '../../stories/NodeDecorator.svelte';
|
|
4
4
|
|
|
5
5
|
const { Story } = defineMeta({
|
|
6
|
-
title:
|
|
7
|
-
tags: [
|
|
6
|
+
title: 'Nodes/IdeaNode',
|
|
7
|
+
tags: ['autodocs'],
|
|
8
8
|
parameters: {
|
|
9
|
-
layout:
|
|
10
|
-
}
|
|
9
|
+
layout: 'centered'
|
|
10
|
+
}
|
|
11
11
|
});
|
|
12
12
|
</script>
|
|
13
13
|
|
|
14
14
|
<Story name="Default">
|
|
15
|
-
<NodeDecorator
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
15
|
+
<NodeDecorator
|
|
16
|
+
data={{
|
|
17
|
+
label: 'Idea',
|
|
18
|
+
config: {},
|
|
19
|
+
metadata: {
|
|
20
|
+
id: 'idea',
|
|
21
|
+
name: 'Idea',
|
|
22
|
+
description: 'Planning node',
|
|
23
|
+
category: 'helpers',
|
|
24
|
+
version: '1.0.0',
|
|
25
|
+
type: 'idea',
|
|
26
|
+
inputs: [],
|
|
27
|
+
outputs: []
|
|
28
|
+
}
|
|
29
|
+
}}
|
|
30
|
+
/>
|
|
29
31
|
</Story>
|
|
30
32
|
|
|
31
33
|
<Story name="With Content">
|
|
32
|
-
<NodeDecorator
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
34
|
+
<NodeDecorator
|
|
35
|
+
data={{
|
|
36
|
+
label: 'Feature Idea',
|
|
37
|
+
config: {
|
|
38
|
+
content: 'Add batch processing support to handle multiple items in parallel.'
|
|
39
|
+
},
|
|
40
|
+
metadata: {
|
|
41
|
+
id: 'idea',
|
|
42
|
+
name: 'Idea',
|
|
43
|
+
description: 'Planning node',
|
|
44
|
+
category: 'helpers',
|
|
45
|
+
version: '1.0.0',
|
|
46
|
+
type: 'idea',
|
|
47
|
+
inputs: [],
|
|
48
|
+
outputs: []
|
|
49
|
+
}
|
|
50
|
+
}}
|
|
51
|
+
/>
|
|
48
52
|
</Story>
|
|
@@ -1,69 +1,76 @@
|
|
|
1
1
|
<script module>
|
|
2
|
-
import { defineMeta } from
|
|
3
|
-
import NodeDecorator from
|
|
2
|
+
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
3
|
+
import NodeDecorator from '../../stories/NodeDecorator.svelte';
|
|
4
4
|
|
|
5
5
|
const { Story } = defineMeta({
|
|
6
|
-
title:
|
|
7
|
-
tags: [
|
|
6
|
+
title: 'Nodes/NotesNode',
|
|
7
|
+
tags: ['autodocs'],
|
|
8
8
|
parameters: {
|
|
9
|
-
layout:
|
|
10
|
-
}
|
|
9
|
+
layout: 'centered'
|
|
10
|
+
}
|
|
11
11
|
});
|
|
12
12
|
</script>
|
|
13
13
|
|
|
14
14
|
<Story name="Default">
|
|
15
|
-
<NodeDecorator
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
15
|
+
<NodeDecorator
|
|
16
|
+
data={{
|
|
17
|
+
label: 'Notes',
|
|
18
|
+
config: {},
|
|
19
|
+
metadata: {
|
|
20
|
+
id: 'notes',
|
|
21
|
+
name: 'Notes',
|
|
22
|
+
description: 'Documentation node',
|
|
23
|
+
category: 'helpers',
|
|
24
|
+
version: '1.0.0',
|
|
25
|
+
type: 'note',
|
|
26
|
+
inputs: [],
|
|
27
|
+
outputs: []
|
|
28
|
+
}
|
|
29
|
+
}}
|
|
30
|
+
/>
|
|
29
31
|
</Story>
|
|
30
32
|
|
|
31
33
|
<Story name="With Content">
|
|
32
|
-
<NodeDecorator
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
34
|
+
<NodeDecorator
|
|
35
|
+
data={{
|
|
36
|
+
label: 'Notes',
|
|
37
|
+
config: {
|
|
38
|
+
content:
|
|
39
|
+
'## Important\n\nThis workflow handles **user onboarding**.\n\n- Step 1: Validate email\n- Step 2: Create account\n- Step 3: Send welcome email',
|
|
40
|
+
noteType: 'info'
|
|
41
|
+
},
|
|
42
|
+
metadata: {
|
|
43
|
+
id: 'notes',
|
|
44
|
+
name: 'Notes',
|
|
45
|
+
description: 'Documentation node',
|
|
46
|
+
category: 'helpers',
|
|
47
|
+
version: '1.0.0',
|
|
48
|
+
type: 'note',
|
|
49
|
+
inputs: [],
|
|
50
|
+
outputs: []
|
|
51
|
+
}
|
|
52
|
+
}}
|
|
53
|
+
/>
|
|
49
54
|
</Story>
|
|
50
55
|
|
|
51
56
|
<Story name="Warning">
|
|
52
|
-
<NodeDecorator
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
57
|
+
<NodeDecorator
|
|
58
|
+
data={{
|
|
59
|
+
label: 'Warning',
|
|
60
|
+
config: {
|
|
61
|
+
content: 'Rate limiting is applied to this API call. Max 100 requests/minute.',
|
|
62
|
+
noteType: 'warning'
|
|
63
|
+
},
|
|
64
|
+
metadata: {
|
|
65
|
+
id: 'notes',
|
|
66
|
+
name: 'Notes',
|
|
67
|
+
description: 'Documentation node',
|
|
68
|
+
category: 'helpers',
|
|
69
|
+
version: '1.0.0',
|
|
70
|
+
type: 'note',
|
|
71
|
+
inputs: [],
|
|
72
|
+
outputs: []
|
|
73
|
+
}
|
|
74
|
+
}}
|
|
75
|
+
/>
|
|
69
76
|
</Story>
|