databricks-agentbricks 0.2.0__tar.gz → 0.4.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 (165) hide show
  1. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/PKG-INFO +272 -140
  2. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/README.md +269 -138
  3. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/pyproject.toml +4 -3
  4. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/_group.py +2 -2
  5. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/agent_project.py +30 -8
  6. databricks_agentbricks-0.4.0/src/databricks_agentbricks/app_resources.py +395 -0
  7. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/cli/__init__.py +1 -1
  8. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/cli/app.py +7 -5
  9. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/cli/app_auth.py +11 -8
  10. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/cli/auth.py +5 -5
  11. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/cli/deploy.py +137 -52
  12. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/cli/dev.py +29 -29
  13. databricks_agentbricks-0.4.0/src/databricks_agentbricks/cli/doctor.py +1127 -0
  14. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/cli/endpoint.py +14 -9
  15. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/cli/endpoint_examples.py +3 -3
  16. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/cli/help.py +187 -98
  17. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/cli/init.py +14 -12
  18. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/cli/mcp.py +2 -2
  19. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/cli/memory.py +16 -12
  20. databricks_agentbricks-0.4.0/src/databricks_agentbricks/cli/pipeline.py +200 -0
  21. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/cli/sandbox.py +1 -1
  22. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/cli/sessions.py +13 -13
  23. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/cli/tools.py +41 -16
  24. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/cli/tracing.py +270 -81
  25. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/errors.py +1 -1
  26. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/lakebase_runtime_store.py +1 -1
  27. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/project_config.py +3 -3
  28. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-bricks-migrate/SKILL.md +11 -8
  29. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-langgraph/AGENTKIT_CONTRACT.md +11 -1
  30. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-langgraph/AGENTS.md +2 -2
  31. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-langgraph/README.md +20 -17
  32. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-langgraph/agent/agent.py +3 -1
  33. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-langgraph/app.yaml +2 -2
  34. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-langgraph/pyproject.toml +1 -1
  35. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-langgraph/runtime/adapter.py +24 -14
  36. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-langgraph/runtime/main.py +1 -1
  37. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-langgraph/tests/test_agent.py +21 -4
  38. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-openai/AGENTKIT_CONTRACT.md +7 -1
  39. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-openai/AGENTS.md +12 -10
  40. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-openai/README.md +19 -16
  41. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-openai/app.yaml +2 -2
  42. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-openai/pyproject.toml +1 -1
  43. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-openai/runtime/adapter.py +8 -11
  44. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-openai/runtime/main.py +1 -1
  45. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-openai/tests/test_agent.py +10 -5
  46. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/README.md +3 -3
  47. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/pyproject.toml +1 -1
  48. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/runtime/main.py +1 -1
  49. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/custom-agent-openai/README.md +3 -3
  50. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/custom-agent-openai/pyproject.toml +1 -1
  51. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/custom-agent-openai/runtime/main.py +1 -1
  52. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/ui/agent-langgraph/CHAT_APP.md +4 -4
  53. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/ui/agent-langgraph/runtime/main.py +1 -1
  54. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/ui/agent-langgraph/runtime/ui.py +4 -6
  55. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/ui/agent-langgraph/tests/test_demo_ui.py +42 -4
  56. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/ui/agent-langgraph/ui/app.js +22 -17
  57. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/ui/agent-openai/CHAT_APP.md +4 -4
  58. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/ui/agent-openai/runtime/main.py +1 -1
  59. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/ui/agent-openai/runtime/ui.py +4 -6
  60. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/ui/agent-openai/tests/test_demo_ui.py +42 -4
  61. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/ui/agent-openai/ui/app.js +21 -16
  62. databricks_agentbricks-0.4.0/src/databricks_agentbricks/tool_access.py +364 -0
  63. databricks_agentbricks-0.4.0/src/databricks_agentbricks/trace_tables.py +36 -0
  64. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/_api_client.py +80 -2
  65. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/langgraph/mcp.py +2 -2
  66. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/langgraph/memory.py +1 -1
  67. databricks_agentbricks-0.4.0/src/databricks_agentkit/langgraph/responses.py +40 -0
  68. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/langgraph/session_store.py +1 -1
  69. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/openai/mcp.py +9 -9
  70. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/openai/memory.py +1 -1
  71. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/openai/sessions.py +1 -1
  72. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/runtime/ARCHITECTURE.md +20 -3
  73. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/runtime/README.md +23 -18
  74. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/runtime/app.py +47 -22
  75. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/runtime/auth.py +18 -5
  76. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/runtime/durability/execution.py +42 -14
  77. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/runtime/durability/lakebase_runtime_store.py +224 -45
  78. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/runtime/execution.py +49 -14
  79. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/runtime/runtime.py +39 -13
  80. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/runtime/store.py +113 -18
  81. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/runtime/tool_manifest.py +106 -9
  82. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/runtime/types.py +9 -3
  83. databricks_agentbricks-0.2.0/src/databricks_agentbricks/app_resources.py +0 -139
  84. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/.gitignore +0 -0
  85. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/NOTICE +0 -0
  86. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/__init__.py +0 -0
  87. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/cli/endpoint_output.py +0 -0
  88. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/cli/endpoint_request.py +0 -0
  89. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/cli/endpoint_transport.py +0 -0
  90. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/databricks_cli.py +0 -0
  91. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/legacy_lakebase_runtime_store.py +0 -0
  92. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/project_types.py +0 -0
  93. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/py.typed +0 -0
  94. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/render.py +0 -0
  95. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-langgraph/.env.example +0 -0
  96. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-langgraph/.gitignore +0 -0
  97. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-langgraph/CLAUDE.md +0 -0
  98. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-langgraph/agent/__init__.py +0 -0
  99. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-langgraph/agent/mcps.py +0 -0
  100. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-langgraph/agent/tools/__init__.py +0 -0
  101. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-langgraph/agent/tools/sample_tool.py +0 -0
  102. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-langgraph/agent/tools/send_message.py +0 -0
  103. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-langgraph/runtime/__init__.py +0 -0
  104. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-langgraph/tests/__init__.py +0 -0
  105. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-langgraph/tests/test_runtime.py +0 -0
  106. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-langgraph/tests/test_workspace.py +0 -0
  107. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-openai/.env.example +0 -0
  108. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-openai/.gitignore +0 -0
  109. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-openai/CLAUDE.md +0 -0
  110. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-openai/agent/__init__.py +0 -0
  111. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-openai/agent/agent.py +0 -0
  112. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-openai/agent/mcps.py +0 -0
  113. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-openai/agent/tools/__init__.py +0 -0
  114. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-openai/agent/tools/sample_tool.py +0 -0
  115. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-openai/agent/tools/send_message.py +0 -0
  116. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-openai/runtime/__init__.py +0 -0
  117. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-openai/tests/__init__.py +0 -0
  118. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-openai/tests/test_runtime.py +0 -0
  119. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/agent-openai/tests/test_workspace.py +0 -0
  120. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/.env.example +0 -0
  121. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/.gitignore +0 -0
  122. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/agent/__init__.py +0 -0
  123. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/agent/agent.py +0 -0
  124. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/app.yaml +0 -0
  125. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/runtime/__init__.py +0 -0
  126. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/tests/test_runtime.py +0 -0
  127. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/custom-agent-openai/.env.example +0 -0
  128. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/custom-agent-openai/.gitignore +0 -0
  129. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/custom-agent-openai/agent/__init__.py +0 -0
  130. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/custom-agent-openai/agent/agent.py +0 -0
  131. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/custom-agent-openai/app.yaml +0 -0
  132. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/custom-agent-openai/runtime/__init__.py +0 -0
  133. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/custom-agent-openai/tests/test_runtime.py +0 -0
  134. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/sandbox_mcp.py +0 -0
  135. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/sandbox_mcp_langgraph.py +0 -0
  136. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/ui/agent-langgraph/ui/agentbricks-mark.png +0 -0
  137. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/ui/agent-langgraph/ui/index.html +0 -0
  138. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/ui/agent-langgraph/ui/styles.css +0 -0
  139. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/ui/agent-openai/ui/agentbricks-mark.png +0 -0
  140. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/ui/agent-openai/ui/index.html +0 -0
  141. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/templates/ui/agent-openai/ui/styles.css +0 -0
  142. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentbricks/theme.py +0 -0
  143. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/__init__.py +0 -0
  144. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/_pagination.py +0 -0
  145. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/client.py +0 -0
  146. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/langgraph/__init__.py +0 -0
  147. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/langgraph/genie.py +0 -0
  148. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/memory_store.py +0 -0
  149. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/models.py +0 -0
  150. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/openai/__init__.py +0 -0
  151. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/openai/genie.py +0 -0
  152. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/py.typed +0 -0
  153. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/runtime/__init__.py +0 -0
  154. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/runtime/durability/__init__.py +0 -0
  155. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/runtime/durability/heartbeat.py +0 -0
  156. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/runtime/durability/recovery.py +0 -0
  157. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/runtime/durability/store.py +0 -0
  158. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/runtime/genie.py +0 -0
  159. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/runtime/mcp_auth.py +0 -0
  160. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/runtime/model_services.py +0 -0
  161. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/runtime/session_store_client.py +0 -0
  162. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/runtime/tracing.py +0 -0
  163. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/runtime/workspace.py +0 -0
  164. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.0}/src/databricks_agentkit/session_store.py +0 -0
  165. {databricks_agentbricks-0.2.0 → databricks_agentbricks-0.4.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.2.0
3
+ Version: 0.4.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
@@ -10,6 +10,7 @@ Requires-Dist: databricks-ai-bridge[memory]>=0.22.0
10
10
  Requires-Dist: databricks-sdk>=0.124.0
11
11
  Requires-Dist: fastapi>=0.129.0
12
12
  Requires-Dist: mlflow-skinny>=3.10.1
13
+ Requires-Dist: packaging>=23.2
13
14
  Requires-Dist: psycopg[binary]>=3.1
14
15
  Requires-Dist: pyyaml>=6.0
15
16
  Requires-Dist: rich>=13.7
@@ -20,7 +21,7 @@ Requires-Dist: uvicorn>=0.20.0
20
21
  Provides-Extra: langgraph
21
22
  Requires-Dist: databricks-agents>=1.9.3; extra == 'langgraph'
22
23
  Requires-Dist: databricks-langchain>=0.17.0; extra == 'langgraph'
23
- Requires-Dist: langchain-mcp-adapters>=0.2.1; extra == 'langgraph'
24
+ Requires-Dist: langchain-mcp-adapters>=0.3.0; extra == 'langgraph'
24
25
  Requires-Dist: langchain>=1.0.0; extra == 'langgraph'
25
26
  Requires-Dist: langgraph>=1.1.0; extra == 'langgraph'
26
27
  Requires-Dist: mlflow>=3.10.1; extra == 'langgraph'
@@ -33,7 +34,7 @@ Requires-Dist: openai-agents>=0.8.0; extra == 'openai'
33
34
  Requires-Dist: opentelemetry-exporter-otlp-proto-grpc>=1.25.0; extra == 'openai'
34
35
  Description-Content-Type: text/markdown
35
36
 
36
- # Agent Bricks CLI (`ab`)
37
+ # Agent Bricks CLI (`agentbricks`)
37
38
 
38
39
  Agent Bricks CLI is an experimental command-line interface for building and deploying custom
39
40
  agents on Databricks. It manages memory, sessions, tracing, and deployments from one authenticated
@@ -60,17 +61,17 @@ invocation protocol to design yourself. Bring your own agent, or start from a te
60
61
 
61
62
  ![Deployment: from a blank directory to a running service](docs/deployment.svg)
62
63
 
63
- - **Agent project** - `ab init` scaffolds a deployable project from a framework template
64
+ - **Agent project** - `agentbricks init` scaffolds a deployable project from a framework template
64
65
  (LangGraph or OpenAI Agents) with the runtime, tests, and an optional chat UI wired up; you edit
65
66
  the application code (model, tools, prompts).
66
67
  - **`agent.toml`** - the declarative source of truth for the Databricks-managed infrastructure your
67
68
  agent depends on: tool bindings (data sandbox, managed MCP services, Unity Catalog functions) and
68
- memory, session, and durability resources. `ab deploy` reads it to provision and wire everything
69
+ memory, session, and durability resources. `agentbricks deploy` reads it to provision and wire everything
69
70
  up (detailed under [Agent tools](#agent-tools)).
70
- - **`ab deploy`** - provisions the bound stores, grants the app's service principal access to
71
+ - **`agentbricks deploy`** - provisions the bound stores, grants the app's service principal access to
71
72
  them, provisions the durable-runtime database when durability is on, configures tracing, and rolls
72
- out the app. `ab deployments` covers the lifecycle (list, get, logs, start, stop, delete).
73
- - **`ab dev`** - runs your agent from the same manifest the deployment uses, so local behavior
73
+ out the app. `agentbricks deployments` covers the lifecycle (list, get, logs, start, stop, delete).
74
+ - **`agentbricks dev`** - runs your agent from the same manifest the deployment uses, so local behavior
74
75
  matches what ships.
75
76
 
76
77
  **Runtime**
@@ -83,28 +84,28 @@ The two ways to run an agent:
83
84
  invocation contract (synchronous, streaming, background). Enable the durable runtime so
84
85
  long-running and background work survives restarts, redeploys, and crashes. The framework
85
86
  templates are thin layers over `DurableAgentServer` (HTTP contract detailed under [Runtime](#runtime)).
86
- - **Custom server - generic, full control.** `ab init --server custom` scaffolds a minimal FastAPI
87
+ - **Custom server - generic, full control.** `agentbricks init --server custom` scaffolds a minimal FastAPI
87
88
  server with no `DurableAgentServer`: you define your own endpoints, request/response shapes, and protocol.
88
- `ab dev` and `ab deploy` run and ship it the same way.
89
+ `agentbricks dev` and `agentbricks deploy` run and ship it the same way.
89
90
 
90
91
  ## Prerequisites
91
92
 
92
- - **Python ≥3.10** — the `ab` CLI installs and runs on any Python 3.10+. The
93
- `memory`, `sessions`, `tools`, and `ab tracing bind`/`unbind` commands need nothing else.
93
+ - **Python ≥3.10** — the `agentbricks` CLI installs and runs on any Python 3.10+. The
94
+ `memory`, `sessions`, `tools`, and `agentbricks tracing bind`/`unbind` commands need nothing else.
94
95
  - **[`uv`](https://docs.astral.sh/uv/)** — needed to scaffold, run, and deploy an
95
- agent (`ab init` → `ab dev` → `ab deploy`): the scaffolded project builds
96
+ agent (`agentbricks init` → `agentbricks dev` → `agentbricks deploy`): the scaffolded project builds
96
97
  its environment and launches with `uv run`, both locally and in the deployed Apps
97
- runtime. The store/session/tools commands and `ab tracing bind`/`unbind` don't need it;
98
- `ab tracing list`/`get` do, to read `ab dev`'s local trace store.
98
+ runtime. The store/session/tools commands and `agentbricks tracing bind`/`unbind` don't need it;
99
+ `agentbricks tracing list`/`get` do, to read `agentbricks dev`'s local trace store.
99
100
  - **[Databricks CLI](https://docs.databricks.com/dev-tools/cli/)** — needed for
100
- browser-based `ab login`. If a profile is already authenticated, the CLI uses it
101
+ browser-based `agentbricks login`. If a profile is already authenticated, the CLI uses it
101
102
  directly and the Databricks CLI is optional.
102
103
 
103
104
  ## Installation
104
105
 
105
106
  From PyPI:
106
107
 
107
- The `databricks-agentbricks` Python distribution installs the `ab` command and AgentKit.
108
+ The `databricks-agentbricks` Python distribution installs the `agentbricks` command and AgentKit.
108
109
 
109
110
  ```sh
110
111
  pip install databricks-agentbricks
@@ -122,7 +123,7 @@ declare their framework dependencies automatically.
122
123
  ## Shell completion
123
124
  Add this to `~/.zshrc`:
124
125
  ```sh
125
- eval "$(_AB_COMPLETE=zsh_source ab)"
126
+ eval "$(_AGENTBRICKS_COMPLETE=zsh_source agentbricks)"
126
127
  ```
127
128
 
128
129
  ## Authentication
@@ -131,57 +132,57 @@ Agent Bricks CLI uses [Databricks authentication](https://docs.databricks.com/aw
131
132
  Ask the CLI to authenticate and remember a named profile:
132
133
 
133
134
  ```sh
134
- ab login --profile <profile>
135
- ab sessions stores list
135
+ agentbricks login --profile <profile>
136
+ agentbricks sessions stores list
136
137
  ```
137
138
 
138
- `ab login` validates existing credentials first. If credentials are missing or rejected in
139
+ `agentbricks login` validates existing credentials first. If credentials are missing or rejected in
139
140
  an interactive terminal, the CLI runs `databricks auth login --profile <profile>`, revalidates the
140
141
  profile, and stores the selection in the existing `~/.agentbricks/config.json` state file. This
141
142
  browser-based setup requires the Databricks CLI. In non-interactive environments, authenticate the
142
- profile before running `ab`. `ab logout` forgets the saved selection without revoking the underlying
143
+ profile before running `agentbricks`. `agentbricks logout` forgets the saved selection without revoking the underlying
143
144
  credentials.
144
145
 
145
- If Databricks SDK default authentication is already configured, you can skip `ab login`.
146
+ If Databricks SDK default authentication is already configured, you can skip `agentbricks login`.
146
147
  You can also pass the global `--profile/-p` option before an individual command, for example
147
- `ab --profile <profile> tools list`. Use `--output json` for scripting.
148
+ `agentbricks --profile <profile> tools list`. Use `--output json` for scripting.
148
149
 
149
150
  ## Quickstart
150
151
 
151
152
  The shortest path from a blank directory to a running and deployed agent:
152
153
 
153
154
  ```sh
154
- ab login --profile <profile>
155
- ab init my-agent
155
+ agentbricks login --profile <profile>
156
+ agentbricks init my-agent
156
157
  cd my-agent
157
- ab dev # run locally
158
- ab deploy my-agent # deploy to Databricks
158
+ agentbricks dev # run locally
159
+ agentbricks deploy my-agent # deploy to Databricks
159
160
  ```
160
161
 
161
- `ab dev` runs the agent locally on `http://localhost:8000`, wrapping the Databricks Apps
162
+ `agentbricks dev` runs the agent locally on `http://localhost:8000`, wrapping the Databricks Apps
162
163
  local runtime so local behavior matches a deployment.
163
164
 
164
- `ab deploy my-agent` deploys a Databricks App named `agent-bricks-my-agent`, provisions the
165
- stores declared in `agent.toml`, and grants the app's service principal access to them. Use
166
- `ab deployments list` to find deployed apps, and `ab deployments get agent-bricks-my-agent` to
167
- print an app's URL and status.
165
+ `agentbricks deploy my-agent` deploys a Databricks App named `agent-bricks-my-agent`, provisions the
166
+ stores declared in `agent.toml`, and grants the app's service principal access to the stores and
167
+ direct App-auth tool resources declared there. Use `agentbricks deployments list` to find deployed
168
+ apps, and `agentbricks deployments get agent-bricks-my-agent` to print an app's URL and status.
168
169
 
169
- `ab init` declares default memory and session stores in `agent.toml`, so the deployed agent has
170
+ `agentbricks init` declares default memory and session stores in `agent.toml`, so the deployed agent has
170
171
  long-term memory and durable conversation history. It creates `<name>-<6-letter-token>-memory` and
171
172
  `<name>-<6-letter-token>-sessions`, and records both names in `agent.toml`.
172
- `ab deploy` creates them if they don't exist yet. Point the agent at stores you already have with
173
- `ab memory bind <name>` / `ab sessions bind <name>`, or scaffold without stores using
174
- `ab init --server custom` (see [Initialize the chat app demo](#initialize-the-chat-app-demo)).
175
-
176
- To exercise the agent (locally under `ab dev` or once deployed), `ab endpoint invoke` sends
177
- it an HTTP request. MLflow tracing is on by default (`ab init` binds a default
178
- `/Shared/agentbricks_traces/<project>` experiment): `ab dev` traces to a local MLflow server under
179
- `.agentbricks/` and `ab deploy` to the bound workspace experiment; `ab tracing list` shows the
173
+ `agentbricks deploy` creates them if they don't exist yet. Point the agent at stores you already have with
174
+ `agentbricks memory bind <name>` / `agentbricks sessions bind <name>`, or scaffold without stores using
175
+ `agentbricks init --server custom` (see [Initialize the chat app demo](#initialize-the-chat-app-demo)).
176
+
177
+ To exercise the agent (locally under `agentbricks dev` or once deployed), `agentbricks endpoint invoke` sends
178
+ it an HTTP request. MLflow tracing is on by default (`agentbricks init` binds a default
179
+ `/Shared/agentbricks_traces/<project>` experiment): `agentbricks dev` traces to a local MLflow server under
180
+ `.agentbricks/` and `agentbricks deploy` to the bound workspace experiment; `agentbricks tracing list` shows the
180
181
  available traces.
181
182
 
182
183
  ## Public names
183
184
 
184
- Use `ab` for the CLI and `AgentKitClient` from `databricks_agentkit` for the Python SDK. New
185
+ Use `agentbricks` for the CLI and `AgentKitClient` from `databricks_agentkit` for the Python SDK. New
185
186
  projects store local state under `.agentbricks/` and `~/.agentbricks/`, use
186
187
  `server = "agentbricks"` in `agent.toml`, and deploy apps with the `agent-bricks-` prefix.
187
188
 
@@ -248,11 +249,11 @@ and return a JSON result. You can also add your own FastAPI endpoints.
248
249
  Start from a template, edit the agent code in `agent/`, and run it locally before deploying:
249
250
 
250
251
  ```sh
251
- ab init my-agent --framework langgraph --server agentbricks --profile <profile>
252
+ agentbricks init my-agent --framework langgraph --server agentbricks --profile <profile>
252
253
  cd my-agent
253
- ab dev
254
+ agentbricks dev
254
255
  # Stop the local server when ready to deploy.
255
- ab --profile <profile> deploy my-agent
256
+ agentbricks --profile <profile> deploy my-agent
256
257
  ```
257
258
 
258
259
  Use `--framework openai` for OpenAI Agents. Templates keep agent code separate from the runtime
@@ -263,12 +264,16 @@ Each managed run is an **invocation**. Send a client-generated UUID `id` and you
263
264
  ```json
264
265
  {
265
266
  "id": "550e8400-e29b-41d4-a716-446655440000",
267
+ "session_id": "support-case-123",
266
268
  "input": {"messages": [{"role": "user", "content": "Hello"}]},
267
269
  "background": true,
268
270
  "stream": true
269
271
  }
270
272
  ```
271
273
 
274
+ The optional top-level `session_id` groups invocations into one application session. It is distinct
275
+ from the invocation `id` and from the `X-Routing-Key` sticky-routing header.
276
+
272
277
  | Endpoint | Behavior |
273
278
  | --- | --- |
274
279
  | `POST /api/invocations` | Defaults to synchronous execution: `200` with the result under `output`. `stream: true` returns SSE events. `background: true` returns `202` with a status URL; adding `stream: true` also includes an events URL. |
@@ -278,8 +283,8 @@ Each managed run is an **invocation**. Send a client-generated UUID `id` and you
278
283
  The UUID also acts as an idempotency key: repeating the same request reuses the existing invocation
279
284
  while its record is retained; using the ID for a different request returns `409`.
280
285
 
281
- `ab dev` keeps execution state in process and loses it on restart. For projects with
282
- `[agent].server = "agentbricks"`, `ab deploy` provisions a persistent Runtime Store for requests,
286
+ `agentbricks dev` keeps execution state in process and loses it on restart. For projects with
287
+ `[agent].server = "agentbricks"`, `agentbricks deploy` provisions a persistent Runtime Store for requests,
283
288
  status, events, and results. Register `@app.recover` to restart interrupted app-auth work after
284
289
  worker failures. Recovery is at-least-once, so external side effects must be idempotent. Session
285
290
  and Memory Stores separately preserve the state used by your agent.
@@ -289,7 +294,7 @@ workspace's shared Lakebase project and give the app SP ownership. The managed r
289
294
  tables; no manual Lakebase grant or Postgres app-resource attachment is needed. Backend selection
290
295
  is an internal rollout detail, not a user-facing setting; the current implementation retains the legacy
291
296
  per-app Lakebase project by default. Once enabled, redeploy reads the stored backend and verifies
292
- the app identity, and `ab deployments delete` removes the managed store before deleting the app.
297
+ the app identity, and `agentbricks deployments delete` removes the managed store before deleting the app.
293
298
  The switch does not migrate existing deployments between backends. Managed cleanup errors retain
294
299
  the app for retry. Direct app deletion bypasses managed store cleanup.
295
300
 
@@ -300,7 +305,7 @@ is never written to the Runtime Store. A replacement attempt after failure recov
300
305
 
301
306
  Use `server = "custom"` to deploy your own HTTP server without provisioning a Runtime Store.
302
307
  Changing the server type of an existing deployment is not supported. To use a different server,
303
- scaffold a new project with the desired `ab init --server` option and deploy it under a new name.
308
+ scaffold a new project with the desired `agentbricks init --server` option and deploy it under a new name.
304
309
  See the [runtime guide](src/databricks_agentkit/runtime/README.md) for agent hooks, full API examples,
305
310
  and recovery behavior.
306
311
 
@@ -319,7 +324,7 @@ fully managed store for each, both backed by Lakebase and usable from agents bui
319
324
  later, separate conversations, retrieved by semantic search.
320
325
 
321
326
  The examples below use the [`AgentKitClient` Python SDK](#agentkit-sdk); the same operations are available
322
- as `ab sessions` / `ab memory` CLI commands.
327
+ as `agentbricks sessions` / `agentbricks memory` CLI commands.
323
328
 
324
329
  ![Sessions and memory: the agent reads and appends one conversation's transcript in the session store, and recalls and saves durable facts in the memory store, which outlive any single conversation.](docs/sessions_and_memory.png)
325
330
 
@@ -415,8 +420,8 @@ directly.
415
420
  In an agent configured with `server = "agentbricks"`, add the memory tools so the model can read and write memory during a run.
416
421
  `memory_tools(actor)` exposes `remember` and `recall` bound to one actor's partition; it resolves the
417
422
  store from the `[memory_store]` binding, carried to the runtime by the `AGENT_MEMORY_STORE` env var
418
- that `ab deploy` injects, and returns no tools when no store is set, so the agent runs unchanged.
419
- That "no store set" path is also how it runs under `ab dev`, which runs locally: memory is off
423
+ that `agentbricks deploy` injects, and returns no tools when no store is set, so the agent runs unchanged.
424
+ That "no store set" path is also how it runs under `agentbricks dev`, which runs locally: memory is off
420
425
  there (the store is provisioned and used only at deploy). The OpenAI Agents adapter exposes the same as
421
426
  `memory_tools()`:
422
427
 
@@ -431,27 +436,27 @@ agent = create_agent(model=..., tools=[*your_tools, *memory_tools(actor)])
431
436
  > actor's entries. For strict isolation between tenants or users, use a separate store per boundary.
432
437
  > Grant another principal — such as your app's service principal — access with
433
438
  > `session_store.grant_permission(principal_id)` or `memory_store.grant_permission(principal_id)`;
434
- > `ab deploy` does this for the deployed app automatically.
439
+ > `agentbricks deploy` does this for the deployed app automatically.
435
440
 
436
441
  ### Declaring and provisioning stores
437
442
 
438
- For a deployed agent, `agent.toml` declares which stores it uses and `ab deploy` provisions them —
439
- you don't create stores by hand. `ab init` declares a default memory and session store named from
443
+ For a deployed agent, `agent.toml` declares which stores it uses and `agentbricks deploy` provisions them —
444
+ you don't create stores by hand. `agentbricks init` declares a default memory and session store named from
440
445
  the project; override those names, point at stores you already have, or let `deploy` create them:
441
446
 
442
447
  ```sh
443
448
  # Scaffold a project with default memory and session stores declared in agent.toml.
444
- ab init my-agent
449
+ agentbricks init my-agent
445
450
 
446
451
  # Override the declared store names at init time.
447
- ab init my-agent --memory-store support-agent-memory --session-store support-agent-sessions
452
+ agentbricks init my-agent --memory-store support-agent-memory --session-store support-agent-sessions
448
453
 
449
454
  # Or point an existing project at specific stores (edits agent.toml only; creates nothing).
450
- ab sessions bind support-agent-sessions
451
- ab memory bind support-agent-memory
455
+ agentbricks sessions bind support-agent-sessions
456
+ agentbricks memory bind support-agent-memory
452
457
 
453
458
  # deploy creates any declared-but-missing store and grants the app's service principal access.
454
- ab deploy my-agent
459
+ agentbricks deploy my-agent
455
460
  ```
456
461
 
457
462
  Memory and session stores are independent resources: deleting one never affects the other.
@@ -462,13 +467,14 @@ For the full command reference - every command, subcommand, argument, and option
462
467
  see [`cli.md`](cli.md). The tree below is a quick overview.
463
468
 
464
469
  ```text
465
- ab [-p <profile>] [-o text|json]
470
+ agentbricks [-p <profile>] [-o text|json]
466
471
  login [--profile P]
467
472
  logout
468
473
  init [--framework openai|langgraph] [--server agentbricks|custom]
469
474
  [--disable-chat-app]
470
475
  [--memory-store NAME] [--session-store NAME]
471
476
  [--existing] [--profile P] [directory]
477
+ doctor [directory]
472
478
  dev [--source PATH] [--prepare-environment] [--app-port PORT]
473
479
  memory
474
480
  bind STORE [--source PATH]
@@ -485,7 +491,8 @@ ab [-p <profile>] [-o text|json]
485
491
  unbind [--source PATH]
486
492
  list | get [--experiment-name NAME | --experiment-id ID] [--source PATH]
487
493
  tools
488
- add sandbox --scope SCOPE [--scope SCOPE ...] [--source PATH]
494
+ add sandbox --scope SCOPE [--scope SCOPE ...]
495
+ [--no-databricks-access-token-included] [--source PATH]
489
496
  add mcp SERVICE [--name NAME] [--source PATH]
490
497
  add uc-function FUNCTION [--name NAME] [--source PATH]
491
498
  add genie-one [--name NAME] [--auth user|app] [--source PATH]
@@ -504,10 +511,30 @@ ab [-p <profile>] [-o text|json]
504
511
  From the existing project, prepare a migration for your coding agent:
505
512
 
506
513
  ```sh
507
- ab init --framework langgraph --existing .
508
- ab init --framework openai --existing .
514
+ agentbricks init --framework langgraph --existing .
515
+ agentbricks init --framework openai --existing .
509
516
  ```
510
517
 
518
+ Before or after the conversion, inspect its progress without changing the repository or contacting
519
+ Databricks:
520
+
521
+ ```sh
522
+ agentbricks doctor .
523
+ agentbricks -o json doctor .
524
+ ```
525
+
526
+ Doctor exits 0 only when the project has a valid Agent Bricks manifest and matching project
527
+ metadata, uses the Agent Bricks server, declares the framework-appropriate `databricks-agentbricks`
528
+ extra and a non-empty `app.yaml` command, constructs `DurableAgentServer` with an `invoke` hook, and
529
+ calls a recognized adapter for the selected framework in production Python source. Test, example, and
530
+ old/stale directories do not count as source evidence. A failed report is the normal result for a
531
+ project that still needs migration; run
532
+ `agentbricks init --framework <framework_name> --existing <directory>` with the appropriate framework
533
+ to prepare the migration instructions. Doctor never imports or executes the target's source, and a
534
+ bounded source scan that exceeds a limit is reported while the evidence it already found still counts.
535
+ Its findings are static repository evidence, not proof that the configured startup command executes
536
+ the files it finds.
537
+
511
538
  This writes `agent-bricks-migrate/` containing a skill, a prompt to paste into your coding agent,
512
539
  `references/migration.json`, and a reference project generated from the templates bundled with the
513
540
  installed CLI. The bundle sits outside any single agent's configuration directory; `.claude/skills/`
@@ -536,19 +563,19 @@ application. Migration supports LangGraph and the OpenAI Agents SDK with the man
536
563
 
537
564
  ## Invoke HTTP endpoints
538
565
 
539
- `ab endpoint invoke` is a low-level HTTP command. It resolves and authenticates a deployed
566
+ `agentbricks endpoint invoke` is a low-level HTTP command. It resolves and authenticates a deployed
540
567
  Databricks App, or targets localhost and arbitrary servers through `--url`. It does not assume an
541
568
  agent protocol: provide the method, path, query parameters, and complete JSON body required by the
542
569
  server.
543
570
 
544
571
  ```sh
545
- ab --profile <profile> endpoint invoke agent-bricks-my-agent \
572
+ agentbricks --profile <profile> endpoint invoke agent-bricks-my-agent \
546
573
  --path /api/invocations \
547
- --json '{"id":"00000000-0000-4000-8000-000000000001","input":[{"role":"user","content":"Hello"}]}'
574
+ --json '{"id":"00000000-0000-4000-8000-000000000001","session_id":"support-case-123","input":[{"role":"user","content":"Hello"}]}'
548
575
 
549
- ab endpoint invoke --url http://localhost:8000 \
576
+ agentbricks endpoint invoke --url http://localhost:8000 \
550
577
  --path /api/invocations \
551
- --json '{"id":"00000000-0000-4000-8000-000000000001","input":[{"role":"user","content":"Hello"}]}'
578
+ --json '{"id":"00000000-0000-4000-8000-000000000001","session_id":"support-case-123","input":[{"role":"user","content":"Hello"}]}'
552
579
  ```
553
580
 
554
581
  The JSON body remains explicit even for generated agents. For example, managed runtime agents require
@@ -556,21 +583,26 @@ a client-generated invocation ID, and streaming servers require their own stream
556
583
  `--sse` so the CLI consumes the response as Server-Sent Events.
557
584
 
558
585
  ```sh
586
+ SESSION_ID=$(uuidgen)
559
587
  INVOCATION_ID=$(uuidgen)
560
- ab --profile <profile> endpoint invoke agent-bricks-my-agent \
588
+ agentbricks --profile <profile> endpoint invoke agent-bricks-my-agent \
561
589
  --path /api/invocations \
562
- --json "{\"id\":\"$INVOCATION_ID\",\"input\":[{\"role\":\"user\",\"content\":\"Run the report\"}]}"
590
+ --routing-key "$SESSION_ID" \
591
+ --json "{\"id\":\"$INVOCATION_ID\",\"session_id\":\"$SESSION_ID\",\"input\":[{\"role\":\"user\",\"content\":\"Run the report\"}]}"
563
592
 
564
- ab --profile <profile> endpoint invoke agent-bricks-my-agent \
593
+ INVOCATION_ID=$(uuidgen)
594
+ agentbricks --profile <profile> endpoint invoke agent-bricks-my-agent \
565
595
  --path /api/invocations \
596
+ --routing-key "$SESSION_ID" \
566
597
  --sse \
567
- --json "{\"id\":\"$INVOCATION_ID\",\"input\":[{\"role\":\"user\",\"content\":\"Hello\"}],\"stream\":true}"
598
+ --json "{\"id\":\"$INVOCATION_ID\",\"session_id\":\"$SESSION_ID\",\"input\":[{\"role\":\"user\",\"content\":\"Hello\"}],\"stream\":true}"
568
599
  ```
569
600
 
570
- `--session-id` preserves one application session across calls by setting the Databricks Apps routing
571
- cookie. This also works with a direct App URL and with the generated runtime on localhost. OAuth and
572
- session headers are managed by the runtime; arbitrary custom request headers are intentionally not exposed
573
- by this command.
601
+ `--routing-key` keeps a session on one app replica (sticky routing): set it to your stable session id
602
+ and it is sent verbatim in the `X-Routing-Key` request header. It is routing only and is never used
603
+ as the session id - put the session id at the top level of the `--json` body for session continuity. This
604
+ also works with a direct App URL and with the generated runtime on localhost. OAuth and session headers are managed by
605
+ the runtime; arbitrary custom request headers are intentionally not exposed by this command.
574
606
 
575
607
  ## Command help
576
608
 
@@ -578,33 +610,33 @@ Use the conventional help flag at any command level. Every command's help includ
578
610
  examples:
579
611
 
580
612
  ```sh
581
- ab --help
582
- ab deploy --help
583
- ab sessions items append --help
613
+ agentbricks --help
614
+ agentbricks deploy --help
615
+ agentbricks sessions items append --help
584
616
  ```
585
617
 
586
618
  ## Agent tools
587
619
 
588
- For projects with `[agent].server = "agentbricks"` (the default from `ab init`), `agent.toml` is the
620
+ For projects with `[agent].server = "agentbricks"` (the default from `agentbricks init`), `agent.toml` is the
589
621
  declarative source of truth for Databricks-managed infrastructure: the Runtime Store, sandbox,
590
- managed MCP, Genie and Unity Catalog function bindings, plus memory and session resources. `ab tools
622
+ managed MCP, Genie and Unity Catalog function bindings, plus memory and session resources. `agentbricks tools
591
623
  add` updates only this file; direct TOML edits have the same behavior. Both managed-server framework
592
624
  adapters read the managed bindings at runtime without generating or patching agent source:
593
625
 
594
626
  ```sh
595
- ab tools add sandbox --scope table:samples.nyctaxi.trips
596
- ab tools add mcp system.ai.web_search
597
- ab tools add uc-function catalog.schema.lookup_ticket
598
- ab tools add genie-one
599
- ab tools add genie-agent SPACE_ID
600
- ab tools remove mcp system.ai.web_search
601
- ab tools list
627
+ agentbricks tools add sandbox --scope table:samples.nyctaxi.trips
628
+ agentbricks tools add mcp system.ai.web_search
629
+ agentbricks tools add uc-function catalog.schema.lookup_ticket
630
+ agentbricks tools add genie-one
631
+ agentbricks tools add genie-agent SPACE_ID
632
+ agentbricks tools remove mcp system.ai.web_search
633
+ agentbricks tools list
602
634
  ```
603
635
 
604
636
  ### Managed tool identity and migration
605
637
 
606
- `ab tools add mcp`, `ab tools add sandbox`, `ab tools add genie-one`, and
607
- `ab tools add genie-agent` write explicit `auth = "user"` by default.
638
+ `agentbricks tools add mcp`, `agentbricks tools add sandbox`, `agentbricks tools add genie-one`, and
639
+ `agentbricks tools add genie-agent` write explicit `auth = "user"` by default.
608
640
  Use `--auth app` for the App service principal instead. This field is on the tool entry, not
609
641
  inside `source` or `policy`:
610
642
 
@@ -620,9 +652,79 @@ Managed-tool add commands write the selected identity to `agent.toml`; inspect t
620
652
  review configured bindings. Missing legacy auth continues to mean App identity at runtime; it is
621
653
  never silently upgraded to user identity.
622
654
 
623
- `DurableAgentServer` derives its request-auth policy directly from the managed tool bindings in `agent.toml`.
624
- Projects do not maintain a separate request-auth contract marker: the presence of any managed tool
625
- with `auth = "user"` makes the invocation require a transient request-user credential.
655
+ ### Automatic App-identity access on deploy
656
+
657
+ `agentbricks deploy` reconciles least-privilege access for resources explicitly declared by App/default
658
+ identity tool bindings. It skips every `auth = "user"` binding because those calls use the request
659
+ user's permissions instead of the App service principal.
660
+
661
+ | Explicit `agent.toml` resource | Automatic App service-principal access |
662
+ | --- | --- |
663
+ | UC function | Apps `uc_securable`: `FUNCTION` / `EXECUTE` |
664
+ | Genie Agent space | Apps `genie_space`: `CAN_RUN` |
665
+ | Sandbox table scope | Apps `uc_securable`: `TABLE` / `SELECT` or `MODIFY` |
666
+ | Sandbox volume scope | Apps `uc_securable`: `VOLUME` / `READ_VOLUME` or `WRITE_VOLUME` |
667
+ | Sandbox Workspace path | Workspace ACL: `CAN_READ` or `CAN_EDIT` |
668
+ | External MCP service | Unity Catalog: effective `EXECUTE` plus `USE_SCHEMA` and `USE_CATALOG` on its named parents |
669
+ | Built-in `system.ai` MCP service, including Sandbox and Genie One | Platform-managed access defaults; Agent Bricks does not mutate system securables |
670
+
671
+ Native Genie One has no resource identifier in its binding, so it does not add a resource-specific
672
+ grant. Use a Genie Agent binding when the App identity should be scoped to one explicit Genie Space.
673
+
674
+ Apps-backed tool resources are named deterministically and reconciled to the manifest on each
675
+ deploy: removing a binding removes that Agent Bricks-owned Apps resource while preserving Runtime
676
+ Store, tracing, and user-owned resources. MCP and Workspace ACL grants are additive in this release
677
+ because their permission APIs do not expose trustworthy Agent Bricks ownership metadata; removing
678
+ those bindings does not revoke an independently valid grant.
679
+
680
+ Only direct resources are automatic. Agent Bricks never discovers or grants tables and warehouses
681
+ used by a Genie Space, objects called by a UC function, or resources wrapped by an MCP service.
682
+ Grant those transitive dependencies manually when the called service uses the App identity. If any
683
+ required direct grant cannot be read, applied, or verified, deploy stops before source upload and
684
+ leaves the currently deployed version untouched.
685
+
686
+ `DurableAgentServer` derives its request-auth policy directly from the managed tool bindings in
687
+ `agent.toml`. Projects do not maintain a separate request-auth contract marker: a managed tool with
688
+ `auth = "user"` requires a transient request-user credential. Code-first tools can declare any
689
+ additional API scopes that Agent Bricks cannot infer from Python:
690
+
691
+ ```toml
692
+ [auth.user]
693
+ required = true
694
+ additional_api_scopes = ["sql"]
695
+ ```
696
+
697
+ `additional_api_scopes` is additive: deploy unions it with scopes inferred from managed bindings,
698
+ deduplicates the result, and preserves unrelated scopes already configured on the App. Scope names
699
+ are not restricted to a client-side allowlist; Databricks Apps validates whether a requested scope
700
+ is supported. Entries must be non-empty strings without surrounding whitespace or control
701
+ characters, and a non-empty list requires `required = true`. This request-auth contract is supported
702
+ only with `[agent].server = "agentbricks"`.
703
+
704
+ Generated framework adapters pass the request-bound resolver to agent construction. A code-first
705
+ tool should obtain its user client from that resolver inside the active invocation rather than
706
+ creating or persisting a user credential:
707
+
708
+ ```python
709
+ from langchain_core.tools import tool
710
+
711
+
712
+ def sql_tools(workspace_client_for):
713
+ @tool
714
+ def run_statement(statement: str) -> str:
715
+ client = workspace_client_for("user")
716
+ response = client.statement_execution.execute_statement(
717
+ warehouse_id="...",
718
+ statement=statement,
719
+ )
720
+ return str(response.result)
721
+
722
+ return [run_statement]
723
+ ```
724
+
725
+ The resolver is request-bound and closes after the attempt. Agent Bricks does not inject it into
726
+ arbitrary auto-discovered decorated tools; build those tools from the resolver passed to the
727
+ generated request-aware agent function.
626
728
 
627
729
  Request-user invocations use the same synchronous, streaming, background, status, event-replay,
628
730
  and idempotency APIs as app-auth invocations. The Runtime Store records only token-free request
@@ -638,22 +740,28 @@ upgrade copied Python adapter code. Outdated adapters fail closed rather than si
638
740
  identity. App-only legacy projects and generic bring-your-own source directories keep the existing
639
741
  path.
640
742
 
641
- Deploy derives Apps user scopes from explicit `auth = "user"` bindings:
743
+ Deploy derives Apps user scopes from explicit `auth = "user"` bindings and unions them with
744
+ `[auth.user].additional_api_scopes`:
642
745
 
643
746
  | Binding | Requested Apps scopes |
644
747
  | --- | --- |
645
748
  | Managed MCP (governed ingress) | `ai-gateway` |
749
+ | `system.ai.dbsql` | `ai-gateway`, `sql` |
646
750
  | `system.ai.genie_one_mcp` | `ai-gateway`, `genie` |
751
+ | Sandbox with a Volume downscope | `ai-gateway`, `files` |
647
752
  | First-class Genie One or Genie Agent | `genie` |
753
+ | Sandbox with token injection | `ai-gateway`, `workspace.workspace` |
754
+ | Sandbox with token injection disabled | `ai-gateway` |
648
755
 
649
756
  For example, bind Genie tools in a current project with `server = "agentbricks"`:
650
757
 
651
758
  ```sh
652
- ab tools add mcp system.ai.genie_one_mcp --auth user
653
- ab tools add genie-agent SPACE_ID --auth user
759
+ agentbricks tools add mcp system.ai.genie_one_mcp --auth user
760
+ agentbricks tools add genie-agent SPACE_ID --auth user
654
761
  ```
655
762
 
656
- Mixed bindings request the union. App-auth and legacy bindings add no user scopes. These are
763
+ Mixed bindings and explicit additions request the union. App-auth and legacy bindings add no user
764
+ scopes. These are
657
765
  explicit service-consent scopes, not a claim that gateway access alone authorizes the downstream
658
766
  resource. OAuth consent does not grant Unity Catalog privileges: the user still needs access to
659
767
  the configured Genie Space and its underlying data.
@@ -663,17 +771,22 @@ initial typed SDK create request before uploading source. An existing App that i
663
771
  scope needs one-time explicit permission:
664
772
 
665
773
  ```sh
666
- ab --profile my-workspace deploy my-agent --allow-user-scope-update
774
+ agentbricks --profile my-workspace deploy my-agent --allow-user-scope-update
667
775
  ```
668
776
 
669
777
  The `system.ai.dbsql` managed MCP additionally requests the Apps `sql` user scope. This is full SQL
670
778
  API consent, not `sql:restricted-query`; read-only enforcement remains the service policy plus the
671
779
  requesting user's Unity Catalog grants. DBSQL does not use Databricks Connect.
672
780
 
673
- A sandbox binding with a Volume downscope additionally requests the Apps `files` user scope.
781
+ When a user-auth sandbox has `databricks_access_token_included = true`, it requests the Apps
782
+ `workspace.workspace` user scope so the injected credential can call workspace APIs. A sandbox
783
+ binding with a Volume downscope additionally requests the Apps `files` user scope.
674
784
  OAuth consent does not grant Volume access: the requesting user still needs the corresponding
675
- Unity Catalog privileges, and the sandbox downscope remains authoritative. Table-only sandbox
676
- bindings request `ai-gateway` but do not request `files`.
785
+ Unity Catalog privileges, and the sandbox downscope remains authoritative. A sandbox binding with
786
+ token injection disabled does not request `workspace.workspace`; its other resource-derived scopes
787
+ still apply. Databricks Apps rejects the legacy bare `workspace` scope, so Agent Bricks requests
788
+ `workspace.workspace`. These scopes are requested only for `auth = "user"`; `auth = "app"` uses
789
+ the App service principal's permissions instead.
677
790
 
678
791
  Review the target App's scopes and coordinate with its other owners before allowing the update. Once
679
792
  those scopes are present, later deploys do not need the flag. The CLI preserves unrelated scopes,
@@ -700,32 +813,32 @@ for **all** App-auth tools, or deploy those tools separately. Models, custom MCP
700
813
  Memory/Session Stores, and tracing keep their existing credentials.
701
814
 
702
815
  For MCP services, the remove command accepts the same service name as the add command. You can also
703
- remove any binding by its `id` in `agent.toml`, for example `ab tools remove web_search`.
816
+ remove any binding by its `id` in `agent.toml`, for example `agentbricks tools remove web_search`.
704
817
  Every successful add (including an already-configured no-op) points you to the target project's
705
818
  `agent.toml` to review configured managed tools and MCP bindings. With `--source`, the message
706
819
  points to that project's file. JSON add output includes its path in `manifest`.
707
820
 
708
- `ab tools list` discovers **available integrations to add**, not configured bindings. By default
821
+ `agentbricks tools list` discovers **available integrations to add**, not configured bindings. By default
709
822
  it shows built-in add recipes and caller-visible MCP Services in `system.ai`. A recipe may still
710
823
  need your resources: sandbox scopes, a concrete UC function name, or a Genie Space ID. Genie One
711
824
  needs no additional argument. `system.ai.sandbox` is represented by its scoped recipe rather than
712
825
  a second unscoped add command. The list does not enumerate every workspace schema, individual
713
826
  operations inside MCP services, or custom Python tools.
714
827
 
715
- `ab tools add mcp` looks up the service in the selected workspace before writing `agent.toml`.
716
- Use `ab --profile <profile> tools add mcp <service>` to select a workspace. A missing service or
828
+ `agentbricks tools add mcp` looks up the service in the selected workspace before writing `agent.toml`.
829
+ Use `agentbricks --profile <profile> tools add mcp <service>` to select a workspace. A missing service or
717
830
  failed lookup (including authentication or permission errors) leaves the project unchanged. This
718
831
  checks service metadata access, not whether every tool can be executed at runtime. Removing local
719
832
  bindings does not require workspace access.
720
833
 
721
834
  ```sh
722
- ab tools list
723
- ab tools list --kind mcp
724
- ab tools list --kind mcp --schema main.tools
725
- ab tools list --kind sandbox
726
- ab tools list --kind genie-one
727
- ab tools list --kind genie-agent
728
- ab --output json tools list
835
+ agentbricks tools list
836
+ agentbricks tools list --kind mcp
837
+ agentbricks tools list --kind mcp --schema main.tools
838
+ agentbricks tools list --kind sandbox
839
+ agentbricks tools list --kind genie-one
840
+ agentbricks tools list --kind genie-agent
841
+ agentbricks --output json tools list
729
842
  ```
730
843
 
731
844
  No agent project is required for discovery. MCP discovery uses your Databricks profile; the
@@ -739,9 +852,9 @@ runtime execution permissions.
739
852
  Read `agent.toml` (its `[[tools]]` entries) to inspect configured bindings. Discovery JSON uses
740
853
  `schema_version: 2`, with `available_tools` (`name`, `kind`, `add_command`), `mcp_schema` (null for
741
854
  local-only recipes), `complete`, and `errors`. Replace old scripts that read configured-list JSON
742
- with TOML inspection. Replace `ab mcp list [--schema catalog.schema]` with
743
- `ab tools list --kind mcp [--schema catalog.schema]`; the former command is removed. Use
744
- `ab tools list --help` for the new discovery contract.
855
+ with TOML inspection. Replace `agentbricks mcp list [--schema catalog.schema]` with
856
+ `agentbricks tools list --kind mcp [--schema catalog.schema]`; the former command is removed. Use
857
+ `agentbricks tools list --help` for the new discovery contract.
745
858
 
746
859
  Read-only live discovery can be checked against the installed wheel without creating a project
747
860
  or deploying an agent:
@@ -762,17 +875,34 @@ code in `agent/mcps.py` and are joined with the managed bindings by `mcp_tools(.
762
875
  `mcp_servers(...)`.
763
876
 
764
877
  Projects created with `--server custom` do not auto-discover `agent/tools/` or load managed tool
765
- bindings from `agent.toml`, so `ab tools add` rejects those projects. Wire framework-native Python
878
+ bindings from `agent.toml`, so `agentbricks tools add` rejects those projects. Wire framework-native Python
766
879
  tools and MCP servers directly in `agent/agent.py` instead.
767
880
 
768
881
  If a manifest with `server = "agentbricks"` contains `source = { kind = "python", ... }`, remove that
769
- `[[tools]]` entry; the decorated tool in `agent/tools/` remains active. `ab dev` and `ab deploy`
882
+ `[[tools]]` entry; the decorated tool in `agent/tools/` remains active. `agentbricks dev` and `agentbricks deploy`
770
883
  do not generate or patch Python tool code, and do not alter the manifest's `[[tools]]` bindings.
771
884
 
772
885
  Sandbox scopes default to read-only access. Repeat `--scope` to allow more than one resource, use
773
886
  `volume:` or `workspace:` for those resource types, and use `--permission read_write` only when the
774
887
  agent needs writes. Every sandbox call carries this fixed downscope in MCP `_meta`, outside the tool
775
- arguments controlled by the model.
888
+ arguments controlled by the model. New sandbox bindings also expose the selected Databricks
889
+ credential to sandbox code by default:
890
+
891
+ ```toml
892
+ [[tools]]
893
+ id = "sandbox"
894
+ auth = "user"
895
+ source = { kind = "sandbox", service = "system.ai.sandbox" }
896
+ policy = { downscope = [{ resource = "workspace:/Workspace/Shared", permission = "read_only" }], databricks_access_token_included = true }
897
+ ```
898
+
899
+ With `databricks_access_token_included = true`, the sandbox receives `DATABRICKS_HOST`, a short-lived
900
+ `DATABRICKS_TOKEN`, and `DATABRICKS_AUTH_TYPE`, so code such as
901
+ `WorkspaceClient().current_user.me()` can call workspace APIs. This policy does not choose the
902
+ identity: `auth = "user"` uses the request user's OBO credential, while `auth = "app"` uses the
903
+ Databricks App service principal. Use `--no-databricks-access-token-included` when adding a sandbox that
904
+ does not need workspace API access. Existing manifests that omit `databricks_access_token_included`
905
+ remain disabled until explicitly updated.
776
906
 
777
907
  ### Genie tools
778
908
 
@@ -781,12 +911,12 @@ Installing the current `databricks-agentbricks` distribution does not configure
781
911
  capabilities your agent needs:
782
912
 
783
913
  ```sh
784
- ab tools add genie-one --name genie_one --auth user
785
- ab tools add genie-agent SPACE_ID --name genie_agent --auth user
786
- ab tools list --kind genie-one
787
- ab tools list --kind genie-agent
788
- ab tools remove genie_one
789
- ab tools remove genie_agent
914
+ agentbricks tools add genie-one --name genie_one --auth user
915
+ agentbricks tools add genie-agent SPACE_ID --name genie_agent --auth user
916
+ agentbricks tools list --kind genie-one
917
+ agentbricks tools list --kind genie-agent
918
+ agentbricks tools remove genie_one
919
+ agentbricks tools remove genie_agent
790
920
  ```
791
921
 
792
922
  `--name` is optional and defaults to `genie_one` or `genie_agent`, respectively. `--auth` defaults
@@ -795,7 +925,7 @@ without `auth` preserve App/default identity. Both add commands and `remove` acc
795
925
  to select a project instead of the current directory. Discovery needs no project; read that
796
926
  project's `agent.toml` to inspect configured bindings. For scripted output, put the global
797
927
  `-o json` option before `tools`, as in
798
- `ab -o json tools add genie-one --source ./my-agent`. Adding a binding is offline: it updates
928
+ `agentbricks -o json tools add genie-one --source ./my-agent`. Adding a binding is offline: it updates
799
929
  `agent.toml` without contacting Genie or checking permissions. The corresponding sources are:
800
930
 
801
931
  ```toml
@@ -856,11 +986,11 @@ It is included by default for `--framework langgraph`; pass `--disable-chat-app`
856
986
  API-only backend instead.
857
987
 
858
988
  ```sh
859
- ab init --framework langgraph \
989
+ agentbricks init --framework langgraph \
860
990
  --profile <profile> \
861
991
  ./my-agent
862
992
  cd ./my-agent
863
- ab dev
993
+ agentbricks dev
864
994
  ```
865
995
 
866
996
  The chat app includes synchronous, SSE streaming, background polling, Session Store, Memory Store,
@@ -870,20 +1000,22 @@ and HITL resume UI. The framework-specific overlay adds `ui/`, `runtime/ui.py`,
870
1000
  For the full deployed demo, bind both managed stores, then deploy:
871
1001
 
872
1002
  ```sh
873
- ab sessions bind agent-bricks-demo-sessions
874
- ab memory bind agent-bricks-demo-memory
875
- ab --profile <profile> deploy agent-bricks-agent-demo --source .
1003
+ agentbricks sessions bind agent-bricks-demo-sessions
1004
+ agentbricks memory bind agent-bricks-demo-memory
1005
+ agentbricks --profile <profile> deploy agent-bricks-agent-demo --source .
876
1006
  ```
877
1007
 
878
- (`bind` declares the store name in `agent.toml`; `ab deploy` creates any declared-but-missing
1008
+ (`bind` declares the store name in `agent.toml`; `agentbricks deploy` creates any declared-but-missing
879
1009
  store and grants the app's service principal access to it. The memory store id flows to the runtime
880
- via the `AGENT_MEMORY_STORE` env var that `deploy` injects; `ab dev` runs locally with memory off
1010
+ via the `AGENT_MEMORY_STORE` env var that `deploy` injects; `agentbricks dev` runs locally with memory off
881
1011
  and does not inject it. The id is not persisted in `agent.toml`.)
882
1012
 
883
- The chat UI generates a stable application session UUID in browser local storage, places it inside
884
- the invocation's opaque `input`, and creates a fresh invocation UUID per turn. The
885
- `__Host-databricks-app-router` cookie remains independent: API clients may reuse it for sticky
886
- replica routing, but it is neither authentication nor the template's application session state.
1013
+ The chat UI generates a stable application session UUID in browser local storage, sends it as the
1014
+ invocation's top-level `session_id`, and creates a fresh invocation UUID per turn. The chat app also
1015
+ sends this session UUID in the `X-Routing-Key` request header, which is used verbatim to pin
1016
+ the session to one app replica (it must be non-blank and no more than 128 UTF-8 bytes). The header is neither
1017
+ authentication nor the template's application session state; it is independent sticky-routing
1018
+ plumbing.
887
1019
 
888
1020
  The generated `README.md` documents every request the client makes: config discovery, sync and SSE
889
1021
  invocations, background submission and polling, session transcript loading, HITL resume, and memory
@@ -892,6 +1024,6 @@ sync/streaming/background transport selector is manual.
892
1024
 
893
1025
  ## Contributing
894
1026
 
895
- Developing Agent Bricks CLI (`ab`), AgentKit, the runtime, and templates - plus the local dev loop and how to
896
- test unreleased changes on `ab dev` and `ab deploy`, is covered in
1027
+ Developing Agent Bricks CLI (`agentbricks`), AgentKit, the runtime, and templates - plus the local dev loop and how to
1028
+ test unreleased changes on `agentbricks dev` and `agentbricks deploy`, is covered in
897
1029
  [CONTRIBUTING.md](CONTRIBUTING.md).