@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.
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,25 @@
1
+ import { ButterflyAPI } from '../../utils/api.js';
2
+ export interface StartCommandProps {
3
+ options: {
4
+ output?: string;
5
+ };
6
+ }
7
+ export interface WatchLog {
8
+ timestamp: string;
9
+ message: string;
10
+ type: 'info' | 'success' | 'error';
11
+ }
12
+ export interface ResourceInfo {
13
+ resourceType: string;
14
+ tableName: string;
15
+ columnName: string | null;
16
+ resourceId: number;
17
+ specData: any;
18
+ fileName: string;
19
+ }
20
+ export type AddLogFn = (message: string, type: WatchLog['type']) => void;
21
+ export interface HandlerContext {
22
+ api: ButterflyAPI;
23
+ addLog: AddLogFn;
24
+ }
25
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/commands/start/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,GAAG,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;AAEzE,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,YAAY,CAAC;IAClB,MAAM,EAAE,QAAQ,CAAC;CAClB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/commands/start/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import { ResourceInfo } from './types.js';
2
+ export declare function getResourceInfo(filePath: string): Promise<ResourceInfo>;
3
+ export declare function getSpecColumnName(spec: any, fileName: string): string;
4
+ export declare function getFieldValue(spec: any, columnName: string): string;
5
+ export declare function syncCodeFileToSpec(filePath: string): Promise<{
6
+ updatedSpecData: any;
7
+ parameterName: string;
8
+ } | false>;
9
+ export declare function calculateFileHash(filePath: string): Promise<string>;
10
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/commands/start/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAyD7E;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAqCrE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CA6BnE;AAED,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,eAAe,EAAE,GAAG,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAAG,KAAK,CAAC,CAqE3H;AAED,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CASzE"}
@@ -0,0 +1,191 @@
1
+ import { promises as fs } from 'fs';
2
+ import { join, basename, dirname } from 'path';
3
+ export async function getResourceInfo(filePath) {
4
+ try {
5
+ const parts = filePath.split('/');
6
+ const resourcesIndex = parts.findIndex(part => part === 'butterfly-resources');
7
+ if (resourcesIndex === -1 || parts.length < resourcesIndex + 2) {
8
+ throw new Error('Invalid file path structure');
9
+ }
10
+ const resourceType = parts[resourcesIndex + 1];
11
+ let mainJsonFile = `${resourceType.slice(0, -1)}.json`;
12
+ if (resourceType === 'bfy_ai_tasks') {
13
+ mainJsonFile = 'task.json';
14
+ }
15
+ if (resourceType === 'objects') {
16
+ const tableName = parts[resourcesIndex + 3];
17
+ const columnName = parts[resourcesIndex + 4];
18
+ const mainJsonPath = join(dirname(dirname(filePath)), mainJsonFile);
19
+ const mainData = JSON.parse(await fs.readFile(mainJsonPath, 'utf-8'));
20
+ const specJsonPath = join(dirname(filePath), 'spec.json');
21
+ const specData = JSON.parse(await fs.readFile(specJsonPath, 'utf-8'));
22
+ return {
23
+ resourceType,
24
+ tableName,
25
+ columnName,
26
+ resourceId: mainData.id,
27
+ specData,
28
+ fileName: basename(filePath)
29
+ };
30
+ }
31
+ else {
32
+ const mainJsonPath = join(dirname(filePath), mainJsonFile);
33
+ const mainData = JSON.parse(await fs.readFile(mainJsonPath, 'utf-8'));
34
+ return {
35
+ resourceType,
36
+ tableName: resourceType,
37
+ columnName: null,
38
+ resourceId: mainData.id,
39
+ specData: null,
40
+ fileName: basename(filePath)
41
+ };
42
+ }
43
+ }
44
+ catch (err) {
45
+ throw new Error(`Failed to parse resource info: ${err instanceof Error ? err.message : 'Unknown error'}`);
46
+ }
47
+ }
48
+ export function getSpecColumnName(spec, fileName) {
49
+ if (fileName === 'code.js') {
50
+ return 'js_code';
51
+ }
52
+ if (fileName === 'style.css') {
53
+ return 'css_code';
54
+ }
55
+ switch (spec.type) {
56
+ case 'calculated':
57
+ if (fileName === 'code.bfy' || fileName === 'spec.json') {
58
+ return 'val_1';
59
+ }
60
+ break;
61
+ case 'custom':
62
+ if (fileName === 'template_code.bfy' || fileName === 'spec.json') {
63
+ return 'val_1';
64
+ }
65
+ else if (fileName === 'processing_code.bfy') {
66
+ return 'val_2';
67
+ }
68
+ break;
69
+ case 'filter':
70
+ if (fileName === 'filter_code.bfy' || fileName === 'spec.json') {
71
+ return 'val_3';
72
+ }
73
+ break;
74
+ case 'nested':
75
+ case 'nested_single':
76
+ if (fileName === 'configuration.yaml' || fileName === 'spec.json') {
77
+ return 'val_1';
78
+ }
79
+ break;
80
+ }
81
+ return 'val_1';
82
+ }
83
+ export function getFieldValue(spec, columnName) {
84
+ switch (columnName) {
85
+ case 'js_code':
86
+ return spec.js_code || '';
87
+ case 'css_code':
88
+ return spec.css_code || '';
89
+ case 'val_1':
90
+ return spec.val_1 || '';
91
+ case 'val_2':
92
+ return spec.val_2 || '';
93
+ case 'val_3':
94
+ return spec.val_3 || '';
95
+ default:
96
+ switch (spec.type) {
97
+ case 'calculated':
98
+ return spec.val_1 || '';
99
+ case 'custom':
100
+ return spec.val_1 || '';
101
+ case 'filter':
102
+ return spec.val_3 || '';
103
+ case 'nested':
104
+ case 'nested_single':
105
+ return spec.val_1 || '';
106
+ default:
107
+ return spec.val_1 || spec.val_2 || spec.val_3 || '';
108
+ }
109
+ }
110
+ }
111
+ export async function syncCodeFileToSpec(filePath) {
112
+ try {
113
+ const { specData, fileName } = await getResourceInfo(filePath);
114
+ const fileContent = await fs.readFile(filePath, 'utf-8');
115
+ let parameterName;
116
+ let updatedSpecData = { ...specData };
117
+ if (fileName === 'code.js') {
118
+ parameterName = 'js_code';
119
+ updatedSpecData.js_code = fileContent;
120
+ }
121
+ else if (fileName === 'style.css') {
122
+ parameterName = 'css_code';
123
+ updatedSpecData.css_code = fileContent;
124
+ }
125
+ else {
126
+ switch (specData.type) {
127
+ case 'calculated':
128
+ if (fileName === 'code.bfy') {
129
+ parameterName = 'val_1';
130
+ updatedSpecData.val_1 = fileContent;
131
+ }
132
+ else {
133
+ return false;
134
+ }
135
+ break;
136
+ case 'custom':
137
+ if (fileName === 'template_code.bfy') {
138
+ parameterName = 'val_1';
139
+ updatedSpecData.val_1 = fileContent;
140
+ }
141
+ else if (fileName === 'processing_code.bfy') {
142
+ parameterName = 'val_2';
143
+ updatedSpecData.val_2 = fileContent;
144
+ }
145
+ else {
146
+ return false;
147
+ }
148
+ break;
149
+ case 'filter':
150
+ if (fileName === 'filter_code.bfy') {
151
+ parameterName = 'val_3';
152
+ updatedSpecData.val_3 = fileContent;
153
+ }
154
+ else {
155
+ return false;
156
+ }
157
+ break;
158
+ case 'nested':
159
+ case 'nested_single':
160
+ if (fileName === 'configuration.yaml') {
161
+ parameterName = 'val_1';
162
+ updatedSpecData.val_1 = fileContent;
163
+ }
164
+ else {
165
+ return false;
166
+ }
167
+ break;
168
+ default:
169
+ return false;
170
+ }
171
+ }
172
+ const specJsonPath = join(dirname(filePath), 'spec.json');
173
+ const jsonContent = JSON.stringify(updatedSpecData, null, 2);
174
+ await fs.writeFile(specJsonPath, jsonContent, 'utf-8');
175
+ return { updatedSpecData, parameterName };
176
+ }
177
+ catch (err) {
178
+ throw new Error(`Failed to sync code file to spec: ${err instanceof Error ? err.message : 'Unknown error'}`);
179
+ }
180
+ }
181
+ export async function calculateFileHash(filePath) {
182
+ try {
183
+ const content = await fs.readFile(filePath, 'utf-8');
184
+ const hash = `${content.length}-${content.substring(0, 100)}-${content.substring(Math.max(0, content.length - 100))}`;
185
+ return hash;
186
+ }
187
+ catch {
188
+ return '';
189
+ }
190
+ }
191
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/commands/start/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { default } from './start/index.js';
2
+ //# sourceMappingURL=start.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { default } from './start/index.js';
2
+ //# sourceMappingURL=start.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare const _default: (targets: string[]) => void;
2
+ export default _default;
3
+ //# sourceMappingURL=upload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../src/commands/upload.tsx"],"names":[],"mappings":"yBA0KgB,SAAS,MAAM,EAAE;AAAjC,wBAEE"}
@@ -0,0 +1,115 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import { render, Box, Text } from 'ink';
3
+ import { join, resolve } from 'path';
4
+ import { readdir, stat } from 'fs/promises';
5
+ import { loadAuthConfig } from '../utils/auth.js';
6
+ import { ButterflyAPI } from '../utils/api.js';
7
+ import { UploadProgress } from '../components/UploadProgress.js';
8
+ import { UploadHandler } from '../utils/uploadHandler.js';
9
+ async function getFilesFromFolder(folderPath) {
10
+ const files = [];
11
+ async function traverse(currentPath) {
12
+ const entries = await readdir(currentPath, { withFileTypes: true });
13
+ for (const entry of entries) {
14
+ const fullPath = join(currentPath, entry.name);
15
+ if (entry.isDirectory()) {
16
+ if (!['node_modules', '.git', 'dist', 'build'].includes(entry.name)) {
17
+ await traverse(fullPath);
18
+ }
19
+ }
20
+ else if (entry.isFile()) {
21
+ const supportedExtensions = ['.json', '.bfy', '.yaml', '.yml', '.js', '.css'];
22
+ const supportedFiles = ['object.json', 'spec.json', 'report.json', 'task.json', 'page.json', 'cronjob.json', 'template.json', 'layout.json', 'state_machine.json', 'state.json', 'role.json', 'transition.json', 'action.json', 'query.json'];
23
+ if (supportedExtensions.some(ext => entry.name.endsWith(ext)) || supportedFiles.includes(entry.name)) {
24
+ files.push({
25
+ path: fullPath,
26
+ isFile: true
27
+ });
28
+ }
29
+ }
30
+ }
31
+ }
32
+ await traverse(folderPath);
33
+ return files;
34
+ }
35
+ const UploadCommand = ({ targets }) => {
36
+ const [status, setStatus] = useState('loading');
37
+ const [error, setError] = useState('');
38
+ const [progress, setProgress] = useState({ current: 0, total: 0 });
39
+ const [currentFile, setCurrentFile] = useState('');
40
+ useEffect(() => {
41
+ const upload = async () => {
42
+ try {
43
+ const config = await loadAuthConfig();
44
+ if (!config) {
45
+ throw new Error('No authentication configured. Please run "butterfly-cli setup" in this directory first.');
46
+ }
47
+ setStatus('uploading');
48
+ const api = new ButterflyAPI(config);
49
+ await api.authenticate();
50
+ const allFiles = [];
51
+ for (const target of targets) {
52
+ try {
53
+ const resolvedTarget = resolve(target);
54
+ const targetStat = await stat(resolvedTarget);
55
+ if (targetStat.isDirectory()) {
56
+ const files = await getFilesFromFolder(resolvedTarget);
57
+ allFiles.push(...files);
58
+ }
59
+ else if (targetStat.isFile()) {
60
+ allFiles.push({
61
+ path: resolvedTarget,
62
+ isFile: true
63
+ });
64
+ }
65
+ else {
66
+ throw new Error(`${resolvedTarget} is neither a file nor a directory`);
67
+ }
68
+ }
69
+ catch (err) {
70
+ throw new Error(`Failed to process ${target}: ${err instanceof Error ? err.message : 'Unknown error'}`);
71
+ }
72
+ }
73
+ setProgress({ current: 0, total: allFiles.length });
74
+ const uploadHandler = new UploadHandler(api, {
75
+ onProgress: (message, type) => {
76
+ if (type === 'error') {
77
+ console.error(message);
78
+ }
79
+ }
80
+ });
81
+ for (let i = 0; i < allFiles.length; i++) {
82
+ const file = allFiles[i];
83
+ setCurrentFile(file.path.split('/').pop() || file.path);
84
+ try {
85
+ const result = await uploadHandler.uploadFile(file.path);
86
+ if (!result.success) {
87
+ console.error(`Failed to upload ${file.path}:`, result.message);
88
+ }
89
+ setProgress({ current: i + 1, total: allFiles.length });
90
+ }
91
+ catch (err) {
92
+ console.error(`Failed to upload ${file.path}:`, err);
93
+ }
94
+ }
95
+ setStatus('complete');
96
+ setTimeout(() => process.exit(0), 2000);
97
+ }
98
+ catch (err) {
99
+ setError(err instanceof Error ? err.message : 'Unknown error');
100
+ setStatus('error');
101
+ setTimeout(() => process.exit(1), 3000);
102
+ }
103
+ };
104
+ upload();
105
+ }, [targets]);
106
+ return (React.createElement(Box, { flexDirection: "column" },
107
+ status === 'loading' && React.createElement(Text, { color: "yellow" }, "Loading configuration..."),
108
+ status === 'uploading' && (React.createElement(UploadProgress, { current: progress.current, total: progress.total, currentFile: currentFile, status: "uploading" })),
109
+ status === 'complete' && (React.createElement(UploadProgress, { current: progress.total, total: progress.total, currentFile: "", status: "complete" })),
110
+ status === 'error' && (React.createElement(UploadProgress, { current: 0, total: 0, currentFile: "", status: "error", error: error }))));
111
+ };
112
+ export default (targets) => {
113
+ render(React.createElement(UploadCommand, { targets: targets }));
114
+ };
115
+ //# sourceMappingURL=upload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload.js","sourceRoot":"","sources":["../../src/commands/upload.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ interface WorkflowInfoProps {
2
+ options: {
3
+ groups?: boolean;
4
+ nodes?: string;
5
+ details?: string;
6
+ group?: string;
7
+ };
8
+ }
9
+ export default function workflowInfoCommand(options: WorkflowInfoProps['options']): Promise<void>;
10
+ export {};
11
+ //# sourceMappingURL=workflow-info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-info.d.ts","sourceRoot":"","sources":["../../src/commands/workflow-info.tsx"],"names":[],"mappings":"AAKA,UAAU,iBAAiB;IACzB,OAAO,EAAE;QACP,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAqMD,wBAA8B,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,CAAC,SAAS,CAAC,iBAEtF"}
@@ -0,0 +1,159 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import { render, Box, Text } from 'ink';
3
+ import { loadAuthConfig } from '../utils/auth.js';
4
+ import { ButterflyAPI } from '../utils/api.js';
5
+ const WorkflowInfoCommand = ({ options }) => {
6
+ const [state, setState] = useState({ status: 'loading', message: 'Initializing...' });
7
+ useEffect(() => {
8
+ const run = async () => {
9
+ try {
10
+ const config = await loadAuthConfig();
11
+ if (!config) {
12
+ setState({ status: 'error', message: 'No authentication configuration found. Run "butterfly-cli setup" first.' });
13
+ return;
14
+ }
15
+ const api = new ButterflyAPI(config);
16
+ await api.authenticate();
17
+ if (options.groups) {
18
+ setState({ status: 'loading', message: 'Fetching node groups...' });
19
+ const response = await api.httpClient.get('/admin/bfy_workflow/getWorkflowNodeGroups');
20
+ if (response.data?.success) {
21
+ setState({
22
+ status: 'complete',
23
+ message: 'Node Groups:',
24
+ data: { type: 'groups', groups: response.data.node_groups }
25
+ });
26
+ }
27
+ else {
28
+ setState({ status: 'error', message: response.data?.error || 'Failed to fetch node groups' });
29
+ }
30
+ }
31
+ else if (options.nodes) {
32
+ const group = options.nodes;
33
+ setState({ status: 'loading', message: `Fetching nodes in "${group}" group...` });
34
+ const response = await api.httpClient.get(`/admin/bfy_workflow/getWorkflowNodes?group=${group}`);
35
+ if (response.data?.success) {
36
+ setState({
37
+ status: 'complete',
38
+ message: `Nodes in "${group}" group:`,
39
+ data: { type: 'nodes', group, nodes: response.data.nodes }
40
+ });
41
+ }
42
+ else {
43
+ setState({ status: 'error', message: response.data?.error || 'Failed to fetch nodes' });
44
+ }
45
+ }
46
+ else if (options.details && options.group) {
47
+ const { group, details: node } = options;
48
+ setState({ status: 'loading', message: `Fetching details for "${group}/${node}"...` });
49
+ const response = await api.httpClient.get(`/admin/bfy_workflow/getWorkflowNodeDetails?group=${group}&node=${node}`);
50
+ if (response.data?.success) {
51
+ setState({
52
+ status: 'complete',
53
+ message: `Node Details: ${group}/${node}`,
54
+ data: { type: 'details', node: response.data.node }
55
+ });
56
+ }
57
+ else {
58
+ setState({ status: 'error', message: response.data?.error || 'Failed to fetch node details' });
59
+ }
60
+ }
61
+ else {
62
+ setState({
63
+ status: 'error',
64
+ message: 'Please specify an option: --groups, --nodes <group>, or --details <node> --group <group>'
65
+ });
66
+ }
67
+ }
68
+ catch (error) {
69
+ setState({
70
+ status: 'error',
71
+ message: error instanceof Error ? error.message : 'Unknown error occurred'
72
+ });
73
+ }
74
+ };
75
+ run();
76
+ }, []);
77
+ const renderGroups = (groups) => {
78
+ return Object.entries(groups).map(([key, group]) => (React.createElement(Box, { key: key, flexDirection: "column", marginBottom: 1 },
79
+ React.createElement(Text, { color: "cyan", bold: true }, group.class_name),
80
+ React.createElement(Text, { color: "gray" },
81
+ " Name: ",
82
+ group.name),
83
+ React.createElement(Text, { color: "gray" },
84
+ " Description: ",
85
+ group.description))));
86
+ };
87
+ const renderNodes = (nodes, group) => {
88
+ return nodes.map((node) => (React.createElement(Box, { key: node.id, flexDirection: "column", marginBottom: 1 },
89
+ React.createElement(Text, { color: "cyan", bold: true }, node.id),
90
+ React.createElement(Text, { color: "gray" },
91
+ " Name: ",
92
+ node.name),
93
+ React.createElement(Text, { color: "gray" },
94
+ " Description: ",
95
+ node.description),
96
+ React.createElement(Text, { color: "yellow" },
97
+ " Usage: --node-group ",
98
+ group,
99
+ " --node-type ",
100
+ node.id))));
101
+ };
102
+ const renderDetails = (node) => {
103
+ return (React.createElement(Box, { flexDirection: "column" },
104
+ React.createElement(Text, { color: "cyan", bold: true },
105
+ node.name,
106
+ " (",
107
+ node.identifier_key,
108
+ ")"),
109
+ React.createElement(Text, { color: "gray" },
110
+ "Description: ",
111
+ node.description),
112
+ node.inputs && Object.keys(node.inputs).length > 0 && (React.createElement(Box, { flexDirection: "column", marginTop: 1 },
113
+ React.createElement(Text, { color: "green", bold: true }, "Inputs:"),
114
+ Object.entries(node.inputs).map(([key, desc]) => (React.createElement(Text, { key: key, color: "gray" },
115
+ " - ",
116
+ key,
117
+ ": ",
118
+ desc))))),
119
+ node.outputs && Object.keys(node.outputs).length > 0 && (React.createElement(Box, { flexDirection: "column", marginTop: 1 },
120
+ React.createElement(Text, { color: "yellow", bold: true }, "Outputs:"),
121
+ Object.entries(node.outputs).map(([key, desc]) => (React.createElement(Text, { key: key, color: "gray" },
122
+ " - ",
123
+ key,
124
+ ": ",
125
+ desc))))),
126
+ node.preferences && node.preferences.length > 0 && (React.createElement(Box, { flexDirection: "column", marginTop: 1 },
127
+ React.createElement(Text, { color: "magenta", bold: true }, "Preferences (params.yaml):"),
128
+ node.preferences.map((pref, idx) => (React.createElement(Box, { key: idx, flexDirection: "column", marginLeft: 2 },
129
+ React.createElement(Text, { color: "white" },
130
+ pref.name,
131
+ ": ",
132
+ React.createElement(Text, { color: "gray" },
133
+ "(",
134
+ pref.type,
135
+ ")")),
136
+ pref.description && React.createElement(Text, { color: "gray" },
137
+ " Description: ",
138
+ pref.description),
139
+ pref.default !== undefined && React.createElement(Text, { color: "gray" },
140
+ " Default: ",
141
+ JSON.stringify(pref.default)),
142
+ pref.options && pref.options.length > 0 && (React.createElement(Text, { color: "gray" },
143
+ " Options: ",
144
+ pref.options.map(o => o.value).join(', '))))))))));
145
+ };
146
+ return (React.createElement(Box, { flexDirection: "column" },
147
+ state.status === 'loading' && React.createElement(Text, { color: "yellow" }, state.message),
148
+ state.status === 'complete' && (React.createElement(Box, { flexDirection: "column" },
149
+ React.createElement(Text, { color: "green", bold: true }, state.message),
150
+ React.createElement(Text, null, " "),
151
+ state.data?.type === 'groups' && renderGroups(state.data.groups),
152
+ state.data?.type === 'nodes' && renderNodes(state.data.nodes, state.data.group),
153
+ state.data?.type === 'details' && renderDetails(state.data.node))),
154
+ state.status === 'error' && React.createElement(Text, { color: "red" }, state.message)));
155
+ };
156
+ export default async function workflowInfoCommand(options) {
157
+ render(React.createElement(WorkflowInfoCommand, { options: options }));
158
+ }
159
+ //# sourceMappingURL=workflow-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-info.js","sourceRoot":"","sources":["../../src/commands/workflow-info.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ interface DownloadProgressProps {
3
+ resourceType: string;
4
+ current: number;
5
+ total: number;
6
+ status: 'downloading' | 'complete' | 'error';
7
+ error?: string;
8
+ }
9
+ declare const DownloadProgress: React.FC<DownloadProgressProps>;
10
+ export { DownloadProgress };
11
+ //# sourceMappingURL=DownloadProgress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DownloadProgress.d.ts","sourceRoot":"","sources":["../../src/components/DownloadProgress.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,qBAAqB;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,aAAa,GAAG,UAAU,GAAG,OAAO,CAAC;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,QAAA,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CA2BrD,CAAC;AAEF,OAAO,EAAE,gBAAgB,EAAE,CAAC"}