machinaos 0.0.21 → 0.0.22

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/bin/cli.js CHANGED
File without changes
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "react-flow-client",
3
3
  "private": true,
4
- "version": "0.0.21",
4
+ "version": "0.0.22",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "start": "vite --host 0.0.0.0",
package/install.sh CHANGED
@@ -52,6 +52,60 @@ detect_os() {
52
52
 
53
53
  OS=$(detect_os)
54
54
 
55
+ # Detect WSL
56
+ is_wsl() {
57
+ [[ -n "$WSL_DISTRO_NAME" ]] || [[ -n "$WSL_INTEROP" ]] || grep -qi microsoft /proc/version 2>/dev/null
58
+ }
59
+
60
+ # Configure npm for WSL (fix nvm conflicts and Windows paths)
61
+ setup_wsl_npm() {
62
+ if ! is_wsl; then
63
+ return 0
64
+ fi
65
+
66
+ info "WSL detected: Checking npm configuration..."
67
+
68
+ # If using nvm, remove any conflicting prefix from .npmrc
69
+ if [[ -n "$NVM_DIR" ]] || [[ -d "$HOME/.nvm" ]]; then
70
+ if grep -q '^prefix=' "$HOME/.npmrc" 2>/dev/null; then
71
+ info "Removing conflicting npm prefix (nvm detected)..."
72
+ sed -i '/^prefix=/d' "$HOME/.npmrc"
73
+ # Also remove globalconfig if present
74
+ sed -i '/^globalconfig=/d' "$HOME/.npmrc" 2>/dev/null || true
75
+ fi
76
+
77
+ # Source nvm to ensure proper paths
78
+ export NVM_DIR="${NVM_DIR:-$HOME/.nvm}"
79
+ if [[ -s "$NVM_DIR/nvm.sh" ]]; then
80
+ source "$NVM_DIR/nvm.sh"
81
+ fi
82
+
83
+ success "npm configured for nvm on WSL"
84
+ return 0
85
+ fi
86
+
87
+ # No nvm - check if npm is using Windows path
88
+ local npm_prefix
89
+ npm_prefix=$(npm config get prefix 2>/dev/null || echo "")
90
+
91
+ if [[ "$npm_prefix" == /mnt/* ]]; then
92
+ info "Configuring npm to use Linux-native path..."
93
+ mkdir -p "$HOME/.npm-global"
94
+ npm config set prefix "$HOME/.npm-global"
95
+ export PATH="$HOME/.npm-global/bin:$PATH"
96
+
97
+ # Add to .bashrc if not already there
98
+ if ! grep -q 'npm-global' "$HOME/.bashrc" 2>/dev/null; then
99
+ echo '' >> "$HOME/.bashrc"
100
+ echo '# npm global packages (WSL)' >> "$HOME/.bashrc"
101
+ echo 'export PATH="$HOME/.npm-global/bin:$PATH"' >> "$HOME/.bashrc"
102
+ info "Added npm-global to PATH in ~/.bashrc"
103
+ fi
104
+
105
+ success "npm configured for WSL"
106
+ fi
107
+ }
108
+
55
109
  # =============================================================================
56
110
  # Dependency Checks and Installation
57
111
  # =============================================================================
@@ -104,7 +158,7 @@ install_node() {
104
158
  check_python() {
105
159
  for cmd in python3 python; do
106
160
  if command -v "$cmd" &> /dev/null; then
107
- version=$($cmd --version 2>&1 | grep -oP '\d+\.\d+' | head -1)
161
+ version=$($cmd --version 2>&1 | sed -n 's/.*Python \([0-9]*\.[0-9]*\).*/\1/p')
108
162
  major=$(echo "$version" | cut -d. -f1)
109
163
  minor=$(echo "$version" | cut -d. -f2)
110
164
  if [ "$major" -ge 3 ] && [ "$minor" -ge "$MIN_PYTHON_VERSION_MINOR" ]; then
@@ -192,6 +246,9 @@ main() {
192
246
  check_python || install_python
193
247
  check_uv || install_uv
194
248
 
249
+ # Configure npm for WSL before installing
250
+ setup_wsl_npm
251
+
195
252
  echo ""
196
253
  info "Installing MachinaOS..."
197
254
  echo ""
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "machinaos",
3
- "version": "0.0.21",
3
+ "version": "0.0.22",
4
4
  "description": "Open source workflow automation platform with AI agents, React Flow, and n8n-inspired architecture",
5
5
  "type": "module",
6
6
  "keywords": [
@@ -35,6 +35,7 @@
35
35
  "files": [
36
36
  "bin/",
37
37
  "scripts/",
38
+ "workflows/",
38
39
  "client/src/",
39
40
  "client/public/",
40
41
  "client/dist/",
@@ -93,7 +94,9 @@
93
94
  "daemon:restart": "node scripts/daemon.js restart",
94
95
  "version:sync": "node scripts/sync-version.js",
95
96
  "prepublishOnly": "node scripts/sync-version.js && node -e \"const p=require('./package.json'); if(!p.bin||!p.version){process.exit(1)}\"",
96
- "postinstall": "node scripts/postinstall.js"
97
+ "preinstall": "node scripts/preinstall.js",
98
+ "postinstall": "node scripts/postinstall.js",
99
+ "preuninstall": "node scripts/preinstall.js"
97
100
  },
98
101
  "dependencies": {
99
102
  "whatsapp-rpc": "^0.0.10",
package/scripts/build.js CHANGED
File without changes
package/scripts/clean.js CHANGED
File without changes
package/scripts/daemon.js CHANGED
File without changes
package/scripts/docker.js CHANGED
File without changes
File without changes
@@ -8,10 +8,36 @@
8
8
  import { spawn } from 'child_process';
9
9
  import { resolve, dirname } from 'path';
10
10
  import { fileURLToPath } from 'url';
11
+ import { existsSync, chmodSync } from 'fs';
11
12
 
12
13
  const __dirname = dirname(fileURLToPath(import.meta.url));
13
14
  const ROOT = resolve(__dirname, '..');
14
15
 
16
+ // Fix executable permissions on Unix (npm doesn't preserve them from git)
17
+ function fixPermissions() {
18
+ if (process.platform === 'win32') return;
19
+
20
+ const files = [
21
+ resolve(ROOT, 'bin/cli.js'),
22
+ resolve(ROOT, 'scripts/start.js'),
23
+ resolve(ROOT, 'scripts/stop.js'),
24
+ resolve(ROOT, 'scripts/build.js'),
25
+ resolve(ROOT, 'scripts/clean.js'),
26
+ resolve(ROOT, 'scripts/install.js'),
27
+ resolve(ROOT, 'install.sh'),
28
+ ];
29
+
30
+ for (const file of files) {
31
+ if (existsSync(file)) {
32
+ try {
33
+ chmodSync(file, 0o755);
34
+ } catch (e) {
35
+ // Ignore permission errors
36
+ }
37
+ }
38
+ }
39
+ }
40
+
15
41
  const isCI = process.env.CI === 'true' || process.env.GITHUB_ACTIONS === 'true';
16
42
 
17
43
  if (isCI) {
@@ -46,6 +72,9 @@ function runScript(scriptPath) {
46
72
 
47
73
  async function main() {
48
74
  try {
75
+ // Fix executable permissions on Unix
76
+ fixPermissions();
77
+
49
78
  // Run full installation
50
79
  console.log('Installing dependencies...');
51
80
  await runScript(resolve(__dirname, 'install.js'));
@@ -0,0 +1,67 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Preinstall cleanup script for MachinaOS.
4
+ *
5
+ * Fixes npm ENOTEMPTY error by cleaning up leftover temp directories
6
+ * that npm fails to remove during failed install/uninstall operations.
7
+ *
8
+ * @see https://github.com/anthropics/claude-code/issues/7373
9
+ * @see https://bobbyhadz.com/blog/npm-err-code-enotempty
10
+ */
11
+ import { readdirSync, rmSync, statSync } from 'fs';
12
+ import { resolve, dirname } from 'path';
13
+ import { fileURLToPath } from 'url';
14
+ import { execSync } from 'child_process';
15
+
16
+ const __dirname = dirname(fileURLToPath(import.meta.url));
17
+
18
+ // Skip in CI
19
+ if (process.env.CI === 'true' || process.env.GITHUB_ACTIONS === 'true') {
20
+ process.exit(0);
21
+ }
22
+
23
+ function getGlobalNodeModules() {
24
+ try {
25
+ const prefix = execSync('npm config get prefix', {
26
+ encoding: 'utf-8',
27
+ stdio: ['pipe', 'pipe', 'pipe']
28
+ }).trim();
29
+
30
+ if (prefix) {
31
+ return process.platform === 'win32'
32
+ ? resolve(prefix, 'node_modules')
33
+ : resolve(prefix, 'lib', 'node_modules');
34
+ }
35
+ } catch {
36
+ // Ignore
37
+ }
38
+ return null;
39
+ }
40
+
41
+ function cleanup() {
42
+ const nodeModules = getGlobalNodeModules();
43
+ if (!nodeModules) return;
44
+
45
+ try {
46
+ const entries = readdirSync(nodeModules);
47
+
48
+ // Clean .machinaos-* temp directories
49
+ for (const name of entries) {
50
+ if (name.startsWith('.machinaos-')) {
51
+ const fullPath = resolve(nodeModules, name);
52
+ try {
53
+ if (statSync(fullPath).isDirectory()) {
54
+ rmSync(fullPath, { recursive: true, force: true });
55
+ console.log(`Cleaned: ${name}`);
56
+ }
57
+ } catch {
58
+ // Ignore
59
+ }
60
+ }
61
+ }
62
+ } catch {
63
+ // Can't read node_modules - that's fine
64
+ }
65
+ }
66
+
67
+ cleanup();
File without changes
package/scripts/start.js CHANGED
File without changes
package/scripts/stop.js CHANGED
File without changes
File without changes
@@ -0,0 +1,459 @@
1
+ {
2
+ "id": "workflow-1770568399727-b5zkjpuda",
3
+ "name": "Zeenie",
4
+ "nodes": [
5
+ {
6
+ "id": "chatAgent-1770207244010",
7
+ "type": "chatAgent",
8
+ "position": {
9
+ "x": 260,
10
+ "y": 180
11
+ },
12
+ "data": {
13
+ "label": "Zeenie"
14
+ },
15
+ "width": 260,
16
+ "height": 160,
17
+ "selected": false,
18
+ "positionAbsolute": {
19
+ "x": 260,
20
+ "y": 180
21
+ },
22
+ "dragging": false
23
+ },
24
+ {
25
+ "id": "chatTrigger-1770207686160",
26
+ "type": "chatTrigger",
27
+ "position": {
28
+ "x": -400,
29
+ "y": 260
30
+ },
31
+ "data": {
32
+ "label": "Chat Trigger"
33
+ },
34
+ "width": 67,
35
+ "height": 82,
36
+ "selected": false,
37
+ "positionAbsolute": {
38
+ "x": -400,
39
+ "y": 260
40
+ },
41
+ "dragging": false
42
+ },
43
+ {
44
+ "id": "console-1770207687094",
45
+ "type": "console",
46
+ "position": {
47
+ "x": 780,
48
+ "y": 300
49
+ },
50
+ "data": {
51
+ "label": "Console"
52
+ },
53
+ "width": 60,
54
+ "height": 82,
55
+ "selected": false,
56
+ "positionAbsolute": {
57
+ "x": 780,
58
+ "y": 300
59
+ },
60
+ "dragging": true
61
+ },
62
+ {
63
+ "id": "whatsappSend-1770207695172",
64
+ "type": "whatsappSend",
65
+ "position": {
66
+ "x": 760,
67
+ "y": 140
68
+ },
69
+ "data": {
70
+ "label": "WhatsApp Send"
71
+ },
72
+ "width": 87,
73
+ "height": 82,
74
+ "selected": false,
75
+ "positionAbsolute": {
76
+ "x": 760,
77
+ "y": 140
78
+ },
79
+ "dragging": false
80
+ },
81
+ {
82
+ "id": "whatsappReceive-1770207696316",
83
+ "type": "whatsappReceive",
84
+ "position": {
85
+ "x": -420,
86
+ "y": 140
87
+ },
88
+ "data": {
89
+ "label": "WhatsApp Receive"
90
+ },
91
+ "width": 101,
92
+ "height": 82,
93
+ "selected": false,
94
+ "positionAbsolute": {
95
+ "x": -420,
96
+ "y": 140
97
+ },
98
+ "dragging": true
99
+ },
100
+ {
101
+ "id": "whatsappDb-1770207697703",
102
+ "type": "whatsappDb",
103
+ "position": {
104
+ "x": 1460,
105
+ "y": 540
106
+ },
107
+ "data": {
108
+ "label": "WhatsApp DB"
109
+ },
110
+ "width": 76,
111
+ "height": 82,
112
+ "selected": false,
113
+ "positionAbsolute": {
114
+ "x": 1460,
115
+ "y": 540
116
+ },
117
+ "dragging": true
118
+ },
119
+ {
120
+ "id": "webSearchTool-1770207714722",
121
+ "type": "webSearchTool",
122
+ "position": {
123
+ "x": 640,
124
+ "y": 540
125
+ },
126
+ "data": {
127
+ "label": "Web Search Tool"
128
+ },
129
+ "width": 91,
130
+ "height": 82,
131
+ "selected": false,
132
+ "positionAbsolute": {
133
+ "x": 640,
134
+ "y": 540
135
+ },
136
+ "dragging": false
137
+ },
138
+ {
139
+ "id": "httpRequest-1770207725414",
140
+ "type": "httpRequest",
141
+ "position": {
142
+ "x": 760,
143
+ "y": 540
144
+ },
145
+ "data": {
146
+ "label": "HTTP Request"
147
+ },
148
+ "width": 76,
149
+ "height": 82,
150
+ "selected": false,
151
+ "positionAbsolute": {
152
+ "x": 760,
153
+ "y": 540
154
+ },
155
+ "dragging": false
156
+ },
157
+ {
158
+ "id": "gmaps_locations-1770207738763",
159
+ "type": "gmaps_locations",
160
+ "position": {
161
+ "x": 1180,
162
+ "y": 540
163
+ },
164
+ "data": {
165
+ "label": "GMaps Locations"
166
+ },
167
+ "width": 93,
168
+ "height": 82,
169
+ "selected": false,
170
+ "positionAbsolute": {
171
+ "x": 1180,
172
+ "y": 540
173
+ },
174
+ "dragging": false
175
+ },
176
+ {
177
+ "id": "gmaps_nearby_places-1770207740402",
178
+ "type": "gmaps_nearby_places",
179
+ "position": {
180
+ "x": 1300,
181
+ "y": 540
182
+ },
183
+ "data": {
184
+ "label": "GMaps Nearby Places"
185
+ },
186
+ "width": 118,
187
+ "height": 82,
188
+ "selected": false,
189
+ "positionAbsolute": {
190
+ "x": 1300,
191
+ "y": 540
192
+ },
193
+ "dragging": true
194
+ },
195
+ {
196
+ "id": "pythonExecutor-1770207749221",
197
+ "type": "pythonExecutor",
198
+ "position": {
199
+ "x": 1000,
200
+ "y": 540
201
+ },
202
+ "data": {
203
+ "label": "Python Executor"
204
+ },
205
+ "width": 89,
206
+ "height": 82,
207
+ "selected": false,
208
+ "positionAbsolute": {
209
+ "x": 1000,
210
+ "y": 540
211
+ },
212
+ "dragging": true
213
+ },
214
+ {
215
+ "id": "javascriptExecutor-1770207751142",
216
+ "type": "javascriptExecutor",
217
+ "position": {
218
+ "x": 860,
219
+ "y": 540
220
+ },
221
+ "data": {
222
+ "label": "JavaScript Executor"
223
+ },
224
+ "width": 105,
225
+ "height": 82,
226
+ "selected": false,
227
+ "positionAbsolute": {
228
+ "x": 860,
229
+ "y": 540
230
+ },
231
+ "dragging": false
232
+ },
233
+ {
234
+ "id": "masterSkill-1770207855144",
235
+ "type": "masterSkill",
236
+ "position": {
237
+ "x": 200,
238
+ "y": 540
239
+ },
240
+ "data": {
241
+ "label": "Master Skill"
242
+ },
243
+ "width": 63,
244
+ "height": 82,
245
+ "selected": false,
246
+ "positionAbsolute": {
247
+ "x": 200,
248
+ "y": 540
249
+ },
250
+ "dragging": false
251
+ },
252
+ {
253
+ "id": "simpleMemory-1770207943830",
254
+ "type": "simpleMemory",
255
+ "position": {
256
+ "x": 60,
257
+ "y": 540
258
+ },
259
+ "data": {
260
+ "label": "Simple Memory"
261
+ },
262
+ "width": 87,
263
+ "height": 82,
264
+ "selected": false,
265
+ "positionAbsolute": {
266
+ "x": 60,
267
+ "y": 540
268
+ },
269
+ "dragging": true
270
+ }
271
+ ],
272
+ "edges": [
273
+ {
274
+ "type": "smoothstep",
275
+ "animated": true,
276
+ "style": {
277
+ "stroke": "#8be9fd",
278
+ "strokeWidth": 3
279
+ },
280
+ "source": "chatTrigger-1770207686160",
281
+ "sourceHandle": "output-main",
282
+ "target": "chatAgent-1770207244010",
283
+ "targetHandle": "input-main",
284
+ "id": "reactflow__edge-chatTrigger-1770207686160output-main-chatAgent-1770207244010input-main",
285
+ "selected": false
286
+ },
287
+ {
288
+ "type": "smoothstep",
289
+ "animated": true,
290
+ "style": {
291
+ "stroke": "#8be9fd",
292
+ "strokeWidth": 3
293
+ },
294
+ "source": "whatsappReceive-1770207696316",
295
+ "sourceHandle": "output-main",
296
+ "target": "chatAgent-1770207244010",
297
+ "targetHandle": "input-main",
298
+ "id": "reactflow__edge-whatsappReceive-1770207696316output-main-chatAgent-1770207244010input-main",
299
+ "selected": false
300
+ },
301
+ {
302
+ "type": "smoothstep",
303
+ "animated": true,
304
+ "style": {
305
+ "stroke": "#8be9fd",
306
+ "strokeWidth": 3
307
+ },
308
+ "source": "masterSkill-1770207855144",
309
+ "sourceHandle": "output-main",
310
+ "target": "chatAgent-1770207244010",
311
+ "targetHandle": "input-skill",
312
+ "id": "reactflow__edge-masterSkill-1770207855144output-main-chatAgent-1770207244010input-skill",
313
+ "selected": false
314
+ },
315
+ {
316
+ "type": "smoothstep",
317
+ "animated": true,
318
+ "style": {
319
+ "stroke": "#8be9fd",
320
+ "strokeWidth": 3
321
+ },
322
+ "source": "simpleMemory-1770207943830",
323
+ "sourceHandle": "output-memory",
324
+ "target": "chatAgent-1770207244010",
325
+ "targetHandle": "input-memory",
326
+ "id": "reactflow__edge-simpleMemory-1770207943830output-memory-chatAgent-1770207244010input-memory",
327
+ "selected": false
328
+ },
329
+ {
330
+ "type": "smoothstep",
331
+ "animated": true,
332
+ "style": {
333
+ "stroke": "#8be9fd",
334
+ "strokeWidth": 3
335
+ },
336
+ "source": "httpRequest-1770207725414",
337
+ "sourceHandle": "output-tool",
338
+ "target": "chatAgent-1770207244010",
339
+ "targetHandle": "input-tools",
340
+ "id": "reactflow__edge-httpRequest-1770207725414output-tool-chatAgent-1770207244010input-tools",
341
+ "selected": false
342
+ },
343
+ {
344
+ "type": "smoothstep",
345
+ "animated": true,
346
+ "style": {
347
+ "stroke": "#8be9fd",
348
+ "strokeWidth": 3
349
+ },
350
+ "source": "javascriptExecutor-1770207751142",
351
+ "sourceHandle": "output-tool",
352
+ "target": "chatAgent-1770207244010",
353
+ "targetHandle": "input-tools",
354
+ "id": "reactflow__edge-javascriptExecutor-1770207751142output-tool-chatAgent-1770207244010input-tools",
355
+ "selected": false
356
+ },
357
+ {
358
+ "type": "smoothstep",
359
+ "animated": true,
360
+ "style": {
361
+ "stroke": "#8be9fd",
362
+ "strokeWidth": 3
363
+ },
364
+ "source": "webSearchTool-1770207714722",
365
+ "sourceHandle": "output-tool",
366
+ "target": "chatAgent-1770207244010",
367
+ "targetHandle": "input-tools",
368
+ "id": "reactflow__edge-webSearchTool-1770207714722output-tool-chatAgent-1770207244010input-tools",
369
+ "selected": false
370
+ },
371
+ {
372
+ "type": "smoothstep",
373
+ "animated": true,
374
+ "style": {
375
+ "stroke": "#8be9fd",
376
+ "strokeWidth": 3
377
+ },
378
+ "source": "pythonExecutor-1770207749221",
379
+ "sourceHandle": "output-tool",
380
+ "target": "chatAgent-1770207244010",
381
+ "targetHandle": "input-tools",
382
+ "id": "reactflow__edge-pythonExecutor-1770207749221output-tool-chatAgent-1770207244010input-tools",
383
+ "selected": false
384
+ },
385
+ {
386
+ "type": "smoothstep",
387
+ "animated": true,
388
+ "style": {
389
+ "stroke": "#8be9fd",
390
+ "strokeWidth": 3
391
+ },
392
+ "source": "gmaps_locations-1770207738763",
393
+ "sourceHandle": "output-tool",
394
+ "target": "chatAgent-1770207244010",
395
+ "targetHandle": "input-tools",
396
+ "id": "reactflow__edge-gmaps_locations-1770207738763output-tool-chatAgent-1770207244010input-tools",
397
+ "selected": false
398
+ },
399
+ {
400
+ "type": "smoothstep",
401
+ "animated": true,
402
+ "style": {
403
+ "stroke": "#8be9fd",
404
+ "strokeWidth": 3
405
+ },
406
+ "source": "gmaps_nearby_places-1770207740402",
407
+ "sourceHandle": "output-tool",
408
+ "target": "chatAgent-1770207244010",
409
+ "targetHandle": "input-tools",
410
+ "id": "reactflow__edge-gmaps_nearby_places-1770207740402output-tool-chatAgent-1770207244010input-tools",
411
+ "selected": false
412
+ },
413
+ {
414
+ "type": "smoothstep",
415
+ "animated": true,
416
+ "style": {
417
+ "stroke": "#8be9fd",
418
+ "strokeWidth": 3
419
+ },
420
+ "source": "whatsappDb-1770207697703",
421
+ "sourceHandle": "output-tool",
422
+ "target": "chatAgent-1770207244010",
423
+ "targetHandle": "input-tools",
424
+ "id": "reactflow__edge-whatsappDb-1770207697703output-tool-chatAgent-1770207244010input-tools",
425
+ "selected": false
426
+ },
427
+ {
428
+ "type": "smoothstep",
429
+ "animated": true,
430
+ "style": {
431
+ "stroke": "#8be9fd",
432
+ "strokeWidth": 3
433
+ },
434
+ "source": "chatAgent-1770207244010",
435
+ "sourceHandle": "output-main",
436
+ "target": "console-1770207687094",
437
+ "targetHandle": "input-main",
438
+ "id": "reactflow__edge-chatAgent-1770207244010output-main-console-1770207687094input-main",
439
+ "selected": false
440
+ },
441
+ {
442
+ "type": "smoothstep",
443
+ "animated": true,
444
+ "style": {
445
+ "stroke": "#8be9fd",
446
+ "strokeWidth": 3
447
+ },
448
+ "source": "chatAgent-1770207244010",
449
+ "sourceHandle": "output-main",
450
+ "target": "whatsappSend-1770207695172",
451
+ "targetHandle": "input-main",
452
+ "id": "reactflow__edge-chatAgent-1770207244010output-main-whatsappSend-1770207695172input-main",
453
+ "selected": false
454
+ }
455
+ ],
456
+ "createdAt": "2026-02-08T16:33:19.727Z",
457
+ "lastModified": "2026-02-08T16:35:36.239Z",
458
+ "version": "0.0.10"
459
+ }
@@ -0,0 +1,459 @@
1
+ {
2
+ "id": "workflow-1770568399727-b5zkjpuda",
3
+ "name": "Zeenie",
4
+ "nodes": [
5
+ {
6
+ "id": "chatAgent-1770207244010",
7
+ "type": "chatAgent",
8
+ "position": {
9
+ "x": 260,
10
+ "y": 180
11
+ },
12
+ "data": {
13
+ "label": "Zeenie"
14
+ },
15
+ "width": 260,
16
+ "height": 160,
17
+ "selected": false,
18
+ "positionAbsolute": {
19
+ "x": 260,
20
+ "y": 180
21
+ },
22
+ "dragging": false
23
+ },
24
+ {
25
+ "id": "chatTrigger-1770207686160",
26
+ "type": "chatTrigger",
27
+ "position": {
28
+ "x": -400,
29
+ "y": 260
30
+ },
31
+ "data": {
32
+ "label": "Chat Trigger"
33
+ },
34
+ "width": 67,
35
+ "height": 82,
36
+ "selected": false,
37
+ "positionAbsolute": {
38
+ "x": -400,
39
+ "y": 260
40
+ },
41
+ "dragging": false
42
+ },
43
+ {
44
+ "id": "console-1770207687094",
45
+ "type": "console",
46
+ "position": {
47
+ "x": 780,
48
+ "y": 300
49
+ },
50
+ "data": {
51
+ "label": "Console"
52
+ },
53
+ "width": 60,
54
+ "height": 82,
55
+ "selected": false,
56
+ "positionAbsolute": {
57
+ "x": 780,
58
+ "y": 300
59
+ },
60
+ "dragging": true
61
+ },
62
+ {
63
+ "id": "whatsappSend-1770207695172",
64
+ "type": "whatsappSend",
65
+ "position": {
66
+ "x": 760,
67
+ "y": 140
68
+ },
69
+ "data": {
70
+ "label": "WhatsApp Send"
71
+ },
72
+ "width": 87,
73
+ "height": 82,
74
+ "selected": false,
75
+ "positionAbsolute": {
76
+ "x": 760,
77
+ "y": 140
78
+ },
79
+ "dragging": false
80
+ },
81
+ {
82
+ "id": "whatsappReceive-1770207696316",
83
+ "type": "whatsappReceive",
84
+ "position": {
85
+ "x": -420,
86
+ "y": 140
87
+ },
88
+ "data": {
89
+ "label": "WhatsApp Receive"
90
+ },
91
+ "width": 101,
92
+ "height": 82,
93
+ "selected": false,
94
+ "positionAbsolute": {
95
+ "x": -420,
96
+ "y": 140
97
+ },
98
+ "dragging": true
99
+ },
100
+ {
101
+ "id": "whatsappDb-1770207697703",
102
+ "type": "whatsappDb",
103
+ "position": {
104
+ "x": 1460,
105
+ "y": 540
106
+ },
107
+ "data": {
108
+ "label": "WhatsApp DB"
109
+ },
110
+ "width": 76,
111
+ "height": 82,
112
+ "selected": false,
113
+ "positionAbsolute": {
114
+ "x": 1460,
115
+ "y": 540
116
+ },
117
+ "dragging": true
118
+ },
119
+ {
120
+ "id": "webSearchTool-1770207714722",
121
+ "type": "webSearchTool",
122
+ "position": {
123
+ "x": 640,
124
+ "y": 540
125
+ },
126
+ "data": {
127
+ "label": "Web Search Tool"
128
+ },
129
+ "width": 91,
130
+ "height": 82,
131
+ "selected": false,
132
+ "positionAbsolute": {
133
+ "x": 640,
134
+ "y": 540
135
+ },
136
+ "dragging": false
137
+ },
138
+ {
139
+ "id": "httpRequest-1770207725414",
140
+ "type": "httpRequest",
141
+ "position": {
142
+ "x": 760,
143
+ "y": 540
144
+ },
145
+ "data": {
146
+ "label": "HTTP Request"
147
+ },
148
+ "width": 76,
149
+ "height": 82,
150
+ "selected": false,
151
+ "positionAbsolute": {
152
+ "x": 760,
153
+ "y": 540
154
+ },
155
+ "dragging": false
156
+ },
157
+ {
158
+ "id": "gmaps_locations-1770207738763",
159
+ "type": "gmaps_locations",
160
+ "position": {
161
+ "x": 1180,
162
+ "y": 540
163
+ },
164
+ "data": {
165
+ "label": "GMaps Locations"
166
+ },
167
+ "width": 93,
168
+ "height": 82,
169
+ "selected": false,
170
+ "positionAbsolute": {
171
+ "x": 1180,
172
+ "y": 540
173
+ },
174
+ "dragging": false
175
+ },
176
+ {
177
+ "id": "gmaps_nearby_places-1770207740402",
178
+ "type": "gmaps_nearby_places",
179
+ "position": {
180
+ "x": 1300,
181
+ "y": 540
182
+ },
183
+ "data": {
184
+ "label": "GMaps Nearby Places"
185
+ },
186
+ "width": 118,
187
+ "height": 82,
188
+ "selected": false,
189
+ "positionAbsolute": {
190
+ "x": 1300,
191
+ "y": 540
192
+ },
193
+ "dragging": true
194
+ },
195
+ {
196
+ "id": "pythonExecutor-1770207749221",
197
+ "type": "pythonExecutor",
198
+ "position": {
199
+ "x": 1000,
200
+ "y": 540
201
+ },
202
+ "data": {
203
+ "label": "Python Executor"
204
+ },
205
+ "width": 89,
206
+ "height": 82,
207
+ "selected": false,
208
+ "positionAbsolute": {
209
+ "x": 1000,
210
+ "y": 540
211
+ },
212
+ "dragging": true
213
+ },
214
+ {
215
+ "id": "javascriptExecutor-1770207751142",
216
+ "type": "javascriptExecutor",
217
+ "position": {
218
+ "x": 860,
219
+ "y": 540
220
+ },
221
+ "data": {
222
+ "label": "JavaScript Executor"
223
+ },
224
+ "width": 105,
225
+ "height": 82,
226
+ "selected": false,
227
+ "positionAbsolute": {
228
+ "x": 860,
229
+ "y": 540
230
+ },
231
+ "dragging": false
232
+ },
233
+ {
234
+ "id": "masterSkill-1770207855144",
235
+ "type": "masterSkill",
236
+ "position": {
237
+ "x": 200,
238
+ "y": 540
239
+ },
240
+ "data": {
241
+ "label": "Master Skill"
242
+ },
243
+ "width": 63,
244
+ "height": 82,
245
+ "selected": false,
246
+ "positionAbsolute": {
247
+ "x": 200,
248
+ "y": 540
249
+ },
250
+ "dragging": false
251
+ },
252
+ {
253
+ "id": "simpleMemory-1770207943830",
254
+ "type": "simpleMemory",
255
+ "position": {
256
+ "x": 60,
257
+ "y": 540
258
+ },
259
+ "data": {
260
+ "label": "Simple Memory"
261
+ },
262
+ "width": 87,
263
+ "height": 82,
264
+ "selected": false,
265
+ "positionAbsolute": {
266
+ "x": 60,
267
+ "y": 540
268
+ },
269
+ "dragging": true
270
+ }
271
+ ],
272
+ "edges": [
273
+ {
274
+ "type": "smoothstep",
275
+ "animated": true,
276
+ "style": {
277
+ "stroke": "#8be9fd",
278
+ "strokeWidth": 3
279
+ },
280
+ "source": "chatTrigger-1770207686160",
281
+ "sourceHandle": "output-main",
282
+ "target": "chatAgent-1770207244010",
283
+ "targetHandle": "input-main",
284
+ "id": "reactflow__edge-chatTrigger-1770207686160output-main-chatAgent-1770207244010input-main",
285
+ "selected": false
286
+ },
287
+ {
288
+ "type": "smoothstep",
289
+ "animated": true,
290
+ "style": {
291
+ "stroke": "#8be9fd",
292
+ "strokeWidth": 3
293
+ },
294
+ "source": "whatsappReceive-1770207696316",
295
+ "sourceHandle": "output-main",
296
+ "target": "chatAgent-1770207244010",
297
+ "targetHandle": "input-main",
298
+ "id": "reactflow__edge-whatsappReceive-1770207696316output-main-chatAgent-1770207244010input-main",
299
+ "selected": false
300
+ },
301
+ {
302
+ "type": "smoothstep",
303
+ "animated": true,
304
+ "style": {
305
+ "stroke": "#8be9fd",
306
+ "strokeWidth": 3
307
+ },
308
+ "source": "masterSkill-1770207855144",
309
+ "sourceHandle": "output-main",
310
+ "target": "chatAgent-1770207244010",
311
+ "targetHandle": "input-skill",
312
+ "id": "reactflow__edge-masterSkill-1770207855144output-main-chatAgent-1770207244010input-skill",
313
+ "selected": false
314
+ },
315
+ {
316
+ "type": "smoothstep",
317
+ "animated": true,
318
+ "style": {
319
+ "stroke": "#8be9fd",
320
+ "strokeWidth": 3
321
+ },
322
+ "source": "simpleMemory-1770207943830",
323
+ "sourceHandle": "output-memory",
324
+ "target": "chatAgent-1770207244010",
325
+ "targetHandle": "input-memory",
326
+ "id": "reactflow__edge-simpleMemory-1770207943830output-memory-chatAgent-1770207244010input-memory",
327
+ "selected": false
328
+ },
329
+ {
330
+ "type": "smoothstep",
331
+ "animated": true,
332
+ "style": {
333
+ "stroke": "#8be9fd",
334
+ "strokeWidth": 3
335
+ },
336
+ "source": "httpRequest-1770207725414",
337
+ "sourceHandle": "output-tool",
338
+ "target": "chatAgent-1770207244010",
339
+ "targetHandle": "input-tools",
340
+ "id": "reactflow__edge-httpRequest-1770207725414output-tool-chatAgent-1770207244010input-tools",
341
+ "selected": false
342
+ },
343
+ {
344
+ "type": "smoothstep",
345
+ "animated": true,
346
+ "style": {
347
+ "stroke": "#8be9fd",
348
+ "strokeWidth": 3
349
+ },
350
+ "source": "javascriptExecutor-1770207751142",
351
+ "sourceHandle": "output-tool",
352
+ "target": "chatAgent-1770207244010",
353
+ "targetHandle": "input-tools",
354
+ "id": "reactflow__edge-javascriptExecutor-1770207751142output-tool-chatAgent-1770207244010input-tools",
355
+ "selected": false
356
+ },
357
+ {
358
+ "type": "smoothstep",
359
+ "animated": true,
360
+ "style": {
361
+ "stroke": "#8be9fd",
362
+ "strokeWidth": 3
363
+ },
364
+ "source": "webSearchTool-1770207714722",
365
+ "sourceHandle": "output-tool",
366
+ "target": "chatAgent-1770207244010",
367
+ "targetHandle": "input-tools",
368
+ "id": "reactflow__edge-webSearchTool-1770207714722output-tool-chatAgent-1770207244010input-tools",
369
+ "selected": false
370
+ },
371
+ {
372
+ "type": "smoothstep",
373
+ "animated": true,
374
+ "style": {
375
+ "stroke": "#8be9fd",
376
+ "strokeWidth": 3
377
+ },
378
+ "source": "pythonExecutor-1770207749221",
379
+ "sourceHandle": "output-tool",
380
+ "target": "chatAgent-1770207244010",
381
+ "targetHandle": "input-tools",
382
+ "id": "reactflow__edge-pythonExecutor-1770207749221output-tool-chatAgent-1770207244010input-tools",
383
+ "selected": false
384
+ },
385
+ {
386
+ "type": "smoothstep",
387
+ "animated": true,
388
+ "style": {
389
+ "stroke": "#8be9fd",
390
+ "strokeWidth": 3
391
+ },
392
+ "source": "gmaps_locations-1770207738763",
393
+ "sourceHandle": "output-tool",
394
+ "target": "chatAgent-1770207244010",
395
+ "targetHandle": "input-tools",
396
+ "id": "reactflow__edge-gmaps_locations-1770207738763output-tool-chatAgent-1770207244010input-tools",
397
+ "selected": false
398
+ },
399
+ {
400
+ "type": "smoothstep",
401
+ "animated": true,
402
+ "style": {
403
+ "stroke": "#8be9fd",
404
+ "strokeWidth": 3
405
+ },
406
+ "source": "gmaps_nearby_places-1770207740402",
407
+ "sourceHandle": "output-tool",
408
+ "target": "chatAgent-1770207244010",
409
+ "targetHandle": "input-tools",
410
+ "id": "reactflow__edge-gmaps_nearby_places-1770207740402output-tool-chatAgent-1770207244010input-tools",
411
+ "selected": false
412
+ },
413
+ {
414
+ "type": "smoothstep",
415
+ "animated": true,
416
+ "style": {
417
+ "stroke": "#8be9fd",
418
+ "strokeWidth": 3
419
+ },
420
+ "source": "whatsappDb-1770207697703",
421
+ "sourceHandle": "output-tool",
422
+ "target": "chatAgent-1770207244010",
423
+ "targetHandle": "input-tools",
424
+ "id": "reactflow__edge-whatsappDb-1770207697703output-tool-chatAgent-1770207244010input-tools",
425
+ "selected": false
426
+ },
427
+ {
428
+ "type": "smoothstep",
429
+ "animated": true,
430
+ "style": {
431
+ "stroke": "#8be9fd",
432
+ "strokeWidth": 3
433
+ },
434
+ "source": "chatAgent-1770207244010",
435
+ "sourceHandle": "output-main",
436
+ "target": "console-1770207687094",
437
+ "targetHandle": "input-main",
438
+ "id": "reactflow__edge-chatAgent-1770207244010output-main-console-1770207687094input-main",
439
+ "selected": false
440
+ },
441
+ {
442
+ "type": "smoothstep",
443
+ "animated": true,
444
+ "style": {
445
+ "stroke": "#8be9fd",
446
+ "strokeWidth": 3
447
+ },
448
+ "source": "chatAgent-1770207244010",
449
+ "sourceHandle": "output-main",
450
+ "target": "whatsappSend-1770207695172",
451
+ "targetHandle": "input-main",
452
+ "id": "reactflow__edge-chatAgent-1770207244010output-main-whatsappSend-1770207695172input-main",
453
+ "selected": false
454
+ }
455
+ ],
456
+ "createdAt": "2026-02-08T16:33:19.727Z",
457
+ "lastModified": "2026-02-08T16:35:36.239Z",
458
+ "version": "0.0.10"
459
+ }