databricks-agentbricks 0.5.0__tar.gz → 0.6.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 (207) hide show
  1. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/PKG-INFO +151 -22
  2. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/README.md +148 -19
  3. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/pyproject.toml +3 -3
  4. databricks_agentbricks-0.6.0/src/databricks_agentbricks/agent_hint.py +62 -0
  5. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/cli/app.py +5 -1
  6. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/cli/deploy.py +4 -0
  7. databricks_agentbricks-0.6.0/src/databricks_agentbricks/cli/experimental.py +21 -0
  8. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/cli/init.py +12 -3
  9. databricks_agentbricks-0.6.0/src/databricks_agentbricks/cli/models.py +281 -0
  10. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/cli/pipeline.py +76 -3
  11. databricks_agentbricks-0.6.0/src/databricks_agentbricks/cli/prompts.py +138 -0
  12. databricks_agentbricks-0.6.0/src/databricks_agentbricks/cli/telemetry.py +429 -0
  13. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/cli/tools.py +3 -0
  14. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/clients/apps_client.py +35 -6
  15. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/clients/apps_user_auth_client.py +4 -1
  16. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/clients/databricks_cli.py +3 -1
  17. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/errors.py +3 -1
  18. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/presentation/deploy.py +40 -0
  19. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/presentation/group.py +77 -1
  20. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/presentation/help.py +91 -0
  21. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/projects/agent_project.py +213 -3
  22. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/projects/app_manifest.py +17 -2
  23. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/services/deploy_service.py +33 -4
  24. databricks_agentbricks-0.6.0/src/databricks_agentbricks/services/deployment/model_binding_provisioner.py +108 -0
  25. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/services/dev_service.py +7 -17
  26. databricks_agentbricks-0.6.0/src/databricks_agentbricks/skills.py +100 -0
  27. databricks_agentbricks-0.6.0/src/databricks_agentbricks/templates/agent-bricks-workflow/SKILL.md +48 -0
  28. databricks_agentbricks-0.6.0/src/databricks_agentbricks/templates/agent-bricks-workflow/references/deployment.md +57 -0
  29. databricks_agentbricks-0.6.0/src/databricks_agentbricks/templates/agent-bricks-workflow/references/state-and-tools.md +49 -0
  30. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-langgraph/AGENTKIT_CONTRACT.md +30 -0
  31. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-langgraph/AGENTS.md +3 -0
  32. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-langgraph/README.md +4 -0
  33. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-langgraph/agent/agent.py +5 -1
  34. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-langgraph/pyproject.toml +3 -1
  35. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-openai/AGENTKIT_CONTRACT.md +43 -8
  36. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-openai/AGENTS.md +13 -7
  37. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-openai/README.md +20 -6
  38. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-openai/agent/agent.py +82 -23
  39. databricks_agentbricks-0.6.0/src/databricks_agentbricks/templates/agent-openai/agent/checkpoints.py +101 -0
  40. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-openai/pyproject.toml +1 -1
  41. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-openai/runtime/adapter.py +30 -18
  42. databricks_agentbricks-0.6.0/src/databricks_agentbricks/templates/agent-openai/tests/test_agent.py +679 -0
  43. databricks_agentbricks-0.6.0/src/databricks_agentbricks/templates/agent-openai/tests/test_checkpoints.py +207 -0
  44. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/pyproject.toml +3 -2
  45. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/custom-agent-openai/pyproject.toml +1 -1
  46. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/ui/agent-langgraph/runtime/ui.py +16 -23
  47. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/ui/agent-langgraph/tests/test_demo_ui.py +24 -33
  48. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/ui/agent-openai/runtime/ui.py +15 -15
  49. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/ui/agent-openai/tests/test_demo_ui.py +5 -2
  50. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/ui/agent-openai/ui/app.js +17 -7
  51. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/_api_client.py +75 -16
  52. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/langgraph/__init__.py +4 -0
  53. databricks_agentbricks-0.6.0/src/databricks_agentkit/langgraph/history.py +37 -0
  54. databricks_agentbricks-0.6.0/src/databricks_agentkit/langgraph/memory.py +249 -0
  55. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/langgraph/session_store.py +57 -3
  56. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/memory_store.py +193 -1
  57. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/openai/__init__.py +4 -0
  58. databricks_agentbricks-0.6.0/src/databricks_agentkit/openai/history.py +19 -0
  59. databricks_agentbricks-0.6.0/src/databricks_agentkit/openai/memory.py +249 -0
  60. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/openai/sessions.py +2 -2
  61. databricks_agentbricks-0.6.0/src/databricks_agentkit/runtime/model_services.py +305 -0
  62. databricks_agentbricks-0.6.0/src/databricks_agentkit/runtime/prompt_registry.py +38 -0
  63. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/runtime/tool_manifest.py +24 -2
  64. databricks_agentbricks-0.5.0/src/databricks_agentbricks/templates/agent-openai/tests/test_agent.py +0 -349
  65. databricks_agentbricks-0.5.0/src/databricks_agentkit/langgraph/memory.py +0 -67
  66. databricks_agentbricks-0.5.0/src/databricks_agentkit/openai/memory.py +0 -67
  67. databricks_agentbricks-0.5.0/src/databricks_agentkit/runtime/model_services.py +0 -90
  68. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/.gitignore +0 -0
  69. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/NOTICE +0 -0
  70. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/__init__.py +0 -0
  71. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/cli/__init__.py +0 -0
  72. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/cli/auth.py +0 -0
  73. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/cli/dev.py +0 -0
  74. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/cli/doctor.py +0 -0
  75. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/cli/endpoint.py +0 -0
  76. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/cli/mcp.py +0 -0
  77. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/cli/memory.py +0 -0
  78. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/cli/sandbox.py +0 -0
  79. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/cli/sessions.py +0 -0
  80. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/cli/tracing.py +0 -0
  81. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/clients/__init__.py +0 -0
  82. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/clients/api_client_provider.py +0 -0
  83. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/clients/conversation_store_client.py +0 -0
  84. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/clients/legacy_runtime_store.py +0 -0
  85. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/clients/managed_runtime_store.py +0 -0
  86. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/clients/tracing_client.py +0 -0
  87. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/presentation/__init__.py +0 -0
  88. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/presentation/dev.py +0 -0
  89. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/presentation/endpoint.py +0 -0
  90. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/presentation/render.py +0 -0
  91. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/presentation/reporter.py +0 -0
  92. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/presentation/theme.py +0 -0
  93. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/presentation/tracing.py +0 -0
  94. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/projects/__init__.py +0 -0
  95. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/projects/config.py +0 -0
  96. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/projects/resolver.py +0 -0
  97. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/projects/types.py +0 -0
  98. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/py.typed +0 -0
  99. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/reporting.py +0 -0
  100. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/services/__init__.py +0 -0
  101. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/services/deployment/__init__.py +0 -0
  102. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/services/deployment/config.py +0 -0
  103. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/services/deployment/names.py +0 -0
  104. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/services/deployment/provisioners.py +0 -0
  105. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/services/deployment/tool_access.py +0 -0
  106. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/services/deployment/tool_access_provisioner.py +0 -0
  107. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/services/invoke/__init__.py +0 -0
  108. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/services/invoke/auth.py +0 -0
  109. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/services/invoke/request.py +0 -0
  110. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/services/invoke/transport.py +0 -0
  111. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/services/invoke_service.py +0 -0
  112. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-bricks-migrate/SKILL.md +0 -0
  113. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-langgraph/.env.example +0 -0
  114. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-langgraph/.gitignore +0 -0
  115. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-langgraph/CLAUDE.md +0 -0
  116. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-langgraph/agent/__init__.py +0 -0
  117. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-langgraph/agent/mcps.py +0 -0
  118. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-langgraph/agent/tools/__init__.py +0 -0
  119. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-langgraph/agent/tools/sample_tool.py +0 -0
  120. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-langgraph/agent/tools/send_message.py +0 -0
  121. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-langgraph/app.yaml +0 -0
  122. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-langgraph/runtime/__init__.py +0 -0
  123. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-langgraph/runtime/adapter.py +0 -0
  124. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-langgraph/runtime/main.py +0 -0
  125. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-langgraph/tests/__init__.py +0 -0
  126. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-langgraph/tests/test_agent.py +0 -0
  127. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-langgraph/tests/test_runtime.py +0 -0
  128. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-langgraph/tests/test_workspace.py +0 -0
  129. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-openai/.env.example +0 -0
  130. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-openai/.gitignore +0 -0
  131. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-openai/CLAUDE.md +0 -0
  132. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-openai/agent/__init__.py +0 -0
  133. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-openai/agent/mcps.py +0 -0
  134. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-openai/agent/tools/__init__.py +0 -0
  135. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-openai/agent/tools/sample_tool.py +0 -0
  136. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-openai/agent/tools/send_message.py +0 -0
  137. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-openai/app.yaml +0 -0
  138. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-openai/runtime/__init__.py +0 -0
  139. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-openai/runtime/main.py +0 -0
  140. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-openai/tests/__init__.py +0 -0
  141. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-openai/tests/test_runtime.py +0 -0
  142. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/agent-openai/tests/test_workspace.py +0 -0
  143. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/.env.example +0 -0
  144. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/.gitignore +0 -0
  145. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/README.md +0 -0
  146. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/agent/__init__.py +0 -0
  147. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/agent/agent.py +0 -0
  148. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/app.yaml +0 -0
  149. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/runtime/__init__.py +0 -0
  150. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/runtime/main.py +0 -0
  151. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/custom-agent-langgraph/tests/test_runtime.py +0 -0
  152. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/custom-agent-openai/.env.example +0 -0
  153. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/custom-agent-openai/.gitignore +0 -0
  154. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/custom-agent-openai/README.md +0 -0
  155. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/custom-agent-openai/agent/__init__.py +0 -0
  156. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/custom-agent-openai/agent/agent.py +0 -0
  157. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/custom-agent-openai/app.yaml +0 -0
  158. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/custom-agent-openai/runtime/__init__.py +0 -0
  159. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/custom-agent-openai/runtime/main.py +0 -0
  160. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/custom-agent-openai/tests/test_runtime.py +0 -0
  161. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/sandbox_mcp.py +0 -0
  162. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/sandbox_mcp_langgraph.py +0 -0
  163. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/ui/agent-langgraph/CHAT_APP.md +0 -0
  164. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/ui/agent-langgraph/runtime/main.py +0 -0
  165. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/ui/agent-langgraph/ui/agentbricks-mark.png +0 -0
  166. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/ui/agent-langgraph/ui/app.js +0 -0
  167. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/ui/agent-langgraph/ui/index.html +0 -0
  168. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/ui/agent-langgraph/ui/markdown-it-15.0.2.min.js +0 -0
  169. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/ui/agent-langgraph/ui/styles.css +0 -0
  170. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/ui/agent-openai/CHAT_APP.md +0 -0
  171. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/ui/agent-openai/runtime/main.py +0 -0
  172. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/ui/agent-openai/ui/agentbricks-mark.png +0 -0
  173. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/ui/agent-openai/ui/index.html +0 -0
  174. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/ui/agent-openai/ui/markdown-it-15.0.2.min.js +0 -0
  175. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentbricks/templates/ui/agent-openai/ui/styles.css +0 -0
  176. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/__init__.py +0 -0
  177. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/_pagination.py +0 -0
  178. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/client.py +0 -0
  179. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/langgraph/genie.py +0 -0
  180. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/langgraph/mcp.py +0 -0
  181. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/langgraph/responses.py +0 -0
  182. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/models.py +0 -0
  183. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/openai/genie.py +0 -0
  184. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/openai/mcp.py +0 -0
  185. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/py.typed +0 -0
  186. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/runtime/ARCHITECTURE.md +0 -0
  187. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/runtime/README.md +0 -0
  188. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/runtime/__init__.py +0 -0
  189. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/runtime/app.py +0 -0
  190. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/runtime/auth.py +0 -0
  191. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/runtime/durability/__init__.py +0 -0
  192. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/runtime/durability/execution.py +0 -0
  193. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/runtime/durability/heartbeat.py +0 -0
  194. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/runtime/durability/lakebase_runtime_store.py +0 -0
  195. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/runtime/durability/recovery.py +0 -0
  196. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/runtime/durability/store.py +0 -0
  197. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/runtime/execution.py +0 -0
  198. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/runtime/genie.py +0 -0
  199. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/runtime/mcp_auth.py +0 -0
  200. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/runtime/runtime.py +0 -0
  201. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/runtime/session_store_client.py +0 -0
  202. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/runtime/store.py +0 -0
  203. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/runtime/tracing.py +0 -0
  204. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/runtime/types.py +0 -0
  205. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/runtime/workspace.py +0 -0
  206. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.0}/src/databricks_agentkit/session_store.py +0 -0
  207. {databricks_agentbricks-0.5.0 → databricks_agentbricks-0.6.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.0
3
+ Version: 0.6.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
@@ -20,7 +20,7 @@ Requires-Dist: tomlkit>=0.13
20
20
  Requires-Dist: uvicorn>=0.20.0
21
21
  Provides-Extra: langgraph
22
22
  Requires-Dist: databricks-agents>=1.9.3; extra == 'langgraph'
23
- Requires-Dist: databricks-langchain>=0.17.0; extra == 'langgraph'
23
+ Requires-Dist: databricks-langchain==0.21.0; extra == 'langgraph'
24
24
  Requires-Dist: langchain-mcp-adapters>=0.3.0; extra == 'langgraph'
25
25
  Requires-Dist: langchain>=1.0.0; extra == 'langgraph'
26
26
  Requires-Dist: langgraph>=1.1.0; extra == 'langgraph'
@@ -30,7 +30,7 @@ Provides-Extra: openai
30
30
  Requires-Dist: databricks-agents>=1.9.3; extra == 'openai'
31
31
  Requires-Dist: databricks-openai>=0.13.0; extra == 'openai'
32
32
  Requires-Dist: mlflow>=3.10.1; extra == 'openai'
33
- Requires-Dist: openai-agents>=0.8.0; extra == 'openai'
33
+ Requires-Dist: openai-agents>=0.15.0; extra == 'openai'
34
34
  Requires-Dist: opentelemetry-exporter-otlp-proto-grpc>=1.25.0; extra == 'openai'
35
35
  Description-Content-Type: text/markdown
36
36
 
@@ -38,7 +38,8 @@ Description-Content-Type: text/markdown
38
38
 
39
39
  Agent Bricks CLI is an experimental command-line interface for building and deploying custom
40
40
  agents on Databricks. It manages memory, sessions, tracing, and deployments from one authenticated
41
- command.
41
+ command. Under `agentbricks experimental`, it also binds each of the agent's LLM calls to a model
42
+ service you own, so the model behind it can change without a code change or redeploy.
42
43
 
43
44
  > The underlying APIs are in preview and may need workspace enablement.
44
45
 
@@ -65,8 +66,9 @@ invocation protocol to design yourself. Bring your own agent, or start from a te
65
66
  (LangGraph or OpenAI Agents) with the runtime, tests, and an optional chat UI wired up; you edit
66
67
  the application code (model, tools, prompts).
67
68
  - **`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
69
+ agent depends on: tool bindings (data sandbox, managed MCP services, Unity Catalog functions),
70
+ memory, session, and durability resources, and the model services and Prompt Registry prompts
71
+ each LLM call uses. `agentbricks deploy` reads it to provision and wire everything
70
72
  up (detailed under [Agent tools](#agent-tools)).
71
73
  - **`agentbricks deploy`** - provisions the bound stores, grants the app's service principal access to
72
74
  them, provisions the durable-runtime database when durability is on, configures tracing, and rolls
@@ -144,6 +146,33 @@ If Databricks SDK default authentication is already configured, you can skip `ag
144
146
  You can also pass the global `--profile/-p` option before an individual command, for example
145
147
  `agentbricks --profile <profile> tools list`. Use `--output json` for scripting.
146
148
 
149
+ The CLI sends best effort command usage telemetry after leaf commands. Its log records the static
150
+ command path, package version, operating system, duration, and process outcome (exit code and, for
151
+ nonzero exits, a bounded error category). Parameter entries include explicitly supplied options
152
+ and parsed Click defaults with supported typed values, automatically across all commands and
153
+ parent groups. Declare defaults in Click options so the shared emitter can read the resolved
154
+ values; fallbacks applied only inside command callbacks are not visible to Click. Omitted free-form
155
+ options and unresolved `None` defaults produce no entry. Environment, prompt, and default-map inputs
156
+ are not included. Explicit free-form options contribute only their static name. Declared Click
157
+ choices contribute an `AGENTBRICKS_CLI_`-prefixed value. Click boolean and numeric options
158
+ contribute their typed values; explicitly supplied non-finite floats and integers outside the log
159
+ schema's 64-bit range remain presence-only, while unsupported defaults are omitted. Hidden and
160
+ deprecated options follow the same policy, and repeated
161
+ options contribute one parameter entry per supplied value, up to 64 entries. Positional arguments,
162
+ raw command arguments, paths, IDs, secrets, arbitrary free-form option values, and exception
163
+ messages are omitted. Set
164
+ `AGENTBRICKS_DISABLE_TELEMETRY=1` to disable these uploads.
165
+
166
+ Telemetry runs only when a leaf command is invoked, whether its callback succeeds or fails. Help
167
+ and errors rejected during Click parsing, before a leaf starts, do not produce an event. Uploads
168
+ reuse the command's workspace client or let the Databricks SDK resolve the selected or default
169
+ profile. Authenticate first with `agentbricks login --profile <profile>` or configure SDK auth;
170
+ an SDK `external-browser` profile may prompt during telemetry even for local commands such as
171
+ `init`. The CLI waits up to two seconds for client setup, authentication, and upload on a daemon
172
+ thread, returning sooner if the worker finishes. This is not a delivery guarantee: unfinished
173
+ uploads can be lost when the process exits after the allowance expires. Missing credentials or a
174
+ failed upload never change the command result.
175
+
147
176
  ## Quickstart
148
177
 
149
178
  The shortest path from a blank directory to a running and deployed agent:
@@ -152,7 +181,7 @@ The shortest path from a blank directory to a running and deployed agent:
152
181
  agentbricks login --profile <profile>
153
182
  agentbricks init my-agent # Defaults to LangGraph; add --framework=openai for OpenAI Agents SDK
154
183
  cd my-agent
155
- agentbricks dev # run locally
184
+ agentbricks dev # optional: develop and test locally
156
185
  agentbricks deploy my-agent # deploy to Databricks
157
186
  ```
158
187
 
@@ -177,6 +206,48 @@ it an HTTP request. MLflow tracing is on by default (`agentbricks init` binds a
177
206
  `.agentbricks/` and `agentbricks deploy` to the bound workspace experiment; `agentbricks tracing list` shows the
178
207
  available traces.
179
208
 
209
+ ## Coding-agent workflow skills
210
+
211
+ The CLI bundles an `agent-bricks-workflow` skill for creating, developing, deploying, validating,
212
+ and troubleshooting agents. It is separate from the project-specific `agent-bricks-migrate` skill
213
+ generated by `init --existing`. Bundled guidance matches the installed CLI and requires no
214
+ download or separate setup command.
215
+
216
+ New `agentbricks init` projects already include the workflow skill. One shared bundle lives at
217
+ `.agents/skills/agent-bricks-workflow/`; `.claude/skills/agent-bricks-workflow/` and
218
+ `.agent/skills/agent-bricks-workflow/` contain pointers to it, not duplicate references.
219
+ Migration discovery uses these same three roots. Installation is project-local, preserves unrelated
220
+ configuration, leaves identical skills unchanged, and refuses to overwrite a different skill.
221
+
222
+ Current coding agents discover these locations:
223
+
224
+ | Coding agent | Project skill discovery |
225
+ | --- | --- |
226
+ | [Claude Code](https://code.claude.com/docs/en/skills) | `.claude/skills/` |
227
+ | [Codex](https://developers.openai.com/codex/skills/) | `.agents/skills/` |
228
+ | [Cursor](https://cursor.com/docs/skills) | `.agents/skills/` compatibility discovery |
229
+ | [GitHub Copilot](https://docs.github.com/en/copilot/concepts/agents/about-agent-skills) | `.agents/skills/` |
230
+ | [Gemini CLI](https://geminicli.com/docs/cli/skills/) | `.agents/skills/` compatibility discovery |
231
+ | [OpenCode](https://opencode.ai/docs/skills/) | `.agents/skills/` compatibility discovery |
232
+ | Other agents | Read the manifest directly |
233
+
234
+ The `.agent/skills/` pointer retains the existing migration discovery location for agents using that
235
+ convention. Support depends on the coding-agent version and its skill settings; restart the session
236
+ if discovery is cached. Generated `AGENTS.md` also links to the workflow skill. The skill is
237
+ advisory and does not authorize deployment or live calls.
238
+
239
+ When the CLI detects a coding-agent environment, it emits a single-line pointer to the bundled
240
+ skill on stderr, including for `--help`. Ordinary human invocations do not emit this hint.
241
+ Coding agents in existing projects can read that bundled file directly without installing
242
+ project-local skills or changing project configuration. Detection is best-effort and does not
243
+ gate skill installation during `init` or native discovery. Set `AGENTBRICKS_DISABLE_AGENT_HINT=1`
244
+ to suppress automatic hints. Hints never alter JSON stdout and are not emitted during shell
245
+ completion, SDK imports, or deployed agent runtime startup.
246
+
247
+ For a deployment-only task, local `dev` is optional. The workflow skill describes focused
248
+ verification of the deployed agent, rather than treating local execution as proof of managed
249
+ memory or session persistence.
250
+
180
251
  ## Inspect and clean up a project
181
252
 
182
253
  Read `agent.toml` for the recorded agent name, declared memory/session stores, tracing, and tool
@@ -243,10 +314,18 @@ memory.delete()
243
314
 
244
315
  The root collections manage stores: `agentkit.memory_stores.create/get/list` and
245
316
  `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.
317
+ contents, such as `memory_store.add()`, `memory_store.put()`,
318
+ `memory_store.get("memory-id")`, `memory_store.list()`, and `memory_store.search()`, or
319
+ `session_store.add()`, `session_store.get("session-id")`, and `session_store.list()`.
320
+ Returned memories, sessions, and stores own their `update()` and `delete()` operations.
321
+
322
+ `memory_store.add()` fails with `ALREADY_EXISTS` when a memory already exists at the
323
+ same `actor_id`, `session_id`, and `path`. `memory_store.put()` creates the memory or
324
+ updates the existing one: it replaces the content, or with `append=True` adds `content`
325
+ as new lines, skipping lines already present. `put()` is not atomic, so concurrent
326
+ writers to one path can overwrite each other. `add()`'s `write_mode` argument is
327
+ deprecated; use `put()` instead. `memory_store.list(actor_id=..., path=...)` returns the
328
+ memories at one exact path.
250
329
 
251
330
  All `list()` methods return iterators that automatically consume server pages. List
252
331
  `page_size` and search `limit` values must be between 1 and 100. `session.list_items()`
@@ -422,7 +501,8 @@ from databricks_agentkit import AgentKitClient
422
501
  agentkit = AgentKitClient(WorkspaceClient())
423
502
 
424
503
  memory_store = agentkit.memory_stores.create("support-agent-memory")
425
- memory_store.add(
504
+ # put() creates the entry, or replaces its content if one already exists at this path.
505
+ memory_store.put(
426
506
  actor_id="user-123",
427
507
  path="/preferences/communication.md",
428
508
  content="Prefers email over phone. Timezone: PST.",
@@ -434,15 +514,27 @@ results = memory_store.search(actor_id="user-123", query="communication preferen
434
514
  ```
435
515
 
436
516
  To browse rather than search, `memory_store.list(actor_id=..., path_prefix=...)` returns entries
437
- directly.
517
+ directly, and `memory_store.list(actor_id=..., path=...)` returns the entries at one exact path.
438
518
 
439
519
  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.
520
+ `memory_tools(actor)` returns four tools bound to one actor's partition:
521
+
522
+ - `remember(fact, topic)` appends the fact to one memory per topic, `/{topic}.md`, with the topic
523
+ reduced to a safe path segment. Remembering a fact that is already there is a no-op.
524
+ - `recall(query, session_id=None)` searches the actor's memories, including ones written under other
525
+ paths, or only the ones saved under `session_id`.
526
+ - `forget(fact, topic, session_id=None)` removes a matching fact from every memory at the path, or
527
+ only from the one saved under `session_id`, and deletes a memory once no facts remain.
528
+ - `list_memories(session_id=None)` lists each memory's path, its session if it has one, and how
529
+ many facts it holds, optionally only for one session.
530
+
531
+ `remember` writes memories without a `session_id`; memories saved under a session are labeled with
532
+ it in `recall` and `list_memories`. `memory_tools` resolves the store from the `[memory_store]`
533
+ binding, carried to the runtime by the `AGENT_MEMORY_STORE` env var that `agentbricks deploy`
534
+ injects, and returns no tools when no store is set, so the agent runs unchanged.
443
535
  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()`:
536
+ there (the store is provisioned and used only at deploy). The OpenAI Agents adapter exposes the same
537
+ tools as `databricks_agentkit.openai.memory_tools(actor)`:
446
538
 
447
539
  ```python
448
540
  from databricks_agentkit.langgraph import memory_tools
@@ -484,6 +576,32 @@ removes the corresponding `AGENT_MEMORY_STORE` or `AGENT_SESSION_STORE` entry fr
484
576
  Unbinding does not delete the store or revoke an existing grant to the App's service principal.
485
577
  If access must be revoked, coordinate that separately with the store owner or workspace admin.
486
578
 
579
+ ## Model services and prompts (experimental)
580
+
581
+ `agentbricks experimental models` and `agentbricks experimental prompts` bind each LLM call in
582
+ your agent to a Unity Gateway model service you own (Unity Gateway was formerly AI Gateway), and
583
+ declare the Prompt Registry prompts it loads. They live under `experimental` because their flags
584
+ and output may still change between releases without a deprecation period. The agent.toml tables
585
+ they write live under `[experimental]` too.
586
+
587
+ A one-model agent binds one service. A compound agent binds one per call site, each under a role:
588
+
589
+ ```sh
590
+ agentbricks experimental models bind main.my_agent.router_llm --role router --default system.ai.claude-haiku-4-5
591
+ agentbricks experimental models bind main.my_agent.writer_llm --role writer --default system.ai.claude-sonnet-4-5
592
+ agentbricks experimental prompts bind main.my_agent.writer
593
+ agentbricks deploy my-agent # creates the services and grants the app access to them and the prompt
594
+ agentbricks experimental models status # the model behind each service
595
+ agentbricks experimental models set claude-haiku-4-5 --role writer # switch one, no redeploy
596
+ ```
597
+
598
+ Each LLM call must use its role's service, `resolve_model_service("<role>")`, which reads the
599
+ `AGENT_MODEL_SERVICE_<ROLE>` env var that deploy sets. Deploy creates a service that doesn't exist
600
+ yet, routed to its `--default` model, and never repoints one that does, so a redeploy can't undo a
601
+ switch. For bound prompts, deploy grants the app the schema privileges the Prompt Registry requires
602
+ to load them (USE SCHEMA, EXECUTE, CREATE FUNCTION, and MANAGE). `agentbricks experimental prompts
603
+ list` shows each bound prompt and the version its `@production` alias points at.
604
+
487
605
  ## Commands
488
606
 
489
607
  For the full command reference - every command, subcommand, argument, and option, in table form -
@@ -517,12 +635,20 @@ agentbricks [-p <profile>] [-o text|json]
517
635
  add sandbox --scope SCOPE [--scope SCOPE ...]
518
636
  [--no-databricks-access-token-included] [--source PATH]
519
637
  add mcp SERVICE [--name NAME] [--source PATH]
520
- add uc-function FUNCTION [--name NAME] [--source PATH]
638
+ add uc-function FUNCTION [--name NAME] [--auth user|app] [--source PATH]
521
639
  add genie-one [--name NAME] [--auth user|app] [--source PATH]
522
640
  add genie-agent SPACE_ID [--name NAME] [--auth user|app] [--source PATH]
523
641
  list [--kind sandbox|mcp|uc-function|genie-one|genie-agent]
524
642
  [--schema CATALOG.SCHEMA]
525
643
  remove TOOL_ID [MCP_SERVICE] [--source PATH]
644
+ models
645
+ bind SERVICE [--role ROLE] [--default MODEL] [--source PATH]
646
+ unbind | list | status
647
+ set MODEL [--role ROLE] [--yes]
648
+ prompts
649
+ bind PROMPT [--key KEY] [--source PATH]
650
+ unbind KEY [--source PATH]
651
+ list [--source PATH]
526
652
  deploy [<name>] [--source PATH] [--instances N]
527
653
  deployments list | get | logs | start | stop | delete
528
654
  endpoint
@@ -658,8 +784,9 @@ agentbricks tools list
658
784
 
659
785
  ### Managed tool identity and migration
660
786
 
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.
787
+ `agentbricks tools add mcp`, `agentbricks tools add sandbox`, `agentbricks tools add uc-function`,
788
+ `agentbricks tools add genie-one`, and `agentbricks tools add genie-agent` write explicit
789
+ `auth = "user"` by default.
663
790
  Use `--auth app` for the App service principal instead. This field is on the tool entry, not
664
791
  inside `source` or `policy`:
665
792
 
@@ -670,7 +797,8 @@ auth = "user"
670
797
  source = { kind = "mcp", service = "system.ai.web_search" }
671
798
  ```
672
799
 
673
- Direct UC-function bindings remain app/default identity and do not accept `--auth user`.
800
+ UC-function bindings use the request user's permissions by default. Use `--auth app` to execute
801
+ with the App service principal's permissions instead.
674
802
  Managed-tool add commands write the selected identity to `agent.toml`; inspect that manifest to
675
803
  review configured bindings. Missing legacy auth continues to mean App identity at runtime; it is
676
804
  never silently upgraded to user identity.
@@ -769,6 +897,7 @@ Deploy derives Apps user scopes from explicit `auth = "user"` bindings and union
769
897
  | Managed MCP (governed ingress) | `ai-gateway` |
770
898
  | `system.ai.dbsql` | `ai-gateway`, `sql` |
771
899
  | `system.ai.genie_one_mcp` | `ai-gateway`, `genie` |
900
+ | UC function | `mcp.functions` |
772
901
  | Sandbox with a Volume downscope | `ai-gateway`, `files` |
773
902
  | First-class Genie One or Genie Agent | `genie` |
774
903
  | Sandbox with token injection | `ai-gateway`, `workspace.workspace` |
@@ -2,7 +2,8 @@
2
2
 
3
3
  Agent Bricks CLI is an experimental command-line interface for building and deploying custom
4
4
  agents on Databricks. It manages memory, sessions, tracing, and deployments from one authenticated
5
- command.
5
+ command. Under `agentbricks experimental`, it also binds each of the agent's LLM calls to a model
6
+ service you own, so the model behind it can change without a code change or redeploy.
6
7
 
7
8
  > The underlying APIs are in preview and may need workspace enablement.
8
9
 
@@ -29,8 +30,9 @@ invocation protocol to design yourself. Bring your own agent, or start from a te
29
30
  (LangGraph or OpenAI Agents) with the runtime, tests, and an optional chat UI wired up; you edit
30
31
  the application code (model, tools, prompts).
31
32
  - **`agent.toml`** - the declarative source of truth for the Databricks-managed infrastructure your
32
- agent depends on: tool bindings (data sandbox, managed MCP services, Unity Catalog functions) and
33
- memory, session, and durability resources. `agentbricks deploy` reads it to provision and wire everything
33
+ agent depends on: tool bindings (data sandbox, managed MCP services, Unity Catalog functions),
34
+ memory, session, and durability resources, and the model services and Prompt Registry prompts
35
+ each LLM call uses. `agentbricks deploy` reads it to provision and wire everything
34
36
  up (detailed under [Agent tools](#agent-tools)).
35
37
  - **`agentbricks deploy`** - provisions the bound stores, grants the app's service principal access to
36
38
  them, provisions the durable-runtime database when durability is on, configures tracing, and rolls
@@ -108,6 +110,33 @@ If Databricks SDK default authentication is already configured, you can skip `ag
108
110
  You can also pass the global `--profile/-p` option before an individual command, for example
109
111
  `agentbricks --profile <profile> tools list`. Use `--output json` for scripting.
110
112
 
113
+ The CLI sends best effort command usage telemetry after leaf commands. Its log records the static
114
+ command path, package version, operating system, duration, and process outcome (exit code and, for
115
+ nonzero exits, a bounded error category). Parameter entries include explicitly supplied options
116
+ and parsed Click defaults with supported typed values, automatically across all commands and
117
+ parent groups. Declare defaults in Click options so the shared emitter can read the resolved
118
+ values; fallbacks applied only inside command callbacks are not visible to Click. Omitted free-form
119
+ options and unresolved `None` defaults produce no entry. Environment, prompt, and default-map inputs
120
+ are not included. Explicit free-form options contribute only their static name. Declared Click
121
+ choices contribute an `AGENTBRICKS_CLI_`-prefixed value. Click boolean and numeric options
122
+ contribute their typed values; explicitly supplied non-finite floats and integers outside the log
123
+ schema's 64-bit range remain presence-only, while unsupported defaults are omitted. Hidden and
124
+ deprecated options follow the same policy, and repeated
125
+ options contribute one parameter entry per supplied value, up to 64 entries. Positional arguments,
126
+ raw command arguments, paths, IDs, secrets, arbitrary free-form option values, and exception
127
+ messages are omitted. Set
128
+ `AGENTBRICKS_DISABLE_TELEMETRY=1` to disable these uploads.
129
+
130
+ Telemetry runs only when a leaf command is invoked, whether its callback succeeds or fails. Help
131
+ and errors rejected during Click parsing, before a leaf starts, do not produce an event. Uploads
132
+ reuse the command's workspace client or let the Databricks SDK resolve the selected or default
133
+ profile. Authenticate first with `agentbricks login --profile <profile>` or configure SDK auth;
134
+ an SDK `external-browser` profile may prompt during telemetry even for local commands such as
135
+ `init`. The CLI waits up to two seconds for client setup, authentication, and upload on a daemon
136
+ thread, returning sooner if the worker finishes. This is not a delivery guarantee: unfinished
137
+ uploads can be lost when the process exits after the allowance expires. Missing credentials or a
138
+ failed upload never change the command result.
139
+
111
140
  ## Quickstart
112
141
 
113
142
  The shortest path from a blank directory to a running and deployed agent:
@@ -116,7 +145,7 @@ The shortest path from a blank directory to a running and deployed agent:
116
145
  agentbricks login --profile <profile>
117
146
  agentbricks init my-agent # Defaults to LangGraph; add --framework=openai for OpenAI Agents SDK
118
147
  cd my-agent
119
- agentbricks dev # run locally
148
+ agentbricks dev # optional: develop and test locally
120
149
  agentbricks deploy my-agent # deploy to Databricks
121
150
  ```
122
151
 
@@ -141,6 +170,48 @@ it an HTTP request. MLflow tracing is on by default (`agentbricks init` binds a
141
170
  `.agentbricks/` and `agentbricks deploy` to the bound workspace experiment; `agentbricks tracing list` shows the
142
171
  available traces.
143
172
 
173
+ ## Coding-agent workflow skills
174
+
175
+ The CLI bundles an `agent-bricks-workflow` skill for creating, developing, deploying, validating,
176
+ and troubleshooting agents. It is separate from the project-specific `agent-bricks-migrate` skill
177
+ generated by `init --existing`. Bundled guidance matches the installed CLI and requires no
178
+ download or separate setup command.
179
+
180
+ New `agentbricks init` projects already include the workflow skill. One shared bundle lives at
181
+ `.agents/skills/agent-bricks-workflow/`; `.claude/skills/agent-bricks-workflow/` and
182
+ `.agent/skills/agent-bricks-workflow/` contain pointers to it, not duplicate references.
183
+ Migration discovery uses these same three roots. Installation is project-local, preserves unrelated
184
+ configuration, leaves identical skills unchanged, and refuses to overwrite a different skill.
185
+
186
+ Current coding agents discover these locations:
187
+
188
+ | Coding agent | Project skill discovery |
189
+ | --- | --- |
190
+ | [Claude Code](https://code.claude.com/docs/en/skills) | `.claude/skills/` |
191
+ | [Codex](https://developers.openai.com/codex/skills/) | `.agents/skills/` |
192
+ | [Cursor](https://cursor.com/docs/skills) | `.agents/skills/` compatibility discovery |
193
+ | [GitHub Copilot](https://docs.github.com/en/copilot/concepts/agents/about-agent-skills) | `.agents/skills/` |
194
+ | [Gemini CLI](https://geminicli.com/docs/cli/skills/) | `.agents/skills/` compatibility discovery |
195
+ | [OpenCode](https://opencode.ai/docs/skills/) | `.agents/skills/` compatibility discovery |
196
+ | Other agents | Read the manifest directly |
197
+
198
+ The `.agent/skills/` pointer retains the existing migration discovery location for agents using that
199
+ convention. Support depends on the coding-agent version and its skill settings; restart the session
200
+ if discovery is cached. Generated `AGENTS.md` also links to the workflow skill. The skill is
201
+ advisory and does not authorize deployment or live calls.
202
+
203
+ When the CLI detects a coding-agent environment, it emits a single-line pointer to the bundled
204
+ skill on stderr, including for `--help`. Ordinary human invocations do not emit this hint.
205
+ Coding agents in existing projects can read that bundled file directly without installing
206
+ project-local skills or changing project configuration. Detection is best-effort and does not
207
+ gate skill installation during `init` or native discovery. Set `AGENTBRICKS_DISABLE_AGENT_HINT=1`
208
+ to suppress automatic hints. Hints never alter JSON stdout and are not emitted during shell
209
+ completion, SDK imports, or deployed agent runtime startup.
210
+
211
+ For a deployment-only task, local `dev` is optional. The workflow skill describes focused
212
+ verification of the deployed agent, rather than treating local execution as proof of managed
213
+ memory or session persistence.
214
+
144
215
  ## Inspect and clean up a project
145
216
 
146
217
  Read `agent.toml` for the recorded agent name, declared memory/session stores, tracing, and tool
@@ -207,10 +278,18 @@ memory.delete()
207
278
 
208
279
  The root collections manage stores: `agentkit.memory_stores.create/get/list` and
209
280
  `agentkit.session_stores.create/get/list`. A returned store owns operations on its
210
- contents, such as `memory_store.add()`, `memory_store.get("memory-id")`,
211
- `memory_store.list()`, and `memory_store.search()`, or `session_store.add()`,
212
- `session_store.get("session-id")`, and `session_store.list()`. Returned memories,
213
- sessions, and stores own their `update()` and `delete()` operations.
281
+ contents, such as `memory_store.add()`, `memory_store.put()`,
282
+ `memory_store.get("memory-id")`, `memory_store.list()`, and `memory_store.search()`, or
283
+ `session_store.add()`, `session_store.get("session-id")`, and `session_store.list()`.
284
+ Returned memories, sessions, and stores own their `update()` and `delete()` operations.
285
+
286
+ `memory_store.add()` fails with `ALREADY_EXISTS` when a memory already exists at the
287
+ same `actor_id`, `session_id`, and `path`. `memory_store.put()` creates the memory or
288
+ updates the existing one: it replaces the content, or with `append=True` adds `content`
289
+ as new lines, skipping lines already present. `put()` is not atomic, so concurrent
290
+ writers to one path can overwrite each other. `add()`'s `write_mode` argument is
291
+ deprecated; use `put()` instead. `memory_store.list(actor_id=..., path=...)` returns the
292
+ memories at one exact path.
214
293
 
215
294
  All `list()` methods return iterators that automatically consume server pages. List
216
295
  `page_size` and search `limit` values must be between 1 and 100. `session.list_items()`
@@ -386,7 +465,8 @@ from databricks_agentkit import AgentKitClient
386
465
  agentkit = AgentKitClient(WorkspaceClient())
387
466
 
388
467
  memory_store = agentkit.memory_stores.create("support-agent-memory")
389
- memory_store.add(
468
+ # put() creates the entry, or replaces its content if one already exists at this path.
469
+ memory_store.put(
390
470
  actor_id="user-123",
391
471
  path="/preferences/communication.md",
392
472
  content="Prefers email over phone. Timezone: PST.",
@@ -398,15 +478,27 @@ results = memory_store.search(actor_id="user-123", query="communication preferen
398
478
  ```
399
479
 
400
480
  To browse rather than search, `memory_store.list(actor_id=..., path_prefix=...)` returns entries
401
- directly.
481
+ directly, and `memory_store.list(actor_id=..., path=...)` returns the entries at one exact path.
402
482
 
403
483
  In an agent configured with `server = "agentbricks"`, add the memory tools so the model can read and write memory during a run.
404
- `memory_tools(actor)` exposes `remember` and `recall` bound to one actor's partition; it resolves the
405
- store from the `[memory_store]` binding, carried to the runtime by the `AGENT_MEMORY_STORE` env var
406
- that `agentbricks deploy` injects, and returns no tools when no store is set, so the agent runs unchanged.
484
+ `memory_tools(actor)` returns four tools bound to one actor's partition:
485
+
486
+ - `remember(fact, topic)` appends the fact to one memory per topic, `/{topic}.md`, with the topic
487
+ reduced to a safe path segment. Remembering a fact that is already there is a no-op.
488
+ - `recall(query, session_id=None)` searches the actor's memories, including ones written under other
489
+ paths, or only the ones saved under `session_id`.
490
+ - `forget(fact, topic, session_id=None)` removes a matching fact from every memory at the path, or
491
+ only from the one saved under `session_id`, and deletes a memory once no facts remain.
492
+ - `list_memories(session_id=None)` lists each memory's path, its session if it has one, and how
493
+ many facts it holds, optionally only for one session.
494
+
495
+ `remember` writes memories without a `session_id`; memories saved under a session are labeled with
496
+ it in `recall` and `list_memories`. `memory_tools` resolves the store from the `[memory_store]`
497
+ binding, carried to the runtime by the `AGENT_MEMORY_STORE` env var that `agentbricks deploy`
498
+ injects, and returns no tools when no store is set, so the agent runs unchanged.
407
499
  That "no store set" path is also how it runs under `agentbricks dev`, which runs locally: memory is off
408
- there (the store is provisioned and used only at deploy). The OpenAI Agents adapter exposes the same as
409
- `memory_tools()`:
500
+ there (the store is provisioned and used only at deploy). The OpenAI Agents adapter exposes the same
501
+ tools as `databricks_agentkit.openai.memory_tools(actor)`:
410
502
 
411
503
  ```python
412
504
  from databricks_agentkit.langgraph import memory_tools
@@ -448,6 +540,32 @@ removes the corresponding `AGENT_MEMORY_STORE` or `AGENT_SESSION_STORE` entry fr
448
540
  Unbinding does not delete the store or revoke an existing grant to the App's service principal.
449
541
  If access must be revoked, coordinate that separately with the store owner or workspace admin.
450
542
 
543
+ ## Model services and prompts (experimental)
544
+
545
+ `agentbricks experimental models` and `agentbricks experimental prompts` bind each LLM call in
546
+ your agent to a Unity Gateway model service you own (Unity Gateway was formerly AI Gateway), and
547
+ declare the Prompt Registry prompts it loads. They live under `experimental` because their flags
548
+ and output may still change between releases without a deprecation period. The agent.toml tables
549
+ they write live under `[experimental]` too.
550
+
551
+ A one-model agent binds one service. A compound agent binds one per call site, each under a role:
552
+
553
+ ```sh
554
+ agentbricks experimental models bind main.my_agent.router_llm --role router --default system.ai.claude-haiku-4-5
555
+ agentbricks experimental models bind main.my_agent.writer_llm --role writer --default system.ai.claude-sonnet-4-5
556
+ agentbricks experimental prompts bind main.my_agent.writer
557
+ agentbricks deploy my-agent # creates the services and grants the app access to them and the prompt
558
+ agentbricks experimental models status # the model behind each service
559
+ agentbricks experimental models set claude-haiku-4-5 --role writer # switch one, no redeploy
560
+ ```
561
+
562
+ Each LLM call must use its role's service, `resolve_model_service("<role>")`, which reads the
563
+ `AGENT_MODEL_SERVICE_<ROLE>` env var that deploy sets. Deploy creates a service that doesn't exist
564
+ yet, routed to its `--default` model, and never repoints one that does, so a redeploy can't undo a
565
+ switch. For bound prompts, deploy grants the app the schema privileges the Prompt Registry requires
566
+ to load them (USE SCHEMA, EXECUTE, CREATE FUNCTION, and MANAGE). `agentbricks experimental prompts
567
+ list` shows each bound prompt and the version its `@production` alias points at.
568
+
451
569
  ## Commands
452
570
 
453
571
  For the full command reference - every command, subcommand, argument, and option, in table form -
@@ -481,12 +599,20 @@ agentbricks [-p <profile>] [-o text|json]
481
599
  add sandbox --scope SCOPE [--scope SCOPE ...]
482
600
  [--no-databricks-access-token-included] [--source PATH]
483
601
  add mcp SERVICE [--name NAME] [--source PATH]
484
- add uc-function FUNCTION [--name NAME] [--source PATH]
602
+ add uc-function FUNCTION [--name NAME] [--auth user|app] [--source PATH]
485
603
  add genie-one [--name NAME] [--auth user|app] [--source PATH]
486
604
  add genie-agent SPACE_ID [--name NAME] [--auth user|app] [--source PATH]
487
605
  list [--kind sandbox|mcp|uc-function|genie-one|genie-agent]
488
606
  [--schema CATALOG.SCHEMA]
489
607
  remove TOOL_ID [MCP_SERVICE] [--source PATH]
608
+ models
609
+ bind SERVICE [--role ROLE] [--default MODEL] [--source PATH]
610
+ unbind | list | status
611
+ set MODEL [--role ROLE] [--yes]
612
+ prompts
613
+ bind PROMPT [--key KEY] [--source PATH]
614
+ unbind KEY [--source PATH]
615
+ list [--source PATH]
490
616
  deploy [<name>] [--source PATH] [--instances N]
491
617
  deployments list | get | logs | start | stop | delete
492
618
  endpoint
@@ -622,8 +748,9 @@ agentbricks tools list
622
748
 
623
749
  ### Managed tool identity and migration
624
750
 
625
- `agentbricks tools add mcp`, `agentbricks tools add sandbox`, `agentbricks tools add genie-one`, and
626
- `agentbricks tools add genie-agent` write explicit `auth = "user"` by default.
751
+ `agentbricks tools add mcp`, `agentbricks tools add sandbox`, `agentbricks tools add uc-function`,
752
+ `agentbricks tools add genie-one`, and `agentbricks tools add genie-agent` write explicit
753
+ `auth = "user"` by default.
627
754
  Use `--auth app` for the App service principal instead. This field is on the tool entry, not
628
755
  inside `source` or `policy`:
629
756
 
@@ -634,7 +761,8 @@ auth = "user"
634
761
  source = { kind = "mcp", service = "system.ai.web_search" }
635
762
  ```
636
763
 
637
- Direct UC-function bindings remain app/default identity and do not accept `--auth user`.
764
+ UC-function bindings use the request user's permissions by default. Use `--auth app` to execute
765
+ with the App service principal's permissions instead.
638
766
  Managed-tool add commands write the selected identity to `agent.toml`; inspect that manifest to
639
767
  review configured bindings. Missing legacy auth continues to mean App identity at runtime; it is
640
768
  never silently upgraded to user identity.
@@ -733,6 +861,7 @@ Deploy derives Apps user scopes from explicit `auth = "user"` bindings and union
733
861
  | Managed MCP (governed ingress) | `ai-gateway` |
734
862
  | `system.ai.dbsql` | `ai-gateway`, `sql` |
735
863
  | `system.ai.genie_one_mcp` | `ai-gateway`, `genie` |
864
+ | UC function | `mcp.functions` |
736
865
  | Sandbox with a Volume downscope | `ai-gateway`, `files` |
737
866
  | First-class Genie One or Genie Agent | `genie` |
738
867
  | Sandbox with token injection | `ai-gateway`, `workspace.workspace` |
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "databricks-agentbricks"
3
- version = "0.5.0"
3
+ version = "0.6.0"
4
4
  description = "Agent Bricks CLI and AgentKit SDK for custom agents on Databricks"
5
5
  authors = [
6
6
  { name="Databricks", email="agent-feedback@databricks.com" },
@@ -33,7 +33,7 @@ dependencies = [
33
33
  [project.optional-dependencies]
34
34
  # Framework adapters are optional; the CLI, store SDK, and HTTP runtime install by default.
35
35
  langgraph = [
36
- "databricks-langchain>=0.17.0",
36
+ "databricks-langchain==0.21.0",
37
37
  "langgraph>=1.1.0",
38
38
  "langchain>=1.0.0",
39
39
  "langchain-mcp-adapters>=0.3.0",
@@ -42,7 +42,7 @@ langgraph = [
42
42
  "databricks-agents>=1.9.3",
43
43
  ]
44
44
  openai = [
45
- "openai-agents>=0.8.0",
45
+ "openai-agents>=0.15.0",
46
46
  "databricks-openai>=0.13.0",
47
47
  "mlflow>=3.10.1",
48
48
  "opentelemetry-exporter-otlp-proto-grpc>=1.25.0",
@@ -0,0 +1,62 @@
1
+ """Optional coding-agent hints; importing the SDK never emits them."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import os
6
+ import sys
7
+
8
+ from databricks_agentbricks.skills import bundled_workflow_skill
9
+
10
+ # Update these markers as new coding-agent harnesses are supported so they receive workflow hints.
11
+ AGENT_ENV_MARKERS = (
12
+ "AGENT",
13
+ "AI_AGENT",
14
+ "AMP_CURRENT_THREAD_ID",
15
+ "ANTIGRAVITY_AGENT",
16
+ "AUGMENT_AGENT",
17
+ "CLAUDECODE",
18
+ "CLAUDE_CODE",
19
+ "CLINE_ACTIVE",
20
+ "CLINE_AGENT",
21
+ "CODEX_SANDBOX",
22
+ "CODEX_THREAD_ID",
23
+ "CURSOR_AGENT",
24
+ "GEMINI_CLI",
25
+ "GROK_PLUGIN_ROOT",
26
+ "JUNIE_DATA",
27
+ "KIMI_PLUGIN_ROOT",
28
+ "OPENCLAW_SHELL",
29
+ "OPENCODE",
30
+ "PI_CODING_AGENT",
31
+ "QWEN_CODE",
32
+ "ROO_ACTIVE",
33
+ "TRAE_AI_SHELL_ID",
34
+ )
35
+ AGENT_ENV_VALUES = {"CURSOR_EXTENSION_HOST_ROLE": "agent-exec"}
36
+
37
+
38
+ def workflow_hint() -> str | None:
39
+ """Return a local skill pointer only when an agent is driving the CLI."""
40
+ try:
41
+ if os.environ.get("AGENTBRICKS_DISABLE_AGENT_HINT", "").lower() in {
42
+ "1",
43
+ "true",
44
+ "yes",
45
+ "on",
46
+ }:
47
+ return None
48
+ detected = any(os.environ.get(marker) for marker in AGENT_ENV_MARKERS) or any(
49
+ os.environ.get(name) == value for name, value in AGENT_ENV_VALUES.items()
50
+ )
51
+ if not detected and not (
52
+ os.environ.get("TERM_PROGRAM") == "kiro" and not sys.stdout.isatty()
53
+ ):
54
+ return None
55
+ manifest = bundled_workflow_skill()
56
+ return (
57
+ f"Agent Bricks workflow guidance for this installed CLI: {manifest}. "
58
+ "Read it for Agent Bricks tasks; it does not authorize additional actions. "
59
+ "Set AGENTBRICKS_DISABLE_AGENT_HINT=1 to silence this."
60
+ )
61
+ except Exception:
62
+ return None