databricks-agentbricks 0.5.1__tar.gz → 0.7.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.
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/PKG-INFO +375 -31
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/README.md +368 -29
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/pyproject.toml +26 -2
- databricks_agentbricks-0.7.0/src/databricks_agentbricks/agent_hint.py +62 -0
- databricks_agentbricks-0.7.0/src/databricks_agentbricks/cli/__main__.py +9 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/cli/app.py +5 -1
- databricks_agentbricks-0.7.0/src/databricks_agentbricks/cli/deploy.py +439 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/cli/dev.py +9 -14
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/cli/doctor.py +55 -6
- databricks_agentbricks-0.7.0/src/databricks_agentbricks/cli/experimental.py +21 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/cli/init.py +122 -25
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/cli/memory.py +131 -28
- databricks_agentbricks-0.7.0/src/databricks_agentbricks/cli/models.py +1177 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/cli/pipeline.py +98 -6
- databricks_agentbricks-0.7.0/src/databricks_agentbricks/cli/prompts.py +150 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/cli/sessions.py +90 -27
- databricks_agentbricks-0.7.0/src/databricks_agentbricks/cli/telemetry.py +429 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/cli/tools.py +3 -0
- databricks_agentbricks-0.7.0/src/databricks_agentbricks/cli/tracing.py +272 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/clients/apps_client.py +302 -41
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/clients/apps_user_auth_client.py +4 -1
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/clients/conversation_store_client.py +42 -15
- databricks_agentbricks-0.7.0/src/databricks_agentbricks/clients/databricks_cli.py +84 -0
- databricks_agentbricks-0.7.0/src/databricks_agentbricks/clients/local_ports.py +52 -0
- databricks_agentbricks-0.7.0/src/databricks_agentbricks/clients/local_tracing_client.py +145 -0
- databricks_agentbricks-0.7.0/src/databricks_agentbricks/clients/mlflow_trace_client.py +92 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/errors.py +3 -1
- databricks_agentbricks-0.7.0/src/databricks_agentbricks/model_upgrade.py +698 -0
- databricks_agentbricks-0.7.0/src/databricks_agentbricks/presentation/deploy.py +426 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/presentation/dev.py +5 -6
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/presentation/endpoint.py +5 -9
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/presentation/group.py +77 -1
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/presentation/help.py +149 -1
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/presentation/render.py +175 -47
- databricks_agentbricks-0.7.0/src/databricks_agentbricks/presentation/reporter.py +54 -0
- databricks_agentbricks-0.7.0/src/databricks_agentbricks/presentation/tracing.py +88 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/projects/agent_project.py +246 -3
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/projects/app_manifest.py +17 -2
- databricks_agentbricks-0.7.0/src/databricks_agentbricks/reporting.py +98 -0
- databricks_agentbricks-0.7.0/src/databricks_agentbricks/services/deploy_service.py +951 -0
- databricks_agentbricks-0.7.0/src/databricks_agentbricks/services/deployment/app_provisioner.py +322 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/services/deployment/config.py +1 -1
- databricks_agentbricks-0.7.0/src/databricks_agentbricks/services/deployment/deploy_state.py +415 -0
- databricks_agentbricks-0.7.0/src/databricks_agentbricks/services/deployment/model_binding_provisioner.py +108 -0
- databricks_agentbricks-0.7.0/src/databricks_agentbricks/services/deployment/names.py +93 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/services/deployment/provisioners.py +33 -167
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/services/dev_service.py +52 -39
- databricks_agentbricks-0.7.0/src/databricks_agentbricks/services/tracing/__init__.py +1 -0
- databricks_agentbricks-0.7.0/src/databricks_agentbricks/services/tracing/targets.py +97 -0
- databricks_agentbricks-0.7.0/src/databricks_agentbricks/services/tracing_service.py +138 -0
- databricks_agentbricks-0.7.0/src/databricks_agentbricks/skills.py +100 -0
- databricks_agentbricks-0.7.0/src/databricks_agentbricks/templates/agent-bricks-workflow/SKILL.md +48 -0
- databricks_agentbricks-0.7.0/src/databricks_agentbricks/templates/agent-bricks-workflow/references/deployment.md +70 -0
- databricks_agentbricks-0.7.0/src/databricks_agentbricks/templates/agent-bricks-workflow/references/state-and-tools.md +49 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/AGENTKIT_CONTRACT.md +46 -1
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/AGENTS.md +11 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/README.md +52 -5
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/agent/agent.py +56 -9
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/pyproject.toml +1 -1
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/runtime/adapter.py +0 -20
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/AGENTKIT_CONTRACT.md +69 -13
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/AGENTS.md +23 -8
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/README.md +71 -11
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/agent/agent.py +94 -32
- databricks_agentbricks-0.7.0/src/databricks_agentbricks/templates/agent-openai/agent/checkpoints.py +101 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/pyproject.toml +1 -1
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/runtime/adapter.py +30 -26
- databricks_agentbricks-0.7.0/src/databricks_agentbricks/templates/agent-openai/tests/test_agent.py +683 -0
- databricks_agentbricks-0.7.0/src/databricks_agentbricks/templates/agent-openai/tests/test_checkpoints.py +207 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/agent/agent.py +8 -1
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/pyproject.toml +1 -1
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-openai/agent/agent.py +3 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-openai/pyproject.toml +1 -1
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/ui/agent-langgraph/CHAT_APP.md +2 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/ui/agent-langgraph/runtime/ui.py +22 -24
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/ui/agent-langgraph/tests/test_demo_ui.py +24 -33
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/ui/agent-openai/CHAT_APP.md +2 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/ui/agent-openai/runtime/ui.py +21 -16
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/ui/agent-openai/tests/test_demo_ui.py +5 -2
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/ui/agent-openai/ui/app.js +17 -7
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/_api_client.py +155 -16
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/langgraph/__init__.py +4 -0
- databricks_agentbricks-0.7.0/src/databricks_agentkit/langgraph/history.py +37 -0
- databricks_agentbricks-0.7.0/src/databricks_agentkit/langgraph/memory.py +249 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/langgraph/session_store.py +57 -3
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/memory_store.py +193 -1
- databricks_agentbricks-0.7.0/src/databricks_agentkit/model_upgrades/__init__.py +42 -0
- databricks_agentbricks-0.7.0/src/databricks_agentkit/model_upgrades/optimization.py +1962 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/openai/__init__.py +4 -0
- databricks_agentbricks-0.7.0/src/databricks_agentkit/openai/history.py +19 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/openai/mcp.py +21 -3
- databricks_agentbricks-0.7.0/src/databricks_agentkit/openai/memory.py +249 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/openai/sessions.py +2 -2
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/README.md +43 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/app.py +25 -0
- databricks_agentbricks-0.7.0/src/databricks_agentkit/runtime/cors.py +79 -0
- databricks_agentbricks-0.7.0/src/databricks_agentkit/runtime/model_services.py +312 -0
- databricks_agentbricks-0.7.0/src/databricks_agentkit/runtime/prompt_registry.py +38 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/tool_manifest.py +24 -2
- databricks_agentbricks-0.5.1/src/databricks_agentbricks/cli/deploy.py +0 -243
- databricks_agentbricks-0.5.1/src/databricks_agentbricks/cli/tracing.py +0 -739
- databricks_agentbricks-0.5.1/src/databricks_agentbricks/clients/databricks_cli.py +0 -38
- databricks_agentbricks-0.5.1/src/databricks_agentbricks/presentation/deploy.py +0 -238
- databricks_agentbricks-0.5.1/src/databricks_agentbricks/presentation/reporter.py +0 -29
- databricks_agentbricks-0.5.1/src/databricks_agentbricks/presentation/tracing.py +0 -17
- databricks_agentbricks-0.5.1/src/databricks_agentbricks/reporting.py +0 -36
- databricks_agentbricks-0.5.1/src/databricks_agentbricks/services/deploy_service.py +0 -426
- databricks_agentbricks-0.5.1/src/databricks_agentbricks/services/deployment/names.py +0 -44
- databricks_agentbricks-0.5.1/src/databricks_agentbricks/templates/agent-openai/tests/test_agent.py +0 -349
- databricks_agentbricks-0.5.1/src/databricks_agentkit/langgraph/memory.py +0 -67
- databricks_agentbricks-0.5.1/src/databricks_agentkit/openai/memory.py +0 -67
- databricks_agentbricks-0.5.1/src/databricks_agentkit/runtime/model_services.py +0 -90
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/.gitignore +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/NOTICE +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/__init__.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/cli/__init__.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/cli/auth.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/cli/endpoint.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/cli/mcp.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/cli/sandbox.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/clients/__init__.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/clients/api_client_provider.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/clients/legacy_runtime_store.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/clients/managed_runtime_store.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/clients/tracing_client.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/presentation/__init__.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/presentation/theme.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/projects/__init__.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/projects/config.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/projects/resolver.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/projects/types.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/py.typed +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/services/__init__.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/services/deployment/__init__.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/services/deployment/tool_access.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/services/deployment/tool_access_provisioner.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/services/invoke/__init__.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/services/invoke/auth.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/services/invoke/request.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/services/invoke/transport.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/services/invoke_service.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-bricks-migrate/SKILL.md +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/.env.example +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/.gitignore +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/CLAUDE.md +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/agent/__init__.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/agent/mcps.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/agent/tools/__init__.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/agent/tools/sample_tool.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/agent/tools/send_message.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/app.yaml +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/runtime/__init__.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/runtime/main.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/tests/__init__.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/tests/test_agent.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/tests/test_runtime.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/tests/test_workspace.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/.env.example +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/.gitignore +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/CLAUDE.md +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/agent/__init__.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/agent/mcps.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/agent/tools/__init__.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/agent/tools/sample_tool.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/agent/tools/send_message.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/app.yaml +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/runtime/__init__.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/runtime/main.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/tests/__init__.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/tests/test_runtime.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/tests/test_workspace.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/.env.example +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/.gitignore +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/README.md +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/agent/__init__.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/app.yaml +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/runtime/__init__.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/runtime/main.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/tests/test_runtime.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-openai/.env.example +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-openai/.gitignore +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-openai/README.md +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-openai/agent/__init__.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-openai/app.yaml +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-openai/runtime/__init__.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-openai/runtime/main.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-openai/tests/test_runtime.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/sandbox_mcp.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/sandbox_mcp_langgraph.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/ui/agent-langgraph/runtime/main.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/ui/agent-langgraph/ui/agentbricks-mark.png +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/ui/agent-langgraph/ui/app.js +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/ui/agent-langgraph/ui/index.html +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/ui/agent-langgraph/ui/markdown-it-15.0.2.min.js +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/ui/agent-langgraph/ui/styles.css +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/ui/agent-openai/runtime/main.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/ui/agent-openai/ui/agentbricks-mark.png +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/ui/agent-openai/ui/index.html +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/ui/agent-openai/ui/markdown-it-15.0.2.min.js +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/ui/agent-openai/ui/styles.css +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/__init__.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/_pagination.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/client.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/langgraph/genie.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/langgraph/mcp.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/langgraph/responses.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/models.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/openai/genie.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/py.typed +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/ARCHITECTURE.md +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/__init__.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/auth.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/durability/__init__.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/durability/execution.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/durability/heartbeat.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/durability/lakebase_runtime_store.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/durability/recovery.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/durability/store.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/execution.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/genie.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/mcp_auth.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/runtime.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/session_store_client.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/store.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/tracing.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/types.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/workspace.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/session_store.py +0 -0
- {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/timefmt.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: databricks-agentbricks
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.7.0
|
|
4
4
|
Summary: Agent Bricks CLI and AgentKit SDK for custom agents on Databricks
|
|
5
5
|
Author-email: Databricks <agent-feedback@databricks.com>
|
|
6
6
|
License-File: NOTICE
|
|
@@ -13,6 +13,7 @@ Requires-Dist: mlflow-skinny>=3.10.1
|
|
|
13
13
|
Requires-Dist: packaging>=23.2
|
|
14
14
|
Requires-Dist: psycopg[binary]>=3.1
|
|
15
15
|
Requires-Dist: pyyaml>=6.0
|
|
16
|
+
Requires-Dist: requests<3,>=2.28.1
|
|
16
17
|
Requires-Dist: rich>=13.7
|
|
17
18
|
Requires-Dist: sqlalchemy[asyncio]>=2.0
|
|
18
19
|
Requires-Dist: tomli>=2.0
|
|
@@ -30,15 +31,20 @@ Provides-Extra: openai
|
|
|
30
31
|
Requires-Dist: databricks-agents>=1.9.3; extra == 'openai'
|
|
31
32
|
Requires-Dist: databricks-openai>=0.13.0; extra == 'openai'
|
|
32
33
|
Requires-Dist: mlflow>=3.10.1; extra == 'openai'
|
|
33
|
-
Requires-Dist: openai-agents>=0.
|
|
34
|
+
Requires-Dist: openai-agents>=0.15.0; extra == 'openai'
|
|
34
35
|
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc>=1.25.0; extra == 'openai'
|
|
36
|
+
Provides-Extra: upgrade
|
|
37
|
+
Requires-Dist: gepa>=0.0.26; extra == 'upgrade'
|
|
38
|
+
Requires-Dist: litellm>=1.64.0; extra == 'upgrade'
|
|
39
|
+
Requires-Dist: mlflow>=3.11.0; extra == 'upgrade'
|
|
35
40
|
Description-Content-Type: text/markdown
|
|
36
41
|
|
|
37
42
|
# Agent Bricks CLI (`agentbricks`)
|
|
38
43
|
|
|
39
44
|
Agent Bricks CLI is an experimental command-line interface for building and deploying custom
|
|
40
45
|
agents on Databricks. It manages memory, sessions, tracing, and deployments from one authenticated
|
|
41
|
-
command.
|
|
46
|
+
command. Under `agentbricks experimental`, it also picks the model and prompt behind each of the
|
|
47
|
+
agent's LLM calls by searching candidates on your own eval set.
|
|
42
48
|
|
|
43
49
|
> The underlying APIs are in preview and may need workspace enablement.
|
|
44
50
|
|
|
@@ -65,12 +71,13 @@ invocation protocol to design yourself. Bring your own agent, or start from a te
|
|
|
65
71
|
(LangGraph or OpenAI Agents) with the runtime, tests, and an optional chat UI wired up; you edit
|
|
66
72
|
the application code (model, tools, prompts).
|
|
67
73
|
- **`agent.toml`** - the declarative source of truth for the Databricks-managed infrastructure your
|
|
68
|
-
agent depends on: tool bindings (data sandbox, managed MCP services, Unity Catalog functions)
|
|
69
|
-
memory, session, and durability resources
|
|
74
|
+
agent depends on: tool bindings (data sandbox, managed MCP services, Unity Catalog functions),
|
|
75
|
+
memory, session, and durability resources, and the model services and Prompt Registry prompts
|
|
76
|
+
each LLM call uses. `agentbricks deploy` reads it to provision and wire everything
|
|
70
77
|
up (detailed under [Agent tools](#agent-tools)).
|
|
71
78
|
- **`agentbricks deploy`** - provisions the bound stores, grants the app's service principal access to
|
|
72
79
|
them, provisions the durable-runtime database when durability is on, configures tracing, and rolls
|
|
73
|
-
out the app. `agentbricks deployments` covers the lifecycle (list, get, logs, start, stop, delete).
|
|
80
|
+
out the app. `agentbricks deployments` covers the lifecycle (list, get, wait, logs, start, stop, delete).
|
|
74
81
|
- **`agentbricks dev`** - runs your agent from the same manifest the deployment uses, so local behavior
|
|
75
82
|
matches what ships.
|
|
76
83
|
|
|
@@ -88,6 +95,19 @@ The two ways to run an agent:
|
|
|
88
95
|
server with no `DurableAgentServer`: you define your own endpoints, request/response shapes, and protocol.
|
|
89
96
|
`agentbricks dev` and `agentbricks deploy` run and ship it the same way.
|
|
90
97
|
|
|
98
|
+
Both managed framework templates support human approval with request-user (OBO) tools. A new
|
|
99
|
+
invocation from the same authenticated user resumes the saved state with that request's tool
|
|
100
|
+
credentials; the browser can use its existing valid login session.
|
|
101
|
+
|
|
102
|
+
| Framework | Interactive OBO approval decisions |
|
|
103
|
+
| --- | --- |
|
|
104
|
+
| LangGraph | Approve, edit, or reject according to the middleware policy |
|
|
105
|
+
| OpenAI Agents SDK | Approve or reject, with the pending tool call's `call_id` |
|
|
106
|
+
|
|
107
|
+
Automatic OBO failure recovery remains unsupported. Existing generated apps need the corresponding
|
|
108
|
+
template source updates; upgrading the installed package does not rewrite their agent or adapter.
|
|
109
|
+
Custom servers own their authentication and approval protocol.
|
|
110
|
+
|
|
91
111
|
## Prerequisites
|
|
92
112
|
|
|
93
113
|
- **Python ≥3.10** — the `agentbricks` CLI installs and runs on any Python 3.10+. The
|
|
@@ -144,6 +164,33 @@ If Databricks SDK default authentication is already configured, you can skip `ag
|
|
|
144
164
|
You can also pass the global `--profile/-p` option before an individual command, for example
|
|
145
165
|
`agentbricks --profile <profile> tools list`. Use `--output json` for scripting.
|
|
146
166
|
|
|
167
|
+
The CLI sends best effort command usage telemetry after leaf commands. Its log records the static
|
|
168
|
+
command path, package version, operating system, duration, and process outcome (exit code and, for
|
|
169
|
+
nonzero exits, a bounded error category). Parameter entries include explicitly supplied options
|
|
170
|
+
and parsed Click defaults with supported typed values, automatically across all commands and
|
|
171
|
+
parent groups. Declare defaults in Click options so the shared emitter can read the resolved
|
|
172
|
+
values; fallbacks applied only inside command callbacks are not visible to Click. Omitted free-form
|
|
173
|
+
options and unresolved `None` defaults produce no entry. Environment, prompt, and default-map inputs
|
|
174
|
+
are not included. Explicit free-form options contribute only their static name. Declared Click
|
|
175
|
+
choices contribute an `AGENTBRICKS_CLI_`-prefixed value. Click boolean and numeric options
|
|
176
|
+
contribute their typed values; explicitly supplied non-finite floats and integers outside the log
|
|
177
|
+
schema's 64-bit range remain presence-only, while unsupported defaults are omitted. Hidden and
|
|
178
|
+
deprecated options follow the same policy, and repeated
|
|
179
|
+
options contribute one parameter entry per supplied value, up to 64 entries. Positional arguments,
|
|
180
|
+
raw command arguments, paths, IDs, secrets, arbitrary free-form option values, and exception
|
|
181
|
+
messages are omitted. Set
|
|
182
|
+
`AGENTBRICKS_DISABLE_TELEMETRY=1` to disable these uploads.
|
|
183
|
+
|
|
184
|
+
Telemetry runs only when a leaf command is invoked, whether its callback succeeds or fails. Help
|
|
185
|
+
and errors rejected during Click parsing, before a leaf starts, do not produce an event. Uploads
|
|
186
|
+
reuse the command's workspace client or let the Databricks SDK resolve the selected or default
|
|
187
|
+
profile. Authenticate first with `agentbricks login --profile <profile>` or configure SDK auth;
|
|
188
|
+
an SDK `external-browser` profile may prompt during telemetry even for local commands such as
|
|
189
|
+
`init`. The CLI waits up to two seconds for client setup, authentication, and upload on a daemon
|
|
190
|
+
thread, returning sooner if the worker finishes. This is not a delivery guarantee: unfinished
|
|
191
|
+
uploads can be lost when the process exits after the allowance expires. Missing credentials or a
|
|
192
|
+
failed upload never change the command result.
|
|
193
|
+
|
|
147
194
|
## Quickstart
|
|
148
195
|
|
|
149
196
|
The shortest path from a blank directory to a running and deployed agent:
|
|
@@ -152,17 +199,46 @@ The shortest path from a blank directory to a running and deployed agent:
|
|
|
152
199
|
agentbricks login --profile <profile>
|
|
153
200
|
agentbricks init my-agent # Defaults to LangGraph; add --framework=openai for OpenAI Agents SDK
|
|
154
201
|
cd my-agent
|
|
155
|
-
agentbricks dev #
|
|
156
|
-
agentbricks deploy
|
|
202
|
+
agentbricks dev # optional: develop and test locally
|
|
203
|
+
agentbricks deploy # deploy to Databricks as agent-bricks-my-agent
|
|
157
204
|
```
|
|
158
205
|
|
|
159
206
|
`agentbricks dev` runs the agent locally on `http://localhost:8000`, wrapping the Databricks Apps
|
|
160
207
|
local runtime so local behavior matches a deployment.
|
|
161
208
|
|
|
162
|
-
`agentbricks
|
|
209
|
+
`agentbricks init` records the deployment name in `agent.toml`, so `agentbricks deploy` from the
|
|
210
|
+
project directory deploys a Databricks App named `agent-bricks-my-agent`, provisions the
|
|
163
211
|
stores declared in `agent.toml`, and grants the app's service principal access to the stores and
|
|
164
212
|
direct App-auth tool resources declared there. Use `agentbricks deployments list` to find deployed
|
|
165
213
|
apps, and `agentbricks deployments get agent-bricks-my-agent` to print an app's URL and status.
|
|
214
|
+
Databricks App names cap at 30 characters, so a deployment name can be up to 17 characters after
|
|
215
|
+
the `agent-bricks-` prefix. `init` shortens a longer directory name to fit (for example
|
|
216
|
+
`caj-langgraph-agent` becomes `caj-langgr-<token>`); pass `agentbricks init --name <name>` to choose
|
|
217
|
+
it yourself, or `agentbricks deploy <name>` to change it later.
|
|
218
|
+
|
|
219
|
+
The app's compute starts first and boots while the other resources are provisioned. If a first
|
|
220
|
+
deploy stops partway, the app it created is kept: re-run `agentbricks deploy` to resume, or remove
|
|
221
|
+
it with `agentbricks deployments delete agent-bricks-my-agent`.
|
|
222
|
+
|
|
223
|
+
### Deploying from a coding agent
|
|
224
|
+
|
|
225
|
+
A first deploy takes ~3 min (mostly starting app compute); redeploys are faster. Either run
|
|
226
|
+
`agentbricks deploy` in the foreground with a long command timeout (for example, Claude Code's Bash
|
|
227
|
+
`timeout: 600000`), or start it in the background and wait on it:
|
|
228
|
+
|
|
229
|
+
```sh
|
|
230
|
+
agentbricks deploy my-agent --no-wait # quick checks, then deploys in the background
|
|
231
|
+
agentbricks deployments wait agent-bricks-my-agent
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
`deployments wait` returns within 100 seconds (`--timeout`). Exit 0 means the agent is deployed and
|
|
235
|
+
running, and it prints the URL; exit 1 means the deploy failed, and it prints the error and the end
|
|
236
|
+
of the deploy log; exit 75 means it is still deploying, so run the same command again. Don't poll
|
|
237
|
+
with `sleep`. Progress lines with the elapsed time go to stderr, also under `-o json`, whose stdout
|
|
238
|
+
is a single JSON document. A second `deploy` of the same app is refused while one is still running
|
|
239
|
+
from the project; the deploy's state and background log are in `.agentbricks/deploy-<app>.json` and
|
|
240
|
+
`.agentbricks/deploy-<app>.log`. If the App is busy with another operation, `deploy` retries for
|
|
241
|
+
about two minutes before failing.
|
|
166
242
|
|
|
167
243
|
`agentbricks init` declares default memory and session stores in `agent.toml`, so the deployed agent has
|
|
168
244
|
long-term memory and durable conversation history. It creates `<name>-<6-letter-token>-memory` and
|
|
@@ -177,6 +253,48 @@ it an HTTP request. MLflow tracing is on by default (`agentbricks init` binds a
|
|
|
177
253
|
`.agentbricks/` and `agentbricks deploy` to the bound workspace experiment; `agentbricks tracing list` shows the
|
|
178
254
|
available traces.
|
|
179
255
|
|
|
256
|
+
## Coding-agent workflow skills
|
|
257
|
+
|
|
258
|
+
The CLI bundles an `agent-bricks-workflow` skill for creating, developing, deploying, validating,
|
|
259
|
+
and troubleshooting agents. It is separate from the project-specific `agent-bricks-migrate` skill
|
|
260
|
+
generated by `init --existing`. Bundled guidance matches the installed CLI and requires no
|
|
261
|
+
download or separate setup command.
|
|
262
|
+
|
|
263
|
+
New `agentbricks init` projects already include the workflow skill. One shared bundle lives at
|
|
264
|
+
`.agents/skills/agent-bricks-workflow/`; `.claude/skills/agent-bricks-workflow/` and
|
|
265
|
+
`.agent/skills/agent-bricks-workflow/` contain pointers to it, not duplicate references.
|
|
266
|
+
Migration discovery uses these same three roots. Installation is project-local, preserves unrelated
|
|
267
|
+
configuration, leaves identical skills unchanged, and refuses to overwrite a different skill.
|
|
268
|
+
|
|
269
|
+
Current coding agents discover these locations:
|
|
270
|
+
|
|
271
|
+
| Coding agent | Project skill discovery |
|
|
272
|
+
| --- | --- |
|
|
273
|
+
| [Claude Code](https://code.claude.com/docs/en/skills) | `.claude/skills/` |
|
|
274
|
+
| [Codex](https://developers.openai.com/codex/skills/) | `.agents/skills/` |
|
|
275
|
+
| [Cursor](https://cursor.com/docs/skills) | `.agents/skills/` compatibility discovery |
|
|
276
|
+
| [GitHub Copilot](https://docs.github.com/en/copilot/concepts/agents/about-agent-skills) | `.agents/skills/` |
|
|
277
|
+
| [Gemini CLI](https://geminicli.com/docs/cli/skills/) | `.agents/skills/` compatibility discovery |
|
|
278
|
+
| [OpenCode](https://opencode.ai/docs/skills/) | `.agents/skills/` compatibility discovery |
|
|
279
|
+
| Other agents | Read the manifest directly |
|
|
280
|
+
|
|
281
|
+
The `.agent/skills/` pointer retains the existing migration discovery location for agents using that
|
|
282
|
+
convention. Support depends on the coding-agent version and its skill settings; restart the session
|
|
283
|
+
if discovery is cached. Generated `AGENTS.md` also links to the workflow skill. The skill is
|
|
284
|
+
advisory and does not authorize deployment or live calls.
|
|
285
|
+
|
|
286
|
+
When the CLI detects a coding-agent environment, it emits a single-line pointer to the bundled
|
|
287
|
+
skill on stderr, including for `--help`. Ordinary human invocations do not emit this hint.
|
|
288
|
+
Coding agents in existing projects can read that bundled file directly without installing
|
|
289
|
+
project-local skills or changing project configuration. Detection is best-effort and does not
|
|
290
|
+
gate skill installation during `init` or native discovery. Set `AGENTBRICKS_DISABLE_AGENT_HINT=1`
|
|
291
|
+
to suppress automatic hints. Hints never alter JSON stdout and are not emitted during shell
|
|
292
|
+
completion, SDK imports, or deployed agent runtime startup.
|
|
293
|
+
|
|
294
|
+
For a deployment-only task, local `dev` is optional. The workflow skill describes focused
|
|
295
|
+
verification of the deployed agent, rather than treating local execution as proof of managed
|
|
296
|
+
memory or session persistence.
|
|
297
|
+
|
|
180
298
|
## Inspect and clean up a project
|
|
181
299
|
|
|
182
300
|
Read `agent.toml` for the recorded agent name, declared memory/session stores, tracing, and tool
|
|
@@ -187,15 +305,15 @@ bindings. A declaration does not confirm that the resource exists or that the de
|
|
|
187
305
|
| Local onboarding checks | `agentbricks doctor .` | Offline; does not verify bindings or deployed resources. |
|
|
188
306
|
| Agent Bricks apps in a workspace | `agentbricks -p <profile> deployments list` | Lists apps with the `agent-bricks-` prefix in the selected workspace, including other projects. |
|
|
189
307
|
| App status and URL | `agentbricks -p <profile> deployments get agent-bricks-<name>` | Queries the selected workspace for the named app. |
|
|
190
|
-
| Memory store IDs and details | `agentbricks -p <profile> memory stores
|
|
191
|
-
| Session store names and details | `agentbricks -p <profile> sessions stores
|
|
308
|
+
| Memory store IDs and details | `agentbricks -p <profile> memory stores get <name>`, or `agentbricks -p <profile> memory stores list --name <part-of-name>` | Pass the display name from `agent.toml`, the ID, or the resource name. If several stores share a display name, `get` lists them; pass one resource name. `list` is workspace-wide and paged; `--name` and `--all` read every page. |
|
|
309
|
+
| Session store names and details | `agentbricks -p <profile> sessions stores get <name>`, or `agentbricks -p <profile> sessions stores list --name <part-of-name>` | Pass the store name from `agent.toml`. `list` is workspace-wide and paged; `--name` and `--all` read every page. |
|
|
192
310
|
|
|
193
311
|
Review each confirmation. Delete a store only after confirming that you own it and no other agent
|
|
194
312
|
needs it, using the same profile and identifier used to inspect it.
|
|
195
313
|
|
|
196
314
|
| Clean up | Command | Details |
|
|
197
315
|
| --- | --- | --- |
|
|
198
|
-
| Deployment | `agentbricks -p <profile> deployments delete agent-bricks-<name
|
|
316
|
+
| Deployment | `agentbricks -p <profile> deployments delete agent-bricks-<name> [--delete-source]` | Managed Runtime Store cleanup checks the app identity and runs before app deletion; a cleanup failure retains the app for retry. Returns once the app is gone. The workspace folder its source was uploaded to is kept unless you pass `--delete-source`, which deletes it once the app is confirmed gone; otherwise delete prints the command to remove it. Exits 1 if the app isn't confirmed gone or a requested folder delete fails. Memory/session stores, tracing experiments and tools are retained. |
|
|
199
317
|
| [Memory store](cli.md#agentbricks-memory-stores-delete) | `agentbricks -p <profile> memory stores delete <resource-name>` | Soft-deletes the store after confirmation. |
|
|
200
318
|
| [Session store](cli.md#agentbricks-sessions-stores-delete) | `agentbricks -p <profile> sessions stores delete <name>` | Deletes the store after confirmation. |
|
|
201
319
|
|
|
@@ -243,10 +361,18 @@ memory.delete()
|
|
|
243
361
|
|
|
244
362
|
The root collections manage stores: `agentkit.memory_stores.create/get/list` and
|
|
245
363
|
`agentkit.session_stores.create/get/list`. A returned store owns operations on its
|
|
246
|
-
contents, such as `memory_store.add()`, `memory_store.
|
|
247
|
-
`memory_store.
|
|
248
|
-
`session_store.get("session-id")`, and `session_store.list()`.
|
|
249
|
-
sessions, and stores own their `update()` and `delete()` operations.
|
|
364
|
+
contents, such as `memory_store.add()`, `memory_store.put()`,
|
|
365
|
+
`memory_store.get("memory-id")`, `memory_store.list()`, and `memory_store.search()`, or
|
|
366
|
+
`session_store.add()`, `session_store.get("session-id")`, and `session_store.list()`.
|
|
367
|
+
Returned memories, sessions, and stores own their `update()` and `delete()` operations.
|
|
368
|
+
|
|
369
|
+
`memory_store.add()` fails with `ALREADY_EXISTS` when a memory already exists at the
|
|
370
|
+
same `actor_id`, `session_id`, and `path`. `memory_store.put()` creates the memory or
|
|
371
|
+
updates the existing one: it replaces the content, or with `append=True` adds `content`
|
|
372
|
+
as new lines, skipping lines already present. `put()` is not atomic, so concurrent
|
|
373
|
+
writers to one path can overwrite each other. `add()`'s `write_mode` argument is
|
|
374
|
+
deprecated; use `put()` instead. `memory_store.list(actor_id=..., path=...)` returns the
|
|
375
|
+
memories at one exact path.
|
|
250
376
|
|
|
251
377
|
All `list()` methods return iterators that automatically consume server pages. List
|
|
252
378
|
`page_size` and search `limit` values must be between 1 and 100. `session.list_items()`
|
|
@@ -275,6 +401,10 @@ agentbricks dev
|
|
|
275
401
|
agentbricks --profile <profile> deploy my-agent
|
|
276
402
|
```
|
|
277
403
|
|
|
404
|
+
Use the URL `agentbricks dev` prints (port 8000, or `--app-port`). The `localhost:8001` line from the
|
|
405
|
+
wrapped `databricks apps run-local` is its proxy to the same app. Requests can fail with HTTP 500 for
|
|
406
|
+
a few seconds while the app starts.
|
|
407
|
+
|
|
278
408
|
Use `--framework openai` for OpenAI Agents. Templates keep agent code separate from the runtime
|
|
279
409
|
adapter and declare default Session and Memory Store bindings in `agent.toml`.
|
|
280
410
|
|
|
@@ -291,7 +421,9 @@ Each managed run is an **invocation**. Send a client-generated UUID `id` and you
|
|
|
291
421
|
```
|
|
292
422
|
|
|
293
423
|
The optional top-level `session_id` groups invocations into one application session. It is distinct
|
|
294
|
-
from the invocation `id` and from the `X-Routing-Key` sticky-routing header.
|
|
424
|
+
from the invocation `id` and from the `X-Routing-Key` sticky-routing header. The framework templates
|
|
425
|
+
require it, and read `input.actor` to choose whose long-term memory to use (see
|
|
426
|
+
[How sessions and memory are keyed](#how-sessions-and-memory-are-keyed)).
|
|
295
427
|
|
|
296
428
|
| Endpoint | Behavior |
|
|
297
429
|
| --- | --- |
|
|
@@ -328,6 +460,86 @@ scaffold a new project with the desired `agentbricks init --server` option and d
|
|
|
328
460
|
See the [runtime guide](src/databricks_agentkit/runtime/README.md) for agent hooks, full API examples,
|
|
329
461
|
and recovery behavior.
|
|
330
462
|
|
|
463
|
+
### Call an agent from an external browser (CORS)
|
|
464
|
+
|
|
465
|
+
An external frontend, such as a React app at `https://chat.example.com`, has a different origin
|
|
466
|
+
from the agent's Databricks Apps URL. Enable CORS for its exact origin when deploying:
|
|
467
|
+
|
|
468
|
+
```sh
|
|
469
|
+
agentbricks deploy my-agent \
|
|
470
|
+
--allowed-origin https://chat.example.com \
|
|
471
|
+
--allowed-origin http://localhost:3000
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
This replaces the allowlist and records it in `agent.toml`:
|
|
475
|
+
|
|
476
|
+
```toml
|
|
477
|
+
[cors]
|
|
478
|
+
allowed_origins = ["https://chat.example.com", "http://localhost:3000"]
|
|
479
|
+
```
|
|
480
|
+
|
|
481
|
+
Later `agentbricks deploy` calls reuse the recorded origins. Direct edits to this table also
|
|
482
|
+
apply to `agentbricks dev` and the next deployment. To revoke browser access, use
|
|
483
|
+
`agentbricks deploy --clear-allowed-origins` or set `allowed_origins = []` and redeploy.
|
|
484
|
+
CORS is off by default. Origins include scheme, hostname, and optional port; paths, wildcards,
|
|
485
|
+
and `null` origins are rejected. For internationalized hostnames, supply the browser's ASCII/punycode
|
|
486
|
+
origin (for example, `https://xn--fa-hia.example` for `https://faß.example`); Unicode input is rejected
|
|
487
|
+
to avoid changing the allowed hostname. You can copy `window.location.origin` from the frontend's
|
|
488
|
+
browser console. IPv6 addresses are compressed to match browser origins. List every intended origin
|
|
489
|
+
when replacing the allowlist and remove development origins before production deployment.
|
|
490
|
+
|
|
491
|
+
The customer journey is:
|
|
492
|
+
|
|
493
|
+
1. Deploy the managed agent server with the external frontend's allowed origin.
|
|
494
|
+
2. Authenticate the frontend user and obtain a Databricks user OAuth token. For an external IdP
|
|
495
|
+
such as Microsoft Entra, configure [account-wide token federation](https://docs.databricks.com/aws/en/dev-tools/auth/oauth-federation)
|
|
496
|
+
and exchange the user's IdP JWT for a Databricks user token. An IdP login alone is insufficient.
|
|
497
|
+
3. Send the token to the agent's `/api/` endpoints using `fetch`. The caller needs Apps `CAN USE`
|
|
498
|
+
permission and the required OAuth scopes. User-authorized tools also need Apps user-token
|
|
499
|
+
forwarding enabled, `auth = "user"` bindings, and the caller's resource permissions.
|
|
500
|
+
4. Receive JSON or stream SSE events directly in the browser:
|
|
501
|
+
|
|
502
|
+
```javascript
|
|
503
|
+
const response = await fetch(`${agentUrl}/api/invocations`, {
|
|
504
|
+
method: "POST",
|
|
505
|
+
credentials: "omit",
|
|
506
|
+
headers: {
|
|
507
|
+
Authorization: `Bearer ${databricksUserToken}`,
|
|
508
|
+
"Content-Type": "application/json",
|
|
509
|
+
},
|
|
510
|
+
body: JSON.stringify({
|
|
511
|
+
id: crypto.randomUUID(),
|
|
512
|
+
input: { messages: [{ role: "user", content: "Hello" }] },
|
|
513
|
+
stream: true,
|
|
514
|
+
}),
|
|
515
|
+
});
|
|
516
|
+
if (!response.ok || !response.body) throw new Error(`Invocation failed: ${response.status}`);
|
|
517
|
+
const reader = response.body.pipeThrough(new TextDecoderStream()).getReader();
|
|
518
|
+
while (true) {
|
|
519
|
+
const { value, done } = await reader.read();
|
|
520
|
+
if (done) break;
|
|
521
|
+
console.log(value); // Feed these SSE chunks to the frontend's SSE parser.
|
|
522
|
+
}
|
|
523
|
+
```
|
|
524
|
+
|
|
525
|
+
The runtime allows `GET`/`POST` and the `Authorization`, `Content-Type`, `X-Routing-Key`, and
|
|
526
|
+
`Last-Event-ID` request headers. It answers preflight without invoking the agent and adds CORS
|
|
527
|
+
headers to JSON, SSE, polling, and agent-generated error responses. Use `fetch` for authenticated
|
|
528
|
+
SSE; native `EventSource` cannot set the bearer Authorization header. Cross-origin cookie
|
|
529
|
+
authentication is not enabled. The bundled chat UI uses same-origin requests and needs no allowlist.
|
|
530
|
+
|
|
531
|
+
CORS controls browser access to responses; it does not replace authentication or prevent non-browser
|
|
532
|
+
clients from calling the API. Apps ingress must allow unauthenticated `OPTIONS` requests through.
|
|
533
|
+
Errors generated by ingress, including rejected tokens, do not pass through runtime middleware and
|
|
534
|
+
can appear as generic browser CORS failures. Verify a deployed App's preflight and authenticated
|
|
535
|
+
stream before relying on this path; a same-origin backend proxy is an alternative when ingress
|
|
536
|
+
cannot satisfy the browser contract.
|
|
537
|
+
|
|
538
|
+
Both the CLI and the agent project's `databricks-agentbricks` dependency must contain this feature;
|
|
539
|
+
upgrading the CLI alone does not upgrade an already resolved runtime dependency. Before release,
|
|
540
|
+
follow [the unreleased SDK instructions](CONTRIBUTING.md#testing-sdk--runtime-changes-in-a-scaffold).
|
|
541
|
+
The flags require `server = "agentbricks"`; custom servers configure their own CORS middleware.
|
|
542
|
+
|
|
331
543
|
## Memory and sessions
|
|
332
544
|
|
|
333
545
|
To hold context, an agent needs two kinds of state: the state of the interaction it is handling right
|
|
@@ -422,7 +634,8 @@ from databricks_agentkit import AgentKitClient
|
|
|
422
634
|
agentkit = AgentKitClient(WorkspaceClient())
|
|
423
635
|
|
|
424
636
|
memory_store = agentkit.memory_stores.create("support-agent-memory")
|
|
425
|
-
|
|
637
|
+
# put() creates the entry, or replaces its content if one already exists at this path.
|
|
638
|
+
memory_store.put(
|
|
426
639
|
actor_id="user-123",
|
|
427
640
|
path="/preferences/communication.md",
|
|
428
641
|
content="Prefers email over phone. Timezone: PST.",
|
|
@@ -434,15 +647,28 @@ results = memory_store.search(actor_id="user-123", query="communication preferen
|
|
|
434
647
|
```
|
|
435
648
|
|
|
436
649
|
To browse rather than search, `memory_store.list(actor_id=..., path_prefix=...)` returns entries
|
|
437
|
-
directly.
|
|
650
|
+
directly, and `memory_store.list(actor_id=..., path=...)` returns the entries at one exact path.
|
|
438
651
|
|
|
439
652
|
In an agent configured with `server = "agentbricks"`, add the memory tools so the model can read and write memory during a run.
|
|
440
|
-
`memory_tools(actor)`
|
|
441
|
-
|
|
442
|
-
|
|
653
|
+
`memory_tools(actor)` returns four tools bound to one actor's partition (the templates pass
|
|
654
|
+
`input.actor`; see [How sessions and memory are keyed](#how-sessions-and-memory-are-keyed)):
|
|
655
|
+
|
|
656
|
+
- `remember(fact, topic)` appends the fact to one memory per topic, `/{topic}.md`, with the topic
|
|
657
|
+
reduced to a safe path segment. Remembering a fact that is already there is a no-op.
|
|
658
|
+
- `recall(query, session_id=None)` searches the actor's memories, including ones written under other
|
|
659
|
+
paths, or only the ones saved under `session_id`.
|
|
660
|
+
- `forget(fact, topic, session_id=None)` removes a matching fact from every memory at the path, or
|
|
661
|
+
only from the one saved under `session_id`, and deletes a memory once no facts remain.
|
|
662
|
+
- `list_memories(session_id=None)` lists each memory's path, its session if it has one, and how
|
|
663
|
+
many facts it holds, optionally only for one session.
|
|
664
|
+
|
|
665
|
+
`remember` writes memories without a `session_id`; memories saved under a session are labeled with
|
|
666
|
+
it in `recall` and `list_memories`. `memory_tools` resolves the store from the `[memory_store]`
|
|
667
|
+
binding, carried to the runtime by the `AGENT_MEMORY_STORE` env var that `agentbricks deploy`
|
|
668
|
+
injects, and returns no tools when no store is set, so the agent runs unchanged.
|
|
443
669
|
That "no store set" path is also how it runs under `agentbricks dev`, which runs locally: memory is off
|
|
444
|
-
there (the store is provisioned and used only at deploy). The OpenAI Agents adapter exposes the same
|
|
445
|
-
`memory_tools()`:
|
|
670
|
+
there (the store is provisioned and used only at deploy). The OpenAI Agents adapter exposes the same
|
|
671
|
+
tools as `databricks_agentkit.openai.memory_tools(actor)`:
|
|
446
672
|
|
|
447
673
|
```python
|
|
448
674
|
from databricks_agentkit.langgraph import memory_tools
|
|
@@ -457,6 +683,30 @@ agent = create_agent(model=..., tools=[*your_tools, *memory_tools(actor)])
|
|
|
457
683
|
> `session_store.grant_permission(principal_id)` or `memory_store.grant_permission(principal_id)`;
|
|
458
684
|
> `agentbricks deploy` does this for the deployed app automatically.
|
|
459
685
|
|
|
686
|
+
### How sessions and memory are keyed
|
|
687
|
+
|
|
688
|
+
In an agent generated by `agentbricks init`, each invocation picks its session and its memory
|
|
689
|
+
partition:
|
|
690
|
+
|
|
691
|
+
- **Session store:** one conversation's state, keyed by the invocation's top-level `session_id`.
|
|
692
|
+
- **Memory store:** facts recalled across conversations, keyed by `input.actor`.
|
|
693
|
+
|
|
694
|
+
If a request leaves out `actor`, it defaults to the `session_id`, so long-term memory won't carry
|
|
695
|
+
across conversations. For memory that persists, pass a stable `actor`, such as the end user's ID, from
|
|
696
|
+
trusted application context. The chat app sends the signed-in user; HTTP clients, including
|
|
697
|
+
`agentbricks endpoint invoke`, have to send it themselves. With a request-user (`auth = "user"`) tool
|
|
698
|
+
bound, the runtime also namespaces a supplied `actor` to the signed-in user.
|
|
699
|
+
|
|
700
|
+
Memory is off under `agentbricks dev`, so try this against a deployed agent: two conversations, one
|
|
701
|
+
actor.
|
|
702
|
+
|
|
703
|
+
```sh
|
|
704
|
+
ask() { agentbricks --profile <profile> endpoint invoke agent-bricks-my-agent --path /api/invocations \
|
|
705
|
+
--json "{\"id\":\"$(uuidgen)\",\"session_id\":\"$(uuidgen)\",\"input\":{\"actor\":\"user-123\",\"messages\":[{\"role\":\"user\",\"content\":\"$1\"}]}}"; }
|
|
706
|
+
ask "Remember that I prefer answers as bullet points." # conversation 1 saves a fact
|
|
707
|
+
ask "How do I like my answers formatted?" # conversation 2 recalls it
|
|
708
|
+
```
|
|
709
|
+
|
|
460
710
|
### Declaring and provisioning stores
|
|
461
711
|
|
|
462
712
|
For a deployed agent, `agent.toml` declares which stores it uses and `agentbricks deploy` provisions them —
|
|
@@ -484,6 +734,79 @@ removes the corresponding `AGENT_MEMORY_STORE` or `AGENT_SESSION_STORE` entry fr
|
|
|
484
734
|
Unbinding does not delete the store or revoke an existing grant to the App's service principal.
|
|
485
735
|
If access must be revoked, coordinate that separately with the store owner or workspace admin.
|
|
486
736
|
|
|
737
|
+
## Model and prompt upgrades (experimental)
|
|
738
|
+
|
|
739
|
+
`agentbricks experimental models` and `agentbricks experimental prompts` find the best model and
|
|
740
|
+
prompt for each LLM call in your agent and swap them in. They live under `experimental` because
|
|
741
|
+
their flags and output may still change between releases without a deprecation period. The
|
|
742
|
+
agent.toml tables they write live under `[experimental]` too.
|
|
743
|
+
|
|
744
|
+
Point each of the agent's LLM calls at a Unity Gateway model service you own (Unity Gateway was
|
|
745
|
+
formerly AI Gateway), and the models behind them can change without a code change or redeploy. A
|
|
746
|
+
one-model agent binds one service. A compound agent binds one per call site, each under a role,
|
|
747
|
+
and declares the Prompt Registry prompts it loads so the search can rewrite them too:
|
|
748
|
+
|
|
749
|
+
```sh
|
|
750
|
+
agentbricks experimental models bind main.my_agent.router_llm --role router --default system.ai.claude-haiku-4-5
|
|
751
|
+
agentbricks experimental models bind main.my_agent.writer_llm --role writer --default system.ai.claude-sonnet-4-5
|
|
752
|
+
agentbricks experimental prompts bind main.my_agent.writer
|
|
753
|
+
agentbricks deploy my-agent # creates the services and grants the app access to them and the prompt
|
|
754
|
+
agentbricks experimental models upgrade -c router=claude-haiku-4-5,gpt-5-4-nano -c writer=claude-haiku-4-5 \
|
|
755
|
+
--predict agent.eval:predict --train-data agent.eval:TRAIN --val-data agent.eval:VAL \
|
|
756
|
+
--scorer agent.eval:SCORERS
|
|
757
|
+
agentbricks experimental models status # the job's state, then its recommendation
|
|
758
|
+
agentbricks experimental models apply # switch to it
|
|
759
|
+
```
|
|
760
|
+
|
|
761
|
+
By default `models upgrade` uploads the project to your workspace and runs the search as a
|
|
762
|
+
serverless Databricks job, because a search can take hours. `--run-on local` runs it in your
|
|
763
|
+
terminal instead, which needs the `upgrade` extra and the agent's dependencies installed. Each call
|
|
764
|
+
takes longer from a laptop than on a serverless job, and a record slower than `--latency-gate` (60
|
|
765
|
+
seconds by default) scores 0, so raise it if a local run warns that records went over the gate. The job imports the `predict_fn`,
|
|
766
|
+
eval data, and scorers you name from the project (the same inputs `optimize_prompts_and_models`
|
|
767
|
+
takes, below) and runs each eval record once per candidate, against a temporary `<service>_exp_<id>`
|
|
768
|
+
clone. Each LLM call must use its role's service, `resolve_model_service("<role>")`, which reads the
|
|
769
|
+
`AGENT_MODEL_SERVICE_<ROLE>` env var that deploy (and the job, before importing your code) sets.
|
|
770
|
+
GEPA also rewrites every prompt bound with `prompts bind` for each candidate model. Pass
|
|
771
|
+
`--prompt` to pick specific prompts instead, or `--models-only` to leave prompts alone. `models apply` switches
|
|
772
|
+
to the best quality / latency / cost trade-off and registers any rewritten prompts (prior versions
|
|
773
|
+
keep `@production_previous`). `models rollback` undoes the whole last apply: it switches every
|
|
774
|
+
model back and moves each prompt's alias back to its prior version. Apply refuses recommendations
|
|
775
|
+
whose prompt aliases changed during the search; rollback checks those aliases against the versions
|
|
776
|
+
recorded when the recommendation was applied. If rollback fails partway through, run it again
|
|
777
|
+
to finish the remaining changes. Each search owns its temporary clones, so overlapping jobs can
|
|
778
|
+
evaluate different models independently.
|
|
779
|
+
|
|
780
|
+
The search is `databricks_agentkit.model_upgrades`, which you can also call directly (for example
|
|
781
|
+
from a notebook) to tune several model services and MLflow Prompt Registry prompts together:
|
|
782
|
+
|
|
783
|
+
```python
|
|
784
|
+
from databricks_agentkit.model_upgrades import optimize_prompts_and_models, promote_to_prod
|
|
785
|
+
|
|
786
|
+
result = optimize_prompts_and_models(
|
|
787
|
+
predict, # predict(inputs: dict) -> answer
|
|
788
|
+
train_data, # [{"inputs": {...}, "expectations": {"expected_response": ...}}, ...]
|
|
789
|
+
val_data,
|
|
790
|
+
prompt_uris=["prompts:/main.my_agent.router@production"],
|
|
791
|
+
gateway_endpoints={
|
|
792
|
+
"main.my_agent.router_llm": ["claude-haiku-4-5", "gpt-5-4-mini"],
|
|
793
|
+
"main.my_agent.writer_llm": ["claude-sonnet-4-5", "claude-haiku-4-5"],
|
|
794
|
+
},
|
|
795
|
+
scorers=scorers, # MLflow scorers, or (inputs, expectations, answer) -> float
|
|
796
|
+
max_metric_calls=200,
|
|
797
|
+
)
|
|
798
|
+
promote_to_prod(result) # repoints the services, registers and aliases the winning prompts
|
|
799
|
+
```
|
|
800
|
+
|
|
801
|
+
Model choices use a UCB1 bandit by default (`model_selection="reflection"` asks the reflection LLM
|
|
802
|
+
instead); prompts are rewritten by GEPA's reflection loop, which uses Claude Opus 5.5. Both need the `upgrade` extra:
|
|
803
|
+
`pip install 'databricks-agentbricks[upgrade]'`.
|
|
804
|
+
|
|
805
|
+
Prompts the agent loads from the MLflow Prompt Registry go under `[experimental.prompts]`
|
|
806
|
+
(`agentbricks experimental prompts bind main.my_agent.writer`), and deploy grants the app
|
|
807
|
+
the schema privileges the registry requires to load them. `agentbricks experimental prompts list`
|
|
808
|
+
shows each bound prompt and the version its `@production` alias points at.
|
|
809
|
+
|
|
487
810
|
## Commands
|
|
488
811
|
|
|
489
812
|
For the full command reference - every command, subcommand, argument, and option, in table form -
|
|
@@ -517,14 +840,31 @@ agentbricks [-p <profile>] [-o text|json]
|
|
|
517
840
|
add sandbox --scope SCOPE [--scope SCOPE ...]
|
|
518
841
|
[--no-databricks-access-token-included] [--source PATH]
|
|
519
842
|
add mcp SERVICE [--name NAME] [--source PATH]
|
|
520
|
-
add uc-function FUNCTION [--name NAME] [--source PATH]
|
|
843
|
+
add uc-function FUNCTION [--name NAME] [--auth user|app] [--source PATH]
|
|
521
844
|
add genie-one [--name NAME] [--auth user|app] [--source PATH]
|
|
522
845
|
add genie-agent SPACE_ID [--name NAME] [--auth user|app] [--source PATH]
|
|
523
846
|
list [--kind sandbox|mcp|uc-function|genie-one|genie-agent]
|
|
524
847
|
[--schema CATALOG.SCHEMA]
|
|
525
848
|
remove TOOL_ID [MCP_SERVICE] [--source PATH]
|
|
526
|
-
|
|
527
|
-
|
|
849
|
+
models
|
|
850
|
+
bind SERVICE [--role ROLE] [--default MODEL] [--source PATH]
|
|
851
|
+
unbind | list | status
|
|
852
|
+
set MODEL [--role ROLE] [--yes]
|
|
853
|
+
rollback [--role ROLE] [--yes]
|
|
854
|
+
upgrade [--candidates [ROLE=]MODEL[,...] [...]] [--prompt URI ... | --models-only] --predict REF --train-data REF --val-data REF
|
|
855
|
+
--scorer REF [...] [--budget N] [--quality-weight Q] [--latency-weight L] [--cost-weight C]
|
|
856
|
+
[--timeout-hours H]
|
|
857
|
+
[--run-on job|local] [--apply never|ask|auto] [--wait]
|
|
858
|
+
apply [--yes]
|
|
859
|
+
prompts
|
|
860
|
+
bind PROMPT [--key KEY] [--source PATH]
|
|
861
|
+
unbind KEY [--source PATH]
|
|
862
|
+
list [--source PATH]
|
|
863
|
+
deploy [<name>] [--source PATH] [--instances N] [--no-wait]
|
|
864
|
+
[--allowed-origin ORIGIN ... | --clear-allowed-origins]
|
|
865
|
+
deployments
|
|
866
|
+
wait [<name>] [--timeout SECONDS] [--source PATH]
|
|
867
|
+
list | get | logs | start | stop | delete
|
|
528
868
|
endpoint
|
|
529
869
|
invoke [APP] --path PATH [--url URL] [--json JSON] [--sse]
|
|
530
870
|
```
|
|
@@ -658,8 +998,9 @@ agentbricks tools list
|
|
|
658
998
|
|
|
659
999
|
### Managed tool identity and migration
|
|
660
1000
|
|
|
661
|
-
`agentbricks tools add mcp`, `agentbricks tools add sandbox`, `agentbricks tools add
|
|
662
|
-
`agentbricks tools add genie-
|
|
1001
|
+
`agentbricks tools add mcp`, `agentbricks tools add sandbox`, `agentbricks tools add uc-function`,
|
|
1002
|
+
`agentbricks tools add genie-one`, and `agentbricks tools add genie-agent` write explicit
|
|
1003
|
+
`auth = "user"` by default.
|
|
663
1004
|
Use `--auth app` for the App service principal instead. This field is on the tool entry, not
|
|
664
1005
|
inside `source` or `policy`:
|
|
665
1006
|
|
|
@@ -670,7 +1011,8 @@ auth = "user"
|
|
|
670
1011
|
source = { kind = "mcp", service = "system.ai.web_search" }
|
|
671
1012
|
```
|
|
672
1013
|
|
|
673
|
-
|
|
1014
|
+
UC-function bindings use the request user's permissions by default. Use `--auth app` to execute
|
|
1015
|
+
with the App service principal's permissions instead.
|
|
674
1016
|
Managed-tool add commands write the selected identity to `agent.toml`; inspect that manifest to
|
|
675
1017
|
review configured bindings. Missing legacy auth continues to mean App identity at runtime; it is
|
|
676
1018
|
never silently upgraded to user identity.
|
|
@@ -769,6 +1111,7 @@ Deploy derives Apps user scopes from explicit `auth = "user"` bindings and union
|
|
|
769
1111
|
| Managed MCP (governed ingress) | `ai-gateway` |
|
|
770
1112
|
| `system.ai.dbsql` | `ai-gateway`, `sql` |
|
|
771
1113
|
| `system.ai.genie_one_mcp` | `ai-gateway`, `genie` |
|
|
1114
|
+
| UC function | `mcp.functions` |
|
|
772
1115
|
| Sandbox with a Volume downscope | `ai-gateway`, `files` |
|
|
773
1116
|
| First-class Genie One or Genie Agent | `genie` |
|
|
774
1117
|
| Sandbox with token injection | `ai-gateway`, `workspace.workspace` |
|
|
@@ -1040,7 +1383,8 @@ via the `AGENT_MEMORY_STORE` env var that `deploy` injects; `agentbricks dev` ru
|
|
|
1040
1383
|
and does not inject it. The id is not persisted in `agent.toml`.)
|
|
1041
1384
|
|
|
1042
1385
|
The chat UI generates a stable application session UUID in browser local storage, sends it as the
|
|
1043
|
-
invocation's top-level `session_id`,
|
|
1386
|
+
invocation's top-level `session_id`, sends the signed-in user as `input.actor`, and creates a fresh
|
|
1387
|
+
invocation UUID per turn. The chat app also
|
|
1044
1388
|
sends this session UUID in the `X-Routing-Key` request header, which is used verbatim to pin
|
|
1045
1389
|
the session to one app replica (it must be non-blank and no more than 128 UTF-8 bytes). The header is neither
|
|
1046
1390
|
authentication nor the template's application session state; it is independent sticky-routing
|