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,455 @@
|
|
|
1
|
+
import { google } from 'googleapis';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { fileURLToPath } from 'url';
|
|
4
|
+
import { authenticate } from '@google-cloud/local-auth';
|
|
5
|
+
import { PDFParse } from 'pdf-parse/node';
|
|
6
|
+
// ES module equivalent of __dirname
|
|
7
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
8
|
+
const __dirname = path.dirname(__filename);
|
|
9
|
+
// Gmail API scopes
|
|
10
|
+
const SCOPES = [
|
|
11
|
+
'https://www.googleapis.com/auth/gmail.readonly',
|
|
12
|
+
'https://www.googleapis.com/auth/gmail.modify',
|
|
13
|
+
'https://www.googleapis.com/auth/gmail.labels'
|
|
14
|
+
];
|
|
15
|
+
const TEXT_MIME_PREFIXES = ['text/', 'application/json', 'application/xml'];
|
|
16
|
+
const TEXT_EXTENSIONS = ['.txt', '.md', '.csv', '.json', '.xml', '.log'];
|
|
17
|
+
class GmailPoller {
|
|
18
|
+
constructor() {
|
|
19
|
+
this.gmail = null;
|
|
20
|
+
this.isAuthenticated = false;
|
|
21
|
+
this.pollInterval = 30000; // 30 seconds - human-like polling
|
|
22
|
+
this.humanDelayMin = 1000; // 1 second minimum delay
|
|
23
|
+
this.humanDelayMax = 3000; // 3 seconds maximum delay
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Authenticate with Gmail API using OAuth2
|
|
27
|
+
*/
|
|
28
|
+
async authenticate() {
|
|
29
|
+
try {
|
|
30
|
+
// Use the same OAuth2 authentication as setup-auth.js
|
|
31
|
+
const auth = await authenticate({
|
|
32
|
+
keyfilePath: path.join(__dirname, 'client_secret.apps.googleusercontent.com.json'),
|
|
33
|
+
scopes: SCOPES,
|
|
34
|
+
});
|
|
35
|
+
this.gmail = google.gmail({ version: 'v1', auth });
|
|
36
|
+
this.isAuthenticated = true;
|
|
37
|
+
console.log('โ
Gmail authentication successful');
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
console.error('โ Gmail authentication failed:', error);
|
|
41
|
+
throw error;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Get human-like delay
|
|
46
|
+
*/
|
|
47
|
+
getHumanDelay() {
|
|
48
|
+
return Math.random() * (this.humanDelayMax - this.humanDelayMin) + this.humanDelayMin;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Poll for new emails
|
|
52
|
+
*/
|
|
53
|
+
async pollForEmails(query = '', labelIds = ['INBOX']) {
|
|
54
|
+
if (!this.isAuthenticated) {
|
|
55
|
+
throw new Error('Not authenticated with Gmail');
|
|
56
|
+
}
|
|
57
|
+
try {
|
|
58
|
+
const response = await this.gmail.users.messages.list({
|
|
59
|
+
userId: 'me',
|
|
60
|
+
q: query,
|
|
61
|
+
labelIds: labelIds,
|
|
62
|
+
maxResults: 10
|
|
63
|
+
});
|
|
64
|
+
const messages = response.data.messages || [];
|
|
65
|
+
console.log(`๐ง Found ${messages.length} messages`);
|
|
66
|
+
return messages;
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
console.error('โ Error polling emails:', error);
|
|
70
|
+
throw error;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Get full email details
|
|
75
|
+
*/
|
|
76
|
+
async getEmailDetails(messageId) {
|
|
77
|
+
if (!this.isAuthenticated) {
|
|
78
|
+
throw new Error('Not authenticated with Gmail');
|
|
79
|
+
}
|
|
80
|
+
try {
|
|
81
|
+
const response = await this.gmail.users.messages.get({
|
|
82
|
+
userId: 'me',
|
|
83
|
+
id: messageId,
|
|
84
|
+
format: 'full'
|
|
85
|
+
});
|
|
86
|
+
const enriched = await this.includeAttachmentsInBody(response.data);
|
|
87
|
+
return enriched;
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
console.error('โ Error getting email details:', error);
|
|
91
|
+
throw error;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Move email to different label/folder
|
|
96
|
+
*/
|
|
97
|
+
async moveEmail(messageId, targetLabelId, removeLabelIds = []) {
|
|
98
|
+
if (!this.isAuthenticated) {
|
|
99
|
+
throw new Error('Not authenticated with Gmail');
|
|
100
|
+
}
|
|
101
|
+
try {
|
|
102
|
+
// Add human delay
|
|
103
|
+
await this.delay(this.getHumanDelay());
|
|
104
|
+
const response = await this.gmail.users.messages.modify({
|
|
105
|
+
userId: 'me',
|
|
106
|
+
id: messageId,
|
|
107
|
+
requestBody: {
|
|
108
|
+
addLabelIds: [targetLabelId],
|
|
109
|
+
removeLabelIds: removeLabelIds
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
console.log(`๐ฆ Moved email ${messageId} to label ${targetLabelId}`);
|
|
113
|
+
return response.data;
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
console.error('โ Error moving email:', error);
|
|
117
|
+
throw error;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Delete email
|
|
122
|
+
*/
|
|
123
|
+
async deleteEmail(messageId) {
|
|
124
|
+
if (!this.isAuthenticated) {
|
|
125
|
+
throw new Error('Not authenticated with Gmail');
|
|
126
|
+
}
|
|
127
|
+
try {
|
|
128
|
+
// Add human delay
|
|
129
|
+
await this.delay(this.getHumanDelay());
|
|
130
|
+
await this.gmail.users.messages.delete({
|
|
131
|
+
userId: 'me',
|
|
132
|
+
id: messageId
|
|
133
|
+
});
|
|
134
|
+
console.log(`๐๏ธ Deleted email ${messageId}`);
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
console.error('โ Error deleting email:', error);
|
|
138
|
+
throw error;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Create new label/folder
|
|
143
|
+
*/
|
|
144
|
+
async createLabel(labelName) {
|
|
145
|
+
if (!this.isAuthenticated) {
|
|
146
|
+
throw new Error('Not authenticated with Gmail');
|
|
147
|
+
}
|
|
148
|
+
try {
|
|
149
|
+
// Add human delay
|
|
150
|
+
await this.delay(this.getHumanDelay());
|
|
151
|
+
const response = await this.gmail.users.labels.create({
|
|
152
|
+
userId: 'me',
|
|
153
|
+
requestBody: {
|
|
154
|
+
name: labelName,
|
|
155
|
+
labelListVisibility: 'labelShow',
|
|
156
|
+
messageListVisibility: 'show'
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
console.log(`๐ Created label: ${labelName}`);
|
|
160
|
+
return response.data;
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
console.error('โ Error creating label:', error);
|
|
164
|
+
throw error;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Get all labels
|
|
169
|
+
*/
|
|
170
|
+
async getLabels() {
|
|
171
|
+
if (!this.isAuthenticated) {
|
|
172
|
+
throw new Error('Not authenticated with Gmail');
|
|
173
|
+
}
|
|
174
|
+
try {
|
|
175
|
+
const response = await this.gmail.users.labels.list({
|
|
176
|
+
userId: 'me'
|
|
177
|
+
});
|
|
178
|
+
return response.data.labels || [];
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
console.error('โ Error getting labels:', error);
|
|
182
|
+
throw error;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Find or create label
|
|
187
|
+
*/
|
|
188
|
+
async findOrCreateLabel(labelName) {
|
|
189
|
+
const labels = await this.getLabels();
|
|
190
|
+
const existingLabel = labels.find(label => label.name === labelName);
|
|
191
|
+
if (existingLabel) {
|
|
192
|
+
return existingLabel;
|
|
193
|
+
}
|
|
194
|
+
return await this.createLabel(labelName);
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Ensure a folder/label exists by name
|
|
198
|
+
* Returns the label object (existing or newly created)
|
|
199
|
+
*/
|
|
200
|
+
async ensureFolderExists(folderName) {
|
|
201
|
+
if (!this.isAuthenticated) {
|
|
202
|
+
console.log('๐ Not authenticated, authenticating now...');
|
|
203
|
+
await this.authenticate();
|
|
204
|
+
}
|
|
205
|
+
try {
|
|
206
|
+
const label = await this.findOrCreateLabel(folderName);
|
|
207
|
+
console.log(`๐ Folder "${folderName}" is ready (ID: ${label.id})`);
|
|
208
|
+
return label;
|
|
209
|
+
}
|
|
210
|
+
catch (error) {
|
|
211
|
+
console.error(`โ Error ensuring folder "${folderName}" exists:`, error);
|
|
212
|
+
throw error;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Move an email to a specific folder by name
|
|
217
|
+
* Automatically ensures the folder exists before moving
|
|
218
|
+
*/
|
|
219
|
+
async moveEmailToFolder(messageId, folderName, removeFromInbox = true) {
|
|
220
|
+
if (!this.isAuthenticated) {
|
|
221
|
+
console.log('๐ Not authenticated, authenticating now...');
|
|
222
|
+
await this.authenticate();
|
|
223
|
+
}
|
|
224
|
+
try {
|
|
225
|
+
// Ensure the folder exists
|
|
226
|
+
const targetLabel = await this.ensureFolderExists(folderName);
|
|
227
|
+
// Prepare label IDs to remove (typically INBOX if requested)
|
|
228
|
+
const removeLabelIds = removeFromInbox ? ['INBOX'] : [];
|
|
229
|
+
// Move the email
|
|
230
|
+
const result = await this.moveEmail(messageId, targetLabel.id, removeLabelIds);
|
|
231
|
+
console.log(`๐ฆ Moved email ${messageId} to folder "${folderName}"`);
|
|
232
|
+
return result;
|
|
233
|
+
}
|
|
234
|
+
catch (error) {
|
|
235
|
+
console.error(`โ Error moving email ${messageId} to folder "${folderName}":`, error);
|
|
236
|
+
throw error;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Step through emails manually with pagination
|
|
241
|
+
* Ensures authentication and allows controlled processing of emails
|
|
242
|
+
*/
|
|
243
|
+
async stepThroughEmails(options = {}) {
|
|
244
|
+
// Ensure authentication
|
|
245
|
+
if (!this.isAuthenticated) {
|
|
246
|
+
console.log('๐ Not authenticated, authenticating now...');
|
|
247
|
+
await this.authenticate();
|
|
248
|
+
}
|
|
249
|
+
const { query = '', labelIds = ['INBOX'], maxResults = 10, pageToken = null, includeDetails = true } = options;
|
|
250
|
+
try {
|
|
251
|
+
// Get message list with pagination
|
|
252
|
+
const listResponse = await this.gmail.users.messages.list({
|
|
253
|
+
userId: 'me',
|
|
254
|
+
q: query,
|
|
255
|
+
labelIds: labelIds,
|
|
256
|
+
maxResults: maxResults,
|
|
257
|
+
pageToken: pageToken
|
|
258
|
+
});
|
|
259
|
+
const messages = listResponse.data.messages || [];
|
|
260
|
+
console.log(`๐ง Found ${messages.length} messages (page token: ${listResponse.data.nextPageToken || 'none'})`);
|
|
261
|
+
let emailDetails = [];
|
|
262
|
+
if (includeDetails && messages.length > 0) {
|
|
263
|
+
// Get full details for each message with human-like delays
|
|
264
|
+
console.log('โณ Fetching full email details with human-like delays...');
|
|
265
|
+
for (const message of messages) {
|
|
266
|
+
const details = await this.getEmailDetails(message.id);
|
|
267
|
+
emailDetails.push(details);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
return {
|
|
271
|
+
messages: includeDetails ? emailDetails : messages,
|
|
272
|
+
nextPageToken: listResponse.data.nextPageToken,
|
|
273
|
+
hasMore: !!listResponse.data.nextPageToken,
|
|
274
|
+
totalMessages: messages.length
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
catch (error) {
|
|
278
|
+
console.error('โ Error stepping through emails:', error);
|
|
279
|
+
throw error;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Start polling with callback
|
|
284
|
+
*/
|
|
285
|
+
async startPolling(callback, query = '', labelIds = ['INBOX']) {
|
|
286
|
+
console.log('๐ Starting Gmail poller...');
|
|
287
|
+
const poll = async () => {
|
|
288
|
+
try {
|
|
289
|
+
const messages = await this.pollForEmails(query, labelIds);
|
|
290
|
+
if (messages.length > 0) {
|
|
291
|
+
for (const message of messages) {
|
|
292
|
+
const emailDetails = await this.getEmailDetails(message.id);
|
|
293
|
+
await callback(emailDetails);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
catch (error) {
|
|
298
|
+
console.error('โ Polling error:', error);
|
|
299
|
+
}
|
|
300
|
+
// Schedule next poll
|
|
301
|
+
setTimeout(poll, this.pollInterval);
|
|
302
|
+
};
|
|
303
|
+
// Start polling
|
|
304
|
+
poll();
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Utility delay function
|
|
308
|
+
*/
|
|
309
|
+
delay(ms) {
|
|
310
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Process emails with human-like behavior
|
|
314
|
+
*/
|
|
315
|
+
async processEmailsHumanLike(emailProcessor) {
|
|
316
|
+
return this.startPolling(async (email) => {
|
|
317
|
+
try {
|
|
318
|
+
await emailProcessor(email);
|
|
319
|
+
// Add extra delay between processing emails
|
|
320
|
+
await this.delay(this.getHumanDelay() * 2);
|
|
321
|
+
}
|
|
322
|
+
catch (error) {
|
|
323
|
+
console.error('โ Error processing email:', error);
|
|
324
|
+
}
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
isTextMimeType(mimeType = '') {
|
|
328
|
+
return TEXT_MIME_PREFIXES.some(prefix => mimeType.startsWith(prefix));
|
|
329
|
+
}
|
|
330
|
+
isTextExtension(filename = '') {
|
|
331
|
+
const lower = filename.toLowerCase();
|
|
332
|
+
return TEXT_EXTENSIONS.some(ext => lower.endsWith(ext));
|
|
333
|
+
}
|
|
334
|
+
decodeToBuffer(data) {
|
|
335
|
+
const normalized = (data || '').replace(/-/g, '+').replace(/_/g, '/');
|
|
336
|
+
return Buffer.from(normalized, 'base64');
|
|
337
|
+
}
|
|
338
|
+
encodeToBase64Url(str) {
|
|
339
|
+
return Buffer.from(str, 'utf8')
|
|
340
|
+
.toString('base64')
|
|
341
|
+
.replace(/\+/g, '-')
|
|
342
|
+
.replace(/\//g, '_')
|
|
343
|
+
.replace(/=+$/g, '');
|
|
344
|
+
}
|
|
345
|
+
collectAttachmentParts(part, attachments = []) {
|
|
346
|
+
if (!part) {
|
|
347
|
+
return attachments;
|
|
348
|
+
}
|
|
349
|
+
if (part.filename && part.body && (part.body.attachmentId || part.body.data)) {
|
|
350
|
+
attachments.push(part);
|
|
351
|
+
}
|
|
352
|
+
if (Array.isArray(part.parts)) {
|
|
353
|
+
part.parts.forEach(child => this.collectAttachmentParts(child, attachments));
|
|
354
|
+
}
|
|
355
|
+
return attachments;
|
|
356
|
+
}
|
|
357
|
+
async fetchAttachmentBuffer(messageId, attachmentId) {
|
|
358
|
+
if (!attachmentId) {
|
|
359
|
+
return Buffer.alloc(0);
|
|
360
|
+
}
|
|
361
|
+
const attachment = await this.gmail.users.messages.attachments.get({
|
|
362
|
+
userId: 'me',
|
|
363
|
+
messageId,
|
|
364
|
+
id: attachmentId
|
|
365
|
+
});
|
|
366
|
+
return this.decodeToBuffer(attachment.data?.data || '');
|
|
367
|
+
}
|
|
368
|
+
async parsePdfAttachment(buffer, filename = 'attachment.pdf') {
|
|
369
|
+
let parser = null;
|
|
370
|
+
try {
|
|
371
|
+
parser = new PDFParse({ data: buffer });
|
|
372
|
+
const result = await parser.getText();
|
|
373
|
+
return result.text?.trim() || null;
|
|
374
|
+
}
|
|
375
|
+
catch (error) {
|
|
376
|
+
console.warn(`Failed to parse PDF attachment ${filename}:`, error);
|
|
377
|
+
return null;
|
|
378
|
+
}
|
|
379
|
+
finally {
|
|
380
|
+
if (parser && typeof parser.destroy === 'function') {
|
|
381
|
+
try {
|
|
382
|
+
await parser.destroy();
|
|
383
|
+
}
|
|
384
|
+
catch (cleanupError) {
|
|
385
|
+
console.warn('Failed to clean up pdf-parse instance:', cleanupError);
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
async extractAttachmentText(messageId, part) {
|
|
391
|
+
const mimeType = part.mimeType || '';
|
|
392
|
+
const filename = part.filename || '';
|
|
393
|
+
let buffer;
|
|
394
|
+
if (part.body?.data) {
|
|
395
|
+
buffer = this.decodeToBuffer(part.body.data);
|
|
396
|
+
}
|
|
397
|
+
else if (part.body?.attachmentId) {
|
|
398
|
+
buffer = await this.fetchAttachmentBuffer(messageId, part.body.attachmentId);
|
|
399
|
+
}
|
|
400
|
+
if (!buffer || !buffer.length) {
|
|
401
|
+
return null;
|
|
402
|
+
}
|
|
403
|
+
if (this.isTextMimeType(mimeType) || this.isTextExtension(filename)) {
|
|
404
|
+
return buffer.toString('utf8').trim();
|
|
405
|
+
}
|
|
406
|
+
if (mimeType === 'application/pdf' || filename.toLowerCase().endsWith('.pdf')) {
|
|
407
|
+
return await this.parsePdfAttachment(buffer, filename || 'attachment.pdf');
|
|
408
|
+
}
|
|
409
|
+
return null;
|
|
410
|
+
}
|
|
411
|
+
async includeAttachmentsInBody(message) {
|
|
412
|
+
if (!message || !message.payload) {
|
|
413
|
+
console.log('No message payload to process attachments.');
|
|
414
|
+
return message;
|
|
415
|
+
}
|
|
416
|
+
const attachments = this.collectAttachmentParts(message.payload, []);
|
|
417
|
+
if (!attachments.length) {
|
|
418
|
+
console.log('No attachments found to include in body.');
|
|
419
|
+
return message;
|
|
420
|
+
}
|
|
421
|
+
const attachmentSections = [];
|
|
422
|
+
console.log(`Processing ${attachments.length} attachments for message ${message.id}...`);
|
|
423
|
+
for (const attachment of attachments) {
|
|
424
|
+
const text = await this.extractAttachmentText(message.id, attachment);
|
|
425
|
+
if (text) {
|
|
426
|
+
attachmentSections.push(`Attachment: ${attachment.filename || attachment.mimeType}\n${text}`);
|
|
427
|
+
}
|
|
428
|
+
else {
|
|
429
|
+
console.log(`Skipping non-text attachment: ${attachment.filename || attachment.mimeType}`);
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
if (!attachmentSections.length) {
|
|
433
|
+
console.log('No text attachments found to include in body.');
|
|
434
|
+
return message;
|
|
435
|
+
}
|
|
436
|
+
const combined = attachmentSections.join('\n\n');
|
|
437
|
+
message.attachmentText = combined;
|
|
438
|
+
const textPart = {
|
|
439
|
+
mimeType: 'text/plain',
|
|
440
|
+
filename: 'attachments.txt',
|
|
441
|
+
body: {
|
|
442
|
+
data: this.encodeToBase64Url(`\n\n--- Attachments ---\n${combined}`)
|
|
443
|
+
}
|
|
444
|
+
};
|
|
445
|
+
if (Array.isArray(message.payload.parts)) {
|
|
446
|
+
message.payload.parts.push(textPart);
|
|
447
|
+
}
|
|
448
|
+
else {
|
|
449
|
+
message.payload.parts = [textPart];
|
|
450
|
+
}
|
|
451
|
+
return message;
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
export default GmailPoller;
|
|
455
|
+
//# sourceMappingURL=gmail-poller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gmail-poller.js","sourceRoot":"","sources":["../../src/gmail-poller/gmail-poller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manual-test.d.ts","sourceRoot":"","sources":["../../src/gmail-poller/manual-test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import GmailPoller from './gmail-poller.js';
|
|
2
|
+
async function test() {
|
|
3
|
+
console.log('๐งช Testing Gmail Poller Setup...\n');
|
|
4
|
+
const poller = new GmailPoller();
|
|
5
|
+
try {
|
|
6
|
+
// Test authentication
|
|
7
|
+
console.log('1. Testing authentication...');
|
|
8
|
+
await poller.authenticate();
|
|
9
|
+
console.log('โ
Authentication successful\n');
|
|
10
|
+
// Test getting labels
|
|
11
|
+
console.log('2. Testing label retrieval...');
|
|
12
|
+
const labels = await poller.getLabels();
|
|
13
|
+
console.log(`โ
Found ${labels.length} labels\n`);
|
|
14
|
+
// Test creating a test label
|
|
15
|
+
console.log('3. Testing label creation...');
|
|
16
|
+
const testLabel = await poller.findOrCreateLabel('Test/Auto-Created');
|
|
17
|
+
console.log(`โ
Created/found label: ${testLabel.name}\n`);
|
|
18
|
+
// Test polling (will be empty if no emails)
|
|
19
|
+
console.log('4. Testing email polling...');
|
|
20
|
+
const messages = await poller.pollForEmails('', ['INBOX']);
|
|
21
|
+
console.log(`โ
Polling successful, found ${messages.length} messages\n`);
|
|
22
|
+
console.log('๐ All tests passed! Gmail Poller is ready to use.');
|
|
23
|
+
console.log('\nTo start polling:');
|
|
24
|
+
console.log('node example.js');
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
console.error('โ Test failed:', error.message);
|
|
28
|
+
console.log('\nMake sure:');
|
|
29
|
+
console.log('1. client_secret.apps.googleusercontent.com.json is in this directory');
|
|
30
|
+
console.log('2. You ran: npm run auth');
|
|
31
|
+
console.log('3. Gmail API is enabled in Google Cloud Console');
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
35
|
+
test();
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=manual-test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manual-test.js","sourceRoot":"","sources":["../../src/gmail-poller/manual-test.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,mBAAmB,CAAC;AAE5C,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAElD,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;IAEjC,IAAI,CAAC;QACH,sBAAsB;QACtB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAE7C,sBAAsB;QACtB,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,MAAM,WAAW,CAAC,CAAC;QAEjD,6BAA6B;QAC7B,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,0BAA0B,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC;QAE1D,4CAA4C;QAC5C,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,+BAA+B,QAAQ,CAAC,MAAM,aAAa,CAAC,CAAC;QAEzE,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAEjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;QACrF,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACpD,IAAI,EAAE,CAAC;AACT,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Example usage of Microsoft Email Poller
|
|
4
|
+
* This demonstrates how to use the poller for Microsoft Outlook/Exchange emails
|
|
5
|
+
*/
|
|
6
|
+
declare function exampleUsage(): Promise<void>;
|
|
7
|
+
export { exampleUsage };
|
|
8
|
+
//# sourceMappingURL=microsoft-email-example.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"microsoft-email-example.d.ts","sourceRoot":"","sources":["../../src/gmail-poller/microsoft-email-example.ts"],"names":[],"mappings":";AAIA;;;GAGG;AACH,iBAAe,YAAY,kBAqD1B;AAOD,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import MicrosoftEmailPoller from './microsoft-email-poller.js';
|
|
3
|
+
/**
|
|
4
|
+
* Example usage of Microsoft Email Poller
|
|
5
|
+
* This demonstrates how to use the poller for Microsoft Outlook/Exchange emails
|
|
6
|
+
*/
|
|
7
|
+
async function exampleUsage() {
|
|
8
|
+
const poller = new MicrosoftEmailPoller();
|
|
9
|
+
try {
|
|
10
|
+
// Authenticate with Microsoft
|
|
11
|
+
console.log('๐ Authenticating with Microsoft...');
|
|
12
|
+
await poller.authenticate();
|
|
13
|
+
// Example 1: Poll for recent emails
|
|
14
|
+
console.log('\n๐ง Polling for recent emails...');
|
|
15
|
+
const recentEmails = await poller.pollForEmails('', 'inbox', 5);
|
|
16
|
+
if (recentEmails.length > 0) {
|
|
17
|
+
console.log(`Found ${recentEmails.length} recent emails:`);
|
|
18
|
+
for (const email of recentEmails.slice(0, 3)) { // Show first 3
|
|
19
|
+
console.log(`- ${email.subject} (from: ${email.sender?.emailAddress?.address})`);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
// Example 2: Step through emails manually
|
|
23
|
+
console.log('\n๐ Stepping through emails...');
|
|
24
|
+
const emailPage = await poller.stepThroughEmails({
|
|
25
|
+
folder: 'inbox',
|
|
26
|
+
top: 3,
|
|
27
|
+
includeDetails: true
|
|
28
|
+
});
|
|
29
|
+
console.log(`Retrieved ${emailPage.messages.length} emails`);
|
|
30
|
+
// Example 3: Create a folder and move an email (if emails exist)
|
|
31
|
+
if (emailPage.messages.length > 0) {
|
|
32
|
+
const testFolderName = 'Test-Processed';
|
|
33
|
+
console.log(`\n๐ Creating/ensuring folder: ${testFolderName}`);
|
|
34
|
+
const folder = await poller.ensureFolderExists(testFolderName);
|
|
35
|
+
// Move the first email to the test folder
|
|
36
|
+
const firstEmail = emailPage.messages[0];
|
|
37
|
+
console.log(`๐ฆ Moving email "${firstEmail.subject}" to ${testFolderName}...`);
|
|
38
|
+
await poller.moveEmailToFolder(firstEmail.id, testFolderName);
|
|
39
|
+
}
|
|
40
|
+
console.log('\nโ
Microsoft Email Poller example completed successfully!');
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
console.error('โ Error in example:', error);
|
|
44
|
+
console.log('\n๐ก Setup instructions:');
|
|
45
|
+
console.log('1. Create an Azure AD app registration at https://portal.azure.com');
|
|
46
|
+
console.log('2. Add Mail.Read, Mail.ReadWrite, Mail.Send permissions');
|
|
47
|
+
console.log('3. Set environment variables:');
|
|
48
|
+
console.log(' export MICROSOFT_CLIENT_ID="your-client-id"');
|
|
49
|
+
console.log(' export MICROSOFT_TENANT_ID="your-tenant-id"');
|
|
50
|
+
console.log('4. Run this script again');
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// Run the example if this file is executed directly
|
|
54
|
+
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
55
|
+
exampleUsage();
|
|
56
|
+
}
|
|
57
|
+
export { exampleUsage };
|
|
58
|
+
//# sourceMappingURL=microsoft-email-example.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"microsoft-email-example.js","sourceRoot":"","sources":["../../src/gmail-poller/microsoft-email-example.ts"],"names":[],"mappings":";AAEA,OAAO,oBAAoB,MAAM,6BAA6B,CAAC;AAE/D;;;GAGG;AACH,KAAK,UAAU,YAAY;IACzB,MAAM,MAAM,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAE1C,IAAI,CAAC;QACH,8BAA8B;QAC9B,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QACnD,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC;QAE5B,oCAAoC;QACpC,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACjD,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QAEhE,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,SAAS,YAAY,CAAC,MAAM,iBAAiB,CAAC,CAAC;YAC3D,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,eAAe;gBAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,WAAW,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,GAAG,CAAC,CAAC;YACnF,CAAC;QACH,CAAC;QAED,0CAA0C;QAC1C,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC;YAC/C,MAAM,EAAE,OAAO;YACf,GAAG,EAAE,CAAC;YACN,cAAc,EAAE,IAAI;SACrB,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,aAAa,SAAS,CAAC,QAAQ,CAAC,MAAM,SAAS,CAAC,CAAC;QAE7D,iEAAiE;QACjE,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,cAAc,GAAG,gBAAgB,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,kCAAkC,cAAc,EAAE,CAAC,CAAC;YAChE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;YAE/D,0CAA0C;YAC1C,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,oBAAoB,UAAU,CAAC,OAAO,QAAQ,cAAc,KAAK,CAAC,CAAC;YAC/E,MAAM,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;QAChE,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;IAE5E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;QAClF,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,oDAAoD;AACpD,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACpD,YAAY,EAAE,CAAC;AACjB,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}
|