@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.
- package/.claude/settings.local.json +25 -0
- package/dist/commands/add.d.ts +21 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +301 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/download.d.ts +4 -0
- package/dist/commands/download.d.ts.map +1 -0
- package/dist/commands/download.js +309 -0
- package/dist/commands/download.js.map +1 -0
- package/dist/commands/setup.d.ts +3 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +41 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/start/handlers/aiTasks.d.ts +4 -0
- package/dist/commands/start/handlers/aiTasks.d.ts.map +1 -0
- package/dist/commands/start/handlers/aiTasks.js +95 -0
- package/dist/commands/start/handlers/aiTasks.js.map +1 -0
- package/dist/commands/start/handlers/cronjobs.d.ts +4 -0
- package/dist/commands/start/handlers/cronjobs.d.ts.map +1 -0
- package/dist/commands/start/handlers/cronjobs.js +80 -0
- package/dist/commands/start/handlers/cronjobs.js.map +1 -0
- package/dist/commands/start/handlers/emailLayouts.d.ts +4 -0
- package/dist/commands/start/handlers/emailLayouts.d.ts.map +1 -0
- package/dist/commands/start/handlers/emailLayouts.js +83 -0
- package/dist/commands/start/handlers/emailLayouts.js.map +1 -0
- package/dist/commands/start/handlers/emailTemplates.d.ts +4 -0
- package/dist/commands/start/handlers/emailTemplates.d.ts.map +1 -0
- package/dist/commands/start/handlers/emailTemplates.js +83 -0
- package/dist/commands/start/handlers/emailTemplates.js.map +1 -0
- package/dist/commands/start/handlers/index.d.ts +11 -0
- package/dist/commands/start/handlers/index.d.ts.map +1 -0
- package/dist/commands/start/handlers/index.js +11 -0
- package/dist/commands/start/handlers/index.js.map +1 -0
- package/dist/commands/start/handlers/objects.d.ts +8 -0
- package/dist/commands/start/handlers/objects.d.ts.map +1 -0
- package/dist/commands/start/handlers/objects.js +205 -0
- package/dist/commands/start/handlers/objects.js.map +1 -0
- package/dist/commands/start/handlers/pages.d.ts +4 -0
- package/dist/commands/start/handlers/pages.d.ts.map +1 -0
- package/dist/commands/start/handlers/pages.js +86 -0
- package/dist/commands/start/handlers/pages.js.map +1 -0
- package/dist/commands/start/handlers/pdfTemplates.d.ts +4 -0
- package/dist/commands/start/handlers/pdfTemplates.d.ts.map +1 -0
- package/dist/commands/start/handlers/pdfTemplates.js +81 -0
- package/dist/commands/start/handlers/pdfTemplates.js.map +1 -0
- package/dist/commands/start/handlers/reports.d.ts +4 -0
- package/dist/commands/start/handlers/reports.d.ts.map +1 -0
- package/dist/commands/start/handlers/reports.js +159 -0
- package/dist/commands/start/handlers/reports.js.map +1 -0
- package/dist/commands/start/handlers/stateMachines.d.ts +4 -0
- package/dist/commands/start/handlers/stateMachines.d.ts.map +1 -0
- package/dist/commands/start/handlers/stateMachines.js +549 -0
- package/dist/commands/start/handlers/stateMachines.js.map +1 -0
- package/dist/commands/start/handlers/workflows.d.ts +5 -0
- package/dist/commands/start/handlers/workflows.d.ts.map +1 -0
- package/dist/commands/start/handlers/workflows.js +277 -0
- package/dist/commands/start/handlers/workflows.js.map +1 -0
- package/dist/commands/start/index.d.ts +5 -0
- package/dist/commands/start/index.d.ts.map +1 -0
- package/dist/commands/start/index.js +304 -0
- package/dist/commands/start/index.js.map +1 -0
- package/dist/commands/start/types.d.ts +25 -0
- package/dist/commands/start/types.d.ts.map +1 -0
- package/dist/commands/start/types.js +2 -0
- package/dist/commands/start/types.js.map +1 -0
- package/dist/commands/start/utils.d.ts +10 -0
- package/dist/commands/start/utils.d.ts.map +1 -0
- package/dist/commands/start/utils.js +191 -0
- package/dist/commands/start/utils.js.map +1 -0
- package/dist/commands/start.d.ts +2 -0
- package/dist/commands/start.d.ts.map +1 -0
- package/dist/commands/start.js +2 -0
- package/dist/commands/start.js.map +1 -0
- package/dist/commands/upload.d.ts +3 -0
- package/dist/commands/upload.d.ts.map +1 -0
- package/dist/commands/upload.js +115 -0
- package/dist/commands/upload.js.map +1 -0
- package/dist/commands/workflow-info.d.ts +11 -0
- package/dist/commands/workflow-info.d.ts.map +1 -0
- package/dist/commands/workflow-info.js +159 -0
- package/dist/commands/workflow-info.js.map +1 -0
- package/dist/components/DownloadProgress.d.ts +11 -0
- package/dist/components/DownloadProgress.d.ts.map +1 -0
- package/dist/components/DownloadProgress.js +29 -0
- package/dist/components/DownloadProgress.js.map +1 -0
- package/dist/components/SetupForm.d.ts +8 -0
- package/dist/components/SetupForm.d.ts.map +1 -0
- package/dist/components/SetupForm.js +56 -0
- package/dist/components/SetupForm.js.map +1 -0
- package/dist/components/UploadProgress.d.ts +11 -0
- package/dist/components/UploadProgress.d.ts.map +1 -0
- package/dist/components/UploadProgress.js +29 -0
- package/dist/components/UploadProgress.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +63 -0
- package/dist/index.js.map +1 -0
- package/dist/types/index.d.ts +18 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/api.d.ts +47 -0
- package/dist/utils/api.d.ts.map +1 -0
- package/dist/utils/api.js +676 -0
- package/dist/utils/api.js.map +1 -0
- package/dist/utils/auth.d.ts +4 -0
- package/dist/utils/auth.d.ts.map +1 -0
- package/dist/utils/auth.js +22 -0
- package/dist/utils/auth.js.map +1 -0
- package/dist/utils/docs.d.ts +2 -0
- package/dist/utils/docs.d.ts.map +1 -0
- package/dist/utils/docs.js +41 -0
- package/dist/utils/docs.js.map +1 -0
- package/dist/utils/errorLogger.d.ts +6 -0
- package/dist/utils/errorLogger.d.ts.map +1 -0
- package/dist/utils/errorLogger.js +29 -0
- package/dist/utils/errorLogger.js.map +1 -0
- package/dist/utils/files.d.ts +14 -0
- package/dist/utils/files.d.ts.map +1 -0
- package/dist/utils/files.js +732 -0
- package/dist/utils/files.js.map +1 -0
- package/dist/utils/lockManager.d.ts +15 -0
- package/dist/utils/lockManager.d.ts.map +1 -0
- package/dist/utils/lockManager.js +126 -0
- package/dist/utils/lockManager.js.map +1 -0
- package/dist/utils/summaryGenerator.d.ts +2 -0
- package/dist/utils/summaryGenerator.d.ts.map +1 -0
- package/dist/utils/summaryGenerator.js +183 -0
- package/dist/utils/summaryGenerator.js.map +1 -0
- package/dist/utils/uploadHandler.d.ts +35 -0
- package/dist/utils/uploadHandler.d.ts.map +1 -0
- package/dist/utils/uploadHandler.js +706 -0
- package/dist/utils/uploadHandler.js.map +1 -0
- package/object_response.png +0 -0
- package/object_specs_response.png +0 -0
- 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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAW1D,KAAK,UAAU,kBAAkB,CAAC,UAAkB;IAClD,MAAM,KAAK,GAAqB,EAAE,CAAC;IAEnC,KAAK,UAAU,QAAQ,CAAC,WAAmB;QACzC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAEpE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAE/C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBAExB,IAAI,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBACpE,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBAE1B,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;gBAC9E,MAAM,cAAc,GAAG,CAAC,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,oBAAoB,EAAE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;gBAE9O,IAAI,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBACrG,KAAK,CAAC,IAAI,CAAC;wBACT,IAAI,EAAE,QAAQ;wBACd,MAAM,EAAE,IAAI;qBACb,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC3B,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,aAAa,GAAiC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;IAClE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAiD,SAAS,CAAC,CAAC;IAChG,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACnE,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEnD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;YACxB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,cAAc,EAAE,CAAC;gBACtC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,IAAI,KAAK,CAAC,yFAAyF,CAAC,CAAC;gBAC7G,CAAC;gBAED,SAAS,CAAC,WAAW,CAAC,CAAC;gBACvB,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;gBACrC,MAAM,GAAG,CAAC,YAAY,EAAE,CAAC;gBAGzB,MAAM,QAAQ,GAAqB,EAAE,CAAC;gBAEtC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;oBAC7B,IAAI,CAAC;wBAEH,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;wBACvC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,CAAC;wBAE9C,IAAI,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC;4BAC7B,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,cAAc,CAAC,CAAC;4BACvD,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;wBAC1B,CAAC;6BAAM,IAAI,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;4BAE/B,QAAQ,CAAC,IAAI,CAAC;gCACZ,IAAI,EAAE,cAAc;gCACpB,MAAM,EAAE,IAAI;6BACb,CAAC,CAAC;wBACL,CAAC;6BAAM,CAAC;4BACN,MAAM,IAAI,KAAK,CAAC,GAAG,cAAc,oCAAoC,CAAC,CAAC;wBACzE,CAAC;oBACH,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;oBAC1G,CAAC;gBACH,CAAC;gBAED,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;gBAGpD,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,GAAG,EAAE;oBAC3C,UAAU,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;wBAE5B,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;4BACrB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;wBACzB,CAAC;oBACH,CAAC;iBACF,CAAC,CAAC;gBAGH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;oBACzB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;oBAExD,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAEzD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;4BACpB,OAAO,CAAC,KAAK,CAAC,oBAAoB,IAAI,CAAC,IAAI,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;wBAClE,CAAC;wBAED,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;oBAC1D,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,OAAO,CAAC,KAAK,CAAC,oBAAoB,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC;oBAEvD,CAAC;gBACH,CAAC;gBAED,SAAS,CAAC,UAAU,CAAC,CAAC;gBACtB,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC1C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;gBAC/D,SAAS,CAAC,OAAO,CAAC,CAAC;gBACnB,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,EAAE,CAAC;IACX,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ;QACxB,MAAM,KAAK,SAAS,IAAI,oBAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,+BAAgC;QAC5E,MAAM,KAAK,WAAW,IAAI,CACzB,oBAAC,cAAc,IACb,OAAO,EAAE,QAAQ,CAAC,OAAO,EACzB,KAAK,EAAE,QAAQ,CAAC,KAAK,EACrB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAC,WAAW,GAClB,CACH;QACA,MAAM,KAAK,UAAU,IAAI,CACxB,oBAAC,cAAc,IACb,OAAO,EAAE,QAAQ,CAAC,KAAK,EACvB,KAAK,EAAE,QAAQ,CAAC,KAAK,EACrB,WAAW,EAAC,EAAE,EACd,MAAM,EAAC,UAAU,GACjB,CACH;QACA,MAAM,KAAK,OAAO,IAAI,CACrB,oBAAC,cAAc,IACb,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,WAAW,EAAC,EAAE,EACd,MAAM,EAAC,OAAO,EACd,KAAK,EAAE,KAAK,GACZ,CACH,CACG,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,CAAC,OAAiB,EAAE,EAAE;IACnC,MAAM,CAAC,oBAAC,aAAa,IAAC,OAAO,EAAE,OAAO,GAAI,CAAC,CAAC;AAC9C,CAAC,CAAC"}
|
|
@@ -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":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AA+C/C,MAAM,mBAAmB,GAAgC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;IACvE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAY,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAEjG,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,GAAG,GAAG,KAAK,IAAI,EAAE;YACrB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,cAAc,EAAE,CAAC;gBACtC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,yEAAyE,EAAE,CAAC,CAAC;oBAClH,OAAO;gBACT,CAAC;gBAED,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;gBACrC,MAAM,GAAG,CAAC,YAAY,EAAE,CAAC;gBAEzB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;oBAEnB,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC,CAAC;oBACpE,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;oBAEvF,IAAI,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;wBAC3B,QAAQ,CAAC;4BACP,MAAM,EAAE,UAAU;4BAClB,OAAO,EAAE,cAAc;4BACvB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE;yBAC5D,CAAC,CAAC;oBACL,CAAC;yBAAM,CAAC;wBACN,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,IAAI,6BAA6B,EAAE,CAAC,CAAC;oBAChG,CAAC;gBACH,CAAC;qBAAM,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;oBAEzB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;oBAC5B,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,sBAAsB,KAAK,YAAY,EAAE,CAAC,CAAC;oBAClF,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,8CAA8C,KAAK,EAAE,CAAC,CAAC;oBAEjG,IAAI,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;wBAC3B,QAAQ,CAAC;4BACP,MAAM,EAAE,UAAU;4BAClB,OAAO,EAAE,aAAa,KAAK,UAAU;4BACrC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;yBAC3D,CAAC,CAAC;oBACL,CAAC;yBAAM,CAAC;wBACN,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,IAAI,uBAAuB,EAAE,CAAC,CAAC;oBAC1F,CAAC;gBACH,CAAC;qBAAM,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;oBAE5C,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;oBACzC,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,yBAAyB,KAAK,IAAI,IAAI,MAAM,EAAE,CAAC,CAAC;oBACvF,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,oDAAoD,KAAK,SAAS,IAAI,EAAE,CAAC,CAAC;oBAEpH,IAAI,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;wBAC3B,QAAQ,CAAC;4BACP,MAAM,EAAE,UAAU;4BAClB,OAAO,EAAE,iBAAiB,KAAK,IAAI,IAAI,EAAE;4BACzC,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE;yBACpD,CAAC,CAAC;oBACL,CAAC;yBAAM,CAAC;wBACN,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,IAAI,8BAA8B,EAAE,CAAC,CAAC;oBACjG,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,QAAQ,CAAC;wBACP,MAAM,EAAE,OAAO;wBACf,OAAO,EAAE,0FAA0F;qBACpG,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,QAAQ,CAAC;oBACP,MAAM,EAAE,OAAO;oBACf,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB;iBAC3E,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC;QAEF,GAAG,EAAE,CAAC;IACR,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,YAAY,GAAG,CAAC,MAAiC,EAAE,EAAE;QACzD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAClD,oBAAC,GAAG,IAAC,GAAG,EAAE,GAAG,EAAE,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC;YACnD,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,UAAE,KAAK,CAAC,UAAU,CAAQ;YACjD,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM;;gBAAU,KAAK,CAAC,IAAI,CAAQ;YAC9C,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM;;gBAAiB,KAAK,CAAC,WAAW,CAAQ,CACxD,CACP,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,KAAa,EAAE,EAAE;QACnD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACzB,oBAAC,GAAG,IAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC;YACvD,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,UAAE,IAAI,CAAC,EAAE,CAAQ;YACxC,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM;;gBAAU,IAAI,CAAC,IAAI,CAAQ;YAC7C,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM;;gBAAiB,IAAI,CAAC,WAAW,CAAQ;YAC3D,oBAAC,IAAI,IAAC,KAAK,EAAC,QAAQ;;gBAAwB,KAAK;;gBAAe,IAAI,CAAC,EAAE,CAAQ,CAC3E,CACP,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,IAAiB,EAAE,EAAE;QAC1C,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ;YACzB,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI;gBAAE,IAAI,CAAC,IAAI;;gBAAI,IAAI,CAAC,cAAc;oBAAS;YAClE,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM;;gBAAe,IAAI,CAAC,WAAW,CAAQ;YAExD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CACrD,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC;gBACtC,oBAAC,IAAI,IAAC,KAAK,EAAC,OAAO,EAAC,IAAI,oBAAe;gBACtC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAChD,oBAAC,IAAI,IAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAC,MAAM;;oBAAM,GAAG;;oBAAI,IAAI,CAAQ,CACtD,CAAC,CACE,CACP;YAEA,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CACvD,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC;gBACtC,oBAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,EAAC,IAAI,qBAAgB;gBACxC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CACjD,oBAAC,IAAI,IAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAC,MAAM;;oBAAM,GAAG;;oBAAI,IAAI,CAAQ,CACtD,CAAC,CACE,CACP;YAEA,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,CAClD,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC;gBACtC,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,IAAI,uCAAkC;gBAC3D,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CACnC,oBAAC,GAAG,IAAC,GAAG,EAAE,GAAG,EAAE,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAE,CAAC;oBACjD,oBAAC,IAAI,IAAC,KAAK,EAAC,OAAO;wBAAE,IAAI,CAAC,IAAI;;wBAAG,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM;;4BAAG,IAAI,CAAC,IAAI;gCAAS,CAAO;oBAC9E,IAAI,CAAC,WAAW,IAAI,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM;;wBAAiB,IAAI,CAAC,WAAW,CAAQ;oBAC/E,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM;;wBAAa,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAQ;oBACjG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAC1C,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM;;wBAAa,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAQ,CACjF,CACG,CACP,CAAC,CACE,CACP,CACG,CACP,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ;QACxB,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,oBAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,IAAE,KAAK,CAAC,OAAO,CAAQ;QAEzE,KAAK,CAAC,MAAM,KAAK,UAAU,IAAI,CAC9B,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ;YACzB,oBAAC,IAAI,IAAC,KAAK,EAAC,OAAO,EAAC,IAAI,UAAE,KAAK,CAAC,OAAO,CAAQ;YAC/C,oBAAC,IAAI,YAAS;YACb,KAAK,CAAC,IAAI,EAAE,IAAI,KAAK,QAAQ,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;YAChE,KAAK,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YAC/E,KAAK,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAC7D,CACP;QAEA,KAAK,CAAC,MAAM,KAAK,OAAO,IAAI,oBAAC,IAAI,IAAC,KAAK,EAAC,KAAK,IAAE,KAAK,CAAC,OAAO,CAAQ,CACjE,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAAqC;IACrF,MAAM,CAAC,oBAAC,mBAAmB,IAAC,OAAO,EAAE,OAAO,GAAI,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -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"}
|