beamlit 0.0.34rc60__tar.gz → 0.0.34rc62__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 (279) hide show
  1. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/PKG-INFO +1 -1
  2. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/pyproject.toml +1 -1
  3. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/agents/chat.py +4 -1
  4. beamlit-0.0.34rc62/src/beamlit/agents/decorator.py +108 -0
  5. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/service_accounts/create_workspace_service_account.py +3 -1
  6. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/service_accounts/delete_workspace_service_account.py +3 -1
  7. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/service_accounts/get_workspace_service_accounts.py +3 -1
  8. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/service_accounts/update_workspace_service_account.py +3 -1
  9. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/deploy/deploy.py +60 -58
  10. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/deploy/format.py +10 -0
  11. beamlit-0.0.34rc62/src/beamlit/functions/__init__.py +5 -0
  12. {beamlit-0.0.34rc60/src/beamlit/agents → beamlit-0.0.34rc62/src/beamlit/functions}/decorator.py +86 -130
  13. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/__init__.py +3 -1
  14. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/integrationtest/agent.py +2 -1
  15. beamlit-0.0.34rc62/src/integrationtest/main.py +11 -0
  16. beamlit-0.0.34rc60/src/beamlit/functions/__init__.py +0 -5
  17. beamlit-0.0.34rc60/src/beamlit/functions/decorator.py +0 -45
  18. beamlit-0.0.34rc60/src/integrationtest/main.py +0 -34
  19. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/.gitignore +0 -0
  20. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/README.md +0 -0
  21. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/beamlit.yaml +0 -0
  22. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/__init__.py +0 -0
  23. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/agents/__init__.py +0 -0
  24. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/agents/chain.py +0 -0
  25. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/__init__.py +0 -0
  26. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/agents/__init__.py +0 -0
  27. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/agents/create_agent.py +0 -0
  28. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/agents/create_agent_release.py +0 -0
  29. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/agents/delete_agent.py +0 -0
  30. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/agents/delete_agent_history.py +0 -0
  31. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/agents/get_agent.py +0 -0
  32. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/agents/get_agent_environment_logs.py +0 -0
  33. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/agents/get_agent_history.py +0 -0
  34. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/agents/get_agent_metrics.py +0 -0
  35. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/agents/get_agent_trace_ids.py +0 -0
  36. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/agents/list_agent_history.py +0 -0
  37. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/agents/list_agents.py +0 -0
  38. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/agents/put_agent_history.py +0 -0
  39. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/agents/update_agent.py +0 -0
  40. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/configurations/__init__.py +0 -0
  41. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/configurations/get_configuration.py +0 -0
  42. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/default/__init__.py +0 -0
  43. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/default/get_trace.py +0 -0
  44. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/default/get_trace_ids.py +0 -0
  45. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/default/get_trace_logs.py +0 -0
  46. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/environments/__init__.py +0 -0
  47. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/environments/create_environment.py +0 -0
  48. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/environments/delete_environment.py +0 -0
  49. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/environments/get_environment.py +0 -0
  50. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/environments/get_environment_metrics.py +0 -0
  51. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/environments/list_environments.py +0 -0
  52. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/environments/update_environment.py +0 -0
  53. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/functions/__init__.py +0 -0
  54. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/functions/create_function.py +0 -0
  55. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/functions/create_function_release.py +0 -0
  56. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/functions/delete_function.py +0 -0
  57. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/functions/get_function.py +0 -0
  58. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/functions/get_function_environment_logs.py +0 -0
  59. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/functions/get_function_metrics.py +0 -0
  60. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/functions/get_function_trace_ids.py +0 -0
  61. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/functions/list_functions.py +0 -0
  62. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/functions/update_function.py +0 -0
  63. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/history/__init__.py +0 -0
  64. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/history/get_agents_history.py +0 -0
  65. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/history/list_agents_history.py +0 -0
  66. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/integrations/__init__.py +0 -0
  67. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/integrations/create_integration_connection.py +0 -0
  68. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/integrations/delete_integration_connection.py +0 -0
  69. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/integrations/get_integration.py +0 -0
  70. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/integrations/get_integration_connection.py +0 -0
  71. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/integrations/get_integration_connection_model.py +0 -0
  72. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/integrations/get_integration_model.py +0 -0
  73. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/integrations/list_integration_connection_models.py +0 -0
  74. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/integrations/list_integration_connections.py +0 -0
  75. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/integrations/list_integration_models.py +0 -0
  76. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/integrations/update_integration_connection.py +0 -0
  77. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/invitations/__init__.py +0 -0
  78. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/invitations/list_all_pending_invitations.py +0 -0
  79. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/locations/__init__.py +0 -0
  80. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/locations/list_locations.py +0 -0
  81. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/metrics/__init__.py +0 -0
  82. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/metrics/get_metrics.py +0 -0
  83. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/model_providers/__init__.py +0 -0
  84. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/model_providers/create_model_provider.py +0 -0
  85. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/model_providers/delete_model_provider.py +0 -0
  86. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/model_providers/get_model_provider.py +0 -0
  87. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/model_providers/list_model_providers.py +0 -0
  88. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/model_providers/update_model_provider.py +0 -0
  89. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/models/__init__.py +0 -0
  90. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/models/create_model.py +0 -0
  91. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/models/delete_model.py +0 -0
  92. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/models/get_model.py +0 -0
  93. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/models/get_model_environment_logs.py +0 -0
  94. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/models/get_model_metrics.py +0 -0
  95. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/models/get_model_trace_ids.py +0 -0
  96. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/models/list_models.py +0 -0
  97. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/models/release_model.py +0 -0
  98. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/models/update_model.py +0 -0
  99. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/policies/__init__.py +0 -0
  100. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/policies/create_policy.py +0 -0
  101. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/policies/delete_policy.py +0 -0
  102. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/policies/get_policy.py +0 -0
  103. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/policies/list_policies.py +0 -0
  104. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/policies/update_policy.py +0 -0
  105. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/privateclusters/__init__.py +0 -0
  106. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/privateclusters/create_private_cluster.py +0 -0
  107. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/privateclusters/delete_private_cluster.py +0 -0
  108. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/privateclusters/get_private_cluster.py +0 -0
  109. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/privateclusters/get_private_cluster_health.py +0 -0
  110. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/privateclusters/list_private_clusters.py +0 -0
  111. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/privateclusters/update_private_cluster.py +0 -0
  112. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/privateclusters/update_private_cluster_health.py +0 -0
  113. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/service_accounts/__init__.py +0 -0
  114. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/service_accounts/create_api_key_for_service_account.py +0 -0
  115. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/service_accounts/delete_api_key_for_service_account.py +0 -0
  116. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/service_accounts/list_api_keys_for_service_account.py +0 -0
  117. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/store/__init__.py +0 -0
  118. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/store/get_store_agent.py +0 -0
  119. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/store/get_store_function.py +0 -0
  120. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/store/list_store_agents.py +0 -0
  121. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/store/list_store_functions.py +0 -0
  122. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/__init__.py +0 -0
  123. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/accept_workspace_invitation.py +0 -0
  124. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/create_worspace.py +0 -0
  125. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/decline_workspace_invitation.py +0 -0
  126. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/delete_workspace.py +0 -0
  127. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/get_workspace.py +0 -0
  128. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/invite_workspace_user.py +0 -0
  129. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/leave_workspace.py +0 -0
  130. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/list_workspace_users.py +0 -0
  131. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/list_workspaces.py +0 -0
  132. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/remove_workspace_user.py +0 -0
  133. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/update_workspace.py +0 -0
  134. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/update_workspace_user_role.py +0 -0
  135. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/authentication/__init__.py +0 -0
  136. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/authentication/apikey.py +0 -0
  137. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/authentication/authentication.py +0 -0
  138. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/authentication/clientcredentials.py +0 -0
  139. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/authentication/credentials.py +0 -0
  140. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/authentication/device_mode.py +0 -0
  141. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/client.py +0 -0
  142. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/common/__init__.py +0 -0
  143. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/common/error.py +0 -0
  144. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/common/instrumentation.py +0 -0
  145. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/common/logger.py +0 -0
  146. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/common/secrets.py +0 -0
  147. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/common/settings.py +0 -0
  148. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/common/slugify.py +0 -0
  149. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/common/utils.py +0 -0
  150. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/deploy/__init__.py +0 -0
  151. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/deploy/parser.py +0 -0
  152. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/errors.py +0 -0
  153. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/functions/github/__init__.py +0 -0
  154. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/functions/github/github.py +0 -0
  155. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/functions/github/kit/__init__.py +0 -0
  156. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/functions/github/kit/pull_request.py +0 -0
  157. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/functions/math/__init__.py +0 -0
  158. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/functions/math/math.py +0 -0
  159. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/functions/mcp/mcp.py +0 -0
  160. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/functions/remote/remote.py +0 -0
  161. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/functions/search/__init__.py +0 -0
  162. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/functions/search/search.py +0 -0
  163. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/acl.py +0 -0
  164. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/agent.py +0 -0
  165. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/agent_chain.py +0 -0
  166. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/agent_history.py +0 -0
  167. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/agent_history_event.py +0 -0
  168. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/agent_metadata.py +0 -0
  169. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/agent_release.py +0 -0
  170. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/agent_spec.py +0 -0
  171. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/api_key.py +0 -0
  172. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/configuration.py +0 -0
  173. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/continent.py +0 -0
  174. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/core_event.py +0 -0
  175. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/core_spec.py +0 -0
  176. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/core_spec_configurations.py +0 -0
  177. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/core_status.py +0 -0
  178. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/country.py +0 -0
  179. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/create_api_key_for_service_account_body.py +0 -0
  180. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/create_workspace_service_account_body.py +0 -0
  181. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/create_workspace_service_account_response_200.py +0 -0
  182. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/delete_workspace_service_account_response_200.py +0 -0
  183. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/environment.py +0 -0
  184. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/environment_metadata.py +0 -0
  185. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/environment_metrics.py +0 -0
  186. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/environment_spec.py +0 -0
  187. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/flavor.py +0 -0
  188. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/function.py +0 -0
  189. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/function_kit.py +0 -0
  190. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/function_metadata.py +0 -0
  191. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/function_release.py +0 -0
  192. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/function_spec.py +0 -0
  193. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/get_trace_ids_response_200.py +0 -0
  194. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/get_trace_logs_response_200.py +0 -0
  195. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/get_trace_response_200.py +0 -0
  196. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/get_workspace_service_accounts_response_200_item.py +0 -0
  197. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/increase_and_rate_metric.py +0 -0
  198. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/integration_config.py +0 -0
  199. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/integration_connection.py +0 -0
  200. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/integration_connection_config.py +0 -0
  201. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/integration_connection_secret.py +0 -0
  202. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/integration_connection_spec.py +0 -0
  203. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/integration_model.py +0 -0
  204. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/integration_repository.py +0 -0
  205. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/invite_workspace_user_body.py +0 -0
  206. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/last_n_requests_metric.py +0 -0
  207. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/latency_metric.py +0 -0
  208. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/location_response.py +0 -0
  209. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/metadata.py +0 -0
  210. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/metadata_labels.py +0 -0
  211. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/metric.py +0 -0
  212. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/metrics.py +0 -0
  213. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/model.py +0 -0
  214. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/model_metadata.py +0 -0
  215. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/model_private_cluster.py +0 -0
  216. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/model_provider.py +0 -0
  217. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/model_release.py +0 -0
  218. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/model_spec.py +0 -0
  219. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/owner_fields.py +0 -0
  220. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/pending_invitation.py +0 -0
  221. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/pending_invitation_accept.py +0 -0
  222. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/pending_invitation_render.py +0 -0
  223. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/pending_invitation_render_invited_by.py +0 -0
  224. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/pending_invitation_render_workspace.py +0 -0
  225. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/pending_invitation_workspace_details.py +0 -0
  226. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/pod_template_spec.py +0 -0
  227. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/policy.py +0 -0
  228. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/policy_location.py +0 -0
  229. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/policy_spec.py +0 -0
  230. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/private_cluster.py +0 -0
  231. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/private_location.py +0 -0
  232. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/provider_config.py +0 -0
  233. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/qps.py +0 -0
  234. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/repository.py +0 -0
  235. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/request_total_metric.py +0 -0
  236. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/resource_deployment_metrics.py +0 -0
  237. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/resource_deployment_metrics_inference_per_second_per_region.py +0 -0
  238. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/resource_deployment_metrics_query_per_second_per_region_per_code.py +0 -0
  239. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/resource_environment_metrics.py +0 -0
  240. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/resource_environment_metrics_inference_per_region.py +0 -0
  241. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/resource_environment_metrics_inference_per_second_per_region.py +0 -0
  242. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/resource_environment_metrics_query_per_region_per_code.py +0 -0
  243. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/resource_environment_metrics_query_per_second_per_region_per_code.py +0 -0
  244. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/resource_log.py +0 -0
  245. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/resource_metrics.py +0 -0
  246. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/runtime.py +0 -0
  247. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/runtime_readiness_probe.py +0 -0
  248. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/runtime_resources.py +0 -0
  249. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/serverless_config.py +0 -0
  250. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/spec_configuration.py +0 -0
  251. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/store_agent.py +0 -0
  252. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/store_agent_labels.py +0 -0
  253. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/store_configuration.py +0 -0
  254. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/store_configuration_option.py +0 -0
  255. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/store_function.py +0 -0
  256. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/store_function_kit.py +0 -0
  257. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/store_function_labels.py +0 -0
  258. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/store_function_parameter.py +0 -0
  259. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/time_fields.py +0 -0
  260. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/trace_ids_response.py +0 -0
  261. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/update_workspace_service_account_body.py +0 -0
  262. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/update_workspace_service_account_response_200.py +0 -0
  263. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/update_workspace_user_role_body.py +0 -0
  264. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/websocket_channel.py +0 -0
  265. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/workspace.py +0 -0
  266. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/workspace_labels.py +0 -0
  267. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/workspace_user.py +0 -0
  268. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/py.typed +0 -0
  269. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/run.py +0 -0
  270. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/serve/app.py +1 -1
  271. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/serve/middlewares/__init__.py +0 -0
  272. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/serve/middlewares/accesslog.py +0 -0
  273. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/serve/middlewares/processtime.py +0 -0
  274. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/types.py +0 -0
  275. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/integrationtest/beamlit.yaml +0 -0
  276. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/integrationtest/functions/helloworld.py +0 -0
  277. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/integrationtest/pyproject.toml +0 -0
  278. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/integrationtest/uv.lock +0 -0
  279. {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: beamlit
3
- Version: 0.0.34rc60
3
+ Version: 0.0.34rc62
4
4
  Summary: Add your description here
5
5
  Author-email: cploujoux <ch.ploujoux@gmail.com>
6
6
  Requires-Python: >=3.12
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "beamlit"
3
- version = "0.0.34.pre-60"
3
+ version = "0.0.34.pre-62"
4
4
  description = "Add your description here"
5
5
  readme = "README.md"
6
6
  authors = [
@@ -1,4 +1,7 @@
1
1
  from logging import getLogger
2
+ from typing import Tuple
3
+
4
+ from langchain_core.language_models import BaseChatModel
2
5
 
3
6
  from beamlit.authentication import get_authentication_headers, new_client
4
7
  from beamlit.common.settings import get_settings
@@ -39,7 +42,7 @@ def get_cohere_chat_model(**kwargs):
39
42
 
40
43
  return ChatCohere(**kwargs)
41
44
 
42
- def get_chat_model(name: str, agent_model: Model):
45
+ def get_chat_model(name: str, agent_model: Model) -> Tuple[BaseChatModel, str, str]:
43
46
  settings = get_settings()
44
47
  client = new_client()
45
48
 
@@ -0,0 +1,108 @@
1
+ # Import necessary modules
2
+ import functools
3
+ from logging import getLogger
4
+
5
+ from langgraph.checkpoint.memory import MemorySaver
6
+ from langgraph.prebuilt import create_react_agent
7
+
8
+ from beamlit.api.models import get_model
9
+ from beamlit.authentication import new_client
10
+ from beamlit.common.settings import init
11
+ from beamlit.errors import UnexpectedStatus
12
+ from beamlit.functions import get_functions
13
+ from beamlit.models import Agent, AgentMetadata, AgentSpec
14
+
15
+ from .chat import get_chat_model
16
+
17
+
18
+ def agent(
19
+ agent: Agent | dict = None,
20
+ override_model=None,
21
+ override_agent=None,
22
+ mcp_hub=None,
23
+ remote_functions=None,
24
+ ):
25
+ logger = getLogger(__name__)
26
+ try:
27
+ if agent is not None and not isinstance(agent, dict):
28
+ raise Exception(
29
+ 'agent must be a dictionary, example: @agent(agent={"metadata": {"name": "my_agent"}})'
30
+ )
31
+
32
+ client = new_client()
33
+ chat_model = override_model or None
34
+ settings = init()
35
+
36
+ def wrapper(func):
37
+ @functools.wraps(func)
38
+ def wrapped(*args, **kwargs):
39
+ return func(
40
+ settings.agent.agent,
41
+ settings.agent.chat_model,
42
+ settings.agent.functions,
43
+ *args,
44
+ **kwargs,
45
+ )
46
+
47
+ return wrapped
48
+
49
+ if agent is not None:
50
+ metadata = AgentMetadata(**agent.get("metadata", {}))
51
+ spec = AgentSpec(**agent.get("spec", {}))
52
+ agent = Agent(metadata=metadata, spec=spec)
53
+ if agent.spec.model and chat_model is None:
54
+ try:
55
+ response = get_model.sync_detailed(
56
+ agent.spec.model, environment=settings.environment, client=client
57
+ )
58
+ settings.agent.model = response.parsed
59
+ except UnexpectedStatus as e:
60
+ if e.status_code == 404 and settings.environment != "production":
61
+ try:
62
+ response = get_model.sync_detailed(
63
+ agent.spec.model, environment="production", client=client
64
+ )
65
+ settings.agent.model = response.parsed
66
+ except UnexpectedStatus as e:
67
+ if e.status_code == 404:
68
+ raise ValueError(f"Model {agent.spec.model} not found")
69
+ else:
70
+ raise e
71
+ except Exception as e:
72
+ raise e
73
+
74
+ if settings.agent.model:
75
+ chat_model, provider, model = get_chat_model(agent.spec.model, settings.agent.model)
76
+ settings.agent.chat_model = chat_model
77
+ logger.info(f"Chat model configured, using: {provider}:{model}")
78
+
79
+ functions = get_functions(
80
+ client=client,
81
+ dir=settings.agent.functions_directory,
82
+ mcp_hub=mcp_hub,
83
+ remote_functions=remote_functions,
84
+ chain=agent.spec.agent_chain,
85
+ remote_functions_empty=not remote_functions,
86
+ )
87
+ settings.agent.functions = functions
88
+
89
+ if override_agent is None and len(functions) == 0:
90
+ raise ValueError(
91
+ "You must define at least one function, you can define this function in directory "
92
+ f'"{settings.agent.functions_directory}". Here is a sample function you can use:\n\n'
93
+ "from beamlit.functions import function\n\n"
94
+ "@function()\n"
95
+ "def hello_world(query: str):\n"
96
+ " return 'Hello, world!'\n"
97
+ )
98
+
99
+ if override_agent is None and chat_model is not None:
100
+ memory = MemorySaver()
101
+ _agent = create_react_agent(chat_model, functions, checkpointer=memory)
102
+ settings.agent.agent = _agent
103
+ else:
104
+ settings.agent.agent = override_agent
105
+ return wrapper
106
+ except Exception as e:
107
+ logger.error(f"Error in agent decorator: {e!s} at line {e.__traceback__.tb_lineno}")
108
+ raise e
@@ -6,7 +6,9 @@ import httpx
6
6
  from ... import errors
7
7
  from ...client import AuthenticatedClient, Client
8
8
  from ...models.create_workspace_service_account_body import CreateWorkspaceServiceAccountBody
9
- from ...models.create_workspace_service_account_response_200 import CreateWorkspaceServiceAccountResponse200
9
+ from ...models.create_workspace_service_account_response_200 import (
10
+ CreateWorkspaceServiceAccountResponse200,
11
+ )
10
12
  from ...types import Response
11
13
 
12
14
 
@@ -5,7 +5,9 @@ import httpx
5
5
 
6
6
  from ... import errors
7
7
  from ...client import AuthenticatedClient, Client
8
- from ...models.delete_workspace_service_account_response_200 import DeleteWorkspaceServiceAccountResponse200
8
+ from ...models.delete_workspace_service_account_response_200 import (
9
+ DeleteWorkspaceServiceAccountResponse200,
10
+ )
9
11
  from ...types import Response
10
12
 
11
13
 
@@ -5,7 +5,9 @@ import httpx
5
5
 
6
6
  from ... import errors
7
7
  from ...client import AuthenticatedClient, Client
8
- from ...models.get_workspace_service_accounts_response_200_item import GetWorkspaceServiceAccountsResponse200Item
8
+ from ...models.get_workspace_service_accounts_response_200_item import (
9
+ GetWorkspaceServiceAccountsResponse200Item,
10
+ )
9
11
  from ...types import Response
10
12
 
11
13
 
@@ -6,7 +6,9 @@ import httpx
6
6
  from ... import errors
7
7
  from ...client import AuthenticatedClient, Client
8
8
  from ...models.update_workspace_service_account_body import UpdateWorkspaceServiceAccountBody
9
- from ...models.update_workspace_service_account_response_200 import UpdateWorkspaceServiceAccountResponse200
9
+ from ...models.update_workspace_service_account_response_200 import (
10
+ UpdateWorkspaceServiceAccountResponse200,
11
+ )
10
12
  from ...types import Response
11
13
 
12
14
 
@@ -1,11 +1,17 @@
1
1
  import ast
2
2
  import json
3
3
  import os
4
+ import shutil
4
5
  import sys
5
- import uuid
6
6
  from logging import getLogger
7
+ from pathlib import Path
7
8
  from typing import Literal
8
9
 
10
+ import yaml
11
+
12
+ from beamlit.api.agents import get_agent
13
+ from beamlit.authentication import new_client
14
+ from beamlit.client import AuthenticatedClient
9
15
  from beamlit.common import slugify
10
16
  from beamlit.common.settings import Settings, get_settings, init
11
17
  from beamlit.models import (
@@ -15,26 +21,15 @@ from beamlit.models import (
15
21
  Flavor,
16
22
  Function,
17
23
  FunctionSpec,
18
- Runtime,
24
+ MetadataLabels,
19
25
  )
20
26
 
21
- from .format import arg_to_dict, format_agent_chain, format_parameters
27
+ from .format import arg_to_dict
22
28
  from .parser import Resource, get_description, get_parameters, get_resources
23
29
 
24
30
  sys.path.insert(0, os.getcwd())
25
31
  sys.path.insert(0, os.path.join(os.getcwd(), "src"))
26
32
 
27
- random_id = str(uuid.uuid4())[:8]
28
-
29
- def get_runtime_image(type: str, name: str) -> str:
30
- settings = get_settings()
31
- registry_url = settings.registry_url.replace("https://", "").replace("http://", "")
32
- image = f"{registry_url}/{settings.workspace}/{type}s/{name}"
33
- # Generate a random ID to ensure unique image tags
34
- image = f"{image}:{random_id}"
35
- return image
36
-
37
-
38
33
  def set_default_values(resource: Resource, deployment: Agent | Function):
39
34
  settings = get_settings()
40
35
  deployment.metadata.workspace = settings.workspace
@@ -45,10 +40,6 @@ def set_default_values(resource: Resource, deployment: Agent | Function):
45
40
  deployment.metadata.display_name = deployment.metadata.name
46
41
  if not deployment.spec.description:
47
42
  deployment.spec.description = get_description(None, resource)
48
- if not deployment.spec.runtime:
49
- deployment.spec.runtime = Runtime()
50
- if not deployment.spec.runtime.image:
51
- deployment.spec.runtime.image = get_runtime_image(resource.type, deployment.metadata.name)
52
43
  return deployment
53
44
 
54
45
  def get_beamlit_deployment_from_resource(
@@ -105,7 +96,7 @@ def get_flavors(flavors: list[Flavor]) -> str:
105
96
  return json.dumps([flavor.to_dict() for flavor in flavors])
106
97
 
107
98
  def get_agent_yaml(
108
- agent: Agent, functions: list[tuple[Resource, Function]], settings: Settings
99
+ agent: Agent, functions: list[tuple[Resource, Function]], settings: Settings, client: AuthenticatedClient
109
100
  ) -> str:
110
101
  """
111
102
  Generates YAML configuration for an agent deployment.
@@ -118,30 +109,24 @@ def get_agent_yaml(
118
109
  Returns:
119
110
  str: YAML configuration string
120
111
  """
112
+ try:
113
+ agent_response = get_agent.sync(agent.metadata.name, client=client)
114
+ agent.spec.repository = agent_response.spec.repository
115
+ except Exception:
116
+ pass
117
+ agent.spec.functions = [slugify(function.metadata.name) for (_, function) in functions]
118
+ agent.metadata.labels = agent.metadata.labels and MetadataLabels.from_dict(agent.metadata.labels) or MetadataLabels()
119
+ agent.metadata.labels["x-beamlit-auto-generated"] = "true"
120
+ agent_yaml = yaml.dump(agent.to_dict())
121
121
  template = f"""
122
122
  apiVersion: beamlit.com/v1alpha1
123
123
  kind: Agent
124
- metadata:
125
- name: {slugify(agent.metadata.name)}
126
- displayName: {agent.metadata.display_name or agent.metadata.name}
127
- environment: {settings.environment}
128
- workspace: {settings.workspace}
129
- labels:
130
- x-beamlit-auto-generated: "true"
131
- spec:
132
- enabled: true
133
- policies: [{", ".join(agent.spec.policies or [])}]
134
- functions: [{", ".join([f"{slugify(function.metadata.name)}" for (_, function) in functions])}]
135
- agentChain: {format_agent_chain(agent.spec.agent_chain)}
136
- model: {agent.spec.model}
124
+ {agent_yaml}
137
125
  """
138
- if agent.spec.description:
139
- template += f""" description: |
140
- {agent.spec.description}"""
141
126
  return template
142
127
 
143
128
 
144
- def get_function_yaml(function: Function, settings: Settings) -> str:
129
+ def get_function_yaml(function: Function, settings: Settings, client: AuthenticatedClient) -> str:
145
130
  """
146
131
  Generates YAML configuration for a function deployment.
147
132
 
@@ -152,21 +137,13 @@ def get_function_yaml(function: Function, settings: Settings) -> str:
152
137
  Returns:
153
138
  str: YAML configuration string
154
139
  """
140
+ function.metadata.labels = function.metadata.labels and MetadataLabels.from_dict(function.metadata.labels) or MetadataLabels()
141
+ function.metadata.labels["x-beamlit-auto-generated"] = "true"
142
+ function_yaml = yaml.dump(function.to_dict())
155
143
  return f"""
156
144
  apiVersion: beamlit.com/v1alpha1
157
145
  kind: Function
158
- metadata:
159
- name: {slugify(function.metadata.name)}
160
- displayName: {function.metadata.display_name or function.metadata.name}
161
- environment: {settings.environment}
162
- labels:
163
- x-beamlit-auto-generated: "true"
164
- spec:
165
- enabled: true
166
- policies: [{", ".join(function.spec.policies or [])}]
167
- description: |
168
- {function.spec.description}
169
- parameters: {format_parameters(function.spec.parameters)}
146
+ {function_yaml}
170
147
  """
171
148
 
172
149
 
@@ -220,6 +197,35 @@ ENV PATH="/beamlit/.venv/bin:$PATH"
220
197
  ENTRYPOINT [{cmd_str}]
221
198
  """
222
199
 
200
+ def clean_auto_generated(
201
+ directory: str,
202
+ type: Literal["agent", "function"],
203
+ deployments: list[tuple[Resource, Agent | Function]]
204
+ ):
205
+ """
206
+ Cleans up auto-generated deployments of a specific type.
207
+
208
+ Args:
209
+ directory (str): Base directory containing deployments
210
+ type (str): Type of deployment ("agent" or "function")
211
+ deployments (list[tuple[Resource, Agent | Function]]): List of deployment resources and configurations
212
+ """
213
+
214
+ deploy_dir = Path(directory) / f"{type}s"
215
+ deploy_names = [d.metadata.name for (_, d) in deployments]
216
+
217
+ if deploy_dir.exists():
218
+ for item_dir in deploy_dir.iterdir():
219
+ if item_dir.is_dir() and item_dir.name not in deploy_names:
220
+ yaml_file = item_dir / f"{type}.yaml"
221
+ if yaml_file.exists():
222
+ with open(yaml_file) as f:
223
+ try:
224
+ content = yaml.safe_load(f)
225
+ if content.get("metadata", {}).get("labels", {}).get("x-beamlit-auto-generated") == "true":
226
+ shutil.rmtree(item_dir)
227
+ except yaml.YAMLError:
228
+ continue
223
229
 
224
230
  def generate_beamlit_deployment(directory: str):
225
231
  """
@@ -234,6 +240,7 @@ def generate_beamlit_deployment(directory: str):
234
240
  - Directory structure for agents and functions
235
241
  """
236
242
  settings = init()
243
+ client = new_client()
237
244
  logger = getLogger(__name__)
238
245
  logger.info(f"Importing server module: {settings.server.module}")
239
246
  functions: list[tuple[Resource, Function]] = []
@@ -257,28 +264,23 @@ def generate_beamlit_deployment(directory: str):
257
264
  agent_dir = os.path.join(agents_dir, agent.metadata.name)
258
265
  os.makedirs(agent_dir, exist_ok=True)
259
266
  with open(os.path.join(agent_dir, "agent.yaml"), "w") as f:
260
- content = get_agent_yaml(agent, functions, settings)
267
+ content = get_agent_yaml(agent, functions, settings, client)
261
268
  f.write(content)
262
269
  # write dockerfile for build
263
270
  with open(os.path.join(agent_dir, "Dockerfile"), "w") as f:
264
271
  content = dockerfile("agent", resource, agent)
265
272
  f.write(content)
266
- # write destination docker
267
- with open(os.path.join(agent_dir, "destination.txt"), "w") as f:
268
- content = agent.spec.runtime.image
269
- f.write(content)
270
273
  for resource, function in functions:
271
274
  # write deployment file
272
275
  function_dir = os.path.join(functions_dir, function.metadata.name)
273
276
  os.makedirs(function_dir, exist_ok=True)
274
277
  with open(os.path.join(function_dir, "function.yaml"), "w") as f:
275
- content = get_function_yaml(function, settings)
278
+ content = get_function_yaml(function, settings, client)
276
279
  f.write(content)
277
280
  # write dockerfile for build
278
281
  with open(os.path.join(function_dir, "Dockerfile"), "w") as f:
279
282
  content = dockerfile("function", resource, function)
280
283
  f.write(content)
281
- # write destination docker
282
- with open(os.path.join(function_dir, "destination.txt"), "w") as f:
283
- content = function.spec.runtime.image
284
- f.write(content)
284
+
285
+ clean_auto_generated(directory, "agent", agents)
286
+ clean_auto_generated(directory, "function", functions)
@@ -48,6 +48,16 @@ def format_parameters(parameters: list[StoreFunctionParameter]) -> str:
48
48
 
49
49
  return "\n".join(formatted)
50
50
 
51
+ def format_dict(obj: dict) -> str:
52
+ if not obj:
53
+ return "null"
54
+ ret = ""
55
+ for k, v in obj.items():
56
+ if not v:
57
+ ret += f"{k}: null\n"
58
+ else:
59
+ ret += f"{k}: {v}\n"
60
+ return ret
51
61
 
52
62
  def format_agent_chain(agentChain: list[AgentChain]) -> str:
53
63
  """
@@ -0,0 +1,5 @@
1
+ """Functions package providing function decorators and utilities."""
2
+
3
+ from .decorator import function, get_functions, kit
4
+
5
+ __all__ = ["function", "kit", "get_functions"]