celeste-ai 0.2.4__tar.gz → 0.3.3__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 (343) hide show
  1. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/.env.example +6 -0
  2. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/.github/workflows/ci.yml +2 -2
  3. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/.github/workflows/publish.yml +103 -7
  4. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/.gitignore +1 -0
  5. celeste_ai-0.3.3/LICENSE +21 -0
  6. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/Makefile +12 -4
  7. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/PKG-INFO +163 -45
  8. celeste_ai-0.3.3/README.md +251 -0
  9. {celeste_ai-0.2.4/packages → celeste_ai-0.3.3/packages/capabilities}/image-generation/README.md +3 -3
  10. {celeste_ai-0.2.4/packages → celeste_ai-0.3.3/packages/capabilities}/image-generation/pyproject.toml +16 -5
  11. {celeste_ai-0.2.4/packages → celeste_ai-0.3.3/packages/capabilities}/image-generation/src/celeste_image_generation/__init__.py +0 -1
  12. {celeste_ai-0.2.4/packages → celeste_ai-0.3.3/packages/capabilities}/image-generation/src/celeste_image_generation/client.py +3 -7
  13. {celeste_ai-0.2.4/packages → celeste_ai-0.3.3/packages/capabilities}/image-generation/src/celeste_image_generation/constraints.py +1 -1
  14. {celeste_ai-0.2.4/packages → celeste_ai-0.3.3/packages/capabilities}/image-generation/src/celeste_image_generation/io.py +10 -10
  15. {celeste_ai-0.2.4/packages → celeste_ai-0.3.3/packages/capabilities}/image-generation/src/celeste_image_generation/models.py +5 -3
  16. celeste_ai-0.3.3/packages/capabilities/image-generation/src/celeste_image_generation/parameters.py +40 -0
  17. {celeste_ai-0.2.4/packages → celeste_ai-0.3.3/packages/capabilities}/image-generation/src/celeste_image_generation/providers/__init__.py +7 -3
  18. celeste_ai-0.3.3/packages/capabilities/image-generation/src/celeste_image_generation/providers/bfl/__init__.py +6 -0
  19. celeste_ai-0.3.3/packages/capabilities/image-generation/src/celeste_image_generation/providers/bfl/client.py +67 -0
  20. celeste_ai-0.3.3/packages/capabilities/image-generation/src/celeste_image_generation/providers/bfl/models.py +65 -0
  21. celeste_ai-0.3.3/packages/capabilities/image-generation/src/celeste_image_generation/providers/bfl/parameters.py +107 -0
  22. {celeste_ai-0.2.4/packages/image-generation/src/celeste_image_generation/providers/bytedance → celeste_ai-0.3.3/packages/capabilities/image-generation/src/celeste_image_generation/providers/byteplus}/README.md +3 -3
  23. celeste_ai-0.3.3/packages/capabilities/image-generation/src/celeste_image_generation/providers/byteplus/__init__.py +6 -0
  24. celeste_ai-0.3.3/packages/capabilities/image-generation/src/celeste_image_generation/providers/byteplus/client.py +107 -0
  25. {celeste_ai-0.2.4/packages/image-generation/src/celeste_image_generation/providers/bytedance → celeste_ai-0.3.3/packages/capabilities/image-generation/src/celeste_image_generation/providers/byteplus}/models.py +27 -2
  26. celeste_ai-0.3.3/packages/capabilities/image-generation/src/celeste_image_generation/providers/byteplus/parameters.py +57 -0
  27. celeste_ai-0.3.3/packages/capabilities/image-generation/src/celeste_image_generation/providers/byteplus/streaming.py +81 -0
  28. celeste_ai-0.3.3/packages/capabilities/image-generation/src/celeste_image_generation/providers/google/__init__.py +11 -0
  29. celeste_ai-0.3.3/packages/capabilities/image-generation/src/celeste_image_generation/providers/google/client.py +82 -0
  30. celeste_ai-0.3.3/packages/capabilities/image-generation/src/celeste_image_generation/providers/google/gemini.py +90 -0
  31. celeste_ai-0.3.3/packages/capabilities/image-generation/src/celeste_image_generation/providers/google/gemini_parameters.py +35 -0
  32. celeste_ai-0.3.3/packages/capabilities/image-generation/src/celeste_image_generation/providers/google/imagen.py +90 -0
  33. celeste_ai-0.3.3/packages/capabilities/image-generation/src/celeste_image_generation/providers/google/imagen_parameters.py +35 -0
  34. {celeste_ai-0.2.4/packages → celeste_ai-0.3.3/packages/capabilities}/image-generation/src/celeste_image_generation/providers/google/models.py +28 -13
  35. celeste_ai-0.3.3/packages/capabilities/image-generation/src/celeste_image_generation/providers/google/parameters.py +12 -0
  36. {celeste_ai-0.2.4/packages → celeste_ai-0.3.3/packages/capabilities}/image-generation/src/celeste_image_generation/providers/openai/__init__.py +1 -1
  37. celeste_ai-0.3.3/packages/capabilities/image-generation/src/celeste_image_generation/providers/openai/client.py +80 -0
  38. {celeste_ai-0.2.4/packages → celeste_ai-0.3.3/packages/capabilities}/image-generation/src/celeste_image_generation/providers/openai/models.py +16 -1
  39. celeste_ai-0.3.3/packages/capabilities/image-generation/src/celeste_image_generation/providers/openai/parameters.py +35 -0
  40. celeste_ai-0.3.3/packages/capabilities/image-generation/src/celeste_image_generation/providers/openai/streaming.py +60 -0
  41. {celeste_ai-0.2.4/packages → celeste_ai-0.3.3/packages/capabilities}/image-generation/src/celeste_image_generation/streaming.py +11 -4
  42. celeste_ai-0.3.3/packages/capabilities/image-generation/tests/integration_tests/test_image_generation/__init__.py +1 -0
  43. {celeste_ai-0.2.4/packages → celeste_ai-0.3.3/packages/capabilities}/image-generation/tests/integration_tests/test_image_generation/test_generate.py +4 -3
  44. celeste_ai-0.3.3/packages/capabilities/image-generation/tests/unit_tests/providers/google/__init__.py +1 -0
  45. {celeste_ai-0.2.4/packages → celeste_ai-0.3.3/packages/capabilities}/image-generation/tests/unit_tests/providers/google/test_finish_reason.py +11 -10
  46. celeste_ai-0.3.3/packages/capabilities/speech-generation/README.md +79 -0
  47. celeste_ai-0.3.3/packages/capabilities/speech-generation/pyproject.toml +50 -0
  48. celeste_ai-0.3.3/packages/capabilities/speech-generation/src/celeste_speech_generation/__init__.py +59 -0
  49. celeste_ai-0.3.3/packages/capabilities/speech-generation/src/celeste_speech_generation/client.py +69 -0
  50. celeste_ai-0.3.3/packages/capabilities/speech-generation/src/celeste_speech_generation/constraints.py +39 -0
  51. celeste_ai-0.3.3/packages/capabilities/speech-generation/src/celeste_speech_generation/io.py +43 -0
  52. celeste_ai-0.3.3/packages/capabilities/speech-generation/src/celeste_speech_generation/languages.py +47 -0
  53. celeste_ai-0.3.3/packages/capabilities/speech-generation/src/celeste_speech_generation/models.py +16 -0
  54. celeste_ai-0.3.3/packages/capabilities/speech-generation/src/celeste_speech_generation/parameters.py +24 -0
  55. celeste_ai-0.3.3/packages/capabilities/speech-generation/src/celeste_speech_generation/providers/__init__.py +32 -0
  56. celeste_ai-0.3.3/packages/capabilities/speech-generation/src/celeste_speech_generation/providers/elevenlabs/__init__.py +11 -0
  57. celeste_ai-0.3.3/packages/capabilities/speech-generation/src/celeste_speech_generation/providers/elevenlabs/client.py +97 -0
  58. celeste_ai-0.3.3/packages/capabilities/speech-generation/src/celeste_speech_generation/providers/elevenlabs/models.py +141 -0
  59. celeste_ai-0.3.3/packages/capabilities/speech-generation/src/celeste_speech_generation/providers/elevenlabs/parameters.py +43 -0
  60. celeste_ai-0.3.3/packages/capabilities/speech-generation/src/celeste_speech_generation/providers/elevenlabs/streaming.py +44 -0
  61. celeste_ai-0.3.3/packages/capabilities/speech-generation/src/celeste_speech_generation/providers/elevenlabs/voices.py +322 -0
  62. celeste_ai-0.3.3/packages/capabilities/speech-generation/src/celeste_speech_generation/providers/google/__init__.py +6 -0
  63. celeste_ai-0.3.3/packages/capabilities/speech-generation/src/celeste_speech_generation/providers/google/client.py +71 -0
  64. celeste_ai-0.3.3/packages/capabilities/speech-generation/src/celeste_speech_generation/providers/google/mappings.py +37 -0
  65. celeste_ai-0.3.3/packages/capabilities/speech-generation/src/celeste_speech_generation/providers/google/models.py +77 -0
  66. celeste_ai-0.3.3/packages/capabilities/speech-generation/src/celeste_speech_generation/providers/google/parameters.py +47 -0
  67. celeste_ai-0.3.3/packages/capabilities/speech-generation/src/celeste_speech_generation/providers/google/voices.py +212 -0
  68. celeste_ai-0.3.3/packages/capabilities/speech-generation/src/celeste_speech_generation/providers/gradium/__init__.py +9 -0
  69. celeste_ai-0.3.3/packages/capabilities/speech-generation/src/celeste_speech_generation/providers/gradium/client.py +93 -0
  70. celeste_ai-0.3.3/packages/capabilities/speech-generation/src/celeste_speech_generation/providers/gradium/models.py +34 -0
  71. celeste_ai-0.3.3/packages/capabilities/speech-generation/src/celeste_speech_generation/providers/gradium/parameters.py +60 -0
  72. celeste_ai-0.3.3/packages/capabilities/speech-generation/src/celeste_speech_generation/providers/gradium/voices.py +101 -0
  73. celeste_ai-0.3.3/packages/capabilities/speech-generation/src/celeste_speech_generation/providers/openai/__init__.py +6 -0
  74. celeste_ai-0.3.3/packages/capabilities/speech-generation/src/celeste_speech_generation/providers/openai/client.py +88 -0
  75. celeste_ai-0.3.3/packages/capabilities/speech-generation/src/celeste_speech_generation/providers/openai/models.py +61 -0
  76. celeste_ai-0.3.3/packages/capabilities/speech-generation/src/celeste_speech_generation/providers/openai/parameters.py +35 -0
  77. celeste_ai-0.3.3/packages/capabilities/speech-generation/src/celeste_speech_generation/providers/openai/voices.py +140 -0
  78. celeste_ai-0.3.3/packages/capabilities/speech-generation/src/celeste_speech_generation/streaming.py +44 -0
  79. celeste_ai-0.3.3/packages/capabilities/speech-generation/src/celeste_speech_generation/voices.py +17 -0
  80. celeste_ai-0.3.3/packages/capabilities/speech-generation/tests/integration_tests/conftest.py +19 -0
  81. celeste_ai-0.3.3/packages/capabilities/speech-generation/tests/integration_tests/test_speech_generation/__init__.py +1 -0
  82. celeste_ai-0.3.3/packages/capabilities/speech-generation/tests/integration_tests/test_speech_generation/test_generate.py +72 -0
  83. celeste_ai-0.3.3/packages/capabilities/speech-generation/tests/integration_tests/test_speech_generation/test_stream.py +59 -0
  84. {celeste_ai-0.2.4/packages → celeste_ai-0.3.3/packages/capabilities}/text-generation/README.md +2 -2
  85. {celeste_ai-0.2.4/packages → celeste_ai-0.3.3/packages/capabilities}/text-generation/pyproject.toml +19 -4
  86. {celeste_ai-0.2.4/packages → celeste_ai-0.3.3/packages/capabilities}/text-generation/src/celeste_text_generation/__init__.py +0 -2
  87. {celeste_ai-0.2.4/packages → celeste_ai-0.3.3/packages/capabilities}/text-generation/src/celeste_text_generation/client.py +5 -5
  88. {celeste_ai-0.2.4/packages → celeste_ai-0.3.3/packages/capabilities}/text-generation/src/celeste_text_generation/io.py +1 -1
  89. {celeste_ai-0.2.4/packages → celeste_ai-0.3.3/packages/capabilities}/text-generation/src/celeste_text_generation/models.py +2 -0
  90. {celeste_ai-0.2.4/packages → celeste_ai-0.3.3/packages/capabilities}/text-generation/src/celeste_text_generation/parameters.py +4 -0
  91. {celeste_ai-0.2.4/packages → celeste_ai-0.3.3/packages/capabilities}/text-generation/src/celeste_text_generation/providers/__init__.py +4 -0
  92. {celeste_ai-0.2.4/packages → celeste_ai-0.3.3/packages/capabilities}/text-generation/src/celeste_text_generation/providers/anthropic/__init__.py +1 -1
  93. celeste_ai-0.3.3/packages/capabilities/text-generation/src/celeste_text_generation/providers/anthropic/client.py +65 -0
  94. {celeste_ai-0.2.4/packages → celeste_ai-0.3.3/packages/capabilities}/text-generation/src/celeste_text_generation/providers/anthropic/models.py +18 -4
  95. celeste_ai-0.3.3/packages/capabilities/text-generation/src/celeste_text_generation/providers/anthropic/parameters.py +68 -0
  96. celeste_ai-0.3.3/packages/capabilities/text-generation/src/celeste_text_generation/providers/anthropic/streaming.py +95 -0
  97. {celeste_ai-0.2.4/packages → celeste_ai-0.3.3/packages/capabilities}/text-generation/src/celeste_text_generation/providers/cohere/__init__.py +1 -1
  98. celeste_ai-0.3.3/packages/capabilities/text-generation/src/celeste_text_generation/providers/cohere/client.py +73 -0
  99. {celeste_ai-0.2.4/packages → celeste_ai-0.3.3/packages/capabilities}/text-generation/src/celeste_text_generation/providers/cohere/models.py +1 -26
  100. celeste_ai-0.3.3/packages/capabilities/text-generation/src/celeste_text_generation/providers/cohere/parameters.py +70 -0
  101. celeste_ai-0.3.3/packages/capabilities/text-generation/src/celeste_text_generation/providers/cohere/streaming.py +87 -0
  102. {celeste_ai-0.2.4/packages → celeste_ai-0.3.3/packages/capabilities}/text-generation/src/celeste_text_generation/providers/google/__init__.py +1 -1
  103. celeste_ai-0.3.3/packages/capabilities/text-generation/src/celeste_text_generation/providers/google/client.py +67 -0
  104. {celeste_ai-0.2.4/packages → celeste_ai-0.3.3/packages/capabilities}/text-generation/src/celeste_text_generation/providers/google/models.py +17 -5
  105. celeste_ai-0.3.3/packages/capabilities/text-generation/src/celeste_text_generation/providers/google/parameters.py +52 -0
  106. celeste_ai-0.3.3/packages/capabilities/text-generation/src/celeste_text_generation/providers/google/streaming.py +83 -0
  107. {celeste_ai-0.2.4/packages → celeste_ai-0.3.3/packages/capabilities}/text-generation/src/celeste_text_generation/providers/mistral/__init__.py +1 -1
  108. celeste_ai-0.3.3/packages/capabilities/text-generation/src/celeste_text_generation/providers/mistral/client.py +95 -0
  109. {celeste_ai-0.2.4/packages → celeste_ai-0.3.3/packages/capabilities}/text-generation/src/celeste_text_generation/providers/mistral/models.py +45 -1
  110. celeste_ai-0.3.3/packages/capabilities/text-generation/src/celeste_text_generation/providers/mistral/parameters.py +72 -0
  111. celeste_ai-0.3.3/packages/capabilities/text-generation/src/celeste_text_generation/providers/mistral/streaming.py +87 -0
  112. {celeste_ai-0.2.4/packages → celeste_ai-0.3.3/packages/capabilities}/text-generation/src/celeste_text_generation/providers/openai/__init__.py +1 -1
  113. celeste_ai-0.3.3/packages/capabilities/text-generation/src/celeste_text_generation/providers/openai/client.py +65 -0
  114. {celeste_ai-0.2.4/packages → celeste_ai-0.3.3/packages/capabilities}/text-generation/src/celeste_text_generation/providers/openai/models.py +72 -1
  115. celeste_ai-0.3.3/packages/capabilities/text-generation/src/celeste_text_generation/providers/openai/parameters.py +52 -0
  116. celeste_ai-0.3.3/packages/capabilities/text-generation/src/celeste_text_generation/providers/openai/streaming.py +85 -0
  117. celeste_ai-0.3.3/packages/capabilities/text-generation/src/celeste_text_generation/providers/xai/__init__.py +7 -0
  118. celeste_ai-0.3.3/packages/capabilities/text-generation/src/celeste_text_generation/providers/xai/client.py +65 -0
  119. celeste_ai-0.3.3/packages/capabilities/text-generation/src/celeste_text_generation/providers/xai/models.py +76 -0
  120. celeste_ai-0.3.3/packages/capabilities/text-generation/src/celeste_text_generation/providers/xai/parameters.py +44 -0
  121. celeste_ai-0.3.3/packages/capabilities/text-generation/src/celeste_text_generation/providers/xai/streaming.py +85 -0
  122. {celeste_ai-0.2.4/packages → celeste_ai-0.3.3/packages/capabilities}/text-generation/src/celeste_text_generation/streaming.py +7 -5
  123. celeste_ai-0.3.3/packages/capabilities/text-generation/tests/integration_tests/conftest.py +19 -0
  124. celeste_ai-0.3.3/packages/capabilities/text-generation/tests/integration_tests/test_text_generation/__init__.py +1 -0
  125. {celeste_ai-0.2.4/packages → celeste_ai-0.3.3/packages/capabilities}/text-generation/tests/integration_tests/test_text_generation/test_generate.py +2 -1
  126. {celeste_ai-0.2.4/packages → celeste_ai-0.3.3/packages/capabilities}/text-generation/tests/integration_tests/test_text_generation/test_stream.py +7 -3
  127. celeste_ai-0.3.3/packages/capabilities/video-generation/README.md +79 -0
  128. celeste_ai-0.3.3/packages/capabilities/video-generation/pyproject.toml +49 -0
  129. celeste_ai-0.3.3/packages/capabilities/video-generation/src/celeste_video_generation/__init__.py +29 -0
  130. celeste_ai-0.3.3/packages/capabilities/video-generation/src/celeste_video_generation/client.py +71 -0
  131. celeste_ai-0.3.3/packages/capabilities/video-generation/src/celeste_video_generation/io.py +33 -0
  132. celeste_ai-0.3.3/packages/capabilities/video-generation/src/celeste_video_generation/models.py +14 -0
  133. celeste_ai-0.3.3/packages/capabilities/video-generation/src/celeste_video_generation/parameters.py +28 -0
  134. celeste_ai-0.3.3/packages/capabilities/video-generation/src/celeste_video_generation/providers/__init__.py +28 -0
  135. celeste_ai-0.3.3/packages/capabilities/video-generation/src/celeste_video_generation/providers/byteplus/README.md +13 -0
  136. celeste_ai-0.3.3/packages/capabilities/video-generation/src/celeste_video_generation/providers/byteplus/__init__.py +11 -0
  137. celeste_ai-0.3.3/packages/capabilities/video-generation/src/celeste_video_generation/providers/byteplus/client.py +168 -0
  138. celeste_ai-0.3.3/packages/capabilities/video-generation/src/celeste_video_generation/providers/byteplus/models.py +99 -0
  139. celeste_ai-0.3.3/packages/capabilities/video-generation/src/celeste_video_generation/providers/byteplus/parameters.py +51 -0
  140. celeste_ai-0.3.3/packages/capabilities/video-generation/src/celeste_video_generation/providers/google/__init__.py +10 -0
  141. celeste_ai-0.3.3/packages/capabilities/video-generation/src/celeste_video_generation/providers/google/client.py +76 -0
  142. celeste_ai-0.3.3/packages/capabilities/video-generation/src/celeste_video_generation/providers/google/models.py +78 -0
  143. celeste_ai-0.3.3/packages/capabilities/video-generation/src/celeste_video_generation/providers/google/parameters.py +59 -0
  144. celeste_ai-0.3.3/packages/capabilities/video-generation/src/celeste_video_generation/providers/openai/__init__.py +10 -0
  145. celeste_ai-0.3.3/packages/capabilities/video-generation/src/celeste_video_generation/providers/openai/client.py +140 -0
  146. celeste_ai-0.3.3/packages/capabilities/video-generation/src/celeste_video_generation/providers/openai/models.py +46 -0
  147. celeste_ai-0.3.3/packages/capabilities/video-generation/src/celeste_video_generation/providers/openai/parameters.py +78 -0
  148. celeste_ai-0.3.3/packages/capabilities/video-generation/src/celeste_video_generation/py.typed +1 -0
  149. celeste_ai-0.3.3/packages/capabilities/video-generation/tests/integration_tests/test_video_generation/__init__.py +1 -0
  150. celeste_ai-0.3.3/packages/capabilities/video-generation/tests/integration_tests/test_video_generation/test_generate.py +65 -0
  151. celeste_ai-0.3.3/packages/providers/anthropic/pyproject.toml +18 -0
  152. celeste_ai-0.3.3/packages/providers/anthropic/src/celeste_anthropic/__init__.py +3 -0
  153. celeste_ai-0.3.3/packages/providers/anthropic/src/celeste_anthropic/messages/__init__.py +1 -0
  154. celeste_ai-0.3.3/packages/providers/anthropic/src/celeste_anthropic/messages/client.py +154 -0
  155. celeste_ai-0.3.3/packages/providers/anthropic/src/celeste_anthropic/messages/config.py +42 -0
  156. celeste_ai-0.3.3/packages/providers/anthropic/src/celeste_anthropic/messages/parameters.py +205 -0
  157. celeste_ai-0.3.3/packages/providers/anthropic/src/celeste_anthropic/messages/streaming.py +76 -0
  158. celeste_ai-0.3.3/packages/providers/bfl/pyproject.toml +18 -0
  159. celeste_ai-0.3.3/packages/providers/bfl/src/celeste_bfl/__init__.py +1 -0
  160. celeste_ai-0.3.3/packages/providers/bfl/src/celeste_bfl/images/__init__.py +1 -0
  161. celeste_ai-0.3.3/packages/providers/bfl/src/celeste_bfl/images/client.py +151 -0
  162. celeste_ai-0.3.3/packages/providers/bfl/src/celeste_bfl/images/config.py +16 -0
  163. celeste_ai-0.3.3/packages/providers/bfl/src/celeste_bfl/images/parameters.py +161 -0
  164. celeste_ai-0.3.3/packages/providers/bfl/src/celeste_bfl/images/utils.py +27 -0
  165. celeste_ai-0.3.3/packages/providers/byteplus/pyproject.toml +18 -0
  166. celeste_ai-0.3.3/packages/providers/byteplus/src/celeste_byteplus/__init__.py +1 -0
  167. celeste_ai-0.3.3/packages/providers/byteplus/src/celeste_byteplus/images/__init__.py +1 -0
  168. celeste_ai-0.3.3/packages/providers/byteplus/src/celeste_byteplus/images/client.py +128 -0
  169. celeste_ai-0.3.3/packages/providers/byteplus/src/celeste_byteplus/images/config.py +12 -0
  170. celeste_ai-0.3.3/packages/providers/byteplus/src/celeste_byteplus/images/parameters.py +45 -0
  171. celeste_ai-0.3.3/packages/providers/byteplus/src/celeste_byteplus/images/streaming.py +116 -0
  172. celeste_ai-0.3.3/packages/providers/byteplus/src/celeste_byteplus/py.typed +0 -0
  173. celeste_ai-0.3.3/packages/providers/byteplus/src/celeste_byteplus/videos/__init__.py +1 -0
  174. celeste_ai-0.3.3/packages/providers/byteplus/src/celeste_byteplus/videos/client.py +138 -0
  175. celeste_ai-0.3.3/packages/providers/byteplus/src/celeste_byteplus/videos/config.py +22 -0
  176. celeste_ai-0.3.3/packages/providers/byteplus/src/celeste_byteplus/videos/parameters.py +179 -0
  177. celeste_ai-0.3.3/packages/providers/cohere/pyproject.toml +18 -0
  178. celeste_ai-0.3.3/packages/providers/cohere/src/celeste_cohere/__init__.py +3 -0
  179. celeste_ai-0.3.3/packages/providers/cohere/src/celeste_cohere/chat/__init__.py +1 -0
  180. celeste_ai-0.3.3/packages/providers/cohere/src/celeste_cohere/chat/client.py +120 -0
  181. celeste_ai-0.3.3/packages/providers/cohere/src/celeste_cohere/chat/config.py +12 -0
  182. celeste_ai-0.3.3/packages/providers/cohere/src/celeste_cohere/chat/parameters.py +147 -0
  183. celeste_ai-0.3.3/packages/providers/cohere/src/celeste_cohere/chat/streaming.py +89 -0
  184. celeste_ai-0.3.3/packages/providers/cohere/src/celeste_cohere/py.typed +0 -0
  185. celeste_ai-0.3.3/packages/providers/elevenlabs/pyproject.toml +18 -0
  186. celeste_ai-0.3.3/packages/providers/elevenlabs/src/celeste_elevenlabs/__init__.py +3 -0
  187. celeste_ai-0.3.3/packages/providers/elevenlabs/src/celeste_elevenlabs/py.typed +0 -0
  188. celeste_ai-0.3.3/packages/providers/elevenlabs/src/celeste_elevenlabs/text_to_speech/__init__.py +1 -0
  189. celeste_ai-0.3.3/packages/providers/elevenlabs/src/celeste_elevenlabs/text_to_speech/client.py +168 -0
  190. celeste_ai-0.3.3/packages/providers/elevenlabs/src/celeste_elevenlabs/text_to_speech/config.py +17 -0
  191. celeste_ai-0.3.3/packages/providers/elevenlabs/src/celeste_elevenlabs/text_to_speech/parameters.py +96 -0
  192. celeste_ai-0.3.3/packages/providers/google/pyproject.toml +21 -0
  193. celeste_ai-0.3.3/packages/providers/google/src/celeste_google/__init__.py +12 -0
  194. celeste_ai-0.3.3/packages/providers/google/src/celeste_google/auth.py +51 -0
  195. celeste_ai-0.3.3/packages/providers/google/src/celeste_google/cloud_tts/__init__.py +1 -0
  196. celeste_ai-0.3.3/packages/providers/google/src/celeste_google/cloud_tts/client.py +82 -0
  197. celeste_ai-0.3.3/packages/providers/google/src/celeste_google/cloud_tts/config.py +16 -0
  198. celeste_ai-0.3.3/packages/providers/google/src/celeste_google/cloud_tts/parameters.py +105 -0
  199. celeste_ai-0.3.3/packages/providers/google/src/celeste_google/generate_content/__init__.py +1 -0
  200. celeste_ai-0.3.3/packages/providers/google/src/celeste_google/generate_content/client.py +125 -0
  201. celeste_ai-0.3.3/packages/providers/google/src/celeste_google/generate_content/config.py +23 -0
  202. celeste_ai-0.3.3/packages/providers/google/src/celeste_google/generate_content/parameters.py +310 -0
  203. celeste_ai-0.3.3/packages/providers/google/src/celeste_google/generate_content/streaming.py +54 -0
  204. celeste_ai-0.3.3/packages/providers/google/src/celeste_google/imagen/__init__.py +1 -0
  205. celeste_ai-0.3.3/packages/providers/google/src/celeste_google/imagen/client.py +97 -0
  206. celeste_ai-0.3.3/packages/providers/google/src/celeste_google/imagen/config.py +12 -0
  207. celeste_ai-0.3.3/packages/providers/google/src/celeste_google/imagen/parameters.py +67 -0
  208. celeste_ai-0.3.3/packages/providers/google/src/celeste_google/py.typed +0 -0
  209. celeste_ai-0.3.3/packages/providers/google/src/celeste_google/veo/__init__.py +1 -0
  210. celeste_ai-0.3.3/packages/providers/google/src/celeste_google/veo/client.py +157 -0
  211. celeste_ai-0.3.3/packages/providers/google/src/celeste_google/veo/config.py +20 -0
  212. celeste_ai-0.3.3/packages/providers/google/src/celeste_google/veo/parameters.py +195 -0
  213. celeste_ai-0.3.3/packages/providers/gradium/pyproject.toml +18 -0
  214. celeste_ai-0.3.3/packages/providers/gradium/src/celeste_gradium/__init__.py +3 -0
  215. celeste_ai-0.3.3/packages/providers/gradium/src/celeste_gradium/py.typed +1 -0
  216. celeste_ai-0.3.3/packages/providers/gradium/src/celeste_gradium/text_to_speech/__init__.py +1 -0
  217. celeste_ai-0.3.3/packages/providers/gradium/src/celeste_gradium/text_to_speech/client.py +150 -0
  218. celeste_ai-0.3.3/packages/providers/gradium/src/celeste_gradium/text_to_speech/config.py +15 -0
  219. celeste_ai-0.3.3/packages/providers/gradium/src/celeste_gradium/text_to_speech/parameters.py +67 -0
  220. celeste_ai-0.3.3/packages/providers/mistral/pyproject.toml +18 -0
  221. celeste_ai-0.3.3/packages/providers/mistral/src/celeste_mistral/__init__.py +1 -0
  222. celeste_ai-0.3.3/packages/providers/mistral/src/celeste_mistral/chat/__init__.py +1 -0
  223. celeste_ai-0.3.3/packages/providers/mistral/src/celeste_mistral/chat/client.py +115 -0
  224. celeste_ai-0.3.3/packages/providers/mistral/src/celeste_mistral/chat/config.py +52 -0
  225. celeste_ai-0.3.3/packages/providers/mistral/src/celeste_mistral/chat/parameters.py +114 -0
  226. celeste_ai-0.3.3/packages/providers/mistral/src/celeste_mistral/chat/streaming.py +67 -0
  227. celeste_ai-0.3.3/packages/providers/mistral/src/celeste_mistral/py.typed +0 -0
  228. celeste_ai-0.3.3/packages/providers/openai/pyproject.toml +35 -0
  229. celeste_ai-0.3.3/packages/providers/openai/src/celeste_openai/__init__.py +1 -0
  230. celeste_ai-0.3.3/packages/providers/openai/src/celeste_openai/audio/__init__.py +1 -0
  231. celeste_ai-0.3.3/packages/providers/openai/src/celeste_openai/audio/client.py +84 -0
  232. celeste_ai-0.3.3/packages/providers/openai/src/celeste_openai/audio/config.py +14 -0
  233. celeste_ai-0.3.3/packages/providers/openai/src/celeste_openai/audio/parameters.py +106 -0
  234. celeste_ai-0.3.3/packages/providers/openai/src/celeste_openai/images/__init__.py +1 -0
  235. celeste_ai-0.3.3/packages/providers/openai/src/celeste_openai/images/client.py +135 -0
  236. celeste_ai-0.3.3/packages/providers/openai/src/celeste_openai/images/config.py +14 -0
  237. celeste_ai-0.3.3/packages/providers/openai/src/celeste_openai/images/parameters.py +162 -0
  238. celeste_ai-0.3.3/packages/providers/openai/src/celeste_openai/images/streaming.py +89 -0
  239. celeste_ai-0.3.3/packages/providers/openai/src/celeste_openai/py.typed +0 -0
  240. celeste_ai-0.3.3/packages/providers/openai/src/celeste_openai/responses/__init__.py +1 -0
  241. celeste_ai-0.3.3/packages/providers/openai/src/celeste_openai/responses/client.py +133 -0
  242. celeste_ai-0.3.3/packages/providers/openai/src/celeste_openai/responses/config.py +12 -0
  243. celeste_ai-0.3.3/packages/providers/openai/src/celeste_openai/responses/parameters.py +185 -0
  244. celeste_ai-0.3.3/packages/providers/openai/src/celeste_openai/responses/streaming.py +68 -0
  245. celeste_ai-0.3.3/packages/providers/openai/src/celeste_openai/videos/__init__.py +1 -0
  246. celeste_ai-0.3.3/packages/providers/openai/src/celeste_openai/videos/client.py +186 -0
  247. celeste_ai-0.3.3/packages/providers/openai/src/celeste_openai/videos/config.py +21 -0
  248. celeste_ai-0.3.3/packages/providers/openai/src/celeste_openai/videos/parameters.py +71 -0
  249. celeste_ai-0.3.3/packages/providers/xai/pyproject.toml +18 -0
  250. celeste_ai-0.3.3/packages/providers/xai/src/celeste_xai/__init__.py +1 -0
  251. celeste_ai-0.3.3/packages/providers/xai/src/celeste_xai/py.typed +0 -0
  252. celeste_ai-0.3.3/packages/providers/xai/src/celeste_xai/responses/__init__.py +1 -0
  253. celeste_ai-0.3.3/packages/providers/xai/src/celeste_xai/responses/client.py +128 -0
  254. celeste_ai-0.3.3/packages/providers/xai/src/celeste_xai/responses/config.py +12 -0
  255. celeste_ai-0.3.3/packages/providers/xai/src/celeste_xai/responses/parameters.py +206 -0
  256. celeste_ai-0.3.3/packages/providers/xai/src/celeste_xai/responses/streaming.py +71 -0
  257. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/pyproject.toml +28 -24
  258. celeste_ai-0.3.3/src/__init__.py +0 -0
  259. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/src/celeste/__init__.py +33 -7
  260. celeste_ai-0.3.3/src/celeste/auth.py +80 -0
  261. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/src/celeste/client.py +90 -13
  262. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/src/celeste/constraints.py +90 -8
  263. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/src/celeste/core.py +28 -2
  264. celeste_ai-0.3.3/src/celeste/credentials.py +179 -0
  265. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/src/celeste/exceptions.py +13 -0
  266. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/src/celeste/http.py +37 -1
  267. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/src/celeste/io.py +3 -2
  268. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/src/celeste/parameters.py +4 -1
  269. celeste_ai-0.3.3/src/celeste/py.typed +1 -0
  270. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/src/celeste/registry.py +20 -0
  271. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/src/celeste/streaming.py +3 -2
  272. celeste_ai-0.3.3/src/celeste/structured_outputs.py +90 -0
  273. celeste_ai-0.3.3/src/celeste/types.py +11 -0
  274. celeste_ai-0.3.3/src/celeste/utils.py +35 -0
  275. celeste_ai-0.3.3/src/celeste/websocket.py +134 -0
  276. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/tests/unit_tests/test_client.py +18 -12
  277. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/tests/unit_tests/test_constraints.py +256 -16
  278. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/tests/unit_tests/test_http.py +4 -3
  279. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/tests/unit_tests/test_parameters.py +5 -2
  280. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/tests/unit_tests/test_streaming.py +22 -7
  281. celeste_ai-0.3.3/tests/unit_tests/test_structured_outputs.py +265 -0
  282. celeste_ai-0.2.4/LICENSE +0 -201
  283. celeste_ai-0.2.4/README.md +0 -134
  284. celeste_ai-0.2.4/packages/image-generation/src/celeste_image_generation/parameters.py +0 -23
  285. celeste_ai-0.2.4/packages/image-generation/src/celeste_image_generation/providers/bytedance/__init__.py +0 -6
  286. celeste_ai-0.2.4/packages/image-generation/src/celeste_image_generation/providers/bytedance/client.py +0 -156
  287. celeste_ai-0.2.4/packages/image-generation/src/celeste_image_generation/providers/bytedance/config.py +0 -10
  288. celeste_ai-0.2.4/packages/image-generation/src/celeste_image_generation/providers/bytedance/parameters.py +0 -101
  289. celeste_ai-0.2.4/packages/image-generation/src/celeste_image_generation/providers/bytedance/streaming.py +0 -67
  290. celeste_ai-0.2.4/packages/image-generation/src/celeste_image_generation/providers/google/__init__.py +0 -6
  291. celeste_ai-0.2.4/packages/image-generation/src/celeste_image_generation/providers/google/client.py +0 -143
  292. celeste_ai-0.2.4/packages/image-generation/src/celeste_image_generation/providers/google/config.py +0 -10
  293. celeste_ai-0.2.4/packages/image-generation/src/celeste_image_generation/providers/google/gemini_api.py +0 -82
  294. celeste_ai-0.2.4/packages/image-generation/src/celeste_image_generation/providers/google/imagen_api.py +0 -67
  295. celeste_ai-0.2.4/packages/image-generation/src/celeste_image_generation/providers/google/parameters.py +0 -67
  296. celeste_ai-0.2.4/packages/image-generation/src/celeste_image_generation/providers/openai/client.py +0 -138
  297. celeste_ai-0.2.4/packages/image-generation/src/celeste_image_generation/providers/openai/config.py +0 -10
  298. celeste_ai-0.2.4/packages/image-generation/src/celeste_image_generation/providers/openai/parameters.py +0 -118
  299. celeste_ai-0.2.4/packages/image-generation/src/celeste_image_generation/providers/openai/streaming.py +0 -76
  300. celeste_ai-0.2.4/packages/image-generation/tests/integration_tests/test_image_generation/__init__.py +0 -1
  301. celeste_ai-0.2.4/packages/text-generation/src/celeste_text_generation/providers/anthropic/client.py +0 -139
  302. celeste_ai-0.2.4/packages/text-generation/src/celeste_text_generation/providers/anthropic/config.py +0 -14
  303. celeste_ai-0.2.4/packages/text-generation/src/celeste_text_generation/providers/anthropic/parameters.py +0 -289
  304. celeste_ai-0.2.4/packages/text-generation/src/celeste_text_generation/providers/anthropic/streaming.py +0 -343
  305. celeste_ai-0.2.4/packages/text-generation/src/celeste_text_generation/providers/cohere/client.py +0 -134
  306. celeste_ai-0.2.4/packages/text-generation/src/celeste_text_generation/providers/cohere/config.py +0 -11
  307. celeste_ai-0.2.4/packages/text-generation/src/celeste_text_generation/providers/cohere/parameters.py +0 -238
  308. celeste_ai-0.2.4/packages/text-generation/src/celeste_text_generation/providers/cohere/streaming.py +0 -154
  309. celeste_ai-0.2.4/packages/text-generation/src/celeste_text_generation/providers/google/client.py +0 -138
  310. celeste_ai-0.2.4/packages/text-generation/src/celeste_text_generation/providers/google/config.py +0 -10
  311. celeste_ai-0.2.4/packages/text-generation/src/celeste_text_generation/providers/google/parameters.py +0 -227
  312. celeste_ai-0.2.4/packages/text-generation/src/celeste_text_generation/providers/google/streaming.py +0 -164
  313. celeste_ai-0.2.4/packages/text-generation/src/celeste_text_generation/providers/mistral/client.py +0 -129
  314. celeste_ai-0.2.4/packages/text-generation/src/celeste_text_generation/providers/mistral/config.py +0 -10
  315. celeste_ai-0.2.4/packages/text-generation/src/celeste_text_generation/providers/mistral/parameters.py +0 -218
  316. celeste_ai-0.2.4/packages/text-generation/src/celeste_text_generation/providers/mistral/streaming.py +0 -134
  317. celeste_ai-0.2.4/packages/text-generation/src/celeste_text_generation/providers/openai/client.py +0 -145
  318. celeste_ai-0.2.4/packages/text-generation/src/celeste_text_generation/providers/openai/config.py +0 -10
  319. celeste_ai-0.2.4/packages/text-generation/src/celeste_text_generation/providers/openai/parameters.py +0 -222
  320. celeste_ai-0.2.4/packages/text-generation/src/celeste_text_generation/providers/openai/streaming.py +0 -108
  321. celeste_ai-0.2.4/packages/text-generation/tests/integration_tests/test_text_generation/__init__.py +0 -1
  322. celeste_ai-0.2.4/src/celeste/credentials.py +0 -109
  323. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/.github/actions/setup-python-uv/action.yml +0 -0
  324. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/.github/workflows/claude-code-review.yml +0 -0
  325. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/.github/workflows/claude.yml +0 -0
  326. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/.pre-commit-config.yaml +0 -0
  327. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/logo.svg +0 -0
  328. {celeste_ai-0.2.4/packages → celeste_ai-0.3.3/packages/capabilities}/image-generation/src/celeste_image_generation/py.typed +0 -0
  329. {celeste_ai-0.2.4/packages/text-generation/src/celeste_text_generation → celeste_ai-0.3.3/packages/capabilities/speech-generation/src/celeste_speech_generation}/py.typed +0 -0
  330. {celeste_ai-0.2.4/packages/image-generation/tests/unit_tests → celeste_ai-0.3.3/packages/capabilities/speech-generation/tests/integration_tests}/__init__.py +0 -0
  331. {celeste_ai-0.2.4/src/celeste → celeste_ai-0.3.3/packages/capabilities/text-generation/src/celeste_text_generation}/py.typed +0 -0
  332. /celeste_ai-0.2.4/packages/image-generation/tests/unit_tests/providers/google/__init__.py → /celeste_ai-0.3.3/packages/providers/anthropic/src/celeste_anthropic/py.typed +0 -0
  333. /celeste_ai-0.2.4/src/__init__.py → /celeste_ai-0.3.3/packages/providers/bfl/src/celeste_bfl/py.typed +0 -0
  334. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/src/celeste/artifacts.py +0 -0
  335. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/src/celeste/mime_types.py +0 -0
  336. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/src/celeste/models.py +0 -0
  337. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/tests/unit_tests/test_artifacts.py +0 -0
  338. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/tests/unit_tests/test_core.py +0 -0
  339. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/tests/unit_tests/test_credentials.py +0 -0
  340. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/tests/unit_tests/test_exceptions.py +0 -0
  341. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/tests/unit_tests/test_init.py +0 -0
  342. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/tests/unit_tests/test_mime_types.py +0 -0
  343. {celeste_ai-0.2.4 → celeste_ai-0.3.3}/tests/unit_tests/test_models.py +0 -0
@@ -7,6 +7,9 @@ OPENAI_API_KEY=your-openai-api-key-here
7
7
  # Anthropic
8
8
  ANTHROPIC_API_KEY=your-anthropic-api-key-here
9
9
 
10
+ # BFL (Black Forest Labs)
11
+ BFL_API_KEY=your-bfl-api-key-here
12
+
10
13
  # Google
11
14
  GOOGLE_API_KEY=your-google-api-key-here
12
15
 
@@ -36,3 +39,6 @@ TOPAZLABS_API_KEY=your-topazlabs-api-key-here
36
39
 
37
40
  # Perplexity
38
41
  PERPLEXITY_API_KEY=your-perplexity-api-key-here
42
+
43
+ # Gradium
44
+ GRADIUM_API_KEY=your-gradium-api-key-here
@@ -64,7 +64,7 @@ jobs:
64
64
  python-version: ${{ inputs.python-version || '3.12' }}
65
65
  - run: |
66
66
  if [ -d "packages" ]; then
67
- uv run mypy -p celeste && uv run mypy tests/ && uv run mypy packages/
67
+ uv run mypy -p celeste && uv run mypy tests/ && uv run mypy packages/capabilities/image-generation packages/capabilities/text-generation packages/capabilities/video-generation packages/capabilities/speech-generation
68
68
  else
69
69
  uv run mypy -p celeste && uv run mypy tests/
70
70
  fi
@@ -105,7 +105,7 @@ jobs:
105
105
  - uses: ./.github/actions/setup-python-uv
106
106
  with:
107
107
  python-version: ${{ matrix.python-version }}
108
- - run: uv run pytest tests/unit_tests -v --cov=celeste --cov-report=term-missing --cov-report=xml --cov-report=html --cov-fail-under=90
108
+ - run: uv run pytest tests/unit_tests -v --cov=celeste --cov-report=term-missing --cov-report=xml --cov-report=html --cov-fail-under=80
109
109
  - uses: codecov/codecov-action@v4
110
110
  if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.12'
111
111
  with:
@@ -41,28 +41,124 @@ jobs:
41
41
  uses: ./.github/workflows/ci.yml
42
42
  secrets: inherit
43
43
 
44
- integration-test:
45
- needs: [validate-release, run-ci]
44
+ detect-changes:
45
+ needs: run-ci
46
46
  runs-on: ubuntu-latest
47
+ outputs:
48
+ packages: ${{ steps.build-matrix.outputs.packages }}
49
+ has-changes: ${{ steps.build-matrix.outputs.has-changes }}
50
+ steps:
51
+ - uses: actions/checkout@v4
52
+ with:
53
+ fetch-depth: 0
54
+ - id: get-base
55
+ run: |
56
+ # Get previous tag to compare against (tag pushes don't have github.event.before)
57
+ PREVIOUS_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")
58
+ if [ -z "$PREVIOUS_TAG" ]; then
59
+ echo "base=" >> $GITHUB_OUTPUT
60
+ echo "run-all=true" >> $GITHUB_OUTPUT
61
+ else
62
+ echo "base=$PREVIOUS_TAG" >> $GITHUB_OUTPUT
63
+ echo "run-all=false" >> $GITHUB_OUTPUT
64
+ fi
65
+ - uses: dorny/paths-filter@v3
66
+ id: filter
67
+ if: steps.get-base.outputs.run-all != 'true'
68
+ with:
69
+ base: ${{ steps.get-base.outputs.base }}
70
+ filters: |
71
+ text-generation:
72
+ - 'packages/capabilities/text-generation/**'
73
+ - '!**/pyproject.toml'
74
+ image-generation:
75
+ - 'packages/capabilities/image-generation/**'
76
+ - '!**/pyproject.toml'
77
+ video-generation:
78
+ - 'packages/capabilities/video-generation/**'
79
+ - '!**/pyproject.toml'
80
+ speech-generation:
81
+ - 'packages/capabilities/speech-generation/**'
82
+ - '!**/pyproject.toml'
83
+ core:
84
+ - 'src/celeste/**'
85
+ - '!**/pyproject.toml'
86
+ - id: build-matrix
87
+ run: |
88
+ PACKAGES=()
89
+
90
+ # If first release or paths-filter was skipped, run all
91
+ if [[ "${{ steps.get-base.outputs.run-all }}" == "true" ]]; then
92
+ PACKAGES=("text-generation" "image-generation" "video-generation" "speech-generation")
93
+ else
94
+ CORE="${{ steps.filter.outputs.core }}"
95
+ if [[ "$CORE" == "true" || "${{ steps.filter.outputs.text-generation }}" == "true" ]]; then
96
+ PACKAGES+=("text-generation")
97
+ fi
98
+ if [[ "$CORE" == "true" || "${{ steps.filter.outputs.image-generation }}" == "true" ]]; then
99
+ PACKAGES+=("image-generation")
100
+ fi
101
+ if [[ "$CORE" == "true" || "${{ steps.filter.outputs.video-generation }}" == "true" ]]; then
102
+ PACKAGES+=("video-generation")
103
+ fi
104
+ if [[ "$CORE" == "true" || "${{ steps.filter.outputs.speech-generation }}" == "true" ]]; then
105
+ PACKAGES+=("speech-generation")
106
+ fi
107
+ fi
108
+
109
+ # Convert to JSON array
110
+ JSON=$(printf '%s\n' "${PACKAGES[@]}" | jq -R . | jq -s -c .)
111
+ echo "packages=$JSON" >> $GITHUB_OUTPUT
112
+
113
+ if [[ ${#PACKAGES[@]} -gt 0 ]]; then
114
+ echo "has-changes=true" >> $GITHUB_OUTPUT
115
+ else
116
+ echo "has-changes=false" >> $GITHUB_OUTPUT
117
+ fi
118
+
119
+ integration-tests:
120
+ needs: [validate-release, run-ci, detect-changes]
121
+ if: needs.detect-changes.outputs.has-changes == 'true'
122
+ runs-on: ubuntu-latest
123
+ timeout-minutes: 30
47
124
  environment:
48
125
  name: integration-tests
126
+ permissions:
127
+ contents: read
128
+ id-token: write
129
+ strategy:
130
+ fail-fast: false
131
+ matrix:
132
+ package: ${{ fromJSON(needs.detect-changes.outputs.packages) }}
49
133
  steps:
50
134
  - uses: actions/checkout@v4
135
+ - id: auth
136
+ uses: google-github-actions/auth@v2
51
137
  with:
52
- fetch-depth: 1
138
+ workload_identity_provider: ${{ secrets.GCP_WORKLOAD_IDENTITY_PROVIDER }}
139
+ service_account: ${{ secrets.GCP_SERVICE_ACCOUNT }}
53
140
  - uses: ./.github/actions/setup-python-uv
54
- - name: Run integration tests
141
+ - name: Run ${{ matrix.package }} integration tests
55
142
  env:
56
143
  OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
57
144
  ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
145
+ BFL_API_KEY: ${{ secrets.BFL_API_KEY }}
58
146
  GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
59
147
  MISTRAL_API_KEY: ${{ secrets.MISTRAL_API_KEY }}
60
148
  COHERE_API_KEY: ${{ secrets.COHERE_API_KEY }}
61
- BYTEDANCE_API_KEY: ${{ secrets.BYTEDANCE_API_KEY }}
62
- run: make integration-test
149
+ BYTEPLUS_API_KEY: ${{ secrets.BYTEPLUS_API_KEY }}
150
+ XAI_API_KEY: ${{ secrets.XAI_API_KEY }}
151
+ ELEVENLABS_API_KEY: ${{ secrets.ELEVENLABS_API_KEY }}
152
+ GRADIUM_API_KEY: ${{ secrets.GRADIUM_API_KEY }}
153
+ run: uv run pytest packages/capabilities/${{ matrix.package }}/tests/integration_tests/ -m integration -v
63
154
 
64
155
  build:
65
- needs: [validate-release, run-ci, integration-test]
156
+ needs: [validate-release, run-ci, detect-changes, integration-tests]
157
+ if: |
158
+ always() &&
159
+ needs.validate-release.result == 'success' &&
160
+ needs.run-ci.result == 'success' &&
161
+ (needs.integration-tests.result == 'success' || needs.integration-tests.result == 'skipped')
66
162
  runs-on: ubuntu-latest
67
163
  steps:
68
164
  - uses: actions/checkout@v4
@@ -157,3 +157,4 @@ uv.lock
157
157
 
158
158
  # Security reports
159
159
  bandit-report.json
160
+ mureka.md
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Kamil Benkirane
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -8,7 +8,8 @@ help:
8
8
  @echo " make format - Apply Ruff formatting"
9
9
  @echo " make typecheck - Run mypy type checking"
10
10
  @echo " make test - Run all tests (core + packages) with coverage"
11
- @echo " make integration-test - Run integration tests (requires API keys)"
11
+ @echo " make integration-test [capability] - Run integration tests (all or specific)"
12
+ @echo " (e.g., make integration-test image-intelligence)"
12
13
  @echo " make security - Run Bandit security scan"
13
14
  @echo " make ci - Run full CI/CD pipeline"
14
15
  @echo " make clean - Clean cache directories"
@@ -33,15 +34,22 @@ format:
33
34
 
34
35
  # Type checking (fail fast on any error)
35
36
  typecheck:
36
- @uv run mypy -p celeste && uv run mypy tests/ && uv run mypy packages/
37
+ @uv run mypy -p celeste && uv run mypy tests/ && uv run mypy packages/*/*/src/
37
38
 
38
39
  # Testing
39
40
  test:
40
- uv run pytest tests/unit_tests packages/*/tests/unit_tests --cov=celeste --cov-report=term-missing --cov-fail-under=80 -v
41
+ uv run pytest tests/unit_tests --cov=celeste --cov-report=term-missing --cov-fail-under=80 -v
41
42
 
42
43
  # Integration testing (requires API keys)
44
+ # Usage: make integration-test [capability]
43
45
  integration-test:
44
- uv run pytest packages/*/tests/integration_tests/ -m integration -v --dist=worksteal -n auto
46
+ @cap="$(filter-out $@,$(MAKECMDGOALS))"; \
47
+ if [ -z "$$cap" ]; then cap="*"; fi; \
48
+ uv run pytest packages/capabilities/$$cap/tests/integration_tests/ -m integration -v --dist=worksteal -n auto
49
+
50
+ # Catch capability names as no-op targets
51
+ %:
52
+ @:
45
53
 
46
54
  # Security scanning (config reads from pyproject.toml)
47
55
  security:
@@ -1,18 +1,18 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: celeste-ai
3
- Version: 0.2.4
3
+ Version: 0.3.3
4
4
  Summary: Open source, type-safe primitives for multi-modal AI. All capabilities, all providers, one interface
5
5
  Project-URL: Homepage, https://withceleste.ai
6
6
  Project-URL: Documentation, https://withceleste.ai/docs
7
7
  Project-URL: Repository, https://github.com/withceleste/celeste-python
8
8
  Project-URL: Issues, https://github.com/withceleste/celeste-python/issues
9
9
  Author-email: Kamilbenkirane <kamil@withceleste.ai>
10
- License: Apache-2.0
10
+ License: MIT
11
11
  License-File: LICENSE
12
- Keywords: ai,anthropic,claude,embeddings,gemini,image-generation,multimodal,openai,sdk,text-generation,video-generation
12
+ Keywords: ai,anthropic,claude,embeddings,gemini,image-generation,multimodal,openai,sdk,speech-generation,text-generation,video-generation
13
13
  Classifier: Development Status :: 3 - Alpha
14
14
  Classifier: Intended Audience :: Developers
15
- Classifier: License :: OSI Approved :: Apache Software License
15
+ Classifier: License :: OSI Approved :: MIT License
16
16
  Classifier: Operating System :: OS Independent
17
17
  Classifier: Programming Language :: Python :: 3
18
18
  Classifier: Programming Language :: Python :: 3.12
@@ -25,19 +25,20 @@ Requires-Dist: httpx>=0.27.0
25
25
  Requires-Dist: pydantic-settings>=2.0
26
26
  Requires-Dist: pydantic>=2.0
27
27
  Requires-Dist: python-dotenv>=1.0.0
28
+ Requires-Dist: websockets>=13.0
28
29
  Provides-Extra: all
29
- Requires-Dist: celeste-image-generation>=0.2.1; extra == 'all'
30
- Requires-Dist: celeste-image-intelligence>=0.2.1; extra == 'all'
31
- Requires-Dist: celeste-speech-generation>=0.2.3; extra == 'all'
32
- Requires-Dist: celeste-text-generation>=0.2.1; extra == 'all'
30
+ Requires-Dist: celeste-image-generation>=0.3.3; extra == 'all'
31
+ Requires-Dist: celeste-speech-generation>=0.3.3; extra == 'all'
32
+ Requires-Dist: celeste-text-generation>=0.3.3; extra == 'all'
33
+ Requires-Dist: celeste-video-generation>=0.3.3; extra == 'all'
33
34
  Provides-Extra: image-generation
34
- Requires-Dist: celeste-image-generation>=0.2.1; extra == 'image-generation'
35
- Provides-Extra: image-intelligence
36
- Requires-Dist: celeste-image-intelligence>=0.2.1; extra == 'image-intelligence'
35
+ Requires-Dist: celeste-image-generation>=0.3.3; extra == 'image-generation'
37
36
  Provides-Extra: speech-generation
38
- Requires-Dist: celeste-speech-generation>=0.2.3; extra == 'speech-generation'
37
+ Requires-Dist: celeste-speech-generation>=0.3.3; extra == 'speech-generation'
39
38
  Provides-Extra: text-generation
40
- Requires-Dist: celeste-text-generation>=0.2.1; extra == 'text-generation'
39
+ Requires-Dist: celeste-text-generation>=0.3.3; extra == 'text-generation'
40
+ Provides-Extra: video-generation
41
+ Requires-Dist: celeste-video-generation>=0.3.3; extra == 'video-generation'
41
42
  Description-Content-Type: text/markdown
42
43
 
43
44
  <div align="center">
@@ -53,61 +54,100 @@ All capabilities. All providers. One interface.
53
54
  Primitives, not frameworks.
54
55
 
55
56
  [![Python](https://img.shields.io/badge/Python-3.12+-blue?style=for-the-badge)](https://www.python.org/)
56
- [![License](https://img.shields.io/badge/License-Apache_2.0-red?style=for-the-badge)](LICENSE)
57
+ [![License](https://img.shields.io/badge/License-MIT-yellow?style=for-the-badge)](LICENSE)
57
58
  [![PyPI](https://img.shields.io/badge/PyPI-celeste--ai-green?style=for-the-badge)](https://pypi.org/project/celeste-ai/)
58
59
 
60
+ <a href="https://github.com/withceleste/celeste-python" target="_parent">
61
+ <img alt="" src="https://img.shields.io/github/stars/withceleste/celeste-python.svg?style=social&label=Star" alt="GitHub stars" />
62
+ </a>
63
+ <a href="https://pypi.org/project/celeste-ai" target="_parent">
64
+ <img alt="" src="https://img.shields.io/pypi/dm/celeste-ai.svg" />
65
+ </a>
66
+ <a href="https://www.linkedin.com/company/withceleste" target="_parent">
67
+ <img src="https://img.shields.io/badge/LinkedIn-Follow%20%40withceleste-0077B5?style=social&logo=linkedin&logoColor=white" alt="Follow @withceleste on LinkedIn"/>
68
+ </a>
69
+
59
70
  [Quick Start](#-quick-start) • [Request Provider](https://github.com/withceleste/celeste-python/issues/new)
60
71
 
61
72
  </div>
62
73
 
63
- ---
74
+ # Celeste AI
64
75
 
65
- ## 🚀 Quick Start
66
76
 
77
+ Type-safe, capability-provider-agnostic primitives .
78
+
79
+ - **Unified Interface:** One API for OpenAI, Anthropic, Gemini, Mistral, and 14+ others.
80
+ - **True Multi-Modal:** Text, Image, Audio, Video, Embeddings, Search —all first-class citizens.
81
+ - **Type-Safe by Design:** Full Pydantic validation and IDE autocomplete.
82
+ - **Zero Lock-In:** Switch providers instantly by changing a single config string.
83
+ - **Primitives, Not Frameworks:** No agents, no chains, no magic. Just clean I/O.
84
+ - **Lightweight Architecture:** No vendor SDKs. Pure, fast HTTP.
85
+
86
+ ## 🚀 Quick Start
67
87
  ```python
68
- from celeste import create_client, Capability, Provider
88
+ from celeste import create_client
89
+
69
90
 
70
- # Create client
91
+ # "We need a catchy slogan for our new eco-friendly sneaker."
71
92
  client = create_client(
72
- capability=Capability.TEXT_GENERATION,
73
- provider=Provider.ANTHROPIC,
74
- api_key="your-api-key", # Or loads automatically from environment
93
+ capability="text-generation",
94
+ model="gpt-5"
75
95
  )
76
-
77
- # Generate
78
- response = await client.generate(prompt="Explain quantum computing")
79
- print(response.content)
80
- ```
81
-
82
- **Install:**
83
- ```bash
84
- uv add "celeste-ai[text-generation]" # Text only
85
- uv add "celeste-ai[image-generation]" # Image generation
86
- uv add "celeste-ai[all]" # Everything
96
+ slogan = await client.generate("Write a slogan for an eco-friendly sneaker.")
97
+ print(slogan.content)
87
98
  ```
88
99
 
89
- ---
90
-
91
- ## 🎨 Multi-Modal Example
92
100
 
101
+ ## 🎨 Multimodal example
93
102
  ```python
94
- # Same API, different modalities
95
- text_client = create_client(Capability.TEXT_GENERATION, Provider.ANTHROPIC)
96
- image_client = create_client(Capability.IMAGE_GENERATION, Provider.OPENAI)
97
- video_client = create_client(Capability.VIDEO_GENERATION, Provider.GOOGLE)
98
-
99
- text = await text_client.generate(prompt="Write a haiku about AI")
100
- image = await image_client.generate(prompt="A sunset over mountains")
101
- video = await video_client.generate(prompt="Waves crashing on a beach")
103
+ from pydantic import BaseModel, Field
104
+
105
+ class ProductCampaign(BaseModel):
106
+ visual_prompt: str
107
+ audio_script: str
108
+
109
+ # 2. Extract Campaign Assets (Anthropic)
110
+ # -----------------------------------------------------
111
+ extract_client = create_client(Capability.TEXT_GENERATION, model="claude-opus-4-1")
112
+ campaign_output = await extract_client.generate(
113
+ f"Create campaign assets for slogan: {slogan.content}",
114
+ output_schema=ProductCampaign
115
+ )
116
+ campaign = campaign_output.content
117
+
118
+ # 3. Generate Ad Visual (Flux)
119
+ # -----------------------------------------------------
120
+ image_client = create_client(Capability.IMAGE_GENERATION, model="flux-2-flex")
121
+ image_output = await image_client.generate(
122
+ campaign.visual_prompt,
123
+ aspect_ratio="1:1"
124
+ )
125
+ image = image_output.content
126
+
127
+ # 4. Generate Radio Spot (ElevenLabs)
128
+ # -----------------------------------------------------
129
+ speech_client = create_client(Capability.SPEECH_GENERATION, model="eleven_v3")
130
+ speech_output = await speech_client.generate(
131
+ campaign.audio_script,
132
+ voice="adam"
133
+ )
134
+ speech = speech_output.content
102
135
  ```
103
136
 
104
137
  No special cases. No separate libraries. **One consistent interface.**
105
138
 
106
- ---
107
139
 
108
140
 
141
+ ---
142
+
109
143
  <div align="center">
110
144
 
145
+ ## 15+ providers. Zero lock-in.
146
+
147
+
148
+
149
+
150
+
111
151
  <img src="https://www.google.com/favicon.ico" width="32" height="32" alt="Google" title="Google">
112
152
  <img src="https://www.anthropic.com/favicon.ico" width="32" height="32" alt="Anthropic" title="Anthropic">
113
153
  <img src="https://www.google.com/s2/favicons?domain=openai.com&sz=64" width="32" height="32" alt="OpenAI" title="OpenAI">
@@ -132,6 +172,84 @@ No special cases. No separate libraries. **One consistent interface.**
132
172
 
133
173
  ---
134
174
 
175
+ ## 🔄 Switch providers in one line
176
+
177
+
178
+ ```python
179
+ from pydantic import BaseModel
180
+
181
+ class User(BaseModel):
182
+ name: str
183
+ age: int
184
+
185
+ # Model IDs
186
+ anthropic_model_id = "claude-4-5-sonnet"
187
+ google_model_id = "gemini-2.5-flash"
188
+ ```
189
+
190
+ ```python
191
+ # ❌ Anthropic Way
192
+ from anthropic import Anthropic
193
+ import json
194
+
195
+ client = Anthropic()
196
+ response = client.messages.create(
197
+ model=anthropic_model_id,
198
+ messages=[
199
+ {"role": "user",
200
+ "content": "Extract user info: John is 30"}
201
+ ],
202
+ output_format={
203
+ "type": "json_schema",
204
+ "schema": User.model_json_schema()
205
+ }
206
+ )
207
+ user_data = json.loads(response.content[0].text)
208
+ ```
209
+
210
+ ```python
211
+ # ❌ Google Gemini Way
212
+ from google import genai
213
+ from google.genai import types
214
+
215
+ client = genai.Client()
216
+ response = await client.aio.models.generate_content(
217
+ model=gemini_model_id,
218
+ contents="Extract user info: John is 30",
219
+ config=types.GenerateContentConfig(
220
+ response_mime_type="application/json",
221
+ response_schema=User
222
+ )
223
+ )
224
+ user = response.parsed
225
+ ```
226
+
227
+ ```python
228
+ # ✅ Celeste Way
229
+ from celeste import create_client, Capability
230
+
231
+
232
+ client = create_client(
233
+ Capability.TEXT_GENERATION,
234
+ model=google_model_id # <--- Choose any model from any provider
235
+ )
236
+
237
+ response = await client.generate(
238
+ prompt="Extract user info: John is 30",
239
+ output_schema=User # <--- Unified parameter working across all providers
240
+ )
241
+ user = response.content # Already parsed as User instance
242
+ ```
243
+
244
+ ---
245
+ ## 🪶 Install what you need
246
+ ```bash
247
+ uv add "celeste-ai[text-generation]" # Text only
248
+ uv add "celeste-ai[image-generation]" # Image generation
249
+ uv add "celeste-ai[all]" # Everything
250
+ ```
251
+ ---
252
+
135
253
  ## 🔧 Type-Safe by Design
136
254
 
137
255
  ```python
@@ -163,7 +281,7 @@ We welcome contributions! See [CONTRIBUTING.md](CONTRIBUTING.md).
163
281
 
164
282
  ## 📄 License
165
283
 
166
- Apache 2.0 license – see [LICENSE](LICENSE) for details.
284
+ MIT license – see [LICENSE](LICENSE) for details.
167
285
 
168
286
  ---
169
287