flow-frame-core 0.1.0 → 0.1.6

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 (237) hide show
  1. package/dist/browerRoutes.d.ts.map +1 -1
  2. package/dist/browerRoutes.js.map +1 -1
  3. package/dist/browser-utils/utils.d.ts.map +1 -1
  4. package/dist/browser-utils/utils.js +1 -0
  5. package/dist/browser-utils/utils.js.map +1 -1
  6. package/dist/controllers/browserController.d.ts +28 -0
  7. package/dist/controllers/browserController.d.ts.map +1 -0
  8. package/dist/controllers/browserController.js +45 -0
  9. package/dist/controllers/browserController.js.map +1 -0
  10. package/dist/controllers/extensionController.d.ts +39 -0
  11. package/dist/controllers/extensionController.d.ts.map +1 -0
  12. package/dist/controllers/extensionController.js +29 -0
  13. package/dist/controllers/extensionController.js.map +1 -0
  14. package/dist/controllers/promptController.d.ts +22 -0
  15. package/dist/controllers/promptController.d.ts.map +1 -0
  16. package/dist/controllers/promptController.js +59 -0
  17. package/dist/controllers/promptController.js.map +1 -0
  18. package/dist/controllers/promptLibraryController.d.ts +16 -0
  19. package/dist/controllers/promptLibraryController.d.ts.map +1 -0
  20. package/dist/controllers/promptLibraryController.js +60 -0
  21. package/dist/controllers/promptLibraryController.js.map +1 -0
  22. package/dist/controllers/standardController.d.ts +38 -0
  23. package/dist/controllers/standardController.d.ts.map +1 -0
  24. package/dist/controllers/standardController.js +79 -0
  25. package/dist/controllers/standardController.js.map +1 -0
  26. package/dist/controllers/workflowController.d.ts +19 -0
  27. package/dist/controllers/workflowController.d.ts.map +1 -0
  28. package/dist/controllers/workflowController.js +94 -0
  29. package/dist/controllers/workflowController.js.map +1 -0
  30. package/dist/filter-gmail-poller/filter-gmail-poller.d.ts.map +1 -1
  31. package/dist/filter-gmail-poller/filter-gmail-poller.js +1 -0
  32. package/dist/filter-gmail-poller/filter-gmail-poller.js.map +1 -1
  33. package/dist/index.d.ts +8 -0
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +46 -0
  36. package/dist/index.js.map +1 -1
  37. package/dist/operations/blender-ops.d.ts.map +1 -1
  38. package/dist/operations/blender-ops.js +0 -1
  39. package/dist/operations/blender-ops.js.map +1 -1
  40. package/dist/operations.d.ts +1 -1
  41. package/dist/operations.d.ts.map +1 -1
  42. package/dist/operations.js +1 -0
  43. package/dist/operations.js.map +1 -1
  44. package/dist/process.d.ts.map +1 -1
  45. package/dist/process.js +1 -0
  46. package/dist/process.js.map +1 -1
  47. package/dist/server.js +32 -1
  48. package/dist/services/audioService.js.map +1 -1
  49. package/dist/services/autoPromptOptimizer.d.ts.map +1 -1
  50. package/dist/services/autoPromptOptimizer.js +1 -0
  51. package/dist/services/autoPromptOptimizer.js.map +1 -1
  52. package/dist/services/chainExecutor.d.ts +2 -1
  53. package/dist/services/chainExecutor.d.ts.map +1 -1
  54. package/dist/services/chainExecutor.js +105 -129
  55. package/dist/services/chainExecutor.js.map +1 -1
  56. package/dist/services/configuration/executor.d.ts.map +1 -1
  57. package/dist/services/configuration/executor.js +1 -0
  58. package/dist/services/configuration/executor.js.map +1 -1
  59. package/dist/services/error.d.ts.map +1 -1
  60. package/dist/services/error.js +1 -0
  61. package/dist/services/error.js.map +1 -1
  62. package/dist/services/executor.d.ts.map +1 -1
  63. package/dist/services/executor.js +110 -51
  64. package/dist/services/executor.js.map +1 -1
  65. package/dist/services/extractPdf.d.ts.map +1 -1
  66. package/dist/services/extractPdf.js +1 -0
  67. package/dist/services/extractPdf.js.map +1 -1
  68. package/dist/services/polyfill_canvas.js +1 -0
  69. package/dist/services/polyfill_canvas.js.map +1 -1
  70. package/dist/services/runPrompt.d.ts +1 -1
  71. package/dist/services/runPrompt.d.ts.map +1 -1
  72. package/dist/services/runPrompt.js +1 -1
  73. package/dist/services/runPrompt.js.map +1 -1
  74. package/dist/services/self-learning/injest.d.ts.map +1 -1
  75. package/dist/services/self-learning/injest.js +1 -0
  76. package/dist/services/self-learning/injest.js.map +1 -1
  77. package/dist/services/self-learning/matcher.d.ts +1 -1
  78. package/dist/services/self-learning/recognize.d.ts.map +1 -1
  79. package/dist/services/self-learning/recognize.js +1 -0
  80. package/dist/services/self-learning/recognize.js.map +1 -1
  81. package/dist/services/stepByStepAiPlanner.d.ts.map +1 -1
  82. package/dist/services/stepByStepAiPlanner.js +1 -0
  83. package/dist/services/stepByStepAiPlanner.js.map +1 -1
  84. package/dist/services/uiMapPathFinder.d.ts.map +1 -1
  85. package/dist/services/uiMapPathFinder.js +1 -0
  86. package/dist/services/uiMapPathFinder.js.map +1 -1
  87. package/dist/services/uiMapService.d.ts.map +1 -1
  88. package/dist/services/uiMapService.js +1 -0
  89. package/dist/services/uiMapService.js.map +1 -1
  90. package/dist/services/uiPlanner.d.ts.map +1 -1
  91. package/dist/services/uiPlanner.js.map +1 -1
  92. package/dist/services/variableGenerator.d.ts +1 -1
  93. package/dist/services/variableGenerator.d.ts.map +1 -1
  94. package/dist/services/variableGenerator.js.map +1 -1
  95. package/dist/standardRoutes.d.ts.map +1 -1
  96. package/dist/standardRoutes.js +92 -108
  97. package/dist/standardRoutes.js.map +1 -1
  98. package/dist/storage.d.ts +6 -0
  99. package/dist/storage.d.ts.map +1 -1
  100. package/dist/storage.js +104 -23
  101. package/dist/storage.js.map +1 -1
  102. package/dist/storage.zachary.json +22 -0
  103. package/dist/suno_download.js +1 -1
  104. package/dist/suno_download.js.map +1 -1
  105. package/dist/utils.d.ts +8 -12
  106. package/dist/utils.d.ts.map +1 -1
  107. package/dist/utils.js +30 -1
  108. package/dist/utils.js.map +1 -1
  109. package/dist/workflowRoutes.d.ts.map +1 -1
  110. package/dist/workflowRoutes.js +28 -60
  111. package/dist/workflowRoutes.js.map +1 -1
  112. package/package.json +2 -2
  113. package/dist/augment-parallel.d.ts +0 -6
  114. package/dist/augment-parallel.d.ts.map +0 -1
  115. package/dist/augment-parallel.js +0 -128
  116. package/dist/augment-parallel.js.map +0 -1
  117. package/dist/augment-worker.d.ts +0 -2
  118. package/dist/augment-worker.d.ts.map +0 -1
  119. package/dist/augment-worker.js +0 -100
  120. package/dist/augment-worker.js.map +0 -1
  121. package/dist/capture_training_data_endpoints.d.ts +0 -158
  122. package/dist/capture_training_data_endpoints.d.ts.map +0 -1
  123. package/dist/capture_training_data_endpoints.js +0 -1812
  124. package/dist/capture_training_data_endpoints.js.map +0 -1
  125. package/dist/download.d.ts +0 -11
  126. package/dist/download.d.ts.map +0 -1
  127. package/dist/download.js +0 -31
  128. package/dist/download.js.map +0 -1
  129. package/dist/extension/background.d.ts +0 -2
  130. package/dist/extension/background.d.ts.map +0 -1
  131. package/dist/extension/background.js +0 -268
  132. package/dist/extension/background.js.map +0 -1
  133. package/dist/filter-gmail-poller/demo.d.ts +0 -2
  134. package/dist/filter-gmail-poller/demo.d.ts.map +0 -1
  135. package/dist/filter-gmail-poller/demo.js +0 -79
  136. package/dist/filter-gmail-poller/demo.js.map +0 -1
  137. package/dist/filter-gmail-poller/example-existing-app.d.ts +0 -2
  138. package/dist/filter-gmail-poller/example-existing-app.d.ts.map +0 -1
  139. package/dist/filter-gmail-poller/example-existing-app.js +0 -72
  140. package/dist/filter-gmail-poller/example-existing-app.js.map +0 -1
  141. package/dist/filter-gmail-poller/index.d.ts +0 -3
  142. package/dist/filter-gmail-poller/index.d.ts.map +0 -1
  143. package/dist/filter-gmail-poller/index.js +0 -18
  144. package/dist/filter-gmail-poller/index.js.map +0 -1
  145. package/dist/filter-gmail-poller/manual-test.d.ts +0 -2
  146. package/dist/filter-gmail-poller/manual-test.d.ts.map +0 -1
  147. package/dist/filter-gmail-poller/manual-test.js +0 -70
  148. package/dist/filter-gmail-poller/manual-test.js.map +0 -1
  149. package/dist/filter-gmail-poller/test.js +0 -69
  150. package/dist/gmail-poller/example.d.ts +0 -5
  151. package/dist/gmail-poller/example.d.ts.map +0 -1
  152. package/dist/gmail-poller/example.js +0 -83
  153. package/dist/gmail-poller/example.js.map +0 -1
  154. package/dist/gmail-poller/gmail-poller.d.ts +0 -82
  155. package/dist/gmail-poller/gmail-poller.d.ts.map +0 -1
  156. package/dist/gmail-poller/gmail-poller.js +0 -455
  157. package/dist/gmail-poller/gmail-poller.js.map +0 -1
  158. package/dist/gmail-poller/manual-test.d.ts +0 -2
  159. package/dist/gmail-poller/manual-test.d.ts.map +0 -1
  160. package/dist/gmail-poller/manual-test.js +0 -37
  161. package/dist/gmail-poller/manual-test.js.map +0 -1
  162. package/dist/gmail-poller/microsoft-email-example.d.ts +0 -8
  163. package/dist/gmail-poller/microsoft-email-example.d.ts.map +0 -1
  164. package/dist/gmail-poller/microsoft-email-example.js +0 -58
  165. package/dist/gmail-poller/microsoft-email-example.js.map +0 -1
  166. package/dist/gmail-poller/microsoft-email-poller.d.ts +0 -73
  167. package/dist/gmail-poller/microsoft-email-poller.d.ts.map +0 -1
  168. package/dist/gmail-poller/microsoft-email-poller.js +0 -346
  169. package/dist/gmail-poller/microsoft-email-poller.js.map +0 -1
  170. package/dist/gmail-poller/setup-auth.d.ts +0 -3
  171. package/dist/gmail-poller/setup-auth.d.ts.map +0 -1
  172. package/dist/gmail-poller/setup-auth.js +0 -36
  173. package/dist/gmail-poller/setup-auth.js.map +0 -1
  174. package/dist/gmail-poller/test.js +0 -36
  175. package/dist/inference/augment_levels.d.ts +0 -2
  176. package/dist/inference/augment_levels.d.ts.map +0 -1
  177. package/dist/inference/augment_levels.js.map +0 -1
  178. package/dist/inference/capture-overlay.d.ts +0 -13
  179. package/dist/inference/capture-overlay.d.ts.map +0 -1
  180. package/dist/inference/capture-overlay.js +0 -355
  181. package/dist/inference/capture-overlay.js.map +0 -1
  182. package/dist/playparser.d.ts +0 -2
  183. package/dist/playparser.d.ts.map +0 -1
  184. package/dist/playparser.js +0 -281
  185. package/dist/playparser.js.map +0 -1
  186. package/dist/services/agenticUiPlanner.d.ts +0 -27
  187. package/dist/services/agenticUiPlanner.d.ts.map +0 -1
  188. package/dist/services/agenticUiPlanner.js +0 -161
  189. package/dist/services/agenticUiPlanner.js.map +0 -1
  190. package/dist/services/autoPromptOptimizer.manual-test.d.ts +0 -2
  191. package/dist/services/autoPromptOptimizer.manual-test.d.ts.map +0 -1
  192. package/dist/services/autoPromptOptimizer.manual-test.js +0 -27
  193. package/dist/services/autoPromptOptimizer.manual-test.js.map +0 -1
  194. package/dist/services/generateJsTransformFromPrompt.d.ts +0 -11
  195. package/dist/services/generateJsTransformFromPrompt.d.ts.map +0 -1
  196. package/dist/services/generateJsTransformFromPrompt.js +0 -328
  197. package/dist/services/generateJsTransformFromPrompt.js.map +0 -1
  198. package/dist/services/promptRoutes.d.ts +0 -7
  199. package/dist/services/promptRoutes.d.ts.map +0 -1
  200. package/dist/services/promptRoutes.js.map +0 -1
  201. package/dist/services/schemaInference.d.ts +0 -2
  202. package/dist/services/schemaInference.d.ts.map +0 -1
  203. package/dist/services/schemaInference.js +0 -17
  204. package/dist/services/schemaInference.js.map +0 -1
  205. package/dist/services/self-learning/autolearn.d.ts +0 -23
  206. package/dist/services/self-learning/autolearn.d.ts.map +0 -1
  207. package/dist/services/self-learning/autolearn.js +0 -308
  208. package/dist/services/self-learning/autolearn.js.map +0 -1
  209. package/dist/services/self-learning/learn.d.ts +0 -2
  210. package/dist/services/self-learning/learn.d.ts.map +0 -1
  211. package/dist/services/self-learning/learn.js +0 -145
  212. package/dist/services/self-learning/learn.js.map +0 -1
  213. package/dist/services/self-learning/schemaStrictify.d.ts +0 -2
  214. package/dist/services/self-learning/schemaStrictify.d.ts.map +0 -1
  215. package/dist/services/self-learning/schemaStrictify.js +0 -34
  216. package/dist/services/self-learning/schemaStrictify.js.map +0 -1
  217. package/dist/services/self-learning/transition_graph.d.ts +0 -6
  218. package/dist/services/self-learning/transition_graph.d.ts.map +0 -1
  219. package/dist/services/self-learning/transition_graph.js +0 -83
  220. package/dist/services/self-learning/transition_graph.js.map +0 -1
  221. package/dist/services/test-genjs.js +0 -39
  222. package/dist/services/test-genjs.manual-test.d.ts +0 -2
  223. package/dist/services/test-genjs.manual-test.d.ts.map +0 -1
  224. package/dist/services/test-genjs.manual-test.js +0 -40
  225. package/dist/services/test-genjs.manual-test.js.map +0 -1
  226. package/dist/test-web-element-requests.d.ts +0 -6
  227. package/dist/test-web-element-requests.d.ts.map +0 -1
  228. package/dist/test-web-element-requests.js +0 -114
  229. package/dist/test-web-element-requests.js.map +0 -1
  230. package/dist/test_pdf_render.d.ts +0 -2
  231. package/dist/test_pdf_render.d.ts.map +0 -1
  232. package/dist/test_pdf_render.js +0 -50
  233. package/dist/test_pdf_render.js.map +0 -1
  234. package/dist/web-element-requests.d.ts +0 -102
  235. package/dist/web-element-requests.d.ts.map +0 -1
  236. package/dist/web-element-requests.js +0 -278
  237. package/dist/web-element-requests.js.map +0 -1
@@ -1,7 +1,8 @@
1
1
  import { exec, spawn } from 'child_process';
2
- import { getItem, setItem } from "./storage.js";
2
+ import { getItem, setItem, listStorageProfiles, readStorageProfile, saveStorageProfile, deleteStorageProfile, setStorageProfile, // Assuming this is also exported
3
+ getStorageProfile } from "./storage.js";
3
4
  import express from 'express';
4
- import { MIDJOURNEY_SELECTOR, getDownloadsFolder, moveSocialPorterVideos, findSocialPorterVideos, unzip, readProjectFile, getContext, saveProjectFile, findFilesWithString, findExplorerWindowPosition, getDetectOrientation, readJsonFiles, get, getMode, get_jobs_path, set, findJobs, findVideoJobs, getJobsContext, selectRandom, sanitizeFileName, downloadFile, extractFileNameFromUrl, getVideoDuration, findFileInDirectoryHasInWithAndEndingWith, alignLinesToWords, getLastModifiedTimestampSync, unique, processSunoState, getMediaFileDuration, getFilesToProcess, pause, getVideoDimensions, } from "./utils.js";
5
+ import { MIDJOURNEY_SELECTOR, getDownloadsFolder, moveSocialPorterVideos, findSocialPorterVideos, unzip, readProjectFile, getContext, saveProjectFile, findFilesWithString, findExplorerWindowPosition, getDetectOrientation, readJsonFiles, get, getMode, get_jobs_path, set, findJobs, findVideoJobs, getJobsContext, selectRandom, sanitizeFileName, downloadFile, extractFileNameFromUrl, getVideoDuration, findFileInDirectoryHasInWithAndEndingWith, alignLinesToWords, getLastModifiedTimestampSync, unique, processSunoState, getMediaFileDuration, getFilesToProcess, pause, getWorkflowFolder, } from "./utils.js";
5
6
  import path from 'path';
6
7
  import queue from './queueManager.js';
7
8
  import fs from 'fs';
@@ -12,9 +13,7 @@ import { operateSunoFilmMouse, operateSunoMouse, operateYoutubeMouse, clearMidjo
12
13
  import { getPeerConstants } from "./peers.js";
13
14
  import { captureFullScreenshot } from "./inference/capturescreenshot.js";
14
15
  import { runImagePromptGrok } from "./services/runPrompt.js";
15
- import { KEYS } from './constants.js';
16
- import { processAudio } from './services/audioService.js';
17
- import { generateTextFromTemplate } from './services/variableGenerator.js';
16
+ import { KEYS, MODES, SUNO_SELECTORS, YOUTUBE_SELECTORS } from './constants.js';
18
17
  import { buildWorkflowDirectory, runWorkflowCLI, installDependencies } from './services/workflow/build-workflow.js';
19
18
  import { scanExtensions } from './extensionUtils.js';
20
19
  import { recognizeScreen } from './services/self-learning/recognize.js';
@@ -26,120 +25,65 @@ const input_bar = '[id="desktop_input_bar"]';
26
25
  const PROCEDURES = {
27
26
  MUSIC_VIDEOS: 'MUSIC_VIDEOS'
28
27
  };
28
+ import { StandardController } from './controllers/standardController.js';
29
29
  export function registerRoutes(app) {
30
30
  app.post('/generate-audio', async (req, res) => {
31
- const { text, voice, filePath, keepExisting } = req.body;
32
31
  try {
33
- if (!text || !voice || !filePath) {
34
- res.status(400).json({ success: false, error: "Missing required parameters" });
35
- return;
36
- }
37
- let { audioPath, srtPath } = await processAudio(filePath, text, voice, keepExisting);
38
- res.json({ success: true, audioPath, srtPath });
32
+ const result = await StandardController.generateAudio(req.body);
33
+ res.json({ success: true, ...result });
39
34
  }
40
35
  catch (error) {
41
36
  console.error('Error generating audio:', error);
42
- res.status(500).json({ success: false, error: error.message });
37
+ res.status(error.message === "Missing required parameters" ? 400 : 500).json({ success: false, error: error.message });
43
38
  }
44
39
  });
45
40
  app.post('/readDir', async (req, res) => {
46
41
  try {
47
- const { dirPath, depth = 1, fullpaths = false } = req.body;
48
- if (!dirPath) {
49
- res.status(400).json({ success: false, error: "dirPath is required" });
50
- return;
51
- }
52
- const getFiles = async (dir, level) => {
53
- const dirents = await fs.promises.readdir(dir, { withFileTypes: true });
54
- const files = await Promise.all(dirents.map(async (dirent) => {
55
- const res = path.resolve(dir, dirent.name);
56
- const itemPath = fullpaths ? res : (depth > 1 ? path.relative(dirPath, res) : dirent.name);
57
- if (dirent.isDirectory() && level < depth) {
58
- const children = await getFiles(res, level + 1);
59
- return [itemPath, ...children];
60
- }
61
- return itemPath;
62
- }));
63
- return files.flat();
64
- };
65
- const files = await getFiles(dirPath, 1);
66
- res.json({ success: true, files });
42
+ const result = await StandardController.readDir(req.body);
43
+ res.json({ success: true, ...result });
67
44
  }
68
45
  catch (error) {
69
46
  console.error('Error reading directory:', error);
70
- res.status(500).json({ success: false, error: error.message });
47
+ res.status(error.message === "dirPath is required" ? 400 : 500).json({ success: false, error: error.message });
71
48
  }
72
49
  });
73
50
  app.post('/readFiles', async (req, res) => {
74
51
  try {
75
- const { filePaths } = req.body;
76
- if (!filePaths || !Array.isArray(filePaths)) {
77
- res.status(400).json({ success: false, error: "filePaths array is required" });
78
- return;
79
- }
80
- const results = {};
81
- await Promise.all(filePaths.map(async (filePath) => {
82
- try {
83
- const content = await fs.promises.readFile(filePath, 'utf-8');
84
- results[filePath] = content;
85
- }
86
- catch (error) {
87
- results[filePath] = { error: error.message };
88
- }
89
- }));
90
- res.json({ success: true, results });
52
+ const result = await StandardController.readFiles(req.body);
53
+ res.json({ success: true, ...result });
91
54
  }
92
55
  catch (error) {
93
56
  console.error('Error reading files:', error);
94
- res.status(500).json({ success: false, error: error.message });
57
+ res.status(error.message === "filePaths array is required" ? 400 : 500).json({ success: false, error: error.message });
95
58
  }
96
59
  });
97
60
  app.post('/get-video-dimensions', async (req, res) => {
98
61
  try {
99
- const { filePath, filePaths } = req.body;
100
- if (filePaths && Array.isArray(filePaths)) {
101
- const results = {};
102
- await Promise.all(filePaths.map(async (fp) => {
103
- try {
104
- const dims = await getVideoDimensions(fp);
105
- results[fp] = dims;
106
- }
107
- catch (err) {
108
- results[fp] = { error: err.message };
109
- }
110
- }));
111
- res.json(results);
112
- return;
62
+ const result = await StandardController.getVideoDimensions(req.body);
63
+ // The original implementation returned the result directly for filePaths case,
64
+ // or { success: true, ...dims } for single file.
65
+ // My controller returns raw dims or collection of dims.
66
+ // I should match original response format.
67
+ if (req.body.filePaths && Array.isArray(req.body.filePaths)) {
68
+ res.json(result);
113
69
  }
114
- if (!filePath) {
115
- res.status(400).json({ success: false, error: "filePath or filePaths is required" });
116
- return;
70
+ else {
71
+ res.json({ success: true, ...result });
117
72
  }
118
- const dimensions = await getVideoDimensions(filePath);
119
- res.json({ success: true, ...dimensions });
120
73
  }
121
74
  catch (error) {
122
75
  console.error('Error getting video dimensions:', error);
123
- res.status(500).json({ success: false, error: error.message });
76
+ res.status(error.message.includes("required") ? 400 : 500).json({ success: false, error: error.message });
124
77
  }
125
78
  });
126
79
  app.post('/generate-text-from-template', async (req, res) => {
127
80
  try {
128
- const { template, entities, options = {} } = req.body || {};
129
- if (typeof template !== 'string' || !template.trim()) {
130
- res.status(400).json({ success: false, error: 'template is required' });
131
- return;
132
- }
133
- if (!Array.isArray(entities) || entities.length === 0) {
134
- res.status(400).json({ success: false, error: 'entities must be a non-empty array' });
135
- return;
136
- }
137
- const result = await generateTextFromTemplate(template, entities, options);
81
+ const result = await StandardController.generateTextFromTemplate(req.body);
138
82
  res.json({ success: true, ...result });
139
83
  }
140
84
  catch (error) {
141
85
  console.error('Error generating text from template:', error);
142
- res.status(500).json({ success: false, error: error.message });
86
+ res.status(error.message.includes("required") || error.message.includes("must be") ? 400 : 500).json({ success: false, error: error.message });
143
87
  }
144
88
  });
145
89
  app.get('/getSelectors', (req, res) => {
@@ -222,20 +166,6 @@ export function registerRoutes(app) {
222
166
  await downloadSunosWithPython(get(KEYS.sunoDownloadFolder));
223
167
  res.json({ ok: true });
224
168
  });
225
- app.post('/fetch-100-name', async (req, res) => {
226
- const { description } = req.body;
227
- let ressulo = await generateListOfName(description);
228
- try {
229
- return res.json({
230
- res: JSON.stringify(extractJSONFromFence(ressulo))
231
- });
232
- }
233
- catch (e) {
234
- return res.json({
235
- res: '[]'
236
- });
237
- }
238
- });
239
169
  // build an initial middleware
240
170
  let staticMiddleware;
241
171
  setImageFolder();
@@ -898,7 +828,7 @@ export function registerRoutes(app) {
898
828
  existingJobs = split_content.map(d => {
899
829
  return JSON.parse(d);
900
830
  }).filter(x => newerThan(new Date(x.enqueue_time), 1000 * 60 * 60 * 24 * 45)).sort((a, b) => {
901
- return new Date(b.enqueue_time) - new Date(a.enqueue_time); // sort by enqueue_time descending
831
+ return new Date(b.enqueue_time).getTime() - new Date(a.enqueue_time).getTime(); // sort by enqueue_time descending
902
832
  }); // filter out jobs older than 45 days
903
833
  }
904
834
  catch (e) {
@@ -933,7 +863,7 @@ export function registerRoutes(app) {
933
863
  try {
934
864
  let content = fs.readFileSync(get_jobs_path(), 'utf-8');
935
865
  let split_content = content.split('\n');
936
- existingJobs = split_content.map(d => {
866
+ existingJobs = split_content.map((d) => {
937
867
  return JSON.parse(d);
938
868
  });
939
869
  }
@@ -971,7 +901,7 @@ export function registerRoutes(app) {
971
901
  await findSocialPorterVideos()
972
902
  .then(files => moveSocialPorterVideos(files, get(KEYS.images_folder)))
973
903
  .catch(console.error);
974
- res.send(`Script output:\n${stdout}`);
904
+ res.send(`Script output:\n`);
975
905
  }
976
906
  catch (error) {
977
907
  res.status(500).send(`Error: ${error.message}`);
@@ -985,7 +915,7 @@ export function registerRoutes(app) {
985
915
  await findSocialPorterVideos()
986
916
  .then(files => moveSocialPorterVideos(files, path.join(get(KEYS.images_folder), 'top_ten_videos')))
987
917
  .catch(console.error);
988
- res.send(`Script output:\n${stdout}`);
918
+ res.send(`Script output:\n`);
989
919
  }
990
920
  catch (error) {
991
921
  res.status(500).send(`Error: ${error.message}`);
@@ -1119,9 +1049,9 @@ export function registerRoutes(app) {
1119
1049
  case MODES.SUNO:
1120
1050
  return operateSunoMouse(body);
1121
1051
  case MODES.SUNO_FILM:
1122
- return operateSunoFilmMouse(body);
1052
+ return operateSunoFilmMouse();
1123
1053
  case MODES.YOUTUBE:
1124
- return operateYoutubeMouse(body);
1054
+ return operateYoutubeMouse();
1125
1055
  case MODES.CLEAR_MIDJOURNEY_IMAGES:
1126
1056
  return clearMidjourneyImages();
1127
1057
  case MODES.MIDJOURNEY_IMAGES_TO_VIDEO:
@@ -1205,11 +1135,6 @@ export function registerRoutes(app) {
1205
1135
  app.get('/operations', (req, res) => {
1206
1136
  res.json(queue.list());
1207
1137
  });
1208
- // Endpoint to receive positions.
1209
- app.post('/open-ai-positions', async (req, res) => {
1210
- res.json({ status: 'success' });
1211
- setOpenAiPositions(req.body);
1212
- });
1213
1138
  app.post('/suno-urls', async (req, res) => {
1214
1139
  const { urls, name } = req.body;
1215
1140
  console.log(urls);
@@ -1462,6 +1387,65 @@ export function registerRoutes(app) {
1462
1387
  const extensions = await scanExtensions(folders);
1463
1388
  res.json({ extensions });
1464
1389
  });
1390
+ // Storage Profile CRUD
1391
+ app.get('/storage-profiles', (req, res) => {
1392
+ try {
1393
+ const profiles = listStorageProfiles();
1394
+ const active = getStorageProfile() || 'default';
1395
+ res.json({ profiles, active });
1396
+ }
1397
+ catch (error) {
1398
+ res.status(500).json({ error: error.message });
1399
+ }
1400
+ });
1401
+ app.get('/storage-profiles/:name', (req, res) => {
1402
+ try {
1403
+ const content = readStorageProfile(req.params.name);
1404
+ if (!content) {
1405
+ return res.status(404).json({ error: 'Profile not found' });
1406
+ }
1407
+ res.json(content);
1408
+ }
1409
+ catch (error) {
1410
+ res.status(500).json({ error: error.message });
1411
+ }
1412
+ });
1413
+ app.post('/storage-profiles', (req, res) => {
1414
+ const { name, content } = req.body;
1415
+ if (!name || !content) {
1416
+ return res.status(400).json({ error: 'Name and content are required' });
1417
+ }
1418
+ try {
1419
+ saveStorageProfile(name, content);
1420
+ res.json({ success: true });
1421
+ }
1422
+ catch (error) {
1423
+ res.status(500).json({ error: error.message });
1424
+ }
1425
+ });
1426
+ app.delete('/storage-profiles/:name', (req, res) => {
1427
+ try {
1428
+ const success = deleteStorageProfile(req.params.name);
1429
+ if (!success) {
1430
+ return res.status(404).json({ error: 'Profile not found' });
1431
+ }
1432
+ res.json({ success: true });
1433
+ }
1434
+ catch (error) {
1435
+ res.status(400).json({ error: error.message });
1436
+ }
1437
+ });
1438
+ app.post('/storage-profiles/switch', (req, res) => {
1439
+ const { name } = req.body;
1440
+ // name can be 'default' or a profile name
1441
+ try {
1442
+ setStorageProfile(name === 'default' ? '' : name);
1443
+ res.json({ success: true, active: name });
1444
+ }
1445
+ catch (error) {
1446
+ res.status(500).json({ error: error.message });
1447
+ }
1448
+ });
1465
1449
  app.post('/generate-ui-map', async (req, res) => {
1466
1450
  try {
1467
1451
  const { files } = req.body;
@@ -1469,7 +1453,7 @@ export function registerRoutes(app) {
1469
1453
  return res.status(400).json({ error: 'Files are required' });
1470
1454
  }
1471
1455
  console.log(`[running] generate-ui-map for ${files}`, 'generate-ui-map');
1472
- let workflow_folder = (get(KEYS.workflow_folder));
1456
+ let workflow_folder = getWorkflowFolder();
1473
1457
  // if the files are relative paths, make them absolute based on workflow_folder
1474
1458
  const absoluteFiles = files.map(file => {
1475
1459
  if (!path.isAbsolute(file)) {