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.
Files changed (229) hide show
  1. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/PKG-INFO +375 -31
  2. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/README.md +368 -29
  3. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/pyproject.toml +26 -2
  4. databricks_agentbricks-0.7.0/src/databricks_agentbricks/agent_hint.py +62 -0
  5. databricks_agentbricks-0.7.0/src/databricks_agentbricks/cli/__main__.py +9 -0
  6. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/cli/app.py +5 -1
  7. databricks_agentbricks-0.7.0/src/databricks_agentbricks/cli/deploy.py +439 -0
  8. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/cli/dev.py +9 -14
  9. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/cli/doctor.py +55 -6
  10. databricks_agentbricks-0.7.0/src/databricks_agentbricks/cli/experimental.py +21 -0
  11. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/cli/init.py +122 -25
  12. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/cli/memory.py +131 -28
  13. databricks_agentbricks-0.7.0/src/databricks_agentbricks/cli/models.py +1177 -0
  14. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/cli/pipeline.py +98 -6
  15. databricks_agentbricks-0.7.0/src/databricks_agentbricks/cli/prompts.py +150 -0
  16. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/cli/sessions.py +90 -27
  17. databricks_agentbricks-0.7.0/src/databricks_agentbricks/cli/telemetry.py +429 -0
  18. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/cli/tools.py +3 -0
  19. databricks_agentbricks-0.7.0/src/databricks_agentbricks/cli/tracing.py +272 -0
  20. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/clients/apps_client.py +302 -41
  21. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/clients/apps_user_auth_client.py +4 -1
  22. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/clients/conversation_store_client.py +42 -15
  23. databricks_agentbricks-0.7.0/src/databricks_agentbricks/clients/databricks_cli.py +84 -0
  24. databricks_agentbricks-0.7.0/src/databricks_agentbricks/clients/local_ports.py +52 -0
  25. databricks_agentbricks-0.7.0/src/databricks_agentbricks/clients/local_tracing_client.py +145 -0
  26. databricks_agentbricks-0.7.0/src/databricks_agentbricks/clients/mlflow_trace_client.py +92 -0
  27. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/errors.py +3 -1
  28. databricks_agentbricks-0.7.0/src/databricks_agentbricks/model_upgrade.py +698 -0
  29. databricks_agentbricks-0.7.0/src/databricks_agentbricks/presentation/deploy.py +426 -0
  30. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/presentation/dev.py +5 -6
  31. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/presentation/endpoint.py +5 -9
  32. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/presentation/group.py +77 -1
  33. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/presentation/help.py +149 -1
  34. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/presentation/render.py +175 -47
  35. databricks_agentbricks-0.7.0/src/databricks_agentbricks/presentation/reporter.py +54 -0
  36. databricks_agentbricks-0.7.0/src/databricks_agentbricks/presentation/tracing.py +88 -0
  37. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/projects/agent_project.py +246 -3
  38. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/projects/app_manifest.py +17 -2
  39. databricks_agentbricks-0.7.0/src/databricks_agentbricks/reporting.py +98 -0
  40. databricks_agentbricks-0.7.0/src/databricks_agentbricks/services/deploy_service.py +951 -0
  41. databricks_agentbricks-0.7.0/src/databricks_agentbricks/services/deployment/app_provisioner.py +322 -0
  42. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/services/deployment/config.py +1 -1
  43. databricks_agentbricks-0.7.0/src/databricks_agentbricks/services/deployment/deploy_state.py +415 -0
  44. databricks_agentbricks-0.7.0/src/databricks_agentbricks/services/deployment/model_binding_provisioner.py +108 -0
  45. databricks_agentbricks-0.7.0/src/databricks_agentbricks/services/deployment/names.py +93 -0
  46. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/services/deployment/provisioners.py +33 -167
  47. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/services/dev_service.py +52 -39
  48. databricks_agentbricks-0.7.0/src/databricks_agentbricks/services/tracing/__init__.py +1 -0
  49. databricks_agentbricks-0.7.0/src/databricks_agentbricks/services/tracing/targets.py +97 -0
  50. databricks_agentbricks-0.7.0/src/databricks_agentbricks/services/tracing_service.py +138 -0
  51. databricks_agentbricks-0.7.0/src/databricks_agentbricks/skills.py +100 -0
  52. databricks_agentbricks-0.7.0/src/databricks_agentbricks/templates/agent-bricks-workflow/SKILL.md +48 -0
  53. databricks_agentbricks-0.7.0/src/databricks_agentbricks/templates/agent-bricks-workflow/references/deployment.md +70 -0
  54. databricks_agentbricks-0.7.0/src/databricks_agentbricks/templates/agent-bricks-workflow/references/state-and-tools.md +49 -0
  55. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/AGENTKIT_CONTRACT.md +46 -1
  56. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/AGENTS.md +11 -0
  57. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/README.md +52 -5
  58. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/agent/agent.py +56 -9
  59. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/pyproject.toml +1 -1
  60. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/runtime/adapter.py +0 -20
  61. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/AGENTKIT_CONTRACT.md +69 -13
  62. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/AGENTS.md +23 -8
  63. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/README.md +71 -11
  64. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/agent/agent.py +94 -32
  65. databricks_agentbricks-0.7.0/src/databricks_agentbricks/templates/agent-openai/agent/checkpoints.py +101 -0
  66. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/pyproject.toml +1 -1
  67. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/runtime/adapter.py +30 -26
  68. databricks_agentbricks-0.7.0/src/databricks_agentbricks/templates/agent-openai/tests/test_agent.py +683 -0
  69. databricks_agentbricks-0.7.0/src/databricks_agentbricks/templates/agent-openai/tests/test_checkpoints.py +207 -0
  70. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/agent/agent.py +8 -1
  71. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/pyproject.toml +1 -1
  72. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-openai/agent/agent.py +3 -0
  73. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-openai/pyproject.toml +1 -1
  74. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/ui/agent-langgraph/CHAT_APP.md +2 -0
  75. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/ui/agent-langgraph/runtime/ui.py +22 -24
  76. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/ui/agent-langgraph/tests/test_demo_ui.py +24 -33
  77. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/ui/agent-openai/CHAT_APP.md +2 -0
  78. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/ui/agent-openai/runtime/ui.py +21 -16
  79. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/ui/agent-openai/tests/test_demo_ui.py +5 -2
  80. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/ui/agent-openai/ui/app.js +17 -7
  81. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/_api_client.py +155 -16
  82. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/langgraph/__init__.py +4 -0
  83. databricks_agentbricks-0.7.0/src/databricks_agentkit/langgraph/history.py +37 -0
  84. databricks_agentbricks-0.7.0/src/databricks_agentkit/langgraph/memory.py +249 -0
  85. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/langgraph/session_store.py +57 -3
  86. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/memory_store.py +193 -1
  87. databricks_agentbricks-0.7.0/src/databricks_agentkit/model_upgrades/__init__.py +42 -0
  88. databricks_agentbricks-0.7.0/src/databricks_agentkit/model_upgrades/optimization.py +1962 -0
  89. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/openai/__init__.py +4 -0
  90. databricks_agentbricks-0.7.0/src/databricks_agentkit/openai/history.py +19 -0
  91. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/openai/mcp.py +21 -3
  92. databricks_agentbricks-0.7.0/src/databricks_agentkit/openai/memory.py +249 -0
  93. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/openai/sessions.py +2 -2
  94. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/README.md +43 -0
  95. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/app.py +25 -0
  96. databricks_agentbricks-0.7.0/src/databricks_agentkit/runtime/cors.py +79 -0
  97. databricks_agentbricks-0.7.0/src/databricks_agentkit/runtime/model_services.py +312 -0
  98. databricks_agentbricks-0.7.0/src/databricks_agentkit/runtime/prompt_registry.py +38 -0
  99. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/tool_manifest.py +24 -2
  100. databricks_agentbricks-0.5.1/src/databricks_agentbricks/cli/deploy.py +0 -243
  101. databricks_agentbricks-0.5.1/src/databricks_agentbricks/cli/tracing.py +0 -739
  102. databricks_agentbricks-0.5.1/src/databricks_agentbricks/clients/databricks_cli.py +0 -38
  103. databricks_agentbricks-0.5.1/src/databricks_agentbricks/presentation/deploy.py +0 -238
  104. databricks_agentbricks-0.5.1/src/databricks_agentbricks/presentation/reporter.py +0 -29
  105. databricks_agentbricks-0.5.1/src/databricks_agentbricks/presentation/tracing.py +0 -17
  106. databricks_agentbricks-0.5.1/src/databricks_agentbricks/reporting.py +0 -36
  107. databricks_agentbricks-0.5.1/src/databricks_agentbricks/services/deploy_service.py +0 -426
  108. databricks_agentbricks-0.5.1/src/databricks_agentbricks/services/deployment/names.py +0 -44
  109. databricks_agentbricks-0.5.1/src/databricks_agentbricks/templates/agent-openai/tests/test_agent.py +0 -349
  110. databricks_agentbricks-0.5.1/src/databricks_agentkit/langgraph/memory.py +0 -67
  111. databricks_agentbricks-0.5.1/src/databricks_agentkit/openai/memory.py +0 -67
  112. databricks_agentbricks-0.5.1/src/databricks_agentkit/runtime/model_services.py +0 -90
  113. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/.gitignore +0 -0
  114. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/NOTICE +0 -0
  115. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/__init__.py +0 -0
  116. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/cli/__init__.py +0 -0
  117. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/cli/auth.py +0 -0
  118. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/cli/endpoint.py +0 -0
  119. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/cli/mcp.py +0 -0
  120. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/cli/sandbox.py +0 -0
  121. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/clients/__init__.py +0 -0
  122. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/clients/api_client_provider.py +0 -0
  123. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/clients/legacy_runtime_store.py +0 -0
  124. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/clients/managed_runtime_store.py +0 -0
  125. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/clients/tracing_client.py +0 -0
  126. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/presentation/__init__.py +0 -0
  127. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/presentation/theme.py +0 -0
  128. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/projects/__init__.py +0 -0
  129. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/projects/config.py +0 -0
  130. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/projects/resolver.py +0 -0
  131. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/projects/types.py +0 -0
  132. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/py.typed +0 -0
  133. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/services/__init__.py +0 -0
  134. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/services/deployment/__init__.py +0 -0
  135. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/services/deployment/tool_access.py +0 -0
  136. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/services/deployment/tool_access_provisioner.py +0 -0
  137. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/services/invoke/__init__.py +0 -0
  138. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/services/invoke/auth.py +0 -0
  139. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/services/invoke/request.py +0 -0
  140. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/services/invoke/transport.py +0 -0
  141. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/services/invoke_service.py +0 -0
  142. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-bricks-migrate/SKILL.md +0 -0
  143. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/.env.example +0 -0
  144. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/.gitignore +0 -0
  145. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/CLAUDE.md +0 -0
  146. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/agent/__init__.py +0 -0
  147. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/agent/mcps.py +0 -0
  148. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/agent/tools/__init__.py +0 -0
  149. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/agent/tools/sample_tool.py +0 -0
  150. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/agent/tools/send_message.py +0 -0
  151. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/app.yaml +0 -0
  152. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/runtime/__init__.py +0 -0
  153. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/runtime/main.py +0 -0
  154. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/tests/__init__.py +0 -0
  155. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/tests/test_agent.py +0 -0
  156. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/tests/test_runtime.py +0 -0
  157. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-langgraph/tests/test_workspace.py +0 -0
  158. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/.env.example +0 -0
  159. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/.gitignore +0 -0
  160. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/CLAUDE.md +0 -0
  161. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/agent/__init__.py +0 -0
  162. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/agent/mcps.py +0 -0
  163. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/agent/tools/__init__.py +0 -0
  164. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/agent/tools/sample_tool.py +0 -0
  165. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/agent/tools/send_message.py +0 -0
  166. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/app.yaml +0 -0
  167. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/runtime/__init__.py +0 -0
  168. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/runtime/main.py +0 -0
  169. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/tests/__init__.py +0 -0
  170. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/tests/test_runtime.py +0 -0
  171. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/agent-openai/tests/test_workspace.py +0 -0
  172. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/.env.example +0 -0
  173. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/.gitignore +0 -0
  174. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/README.md +0 -0
  175. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/agent/__init__.py +0 -0
  176. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/app.yaml +0 -0
  177. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/runtime/__init__.py +0 -0
  178. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/runtime/main.py +0 -0
  179. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/tests/test_runtime.py +0 -0
  180. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-openai/.env.example +0 -0
  181. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-openai/.gitignore +0 -0
  182. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-openai/README.md +0 -0
  183. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-openai/agent/__init__.py +0 -0
  184. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-openai/app.yaml +0 -0
  185. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-openai/runtime/__init__.py +0 -0
  186. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-openai/runtime/main.py +0 -0
  187. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/custom-agent-openai/tests/test_runtime.py +0 -0
  188. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/sandbox_mcp.py +0 -0
  189. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/sandbox_mcp_langgraph.py +0 -0
  190. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/ui/agent-langgraph/runtime/main.py +0 -0
  191. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/ui/agent-langgraph/ui/agentbricks-mark.png +0 -0
  192. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/ui/agent-langgraph/ui/app.js +0 -0
  193. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/ui/agent-langgraph/ui/index.html +0 -0
  194. {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
  195. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/ui/agent-langgraph/ui/styles.css +0 -0
  196. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/ui/agent-openai/runtime/main.py +0 -0
  197. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/ui/agent-openai/ui/agentbricks-mark.png +0 -0
  198. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/ui/agent-openai/ui/index.html +0 -0
  199. {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
  200. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentbricks/templates/ui/agent-openai/ui/styles.css +0 -0
  201. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/__init__.py +0 -0
  202. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/_pagination.py +0 -0
  203. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/client.py +0 -0
  204. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/langgraph/genie.py +0 -0
  205. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/langgraph/mcp.py +0 -0
  206. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/langgraph/responses.py +0 -0
  207. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/models.py +0 -0
  208. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/openai/genie.py +0 -0
  209. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/py.typed +0 -0
  210. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/ARCHITECTURE.md +0 -0
  211. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/__init__.py +0 -0
  212. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/auth.py +0 -0
  213. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/durability/__init__.py +0 -0
  214. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/durability/execution.py +0 -0
  215. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/durability/heartbeat.py +0 -0
  216. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/durability/lakebase_runtime_store.py +0 -0
  217. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/durability/recovery.py +0 -0
  218. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/durability/store.py +0 -0
  219. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/execution.py +0 -0
  220. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/genie.py +0 -0
  221. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/mcp_auth.py +0 -0
  222. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/runtime.py +0 -0
  223. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/session_store_client.py +0 -0
  224. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/store.py +0 -0
  225. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/tracing.py +0 -0
  226. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/types.py +0 -0
  227. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/runtime/workspace.py +0 -0
  228. {databricks_agentbricks-0.5.1 → databricks_agentbricks-0.7.0}/src/databricks_agentkit/session_store.py +0 -0
  229. {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.5.1
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.8.0; extra == 'openai'
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) and
69
- memory, session, and durability resources. `agentbricks deploy` reads it to provision and wire everything
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 # run locally
156
- agentbricks deploy my-agent # deploy to Databricks
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 deploy my-agent` deploys a Databricks App named `agent-bricks-my-agent`, provisions the
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 list`, then `agentbricks -p <profile> memory stores get <resource-name>` | Workspace-wide; can include other projects' stores. Use the ID or resource name, not the display name. |
191
- | Session store names and details | `agentbricks -p <profile> sessions stores list`, then `agentbricks -p <profile> sessions stores get <name>` | Workspace-wide; can include other projects' stores. Use the store name. |
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>` | Managed Runtime Store cleanup checks the app identity and runs before app deletion; a cleanup failure retains the app for retry. Memory/session stores, tracing experiments, tools, and source files are retained. |
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.get("memory-id")`,
247
- `memory_store.list()`, and `memory_store.search()`, or `session_store.add()`,
248
- `session_store.get("session-id")`, and `session_store.list()`. Returned memories,
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
- memory_store.add(
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)` exposes `remember` and `recall` bound to one actor's partition; it resolves the
441
- store from the `[memory_store]` binding, carried to the runtime by the `AGENT_MEMORY_STORE` env var
442
- that `agentbricks deploy` injects, and returns no tools when no store is set, so the agent runs unchanged.
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 as
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
- deploy [<name>] [--source PATH] [--instances N]
527
- deployments list | get | logs | start | stop | delete
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 genie-one`, and
662
- `agentbricks tools add genie-agent` write explicit `auth = "user"` by default.
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
- Direct UC-function bindings remain app/default identity and do not accept `--auth user`.
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`, and creates a fresh invocation UUID per turn. The chat app also
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