osprey-framework 0.8.0__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 (186) hide show
  1. osprey_framework-0.8.0/LICENSE.txt +42 -0
  2. osprey_framework-0.8.0/PKG-INFO +192 -0
  3. osprey_framework-0.8.0/README.md +90 -0
  4. osprey_framework-0.8.0/pyproject.toml +329 -0
  5. osprey_framework-0.8.0/setup.cfg +4 -0
  6. osprey_framework-0.8.0/src/osprey/__init__.py +20 -0
  7. osprey_framework-0.8.0/src/osprey/approval/__init__.py +99 -0
  8. osprey_framework-0.8.0/src/osprey/approval/approval_manager.py +420 -0
  9. osprey_framework-0.8.0/src/osprey/approval/approval_system.py +658 -0
  10. osprey_framework-0.8.0/src/osprey/approval/config_models.py +439 -0
  11. osprey_framework-0.8.0/src/osprey/approval/evaluators.py +327 -0
  12. osprey_framework-0.8.0/src/osprey/base/__init__.py +65 -0
  13. osprey_framework-0.8.0/src/osprey/base/capability.py +514 -0
  14. osprey_framework-0.8.0/src/osprey/base/decorators.py +692 -0
  15. osprey_framework-0.8.0/src/osprey/base/errors.py +404 -0
  16. osprey_framework-0.8.0/src/osprey/base/examples.py +592 -0
  17. osprey_framework-0.8.0/src/osprey/base/nodes.py +345 -0
  18. osprey_framework-0.8.0/src/osprey/base/planning.py +279 -0
  19. osprey_framework-0.8.0/src/osprey/base/results.py +277 -0
  20. osprey_framework-0.8.0/src/osprey/capabilities/memory.py +998 -0
  21. osprey_framework-0.8.0/src/osprey/capabilities/python.py +655 -0
  22. osprey_framework-0.8.0/src/osprey/capabilities/time_range_parsing.py +757 -0
  23. osprey_framework-0.8.0/src/osprey/cli/__init__.py +20 -0
  24. osprey_framework-0.8.0/src/osprey/cli/chat_cmd.py +103 -0
  25. osprey_framework-0.8.0/src/osprey/cli/deploy_cmd.py +169 -0
  26. osprey_framework-0.8.0/src/osprey/cli/export_config_cmd.py +143 -0
  27. osprey_framework-0.8.0/src/osprey/cli/health_cmd.py +938 -0
  28. osprey_framework-0.8.0/src/osprey/cli/init_cmd.py +183 -0
  29. osprey_framework-0.8.0/src/osprey/cli/interactive_menu.py +1777 -0
  30. osprey_framework-0.8.0/src/osprey/cli/main.py +103 -0
  31. osprey_framework-0.8.0/src/osprey/cli/preview_styles.py +503 -0
  32. osprey_framework-0.8.0/src/osprey/cli/project_utils.py +90 -0
  33. osprey_framework-0.8.0/src/osprey/cli/styles.py +541 -0
  34. osprey_framework-0.8.0/src/osprey/cli/templates.py +477 -0
  35. osprey_framework-0.8.0/src/osprey/commands/__init__.py +62 -0
  36. osprey_framework-0.8.0/src/osprey/commands/categories.py +416 -0
  37. osprey_framework-0.8.0/src/osprey/commands/completer.py +158 -0
  38. osprey_framework-0.8.0/src/osprey/commands/registry.py +342 -0
  39. osprey_framework-0.8.0/src/osprey/commands/types.py +376 -0
  40. osprey_framework-0.8.0/src/osprey/context/__init__.py +25 -0
  41. osprey_framework-0.8.0/src/osprey/context/base.py +96 -0
  42. osprey_framework-0.8.0/src/osprey/context/context_manager.py +578 -0
  43. osprey_framework-0.8.0/src/osprey/context/loader.py +86 -0
  44. osprey_framework-0.8.0/src/osprey/data_management/__init__.py +42 -0
  45. osprey_framework-0.8.0/src/osprey/data_management/manager.py +296 -0
  46. osprey_framework-0.8.0/src/osprey/data_management/providers.py +188 -0
  47. osprey_framework-0.8.0/src/osprey/data_management/request.py +70 -0
  48. osprey_framework-0.8.0/src/osprey/deployment/__init__.py +24 -0
  49. osprey_framework-0.8.0/src/osprey/deployment/container_manager.py +1320 -0
  50. osprey_framework-0.8.0/src/osprey/deployment/loader.py +630 -0
  51. osprey_framework-0.8.0/src/osprey/graph/__init__.py +22 -0
  52. osprey_framework-0.8.0/src/osprey/graph/graph_builder.py +276 -0
  53. osprey_framework-0.8.0/src/osprey/infrastructure/clarify_node.py +229 -0
  54. osprey_framework-0.8.0/src/osprey/infrastructure/classification_node.py +515 -0
  55. osprey_framework-0.8.0/src/osprey/infrastructure/error_node.py +1030 -0
  56. osprey_framework-0.8.0/src/osprey/infrastructure/gateway.py +454 -0
  57. osprey_framework-0.8.0/src/osprey/infrastructure/orchestration_node.py +751 -0
  58. osprey_framework-0.8.0/src/osprey/infrastructure/respond_node.py +343 -0
  59. osprey_framework-0.8.0/src/osprey/infrastructure/router_node.py +232 -0
  60. osprey_framework-0.8.0/src/osprey/infrastructure/task_extraction_node.py +318 -0
  61. osprey_framework-0.8.0/src/osprey/interfaces/__init__.py +5 -0
  62. osprey_framework-0.8.0/src/osprey/interfaces/cli/__init__.py +9 -0
  63. osprey_framework-0.8.0/src/osprey/interfaces/cli/direct_conversation.py +1043 -0
  64. osprey_framework-0.8.0/src/osprey/models/__init__.py +33 -0
  65. osprey_framework-0.8.0/src/osprey/models/completion.py +374 -0
  66. osprey_framework-0.8.0/src/osprey/models/factory.py +206 -0
  67. osprey_framework-0.8.0/src/osprey/models/providers/__init__.py +10 -0
  68. osprey_framework-0.8.0/src/osprey/models/providers/anthropic.py +160 -0
  69. osprey_framework-0.8.0/src/osprey/models/providers/base.py +121 -0
  70. osprey_framework-0.8.0/src/osprey/models/providers/cborg.py +164 -0
  71. osprey_framework-0.8.0/src/osprey/models/providers/google.py +155 -0
  72. osprey_framework-0.8.0/src/osprey/models/providers/ollama.py +257 -0
  73. osprey_framework-0.8.0/src/osprey/models/providers/openai.py +246 -0
  74. osprey_framework-0.8.0/src/osprey/prompts/__init__.py +65 -0
  75. osprey_framework-0.8.0/src/osprey/prompts/base.py +610 -0
  76. osprey_framework-0.8.0/src/osprey/prompts/defaults/__init__.py +80 -0
  77. osprey_framework-0.8.0/src/osprey/prompts/defaults/clarification.py +96 -0
  78. osprey_framework-0.8.0/src/osprey/prompts/defaults/classification.py +87 -0
  79. osprey_framework-0.8.0/src/osprey/prompts/defaults/error_analysis.py +67 -0
  80. osprey_framework-0.8.0/src/osprey/prompts/defaults/memory_extraction.py +311 -0
  81. osprey_framework-0.8.0/src/osprey/prompts/defaults/orchestrator.py +243 -0
  82. osprey_framework-0.8.0/src/osprey/prompts/defaults/python.py +201 -0
  83. osprey_framework-0.8.0/src/osprey/prompts/defaults/response_generation.py +274 -0
  84. osprey_framework-0.8.0/src/osprey/prompts/defaults/task_extraction.py +313 -0
  85. osprey_framework-0.8.0/src/osprey/prompts/defaults/time_range_parsing.py +172 -0
  86. osprey_framework-0.8.0/src/osprey/prompts/loader.py +645 -0
  87. osprey_framework-0.8.0/src/osprey/registry/__init__.py +141 -0
  88. osprey_framework-0.8.0/src/osprey/registry/base.py +605 -0
  89. osprey_framework-0.8.0/src/osprey/registry/helpers.py +204 -0
  90. osprey_framework-0.8.0/src/osprey/registry/manager.py +2312 -0
  91. osprey_framework-0.8.0/src/osprey/registry/registry.py +447 -0
  92. osprey_framework-0.8.0/src/osprey/services/__init__.py +12 -0
  93. osprey_framework-0.8.0/src/osprey/services/memory_storage/__init__.py +62 -0
  94. osprey_framework-0.8.0/src/osprey/services/memory_storage/memory_provider.py +433 -0
  95. osprey_framework-0.8.0/src/osprey/services/memory_storage/models.py +91 -0
  96. osprey_framework-0.8.0/src/osprey/services/memory_storage/storage_manager.py +295 -0
  97. osprey_framework-0.8.0/src/osprey/services/python_executor/__init__.py +294 -0
  98. osprey_framework-0.8.0/src/osprey/services/python_executor/analyzer_node.py +459 -0
  99. osprey_framework-0.8.0/src/osprey/services/python_executor/approval_node.py +171 -0
  100. osprey_framework-0.8.0/src/osprey/services/python_executor/config.py +28 -0
  101. osprey_framework-0.8.0/src/osprey/services/python_executor/container_engine.py +887 -0
  102. osprey_framework-0.8.0/src/osprey/services/python_executor/exceptions.py +444 -0
  103. osprey_framework-0.8.0/src/osprey/services/python_executor/execution_control.py +280 -0
  104. osprey_framework-0.8.0/src/osprey/services/python_executor/execution_policy_analyzer.py +466 -0
  105. osprey_framework-0.8.0/src/osprey/services/python_executor/execution_wrapper.py +430 -0
  106. osprey_framework-0.8.0/src/osprey/services/python_executor/executor_node.py +668 -0
  107. osprey_framework-0.8.0/src/osprey/services/python_executor/generator_node.py +209 -0
  108. osprey_framework-0.8.0/src/osprey/services/python_executor/models.py +812 -0
  109. osprey_framework-0.8.0/src/osprey/services/python_executor/service.py +452 -0
  110. osprey_framework-0.8.0/src/osprey/services/python_executor/services.py +796 -0
  111. osprey_framework-0.8.0/src/osprey/state/__init__.py +121 -0
  112. osprey_framework-0.8.0/src/osprey/state/control.py +265 -0
  113. osprey_framework-0.8.0/src/osprey/state/execution.py +309 -0
  114. osprey_framework-0.8.0/src/osprey/state/messages.py +235 -0
  115. osprey_framework-0.8.0/src/osprey/state/session.py +131 -0
  116. osprey_framework-0.8.0/src/osprey/state/state.py +456 -0
  117. osprey_framework-0.8.0/src/osprey/state/state_manager.py +850 -0
  118. osprey_framework-0.8.0/src/osprey/templates/__init__.py +15 -0
  119. osprey_framework-0.8.0/src/osprey/templates/__pycache__/__init__.cpython-311.pyc +0 -0
  120. osprey_framework-0.8.0/src/osprey/templates/apps/__init__.py +20 -0
  121. osprey_framework-0.8.0/src/osprey/templates/apps/hello_world_weather/README.md.j2 +118 -0
  122. osprey_framework-0.8.0/src/osprey/templates/apps/hello_world_weather/__init__.py +2 -0
  123. osprey_framework-0.8.0/src/osprey/templates/apps/hello_world_weather/capabilities/__init__.py +86 -0
  124. osprey_framework-0.8.0/src/osprey/templates/apps/hello_world_weather/capabilities/current_weather.py.j2 +691 -0
  125. osprey_framework-0.8.0/src/osprey/templates/apps/hello_world_weather/context_classes.py.j2 +300 -0
  126. osprey_framework-0.8.0/src/osprey/templates/apps/hello_world_weather/mock_weather_api.py +349 -0
  127. osprey_framework-0.8.0/src/osprey/templates/apps/hello_world_weather/registry.py.j2 +145 -0
  128. osprey_framework-0.8.0/src/osprey/templates/apps/minimal/INTEGRATION_GUIDE.md +297 -0
  129. osprey_framework-0.8.0/src/osprey/templates/apps/minimal/README.md.j2 +529 -0
  130. osprey_framework-0.8.0/src/osprey/templates/apps/minimal/__init__.py +94 -0
  131. osprey_framework-0.8.0/src/osprey/templates/apps/minimal/capabilities/__init__.py +368 -0
  132. osprey_framework-0.8.0/src/osprey/templates/apps/minimal/capabilities/example_capability.py.j2 +452 -0
  133. osprey_framework-0.8.0/src/osprey/templates/apps/minimal/context_classes.py.j2 +433 -0
  134. osprey_framework-0.8.0/src/osprey/templates/apps/minimal/registry.py.j2 +411 -0
  135. osprey_framework-0.8.0/src/osprey/templates/apps/wind_turbine/README.md.j2 +69 -0
  136. osprey_framework-0.8.0/src/osprey/templates/apps/wind_turbine/__init__.py +2 -0
  137. osprey_framework-0.8.0/src/osprey/templates/apps/wind_turbine/capabilities/__init__.py +19 -0
  138. osprey_framework-0.8.0/src/osprey/templates/apps/wind_turbine/capabilities/knowledge_retrieval.py.j2 +218 -0
  139. osprey_framework-0.8.0/src/osprey/templates/apps/wind_turbine/capabilities/turbine_analysis.py.j2 +701 -0
  140. osprey_framework-0.8.0/src/osprey/templates/apps/wind_turbine/capabilities/turbine_data_archiver.py.j2 +235 -0
  141. osprey_framework-0.8.0/src/osprey/templates/apps/wind_turbine/capabilities/weather_data_retrieval.py.j2 +231 -0
  142. osprey_framework-0.8.0/src/osprey/templates/apps/wind_turbine/context_classes.py.j2 +171 -0
  143. osprey_framework-0.8.0/src/osprey/templates/apps/wind_turbine/data_sources/__init__.py +11 -0
  144. osprey_framework-0.8.0/src/osprey/templates/apps/wind_turbine/data_sources/knowledge_provider.py.j2 +252 -0
  145. osprey_framework-0.8.0/src/osprey/templates/apps/wind_turbine/framework_prompts/__init__.py +7 -0
  146. osprey_framework-0.8.0/src/osprey/templates/apps/wind_turbine/framework_prompts/response_generation.py.j2 +126 -0
  147. osprey_framework-0.8.0/src/osprey/templates/apps/wind_turbine/mock_apis.py +108 -0
  148. osprey_framework-0.8.0/src/osprey/templates/apps/wind_turbine/registry.py.j2 +134 -0
  149. osprey_framework-0.8.0/src/osprey/templates/project/README.md.j2 +45 -0
  150. osprey_framework-0.8.0/src/osprey/templates/project/config.yml.j2 +302 -0
  151. osprey_framework-0.8.0/src/osprey/templates/project/env.example.j2 +27 -0
  152. osprey_framework-0.8.0/src/osprey/templates/project/env.j2 +33 -0
  153. osprey_framework-0.8.0/src/osprey/templates/project/gitignore +46 -0
  154. osprey_framework-0.8.0/src/osprey/templates/project/pyproject.toml.j2 +35 -0
  155. osprey_framework-0.8.0/src/osprey/templates/project/requirements.txt +6 -0
  156. osprey_framework-0.8.0/src/osprey/templates/services/docker-compose.yml.j2 +4 -0
  157. osprey_framework-0.8.0/src/osprey/templates/services/jupyter/Dockerfile +10 -0
  158. osprey_framework-0.8.0/src/osprey/templates/services/jupyter/custom_start.sh +81 -0
  159. osprey_framework-0.8.0/src/osprey/templates/services/jupyter/docker-compose.yml.j2 +61 -0
  160. osprey_framework-0.8.0/src/osprey/templates/services/jupyter/python3-epics-readonly/kernel.json.j2 +21 -0
  161. osprey_framework-0.8.0/src/osprey/templates/services/jupyter/python3-epics-write/kernel.json.j2 +21 -0
  162. osprey_framework-0.8.0/src/osprey/templates/services/jupyter/startup_script.py +258 -0
  163. osprey_framework-0.8.0/src/osprey/templates/services/open-webui/ALS_assistant_logo.png +0 -0
  164. osprey_framework-0.8.0/src/osprey/templates/services/open-webui/Dockerfile +4 -0
  165. osprey_framework-0.8.0/src/osprey/templates/services/open-webui/custom.css +58 -0
  166. osprey_framework-0.8.0/src/osprey/templates/services/open-webui/docker-compose.yml.j2 +28 -0
  167. osprey_framework-0.8.0/src/osprey/templates/services/open-webui/functions/agent_context_button.py +934 -0
  168. osprey_framework-0.8.0/src/osprey/templates/services/open-webui/functions/execution_history_button.py +564 -0
  169. osprey_framework-0.8.0/src/osprey/templates/services/open-webui/functions/execution_plan_editor.py +2135 -0
  170. osprey_framework-0.8.0/src/osprey/templates/services/open-webui/functions/memory_button.py +832 -0
  171. osprey_framework-0.8.0/src/osprey/templates/services/open-webui/functions/shared/execution_plan_viewer.js +646 -0
  172. osprey_framework-0.8.0/src/osprey/templates/services/pipelines/__init__.py +5 -0
  173. osprey_framework-0.8.0/src/osprey/templates/services/pipelines/docker-compose.yml.j2 +54 -0
  174. osprey_framework-0.8.0/src/osprey/templates/services/pipelines/main.py +1298 -0
  175. osprey_framework-0.8.0/src/osprey/templates/services/pipelines/start.sh +55 -0
  176. osprey_framework-0.8.0/src/osprey/utils/__init__.py +20 -0
  177. osprey_framework-0.8.0/src/osprey/utils/config.py +828 -0
  178. osprey_framework-0.8.0/src/osprey/utils/log_filter.py +412 -0
  179. osprey_framework-0.8.0/src/osprey/utils/logger.py +299 -0
  180. osprey_framework-0.8.0/src/osprey/utils/streaming.py +167 -0
  181. osprey_framework-0.8.0/src/osprey_framework.egg-info/PKG-INFO +192 -0
  182. osprey_framework-0.8.0/src/osprey_framework.egg-info/SOURCES.txt +184 -0
  183. osprey_framework-0.8.0/src/osprey_framework.egg-info/dependency_links.txt +1 -0
  184. osprey_framework-0.8.0/src/osprey_framework.egg-info/entry_points.txt +5 -0
  185. osprey_framework-0.8.0/src/osprey_framework.egg-info/requires.txt +80 -0
  186. osprey_framework-0.8.0/src/osprey_framework.egg-info/top_level.txt +1 -0
@@ -0,0 +1,42 @@
1
+ Alpha Berkeley Framework (alpha berkeley) Copyright (c) 2025, The Regents of the University of California,
2
+ through Lawrence Berkeley National Laboratory (subject to receipt of
3
+ any required approvals from the U.S. Dept. of Energy). All rights reserved.
4
+
5
+ Redistribution and use in source and binary forms, with or without
6
+ modification, are permitted provided that the following conditions are met:
7
+
8
+ (1) Redistributions of source code must retain the above copyright notice,
9
+ this list of conditions and the following disclaimer.
10
+
11
+ (2) Redistributions in binary form must reproduce the above copyright
12
+ notice, this list of conditions and the following disclaimer in the
13
+ documentation and/or other materials provided with the distribution.
14
+
15
+ (3) Neither the name of the University of California, Lawrence Berkeley
16
+ National Laboratory, U.S. Dept. of Energy nor the names of its contributors
17
+ may be used to endorse or promote products derived from this software
18
+ without specific prior written permission.
19
+
20
+
21
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
25
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31
+ POSSIBILITY OF SUCH DAMAGE.
32
+
33
+ You are under no obligation whatsoever to provide any bug fixes, patches,
34
+ or upgrades to the features, functionality or performance of the source
35
+ code ("Enhancements") to anyone; however, if you choose to make your
36
+ Enhancements available either publicly, or directly to Lawrence Berkeley
37
+ National Laboratory, without imposing a separate written license agreement
38
+ for such Enhancements, then you hereby grant the following license: a
39
+ non-exclusive, royalty-free perpetual license to install, use, modify,
40
+ prepare derivative works, incorporate into other computer software,
41
+ distribute, and sublicense such enhancements or derivative works thereof,
42
+ in binary and source code form.
@@ -0,0 +1,192 @@
1
+ Metadata-Version: 2.4
2
+ Name: osprey-framework
3
+ Version: 0.8.0
4
+ Summary: An open-source, domain-agnostic, capability-based architecture for building intelligent agents
5
+ Author-email: Thorsten Hellert <thellert@lbl.gov>
6
+ Maintainer-email: Thorsten Hellert <thellert@lbl.gov>
7
+ License: BSD-3-Clause
8
+ Project-URL: Homepage, https://als-apg.github.io/osprey
9
+ Project-URL: Documentation, https://als-apg.github.io/osprey
10
+ Project-URL: Repository, https://github.com/als-apg/osprey
11
+ Project-URL: Paper, https://arxiv.org/abs/2508.15066
12
+ Project-URL: Issues, https://github.com/als-apg/osprey/issues
13
+ Project-URL: Changelog, https://github.com/als-apg/osprey/blob/main/CHANGELOG.md
14
+ Keywords: ai,agents,framework,scientific-computing,langgraph,epics,accelerator-physics,als,berkeley,agent-framework,capability-based,human-in-the-loop,container-orchestration
15
+ Classifier: Development Status :: 3 - Alpha
16
+ Classifier: Intended Audience :: Developers
17
+ Classifier: Intended Audience :: Science/Research
18
+ Classifier: License :: OSI Approved :: BSD License
19
+ Classifier: Operating System :: OS Independent
20
+ Classifier: Programming Language :: Python :: 3
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Topic :: Scientific/Engineering
24
+ Classifier: Topic :: Scientific/Engineering :: Physics
25
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
26
+ Classifier: Topic :: System :: Distributed Computing
27
+ Requires-Python: >=3.11
28
+ Description-Content-Type: text/markdown
29
+ License-File: LICENSE.txt
30
+ Requires-Dist: langgraph>=0.5.2
31
+ Requires-Dist: langchain-core>=0.3.68
32
+ Requires-Dist: langgraph-sdk<0.2.0,>=0.1.70
33
+ Requires-Dist: rich>=14.0.0
34
+ Requires-Dist: click>=8.1.0
35
+ Requires-Dist: questionary>=2.0.0
36
+ Requires-Dist: pydantic-ai>=0.2.11
37
+ Requires-Dist: python-dotenv>=1.1.0
38
+ Requires-Dist: PyYAML>=6.0.2
39
+ Requires-Dist: Jinja2>=3.1.6
40
+ Requires-Dist: requests>=2.32.3
41
+ Requires-Dist: podman>=5.4.0
42
+ Requires-Dist: podman-compose>=1.4.0
43
+ Requires-Dist: nbformat>=5.0.0
44
+ Requires-Dist: nbclient
45
+ Requires-Dist: openai
46
+ Requires-Dist: anthropic
47
+ Requires-Dist: google-generativeai
48
+ Requires-Dist: ollama>=0.5.1
49
+ Requires-Dist: websocket-client>=1.7.0
50
+ Requires-Dist: urllib3>=2.4.0
51
+ Requires-Dist: certifi>=2025.4.26
52
+ Requires-Dist: charset-normalizer>=3.4.2
53
+ Requires-Dist: idna>=3.10
54
+ Requires-Dist: MarkupSafe>=3.0.2
55
+ Provides-Extra: docs
56
+ Requires-Dist: sphinx>=8.0.0; extra == "docs"
57
+ Requires-Dist: pydata-sphinx-theme; extra == "docs"
58
+ Requires-Dist: myst-parser; extra == "docs"
59
+ Requires-Dist: sphinx-copybutton; extra == "docs"
60
+ Requires-Dist: sphinx-autobuild; extra == "docs"
61
+ Requires-Dist: sphinx-design; extra == "docs"
62
+ Requires-Dist: sphinxcontrib-mermaid; extra == "docs"
63
+ Requires-Dist: sphinxcontrib-jsmath>=1.0.1; extra == "docs"
64
+ Requires-Dist: graphviz; extra == "docs"
65
+ Provides-Extra: scientific
66
+ Requires-Dist: pandas>=2.2.3; extra == "scientific"
67
+ Requires-Dist: numpy>=2.2.6; extra == "scientific"
68
+ Requires-Dist: scipy>=1.15.3; extra == "scientific"
69
+ Requires-Dist: matplotlib>=3.10.3; extra == "scientific"
70
+ Requires-Dist: seaborn; extra == "scientific"
71
+ Requires-Dist: scikit-learn; extra == "scientific"
72
+ Requires-Dist: ipywidgets; extra == "scientific"
73
+ Provides-Extra: databases
74
+ Requires-Dist: pymongo; extra == "databases"
75
+ Requires-Dist: neo4j; extra == "databases"
76
+ Requires-Dist: qdrant-client; extra == "databases"
77
+ Provides-Extra: postgres
78
+ Requires-Dist: langgraph-checkpoint-postgres<3.0.0,>=2.0.22; extra == "postgres"
79
+ Requires-Dist: psycopg[pool]<4.0.0,>=3.1.0; extra == "postgres"
80
+ Requires-Dist: psycopg-pool<4.0.0,>=3.1.0; extra == "postgres"
81
+ Requires-Dist: langchain-postgres<0.1.0,>=0.0.12; extra == "postgres"
82
+ Provides-Extra: memory
83
+ Requires-Dist: mem0ai>=0.1.88; extra == "memory"
84
+ Requires-Dist: vecs>=0.4.5; extra == "memory"
85
+ Provides-Extra: dev
86
+ Requires-Dist: pytest; extra == "dev"
87
+ Requires-Dist: pytest-asyncio; extra == "dev"
88
+ Requires-Dist: pytest-vcr; extra == "dev"
89
+ Requires-Dist: vcrpy; extra == "dev"
90
+ Requires-Dist: black; extra == "dev"
91
+ Requires-Dist: isort; extra == "dev"
92
+ Requires-Dist: mypy; extra == "dev"
93
+ Requires-Dist: pre-commit; extra == "dev"
94
+ Requires-Dist: ruff; extra == "dev"
95
+ Provides-Extra: nlp
96
+ Requires-Dist: nltk>=3.8.1; extra == "nlp"
97
+ Provides-Extra: utils
98
+ Requires-Dist: unique-namer>=0.1.0; extra == "utils"
99
+ Provides-Extra: all
100
+ Requires-Dist: osprey-framework[databases,dev,docs,memory,nlp,postgres,scientific,utils]; extra == "all"
101
+ Dynamic: license-file
102
+
103
+ # Osprey Framework
104
+
105
+ > **🦅 Rebranded from Alpha Berkeley Framework**
106
+ > This project has been renamed to Osprey Framework. If you're upgrading from the Alpha Berkeley Framework, see the [migration guide](https://als-apg.github.io/osprey/getting-started/migration-guide.html).
107
+
108
+ > **🚧 Early Access Release**
109
+ > This is an early access version of the Osprey Framework. While the core functionality is stable and ready for experimentation, documentation and APIs may still evolve. We welcome feedback and contributions!
110
+
111
+ An open-source, domain-agnostic, capability-based architecture for building intelligent agents that can be adapted to any specific domain.
112
+
113
+ **📄 Research**
114
+ This work was presented as a contributed oral presentation at [ICALEPCS'25](https://indico.jacow.org/event/86/overview) and will be featured at the [Machine Learning and the Physical Sciences Workshop](https://ml4physicalsciences.github.io/2025/) at NeurIPS 2025.
115
+
116
+
117
+ ## 🚀 Quick Start
118
+
119
+ ```bash
120
+ # Install the framework
121
+ pip install osprey-framework
122
+
123
+ # Create a new project from a template
124
+ osprey init my-weather-agent --template hello_world_weather
125
+
126
+ # Navigate to your project
127
+ cd my-weather-agent
128
+
129
+ # Setup environment
130
+ cp .env.example .env
131
+ # Edit .env with your API keys
132
+
133
+ # Start the command line chat interface
134
+ osprey chat
135
+
136
+ # Or use the web interface at http://localhost:8080
137
+ ```
138
+
139
+
140
+ ## 📚 Documentation
141
+
142
+ **[📖 Read the Full Documentation →](https://als-apg.github.io/osprey)**
143
+
144
+
145
+ ## Key Features
146
+
147
+ - **Scalable Capability Management** - Efficiently scales to large sets of specialized agents
148
+ - **Structured Orchestration** - Converts freeform inputs into clear, executable plans
149
+ - **Modular Architecture** - Easily integrates new capabilities without disrupting workflows
150
+ - **Human-in-the-Loop Ready** - Transparent execution plans for inspection and debugging
151
+ - **Domain-Adaptable** - Designed for heterogeneous scientific infrastructure
152
+
153
+ ---
154
+
155
+ ## 📖 Citation
156
+
157
+ If you use the Alpha Berkeley Framework in your research or projects, please cite our [paper](https://arxiv.org/abs/2508.15066):
158
+
159
+ ```bibtex
160
+ @misc{hellert2025alphaberkeley,
161
+ title={Alpha Berkeley: A Scalable Framework for the Orchestration of Agentic Systems},
162
+ author={Thorsten Hellert and João Montenegro and Antonin Sulc},
163
+ year={2025},
164
+ eprint={2508.15066},
165
+ archivePrefix={arXiv},
166
+ primaryClass={cs.MA},
167
+ url={https://arxiv.org/abs/2508.15066},
168
+ }
169
+ ```
170
+
171
+ ---
172
+
173
+ *For detailed installation instructions, tutorials, and API reference, please visit our [complete documentation](https://als-apg.github.io/osprey).*
174
+
175
+ ---
176
+
177
+ **Copyright Notice**
178
+
179
+ Alpha Berkeley Framework (alpha berkeley) Copyright (c) 2025, The Regents of the University of California, through Lawrence Berkeley National Laboratory (subject to receipt of any required approvals from the U.S. Dept. of Energy). All rights reserved.
180
+
181
+ If you have questions about your rights to use or distribute this software,
182
+ please contact Berkeley Lab's Intellectual Property Office at
183
+ IPO@lbl.gov.
184
+
185
+ NOTICE. This Software was developed under funding from the U.S. Department
186
+ of Energy and the U.S. Government consequently retains certain rights. As
187
+ such, the U.S. Government has been granted for itself and others acting on
188
+ its behalf a paid-up, nonexclusive, irrevocable, worldwide license in the
189
+ Software to reproduce, distribute copies to the public, prepare derivative
190
+ works, and perform publicly and display publicly, and to permit others to do so.
191
+
192
+ ---
@@ -0,0 +1,90 @@
1
+ # Osprey Framework
2
+
3
+ > **🦅 Rebranded from Alpha Berkeley Framework**
4
+ > This project has been renamed to Osprey Framework. If you're upgrading from the Alpha Berkeley Framework, see the [migration guide](https://als-apg.github.io/osprey/getting-started/migration-guide.html).
5
+
6
+ > **🚧 Early Access Release**
7
+ > This is an early access version of the Osprey Framework. While the core functionality is stable and ready for experimentation, documentation and APIs may still evolve. We welcome feedback and contributions!
8
+
9
+ An open-source, domain-agnostic, capability-based architecture for building intelligent agents that can be adapted to any specific domain.
10
+
11
+ **📄 Research**
12
+ This work was presented as a contributed oral presentation at [ICALEPCS'25](https://indico.jacow.org/event/86/overview) and will be featured at the [Machine Learning and the Physical Sciences Workshop](https://ml4physicalsciences.github.io/2025/) at NeurIPS 2025.
13
+
14
+
15
+ ## 🚀 Quick Start
16
+
17
+ ```bash
18
+ # Install the framework
19
+ pip install osprey-framework
20
+
21
+ # Create a new project from a template
22
+ osprey init my-weather-agent --template hello_world_weather
23
+
24
+ # Navigate to your project
25
+ cd my-weather-agent
26
+
27
+ # Setup environment
28
+ cp .env.example .env
29
+ # Edit .env with your API keys
30
+
31
+ # Start the command line chat interface
32
+ osprey chat
33
+
34
+ # Or use the web interface at http://localhost:8080
35
+ ```
36
+
37
+
38
+ ## 📚 Documentation
39
+
40
+ **[📖 Read the Full Documentation →](https://als-apg.github.io/osprey)**
41
+
42
+
43
+ ## Key Features
44
+
45
+ - **Scalable Capability Management** - Efficiently scales to large sets of specialized agents
46
+ - **Structured Orchestration** - Converts freeform inputs into clear, executable plans
47
+ - **Modular Architecture** - Easily integrates new capabilities without disrupting workflows
48
+ - **Human-in-the-Loop Ready** - Transparent execution plans for inspection and debugging
49
+ - **Domain-Adaptable** - Designed for heterogeneous scientific infrastructure
50
+
51
+ ---
52
+
53
+ ## 📖 Citation
54
+
55
+ If you use the Alpha Berkeley Framework in your research or projects, please cite our [paper](https://arxiv.org/abs/2508.15066):
56
+
57
+ ```bibtex
58
+ @misc{hellert2025alphaberkeley,
59
+ title={Alpha Berkeley: A Scalable Framework for the Orchestration of Agentic Systems},
60
+ author={Thorsten Hellert and João Montenegro and Antonin Sulc},
61
+ year={2025},
62
+ eprint={2508.15066},
63
+ archivePrefix={arXiv},
64
+ primaryClass={cs.MA},
65
+ url={https://arxiv.org/abs/2508.15066},
66
+ }
67
+ ```
68
+
69
+ ---
70
+
71
+ *For detailed installation instructions, tutorials, and API reference, please visit our [complete documentation](https://als-apg.github.io/osprey).*
72
+
73
+ ---
74
+
75
+ **Copyright Notice**
76
+
77
+ Alpha Berkeley Framework (alpha berkeley) Copyright (c) 2025, The Regents of the University of California, through Lawrence Berkeley National Laboratory (subject to receipt of any required approvals from the U.S. Dept. of Energy). All rights reserved.
78
+
79
+ If you have questions about your rights to use or distribute this software,
80
+ please contact Berkeley Lab's Intellectual Property Office at
81
+ IPO@lbl.gov.
82
+
83
+ NOTICE. This Software was developed under funding from the U.S. Department
84
+ of Energy and the U.S. Government consequently retains certain rights. As
85
+ such, the U.S. Government has been granted for itself and others acting on
86
+ its behalf a paid-up, nonexclusive, irrevocable, worldwide license in the
87
+ Software to reproduce, distribute copies to the public, prepare derivative
88
+ works, and perform publicly and display publicly, and to permit others to do so.
89
+
90
+ ---
@@ -0,0 +1,329 @@
1
+ [build-system]
2
+ requires = ["setuptools>=65.0", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "osprey-framework"
7
+ version = "0.8.0"
8
+ description = "An open-source, domain-agnostic, capability-based architecture for building intelligent agents"
9
+ readme = "README.md"
10
+ requires-python = ">=3.11"
11
+ license = {text = "BSD-3-Clause"}
12
+ authors = [
13
+ {name = "Thorsten Hellert", email = "thellert@lbl.gov"},
14
+ ]
15
+ maintainers = [
16
+ {name = "Thorsten Hellert", email = "thellert@lbl.gov"},
17
+ ]
18
+ keywords = [
19
+ "ai", "agents", "framework", "scientific-computing", "langgraph",
20
+ "epics", "accelerator-physics", "als", "berkeley", "agent-framework",
21
+ "capability-based", "human-in-the-loop", "container-orchestration"
22
+ ]
23
+ classifiers = [
24
+ "Development Status :: 3 - Alpha",
25
+ "Intended Audience :: Developers",
26
+ "Intended Audience :: Science/Research",
27
+ "License :: OSI Approved :: BSD License",
28
+ "Operating System :: OS Independent",
29
+ "Programming Language :: Python :: 3",
30
+ "Programming Language :: Python :: 3.11",
31
+ "Programming Language :: Python :: 3.12",
32
+ "Topic :: Scientific/Engineering",
33
+ "Topic :: Scientific/Engineering :: Physics",
34
+ "Topic :: Software Development :: Libraries :: Python Modules",
35
+ "Topic :: System :: Distributed Computing",
36
+ ]
37
+
38
+ # Core runtime dependencies from requirements.txt analysis
39
+ dependencies = [
40
+ # LangGraph dependencies - CRITICAL VERSION REQUIREMENTS
41
+ "langgraph>=0.5.2",
42
+ "langchain-core>=0.3.68",
43
+ "langgraph-sdk>=0.1.70,<0.2.0",
44
+
45
+ # Core framework dependencies
46
+ "rich>=14.0.0",
47
+ "click>=8.1.0",
48
+ "questionary>=2.0.0",
49
+ "pydantic-ai>=0.2.11",
50
+ "python-dotenv>=1.1.0",
51
+ "PyYAML>=6.0.2",
52
+ "Jinja2>=3.1.6",
53
+ "requests>=2.32.3",
54
+
55
+ # Container management (Podman, not Docker)
56
+ "podman>=5.4.0",
57
+ "podman-compose>=1.4.0",
58
+
59
+ # Jupyter notebook support
60
+ "nbformat>=5.0.0",
61
+ "nbclient",
62
+
63
+ # AI/ML provider integrations
64
+ "openai",
65
+ "anthropic",
66
+ "google-generativeai",
67
+ "ollama>=0.5.1",
68
+
69
+ # Networking and protocols
70
+ "websocket-client>=1.7.0",
71
+ "urllib3>=2.4.0",
72
+ "certifi>=2025.4.26",
73
+ "charset-normalizer>=3.4.2",
74
+ "idna>=3.10",
75
+ "MarkupSafe>=3.0.2",
76
+ ]
77
+
78
+ [project.optional-dependencies]
79
+ # Documentation dependencies
80
+ docs = [
81
+ "sphinx>=8.0.0",
82
+ "pydata-sphinx-theme",
83
+ "myst-parser",
84
+ "sphinx-copybutton",
85
+ "sphinx-autobuild",
86
+ "sphinx-design",
87
+ "sphinxcontrib-mermaid",
88
+ "sphinxcontrib-jsmath>=1.0.1",
89
+ "graphviz",
90
+ ]
91
+
92
+ # Scientific computing stack - required for Python execution capability
93
+ # These packages are available in the execution environment for data analysis
94
+ scientific = [
95
+ "pandas>=2.2.3",
96
+ "numpy>=2.2.6",
97
+ "scipy>=1.15.3",
98
+ "matplotlib>=3.10.3",
99
+ "seaborn",
100
+ "scikit-learn",
101
+ "ipywidgets", # Interactive widgets for Jupyter notebooks
102
+ ]
103
+
104
+ # Database and storage
105
+ databases = [
106
+ "pymongo",
107
+ "neo4j",
108
+ "qdrant-client",
109
+ ]
110
+
111
+ # PostgreSQL checkpointing (production persistence)
112
+ postgres = [
113
+ "langgraph-checkpoint-postgres>=2.0.22,<3.0.0",
114
+ "psycopg[pool]>=3.1.0,<4.0.0",
115
+ "psycopg-pool>=3.1.0,<4.0.0",
116
+ "langchain-postgres>=0.0.12,<0.1.0",
117
+ ]
118
+
119
+ # Memory and vector storage
120
+ memory = [
121
+ "mem0ai>=0.1.88",
122
+ "vecs>=0.4.5",
123
+ ]
124
+
125
+ # Development and testing
126
+ dev = [
127
+ "pytest",
128
+ "pytest-asyncio",
129
+ "pytest-vcr", # Optional: For recording/replaying API interactions
130
+ "vcrpy",
131
+ "black",
132
+ "isort",
133
+ "mypy",
134
+ "pre-commit",
135
+ "ruff",
136
+ ]
137
+
138
+ # Natural language processing
139
+ nlp = [
140
+ "nltk>=3.8.1",
141
+ ]
142
+
143
+ # Utilities
144
+ utils = [
145
+ "unique-namer>=0.1.0",
146
+ ]
147
+
148
+ # All optional dependencies for complete installation
149
+ all = [
150
+ "osprey-framework[docs,scientific,databases,postgres,memory,dev,nlp,utils]"
151
+ ]
152
+
153
+ [project.urls]
154
+ Homepage = "https://als-apg.github.io/osprey"
155
+ Documentation = "https://als-apg.github.io/osprey"
156
+ Repository = "https://github.com/als-apg/osprey"
157
+ Paper = "https://arxiv.org/abs/2508.15066"
158
+ Issues = "https://github.com/als-apg/osprey/issues"
159
+ Changelog = "https://github.com/als-apg/osprey/blob/main/CHANGELOG.md"
160
+
161
+ # Define console scripts for CLI entry points
162
+ [project.scripts]
163
+ # Main CLI entry point (Click group with subcommands)
164
+ osprey = "osprey.cli.main:cli"
165
+
166
+ # Legacy entry points (maintained for backward compatibility)
167
+ alpha-berkeley = "osprey.interfaces.cli.direct_conversation:main"
168
+ alpha-berkeley-deploy = "osprey.deployment.container_manager:main"
169
+ alpha-berkeley-docs = "docs.launch_docs:main"
170
+
171
+ # Package discovery configuration for src layout
172
+ [tool.setuptools.packages.find]
173
+ where = ["src"]
174
+ include = ["osprey*"]
175
+
176
+ # Include package data files
177
+ [tool.setuptools.package-data]
178
+ "*" = ["*.yml", "*.yaml", "*.json", "*.j2", "*.md", "*.txt", "*.cfg", "*.ini"]
179
+ "osprey" = [
180
+ "config.yml",
181
+ "templates/**/*",
182
+ "templates/**/*.j2",
183
+ "templates/**/*.py",
184
+ "templates/**/*.yml",
185
+ "templates/**/*.yaml",
186
+ "templates/**/*.md",
187
+ "templates/**/*.txt",
188
+ "templates/**/*.sh",
189
+ "templates/**/*.css",
190
+ "templates/**/*.js",
191
+ "templates/**/*.json",
192
+ ]
193
+
194
+ # Development tool configurations
195
+ [tool.black]
196
+ line-length = 100
197
+ target-version = ['py311']
198
+ include = '\.pyi?$'
199
+ extend-exclude = '''
200
+ /(
201
+ # Exclude auto-generated files
202
+ build/
203
+ | dist/
204
+ | venv/
205
+ | \.venv/
206
+ | _agent_data/
207
+ | \.git/
208
+ | __pycache__/
209
+ | \.pytest_cache/
210
+ | \.mypy_cache/
211
+ )/
212
+ '''
213
+
214
+ [tool.isort]
215
+ profile = "black"
216
+ line_length = 100
217
+ multi_line_output = 3
218
+ include_trailing_comma = true
219
+ force_grid_wrap = 0
220
+ use_parentheses = true
221
+ ensure_newline_before_comments = true
222
+ src_paths = ["src", "interfaces", "deployment"]
223
+
224
+ [tool.mypy]
225
+ python_version = "3.11"
226
+ warn_return_any = true
227
+ warn_unused_configs = true
228
+ disallow_untyped_defs = false # Gradual typing
229
+ ignore_missing_imports = true
230
+ exclude = [
231
+ "build/",
232
+ "dist/",
233
+ "venv/",
234
+ "_agent_data/",
235
+ "__pycache__/",
236
+ ]
237
+
238
+ # Specific modules to ignore due to optional dependencies
239
+ [[tool.mypy.overrides]]
240
+ module = [
241
+ "openai.*",
242
+ "anthropic.*",
243
+ "google.*",
244
+ "ollama.*",
245
+ "pandas.*",
246
+ "numpy.*",
247
+ "matplotlib.*",
248
+ "pyepics.*",
249
+ "pymongo.*",
250
+ "neo4j.*",
251
+ "qdrant_client.*",
252
+ "mem0.*",
253
+ "langfuse.*",
254
+ "langgraph.*",
255
+ "langchain.*",
256
+ "podman.*",
257
+ ]
258
+ ignore_missing_imports = true
259
+
260
+ [tool.pytest.ini_options]
261
+ minversion = "6.0"
262
+ addopts = "-ra -q --tb=short"
263
+ testpaths = [
264
+ "tests",
265
+ "src/applications/*/tests"
266
+ ]
267
+ python_files = [
268
+ "test_*.py",
269
+ "*_test.py"
270
+ ]
271
+ python_classes = ["Test*"]
272
+ python_functions = ["test_*"]
273
+ asyncio_mode = "auto"
274
+
275
+ # Ruff configuration for modern Python linting
276
+ [tool.ruff]
277
+ line-length = 100
278
+ target-version = "py311"
279
+ src = ["src", "interfaces", "deployment"]
280
+
281
+ [tool.ruff.lint]
282
+ select = [
283
+ "E", # pycodestyle errors
284
+ "W", # pycodestyle warnings
285
+ "F", # pyflakes
286
+ "I", # isort
287
+ "B", # flake8-bugbear
288
+ "C4", # flake8-comprehensions
289
+ "UP", # pyupgrade
290
+ ]
291
+ ignore = [
292
+ "E501", # line too long, handled by black
293
+ "B008", # do not perform function calls in argument defaults
294
+ "C901", # too complex
295
+ ]
296
+
297
+ [tool.ruff.lint.per-file-ignores]
298
+ "__init__.py" = ["F401"] # Allow unused imports in __init__.py
299
+ "tests/*" = ["B011"] # Allow assert False
300
+
301
+ [tool.ruff.lint.isort]
302
+ known-first-party = ["osprey", "configs", "applications", "interfaces", "deployment"]
303
+
304
+ # Coverage configuration (if using pytest-cov)
305
+ [tool.coverage.run]
306
+ source = ["src", "interfaces", "deployment"]
307
+ omit = [
308
+ "*/tests/*",
309
+ "*/__pycache__/*",
310
+ "*/.*",
311
+ "build/*",
312
+ "dist/*",
313
+ "venv/*",
314
+ "_agent_data/*",
315
+ ]
316
+
317
+ [tool.coverage.report]
318
+ exclude_lines = [
319
+ "pragma: no cover",
320
+ "def __repr__",
321
+ "if self.debug:",
322
+ "if settings.DEBUG",
323
+ "raise AssertionError",
324
+ "raise NotImplementedError",
325
+ "if 0:",
326
+ "if __name__ == .__main__.:",
327
+ "class .*\\bProtocol\\):",
328
+ "@(abc\\.)?abstractmethod",
329
+ ]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,20 @@
1
+ """Osprey Agent Framework.
2
+
3
+ Core framework package providing infrastructure for building
4
+ intelligent agents with specialized capabilities.
5
+
6
+ This package contains:
7
+ - Base classes and interfaces
8
+ - Infrastructure components
9
+ - State management
10
+ - Service integrations
11
+ - Configuration management
12
+ """
13
+
14
+ # Version information
15
+ __version__ = "0.8.0"
16
+
17
+ __all__ = ['__version__']
18
+
19
+ # Framework is designed for on-demand imports to avoid circular dependencies
20
+ # Use specific imports like: from osprey.state import AgentState