@d34dman/flowdrop 0.0.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.
Files changed (46) hide show
  1. package/README.md +293 -0
  2. package/dist/adapters/WorkflowAdapter.d.ts +166 -0
  3. package/dist/adapters/WorkflowAdapter.js +337 -0
  4. package/dist/api/client.d.ts +79 -0
  5. package/dist/api/client.js +208 -0
  6. package/dist/app.css +0 -0
  7. package/dist/clients/ApiClient.d.ts +203 -0
  8. package/dist/clients/ApiClient.js +212 -0
  9. package/dist/components/App.svelte +237 -0
  10. package/dist/components/App.svelte.d.ts +3 -0
  11. package/dist/components/CanvasBanner.svelte +51 -0
  12. package/dist/components/CanvasBanner.svelte.d.ts +22 -0
  13. package/dist/components/LoadingSpinner.svelte +36 -0
  14. package/dist/components/LoadingSpinner.svelte.d.ts +8 -0
  15. package/dist/components/Node.svelte +38 -0
  16. package/dist/components/Node.svelte.d.ts +4 -0
  17. package/dist/components/NodeSidebar.svelte +500 -0
  18. package/dist/components/NodeSidebar.svelte.d.ts +9 -0
  19. package/dist/components/WorkflowEditor.svelte +542 -0
  20. package/dist/components/WorkflowEditor.svelte.d.ts +10 -0
  21. package/dist/components/WorkflowNode.svelte +558 -0
  22. package/dist/components/WorkflowNode.svelte.d.ts +11 -0
  23. package/dist/data/samples.d.ts +17 -0
  24. package/dist/data/samples.js +1193 -0
  25. package/dist/examples/adapter-usage.d.ts +66 -0
  26. package/dist/examples/adapter-usage.js +138 -0
  27. package/dist/examples/api-client-usage.d.ts +31 -0
  28. package/dist/examples/api-client-usage.js +241 -0
  29. package/dist/index.d.ts +19 -0
  30. package/dist/index.js +27 -0
  31. package/dist/services/api.d.ts +110 -0
  32. package/dist/services/api.js +149 -0
  33. package/dist/services/workflowStorage.d.ts +37 -0
  34. package/dist/services/workflowStorage.js +116 -0
  35. package/dist/styles/base.css +858 -0
  36. package/dist/svelte-app.d.ts +17 -0
  37. package/dist/svelte-app.js +30 -0
  38. package/dist/types/index.d.ts +179 -0
  39. package/dist/types/index.js +4 -0
  40. package/dist/utils/colors.d.ts +121 -0
  41. package/dist/utils/colors.js +240 -0
  42. package/dist/utils/connections.d.ts +47 -0
  43. package/dist/utils/connections.js +240 -0
  44. package/dist/utils/icons.d.ts +102 -0
  45. package/dist/utils/icons.js +149 -0
  46. package/package.json +99 -0
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Example: Using WorkflowAdapter for workflow management
3
+ * This demonstrates how systems can work with workflows without knowing SvelteFlow internals
4
+ */
5
+ import { type StandardWorkflow } from "../adapters/WorkflowAdapter.js";
6
+ declare function createSimpleWorkflow(): StandardWorkflow;
7
+ declare function analyzeWorkflow(workflow: StandardWorkflow): {
8
+ stats: {
9
+ totalNodes: number;
10
+ totalEdges: number;
11
+ nodeTypeCounts: {
12
+ [k: string]: number;
13
+ };
14
+ lastModified: string;
15
+ };
16
+ validation: import("../adapters/WorkflowAdapter.js").WorkflowValidationResult;
17
+ complexity: number;
18
+ };
19
+ declare function calculateComplexity(workflow: StandardWorkflow): number;
20
+ declare function optimizeWorkflow(workflow: StandardWorkflow): StandardWorkflow;
21
+ declare function exportWorkflow(workflow: StandardWorkflow): string;
22
+ declare function importWorkflow(json: string): StandardWorkflow;
23
+ declare function getWorkflowStructure(workflow: StandardWorkflow): {
24
+ nodes: {
25
+ id: string;
26
+ type: string;
27
+ position: {
28
+ x: number;
29
+ y: number;
30
+ };
31
+ config: Record<string, unknown>;
32
+ }[];
33
+ edges: {
34
+ source: string;
35
+ target: string;
36
+ sourceHandle: string;
37
+ targetHandle: string;
38
+ }[];
39
+ metadata: {
40
+ name: string;
41
+ description: string;
42
+ version: string;
43
+ lastModified: string;
44
+ };
45
+ };
46
+ declare function getAvailableNodeTypes(): {
47
+ id: string;
48
+ name: string;
49
+ category: import("../index.js").NodeCategory;
50
+ description: string;
51
+ inputs: {
52
+ name: string;
53
+ type: import("../index.js").NodeDataType;
54
+ required: boolean;
55
+ }[];
56
+ outputs: {
57
+ name: string;
58
+ type: import("../index.js").NodeDataType;
59
+ }[];
60
+ }[];
61
+ declare function validateGeneratedWorkflow(workflowJson: string): {
62
+ valid: boolean;
63
+ errors: string[];
64
+ suggestions: string[];
65
+ };
66
+ export { createSimpleWorkflow, analyzeWorkflow, calculateComplexity, optimizeWorkflow, exportWorkflow, importWorkflow, getWorkflowStructure, getAvailableNodeTypes, validateGeneratedWorkflow };
@@ -0,0 +1,138 @@
1
+ /**
2
+ * Example: Using WorkflowAdapter for workflow management
3
+ * This demonstrates how systems can work with workflows without knowing SvelteFlow internals
4
+ */
5
+ import { WorkflowAdapter } from "../adapters/WorkflowAdapter.js";
6
+ import { sampleNodes } from "../data/samples.js";
7
+ // Initialize the adapter with available node types
8
+ const adapter = new WorkflowAdapter(sampleNodes);
9
+ // Example 1: Create a simple workflow programmatically
10
+ function createSimpleWorkflow() {
11
+ const workflow = adapter.createWorkflow("Chat Workflow", "A simple chat workflow");
12
+ // Add nodes
13
+ const inputNode = adapter.addNode(workflow, "text-input", { x: 100, y: 100 }, {
14
+ placeholder: "Enter your message"
15
+ });
16
+ const modelNode = adapter.addNode(workflow, "openai", { x: 300, y: 100 }, {
17
+ model: "gpt-4",
18
+ temperature: 0.7
19
+ });
20
+ const outputNode = adapter.addNode(workflow, "text-output", { x: 500, y: 100 });
21
+ // Connect nodes
22
+ adapter.addEdge(workflow, inputNode.id, modelNode.id, "text", "prompt");
23
+ adapter.addEdge(workflow, modelNode.id, outputNode.id, "text", "text");
24
+ return workflow;
25
+ }
26
+ // Example 2: Analyze a workflow structure
27
+ function analyzeWorkflow(workflow) {
28
+ const stats = adapter.getWorkflowStats(workflow);
29
+ const validation = adapter.validateWorkflow(workflow);
30
+ console.log("Workflow Analysis:");
31
+ console.log(`- Total nodes: ${stats.totalNodes}`);
32
+ console.log(`- Total edges: ${stats.totalEdges}`);
33
+ console.log(`- Node types:`, stats.nodeTypeCounts);
34
+ console.log(`- Valid: ${validation.valid}`);
35
+ if (validation.errors.length > 0) {
36
+ console.log("Errors:", validation.errors);
37
+ }
38
+ if (validation.warnings.length > 0) {
39
+ console.log("Warnings:", validation.warnings);
40
+ }
41
+ return {
42
+ stats,
43
+ validation,
44
+ complexity: calculateComplexity(workflow)
45
+ };
46
+ }
47
+ // Example 3: Calculate workflow complexity
48
+ function calculateComplexity(workflow) {
49
+ const nodeCount = workflow.nodes.length;
50
+ const edgeCount = workflow.edges.length;
51
+ const avgConnections = edgeCount / Math.max(nodeCount, 1);
52
+ // Simple complexity score
53
+ return nodeCount * avgConnections;
54
+ }
55
+ // Example 4: Optimize a workflow
56
+ function optimizeWorkflow(workflow) {
57
+ const optimized = adapter.cloneWorkflow(workflow, `${workflow.name} (Optimized)`);
58
+ // Could make optimizations here
59
+ // For example, removing unused nodes, optimizing connections, etc.
60
+ return optimized;
61
+ }
62
+ // Example 5: Export/Import workflows
63
+ function exportWorkflow(workflow) {
64
+ return adapter.exportWorkflow(workflow);
65
+ }
66
+ function importWorkflow(json) {
67
+ return adapter.importWorkflow(json);
68
+ }
69
+ // Example 6: Get workflow structure for analysis
70
+ function getWorkflowStructure(workflow) {
71
+ return {
72
+ nodes: workflow.nodes.map(node => ({
73
+ id: node.id,
74
+ type: node.type,
75
+ position: node.position,
76
+ config: node.data.config
77
+ })),
78
+ edges: workflow.edges.map(edge => ({
79
+ source: edge.source,
80
+ target: edge.target,
81
+ sourceHandle: edge.sourceHandle,
82
+ targetHandle: edge.targetHandle
83
+ })),
84
+ metadata: {
85
+ name: workflow.name,
86
+ description: workflow.description,
87
+ version: workflow.metadata?.version,
88
+ lastModified: workflow.metadata?.updatedAt
89
+ }
90
+ };
91
+ }
92
+ // Example 7: Get available node types
93
+ function getAvailableNodeTypes() {
94
+ return sampleNodes.map(node => ({
95
+ id: node.id,
96
+ name: node.name,
97
+ category: node.category,
98
+ description: node.description,
99
+ inputs: node.inputs.map(input => ({
100
+ name: input.name,
101
+ type: input.dataType,
102
+ required: input.required
103
+ })),
104
+ outputs: node.outputs.map(output => ({
105
+ name: output.name,
106
+ type: output.dataType
107
+ }))
108
+ }));
109
+ }
110
+ // Example 8: Validate generated workflow
111
+ function validateGeneratedWorkflow(workflowJson) {
112
+ try {
113
+ const workflow = adapter.importWorkflow(workflowJson);
114
+ const validation = adapter.validateWorkflow(workflow);
115
+ const suggestions = [];
116
+ // Provide suggestions based on validation results
117
+ if (workflow.nodes.length === 0) {
118
+ suggestions.push("Consider adding input and output nodes");
119
+ }
120
+ if (workflow.edges.length === 0) {
121
+ suggestions.push("Connect nodes to create a data flow");
122
+ }
123
+ return {
124
+ valid: validation.valid,
125
+ errors: validation.errors,
126
+ suggestions
127
+ };
128
+ }
129
+ catch (error) {
130
+ return {
131
+ valid: false,
132
+ errors: [error instanceof Error ? error.message : "Unknown error"],
133
+ suggestions: ["Check the JSON format and required fields"]
134
+ };
135
+ }
136
+ }
137
+ // Export all examples for use
138
+ export { createSimpleWorkflow, analyzeWorkflow, calculateComplexity, optimizeWorkflow, exportWorkflow, importWorkflow, getWorkflowStructure, getAvailableNodeTypes, validateGeneratedWorkflow };
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Example: Using FlowDrop API Client
3
+ * This demonstrates how to integrate with FlowDrop API from backend applications
4
+ */
5
+ import type { Workflow } from "../types/index.js";
6
+ declare function checkApiHealth(): Promise<{
7
+ status: string;
8
+ timestamp: string;
9
+ version: string;
10
+ }>;
11
+ declare function getNodeTypes(): Promise<import("../types/index.js").NodesResponse>;
12
+ declare function manageWorkflows(): Promise<import("../types/index.js").WorkflowResponse>;
13
+ declare function executeWorkflow(workflowId: string): Promise<import("../clients/ApiClient.js").ExecutionStatusResponse>;
14
+ declare function importExportWorkflow(workflowId: string): Promise<import("../types/index.js").WorkflowResponse>;
15
+ declare function validateWorkflow(workflow: Workflow): Promise<import("../clients/ApiClient.js").ValidationResponse>;
16
+ declare function handleApiErrors(): Promise<void>;
17
+ declare function batchOperations(): Promise<PromiseSettledResult<{
18
+ id: string;
19
+ name: string;
20
+ valid: boolean;
21
+ errors: number;
22
+ error?: undefined;
23
+ } | {
24
+ id: string;
25
+ name: string;
26
+ valid: boolean;
27
+ error: string;
28
+ errors?: undefined;
29
+ }>[]>;
30
+ declare function monitorExecutions(workflowId: string): Promise<void>;
31
+ export { checkApiHealth, getNodeTypes, manageWorkflows, executeWorkflow, importExportWorkflow, validateWorkflow, handleApiErrors, batchOperations, monitorExecutions };
@@ -0,0 +1,241 @@
1
+ /**
2
+ * Example: Using FlowDrop API Client
3
+ * This demonstrates how to integrate with FlowDrop API from backend applications
4
+ */
5
+ import { ApiClient } from "../clients/ApiClient.js";
6
+ // Initialize the API client
7
+ const apiClient = new ApiClient({
8
+ baseUrl: "https://api.flowdrop.dev/v1",
9
+ apiKey: "your-api-key-here",
10
+ timeout: 30000
11
+ });
12
+ // Example 1: Health check
13
+ async function checkApiHealth() {
14
+ try {
15
+ const health = await apiClient.healthCheck();
16
+ console.log("API Status:", health.status);
17
+ console.log("API Version:", health.version);
18
+ return health;
19
+ }
20
+ catch (error) {
21
+ console.error("API Health Check Failed:", error);
22
+ throw error;
23
+ }
24
+ }
25
+ // Example 2: Get available node types
26
+ async function getNodeTypes() {
27
+ try {
28
+ // Get all node types
29
+ const allNodes = await apiClient.getNodeTypes();
30
+ console.log(`Found ${allNodes.data?.length || 0} node types`);
31
+ // Get node types by category
32
+ const modelNodes = await apiClient.getNodeTypesByCategory("models");
33
+ console.log(`Found ${modelNodes.data?.length || 0} model nodes`);
34
+ // Search for specific nodes
35
+ const searchResults = await apiClient.getNodeTypes({ search: "openai" });
36
+ console.log(`Found ${searchResults.data?.length || 0} OpenAI-related nodes`);
37
+ return allNodes;
38
+ }
39
+ catch (error) {
40
+ console.error("Failed to get node types:", error);
41
+ throw error;
42
+ }
43
+ }
44
+ // Example 3: Create and manage workflows
45
+ async function manageWorkflows() {
46
+ try {
47
+ // Create a new workflow
48
+ const createRequest = {
49
+ name: "Chat Workflow",
50
+ description: "A simple chat workflow created via API",
51
+ tags: ["chat", "demo"]
52
+ };
53
+ const newWorkflow = await apiClient.createWorkflow(createRequest);
54
+ console.log("Created workflow:", newWorkflow.data?.id);
55
+ // Get all workflows
56
+ const workflows = await apiClient.getWorkflows({
57
+ limit: 10,
58
+ sort: "created_at",
59
+ order: "desc"
60
+ });
61
+ console.log(`Found ${workflows.data?.length || 0} workflows`);
62
+ // Get workflows by tag
63
+ const chatWorkflows = await apiClient.getWorkflowsByTag("chat");
64
+ console.log(`Found ${chatWorkflows.data?.length || 0} chat workflows`);
65
+ return newWorkflow;
66
+ }
67
+ catch (error) {
68
+ console.error("Failed to manage workflows:", error);
69
+ throw error;
70
+ }
71
+ }
72
+ // Example 4: Execute a workflow
73
+ async function executeWorkflow(workflowId) {
74
+ try {
75
+ // Start execution
76
+ const execution = await apiClient.executeWorkflow(workflowId, {
77
+ inputs: {
78
+ message: "Hello, how are you?",
79
+ temperature: 0.7
80
+ },
81
+ options: {
82
+ timeout: 60,
83
+ maxSteps: 100
84
+ }
85
+ });
86
+ console.log("Execution started:", execution.data?.executionId);
87
+ // Wait for completion
88
+ const result = await apiClient.waitForExecution(execution.data.executionId);
89
+ if (result.data?.status === "completed") {
90
+ console.log("Execution completed successfully");
91
+ console.log("Result:", result.data?.result);
92
+ }
93
+ else {
94
+ console.log("Execution failed:", result.data?.error);
95
+ }
96
+ return result;
97
+ }
98
+ catch (error) {
99
+ console.error("Failed to execute workflow:", error);
100
+ throw error;
101
+ }
102
+ }
103
+ // Example 5: Import/Export workflows
104
+ async function importExportWorkflow(workflowId) {
105
+ try {
106
+ // Export workflow
107
+ const exportedWorkflow = await apiClient.exportWorkflow(workflowId, "json");
108
+ console.log("Exported workflow:", exportedWorkflow.name);
109
+ // Modify the exported workflow
110
+ const modifiedWorkflow = {
111
+ ...exportedWorkflow,
112
+ id: "", // Will be generated by server
113
+ name: `${exportedWorkflow.name} (Imported)`,
114
+ metadata: {
115
+ ...exportedWorkflow.metadata,
116
+ createdAt: new Date().toISOString(),
117
+ updatedAt: new Date().toISOString()
118
+ }
119
+ };
120
+ // Import the modified workflow
121
+ const importedWorkflow = await apiClient.importWorkflow(modifiedWorkflow);
122
+ console.log("Imported workflow:", importedWorkflow.data?.id);
123
+ return importedWorkflow;
124
+ }
125
+ catch (error) {
126
+ console.error("Failed to import/export workflow:", error);
127
+ throw error;
128
+ }
129
+ }
130
+ // Example 6: Validate workflows
131
+ async function validateWorkflow(workflow) {
132
+ try {
133
+ const validation = await apiClient.validateWorkflow(workflow);
134
+ if (validation.data?.valid) {
135
+ console.log("Workflow is valid");
136
+ }
137
+ else {
138
+ console.log("Workflow validation failed:");
139
+ console.log("Errors:", validation.data?.errors);
140
+ console.log("Warnings:", validation.data?.warnings);
141
+ console.log("Suggestions:", validation.data?.suggestions);
142
+ }
143
+ return validation;
144
+ }
145
+ catch (error) {
146
+ console.error("Failed to validate workflow:", error);
147
+ throw error;
148
+ }
149
+ }
150
+ // Example 7: Error handling
151
+ async function handleApiErrors() {
152
+ try {
153
+ // This will fail - non-existent workflow
154
+ await apiClient.getWorkflow("non-existent-id");
155
+ }
156
+ catch (error) {
157
+ if (error instanceof Error) {
158
+ console.log("Error type:", error.constructor.name);
159
+ console.log("Error message:", error.message);
160
+ // Check if it's an API error
161
+ if ("status" in error) {
162
+ console.log("HTTP status:", error.status);
163
+ console.log("Error code:", error.code);
164
+ console.log("Error details:", error.details);
165
+ }
166
+ }
167
+ }
168
+ }
169
+ // Example 8: Batch operations
170
+ async function batchOperations() {
171
+ try {
172
+ // Get all workflows
173
+ const workflows = await apiClient.getWorkflows({ limit: 100 });
174
+ // Process each workflow
175
+ const results = await Promise.allSettled(workflows.data?.map(async (workflow) => {
176
+ try {
177
+ // Validate each workflow
178
+ const validation = await apiClient.validateWorkflow(workflow);
179
+ return {
180
+ id: workflow.id,
181
+ name: workflow.name,
182
+ valid: validation.data?.valid,
183
+ errors: validation.data?.errors?.length || 0
184
+ };
185
+ }
186
+ catch (error) {
187
+ return {
188
+ id: workflow.id,
189
+ name: workflow.name,
190
+ valid: false,
191
+ error: error instanceof Error ? error.message : "Unknown error"
192
+ };
193
+ }
194
+ }) || []);
195
+ console.log("Batch validation results:", results);
196
+ return results;
197
+ }
198
+ catch (error) {
199
+ console.error("Failed to perform batch operations:", error);
200
+ throw error;
201
+ }
202
+ }
203
+ // Example 9: Real-time monitoring
204
+ async function monitorExecutions(workflowId) {
205
+ try {
206
+ // Start execution
207
+ const execution = await apiClient.executeWorkflow(workflowId, {
208
+ inputs: { message: "Test message" }
209
+ });
210
+ const executionId = execution.data.executionId;
211
+ console.log("Monitoring execution:", executionId);
212
+ // Poll for status updates
213
+ const interval = setInterval(async () => {
214
+ try {
215
+ const status = await apiClient.getExecutionStatus(executionId);
216
+ console.log(`Status: ${status.data?.status}`);
217
+ if (status.data?.status === "completed" ||
218
+ status.data?.status === "failed" ||
219
+ status.data?.status === "cancelled") {
220
+ clearInterval(interval);
221
+ console.log("Execution finished:", status.data?.status);
222
+ }
223
+ }
224
+ catch (error) {
225
+ console.error("Failed to get execution status:", error);
226
+ clearInterval(interval);
227
+ }
228
+ }, 1000);
229
+ // Timeout after 5 minutes
230
+ setTimeout(() => {
231
+ clearInterval(interval);
232
+ console.log("Monitoring timeout");
233
+ }, 5 * 60 * 1000);
234
+ }
235
+ catch (error) {
236
+ console.error("Failed to monitor execution:", error);
237
+ throw error;
238
+ }
239
+ }
240
+ // Export all examples
241
+ export { checkApiHealth, getNodeTypes, manageWorkflows, executeWorkflow, importExportWorkflow, validateWorkflow, handleApiErrors, batchOperations, monitorExecutions };
@@ -0,0 +1,19 @@
1
+ /**
2
+ * FlowDrop - Workflow Library
3
+ * A Svelte Flow-based library for building workflows
4
+ */
5
+ import "../app.css";
6
+ export type { NodeCategory, NodeDataType, NodePort, NodeMetadata, NodeConfig, WorkflowNode, WorkflowEdge, Workflow, ApiResponse, NodesResponse, WorkflowResponse, WorkflowsResponse, ExecutionStatus, ExecutionResult, FlowDropConfig, WorkflowEvents } from "./types/index.js";
7
+ export { FlowDropApiClient } from "./api/client.js";
8
+ export { default as WorkflowEditor } from "./components/WorkflowEditor.svelte";
9
+ export { default as NodeSidebar } from "./components/NodeSidebar.svelte";
10
+ export { default as WorkflowNodeComponent } from "./components/WorkflowNode.svelte";
11
+ export { default as CanvasBanner } from "./components/CanvasBanner.svelte";
12
+ export { sampleNodes, sampleWorkflow } from "./data/samples.js";
13
+ export * from "./utils/icons.js";
14
+ export * from "./utils/colors.js";
15
+ export * from "./utils/connections.js";
16
+ export * from "./services/api.js";
17
+ export * from "./adapters/WorkflowAdapter.js";
18
+ export * from "./clients/ApiClient.js";
19
+ export { mountWorkflowEditor, unmountWorkflowEditor } from "./svelte-app.js";
package/dist/index.js ADDED
@@ -0,0 +1,27 @@
1
+ /**
2
+ * FlowDrop - Workflow Library
3
+ * A Svelte Flow-based library for building workflows
4
+ */
5
+ // Import CSS to ensure styles are included in the library build
6
+ import "../app.css";
7
+ // Export API client
8
+ export { FlowDropApiClient } from "./api/client.js";
9
+ // Export components
10
+ export { default as WorkflowEditor } from "./components/WorkflowEditor.svelte";
11
+ export { default as NodeSidebar } from "./components/NodeSidebar.svelte";
12
+ export { default as WorkflowNodeComponent } from "./components/WorkflowNode.svelte";
13
+ export { default as CanvasBanner } from "./components/CanvasBanner.svelte";
14
+ // Export sample data for development
15
+ export { sampleNodes, sampleWorkflow } from "./data/samples.js";
16
+ // Export utilities
17
+ export * from "./utils/icons.js";
18
+ export * from "./utils/colors.js";
19
+ export * from "./utils/connections.js";
20
+ // Export services
21
+ export * from "./services/api.js";
22
+ // Export adapters
23
+ export * from "./adapters/WorkflowAdapter.js";
24
+ // Export API client
25
+ export * from "./clients/ApiClient.js";
26
+ // Export Svelte app wrapper for Drupal integration
27
+ export { mountWorkflowEditor, unmountWorkflowEditor } from "./svelte-app.js";
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Client-side API service for FlowDrop
3
+ * Provides methods to interact with the backend APIs
4
+ */
5
+ import type { NodeMetadata, Workflow } from "../types/index.js";
6
+ /**
7
+ * Set the API base URL at runtime
8
+ */
9
+ export declare function setApiBaseUrl(url: string): void;
10
+ /**
11
+ * Node API methods
12
+ */
13
+ export declare const nodeApi: {
14
+ /**
15
+ * Get all node types with optional filtering
16
+ */
17
+ getNodes(options?: {
18
+ category?: string;
19
+ search?: string;
20
+ limit?: number;
21
+ offset?: number;
22
+ }): Promise<NodeMetadata[]>;
23
+ /**
24
+ * Get a specific node type by ID
25
+ */
26
+ getNode(id: string): Promise<NodeMetadata>;
27
+ };
28
+ /**
29
+ * Workflow API methods
30
+ */
31
+ export declare const workflowApi: {
32
+ /**
33
+ * Get all workflows with optional filtering
34
+ */
35
+ getWorkflows(options?: {
36
+ search?: string;
37
+ limit?: number;
38
+ offset?: number;
39
+ }): Promise<Workflow[]>;
40
+ /**
41
+ * Get a specific workflow by ID
42
+ */
43
+ getWorkflow(id: string): Promise<Workflow>;
44
+ /**
45
+ * Create a new workflow
46
+ */
47
+ createWorkflow(workflow: Omit<Workflow, "id">): Promise<Workflow>;
48
+ /**
49
+ * Update an existing workflow
50
+ */
51
+ updateWorkflow(id: string, workflow: Partial<Workflow>): Promise<Workflow>;
52
+ /**
53
+ * Delete a workflow
54
+ */
55
+ deleteWorkflow(id: string): Promise<void>;
56
+ /**
57
+ * Save workflow (create or update)
58
+ */
59
+ saveWorkflow(workflow: Workflow): Promise<Workflow>;
60
+ };
61
+ /**
62
+ * Export the API service
63
+ */
64
+ export declare const api: {
65
+ nodes: {
66
+ /**
67
+ * Get all node types with optional filtering
68
+ */
69
+ getNodes(options?: {
70
+ category?: string;
71
+ search?: string;
72
+ limit?: number;
73
+ offset?: number;
74
+ }): Promise<NodeMetadata[]>;
75
+ /**
76
+ * Get a specific node type by ID
77
+ */
78
+ getNode(id: string): Promise<NodeMetadata>;
79
+ };
80
+ workflows: {
81
+ /**
82
+ * Get all workflows with optional filtering
83
+ */
84
+ getWorkflows(options?: {
85
+ search?: string;
86
+ limit?: number;
87
+ offset?: number;
88
+ }): Promise<Workflow[]>;
89
+ /**
90
+ * Get a specific workflow by ID
91
+ */
92
+ getWorkflow(id: string): Promise<Workflow>;
93
+ /**
94
+ * Create a new workflow
95
+ */
96
+ createWorkflow(workflow: Omit<Workflow, "id">): Promise<Workflow>;
97
+ /**
98
+ * Update an existing workflow
99
+ */
100
+ updateWorkflow(id: string, workflow: Partial<Workflow>): Promise<Workflow>;
101
+ /**
102
+ * Delete a workflow
103
+ */
104
+ deleteWorkflow(id: string): Promise<void>;
105
+ /**
106
+ * Save workflow (create or update)
107
+ */
108
+ saveWorkflow(workflow: Workflow): Promise<Workflow>;
109
+ };
110
+ };