@rglabs/butterfly 1.0.0

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.

Potentially problematic release.


This version of @rglabs/butterfly might be problematic. Click here for more details.

Files changed (136) hide show
  1. package/.claude/settings.local.json +25 -0
  2. package/dist/commands/add.d.ts +21 -0
  3. package/dist/commands/add.d.ts.map +1 -0
  4. package/dist/commands/add.js +301 -0
  5. package/dist/commands/add.js.map +1 -0
  6. package/dist/commands/download.d.ts +4 -0
  7. package/dist/commands/download.d.ts.map +1 -0
  8. package/dist/commands/download.js +309 -0
  9. package/dist/commands/download.js.map +1 -0
  10. package/dist/commands/setup.d.ts +3 -0
  11. package/dist/commands/setup.d.ts.map +1 -0
  12. package/dist/commands/setup.js +41 -0
  13. package/dist/commands/setup.js.map +1 -0
  14. package/dist/commands/start/handlers/aiTasks.d.ts +4 -0
  15. package/dist/commands/start/handlers/aiTasks.d.ts.map +1 -0
  16. package/dist/commands/start/handlers/aiTasks.js +95 -0
  17. package/dist/commands/start/handlers/aiTasks.js.map +1 -0
  18. package/dist/commands/start/handlers/cronjobs.d.ts +4 -0
  19. package/dist/commands/start/handlers/cronjobs.d.ts.map +1 -0
  20. package/dist/commands/start/handlers/cronjobs.js +80 -0
  21. package/dist/commands/start/handlers/cronjobs.js.map +1 -0
  22. package/dist/commands/start/handlers/emailLayouts.d.ts +4 -0
  23. package/dist/commands/start/handlers/emailLayouts.d.ts.map +1 -0
  24. package/dist/commands/start/handlers/emailLayouts.js +83 -0
  25. package/dist/commands/start/handlers/emailLayouts.js.map +1 -0
  26. package/dist/commands/start/handlers/emailTemplates.d.ts +4 -0
  27. package/dist/commands/start/handlers/emailTemplates.d.ts.map +1 -0
  28. package/dist/commands/start/handlers/emailTemplates.js +83 -0
  29. package/dist/commands/start/handlers/emailTemplates.js.map +1 -0
  30. package/dist/commands/start/handlers/index.d.ts +11 -0
  31. package/dist/commands/start/handlers/index.d.ts.map +1 -0
  32. package/dist/commands/start/handlers/index.js +11 -0
  33. package/dist/commands/start/handlers/index.js.map +1 -0
  34. package/dist/commands/start/handlers/objects.d.ts +8 -0
  35. package/dist/commands/start/handlers/objects.d.ts.map +1 -0
  36. package/dist/commands/start/handlers/objects.js +205 -0
  37. package/dist/commands/start/handlers/objects.js.map +1 -0
  38. package/dist/commands/start/handlers/pages.d.ts +4 -0
  39. package/dist/commands/start/handlers/pages.d.ts.map +1 -0
  40. package/dist/commands/start/handlers/pages.js +86 -0
  41. package/dist/commands/start/handlers/pages.js.map +1 -0
  42. package/dist/commands/start/handlers/pdfTemplates.d.ts +4 -0
  43. package/dist/commands/start/handlers/pdfTemplates.d.ts.map +1 -0
  44. package/dist/commands/start/handlers/pdfTemplates.js +81 -0
  45. package/dist/commands/start/handlers/pdfTemplates.js.map +1 -0
  46. package/dist/commands/start/handlers/reports.d.ts +4 -0
  47. package/dist/commands/start/handlers/reports.d.ts.map +1 -0
  48. package/dist/commands/start/handlers/reports.js +159 -0
  49. package/dist/commands/start/handlers/reports.js.map +1 -0
  50. package/dist/commands/start/handlers/stateMachines.d.ts +4 -0
  51. package/dist/commands/start/handlers/stateMachines.d.ts.map +1 -0
  52. package/dist/commands/start/handlers/stateMachines.js +549 -0
  53. package/dist/commands/start/handlers/stateMachines.js.map +1 -0
  54. package/dist/commands/start/handlers/workflows.d.ts +5 -0
  55. package/dist/commands/start/handlers/workflows.d.ts.map +1 -0
  56. package/dist/commands/start/handlers/workflows.js +277 -0
  57. package/dist/commands/start/handlers/workflows.js.map +1 -0
  58. package/dist/commands/start/index.d.ts +5 -0
  59. package/dist/commands/start/index.d.ts.map +1 -0
  60. package/dist/commands/start/index.js +304 -0
  61. package/dist/commands/start/index.js.map +1 -0
  62. package/dist/commands/start/types.d.ts +25 -0
  63. package/dist/commands/start/types.d.ts.map +1 -0
  64. package/dist/commands/start/types.js +2 -0
  65. package/dist/commands/start/types.js.map +1 -0
  66. package/dist/commands/start/utils.d.ts +10 -0
  67. package/dist/commands/start/utils.d.ts.map +1 -0
  68. package/dist/commands/start/utils.js +191 -0
  69. package/dist/commands/start/utils.js.map +1 -0
  70. package/dist/commands/start.d.ts +2 -0
  71. package/dist/commands/start.d.ts.map +1 -0
  72. package/dist/commands/start.js +2 -0
  73. package/dist/commands/start.js.map +1 -0
  74. package/dist/commands/upload.d.ts +3 -0
  75. package/dist/commands/upload.d.ts.map +1 -0
  76. package/dist/commands/upload.js +115 -0
  77. package/dist/commands/upload.js.map +1 -0
  78. package/dist/commands/workflow-info.d.ts +11 -0
  79. package/dist/commands/workflow-info.d.ts.map +1 -0
  80. package/dist/commands/workflow-info.js +159 -0
  81. package/dist/commands/workflow-info.js.map +1 -0
  82. package/dist/components/DownloadProgress.d.ts +11 -0
  83. package/dist/components/DownloadProgress.d.ts.map +1 -0
  84. package/dist/components/DownloadProgress.js +29 -0
  85. package/dist/components/DownloadProgress.js.map +1 -0
  86. package/dist/components/SetupForm.d.ts +8 -0
  87. package/dist/components/SetupForm.d.ts.map +1 -0
  88. package/dist/components/SetupForm.js +56 -0
  89. package/dist/components/SetupForm.js.map +1 -0
  90. package/dist/components/UploadProgress.d.ts +11 -0
  91. package/dist/components/UploadProgress.d.ts.map +1 -0
  92. package/dist/components/UploadProgress.js +29 -0
  93. package/dist/components/UploadProgress.js.map +1 -0
  94. package/dist/index.d.ts +3 -0
  95. package/dist/index.d.ts.map +1 -0
  96. package/dist/index.js +63 -0
  97. package/dist/index.js.map +1 -0
  98. package/dist/types/index.d.ts +18 -0
  99. package/dist/types/index.d.ts.map +1 -0
  100. package/dist/types/index.js +2 -0
  101. package/dist/types/index.js.map +1 -0
  102. package/dist/utils/api.d.ts +47 -0
  103. package/dist/utils/api.d.ts.map +1 -0
  104. package/dist/utils/api.js +676 -0
  105. package/dist/utils/api.js.map +1 -0
  106. package/dist/utils/auth.d.ts +4 -0
  107. package/dist/utils/auth.d.ts.map +1 -0
  108. package/dist/utils/auth.js +22 -0
  109. package/dist/utils/auth.js.map +1 -0
  110. package/dist/utils/docs.d.ts +2 -0
  111. package/dist/utils/docs.d.ts.map +1 -0
  112. package/dist/utils/docs.js +41 -0
  113. package/dist/utils/docs.js.map +1 -0
  114. package/dist/utils/errorLogger.d.ts +6 -0
  115. package/dist/utils/errorLogger.d.ts.map +1 -0
  116. package/dist/utils/errorLogger.js +29 -0
  117. package/dist/utils/errorLogger.js.map +1 -0
  118. package/dist/utils/files.d.ts +14 -0
  119. package/dist/utils/files.d.ts.map +1 -0
  120. package/dist/utils/files.js +732 -0
  121. package/dist/utils/files.js.map +1 -0
  122. package/dist/utils/lockManager.d.ts +15 -0
  123. package/dist/utils/lockManager.d.ts.map +1 -0
  124. package/dist/utils/lockManager.js +126 -0
  125. package/dist/utils/lockManager.js.map +1 -0
  126. package/dist/utils/summaryGenerator.d.ts +2 -0
  127. package/dist/utils/summaryGenerator.d.ts.map +1 -0
  128. package/dist/utils/summaryGenerator.js +183 -0
  129. package/dist/utils/summaryGenerator.js.map +1 -0
  130. package/dist/utils/uploadHandler.d.ts +35 -0
  131. package/dist/utils/uploadHandler.d.ts.map +1 -0
  132. package/dist/utils/uploadHandler.js +706 -0
  133. package/dist/utils/uploadHandler.js.map +1 -0
  134. package/object_response.png +0 -0
  135. package/object_specs_response.png +0 -0
  136. package/package.json +56 -0
@@ -0,0 +1,277 @@
1
+ import { promises as fs } from 'fs';
2
+ import { join, basename, dirname } from 'path';
3
+ import { parse as yamlParse } from 'yaml';
4
+ const connectionStateCache = new Map();
5
+ export async function handleWorkflowFileChange(filePath, apiInstance, _isNewFile, addLog) {
6
+ const fileName = basename(filePath);
7
+ try {
8
+ if (fileName === 'workflow.json') {
9
+ const workflowData = JSON.parse(await fs.readFile(filePath, 'utf-8'));
10
+ const formData = new URLSearchParams();
11
+ formData.append('id', workflowData.id.toString());
12
+ Object.entries(workflowData).forEach(([key, value]) => {
13
+ if (key !== 'id' && value !== null && value !== undefined) {
14
+ formData.append(key, String(value));
15
+ }
16
+ });
17
+ const response = await apiInstance.httpClient.post('/admin/ajax/cms_object/operation?do=bfy_workflows__edit', formData, {
18
+ headers: {
19
+ 'Content-Type': 'application/x-www-form-urlencoded',
20
+ }
21
+ });
22
+ if (response.data && response.data.success) {
23
+ addLog(`✓ Updated workflow (ID: ${workflowData.id})`, 'success');
24
+ }
25
+ else {
26
+ const errorMsg = response.data?.error || response.data?.message || 'Unknown response format';
27
+ addLog(`✗ Failed to update workflow: ${errorMsg}`, 'error');
28
+ }
29
+ }
30
+ else if (fileName === 'version.json') {
31
+ const versionData = JSON.parse(await fs.readFile(filePath, 'utf-8'));
32
+ const formData = new URLSearchParams();
33
+ formData.append('id', versionData.id.toString());
34
+ Object.entries(versionData).forEach(([key, value]) => {
35
+ if (key !== 'id' && value !== null && value !== undefined) {
36
+ formData.append(key, String(value));
37
+ }
38
+ });
39
+ const response = await apiInstance.httpClient.post('/admin/ajax/cms_object/operation?do=bfy_workflow_versions__edit', formData, {
40
+ headers: {
41
+ 'Content-Type': 'application/x-www-form-urlencoded',
42
+ }
43
+ });
44
+ if (response.data && response.data.success) {
45
+ addLog(`✓ Updated workflow version (ID: ${versionData.id})`, 'success');
46
+ }
47
+ else {
48
+ const errorMsg = response.data?.error || response.data?.message || 'Unknown response format';
49
+ addLog(`✗ Failed to update workflow version: ${errorMsg}`, 'error');
50
+ }
51
+ }
52
+ else if (fileName === 'node.json') {
53
+ const nodeData = JSON.parse(await fs.readFile(filePath, 'utf-8'));
54
+ const fileDir = dirname(filePath);
55
+ let codeContent = null;
56
+ const codeBfyPath = join(fileDir, 'code.bfy');
57
+ try {
58
+ codeContent = await fs.readFile(codeBfyPath, 'utf-8');
59
+ }
60
+ catch {
61
+ }
62
+ let paramsData = null;
63
+ const paramsYamlPath = join(fileDir, 'params.yaml');
64
+ try {
65
+ const paramsYaml = await fs.readFile(paramsYamlPath, 'utf-8');
66
+ paramsData = yamlParse(paramsYaml) || {};
67
+ }
68
+ catch {
69
+ }
70
+ const formData = new URLSearchParams();
71
+ formData.append('id', nodeData.id.toString());
72
+ Object.entries(nodeData).forEach(([key, value]) => {
73
+ if (key !== 'id' && value !== null && value !== undefined) {
74
+ formData.append(key, String(value));
75
+ }
76
+ });
77
+ if (paramsData !== null) {
78
+ if (codeContent !== null) {
79
+ paramsData.code = codeContent;
80
+ }
81
+ formData.append('params', JSON.stringify(paramsData));
82
+ }
83
+ else if (codeContent !== null) {
84
+ formData.append('code', codeContent);
85
+ }
86
+ const response = await apiInstance.httpClient.post('/admin/ajax/cms_object/operation?do=bfy_workflow_nodes__edit', formData, {
87
+ headers: {
88
+ 'Content-Type': 'application/x-www-form-urlencoded',
89
+ }
90
+ });
91
+ if (response.data && response.data.success) {
92
+ addLog(`✓ Updated workflow node (ID: ${nodeData.id})`, 'success');
93
+ }
94
+ else {
95
+ const errorMsg = response.data?.error || response.data?.message || 'Unknown response format';
96
+ addLog(`✗ Failed to update workflow node: ${errorMsg}`, 'error');
97
+ }
98
+ }
99
+ else if (fileName === 'code.bfy' && filePath.includes('/nodes/')) {
100
+ const nodeJsonPath = join(dirname(filePath), 'node.json');
101
+ const nodeData = JSON.parse(await fs.readFile(nodeJsonPath, 'utf-8'));
102
+ const codeContent = await fs.readFile(filePath, 'utf-8');
103
+ const paramsYamlPath = join(dirname(filePath), 'params.yaml');
104
+ let hasParamsFile = false;
105
+ try {
106
+ await fs.access(paramsYamlPath);
107
+ hasParamsFile = true;
108
+ }
109
+ catch {
110
+ }
111
+ const formData = new URLSearchParams();
112
+ formData.append('id', nodeData.id.toString());
113
+ if (hasParamsFile) {
114
+ const paramsYaml = await fs.readFile(paramsYamlPath, 'utf-8');
115
+ const paramsData = yamlParse(paramsYaml) || {};
116
+ paramsData.code = codeContent;
117
+ formData.append('params', JSON.stringify(paramsData));
118
+ }
119
+ else {
120
+ formData.append('code', codeContent);
121
+ }
122
+ const response = await apiInstance.httpClient.post('/admin/ajax/cms_object/operation?do=bfy_workflow_nodes__edit', formData, {
123
+ headers: {
124
+ 'Content-Type': 'application/x-www-form-urlencoded',
125
+ }
126
+ });
127
+ if (response.data && response.data.success) {
128
+ addLog(`✓ Updated workflow node code (ID: ${nodeData.id})`, 'success');
129
+ }
130
+ else {
131
+ const errorMsg = response.data?.error || response.data?.message || 'Unknown response format';
132
+ addLog(`✗ Failed to update workflow node code: ${errorMsg}`, 'error');
133
+ }
134
+ }
135
+ else if (fileName === 'params.yaml' && filePath.includes('/nodes/')) {
136
+ const nodeJsonPath = join(dirname(filePath), 'node.json');
137
+ const nodeData = JSON.parse(await fs.readFile(nodeJsonPath, 'utf-8'));
138
+ const paramsYaml = await fs.readFile(filePath, 'utf-8');
139
+ const paramsData = yamlParse(paramsYaml) || {};
140
+ const codeBfyPath = join(dirname(filePath), 'code.bfy');
141
+ try {
142
+ const codeContent = await fs.readFile(codeBfyPath, 'utf-8');
143
+ paramsData.code = codeContent;
144
+ }
145
+ catch {
146
+ }
147
+ const formData = new URLSearchParams();
148
+ formData.append('id', nodeData.id.toString());
149
+ formData.append('params', JSON.stringify(paramsData));
150
+ const response = await apiInstance.httpClient.post('/admin/ajax/cms_object/operation?do=bfy_workflow_nodes__edit', formData, {
151
+ headers: {
152
+ 'Content-Type': 'application/x-www-form-urlencoded',
153
+ }
154
+ });
155
+ if (response.data && response.data.success) {
156
+ addLog(`✓ Updated workflow node params (ID: ${nodeData.id})`, 'success');
157
+ }
158
+ else {
159
+ const errorMsg = response.data?.error || response.data?.message || 'Unknown response format';
160
+ addLog(`✗ Failed to update workflow node params: ${errorMsg}`, 'error');
161
+ }
162
+ }
163
+ else if (fileName === 'connections.json') {
164
+ await handleConnectionsChange(filePath, apiInstance, addLog);
165
+ }
166
+ }
167
+ catch (err) {
168
+ addLog(`✗ Error handling workflow file: ${err instanceof Error ? err.message : 'Unknown error'}`, 'error');
169
+ }
170
+ }
171
+ async function handleConnectionsChange(filePath, apiInstance, addLog) {
172
+ try {
173
+ const newConnections = JSON.parse(await fs.readFile(filePath, 'utf-8'));
174
+ const cacheKey = filePath;
175
+ const previousConnections = connectionStateCache.get(cacheKey) || [];
176
+ const previousById = new Map(previousConnections.filter((c) => c.id).map((c) => [c.id, c]));
177
+ const newById = new Map(newConnections.filter(c => c.id).map(c => [c.id, c]));
178
+ let created = 0;
179
+ let updated = 0;
180
+ let deleted = 0;
181
+ let errors = 0;
182
+ for (const [id, _conn] of previousById) {
183
+ if (!newById.has(id)) {
184
+ try {
185
+ const response = await apiInstance.deleteWorkflowConnection(id);
186
+ if (response && response.success) {
187
+ deleted++;
188
+ }
189
+ else {
190
+ errors++;
191
+ addLog(`✗ Failed to delete connection (ID: ${id}): ${response?.message || 'Unknown error'}`, 'error');
192
+ }
193
+ }
194
+ catch (err) {
195
+ errors++;
196
+ addLog(`✗ Error deleting connection (ID: ${id}): ${err instanceof Error ? err.message : 'Unknown error'}`, 'error');
197
+ }
198
+ }
199
+ }
200
+ for (const conn of newConnections) {
201
+ if (conn.id && previousById.has(conn.id)) {
202
+ const prevConn = previousById.get(conn.id);
203
+ if (hasConnectionChanged(prevConn, conn)) {
204
+ try {
205
+ const response = await apiInstance.updateWorkflowConnection(conn.id, conn);
206
+ if (response && response.success) {
207
+ updated++;
208
+ }
209
+ else {
210
+ errors++;
211
+ addLog(`✗ Failed to update connection (ID: ${conn.id}): ${response?.message || 'Unknown error'}`, 'error');
212
+ }
213
+ }
214
+ catch (err) {
215
+ errors++;
216
+ addLog(`✗ Error updating connection (ID: ${conn.id}): ${err instanceof Error ? err.message : 'Unknown error'}`, 'error');
217
+ }
218
+ }
219
+ }
220
+ else if (!conn.id) {
221
+ try {
222
+ const response = await apiInstance.createWorkflowConnection(conn);
223
+ if (response && response.success) {
224
+ created++;
225
+ if (response.id) {
226
+ conn.id = response.id;
227
+ }
228
+ }
229
+ else {
230
+ errors++;
231
+ addLog(`✗ Failed to create connection: ${response?.message || 'Unknown error'}`, 'error');
232
+ }
233
+ }
234
+ catch (err) {
235
+ errors++;
236
+ addLog(`✗ Error creating connection: ${err instanceof Error ? err.message : 'Unknown error'}`, 'error');
237
+ }
238
+ }
239
+ }
240
+ connectionStateCache.set(cacheKey, newConnections);
241
+ const parts = [];
242
+ if (created > 0)
243
+ parts.push(`${created} created`);
244
+ if (updated > 0)
245
+ parts.push(`${updated} updated`);
246
+ if (deleted > 0)
247
+ parts.push(`${deleted} deleted`);
248
+ if (errors > 0)
249
+ parts.push(`${errors} errors`);
250
+ if (parts.length > 0) {
251
+ const status = errors > 0 ? 'error' : 'success';
252
+ addLog(`✓ Synced connections: ${parts.join(', ')}`, status);
253
+ }
254
+ else {
255
+ addLog(`✓ Connections unchanged`, 'info');
256
+ }
257
+ if (created > 0) {
258
+ await fs.writeFile(filePath, JSON.stringify(newConnections, null, 2));
259
+ }
260
+ }
261
+ catch (err) {
262
+ addLog(`✗ Error syncing connections: ${err instanceof Error ? err.message : 'Unknown error'}`, 'error');
263
+ }
264
+ }
265
+ function hasConnectionChanged(prev, curr) {
266
+ const compareFields = ['source_node_id', 'target_node_id', 'source_output_key', 'target_input_key', 'connection_type'];
267
+ return compareFields.some(field => prev[field] !== curr[field]);
268
+ }
269
+ export async function initializeConnectionCache(filePath) {
270
+ try {
271
+ const connections = JSON.parse(await fs.readFile(filePath, 'utf-8'));
272
+ connectionStateCache.set(filePath, connections);
273
+ }
274
+ catch {
275
+ }
276
+ }
277
+ //# sourceMappingURL=workflows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../../../src/commands/start/handlers/workflows.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ declare const _default: (options: {
2
+ output?: string;
3
+ }) => void;
4
+ export default _default;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/start/index.tsx"],"names":[],"mappings":"yBA+XgB,SAAS;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE;AAA5C,wBAEE"}
@@ -0,0 +1,304 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import { render, Box, Text } from 'ink';
3
+ import { watch } from 'chokidar';
4
+ import { join, basename, resolve } from 'path';
5
+ import { promises as fs } from 'fs';
6
+ import { loadAuthConfig } from '../../utils/auth.js';
7
+ import { ButterflyAPI } from '../../utils/api.js';
8
+ import { UploadHandler } from '../../utils/uploadHandler.js';
9
+ import { ErrorLogger } from '../../utils/errorLogger.js';
10
+ import { LockManager } from '../../utils/lockManager.js';
11
+ import { calculateFileHash } from './utils.js';
12
+ import { handleReportFileChange, handleFileUpdate, handleListingQueryUpdate, handleResourceCreation, handleSpecCreation, handlePageFileChange, handleStateMachineFileChange, handleAiTaskFileChange, handleCronjobFileChange, handleEmailTemplateFileChange, handlePdfTemplateFileChange, handleEmailLayoutFileChange, handleWorkflowFileChange, initializeConnectionCache, } from './handlers/index.js';
13
+ async function findConnectionFiles(dir) {
14
+ const results = [];
15
+ try {
16
+ const entries = await fs.readdir(dir, { withFileTypes: true });
17
+ for (const entry of entries) {
18
+ const fullPath = join(dir, entry.name);
19
+ if (entry.isDirectory()) {
20
+ const subResults = await findConnectionFiles(fullPath);
21
+ results.push(...subResults);
22
+ }
23
+ else if (entry.name === 'connections.json') {
24
+ results.push(fullPath);
25
+ }
26
+ }
27
+ }
28
+ catch {
29
+ }
30
+ return results;
31
+ }
32
+ const StartCommand = ({ options }) => {
33
+ const [status, setStatus] = useState('loading');
34
+ const [error, setError] = useState('');
35
+ const [logs, setLogs] = useState([]);
36
+ const [fileHashes, setFileHashes] = useState(new Map());
37
+ const [pendingUpdates, setPendingUpdates] = useState(new Map());
38
+ const [uploadHandler, setUploadHandler] = useState(null);
39
+ const addLog = (message, type = 'info') => {
40
+ const timestamp = new Date().toLocaleTimeString();
41
+ setLogs(prev => [...prev.slice(-9), { timestamp, message, type }]);
42
+ if (type === 'error') {
43
+ ErrorLogger.logError(message).catch(() => {
44
+ });
45
+ }
46
+ };
47
+ const handleFileChange = async (filePath, apiInstance, isNewFile = false) => {
48
+ if (!apiInstance) {
49
+ addLog(`No API instance available`, 'error');
50
+ return;
51
+ }
52
+ const existingTimeout = pendingUpdates.get(filePath);
53
+ if (existingTimeout) {
54
+ clearTimeout(existingTimeout);
55
+ pendingUpdates.delete(filePath);
56
+ }
57
+ const timeout = setTimeout(async () => {
58
+ pendingUpdates.delete(filePath);
59
+ try {
60
+ if (!isNewFile) {
61
+ const currentHash = await calculateFileHash(filePath);
62
+ const previousHash = fileHashes.get(filePath);
63
+ if (previousHash === currentHash) {
64
+ addLog(`⏭️ Skipping ${basename(filePath)} - no content changes`, 'info');
65
+ return;
66
+ }
67
+ }
68
+ const currentHash = await calculateFileHash(filePath);
69
+ setFileHashes(prev => new Map(prev).set(filePath, currentHash));
70
+ try {
71
+ const fileName = basename(filePath);
72
+ addLog(`${isNewFile ? 'Creating' : 'Processing'} ${fileName}`, 'info');
73
+ const isMainJsonFile = ['report.json', 'task.json', 'page.json', 'cronjob.json', 'template.json', 'layout.json', 'state_machine.json', 'state.json', 'role.json', 'transition.json', 'action.json', 'object.json', 'spec.json'].includes(fileName);
74
+ if (isMainJsonFile && !isNewFile && uploadHandler) {
75
+ const result = await uploadHandler.uploadFile(filePath);
76
+ if (!result.success) {
77
+ addLog(`✗ ${result.message}`, 'error');
78
+ }
79
+ }
80
+ else if (filePath.includes('/reports/')) {
81
+ await handleReportFileChange(filePath, apiInstance, isNewFile, addLog);
82
+ }
83
+ else if (filePath.includes('/bfy_ai_tasks/')) {
84
+ await handleAiTaskFileChange(filePath, apiInstance, isNewFile, addLog);
85
+ }
86
+ else if (filePath.includes('/bfy_state_machines/')) {
87
+ await handleStateMachineFileChange(filePath, apiInstance, isNewFile, addLog);
88
+ }
89
+ else if (filePath.includes('/pages/')) {
90
+ await handlePageFileChange(filePath, apiInstance, isNewFile, addLog);
91
+ }
92
+ else if (filePath.includes('/bfy_cronjobs/')) {
93
+ await handleCronjobFileChange(filePath, apiInstance, isNewFile, addLog);
94
+ }
95
+ else if (filePath.includes('/cms_email_templates/')) {
96
+ await handleEmailTemplateFileChange(filePath, apiInstance, isNewFile, addLog);
97
+ }
98
+ else if (filePath.includes('/pdf_templates/')) {
99
+ await handlePdfTemplateFileChange(filePath, apiInstance, isNewFile, addLog);
100
+ }
101
+ else if (filePath.includes('/cms_email_layouts/')) {
102
+ await handleEmailLayoutFileChange(filePath, apiInstance, isNewFile, addLog);
103
+ }
104
+ else if (filePath.includes('/bfy_workflows/')) {
105
+ await handleWorkflowFileChange(filePath, apiInstance, isNewFile, addLog);
106
+ }
107
+ else if ((filePath.endsWith('object.json') || filePath.endsWith('page.json')) && isNewFile) {
108
+ await handleResourceCreation(filePath, apiInstance, addLog);
109
+ }
110
+ else if (filePath.endsWith('spec.json') && isNewFile) {
111
+ await handleSpecCreation(filePath, apiInstance, addLog);
112
+ }
113
+ else if (filePath.endsWith('listing_query.bfy')) {
114
+ await handleListingQueryUpdate(filePath, apiInstance, addLog);
115
+ }
116
+ else {
117
+ await handleFileUpdate(filePath, apiInstance, addLog);
118
+ }
119
+ }
120
+ catch (err) {
121
+ addLog(`✗ Error ${isNewFile ? 'creating' : 'updating'} file: ${err instanceof Error ? err.message : 'Unknown error'}`, 'error');
122
+ }
123
+ }
124
+ catch (err) {
125
+ addLog(`✗ Error processing file change: ${err instanceof Error ? err.message : 'Unknown error'}`, 'error');
126
+ }
127
+ }, 500);
128
+ setPendingUpdates(prev => new Map(prev).set(filePath, timeout));
129
+ };
130
+ useEffect(() => {
131
+ let cleanup;
132
+ const startWatching = async () => {
133
+ try {
134
+ await LockManager.acquireLock('start');
135
+ LockManager.setupCleanup();
136
+ await ErrorLogger.clearErrorLog();
137
+ const config = await loadAuthConfig();
138
+ if (!config) {
139
+ throw new Error('No authentication configured. Please run "butterfly-cli setup" in this directory first.');
140
+ }
141
+ const butterflyApi = new ButterflyAPI(config);
142
+ await butterflyApi.authenticate();
143
+ const handler = new UploadHandler(butterflyApi, {
144
+ onProgress: (message, type) => addLog(message, type)
145
+ });
146
+ setUploadHandler(handler);
147
+ const outputPath = resolve(options.output || './butterfly-resources');
148
+ const objectsPath = join(outputPath, 'objects');
149
+ const reportsPath = join(outputPath, 'reports');
150
+ const aiTasksPath = join(outputPath, 'bfy_ai_tasks');
151
+ const stateMachinesPath = join(outputPath, 'bfy_state_machines');
152
+ const pagesPath = join(outputPath, 'pages');
153
+ const cronjobsPath = join(outputPath, 'bfy_cronjobs');
154
+ const emailTemplatesPath = join(outputPath, 'cms_email_templates');
155
+ const pdfTemplatesPath = join(outputPath, 'pdf_templates');
156
+ const emailLayoutsPath = join(outputPath, 'cms_email_layouts');
157
+ const workflowsPath = join(outputPath, 'bfy_workflows');
158
+ try {
159
+ await fs.access(objectsPath);
160
+ }
161
+ catch {
162
+ throw new Error(`Objects directory not found at ${objectsPath}. Please run "butterfly-cli download" first.`);
163
+ }
164
+ const watchPaths = [objectsPath];
165
+ const watchDescriptions = ['objects'];
166
+ const optionalPaths = [
167
+ { path: reportsPath, name: 'reports' },
168
+ { path: aiTasksPath, name: 'bfy_ai_tasks' },
169
+ { path: stateMachinesPath, name: 'bfy_state_machines' },
170
+ { path: pagesPath, name: 'pages' },
171
+ { path: cronjobsPath, name: 'bfy_cronjobs' },
172
+ { path: emailTemplatesPath, name: 'cms_email_templates' },
173
+ { path: pdfTemplatesPath, name: 'pdf_templates' },
174
+ { path: emailLayoutsPath, name: 'cms_email_layouts' },
175
+ { path: workflowsPath, name: 'bfy_workflows' },
176
+ ];
177
+ for (const { path, name } of optionalPaths) {
178
+ try {
179
+ await fs.access(path);
180
+ watchPaths.push(path);
181
+ watchDescriptions.push(name);
182
+ if (name === 'bfy_workflows') {
183
+ try {
184
+ const connectionFiles = await findConnectionFiles(path);
185
+ for (const connFile of connectionFiles) {
186
+ await initializeConnectionCache(connFile);
187
+ }
188
+ if (connectionFiles.length > 0) {
189
+ addLog(`Initialized ${connectionFiles.length} workflow connection cache(s)`, 'info');
190
+ }
191
+ }
192
+ catch {
193
+ }
194
+ }
195
+ }
196
+ catch {
197
+ }
198
+ }
199
+ addLog(`Starting file watcher on ${watchDescriptions.join(', ')}`, 'info');
200
+ const watcher = watch(watchPaths, {
201
+ ignored: /(^|[\/\\])\../,
202
+ persistent: true,
203
+ ignoreInitial: true
204
+ });
205
+ watcher
206
+ .on('change', async (path) => {
207
+ addLog(`CHANGE: ${basename(path)}`, 'info');
208
+ try {
209
+ await handleFileChange(path, butterflyApi, false);
210
+ }
211
+ catch (err) {
212
+ addLog(`Handler error: ${err instanceof Error ? err.message : 'Unknown'}`, 'error');
213
+ }
214
+ })
215
+ .on('add', async (path) => {
216
+ const fileName = basename(path);
217
+ if (path.includes('/bfy_workflows/') && ((path.includes('/nodes/') && (fileName === 'code.bfy' || fileName === 'params.yaml')) ||
218
+ fileName === 'connections.json')) {
219
+ addLog(`ADD: ${fileName}`, 'info');
220
+ try {
221
+ await handleFileChange(path, butterflyApi, true);
222
+ }
223
+ catch (err) {
224
+ addLog(`Handler error: ${err instanceof Error ? err.message : 'Unknown'}`, 'error');
225
+ }
226
+ }
227
+ else {
228
+ addLog(`ADD (ignored): ${fileName}`, 'info');
229
+ }
230
+ })
231
+ .on('unlink', (path) => {
232
+ addLog(`UNLINK: ${basename(path)}`, 'info');
233
+ })
234
+ .on('ready', () => {
235
+ addLog('Watcher is ready', 'success');
236
+ })
237
+ .on('error', (err) => {
238
+ addLog(`Watcher error: ${err instanceof Error ? err.message : 'Unknown error'}`, 'error');
239
+ });
240
+ setStatus('watching');
241
+ addLog('File watcher started successfully', 'success');
242
+ return () => {
243
+ addLog('Shutting down file watcher...', 'info');
244
+ watcher.close();
245
+ LockManager.releaseLock().catch(() => {
246
+ });
247
+ };
248
+ }
249
+ catch (err) {
250
+ await LockManager.releaseLock();
251
+ const errorMessage = err instanceof Error ? err.message : 'Unknown error';
252
+ setError(errorMessage);
253
+ setStatus('error');
254
+ await ErrorLogger.logError(`Startup error: ${errorMessage}`);
255
+ return undefined;
256
+ }
257
+ };
258
+ startWatching().then(cleanupFn => {
259
+ cleanup = cleanupFn;
260
+ });
261
+ const handleSignal = () => {
262
+ if (cleanup) {
263
+ cleanup();
264
+ }
265
+ process.exit(0);
266
+ };
267
+ process.on('SIGINT', handleSignal);
268
+ process.on('SIGTERM', handleSignal);
269
+ return () => {
270
+ process.removeListener('SIGINT', handleSignal);
271
+ process.removeListener('SIGTERM', handleSignal);
272
+ if (cleanup) {
273
+ cleanup();
274
+ }
275
+ };
276
+ }, []);
277
+ const getLogColor = (type) => {
278
+ switch (type) {
279
+ case 'success': return 'green';
280
+ case 'error': return 'red';
281
+ default: return 'blue';
282
+ }
283
+ };
284
+ return (React.createElement(Box, { flexDirection: "column" },
285
+ status === 'loading' && React.createElement(Text, { color: "yellow" }, "Initializing watcher..."),
286
+ status === 'watching' && (React.createElement(Box, { flexDirection: "column" },
287
+ React.createElement(Text, { color: "green" }, "\uD83D\uDFE2 Watching for changes in resource folders..."),
288
+ React.createElement(Text, { color: "gray" }, "Press Ctrl+C to stop"),
289
+ React.createElement(Text, null, " "),
290
+ logs.length > 0 && (React.createElement(Box, { flexDirection: "column" },
291
+ React.createElement(Text, { color: "cyan" }, "Recent activity:"),
292
+ logs.map((log, index) => (React.createElement(Text, { key: index, color: getLogColor(log.type) },
293
+ "[",
294
+ log.timestamp,
295
+ "] ",
296
+ log.message))))))),
297
+ status === 'error' && (React.createElement(Box, { flexDirection: "column" },
298
+ React.createElement(Text, { color: "red" }, "\u274C Error starting watcher:"),
299
+ React.createElement(Text, { color: "red" }, error)))));
300
+ };
301
+ export default (options) => {
302
+ render(React.createElement(StartCommand, { options: options }));
303
+ };
304
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/start/index.tsx"],"names":[],"mappings":"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"}