@d34dman/flowdrop 0.0.17 → 0.0.19
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 +34 -47
- package/dist/api/enhanced-client.d.ts +2 -2
- package/dist/api/enhanced-client.js +5 -5
- package/dist/components/NotesNode.svelte +3 -3
- package/dist/components/NotesNode.svelte.d.ts +3 -3
- package/dist/components/SimpleNode.svelte +3 -3
- package/dist/components/SimpleNode.svelte.d.ts +3 -3
- package/dist/components/SquareNode.svelte +3 -3
- package/dist/components/SquareNode.svelte.d.ts +3 -3
- package/dist/components/TerminalNode.svelte +583 -0
- package/dist/components/TerminalNode.svelte.d.ts +24 -0
- package/dist/components/UniversalNode.svelte +7 -33
- package/dist/components/WorkflowEditor.svelte +1 -9
- package/dist/helpers/workflowEditorHelper.d.ts +3 -3
- package/dist/helpers/workflowEditorHelper.js +5 -7
- package/dist/index.d.ts +4 -7
- package/dist/index.js +2 -5
- package/dist/registry/builtinNodes.d.ts +3 -3
- package/dist/registry/builtinNodes.js +16 -3
- package/dist/services/api.d.ts +0 -5
- package/dist/services/api.js +0 -20
- package/dist/svelte-app.d.ts +0 -6
- package/dist/svelte-app.js +0 -8
- package/dist/types/auth.d.ts +0 -15
- package/dist/types/auth.js +0 -15
- package/dist/types/config.d.ts +11 -151
- package/dist/types/config.js +3 -0
- package/dist/types/index.d.ts +2 -8
- package/dist/utils/colors.d.ts +0 -5
- package/dist/utils/colors.js +3 -4
- package/dist/utils/config.d.ts +0 -8
- package/dist/utils/config.js +0 -14
- package/dist/utils/connections.d.ts +0 -5
- package/dist/utils/connections.js +10 -16
- package/dist/utils/icons.js +1 -1
- package/dist/utils/nodeTypes.d.ts +1 -1
- package/dist/utils/nodeTypes.js +4 -19
- package/package.json +144 -138
- package/dist/clients/ApiClient.d.ts +0 -199
- package/dist/clients/ApiClient.js +0 -214
- package/dist/config/apiConfig.d.ts +0 -34
- package/dist/config/apiConfig.js +0 -40
- package/dist/examples/adapter-usage.d.ts +0 -66
- package/dist/examples/adapter-usage.js +0 -133
- package/dist/examples/api-client-usage.d.ts +0 -32
- package/dist/examples/api-client-usage.js +0 -243
|
@@ -1,243 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Example: Using FlowDrop API Client
|
|
3
|
-
* Demonstrates how to integrate with FlowDrop API from applications
|
|
4
|
-
* This client can be used with any backend that implements the FlowDrop API specification
|
|
5
|
-
*/
|
|
6
|
-
import { ApiClient } from '../clients/ApiClient.js';
|
|
7
|
-
// Initialize the API client
|
|
8
|
-
const apiClient = new ApiClient({
|
|
9
|
-
baseUrl: 'https://api.flowdrop.dev/v1',
|
|
10
|
-
apiKey: 'your-api-key-here',
|
|
11
|
-
timeout: 30000
|
|
12
|
-
});
|
|
13
|
-
// Example 1: Health check
|
|
14
|
-
async function checkApiHealth() {
|
|
15
|
-
try {
|
|
16
|
-
const health = await apiClient.healthCheck();
|
|
17
|
-
console.log('API Status:', health.status);
|
|
18
|
-
console.log('API Version:', health.version);
|
|
19
|
-
return health;
|
|
20
|
-
}
|
|
21
|
-
catch (error) {
|
|
22
|
-
console.error('API Health Check Failed:', error);
|
|
23
|
-
throw error;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
// Example 2: Get available node types
|
|
27
|
-
async function getNodeTypes() {
|
|
28
|
-
try {
|
|
29
|
-
// Get all node types
|
|
30
|
-
const allNodes = await apiClient.getNodeTypes();
|
|
31
|
-
console.log(`Found ${allNodes.data?.length || 0} node types`);
|
|
32
|
-
// Get node types by category
|
|
33
|
-
const modelNodes = await apiClient.getNodeTypesByCategory('models');
|
|
34
|
-
console.log(`Found ${modelNodes.data?.length || 0} model nodes`);
|
|
35
|
-
// Search for specific nodes
|
|
36
|
-
const searchResults = await apiClient.getNodeTypes({ search: 'openai' });
|
|
37
|
-
console.log(`Found ${searchResults.data?.length || 0} OpenAI-related nodes`);
|
|
38
|
-
return allNodes;
|
|
39
|
-
}
|
|
40
|
-
catch (error) {
|
|
41
|
-
console.error('Failed to get node types:', error);
|
|
42
|
-
throw error;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
// Example 3: Create and manage workflows
|
|
46
|
-
async function manageWorkflows() {
|
|
47
|
-
try {
|
|
48
|
-
// Create a new workflow
|
|
49
|
-
const createRequest = {
|
|
50
|
-
name: 'Chat Workflow',
|
|
51
|
-
description: 'A simple chat workflow created via API',
|
|
52
|
-
tags: ['chat', 'demo']
|
|
53
|
-
};
|
|
54
|
-
const newWorkflow = await apiClient.createWorkflow(createRequest);
|
|
55
|
-
console.log('Created workflow:', newWorkflow.data?.id);
|
|
56
|
-
// Get all workflows
|
|
57
|
-
const workflows = await apiClient.getWorkflows({
|
|
58
|
-
limit: 10,
|
|
59
|
-
sort: 'created_at',
|
|
60
|
-
order: 'desc'
|
|
61
|
-
});
|
|
62
|
-
console.log(`Found ${workflows.data?.length || 0} workflows`);
|
|
63
|
-
// Get workflows by tag
|
|
64
|
-
const chatWorkflows = await apiClient.getWorkflowsByTag('chat');
|
|
65
|
-
console.log(`Found ${chatWorkflows.data?.length || 0} chat workflows`);
|
|
66
|
-
return newWorkflow;
|
|
67
|
-
}
|
|
68
|
-
catch (error) {
|
|
69
|
-
console.error('Failed to manage workflows:', error);
|
|
70
|
-
throw error;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
// Example 4: Execute a workflow
|
|
74
|
-
async function executeWorkflow(workflowId) {
|
|
75
|
-
try {
|
|
76
|
-
// Start execution
|
|
77
|
-
const execution = await apiClient.executeWorkflow(workflowId, {
|
|
78
|
-
inputs: {
|
|
79
|
-
message: 'Hello, how are you?',
|
|
80
|
-
temperature: 0.7
|
|
81
|
-
},
|
|
82
|
-
options: {
|
|
83
|
-
timeout: 60,
|
|
84
|
-
maxSteps: 100
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
console.log('Execution started:', execution.data?.executionId);
|
|
88
|
-
// Wait for completion
|
|
89
|
-
const result = await apiClient.waitForExecution(execution.data.executionId);
|
|
90
|
-
if (result.data?.status === 'completed') {
|
|
91
|
-
console.log('Execution completed successfully');
|
|
92
|
-
console.log('Result:', result.data?.result);
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
console.log('Execution failed:', result.data?.error);
|
|
96
|
-
}
|
|
97
|
-
return result;
|
|
98
|
-
}
|
|
99
|
-
catch (error) {
|
|
100
|
-
console.error('Failed to execute workflow:', error);
|
|
101
|
-
throw error;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
// Example 5: Import/Export workflows
|
|
105
|
-
async function importExportWorkflow(workflowId) {
|
|
106
|
-
try {
|
|
107
|
-
// Export workflow
|
|
108
|
-
const exportedWorkflow = await apiClient.exportWorkflow(workflowId, 'json');
|
|
109
|
-
console.log('Exported workflow:', exportedWorkflow.name);
|
|
110
|
-
// Modify the exported workflow
|
|
111
|
-
const modifiedWorkflow = {
|
|
112
|
-
...exportedWorkflow,
|
|
113
|
-
id: '', // Will be generated by server
|
|
114
|
-
name: `${exportedWorkflow.name} (Imported)`,
|
|
115
|
-
metadata: {
|
|
116
|
-
...exportedWorkflow.metadata,
|
|
117
|
-
createdAt: new Date().toISOString(),
|
|
118
|
-
updatedAt: new Date().toISOString()
|
|
119
|
-
}
|
|
120
|
-
};
|
|
121
|
-
// Import the modified workflow
|
|
122
|
-
const importedWorkflow = await apiClient.importWorkflow(modifiedWorkflow);
|
|
123
|
-
console.log('Imported workflow:', importedWorkflow.data?.id);
|
|
124
|
-
return importedWorkflow;
|
|
125
|
-
}
|
|
126
|
-
catch (error) {
|
|
127
|
-
console.error('Failed to import/export workflow:', error);
|
|
128
|
-
throw error;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
// Example 6: Validate workflows
|
|
132
|
-
async function validateWorkflow(workflow) {
|
|
133
|
-
try {
|
|
134
|
-
const validation = await apiClient.validateWorkflow(workflow);
|
|
135
|
-
if (validation.data?.valid) {
|
|
136
|
-
console.log('Workflow is valid');
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
console.log('Workflow validation failed:');
|
|
140
|
-
console.log('Errors:', validation.data?.errors);
|
|
141
|
-
console.log('Warnings:', validation.data?.warnings);
|
|
142
|
-
console.log('Suggestions:', validation.data?.suggestions);
|
|
143
|
-
}
|
|
144
|
-
return validation;
|
|
145
|
-
}
|
|
146
|
-
catch (error) {
|
|
147
|
-
console.error('Failed to validate workflow:', error);
|
|
148
|
-
throw error;
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
// Example 7: Error handling
|
|
152
|
-
async function handleApiErrors() {
|
|
153
|
-
try {
|
|
154
|
-
// This will fail - non-existent workflow
|
|
155
|
-
await apiClient.getWorkflow('non-existent-id');
|
|
156
|
-
}
|
|
157
|
-
catch (error) {
|
|
158
|
-
if (error instanceof Error) {
|
|
159
|
-
console.log('Error type:', error.constructor.name);
|
|
160
|
-
console.log('Error message:', error.message);
|
|
161
|
-
// Check if it's an API error
|
|
162
|
-
if ('status' in error) {
|
|
163
|
-
const apiError = error;
|
|
164
|
-
console.log('HTTP status:', apiError.status);
|
|
165
|
-
console.log('Error code:', apiError.code);
|
|
166
|
-
console.log('Error details:', apiError.details);
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
// Example 8: Batch operations
|
|
172
|
-
async function batchOperations() {
|
|
173
|
-
try {
|
|
174
|
-
// Get all workflows
|
|
175
|
-
const workflows = await apiClient.getWorkflows({ limit: 100 });
|
|
176
|
-
// Process each workflow
|
|
177
|
-
const results = await Promise.allSettled(workflows.data?.map(async (workflow) => {
|
|
178
|
-
try {
|
|
179
|
-
// Validate each workflow
|
|
180
|
-
const validation = await apiClient.validateWorkflow(workflow);
|
|
181
|
-
return {
|
|
182
|
-
id: workflow.id,
|
|
183
|
-
name: workflow.name,
|
|
184
|
-
valid: validation.data?.valid,
|
|
185
|
-
errors: validation.data?.errors?.length || 0
|
|
186
|
-
};
|
|
187
|
-
}
|
|
188
|
-
catch (error) {
|
|
189
|
-
return {
|
|
190
|
-
id: workflow.id,
|
|
191
|
-
name: workflow.name,
|
|
192
|
-
valid: false,
|
|
193
|
-
error: error instanceof Error ? error.message : 'Unknown error'
|
|
194
|
-
};
|
|
195
|
-
}
|
|
196
|
-
}) || []);
|
|
197
|
-
console.log('Batch validation results:', results);
|
|
198
|
-
return results;
|
|
199
|
-
}
|
|
200
|
-
catch (error) {
|
|
201
|
-
console.error('Failed to perform batch operations:', error);
|
|
202
|
-
throw error;
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
// Example 9: Real-time monitoring
|
|
206
|
-
async function monitorExecutions(workflowId) {
|
|
207
|
-
try {
|
|
208
|
-
// Start execution
|
|
209
|
-
const execution = await apiClient.executeWorkflow(workflowId, {
|
|
210
|
-
inputs: { message: 'Test message' }
|
|
211
|
-
});
|
|
212
|
-
const executionId = execution.data.executionId;
|
|
213
|
-
console.log('Monitoring execution:', executionId);
|
|
214
|
-
// Poll for status updates
|
|
215
|
-
const interval = setInterval(async () => {
|
|
216
|
-
try {
|
|
217
|
-
const status = await apiClient.getExecutionStatus(executionId);
|
|
218
|
-
console.log(`Status: ${status.data?.status}`);
|
|
219
|
-
if (status.data?.status === 'completed' ||
|
|
220
|
-
status.data?.status === 'failed' ||
|
|
221
|
-
status.data?.status === 'cancelled') {
|
|
222
|
-
clearInterval(interval);
|
|
223
|
-
console.log('Execution finished:', status.data?.status);
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
catch (error) {
|
|
227
|
-
console.error('Failed to get execution status:', error);
|
|
228
|
-
clearInterval(interval);
|
|
229
|
-
}
|
|
230
|
-
}, 1000);
|
|
231
|
-
// Timeout after 5 minutes
|
|
232
|
-
setTimeout(() => {
|
|
233
|
-
clearInterval(interval);
|
|
234
|
-
console.log('Monitoring timeout');
|
|
235
|
-
}, 5 * 60 * 1000);
|
|
236
|
-
}
|
|
237
|
-
catch (error) {
|
|
238
|
-
console.error('Failed to monitor execution:', error);
|
|
239
|
-
throw error;
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
// Export all examples
|
|
243
|
-
export { checkApiHealth, getNodeTypes, manageWorkflows, executeWorkflow, importExportWorkflow, validateWorkflow, handleApiErrors, batchOperations, monitorExecutions };
|