@d34dman/flowdrop 0.0.60 → 0.0.62

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 (207) hide show
  1. package/README.md +6 -0
  2. package/dist/adapters/WorkflowAdapter.d.ts +1 -1
  3. package/dist/adapters/agentspec/AgentSpecAdapter.js +3 -1
  4. package/dist/api/client.d.ts +4 -0
  5. package/dist/api/client.js +6 -1
  6. package/dist/api/enhanced-client.js +7 -6
  7. package/dist/components/App.svelte +143 -219
  8. package/dist/components/CanvasBanner.stories.svelte +25 -0
  9. package/dist/components/CanvasBanner.stories.svelte.d.ts +27 -0
  10. package/dist/components/CanvasBanner.svelte +2 -2
  11. package/dist/components/ConfigForm.svelte +37 -36
  12. package/dist/components/ConfigPanel.stories.svelte +38 -0
  13. package/dist/components/ConfigPanel.stories.svelte.d.ts +27 -0
  14. package/dist/components/ConfigPanel.svelte +2 -2
  15. package/dist/components/ConnectionLine.svelte +2 -2
  16. package/dist/components/FlowDropZone.svelte +18 -2
  17. package/dist/components/FlowDropZone.svelte.d.ts +2 -0
  18. package/dist/components/LoadingSpinner.stories.svelte +30 -0
  19. package/dist/components/LoadingSpinner.stories.svelte.d.ts +27 -0
  20. package/dist/components/Logo.stories.svelte +22 -0
  21. package/dist/components/Logo.stories.svelte.d.ts +27 -0
  22. package/dist/components/Logo.svelte +33 -13
  23. package/dist/components/Logo.svelte.d.ts +1 -1
  24. package/dist/components/MarkdownDisplay.stories.svelte +21 -0
  25. package/dist/components/MarkdownDisplay.stories.svelte.d.ts +27 -0
  26. package/dist/components/MarkdownDisplay.svelte +4 -3
  27. package/dist/components/Navbar.stories.svelte +41 -0
  28. package/dist/components/Navbar.stories.svelte.d.ts +27 -0
  29. package/dist/components/Navbar.svelte +4 -4
  30. package/dist/components/NodeSidebar.svelte +12 -12
  31. package/dist/components/NodeStatusOverlay.stories.svelte +74 -0
  32. package/dist/components/NodeStatusOverlay.stories.svelte.d.ts +27 -0
  33. package/dist/components/PipelineStatus.svelte +11 -4
  34. package/dist/components/PortCoordinateTracker.svelte +1 -1
  35. package/dist/components/SchemaForm.stories.svelte +101 -0
  36. package/dist/components/SchemaForm.stories.svelte.d.ts +27 -0
  37. package/dist/components/SchemaForm.svelte +17 -12
  38. package/dist/components/SettingsModal.svelte +3 -3
  39. package/dist/components/SettingsPanel.svelte +23 -22
  40. package/dist/components/StatusIcon.stories.svelte +60 -0
  41. package/dist/components/StatusIcon.stories.svelte.d.ts +27 -0
  42. package/dist/components/StatusIcon.svelte +7 -0
  43. package/dist/components/StatusLabel.stories.svelte +17 -0
  44. package/dist/components/StatusLabel.stories.svelte.d.ts +27 -0
  45. package/dist/components/ThemeToggle.stories.svelte +25 -0
  46. package/dist/components/ThemeToggle.stories.svelte.d.ts +27 -0
  47. package/dist/components/ThemeToggle.svelte +8 -8
  48. package/dist/components/UniversalNode.svelte +1 -1
  49. package/dist/components/WorkflowEditor.svelte +298 -294
  50. package/dist/components/form/FormAutocomplete.svelte +20 -19
  51. package/dist/components/form/FormCheckboxGroup.stories.svelte +28 -0
  52. package/dist/components/form/FormCheckboxGroup.stories.svelte.d.ts +27 -0
  53. package/dist/components/form/FormField.svelte +3 -3
  54. package/dist/components/form/FormFieldLight.svelte +2 -2
  55. package/dist/components/form/FormFieldWrapper.stories.svelte +31 -0
  56. package/dist/components/form/FormFieldWrapper.stories.svelte.d.ts +27 -0
  57. package/dist/components/form/FormFieldset.svelte +7 -7
  58. package/dist/components/form/FormNumberField.stories.svelte +33 -0
  59. package/dist/components/form/FormNumberField.stories.svelte.d.ts +27 -0
  60. package/dist/components/form/FormRangeField.stories.svelte +31 -0
  61. package/dist/components/form/FormRangeField.stories.svelte.d.ts +27 -0
  62. package/dist/components/form/FormSelect.stories.svelte +50 -0
  63. package/dist/components/form/FormSelect.stories.svelte.d.ts +27 -0
  64. package/dist/components/form/FormTemplateEditor.svelte +2 -1
  65. package/dist/components/form/FormTextField.stories.svelte +30 -0
  66. package/dist/components/form/FormTextField.stories.svelte.d.ts +27 -0
  67. package/dist/components/form/FormTextarea.stories.svelte +31 -0
  68. package/dist/components/form/FormTextarea.stories.svelte.d.ts +27 -0
  69. package/dist/components/form/FormToggle.stories.svelte +30 -0
  70. package/dist/components/form/FormToggle.stories.svelte.d.ts +27 -0
  71. package/dist/components/form/FormUISchemaRenderer.svelte +1 -1
  72. package/dist/components/form/types.d.ts +15 -47
  73. package/dist/components/interrupt/ChoicePrompt.stories.svelte +43 -0
  74. package/dist/components/interrupt/ChoicePrompt.stories.svelte.d.ts +27 -0
  75. package/dist/components/interrupt/ChoicePrompt.svelte +24 -24
  76. package/dist/components/interrupt/ConfirmationPrompt.stories.svelte +49 -0
  77. package/dist/components/interrupt/ConfirmationPrompt.stories.svelte.d.ts +27 -0
  78. package/dist/components/interrupt/ConfirmationPrompt.svelte +19 -19
  79. package/dist/components/interrupt/FormPrompt.svelte +15 -15
  80. package/dist/components/interrupt/InterruptBubble.svelte +202 -236
  81. package/dist/components/interrupt/InterruptBubble.svelte.d.ts +1 -1
  82. package/dist/components/interrupt/ReviewPrompt.stories.svelte +46 -0
  83. package/dist/components/interrupt/ReviewPrompt.stories.svelte.d.ts +27 -0
  84. package/dist/components/interrupt/ReviewPrompt.svelte +842 -0
  85. package/dist/components/interrupt/ReviewPrompt.svelte.d.ts +23 -0
  86. package/dist/components/interrupt/TextInputPrompt.stories.svelte +34 -0
  87. package/dist/components/interrupt/TextInputPrompt.stories.svelte.d.ts +27 -0
  88. package/dist/components/interrupt/TextInputPrompt.svelte +21 -21
  89. package/dist/components/nodes/GatewayNode.stories.svelte +76 -0
  90. package/dist/components/nodes/GatewayNode.stories.svelte.d.ts +26 -0
  91. package/dist/components/nodes/GatewayNode.svelte +19 -17
  92. package/dist/components/nodes/IdeaNode.stories.svelte +48 -0
  93. package/dist/components/nodes/IdeaNode.stories.svelte.d.ts +26 -0
  94. package/dist/components/nodes/IdeaNode.svelte +10 -26
  95. package/dist/components/nodes/NotesNode.stories.svelte +69 -0
  96. package/dist/components/nodes/NotesNode.stories.svelte.d.ts +26 -0
  97. package/dist/components/nodes/NotesNode.svelte +8 -8
  98. package/dist/components/nodes/SimpleNode.stories.svelte +101 -0
  99. package/dist/components/nodes/SimpleNode.stories.svelte.d.ts +26 -0
  100. package/dist/components/nodes/SimpleNode.svelte +16 -24
  101. package/dist/components/nodes/SquareNode.stories.svelte +56 -0
  102. package/dist/components/nodes/SquareNode.stories.svelte.d.ts +26 -0
  103. package/dist/components/nodes/SquareNode.svelte +13 -21
  104. package/dist/components/nodes/TerminalNode.stories.svelte +25 -0
  105. package/dist/components/nodes/TerminalNode.stories.svelte.d.ts +26 -0
  106. package/dist/components/nodes/TerminalNode.svelte +6 -6
  107. package/dist/components/nodes/ToolNode.stories.svelte +71 -0
  108. package/dist/components/nodes/ToolNode.stories.svelte.d.ts +26 -0
  109. package/dist/components/nodes/ToolNode.svelte +7 -15
  110. package/dist/components/nodes/WorkflowNode.stories.svelte +50 -0
  111. package/dist/components/nodes/WorkflowNode.stories.svelte.d.ts +26 -0
  112. package/dist/components/nodes/WorkflowNode.svelte +13 -13
  113. package/dist/components/playground/ChatPanel.svelte +48 -48
  114. package/dist/components/playground/ExecutionLogs.svelte +23 -23
  115. package/dist/components/playground/InputCollector.svelte +24 -24
  116. package/dist/components/playground/MessageBubble.stories.svelte +49 -0
  117. package/dist/components/playground/MessageBubble.stories.svelte.d.ts +27 -0
  118. package/dist/components/playground/MessageBubble.svelte +49 -46
  119. package/dist/components/playground/Playground.svelte +203 -172
  120. package/dist/components/playground/PlaygroundModal.svelte +5 -5
  121. package/dist/components/playground/SessionManager.svelte +26 -26
  122. package/dist/config/constants.d.ts +22 -0
  123. package/dist/config/constants.js +22 -0
  124. package/dist/config/endpoints.d.ts +19 -0
  125. package/dist/config/runtimeConfig.js +2 -1
  126. package/dist/core/index.d.ts +5 -2
  127. package/dist/core/index.js +9 -1
  128. package/dist/editor/index.d.ts +13 -9
  129. package/dist/editor/index.js +15 -11
  130. package/dist/form/code.d.ts +2 -1
  131. package/dist/form/code.js +1 -3
  132. package/dist/form/markdown.d.ts +2 -1
  133. package/dist/form/markdown.js +1 -3
  134. package/dist/helpers/workflowEditorHelper.js +13 -9
  135. package/dist/mocks/app-forms.js +1 -0
  136. package/dist/mocks/app-navigation.js +3 -1
  137. package/dist/mocks/app-stores.d.ts +4 -4
  138. package/dist/playground/index.d.ts +5 -4
  139. package/dist/playground/index.js +15 -11
  140. package/dist/playground/mount.d.ts +20 -1
  141. package/dist/playground/mount.js +24 -6
  142. package/dist/services/agentSpecExecutionService.js +2 -1
  143. package/dist/services/api.js +10 -18
  144. package/dist/services/apiVariableService.js +2 -1
  145. package/dist/services/autoSaveService.d.ts +3 -3
  146. package/dist/services/autoSaveService.js +21 -17
  147. package/dist/services/categoriesApi.js +13 -5
  148. package/dist/services/draftStorage.js +5 -4
  149. package/dist/services/dynamicSchemaService.js +4 -4
  150. package/dist/services/globalSave.d.ts +60 -11
  151. package/dist/services/globalSave.js +160 -83
  152. package/dist/services/historyService.d.ts +2 -1
  153. package/dist/services/historyService.js +7 -3
  154. package/dist/services/interruptService.js +9 -8
  155. package/dist/services/nodeExecutionService.js +14 -6
  156. package/dist/services/playgroundService.d.ts +3 -2
  157. package/dist/services/playgroundService.js +8 -7
  158. package/dist/services/portConfigApi.js +11 -7
  159. package/dist/services/toastService.d.ts +1 -1
  160. package/dist/services/toastService.js +6 -5
  161. package/dist/services/variableService.js +3 -2
  162. package/dist/settings/index.d.ts +1 -1
  163. package/dist/settings/index.js +1 -1
  164. package/dist/stores/{categoriesStore.d.ts → categoriesStore.svelte.d.ts} +3 -3
  165. package/dist/stores/{categoriesStore.js → categoriesStore.svelte.js} +15 -18
  166. package/dist/stores/editorStateMachine.svelte.d.ts +42 -0
  167. package/dist/stores/editorStateMachine.svelte.js +132 -0
  168. package/dist/stores/{historyStore.d.ts → historyStore.svelte.d.ts} +18 -15
  169. package/dist/stores/{historyStore.js → historyStore.svelte.js} +40 -21
  170. package/dist/stores/{interruptStore.d.ts → interruptStore.svelte.d.ts} +16 -15
  171. package/dist/stores/{interruptStore.js → interruptStore.svelte.js} +85 -94
  172. package/dist/stores/{playgroundStore.d.ts → playgroundStore.svelte.d.ts} +52 -34
  173. package/dist/stores/{playgroundStore.js → playgroundStore.svelte.js} +193 -100
  174. package/dist/stores/{portCoordinateStore.d.ts → portCoordinateStore.svelte.d.ts} +10 -4
  175. package/dist/stores/{portCoordinateStore.js → portCoordinateStore.svelte.js} +38 -35
  176. package/dist/stores/{settingsStore.d.ts → settingsStore.svelte.d.ts} +45 -28
  177. package/dist/stores/{settingsStore.js → settingsStore.svelte.js} +169 -128
  178. package/dist/stores/{workflowStore.d.ts → workflowStore.svelte.d.ts} +101 -65
  179. package/dist/stores/{workflowStore.js → workflowStore.svelte.js} +285 -239
  180. package/dist/stories/CanvasDecorator.svelte +50 -0
  181. package/dist/stories/CanvasDecorator.svelte.d.ts +8 -0
  182. package/dist/stories/NodeDecorator.svelte +74 -0
  183. package/dist/stories/NodeDecorator.svelte.d.ts +8 -0
  184. package/dist/stories/utils.d.ts +93 -0
  185. package/dist/stories/utils.js +122 -0
  186. package/dist/styles/base.css +114 -61
  187. package/dist/styles/toast.css +2 -2
  188. package/dist/styles/tokens.css +250 -185
  189. package/dist/svelte-app.d.ts +0 -6
  190. package/dist/svelte-app.js +13 -31
  191. package/dist/types/index.d.ts +2 -0
  192. package/dist/types/interrupt.d.ts +89 -5
  193. package/dist/types/interrupt.js +13 -1
  194. package/dist/types/playground.d.ts +42 -1
  195. package/dist/types/playground.js +38 -0
  196. package/dist/types/settings.js +1 -1
  197. package/dist/utils/colors.js +4 -4
  198. package/dist/utils/connections.js +33 -8
  199. package/dist/utils/icons.js +1 -1
  200. package/dist/utils/logger.d.ts +47 -0
  201. package/dist/utils/logger.js +72 -0
  202. package/dist/utils/nodeWrapper.js +1 -1
  203. package/dist/utils/sanitize.d.ts +19 -0
  204. package/dist/utils/sanitize.js +31 -0
  205. package/dist/utils/validation.d.ts +29 -0
  206. package/dist/utils/validation.js +39 -0
  207. package/package.json +243 -232
@@ -0,0 +1,50 @@
1
+ <!--
2
+ CanvasDecorator: Renders child components inside an empty SvelteFlow canvas,
3
+ matching how overlay components (e.g. CanvasBanner) appear in the workflow editor.
4
+ -->
5
+ <script lang="ts">
6
+ import { SvelteFlow, Controls } from "@xyflow/svelte";
7
+ import type { ColorMode } from "@xyflow/svelte";
8
+ import "@xyflow/svelte/dist/style.css";
9
+ import type { Snippet } from "svelte";
10
+
11
+ let { children }: { children: Snippet } = $props();
12
+
13
+ // Watch the data-theme attribute set by Storybook's addon-themes
14
+ let colorMode = $state<ColorMode>(
15
+ (document.documentElement.getAttribute("data-theme") as ColorMode) || "light",
16
+ );
17
+
18
+ $effect(() => {
19
+ const observer = new MutationObserver(() => {
20
+ colorMode =
21
+ (document.documentElement.getAttribute("data-theme") as ColorMode) || "light";
22
+ });
23
+ observer.observe(document.documentElement, {
24
+ attributes: true,
25
+ attributeFilter: ["data-theme"],
26
+ });
27
+ return () => observer.disconnect();
28
+ });
29
+ </script>
30
+
31
+ <div class="canvas-decorator-wrapper">
32
+ <SvelteFlow nodes={[]} edges={[]} {colorMode}>
33
+ <Controls />
34
+ {@render children()}
35
+ </SvelteFlow>
36
+ </div>
37
+
38
+ <style>
39
+ .canvas-decorator-wrapper {
40
+ width: 800px;
41
+ height: 400px;
42
+ position: relative;
43
+ }
44
+
45
+ /* Fix: SvelteFlow's scoped styles use non-prefixed --background-color-default
46
+ which doesn't update with colorMode="dark". Map the --xy- themed value. */
47
+ .canvas-decorator-wrapper :global(.svelte-flow.dark) {
48
+ --background-color-default: var(--xy-background-color-default);
49
+ }
50
+ </style>
@@ -0,0 +1,8 @@
1
+ import "@xyflow/svelte/dist/style.css";
2
+ import type { Snippet } from "svelte";
3
+ type $$ComponentProps = {
4
+ children: Snippet;
5
+ };
6
+ declare const CanvasDecorator: import("svelte").Component<$$ComponentProps, {}, "">;
7
+ type CanvasDecorator = ReturnType<typeof CanvasDecorator>;
8
+ export default CanvasDecorator;
@@ -0,0 +1,74 @@
1
+ <!--
2
+ NodeDecorator: Renders node components as real SvelteFlow nodes
3
+ inside a canvas, matching how they appear in the workflow editor.
4
+ -->
5
+ <script lang="ts">
6
+ import { SvelteFlow, Controls } from "@xyflow/svelte";
7
+ import type { Node, ColorMode } from "@xyflow/svelte";
8
+ import "@xyflow/svelte/dist/style.css";
9
+ import UniversalNode from "../components/UniversalNode.svelte";
10
+ import { registerBuiltinNodes } from "../registry/builtinNodes.js";
11
+
12
+ let { data, selected = false }: { data: Record<string, unknown>; selected?: boolean } = $props();
13
+
14
+ // Ensure built-in node components are registered
15
+ registerBuiltinNodes();
16
+
17
+ const nodeTypes = {
18
+ universalNode: UniversalNode,
19
+ };
20
+
21
+ let nodes = $derived<Node[]>([
22
+ {
23
+ id: "story-node",
24
+ type: "universalNode",
25
+ position: { x: 0, y: 0 },
26
+ selected,
27
+ data,
28
+ },
29
+ ]);
30
+
31
+ // Watch the data-theme attribute set by Storybook's addon-themes
32
+ let colorMode = $state<ColorMode>(
33
+ (document.documentElement.getAttribute("data-theme") as ColorMode) || "light",
34
+ );
35
+
36
+ $effect(() => {
37
+ const observer = new MutationObserver(() => {
38
+ colorMode =
39
+ (document.documentElement.getAttribute("data-theme") as ColorMode) || "light";
40
+ });
41
+ observer.observe(document.documentElement, {
42
+ attributes: true,
43
+ attributeFilter: ["data-theme"],
44
+ });
45
+ return () => observer.disconnect();
46
+ });
47
+ </script>
48
+
49
+ <div class="node-decorator-wrapper">
50
+ <SvelteFlow
51
+ {nodes}
52
+ edges={[]}
53
+ {nodeTypes}
54
+ fitView
55
+ fitViewOptions={{ maxZoom: 0.85, padding: 0.2 }}
56
+ {colorMode}
57
+ >
58
+ <Controls />
59
+ </SvelteFlow>
60
+ </div>
61
+
62
+ <style>
63
+ .node-decorator-wrapper {
64
+ width: 800px;
65
+ height: 400px;
66
+ position: relative;
67
+ }
68
+
69
+ /* Fix: SvelteFlow's scoped styles use non-prefixed --background-color-default
70
+ which doesn't update with colorMode="dark". Map the --xy- themed value. */
71
+ .node-decorator-wrapper :global(.svelte-flow.dark) {
72
+ --background-color-default: var(--xy-background-color-default);
73
+ }
74
+ </style>
@@ -0,0 +1,8 @@
1
+ import "@xyflow/svelte/dist/style.css";
2
+ type $$ComponentProps = {
3
+ data: Record<string, unknown>;
4
+ selected?: boolean;
5
+ };
6
+ declare const NodeDecorator: import("svelte").Component<$$ComponentProps, {}, "">;
7
+ type NodeDecorator = ReturnType<typeof NodeDecorator>;
8
+ export default NodeDecorator;
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Shared story utilities
3
+ * Reusable mock data factories for Storybook stories
4
+ */
5
+ import type { ConfirmationConfig, ChoiceConfig, TextConfig, ReviewConfig, ReviewChange } from "../types/interrupt.js";
6
+ export declare function createSampleNodeData(overrides?: Record<string, unknown>): {
7
+ label: string;
8
+ config: {};
9
+ metadata: {
10
+ id: string;
11
+ name: string;
12
+ description: string;
13
+ category: string;
14
+ version: string;
15
+ type: string;
16
+ inputs: {
17
+ id: string;
18
+ name: string;
19
+ type: string;
20
+ dataType: string;
21
+ required: boolean;
22
+ }[];
23
+ outputs: {
24
+ id: string;
25
+ name: string;
26
+ type: string;
27
+ dataType: string;
28
+ }[];
29
+ };
30
+ };
31
+ export declare function createTerminalNodeData(variant?: "start" | "end" | "exit"): {
32
+ label: string;
33
+ config: {};
34
+ metadata: {
35
+ id: string;
36
+ name: string;
37
+ description: string;
38
+ category: string;
39
+ version: string;
40
+ type: string;
41
+ inputs: never[];
42
+ outputs: {
43
+ id: string;
44
+ name: string;
45
+ type: string;
46
+ dataType: string;
47
+ }[];
48
+ };
49
+ } | {
50
+ label: string;
51
+ config: {};
52
+ metadata: {
53
+ id: string;
54
+ name: string;
55
+ description: string;
56
+ category: string;
57
+ version: string;
58
+ type: string;
59
+ inputs: {
60
+ id: string;
61
+ name: string;
62
+ type: string;
63
+ dataType: string;
64
+ required: boolean;
65
+ }[];
66
+ outputs: never[];
67
+ };
68
+ } | {
69
+ label: string;
70
+ config: {};
71
+ metadata: {
72
+ id: string;
73
+ name: string;
74
+ description: string;
75
+ category: string;
76
+ version: string;
77
+ type: string;
78
+ subType: string;
79
+ inputs: {
80
+ id: string;
81
+ name: string;
82
+ type: string;
83
+ dataType: string;
84
+ required: boolean;
85
+ }[];
86
+ outputs: never[];
87
+ };
88
+ };
89
+ export declare function createConfirmationConfig(overrides?: Partial<ConfirmationConfig>): ConfirmationConfig;
90
+ export declare function createChoiceConfig(overrides?: Partial<ChoiceConfig>): ChoiceConfig;
91
+ export declare function createTextConfig(overrides?: Partial<TextConfig>): TextConfig;
92
+ export declare function createReviewConfig(overrides?: Partial<ReviewConfig>): ReviewConfig;
93
+ export declare function createReviewChange(overrides?: Partial<ReviewChange>): ReviewChange;
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Shared story utilities
3
+ * Reusable mock data factories for Storybook stories
4
+ */
5
+ export function createSampleNodeData(overrides) {
6
+ return {
7
+ label: "Sample Node",
8
+ config: {},
9
+ metadata: {
10
+ id: "sample-node",
11
+ name: "Sample Node",
12
+ description: "A sample node for stories",
13
+ category: "processing",
14
+ version: "1.0.0",
15
+ type: "default",
16
+ inputs: [{ id: "input", name: "Input", type: "input", dataType: "any", required: false }],
17
+ outputs: [{ id: "output", name: "Output", type: "output", dataType: "any" }]
18
+ },
19
+ ...overrides
20
+ };
21
+ }
22
+ export function createTerminalNodeData(variant = "start") {
23
+ const configs = {
24
+ start: {
25
+ label: "Start",
26
+ config: {},
27
+ metadata: {
28
+ id: "start",
29
+ name: "Start",
30
+ description: "Workflow start point",
31
+ category: "terminal",
32
+ version: "1.0.0",
33
+ type: "terminal",
34
+ inputs: [],
35
+ outputs: [{ id: "output", name: "Output", type: "output", dataType: "any" }]
36
+ }
37
+ },
38
+ end: {
39
+ label: "End",
40
+ config: {},
41
+ metadata: {
42
+ id: "end",
43
+ name: "End",
44
+ description: "Workflow end point",
45
+ category: "terminal",
46
+ version: "1.0.0",
47
+ type: "terminal",
48
+ inputs: [{ id: "input", name: "Input", type: "input", dataType: "any", required: false }],
49
+ outputs: []
50
+ }
51
+ },
52
+ exit: {
53
+ label: "Exit",
54
+ config: {},
55
+ metadata: {
56
+ id: "exit",
57
+ name: "Exit",
58
+ description: "Early exit point",
59
+ category: "terminal",
60
+ version: "1.0.0",
61
+ type: "terminal",
62
+ subType: "exit",
63
+ inputs: [{ id: "input", name: "Input", type: "input", dataType: "any", required: false }],
64
+ outputs: []
65
+ }
66
+ }
67
+ };
68
+ return configs[variant];
69
+ }
70
+ export function createConfirmationConfig(overrides) {
71
+ return {
72
+ message: "Are you sure you want to proceed with this action?",
73
+ confirmLabel: "Yes, proceed",
74
+ cancelLabel: "Cancel",
75
+ ...overrides
76
+ };
77
+ }
78
+ export function createChoiceConfig(overrides) {
79
+ return {
80
+ message: "Select a priority level for this task:",
81
+ options: [
82
+ { value: "low", label: "Low", description: "Non-urgent task" },
83
+ { value: "medium", label: "Medium", description: "Normal priority" },
84
+ { value: "high", label: "High", description: "Urgent task" }
85
+ ],
86
+ multiple: false,
87
+ ...overrides
88
+ };
89
+ }
90
+ export function createTextConfig(overrides) {
91
+ return {
92
+ message: "Please provide additional details:",
93
+ placeholder: "Enter your response here...",
94
+ multiline: false,
95
+ ...overrides
96
+ };
97
+ }
98
+ export function createReviewConfig(overrides) {
99
+ return {
100
+ message: "Review the following changes before submitting:",
101
+ changes: [
102
+ { field: "title", label: "Title", original: "Old Title", proposed: "New Title" },
103
+ {
104
+ field: "description",
105
+ label: "Description",
106
+ original: "Old description text",
107
+ proposed: "Updated description text"
108
+ },
109
+ { field: "status", label: "Status", original: "draft", proposed: "published" }
110
+ ],
111
+ ...overrides
112
+ };
113
+ }
114
+ export function createReviewChange(overrides) {
115
+ return {
116
+ field: "title",
117
+ label: "Title",
118
+ original: "Original value",
119
+ proposed: "Proposed value",
120
+ ...overrides
121
+ };
122
+ }