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.
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/PKG-INFO +1 -1
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/pyproject.toml +1 -1
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/agents/chat.py +4 -1
- beamlit-0.0.34rc62/src/beamlit/agents/decorator.py +108 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/service_accounts/create_workspace_service_account.py +3 -1
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/service_accounts/delete_workspace_service_account.py +3 -1
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/service_accounts/get_workspace_service_accounts.py +3 -1
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/service_accounts/update_workspace_service_account.py +3 -1
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/deploy/deploy.py +60 -58
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/deploy/format.py +10 -0
- beamlit-0.0.34rc62/src/beamlit/functions/__init__.py +5 -0
- {beamlit-0.0.34rc60/src/beamlit/agents → beamlit-0.0.34rc62/src/beamlit/functions}/decorator.py +86 -130
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/__init__.py +3 -1
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/integrationtest/agent.py +2 -1
- beamlit-0.0.34rc62/src/integrationtest/main.py +11 -0
- beamlit-0.0.34rc60/src/beamlit/functions/__init__.py +0 -5
- beamlit-0.0.34rc60/src/beamlit/functions/decorator.py +0 -45
- beamlit-0.0.34rc60/src/integrationtest/main.py +0 -34
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/.gitignore +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/README.md +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/beamlit.yaml +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/__init__.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/agents/__init__.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/agents/chain.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/__init__.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/agents/__init__.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/agents/create_agent.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/agents/create_agent_release.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/agents/delete_agent.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/agents/delete_agent_history.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/agents/get_agent.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/agents/get_agent_environment_logs.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/agents/get_agent_history.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/agents/get_agent_metrics.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/agents/get_agent_trace_ids.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/agents/list_agent_history.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/agents/list_agents.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/agents/put_agent_history.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/agents/update_agent.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/configurations/__init__.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/configurations/get_configuration.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/default/__init__.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/default/get_trace.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/default/get_trace_ids.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/default/get_trace_logs.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/environments/__init__.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/environments/create_environment.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/environments/delete_environment.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/environments/get_environment.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/environments/get_environment_metrics.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/environments/list_environments.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/environments/update_environment.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/functions/__init__.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/functions/create_function.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/functions/create_function_release.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/functions/delete_function.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/functions/get_function.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/functions/get_function_environment_logs.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/functions/get_function_metrics.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/functions/get_function_trace_ids.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/functions/list_functions.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/functions/update_function.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/history/__init__.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/history/get_agents_history.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/history/list_agents_history.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/integrations/__init__.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/integrations/create_integration_connection.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/integrations/delete_integration_connection.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/integrations/get_integration.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/integrations/get_integration_connection.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/integrations/get_integration_connection_model.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/integrations/get_integration_model.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/integrations/list_integration_connection_models.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/integrations/list_integration_connections.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/integrations/list_integration_models.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/integrations/update_integration_connection.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/invitations/__init__.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/invitations/list_all_pending_invitations.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/locations/__init__.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/locations/list_locations.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/metrics/__init__.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/metrics/get_metrics.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/model_providers/__init__.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/model_providers/create_model_provider.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/model_providers/delete_model_provider.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/model_providers/get_model_provider.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/model_providers/list_model_providers.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/model_providers/update_model_provider.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/models/__init__.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/models/create_model.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/models/delete_model.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/models/get_model.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/models/get_model_environment_logs.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/models/get_model_metrics.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/models/get_model_trace_ids.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/models/list_models.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/models/release_model.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/models/update_model.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/policies/__init__.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/policies/create_policy.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/policies/delete_policy.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/policies/get_policy.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/policies/list_policies.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/policies/update_policy.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/privateclusters/__init__.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/privateclusters/create_private_cluster.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/privateclusters/delete_private_cluster.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/privateclusters/get_private_cluster.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/privateclusters/get_private_cluster_health.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/privateclusters/list_private_clusters.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/privateclusters/update_private_cluster.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/privateclusters/update_private_cluster_health.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/service_accounts/__init__.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/service_accounts/create_api_key_for_service_account.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/service_accounts/delete_api_key_for_service_account.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/service_accounts/list_api_keys_for_service_account.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/store/__init__.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/store/get_store_agent.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/store/get_store_function.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/store/list_store_agents.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/store/list_store_functions.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/__init__.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/accept_workspace_invitation.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/create_worspace.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/decline_workspace_invitation.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/delete_workspace.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/get_workspace.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/invite_workspace_user.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/leave_workspace.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/list_workspace_users.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/list_workspaces.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/remove_workspace_user.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/update_workspace.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/update_workspace_user_role.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/authentication/__init__.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/authentication/apikey.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/authentication/authentication.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/authentication/clientcredentials.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/authentication/credentials.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/authentication/device_mode.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/client.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/common/__init__.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/common/error.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/common/instrumentation.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/common/logger.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/common/secrets.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/common/settings.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/common/slugify.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/common/utils.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/deploy/__init__.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/deploy/parser.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/errors.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/functions/github/__init__.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/functions/github/github.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/functions/github/kit/__init__.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/functions/github/kit/pull_request.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/functions/math/__init__.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/functions/math/math.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/functions/mcp/mcp.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/functions/remote/remote.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/functions/search/__init__.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/functions/search/search.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/acl.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/agent.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/agent_chain.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/agent_history.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/agent_history_event.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/agent_metadata.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/agent_release.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/agent_spec.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/api_key.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/configuration.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/continent.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/core_event.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/core_spec.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/core_spec_configurations.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/core_status.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/country.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/create_api_key_for_service_account_body.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/create_workspace_service_account_body.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/create_workspace_service_account_response_200.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/delete_workspace_service_account_response_200.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/environment.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/environment_metadata.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/environment_metrics.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/environment_spec.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/flavor.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/function.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/function_kit.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/function_metadata.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/function_release.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/function_spec.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/get_trace_ids_response_200.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/get_trace_logs_response_200.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/get_trace_response_200.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/get_workspace_service_accounts_response_200_item.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/increase_and_rate_metric.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/integration_config.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/integration_connection.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/integration_connection_config.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/integration_connection_secret.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/integration_connection_spec.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/integration_model.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/integration_repository.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/invite_workspace_user_body.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/last_n_requests_metric.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/latency_metric.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/location_response.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/metadata.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/metadata_labels.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/metric.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/metrics.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/model.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/model_metadata.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/model_private_cluster.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/model_provider.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/model_release.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/model_spec.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/owner_fields.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/pending_invitation.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/pending_invitation_accept.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/pending_invitation_render.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/pending_invitation_render_invited_by.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/pending_invitation_render_workspace.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/pending_invitation_workspace_details.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/pod_template_spec.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/policy.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/policy_location.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/policy_spec.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/private_cluster.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/private_location.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/provider_config.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/qps.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/repository.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/request_total_metric.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/resource_deployment_metrics.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/resource_deployment_metrics_inference_per_second_per_region.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/resource_deployment_metrics_query_per_second_per_region_per_code.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/resource_environment_metrics.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/resource_environment_metrics_inference_per_region.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/resource_environment_metrics_inference_per_second_per_region.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/resource_environment_metrics_query_per_region_per_code.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/resource_environment_metrics_query_per_second_per_region_per_code.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/resource_log.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/resource_metrics.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/runtime.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/runtime_readiness_probe.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/runtime_resources.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/serverless_config.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/spec_configuration.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/store_agent.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/store_agent_labels.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/store_configuration.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/store_configuration_option.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/store_function.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/store_function_kit.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/store_function_labels.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/store_function_parameter.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/time_fields.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/trace_ids_response.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/update_workspace_service_account_body.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/update_workspace_service_account_response_200.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/update_workspace_user_role_body.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/websocket_channel.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/workspace.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/workspace_labels.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/models/workspace_user.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/py.typed +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/run.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/serve/app.py +1 -1
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/serve/middlewares/__init__.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/serve/middlewares/accesslog.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/serve/middlewares/processtime.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/beamlit/types.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/integrationtest/beamlit.yaml +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/integrationtest/functions/helloworld.py +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/integrationtest/pyproject.toml +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/src/integrationtest/uv.lock +0 -0
- {beamlit-0.0.34rc60 → beamlit-0.0.34rc62}/uv.lock +0 -0
@@ -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
|
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
|
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
|
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
|
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
|
-
|
24
|
+
MetadataLabels,
|
19
25
|
)
|
20
26
|
|
21
|
-
from .format import arg_to_dict
|
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
|
-
|
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
|
-
|
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
|
-
|
282
|
-
|
283
|
-
|
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
|
"""
|