flow-frame-core 0.1.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/README.md +64 -0
- package/dist/Dockerfile +86 -0
- package/dist/GPU_DEPLOYMENT_README.md +324 -0
- package/dist/OPS_AGENT_README.md +174 -0
- package/dist/README-H100-VM.md +192 -0
- package/dist/README-worker-pools.md +231 -0
- package/dist/README.md +8 -0
- package/dist/WEB-ELEMENT-REQUESTS-README.md +302 -0
- package/dist/append.d.ts +3 -0
- package/dist/append.d.ts.map +1 -0
- package/dist/append.js +42 -0
- package/dist/append.js.map +1 -0
- package/dist/audioRoutes.d.ts +2 -0
- package/dist/audioRoutes.d.ts.map +1 -0
- package/dist/audioRoutes.js +97 -0
- package/dist/audioRoutes.js.map +1 -0
- package/dist/augment-parallel.d.ts +6 -0
- package/dist/augment-parallel.d.ts.map +1 -0
- package/dist/augment-parallel.js +128 -0
- package/dist/augment-parallel.js.map +1 -0
- package/dist/augment-worker.d.ts +2 -0
- package/dist/augment-worker.d.ts.map +1 -0
- package/dist/augment-worker.js +100 -0
- package/dist/augment-worker.js.map +1 -0
- package/dist/browerRoutes.d.ts +2 -0
- package/dist/browerRoutes.d.ts.map +1 -0
- package/dist/browerRoutes.js +323 -0
- package/dist/browerRoutes.js.map +1 -0
- package/dist/browser-utils/utils.d.ts +6 -0
- package/dist/browser-utils/utils.d.ts.map +1 -0
- package/dist/browser-utils/utils.js +133 -0
- package/dist/browser-utils/utils.js.map +1 -0
- package/dist/capture_training_data_endpoints.d.ts +158 -0
- package/dist/capture_training_data_endpoints.d.ts.map +1 -0
- package/dist/capture_training_data_endpoints.js +1812 -0
- package/dist/capture_training_data_endpoints.js.map +1 -0
- package/dist/config.json +28 -0
- package/dist/configEndpoints.d.ts +2 -0
- package/dist/configEndpoints.d.ts.map +1 -0
- package/dist/configEndpoints.js +459 -0
- package/dist/configEndpoints.js.map +1 -0
- package/dist/constants.d.ts +109 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +110 -0
- package/dist/constants.js.map +1 -0
- package/dist/docs/workflow_nodes.md +257 -0
- package/dist/download.d.ts +11 -0
- package/dist/download.d.ts.map +1 -0
- package/dist/download.js +31 -0
- package/dist/download.js.map +1 -0
- package/dist/download.py +61 -0
- package/dist/ecosystem.config.json +63 -0
- package/dist/email-body-extractor.d.ts +20 -0
- package/dist/email-body-extractor.d.ts.map +1 -0
- package/dist/email-body-extractor.js +103 -0
- package/dist/email-body-extractor.js.map +1 -0
- package/dist/express_util.d.ts +2 -0
- package/dist/express_util.d.ts.map +1 -0
- package/dist/express_util.js +30 -0
- package/dist/express_util.js.map +1 -0
- package/dist/extension/background.d.ts +2 -0
- package/dist/extension/background.d.ts.map +1 -0
- package/dist/extension/background.js +268 -0
- package/dist/extension/background.js.map +1 -0
- package/dist/extension/manifest.json +19 -0
- package/dist/extensionUtils.d.ts +2 -0
- package/dist/extensionUtils.d.ts.map +1 -0
- package/dist/extensionUtils.js +48 -0
- package/dist/extensionUtils.js.map +1 -0
- package/dist/filter-gmail-poller/README.md +320 -0
- package/dist/filter-gmail-poller/demo.d.ts +2 -0
- package/dist/filter-gmail-poller/demo.d.ts.map +1 -0
- package/dist/filter-gmail-poller/demo.js +79 -0
- package/dist/filter-gmail-poller/demo.js.map +1 -0
- package/dist/filter-gmail-poller/example-existing-app.d.ts +2 -0
- package/dist/filter-gmail-poller/example-existing-app.d.ts.map +1 -0
- package/dist/filter-gmail-poller/example-existing-app.js +72 -0
- package/dist/filter-gmail-poller/example-existing-app.js.map +1 -0
- package/dist/filter-gmail-poller/filter-gmail-poller.d.ts +160 -0
- package/dist/filter-gmail-poller/filter-gmail-poller.d.ts.map +1 -0
- package/dist/filter-gmail-poller/filter-gmail-poller.js +1048 -0
- package/dist/filter-gmail-poller/filter-gmail-poller.js.map +1 -0
- package/dist/filter-gmail-poller/index.d.ts +3 -0
- package/dist/filter-gmail-poller/index.d.ts.map +1 -0
- package/dist/filter-gmail-poller/index.js +18 -0
- package/dist/filter-gmail-poller/index.js.map +1 -0
- package/dist/filter-gmail-poller/manual-test.d.ts +2 -0
- package/dist/filter-gmail-poller/manual-test.d.ts.map +1 -0
- package/dist/filter-gmail-poller/manual-test.js +70 -0
- package/dist/filter-gmail-poller/manual-test.js.map +1 -0
- package/dist/filter-gmail-poller/poller-prompts.d.ts +12 -0
- package/dist/filter-gmail-poller/poller-prompts.d.ts.map +1 -0
- package/dist/filter-gmail-poller/poller-prompts.js +330 -0
- package/dist/filter-gmail-poller/poller-prompts.js.map +1 -0
- package/dist/filter-gmail-poller/test.js +69 -0
- package/dist/flowframe-auto-firebase-adminsdk.json +13 -0
- package/dist/gmail-poller/README-microsoft-email-poller.md +203 -0
- package/dist/gmail-poller/README.md +129 -0
- package/dist/gmail-poller/example.d.ts +5 -0
- package/dist/gmail-poller/example.d.ts.map +1 -0
- package/dist/gmail-poller/example.js +83 -0
- package/dist/gmail-poller/example.js.map +1 -0
- package/dist/gmail-poller/gmail-poller.d.ts +82 -0
- package/dist/gmail-poller/gmail-poller.d.ts.map +1 -0
- package/dist/gmail-poller/gmail-poller.js +455 -0
- package/dist/gmail-poller/gmail-poller.js.map +1 -0
- package/dist/gmail-poller/manual-test.d.ts +2 -0
- package/dist/gmail-poller/manual-test.d.ts.map +1 -0
- package/dist/gmail-poller/manual-test.js +37 -0
- package/dist/gmail-poller/manual-test.js.map +1 -0
- package/dist/gmail-poller/microsoft-email-example.d.ts +8 -0
- package/dist/gmail-poller/microsoft-email-example.d.ts.map +1 -0
- package/dist/gmail-poller/microsoft-email-example.js +58 -0
- package/dist/gmail-poller/microsoft-email-example.js.map +1 -0
- package/dist/gmail-poller/microsoft-email-poller.d.ts +73 -0
- package/dist/gmail-poller/microsoft-email-poller.d.ts.map +1 -0
- package/dist/gmail-poller/microsoft-email-poller.js +346 -0
- package/dist/gmail-poller/microsoft-email-poller.js.map +1 -0
- package/dist/gmail-poller/setup-auth.d.ts +3 -0
- package/dist/gmail-poller/setup-auth.d.ts.map +1 -0
- package/dist/gmail-poller/setup-auth.js +36 -0
- package/dist/gmail-poller/setup-auth.js.map +1 -0
- package/dist/gmail-poller/test.js +36 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/inference/augment_levels.d.ts +2 -0
- package/dist/inference/augment_levels.d.ts.map +1 -0
- package/dist/inference/augment_levels.js +1 -0
- package/dist/inference/augment_levels.js.map +1 -0
- package/dist/inference/capture-overlay.d.ts +13 -0
- package/dist/inference/capture-overlay.d.ts.map +1 -0
- package/dist/inference/capture-overlay.js +355 -0
- package/dist/inference/capture-overlay.js.map +1 -0
- package/dist/inference/capturescreenshot.d.ts +12 -0
- package/dist/inference/capturescreenshot.d.ts.map +1 -0
- package/dist/inference/capturescreenshot.js +157 -0
- package/dist/inference/capturescreenshot.js.map +1 -0
- package/dist/jsonHandler.d.ts +37 -0
- package/dist/jsonHandler.d.ts.map +1 -0
- package/dist/jsonHandler.js +191 -0
- package/dist/jsonHandler.js.map +1 -0
- package/dist/localStorage.json +11 -0
- package/dist/media_data_endpoints.d.ts +2 -0
- package/dist/media_data_endpoints.d.ts.map +1 -0
- package/dist/media_data_endpoints.js +102 -0
- package/dist/media_data_endpoints.js.map +1 -0
- package/dist/operations/blender-ops.d.ts +4 -0
- package/dist/operations/blender-ops.d.ts.map +1 -0
- package/dist/operations/blender-ops.js +55 -0
- package/dist/operations/blender-ops.js.map +1 -0
- package/dist/operations.d.ts +34 -0
- package/dist/operations.d.ts.map +1 -0
- package/dist/operations.js +1514 -0
- package/dist/operations.js.map +1 -0
- package/dist/pdfRoutes.d.ts +2 -0
- package/dist/pdfRoutes.d.ts.map +1 -0
- package/dist/pdfRoutes.js +56 -0
- package/dist/pdfRoutes.js.map +1 -0
- package/dist/peers.d.ts +9 -0
- package/dist/peers.d.ts.map +1 -0
- package/dist/peers.js +70 -0
- package/dist/peers.js.map +1 -0
- package/dist/playparser.d.ts +2 -0
- package/dist/playparser.d.ts.map +1 -0
- package/dist/playparser.js +281 -0
- package/dist/playparser.js.map +1 -0
- package/dist/process.d.ts +4 -0
- package/dist/process.d.ts.map +1 -0
- package/dist/process.js +375 -0
- package/dist/process.js.map +1 -0
- package/dist/promptRoutes.d.ts +7 -0
- package/dist/promptRoutes.d.ts.map +1 -0
- package/dist/promptRoutes.js +68 -0
- package/dist/promptRoutes.js.map +1 -0
- package/dist/queueManager.d.ts +23 -0
- package/dist/queueManager.d.ts.map +1 -0
- package/dist/queueManager.js +96 -0
- package/dist/queueManager.js.map +1 -0
- package/dist/run-flow.d.ts +8 -0
- package/dist/run-flow.d.ts.map +1 -0
- package/dist/run-flow.js +220 -0
- package/dist/run-flow.js.map +1 -0
- package/dist/scraper.d.ts +2 -0
- package/dist/scraper.d.ts.map +1 -0
- package/dist/scraper.js +75 -0
- package/dist/scraper.js.map +1 -0
- package/dist/scraper_endpoints.d.ts +2 -0
- package/dist/scraper_endpoints.d.ts.map +1 -0
- package/dist/scraper_endpoints.js +40 -0
- package/dist/scraper_endpoints.js.map +1 -0
- package/dist/server.d.ts +2 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +528 -0
- package/dist/server.js.map +1 -0
- package/dist/services/ModelContext.d.ts +7 -0
- package/dist/services/ModelContext.d.ts.map +1 -0
- package/dist/services/ModelContext.js +7 -0
- package/dist/services/ModelContext.js.map +1 -0
- package/dist/services/agenticUiPlanner.d.ts +27 -0
- package/dist/services/agenticUiPlanner.d.ts.map +1 -0
- package/dist/services/agenticUiPlanner.js +161 -0
- package/dist/services/agenticUiPlanner.js.map +1 -0
- package/dist/services/apiKeyService.d.ts +3 -0
- package/dist/services/apiKeyService.d.ts.map +1 -0
- package/dist/services/apiKeyService.js +7 -0
- package/dist/services/apiKeyService.js.map +1 -0
- package/dist/services/audioService.d.ts +10 -0
- package/dist/services/audioService.d.ts.map +1 -0
- package/dist/services/audioService.js +140 -0
- package/dist/services/audioService.js.map +1 -0
- package/dist/services/autoPromptOptimizer.d.ts +44 -0
- package/dist/services/autoPromptOptimizer.d.ts.map +1 -0
- package/dist/services/autoPromptOptimizer.js +344 -0
- package/dist/services/autoPromptOptimizer.js.map +1 -0
- package/dist/services/autoPromptOptimizer.manual-test.d.ts +2 -0
- package/dist/services/autoPromptOptimizer.manual-test.d.ts.map +1 -0
- package/dist/services/autoPromptOptimizer.manual-test.js +27 -0
- package/dist/services/autoPromptOptimizer.manual-test.js.map +1 -0
- package/dist/services/chainExecutor.d.ts +26 -0
- package/dist/services/chainExecutor.d.ts.map +1 -0
- package/dist/services/chainExecutor.js +399 -0
- package/dist/services/chainExecutor.js.map +1 -0
- package/dist/services/classifyImageQuestion.d.ts +55 -0
- package/dist/services/classifyImageQuestion.d.ts.map +1 -0
- package/dist/services/classifyImageQuestion.js +428 -0
- package/dist/services/classifyImageQuestion.js.map +1 -0
- package/dist/services/configuration/executor.d.ts +3 -0
- package/dist/services/configuration/executor.d.ts.map +1 -0
- package/dist/services/configuration/executor.js +795 -0
- package/dist/services/configuration/executor.js.map +1 -0
- package/dist/services/error.d.ts +13 -0
- package/dist/services/error.d.ts.map +1 -0
- package/dist/services/error.js +34 -0
- package/dist/services/error.js.map +1 -0
- package/dist/services/executor.d.ts +11 -0
- package/dist/services/executor.d.ts.map +1 -0
- package/dist/services/executor.js +1587 -0
- package/dist/services/executor.js.map +1 -0
- package/dist/services/extractPdf.d.ts +26 -0
- package/dist/services/extractPdf.d.ts.map +1 -0
- package/dist/services/extractPdf.js +256 -0
- package/dist/services/extractPdf.js.map +1 -0
- package/dist/services/generateJsTransformFromPrompt.d.ts +11 -0
- package/dist/services/generateJsTransformFromPrompt.d.ts.map +1 -0
- package/dist/services/generateJsTransformFromPrompt.js +328 -0
- package/dist/services/generateJsTransformFromPrompt.js.map +1 -0
- package/dist/services/localizeFirebaseMedia.d.ts +20 -0
- package/dist/services/localizeFirebaseMedia.d.ts.map +1 -0
- package/dist/services/localizeFirebaseMedia.js +135 -0
- package/dist/services/localizeFirebaseMedia.js.map +1 -0
- package/dist/services/polyfill_canvas.d.ts +2 -0
- package/dist/services/polyfill_canvas.d.ts.map +1 -0
- package/dist/services/polyfill_canvas.js +19 -0
- package/dist/services/polyfill_canvas.js.map +1 -0
- package/dist/services/promptRoutes.d.ts +7 -0
- package/dist/services/promptRoutes.d.ts.map +1 -0
- package/dist/services/promptRoutes.js +70 -0
- package/dist/services/promptRoutes.js.map +1 -0
- package/dist/services/runPrompt.d.ts +29 -0
- package/dist/services/runPrompt.d.ts.map +1 -0
- package/dist/services/runPrompt.js +232 -0
- package/dist/services/runPrompt.js.map +1 -0
- package/dist/services/schemaInference.d.ts +2 -0
- package/dist/services/schemaInference.d.ts.map +1 -0
- package/dist/services/schemaInference.js +17 -0
- package/dist/services/schemaInference.js.map +1 -0
- package/dist/services/self-learning/api.d.ts +2 -0
- package/dist/services/self-learning/api.d.ts.map +1 -0
- package/dist/services/self-learning/api.js +84 -0
- package/dist/services/self-learning/api.js.map +1 -0
- package/dist/services/self-learning/autolearn.d.ts +23 -0
- package/dist/services/self-learning/autolearn.d.ts.map +1 -0
- package/dist/services/self-learning/autolearn.js +308 -0
- package/dist/services/self-learning/autolearn.js.map +1 -0
- package/dist/services/self-learning/discover.d.ts +11 -0
- package/dist/services/self-learning/discover.d.ts.map +1 -0
- package/dist/services/self-learning/discover.js +446 -0
- package/dist/services/self-learning/discover.js.map +1 -0
- package/dist/services/self-learning/image.d.ts +10 -0
- package/dist/services/self-learning/image.d.ts.map +1 -0
- package/dist/services/self-learning/image.js +38 -0
- package/dist/services/self-learning/image.js.map +1 -0
- package/dist/services/self-learning/injest.d.ts +25 -0
- package/dist/services/self-learning/injest.d.ts.map +1 -0
- package/dist/services/self-learning/injest.js +110 -0
- package/dist/services/self-learning/injest.js.map +1 -0
- package/dist/services/self-learning/learn.d.ts +2 -0
- package/dist/services/self-learning/learn.d.ts.map +1 -0
- package/dist/services/self-learning/learn.js +145 -0
- package/dist/services/self-learning/learn.js.map +1 -0
- package/dist/services/self-learning/matcher.d.ts +2 -0
- package/dist/services/self-learning/matcher.d.ts.map +1 -0
- package/dist/services/self-learning/matcher.js +38 -0
- package/dist/services/self-learning/matcher.js.map +1 -0
- package/dist/services/self-learning/openai.d.ts +8 -0
- package/dist/services/self-learning/openai.d.ts.map +1 -0
- package/dist/services/self-learning/openai.js +97 -0
- package/dist/services/self-learning/openai.js.map +1 -0
- package/dist/services/self-learning/phash.d.ts +5 -0
- package/dist/services/self-learning/phash.d.ts.map +1 -0
- package/dist/services/self-learning/phash.js +68 -0
- package/dist/services/self-learning/phash.js.map +1 -0
- package/dist/services/self-learning/recognize.d.ts +17 -0
- package/dist/services/self-learning/recognize.d.ts.map +1 -0
- package/dist/services/self-learning/recognize.js +116 -0
- package/dist/services/self-learning/recognize.js.map +1 -0
- package/dist/services/self-learning/record_transition.d.ts +8 -0
- package/dist/services/self-learning/record_transition.d.ts.map +1 -0
- package/dist/services/self-learning/record_transition.js +20 -0
- package/dist/services/self-learning/record_transition.js.map +1 -0
- package/dist/services/self-learning/registry.d.ts +4 -0
- package/dist/services/self-learning/registry.d.ts.map +1 -0
- package/dist/services/self-learning/registry.js +19 -0
- package/dist/services/self-learning/registry.js.map +1 -0
- package/dist/services/self-learning/schema.d.ts +114 -0
- package/dist/services/self-learning/schema.d.ts.map +1 -0
- package/dist/services/self-learning/schema.js +70 -0
- package/dist/services/self-learning/schema.js.map +1 -0
- package/dist/services/self-learning/schemaStrictify.d.ts +2 -0
- package/dist/services/self-learning/schemaStrictify.d.ts.map +1 -0
- package/dist/services/self-learning/schemaStrictify.js +34 -0
- package/dist/services/self-learning/schemaStrictify.js.map +1 -0
- package/dist/services/self-learning/transition_graph.d.ts +6 -0
- package/dist/services/self-learning/transition_graph.d.ts.map +1 -0
- package/dist/services/self-learning/transition_graph.js +83 -0
- package/dist/services/self-learning/transition_graph.js.map +1 -0
- package/dist/services/self-learning/transition_log.d.ts +3 -0
- package/dist/services/self-learning/transition_log.d.ts.map +1 -0
- package/dist/services/self-learning/transition_log.js +42 -0
- package/dist/services/self-learning/transition_log.js.map +1 -0
- package/dist/services/self-learning/util.d.ts +3 -0
- package/dist/services/self-learning/util.d.ts.map +1 -0
- package/dist/services/self-learning/util.js +11 -0
- package/dist/services/self-learning/util.js.map +1 -0
- package/dist/services/stepByStepAiPlanner.d.ts +39 -0
- package/dist/services/stepByStepAiPlanner.d.ts.map +1 -0
- package/dist/services/stepByStepAiPlanner.js +379 -0
- package/dist/services/stepByStepAiPlanner.js.map +1 -0
- package/dist/services/test-genjs.js +39 -0
- package/dist/services/test-genjs.manual-test.d.ts +2 -0
- package/dist/services/test-genjs.manual-test.d.ts.map +1 -0
- package/dist/services/test-genjs.manual-test.js +40 -0
- package/dist/services/test-genjs.manual-test.js.map +1 -0
- package/dist/services/uiMapPathFinder.d.ts +13 -0
- package/dist/services/uiMapPathFinder.d.ts.map +1 -0
- package/dist/services/uiMapPathFinder.js +79 -0
- package/dist/services/uiMapPathFinder.js.map +1 -0
- package/dist/services/uiMapService.d.ts +26 -0
- package/dist/services/uiMapService.d.ts.map +1 -0
- package/dist/services/uiMapService.js +275 -0
- package/dist/services/uiMapService.js.map +1 -0
- package/dist/services/uiPlanner.d.ts +54 -0
- package/dist/services/uiPlanner.d.ts.map +1 -0
- package/dist/services/uiPlanner.js +558 -0
- package/dist/services/uiPlanner.js.map +1 -0
- package/dist/services/utilityFunctions.d.ts +80 -0
- package/dist/services/utilityFunctions.d.ts.map +1 -0
- package/dist/services/utilityFunctions.js +352 -0
- package/dist/services/utilityFunctions.js.map +1 -0
- package/dist/services/variableGenerator.d.ts +39 -0
- package/dist/services/variableGenerator.d.ts.map +1 -0
- package/dist/services/variableGenerator.js +157 -0
- package/dist/services/variableGenerator.js.map +1 -0
- package/dist/services/workflow/build-workflow.d.ts +49 -0
- package/dist/services/workflow/build-workflow.d.ts.map +1 -0
- package/dist/services/workflow/build-workflow.js +119 -0
- package/dist/services/workflow/build-workflow.js.map +1 -0
- package/dist/standardRoutes.d.ts +2 -0
- package/dist/standardRoutes.d.ts.map +1 -0
- package/dist/standardRoutes.js +1495 -0
- package/dist/standardRoutes.js.map +1 -0
- package/dist/stepWorkflowRoutes.d.ts +2 -0
- package/dist/stepWorkflowRoutes.d.ts.map +1 -0
- package/dist/stepWorkflowRoutes.js +1007 -0
- package/dist/stepWorkflowRoutes.js.map +1 -0
- package/dist/storage.d.ts +19 -0
- package/dist/storage.d.ts.map +1 -0
- package/dist/storage.docker.json +61 -0
- package/dist/storage.js +131 -0
- package/dist/storage.js.map +1 -0
- package/dist/storage.json +78 -0
- package/dist/storage_cache/boxes.json +48 -0
- package/dist/storage_cache/suno_state.json +3 -0
- package/dist/suno_download.d.ts +11 -0
- package/dist/suno_download.d.ts.map +1 -0
- package/dist/suno_download.js +33 -0
- package/dist/suno_download.js.map +1 -0
- package/dist/suno_download.py +119 -0
- package/dist/test-web-element-requests.d.ts +6 -0
- package/dist/test-web-element-requests.d.ts.map +1 -0
- package/dist/test-web-element-requests.js +114 -0
- package/dist/test-web-element-requests.js.map +1 -0
- package/dist/test_pdf_render.d.ts +2 -0
- package/dist/test_pdf_render.d.ts.map +1 -0
- package/dist/test_pdf_render.js +50 -0
- package/dist/test_pdf_render.js.map +1 -0
- package/dist/training_data_viewer_endpoints.d.ts +2 -0
- package/dist/training_data_viewer_endpoints.d.ts.map +1 -0
- package/dist/training_data_viewer_endpoints.js +141 -0
- package/dist/training_data_viewer_endpoints.js.map +1 -0
- package/dist/utils.d.ts +353 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +1517 -0
- package/dist/utils.js.map +1 -0
- package/dist/vm-h100.env.template +55 -0
- package/dist/web-element-requests.d.ts +102 -0
- package/dist/web-element-requests.d.ts.map +1 -0
- package/dist/web-element-requests.js +278 -0
- package/dist/web-element-requests.js.map +1 -0
- package/dist/workflowRoutes.d.ts +2 -0
- package/dist/workflowRoutes.d.ts.map +1 -0
- package/dist/workflowRoutes.js +441 -0
- package/dist/workflowRoutes.js.map +1 -0
- package/package.json +109 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "service_account",
|
|
3
|
+
"project_id": "flowframe-auto",
|
|
4
|
+
"private_key_id": "552b5d6d438459cc8e2ae967553ac9d029c00c1c",
|
|
5
|
+
"private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCvHsfj7Mgv3VwU\nASBZqQHgUN6V22HPDXlOpMeLlgQ6eZSxpYHTseaQtAAVfAC125Y6RrfBI+ikd5Lk\ngTuu3l7TcjPapT1DvbxgXG3XbZZMPdK2MJ5sm+7Yq76Go9h3fPEYHvdiqgERhU5D\nP3Awo2nvdg2fdElxAE8uP/KOWDFENurWyh0CxfPw1X37rAVP/rggxnT1qVWnPDmr\nVdonYOXxAz3LivVfUs8K4sjigGWNsxN7FneUY2A+R0ZSuFYO9+KufR7iE/rj9skv\nYvpC1kY3lYzgF9dBUBmRLcc0P/AlcNW/kRr8WNArgvClYzB4vgnA1utJGkfMrmEA\nJ74fWNpTAgMBAAECggEAOFaSwEUA8kUoxlbGbZHtxJi/wz5c7RvMlvx0JfgRTC6p\nI623Yr+tCYifLkpCgD8wyXbOzxgaVC8T1uesp8lqgGQRQpo+Z3i3DdkujUv4Onb5\nPxvNG+ven15BYVd84JQVjEkKFXfT+CsGzqOuGDe6cQttvorOxcfvsVVpV1oQH31z\nMH54bu1vOPhguebDGi9L7M6aIgFddOZMJnuxFk6h9gszp1wYUHIlR8DPSYF8sEgW\nO+QyVYTkCDXR9nSJf1M9eau9duJasHVaNlH9N1vfg4u/XoV59W4tS8xkSE9v6cZf\n9Z8j/Rv1m8JaKQ5jZBq3ctK8PDAN1qkypcMkjwxLoQKBgQDZFwrahz/MitjviDf3\nbwR1LmVFU6gkW4bnq21XYYiBIQEY6pIIhhUa0Rjkj3JoQhUxiD6cwcIrBaJzGkGs\nBDIA97kc9qQ3SFj6oj/PF7YP9RMIbaYX4ZLqgQHOSyDiflEL3R50wzzchvhh3fGv\nJccjAnq4KOsQ/6mLevgZxXPINwKBgQDOgf9bkzPOP2FQTijb/QVCwFMEZneChZqY\nacmghUD054yv2SfxT2y+vepxoM1Ru6cg5Hx41003MvzNocbAuY8WcoNsTKvSuhFd\nidUT1vHkYb9vMgiLUp/EbugfUbDZxJOy0KJrmVKCPaB8q6fxrefyrCtaI3vH1uPK\nzKfqdMp4xQKBgB5lM4fVWAFzj1w6Xluul5kwnc1PIUO17PWS8wRBC7PIwzaR4VCA\nNYRDspCN5R7j4cPFp76bAmyzpUMocfl7vOSVyr1bazKyVoMBJJ4CW+NwFPIhKBg/\n5SogVfhkXH5Z4U8f7pu6mlLmMvDA+o3jZDZqqnQOhpsisMJuvT4ef0+RAoGAHcom\n+iDcAk6mTR1ZS5LOZXi1ARd++fcn/ACWs29FlY6pftyGpIrelw1yen3F4Jp/W4Fa\na1wzqVjTmx5RO5AJEiXmy4Kr7rQkuSee80O4lUd8hB/ll6ONpJqTJaF1L5Tp8Yuj\nQn5VprAZLKLekUCTCzDG+DPSMVvQdHrdZjb+1jkCgYAqKH0x+Zsr/MN4bAfNZrWs\nyGTwEXfpi4yNvV+vTTT3hW0qA8/RZ1nfZqUlHaYkEjb/I6KWQMzQvVbwtcjqh1+7\n5eUa474MaSXpK0CeHZJXGA2MHiDhFkXjetFcJYtIEuXW5TXlPHFGwwuXbvNR8ktG\nohei3OvFhzee350WtCwUQQ==\n-----END PRIVATE KEY-----\n",
|
|
6
|
+
"client_email": "firebase-adminsdk-fbsvc@flowframe-auto.iam.gserviceaccount.com",
|
|
7
|
+
"client_id": "107247831545873677217",
|
|
8
|
+
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
|
|
9
|
+
"token_uri": "https://oauth2.googleapis.com/token",
|
|
10
|
+
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
|
|
11
|
+
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-fbsvc%40flowframe-auto.iam.gserviceaccount.com",
|
|
12
|
+
"universe_domain": "googleapis.com"
|
|
13
|
+
}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
# Microsoft Email Poller
|
|
2
|
+
|
|
3
|
+
A Node.js poller for Microsoft Outlook/Exchange emails using the Microsoft Graph API.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- 📧 Poll for new emails with customizable queries
|
|
8
|
+
- 📁 Create and manage email folders
|
|
9
|
+
- 📦 Move emails between folders
|
|
10
|
+
- 🗑️ Delete emails
|
|
11
|
+
- 🚀 Continuous polling with callbacks
|
|
12
|
+
- 👤 Human-like delays and behavior
|
|
13
|
+
- 📄 Paginated email processing
|
|
14
|
+
|
|
15
|
+
## Setup
|
|
16
|
+
|
|
17
|
+
### 1. Azure AD App Registration
|
|
18
|
+
|
|
19
|
+
1. Go to [Azure Portal](https://portal.azure.com)
|
|
20
|
+
2. Navigate to "Azure Active Directory" > "App registrations"
|
|
21
|
+
3. Click "New registration"
|
|
22
|
+
4. Enter a name (e.g., "Email Poller App")
|
|
23
|
+
5. Choose account type (Single tenant, Multitenant, or Personal)
|
|
24
|
+
6. Add redirect URI: `http://localhost` (for device code flow)
|
|
25
|
+
7. Click "Register"
|
|
26
|
+
|
|
27
|
+
### 2. API Permissions
|
|
28
|
+
|
|
29
|
+
1. In your app registration, go to "API permissions"
|
|
30
|
+
2. Click "Add a permission"
|
|
31
|
+
3. Select "Microsoft Graph"
|
|
32
|
+
4. Add these delegated permissions:
|
|
33
|
+
- `Mail.Read` - Read mail in all mailboxes
|
|
34
|
+
- `Mail.ReadWrite` - Read and write mail in all mailboxes
|
|
35
|
+
- `Mail.Send` - Send mail as a user
|
|
36
|
+
|
|
37
|
+
### 3. Environment Variables
|
|
38
|
+
|
|
39
|
+
Set these environment variables:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
export MICROSOFT_CLIENT_ID="your-client-id-here"
|
|
43
|
+
export MICROSOFT_TENANT_ID="your-tenant-id-here"
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
You can find these values in your Azure AD app registration:
|
|
47
|
+
- **Client ID**: Found in "Overview" > "Application (client) ID"
|
|
48
|
+
- **Tenant ID**: Found in "Overview" > "Directory (tenant) ID"
|
|
49
|
+
|
|
50
|
+
### 4. Install Dependencies
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
npm install @microsoft/microsoft-graph-client @azure/identity
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Usage
|
|
57
|
+
|
|
58
|
+
### Basic Example
|
|
59
|
+
|
|
60
|
+
```javascript
|
|
61
|
+
import MicrosoftEmailPoller from './microsoft-email-poller.js';
|
|
62
|
+
|
|
63
|
+
const poller = new MicrosoftEmailPoller();
|
|
64
|
+
|
|
65
|
+
// Authenticate
|
|
66
|
+
await poller.authenticate();
|
|
67
|
+
|
|
68
|
+
// Poll for emails
|
|
69
|
+
const emails = await poller.pollForEmails('', 'inbox', 10);
|
|
70
|
+
console.log(`Found ${emails.length} emails`);
|
|
71
|
+
|
|
72
|
+
// Process emails
|
|
73
|
+
for (const email of emails) {
|
|
74
|
+
const details = await poller.getEmailDetails(email.id);
|
|
75
|
+
console.log(`Subject: ${details.subject}`);
|
|
76
|
+
console.log(`From: ${details.sender.emailAddress.address}`);
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Advanced Usage
|
|
81
|
+
|
|
82
|
+
```javascript
|
|
83
|
+
// Create a processing folder
|
|
84
|
+
await poller.ensureFolderExists('Processed');
|
|
85
|
+
|
|
86
|
+
// Start polling with callback
|
|
87
|
+
await poller.startPolling(async (email) => {
|
|
88
|
+
console.log(`New email: ${email.subject}`);
|
|
89
|
+
|
|
90
|
+
// Move to processed folder
|
|
91
|
+
await poller.moveEmailToFolder(email.id, 'Processed');
|
|
92
|
+
}, '', 'inbox');
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Step Through Emails
|
|
96
|
+
|
|
97
|
+
```javascript
|
|
98
|
+
// Process emails in batches
|
|
99
|
+
let hasMore = true;
|
|
100
|
+
let skip = 0;
|
|
101
|
+
|
|
102
|
+
while (hasMore) {
|
|
103
|
+
const result = await poller.stepThroughEmails({
|
|
104
|
+
folder: 'inbox',
|
|
105
|
+
top: 50,
|
|
106
|
+
skip: skip,
|
|
107
|
+
includeDetails: true
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
// Process the batch
|
|
111
|
+
for (const email of result.messages) {
|
|
112
|
+
// Your processing logic here
|
|
113
|
+
console.log(email.subject);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
hasMore = result.hasMore;
|
|
117
|
+
skip = result.skip;
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## API Reference
|
|
122
|
+
|
|
123
|
+
### Constructor
|
|
124
|
+
|
|
125
|
+
```javascript
|
|
126
|
+
const poller = new MicrosoftEmailPoller();
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Authentication
|
|
130
|
+
|
|
131
|
+
```javascript
|
|
132
|
+
await poller.authenticate();
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Email Operations
|
|
136
|
+
|
|
137
|
+
```javascript
|
|
138
|
+
// Poll for emails
|
|
139
|
+
const emails = await poller.pollForEmails(query, folder, top);
|
|
140
|
+
|
|
141
|
+
// Get email details
|
|
142
|
+
const details = await poller.getEmailDetails(messageId);
|
|
143
|
+
|
|
144
|
+
// Move email
|
|
145
|
+
await poller.moveEmail(messageId, destinationFolderId);
|
|
146
|
+
|
|
147
|
+
// Delete email
|
|
148
|
+
await poller.deleteEmail(messageId);
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Folder Operations
|
|
152
|
+
|
|
153
|
+
```javascript
|
|
154
|
+
// Create folder
|
|
155
|
+
const folder = await poller.createFolder(folderName);
|
|
156
|
+
|
|
157
|
+
// Get all folders
|
|
158
|
+
const folders = await poller.getFolders();
|
|
159
|
+
|
|
160
|
+
// Ensure folder exists
|
|
161
|
+
const folder = await poller.ensureFolderExists(folderName);
|
|
162
|
+
|
|
163
|
+
// Move email to folder by name
|
|
164
|
+
await poller.moveEmailToFolder(messageId, folderName);
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### Polling
|
|
168
|
+
|
|
169
|
+
```javascript
|
|
170
|
+
// Start continuous polling
|
|
171
|
+
await poller.startPolling(callback, query, folder);
|
|
172
|
+
|
|
173
|
+
// Process emails with human-like behavior
|
|
174
|
+
await poller.processEmailsHumanLike(emailProcessor);
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
## Running the Example
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
npm run microsoft-email-example
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
This will demonstrate the basic functionality and help you verify your setup.
|
|
184
|
+
|
|
185
|
+
## Differences from Gmail Poller
|
|
186
|
+
|
|
187
|
+
- Uses Microsoft Graph API instead of Gmail API
|
|
188
|
+
- Authentication via Azure AD device code flow
|
|
189
|
+
- Folder-based organization instead of labels
|
|
190
|
+
- Different API endpoints and request formats
|
|
191
|
+
- Similar human-like behavior and error handling
|
|
192
|
+
|
|
193
|
+
## Error Handling
|
|
194
|
+
|
|
195
|
+
The poller includes comprehensive error handling and will provide helpful error messages. Common issues:
|
|
196
|
+
|
|
197
|
+
- **Authentication failed**: Check your Azure AD app registration and environment variables
|
|
198
|
+
- **Permissions denied**: Ensure you've granted the correct API permissions
|
|
199
|
+
- **Rate limiting**: The poller includes human-like delays to avoid rate limits
|
|
200
|
+
|
|
201
|
+
## Contributing
|
|
202
|
+
|
|
203
|
+
Feel free to contribute improvements or report issues!
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# Gmail Poller - Human Speed Email Management
|
|
2
|
+
|
|
3
|
+
A Node.js Gmail poller that operates at human-like speeds with full email management capabilities including moving, deleting, and organizing emails into folders.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- 🚀 **Human-speed polling** - Operates with realistic delays to avoid rate limiting
|
|
8
|
+
- 📧 **Email polling** - Continuously monitor Gmail for new messages
|
|
9
|
+
- 📦 **Move emails** - Move emails between folders/labels
|
|
10
|
+
- 🗑️ **Delete emails** - Remove unwanted emails
|
|
11
|
+
- 📁 **Create folders** - Automatically create new Gmail labels/folders
|
|
12
|
+
- 🔄 **Bulk operations** - Process multiple emails with human-like delays
|
|
13
|
+
|
|
14
|
+
## Setup
|
|
15
|
+
|
|
16
|
+
### 1. Install Dependencies
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
cd gmail-poller
|
|
20
|
+
npm install
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### 2. Set up Google Cloud Project
|
|
24
|
+
|
|
25
|
+
1. Go to [Google Cloud Console](https://console.cloud.google.com/)
|
|
26
|
+
2. Create a new project or select existing
|
|
27
|
+
3. Enable the Gmail API
|
|
28
|
+
4. Create OAuth 2.0 credentials
|
|
29
|
+
5. Download the `client_secret.apps.googleusercontent.com.json` file
|
|
30
|
+
|
|
31
|
+
### 3. Authentication
|
|
32
|
+
|
|
33
|
+
Place the `client_secret.apps.googleusercontent.com.json` file in the `gmail-poller` directory and run:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
node setup-auth.js
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
This will open a browser for authentication and save the token.
|
|
40
|
+
|
|
41
|
+
## Usage
|
|
42
|
+
|
|
43
|
+
### Basic Example
|
|
44
|
+
|
|
45
|
+
```javascript
|
|
46
|
+
const GmailPoller = require('./gmail-poller');
|
|
47
|
+
|
|
48
|
+
async function main() {
|
|
49
|
+
const poller = new GmailPoller();
|
|
50
|
+
|
|
51
|
+
// Authenticate
|
|
52
|
+
await poller.authenticate();
|
|
53
|
+
|
|
54
|
+
// Start polling for new emails
|
|
55
|
+
await poller.processEmailsHumanLike(async (email) => {
|
|
56
|
+
console.log('New email:', email.snippet);
|
|
57
|
+
|
|
58
|
+
// Move work emails to Work folder
|
|
59
|
+
if (email.snippet.includes('work')) {
|
|
60
|
+
const workLabel = await poller.findOrCreateLabel('Work');
|
|
61
|
+
await poller.moveEmail(email.id, workLabel.id, ['INBOX']);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Delete spam
|
|
65
|
+
if (email.snippet.includes('spam')) {
|
|
66
|
+
await poller.deleteEmail(email.id);
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
main();
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Advanced Operations
|
|
75
|
+
|
|
76
|
+
```javascript
|
|
77
|
+
// Organize emails by sender
|
|
78
|
+
await organizeEmailsBySender(poller, 'boss@company.com', 'Important');
|
|
79
|
+
|
|
80
|
+
// Bulk delete old emails
|
|
81
|
+
await bulkDeleteEmails(poller, 'older_than:1y');
|
|
82
|
+
|
|
83
|
+
// Create email workflow
|
|
84
|
+
await createEmailWorkflow(poller);
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## API Reference
|
|
88
|
+
|
|
89
|
+
### GmailPoller Class
|
|
90
|
+
|
|
91
|
+
#### Methods
|
|
92
|
+
|
|
93
|
+
- `authenticate()` - Authenticate with Gmail API
|
|
94
|
+
- `pollForEmails(query, labelIds)` - Poll for emails matching criteria
|
|
95
|
+
- `getEmailDetails(messageId)` - Get full email details
|
|
96
|
+
- `moveEmail(messageId, targetLabelId, removeLabelIds)` - Move email to different label
|
|
97
|
+
- `deleteEmail(messageId)` - Delete an email
|
|
98
|
+
- `createLabel(labelName)` - Create new Gmail label/folder
|
|
99
|
+
- `findOrCreateLabel(labelName)` - Find existing label or create new one
|
|
100
|
+
- `processEmailsHumanLike(callback)` - Start polling with human-like processing
|
|
101
|
+
|
|
102
|
+
### Configuration
|
|
103
|
+
|
|
104
|
+
- `pollInterval` - Polling frequency (default: 30 seconds)
|
|
105
|
+
- `humanDelayMin/Max` - Random delay range for human-like behavior (1-3 seconds)
|
|
106
|
+
|
|
107
|
+
## Human Speed Features
|
|
108
|
+
|
|
109
|
+
- Random delays between operations (1-3 seconds)
|
|
110
|
+
- Realistic polling intervals (30 seconds)
|
|
111
|
+
- Sequential processing to avoid rate limits
|
|
112
|
+
- Gmail API quota awareness
|
|
113
|
+
|
|
114
|
+
## Gmail Labels/Folders
|
|
115
|
+
|
|
116
|
+
The poller works with Gmail labels, which function as folders:
|
|
117
|
+
|
|
118
|
+
- `INBOX` - Main inbox
|
|
119
|
+
- `SPAM` - Spam folder
|
|
120
|
+
- `TRASH` - Deleted emails
|
|
121
|
+
- Custom labels like `Work`, `Personal`, etc.
|
|
122
|
+
|
|
123
|
+
## Error Handling
|
|
124
|
+
|
|
125
|
+
All operations include proper error handling and logging. Failed operations are logged but don't stop the polling process.
|
|
126
|
+
|
|
127
|
+
## License
|
|
128
|
+
|
|
129
|
+
MIT
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
declare function organizeEmailsBySender(poller: any, senderEmail: any, targetLabel: any): Promise<void>;
|
|
2
|
+
declare function bulkDeleteEmails(poller: any, query: any): Promise<void>;
|
|
3
|
+
declare function createEmailWorkflow(poller: any): Promise<void>;
|
|
4
|
+
export { organizeEmailsBySender, bulkDeleteEmails, createEmailWorkflow };
|
|
5
|
+
//# sourceMappingURL=example.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"example.d.ts","sourceRoot":"","sources":["../../src/gmail-poller/example.ts"],"names":[],"mappings":"AAoDA,iBAAe,sBAAsB,CAAC,MAAM,KAAA,EAAE,WAAW,KAAA,EAAE,WAAW,KAAA,iBAUrE;AAED,iBAAe,gBAAgB,CAAC,MAAM,KAAA,EAAE,KAAK,KAAA,iBAS5C;AAED,iBAAe,mBAAmB,CAAC,MAAM,KAAA,iBAuBxC;AAGD,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACpB,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import GmailPoller from './gmail-poller.js';
|
|
2
|
+
async function main() {
|
|
3
|
+
const poller = new GmailPoller();
|
|
4
|
+
try {
|
|
5
|
+
// Authenticate
|
|
6
|
+
await poller.authenticate();
|
|
7
|
+
console.log('🎯 Gmail Poller Example - Human Speed Operations');
|
|
8
|
+
console.log('==============================================');
|
|
9
|
+
// Example 1: Poll for new emails and process them
|
|
10
|
+
console.log('\n📧 Starting email poller...');
|
|
11
|
+
await poller.processEmailsHumanLike(async (email) => {
|
|
12
|
+
console.log(`📬 Processing email: ${email.snippet.substring(0, 50)}...`);
|
|
13
|
+
// Example operations:
|
|
14
|
+
// 1. Create a new folder/label if it doesn't exist
|
|
15
|
+
const workLabel = await poller.findOrCreateLabel('Work/Automated');
|
|
16
|
+
// 2. Move email to the new folder
|
|
17
|
+
if (email.snippet.toLowerCase().includes('work') ||
|
|
18
|
+
email.snippet.toLowerCase().includes('meeting')) {
|
|
19
|
+
await poller.moveEmail(email.id, workLabel.id, ['INBOX']);
|
|
20
|
+
console.log('✅ Moved work-related email to Work/Automated folder');
|
|
21
|
+
}
|
|
22
|
+
// 3. Delete spam/unwanted emails
|
|
23
|
+
if (email.snippet.toLowerCase().includes('spam') ||
|
|
24
|
+
email.snippet.toLowerCase().includes('unsubscribe')) {
|
|
25
|
+
await poller.deleteEmail(email.id);
|
|
26
|
+
console.log('🗑️ Deleted spam email');
|
|
27
|
+
}
|
|
28
|
+
// 4. Create category folders
|
|
29
|
+
const categories = ['Personal', 'Finance', 'Shopping', 'News'];
|
|
30
|
+
for (const category of categories) {
|
|
31
|
+
await poller.findOrCreateLabel(`Auto/${category}`);
|
|
32
|
+
}
|
|
33
|
+
console.log('📂 Ensured category folders exist');
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
console.error('❌ Error:', error);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
// Utility functions for advanced email management
|
|
41
|
+
async function organizeEmailsBySender(poller, senderEmail, targetLabel) {
|
|
42
|
+
console.log(`🔍 Finding emails from ${senderEmail}...`);
|
|
43
|
+
const messages = await poller.pollForEmails(`from:${senderEmail}`);
|
|
44
|
+
for (const message of messages) {
|
|
45
|
+
const email = await poller.getEmailDetails(message.id);
|
|
46
|
+
await poller.moveEmail(email.id, targetLabel, ['INBOX']);
|
|
47
|
+
console.log(`📦 Moved email from ${senderEmail} to ${targetLabel}`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async function bulkDeleteEmails(poller, query) {
|
|
51
|
+
console.log(`🗑️ Finding emails to delete: ${query}`);
|
|
52
|
+
const messages = await poller.pollForEmails(query);
|
|
53
|
+
for (const message of messages) {
|
|
54
|
+
await poller.deleteEmail(message.id);
|
|
55
|
+
console.log(`🗑️ Deleted email matching: ${query}`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
async function createEmailWorkflow(poller) {
|
|
59
|
+
// Create workflow folders
|
|
60
|
+
const folders = [
|
|
61
|
+
'Inbox/To-Process',
|
|
62
|
+
'Inbox/Processed',
|
|
63
|
+
'Archive/Old',
|
|
64
|
+
'Important/Urgent',
|
|
65
|
+
'Important/Review'
|
|
66
|
+
];
|
|
67
|
+
console.log('📁 Creating workflow folders...');
|
|
68
|
+
for (const folder of folders) {
|
|
69
|
+
await poller.findOrCreateLabel(folder);
|
|
70
|
+
}
|
|
71
|
+
// Example workflow: Move old emails to archive
|
|
72
|
+
const oldMessages = await poller.pollForEmails('older_than:30d');
|
|
73
|
+
for (const message of oldMessages) {
|
|
74
|
+
await poller.moveEmail(message.id, 'Archive/Old', ['INBOX']);
|
|
75
|
+
}
|
|
76
|
+
console.log('✅ Workflow completed - old emails archived');
|
|
77
|
+
}
|
|
78
|
+
// Export utility functions
|
|
79
|
+
export { organizeEmailsBySender, bulkDeleteEmails, createEmailWorkflow };
|
|
80
|
+
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
81
|
+
main();
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=example.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"example.js","sourceRoot":"","sources":["../../src/gmail-poller/example.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
declare class GmailPoller {
|
|
2
|
+
constructor();
|
|
3
|
+
/**
|
|
4
|
+
* Authenticate with Gmail API using OAuth2
|
|
5
|
+
*/
|
|
6
|
+
authenticate(): Promise<void>;
|
|
7
|
+
/**
|
|
8
|
+
* Get human-like delay
|
|
9
|
+
*/
|
|
10
|
+
getHumanDelay(): any;
|
|
11
|
+
/**
|
|
12
|
+
* Poll for new emails
|
|
13
|
+
*/
|
|
14
|
+
pollForEmails(query?: string, labelIds?: string[]): Promise<any>;
|
|
15
|
+
/**
|
|
16
|
+
* Get full email details
|
|
17
|
+
*/
|
|
18
|
+
getEmailDetails(messageId: any): Promise<any>;
|
|
19
|
+
/**
|
|
20
|
+
* Move email to different label/folder
|
|
21
|
+
*/
|
|
22
|
+
moveEmail(messageId: any, targetLabelId: any, removeLabelIds?: any[]): Promise<any>;
|
|
23
|
+
/**
|
|
24
|
+
* Delete email
|
|
25
|
+
*/
|
|
26
|
+
deleteEmail(messageId: any): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Create new label/folder
|
|
29
|
+
*/
|
|
30
|
+
createLabel(labelName: any): Promise<any>;
|
|
31
|
+
/**
|
|
32
|
+
* Get all labels
|
|
33
|
+
*/
|
|
34
|
+
getLabels(): Promise<any>;
|
|
35
|
+
/**
|
|
36
|
+
* Find or create label
|
|
37
|
+
*/
|
|
38
|
+
findOrCreateLabel(labelName: any): Promise<any>;
|
|
39
|
+
/**
|
|
40
|
+
* Ensure a folder/label exists by name
|
|
41
|
+
* Returns the label object (existing or newly created)
|
|
42
|
+
*/
|
|
43
|
+
ensureFolderExists(folderName: any): Promise<any>;
|
|
44
|
+
/**
|
|
45
|
+
* Move an email to a specific folder by name
|
|
46
|
+
* Automatically ensures the folder exists before moving
|
|
47
|
+
*/
|
|
48
|
+
moveEmailToFolder(messageId: any, folderName: any, removeFromInbox?: boolean): Promise<any>;
|
|
49
|
+
/**
|
|
50
|
+
* Step through emails manually with pagination
|
|
51
|
+
* Ensures authentication and allows controlled processing of emails
|
|
52
|
+
*/
|
|
53
|
+
stepThroughEmails(options?: {}): Promise<{
|
|
54
|
+
messages: any;
|
|
55
|
+
nextPageToken: any;
|
|
56
|
+
hasMore: boolean;
|
|
57
|
+
totalMessages: any;
|
|
58
|
+
}>;
|
|
59
|
+
/**
|
|
60
|
+
* Start polling with callback
|
|
61
|
+
*/
|
|
62
|
+
startPolling(callback: any, query?: string, labelIds?: string[]): Promise<void>;
|
|
63
|
+
/**
|
|
64
|
+
* Utility delay function
|
|
65
|
+
*/
|
|
66
|
+
delay(ms: any): Promise<unknown>;
|
|
67
|
+
/**
|
|
68
|
+
* Process emails with human-like behavior
|
|
69
|
+
*/
|
|
70
|
+
processEmailsHumanLike(emailProcessor: any): Promise<void>;
|
|
71
|
+
isTextMimeType(mimeType?: string): boolean;
|
|
72
|
+
isTextExtension(filename?: string): boolean;
|
|
73
|
+
decodeToBuffer(data: any): Buffer<ArrayBuffer>;
|
|
74
|
+
encodeToBase64Url(str: any): string;
|
|
75
|
+
collectAttachmentParts(part: any, attachments?: any[]): any[];
|
|
76
|
+
fetchAttachmentBuffer(messageId: any, attachmentId: any): Promise<Buffer<ArrayBuffer>>;
|
|
77
|
+
parsePdfAttachment(buffer: any, filename?: string): Promise<any>;
|
|
78
|
+
extractAttachmentText(messageId: any, part: any): Promise<any>;
|
|
79
|
+
includeAttachmentsInBody(message: any): Promise<any>;
|
|
80
|
+
}
|
|
81
|
+
export default GmailPoller;
|
|
82
|
+
//# sourceMappingURL=gmail-poller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gmail-poller.d.ts","sourceRoot":"","sources":["../../src/gmail-poller/gmail-poller.ts"],"names":[],"mappings":"AAsBA,cAAM,WAAW;;IASf;;OAEG;IACG,YAAY;IAiBlB;;OAEG;IACH,aAAa;IAIb;;OAEG;IACG,aAAa,CAAC,KAAK,SAAK,EAAE,QAAQ,WAAY;IAuBpD;;OAEG;IACG,eAAe,CAAC,SAAS,KAAA;IAqB/B;;OAEG;IACG,SAAS,CAAC,SAAS,KAAA,EAAE,aAAa,KAAA,EAAE,cAAc,QAAK;IA0B7D;;OAEG;IACG,WAAW,CAAC,SAAS,KAAA;IAqB3B;;OAEG;IACG,WAAW,CAAC,SAAS,KAAA;IA0B3B;;OAEG;IACG,SAAS;IAiBf;;OAEG;IACG,iBAAiB,CAAC,SAAS,KAAA;IAWjC;;;OAGG;IACG,kBAAkB,CAAC,UAAU,KAAA;IAgBnC;;;OAGG;IACG,iBAAiB,CAAC,SAAS,KAAA,EAAE,UAAU,KAAA,EAAE,eAAe,UAAO;IAwBrE;;;OAGG;IACG,iBAAiB,CAAC,OAAO,KAAK;;;;;;IAmDpC;;OAEG;IACG,YAAY,CAAC,QAAQ,KAAA,EAAE,KAAK,SAAK,EAAE,QAAQ,WAAY;IAyB7D;;OAEG;IACH,KAAK,CAAC,EAAE,KAAA;IAIR;;OAEG;IACG,sBAAsB,CAAC,cAAc,KAAA;IAY3C,cAAc,CAAC,QAAQ,SAAK;IAI5B,eAAe,CAAC,QAAQ,SAAK;IAK7B,cAAc,CAAC,IAAI,KAAA;IAKnB,iBAAiB,CAAC,GAAG,KAAA;IAQrB,sBAAsB,CAAC,IAAI,KAAA,EAAE,WAAW,QAAK;IAgBvC,qBAAqB,CAAC,SAAS,KAAA,EAAE,YAAY,KAAA;IAc7C,kBAAkB,CAAC,MAAM,KAAA,EAAE,QAAQ,SAAmB;IAoBtD,qBAAqB,CAAC,SAAS,KAAA,EAAE,IAAI,KAAA;IA0BrC,wBAAwB,CAAC,OAAO,KAAA;CAiDvC;AAED,eAAe,WAAW,CAAC"}
|