pulse-engine 0.2.44__tar.gz → 0.2.44.dev20260827140240__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/PKG-INFO +24 -8
  2. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/README.md +23 -7
  3. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/pyproject.toml +1 -1
  4. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/config.py +5 -6
  5. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/services/bootstrap.py +0 -4
  6. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/__init__.py +0 -0
  7. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/adapters/__init__.py +0 -0
  8. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/adapters/audio_transcription.py +0 -0
  9. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/adapters/batcher.py +0 -0
  10. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/adapters/digital_news.py +0 -0
  11. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/adapters/digital_news_metadata.py +0 -0
  12. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/adapters/document_event_campaign_mapper.py +0 -0
  13. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/adapters/exceptions.py +0 -0
  14. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/adapters/google_sheets.py +0 -0
  15. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/adapters/mart_export.py +0 -0
  16. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/adapters/models.py +0 -0
  17. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/adapters/opensearch_sql.py +0 -0
  18. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/adapters/opensearch_storage.py +0 -0
  19. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/adapters/prompts.py +0 -0
  20. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/adapters/report_generator.py +0 -0
  21. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/adapters/speech_content.py +0 -0
  22. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/adapters/speech_metadata.py +0 -0
  23. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/adapters/transcription/__init__.py +0 -0
  24. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/adapters/transcription/base.py +0 -0
  25. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/adapters/transcription/config.py +0 -0
  26. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/adapters/transcription/factory.py +0 -0
  27. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/adapters/transcription/providers/__init__.py +0 -0
  28. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/adapters/transcription/providers/deepgram.py +0 -0
  29. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/adapters/transcription/providers/openai_whisper.py +0 -0
  30. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/adapters/transcription/providers/selfhosted_job.py +0 -0
  31. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/adapters/transcription/providers/youtube_captions.py +0 -0
  32. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/adapters/transcription/service.py +0 -0
  33. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/adapters/transcription/source.py +0 -0
  34. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/adapters/twitter.py +0 -0
  35. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/adapters/youtube_downloader.py +0 -0
  36. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/adapters/youtube_metadata.py +0 -0
  37. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/api/__init__.py +0 -0
  38. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/api/v1/__init__.py +0 -0
  39. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/api/v1/auth.py +0 -0
  40. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/api/v1/health.py +0 -0
  41. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/api/v1/router.py +0 -0
  42. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/cli/__init__.py +0 -0
  43. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/cli/main.py +0 -0
  44. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/cli/templates/cookiecutter.json +0 -0
  45. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/cli/templates/pulse-{{cookiecutter.product_name}}/.gitignore +0 -0
  46. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/cli/templates/pulse-{{cookiecutter.product_name}}/Dockerfile +0 -0
  47. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/cli/templates/pulse-{{cookiecutter.product_name}}/pipeline.yaml +0 -0
  48. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/cli/templates/pulse-{{cookiecutter.product_name}}/pyproject.toml +0 -0
  49. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/cli/templates/pulse-{{cookiecutter.product_name}}/src/pulse_{{cookiecutter.product_slug}}/__init__.py +0 -0
  50. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/cli/templates/pulse-{{cookiecutter.product_name}}/tests/__init__.py +0 -0
  51. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/cli/templates/pulse-{{cookiecutter.product_name}}/tests/unit/__init__.py +0 -0
  52. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/cli/templates/pulse-{{cookiecutter.product_name}}/tests/unit/test_manifest.py +0 -0
  53. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/client.py +0 -0
  54. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/core/__init__.py +0 -0
  55. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/core/error_handlers.py +0 -0
  56. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/core/exceptions.py +0 -0
  57. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/core/job_token.py +0 -0
  58. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/core/logging.py +0 -0
  59. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/core/scope.py +0 -0
  60. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/core/security.py +0 -0
  61. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/cron/__init__.py +0 -0
  62. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/cron/models.py +0 -0
  63. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/cron/pipeline_sync.py +0 -0
  64. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/cron/repository.py +0 -0
  65. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/cron/router.py +0 -0
  66. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/cron/runner.py +0 -0
  67. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/cron/schemas.py +0 -0
  68. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/cron/service.py +0 -0
  69. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/cron/tasks.py +0 -0
  70. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/cron/translator.py +0 -0
  71. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/database.py +0 -0
  72. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/dependencies.py +0 -0
  73. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/deployment/__init__.py +0 -0
  74. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/deployment/infra_provisioner.py +0 -0
  75. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/evolution/__init__.py +0 -0
  76. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/evolution/adapter.py +0 -0
  77. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/evolution/client.py +0 -0
  78. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/evolution/models.py +0 -0
  79. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/evolution/router.py +0 -0
  80. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/evolution/service.py +0 -0
  81. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/extractor/__init__.py +0 -0
  82. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/extractor/adapters/__init__.py +0 -0
  83. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/extractor/base.py +0 -0
  84. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/main.py +0 -0
  85. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/mcp/__init__.py +0 -0
  86. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/mcp/__main__.py +0 -0
  87. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/mcp/server.py +0 -0
  88. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/mcp/tools_kb.py +0 -0
  89. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/mcp/tools_modules.py +0 -0
  90. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/mcp/tools_pipelines.py +0 -0
  91. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/mcp/tools_processor.py +0 -0
  92. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/middleware/__init__.py +0 -0
  93. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/middleware/rate_limit.py +0 -0
  94. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/middleware/request_id.py +0 -0
  95. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/middleware/security_headers.py +0 -0
  96. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/middleware/tenant.py +0 -0
  97. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/notifications/__init__.py +0 -0
  98. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/notifications/apprise_notifier.py +0 -0
  99. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/pipeline/__init__.py +0 -0
  100. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/pipeline/config_parser.py +0 -0
  101. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/pipeline/expression.py +0 -0
  102. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/pipeline/models.py +0 -0
  103. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/pipeline/repositories.py +0 -0
  104. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/pipeline/router_modules.py +0 -0
  105. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/pipeline/router_pipelines.py +0 -0
  106. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/pipeline/schemas.py +0 -0
  107. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/pipeline/service.py +0 -0
  108. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/pipeline/translators/__init__.py +0 -0
  109. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/pipeline/translators/airflow_status.py +0 -0
  110. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/pipeline/translators/airflow_translator.py +0 -0
  111. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/pipeline/translators/base.py +0 -0
  112. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/pipeline/translators/prefect_status.py +0 -0
  113. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/pipeline/translators/prefect_translator.py +0 -0
  114. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/processor/__init__.py +0 -0
  115. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/processor/base.py +0 -0
  116. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/processor/core/__init__.py +0 -0
  117. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/processor/core/analysis.py +0 -0
  118. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/processor/core/chunking.py +0 -0
  119. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/processor/core/prompts.py +0 -0
  120. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/processor/core/topic_splitter.py +0 -0
  121. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/processor/defaults/__init__.py +0 -0
  122. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/processor/defaults/core_processor.py +0 -0
  123. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/processor/defaults/postprocessor.py +0 -0
  124. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/processor/defaults/preprocessor.py +0 -0
  125. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/processor/llm/__init__.py +0 -0
  126. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/processor/llm/provider.py +0 -0
  127. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/processor/ocr/gemini.py +0 -0
  128. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/processor/pipeline.py +0 -0
  129. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/processor/postprocessor/__init__.py +0 -0
  130. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/processor/postprocessor/embeddings.py +0 -0
  131. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/processor/postprocessor/tasks.py +0 -0
  132. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/processor/preprocessor/__init__.py +0 -0
  133. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/processor/preprocessor/tasks.py +0 -0
  134. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/processor/router.py +0 -0
  135. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/processor/schemas.py +0 -0
  136. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/registry.py +0 -0
  137. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/reporting/__init__.py +0 -0
  138. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/reporting/agent.py +0 -0
  139. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/reporting/fixtures.py +0 -0
  140. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/reporting/models.py +0 -0
  141. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/reporting/prompts.py +0 -0
  142. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/reporting/service.py +0 -0
  143. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/reporting/staging.py +0 -0
  144. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/reporting/tools.py +0 -0
  145. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/reporting/validation.py +0 -0
  146. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/reporting/wiring.py +0 -0
  147. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/runners/__init__.py +0 -0
  148. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/runners/lambda_runner.py +0 -0
  149. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/runners/pipeline_runner.py +0 -0
  150. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/runners/prefect_pipeline_flow.py +0 -0
  151. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/runners/prefect_runner.py +0 -0
  152. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/s3.py +0 -0
  153. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/sandbox/__init__.py +0 -0
  154. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/sandbox/backend.py +0 -0
  155. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/sandbox/lambda_microvm.py +0 -0
  156. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/sandbox/microvm_agent/Dockerfile +0 -0
  157. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/sandbox/microvm_agent/__init__.py +0 -0
  158. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/sandbox/microvm_agent/server.py +0 -0
  159. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/sandbox/session.py +0 -0
  160. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/secrets.py +0 -0
  161. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/services/__init__.py +0 -0
  162. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/services/opensearch.py +0 -0
  163. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/skills/__init__.py +0 -0
  164. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/skills/catalog.py +0 -0
  165. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/skills/models.py +0 -0
  166. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/skills/repo.py +0 -0
  167. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/skills/seed.py +0 -0
  168. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/skills/seed_data/skill_files.json +0 -0
  169. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/skills/seed_data/skills.json +0 -0
  170. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/skills/sync.py +0 -0
  171. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/skills/tools.py +0 -0
  172. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/storage/__init__.py +0 -0
  173. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/storage/connectors/__init__.py +0 -0
  174. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/storage/connectors/athena.py +0 -0
  175. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/storage/connectors/base.py +0 -0
  176. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/storage/connectors/opensearch.py +0 -0
  177. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/storage/knowledge_base.py +0 -0
  178. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/storage/router.py +0 -0
  179. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/storage/schemas.py +0 -0
  180. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/testing/__init__.py +0 -0
  181. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/testing/fixtures.py +0 -0
  182. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/testing/mocks.py +0 -0
  183. {pulse_engine-0.2.44 → pulse_engine-0.2.44.dev20260827140240}/src/pulse_engine/worker.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pulse-engine
3
- Version: 0.2.44
3
+ Version: 0.2.44.dev20260827140240
4
4
  Summary: Pulse Engine — Hybrid framework for building Pulse products
5
5
  Author: Pulse Team
6
6
  Requires-Python: >=3.11,<3.13
@@ -101,7 +101,8 @@ git clone <repo-url> && cd pulse-engine
101
101
  # Install deps and pre-commit hooks
102
102
  make install
103
103
 
104
- # Copy env and configure
104
+ # Copy env and configure — or, if you have AWS access, pull a real one from
105
+ # Secrets Manager instead: ./scripts/fetch-secrets.sh dev
105
106
  cp .env.example .env
106
107
 
107
108
  # Run database migrations
@@ -318,7 +319,15 @@ Runs on push to `dev`, `uat`, `prod`:
318
319
 
319
320
  The pipeline: test → publish to PyPI → build Docker → push ECR → deploy → health check.
320
321
 
321
- Terraform runs separately on `infra/terraform/**` changes: plan → apply → sync outputs to GitHub Secrets (pipeline infra vars auto-flow to `.env` on next deploy).
322
+ For `dev`/`staging`, the deploy step fetches the app's `.env` from AWS Secrets Manager
323
+ (`<env>/pulse_engine`) directly on the target VM over SSH, using that instance's IAM role —
324
+ not GitHub Secrets. AWS API access (S3, Athena, etc.) also comes from the instance role via
325
+ boto3's default credential chain; no static `AWS_ACCESS_KEY_ID`/`AWS_SECRET_ACCESS_KEY` are
326
+ provisioned anywhere in this pipeline. `prod` deploys to ECS instead (see `deploy-ecs` job in
327
+ `deploy.yml`); its task definition env vars are still populated by Terraform
328
+ (`infra/terraform/**`), a separate mechanism not covered by the Secrets Manager fetch above.
329
+
330
+ Terraform runs separately on `infra/terraform/**` changes: plan → apply.
322
331
 
323
332
  ### Required Secrets (per GitHub environment)
324
333
 
@@ -356,8 +365,11 @@ Products register additional tools via `mcp_tool_modules` in the manifest.
356
365
  | `APP_VERSION` | No | `0.1.0` | Application version |
357
366
  | `LOG_LEVEL` | No | `INFO` | Logging level |
358
367
  | `AWS_REGION` | Yes | `ap-south-1` | AWS region |
359
- | `AWS_ACCESS_KEY_ID` | No | — | AWS credentials (use IAM role in production) |
360
- | `AWS_SECRET_ACCESS_KEY` | No | — | AWS credentials (use IAM role in production) |
368
+
369
+ AWS API access (S3, Athena, Cognito, Secrets Manager) is resolved via boto3's default
370
+ credential chain — the EC2/ECS instance role in deployed environments, or your local
371
+ `aws configure`/`AWS_PROFILE` for local dev. There is no `AWS_ACCESS_KEY_ID`/
372
+ `AWS_SECRET_ACCESS_KEY` config; static keys are not supported.
361
373
 
362
374
  ### Authentication (Cognito)
363
375
 
@@ -390,10 +402,11 @@ Products register additional tools via `mcp_tool_modules` in the manifest.
390
402
 
391
403
  ### Athena
392
404
 
405
+ Uses the same default credential chain / instance role as core AWS access above — no
406
+ separate Athena credentials.
407
+
393
408
  | Variable | Required | Default | Description |
394
409
  |----------|----------|---------|-------------|
395
- | `ATHENA_AWS_ACCESS_KEY_ID` | No | — | Athena-specific AWS credentials |
396
- | `ATHENA_AWS_SECRET_ACCESS_KEY` | No | — | Athena-specific AWS credentials |
397
410
  | `ATHENA_OUTPUT_LOCATION` | Yes* | — | S3 URI for Athena query results |
398
411
  | `ATHENA_WORKGROUP` | No | `primary` | Athena workgroup |
399
412
  | `ATHENA_QUERY_TIMEOUT_SECONDS` | No | `60` | Athena query timeout |
@@ -440,7 +453,10 @@ Products register additional tools via `mcp_tool_modules` in the manifest.
440
453
 
441
454
  ### Pipeline Infrastructure (from Terraform)
442
455
 
443
- These are auto-synced from Terraform outputs to GitHub Secrets, then written to `.env` at deploy time:
456
+ For `dev`/`staging`, these values live in the `<env>/pulse_engine` Secrets Manager secret
457
+ (fetched into `.env` at deploy time — see CI/CD above); Terraform outputs must be synced into
458
+ that secret by hand when infra changes. For `prod`, they're set directly on the ECS task
459
+ definition by Terraform (`infra/terraform/environments/prod/main.tf`).
444
460
 
445
461
  | Variable | Description |
446
462
  |----------|-------------|
@@ -47,7 +47,8 @@ git clone <repo-url> && cd pulse-engine
47
47
  # Install deps and pre-commit hooks
48
48
  make install
49
49
 
50
- # Copy env and configure
50
+ # Copy env and configure — or, if you have AWS access, pull a real one from
51
+ # Secrets Manager instead: ./scripts/fetch-secrets.sh dev
51
52
  cp .env.example .env
52
53
 
53
54
  # Run database migrations
@@ -264,7 +265,15 @@ Runs on push to `dev`, `uat`, `prod`:
264
265
 
265
266
  The pipeline: test → publish to PyPI → build Docker → push ECR → deploy → health check.
266
267
 
267
- Terraform runs separately on `infra/terraform/**` changes: plan → apply → sync outputs to GitHub Secrets (pipeline infra vars auto-flow to `.env` on next deploy).
268
+ For `dev`/`staging`, the deploy step fetches the app's `.env` from AWS Secrets Manager
269
+ (`<env>/pulse_engine`) directly on the target VM over SSH, using that instance's IAM role —
270
+ not GitHub Secrets. AWS API access (S3, Athena, etc.) also comes from the instance role via
271
+ boto3's default credential chain; no static `AWS_ACCESS_KEY_ID`/`AWS_SECRET_ACCESS_KEY` are
272
+ provisioned anywhere in this pipeline. `prod` deploys to ECS instead (see `deploy-ecs` job in
273
+ `deploy.yml`); its task definition env vars are still populated by Terraform
274
+ (`infra/terraform/**`), a separate mechanism not covered by the Secrets Manager fetch above.
275
+
276
+ Terraform runs separately on `infra/terraform/**` changes: plan → apply.
268
277
 
269
278
  ### Required Secrets (per GitHub environment)
270
279
 
@@ -302,8 +311,11 @@ Products register additional tools via `mcp_tool_modules` in the manifest.
302
311
  | `APP_VERSION` | No | `0.1.0` | Application version |
303
312
  | `LOG_LEVEL` | No | `INFO` | Logging level |
304
313
  | `AWS_REGION` | Yes | `ap-south-1` | AWS region |
305
- | `AWS_ACCESS_KEY_ID` | No | — | AWS credentials (use IAM role in production) |
306
- | `AWS_SECRET_ACCESS_KEY` | No | — | AWS credentials (use IAM role in production) |
314
+
315
+ AWS API access (S3, Athena, Cognito, Secrets Manager) is resolved via boto3's default
316
+ credential chain — the EC2/ECS instance role in deployed environments, or your local
317
+ `aws configure`/`AWS_PROFILE` for local dev. There is no `AWS_ACCESS_KEY_ID`/
318
+ `AWS_SECRET_ACCESS_KEY` config; static keys are not supported.
307
319
 
308
320
  ### Authentication (Cognito)
309
321
 
@@ -336,10 +348,11 @@ Products register additional tools via `mcp_tool_modules` in the manifest.
336
348
 
337
349
  ### Athena
338
350
 
351
+ Uses the same default credential chain / instance role as core AWS access above — no
352
+ separate Athena credentials.
353
+
339
354
  | Variable | Required | Default | Description |
340
355
  |----------|----------|---------|-------------|
341
- | `ATHENA_AWS_ACCESS_KEY_ID` | No | — | Athena-specific AWS credentials |
342
- | `ATHENA_AWS_SECRET_ACCESS_KEY` | No | — | Athena-specific AWS credentials |
343
356
  | `ATHENA_OUTPUT_LOCATION` | Yes* | — | S3 URI for Athena query results |
344
357
  | `ATHENA_WORKGROUP` | No | `primary` | Athena workgroup |
345
358
  | `ATHENA_QUERY_TIMEOUT_SECONDS` | No | `60` | Athena query timeout |
@@ -386,7 +399,10 @@ Products register additional tools via `mcp_tool_modules` in the manifest.
386
399
 
387
400
  ### Pipeline Infrastructure (from Terraform)
388
401
 
389
- These are auto-synced from Terraform outputs to GitHub Secrets, then written to `.env` at deploy time:
402
+ For `dev`/`staging`, these values live in the `<env>/pulse_engine` Secrets Manager secret
403
+ (fetched into `.env` at deploy time — see CI/CD above); Terraform outputs must be synced into
404
+ that secret by hand when infra changes. For `prod`, they're set directly on the ECS task
405
+ definition by Terraform (`infra/terraform/environments/prod/main.tf`).
390
406
 
391
407
  | Variable | Description |
392
408
  |----------|-------------|
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "pulse-engine"
3
- version = "0.2.44"
3
+ version = "0.2.44.dev20260827140240"
4
4
  description = "Pulse Engine — Hybrid framework for building Pulse products"
5
5
  authors = ["Pulse Team"]
6
6
  readme = "README.md"
@@ -9,9 +9,8 @@ class Settings(BaseSettings):
9
9
  debug: bool = False
10
10
  log_level: str = "INFO"
11
11
 
12
- # AWS core credentials
13
- aws_access_key_id: str = ""
14
- aws_secret_access_key: str = ""
12
+ # AWS core credentials — resolved via boto3's default credential chain
13
+ # (env vars → shared config → EC2/ECS instance role). No static keys here.
15
14
  aws_region: str = "ap-south-1"
16
15
  cognito_user_pool_id: str = ""
17
16
  cognito_app_client_id: str = ""
@@ -29,9 +28,9 @@ class Settings(BaseSettings):
29
28
  prefect_api_url: str = ""
30
29
  prefect_database_url: str = ""
31
30
 
32
- # Athena (separate credentials — product specifies which database)
33
- athena_aws_access_key_id: str = ""
34
- athena_aws_secret_access_key: str = ""
31
+ # Athena (product specifies which database). Credentials also come from
32
+ # boto3's default credential chain — same instance role as core AWS access,
33
+ # not a separate static key pair.
35
34
  athena_output_location: str = ""
36
35
  athena_workgroup: str = "primary"
37
36
  athena_query_timeout_seconds: int = 60
@@ -100,8 +100,6 @@ async def bootstrap_services(
100
100
  athena_client = boto3.client(
101
101
  "athena",
102
102
  region_name=settings.aws_region,
103
- aws_access_key_id=settings.athena_aws_access_key_id or None,
104
- aws_secret_access_key=settings.athena_aws_secret_access_key or None,
105
103
  )
106
104
  athena_connector = AthenaConnector(
107
105
  athena_client=athena_client,
@@ -129,8 +127,6 @@ async def bootstrap_services(
129
127
  s3_client = boto3.client(
130
128
  "s3",
131
129
  region_name=settings.aws_region,
132
- aws_access_key_id=settings.aws_access_key_id or None,
133
- aws_secret_access_key=settings.aws_secret_access_key or None,
134
130
  )
135
131
 
136
132
  # Job token issuer