databricks-mason 0.1.5.dev0__tar.gz → 0.1.6.dev0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- databricks_mason-0.1.6.dev0/PKG-INFO +466 -0
- databricks_mason-0.1.6.dev0/README.md +431 -0
- {databricks_mason-0.1.5.dev0 → databricks_mason-0.1.6.dev0}/pyproject.toml +20 -18
- {databricks_mason-0.1.5.dev0 → databricks_mason-0.1.6.dev0}/src/databricks_mason/__init__.py +13 -7
- {databricks_mason-0.1.5.dev0 → databricks_mason-0.1.6.dev0}/src/databricks_mason/_api_client.py +93 -8
- databricks_mason-0.1.6.dev0/src/databricks_mason/_group.py +216 -0
- {databricks_mason-0.1.5.dev0 → databricks_mason-0.1.6.dev0}/src/databricks_mason/agent_project.py +121 -62
- databricks_mason-0.1.6.dev0/src/databricks_mason/app_resources.py +125 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/cli/__init__.py +12 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/cli/app.py +109 -0
- {databricks_mason-0.1.5.dev0/src/databricks_mason → databricks_mason-0.1.6.dev0/src/databricks_mason/cli}/auth.py +4 -1
- {databricks_mason-0.1.5.dev0/src/databricks_mason → databricks_mason-0.1.6.dev0/src/databricks_mason/cli}/deploy.py +286 -164
- databricks_mason-0.1.6.dev0/src/databricks_mason/cli/dev.py +292 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/cli/endpoint.py +145 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/cli/endpoint_output.py +53 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/cli/endpoint_request.py +71 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/cli/endpoint_transport.py +148 -0
- {databricks_mason-0.1.5.dev0/src/databricks_mason → databricks_mason-0.1.6.dev0/src/databricks_mason/cli}/help.py +203 -32
- databricks_mason-0.1.6.dev0/src/databricks_mason/cli/init.py +259 -0
- {databricks_mason-0.1.5.dev0/src/databricks_mason → databricks_mason-0.1.6.dev0/src/databricks_mason/cli}/memory.py +63 -63
- {databricks_mason-0.1.5.dev0/src/databricks_mason → databricks_mason-0.1.6.dev0/src/databricks_mason/cli}/sandbox.py +6 -5
- {databricks_mason-0.1.5.dev0/src/databricks_mason → databricks_mason-0.1.6.dev0/src/databricks_mason/cli}/sessions.py +64 -65
- {databricks_mason-0.1.5.dev0/src/databricks_mason → databricks_mason-0.1.6.dev0/src/databricks_mason/cli}/tools.py +29 -144
- databricks_mason-0.1.6.dev0/src/databricks_mason/cli/tracing.py +326 -0
- {databricks_mason-0.1.5.dev0 → databricks_mason-0.1.6.dev0}/src/databricks_mason/client.py +6 -3
- databricks_mason-0.1.6.dev0/src/databricks_mason/databricks_cli.py +38 -0
- {databricks_mason-0.1.5.dev0 → databricks_mason-0.1.6.dev0}/src/databricks_mason/errors.py +22 -10
- databricks_mason-0.1.5.dev0/src/databricks_mason/lakebase_durability_store.py → databricks_mason-0.1.6.dev0/src/databricks_mason/lakebase_runtime_store.py +9 -9
- {databricks_mason-0.1.5.dev0 → databricks_mason-0.1.6.dev0}/src/databricks_mason/langgraph/__init__.py +10 -5
- {databricks_mason-0.1.5.dev0 → databricks_mason-0.1.6.dev0}/src/databricks_mason/memory_store.py +11 -0
- {databricks_mason-0.1.5.dev0 → databricks_mason-0.1.6.dev0}/src/databricks_mason/models.py +10 -0
- {databricks_mason-0.1.5.dev0 → databricks_mason-0.1.6.dev0}/src/databricks_mason/openai/__init__.py +10 -5
- {databricks_mason-0.1.5.dev0 → databricks_mason-0.1.6.dev0}/src/databricks_mason/openai/mcp.py +8 -1
- {databricks_mason-0.1.5.dev0 → databricks_mason-0.1.6.dev0}/src/databricks_mason/project_config.py +34 -18
- databricks_mason-0.1.6.dev0/src/databricks_mason/project_types.py +55 -0
- {databricks_mason-0.1.5.dev0 → databricks_mason-0.1.6.dev0}/src/databricks_mason/render.py +120 -43
- databricks_mason-0.1.6.dev0/src/databricks_mason/runtime/ARCHITECTURE.md +64 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/runtime/README.md +158 -0
- {databricks_mason-0.1.5.dev0 → databricks_mason-0.1.6.dev0}/src/databricks_mason/runtime/__init__.py +11 -10
- {databricks_mason-0.1.5.dev0/src/databricks_mason/runtime/durability → databricks_mason-0.1.6.dev0/src/databricks_mason/runtime}/app.py +66 -69
- databricks_mason-0.1.6.dev0/src/databricks_mason/runtime/durability/__init__.py +1 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/runtime/durability/execution.py +133 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/runtime/durability/heartbeat.py +64 -0
- databricks_mason-0.1.5.dev0/src/databricks_mason/runtime/durability/store.py → databricks_mason-0.1.6.dev0/src/databricks_mason/runtime/durability/lakebase_runtime_store.py +144 -302
- databricks_mason-0.1.6.dev0/src/databricks_mason/runtime/durability/recovery.py +70 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/runtime/durability/store.py +33 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/runtime/execution.py +160 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/runtime/runtime.py +273 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/runtime/store.py +235 -0
- {databricks_mason-0.1.5.dev0 → databricks_mason-0.1.6.dev0}/src/databricks_mason/runtime/tool_manifest.py +18 -47
- {databricks_mason-0.1.5.dev0 → databricks_mason-0.1.6.dev0}/src/databricks_mason/runtime/tracing.py +29 -10
- databricks_mason-0.1.6.dev0/src/databricks_mason/runtime/types.py +114 -0
- {databricks_mason-0.1.5.dev0 → databricks_mason-0.1.6.dev0}/src/databricks_mason/session_store.py +73 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-langgraph/.env.example +36 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-langgraph/.gitignore +195 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-langgraph/AGENTS.md +71 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-langgraph/CLAUDE.md +1 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-langgraph/README.md +126 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-langgraph/agent/__init__.py +0 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-langgraph/agent/agent.py +147 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-langgraph/agent/mcps.py +27 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-langgraph/agent/tools/__init__.py +24 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-langgraph/agent/tools/sample_tool.py +15 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-langgraph/agent/tools/send_message.py +17 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-langgraph/app.yaml +13 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-langgraph/pyproject.toml +42 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-langgraph/runtime/__init__.py +0 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-langgraph/runtime/adapter.py +109 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-langgraph/runtime/main.py +25 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-langgraph/tests/__init__.py +0 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-langgraph/tests/test_agent.py +207 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-langgraph/tests/test_runtime.py +19 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-langgraph/tests/test_workspace.py +28 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-openai/.env.example +37 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-openai/.gitignore +195 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-openai/AGENTS.md +72 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-openai/CLAUDE.md +1 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-openai/README.md +123 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-openai/agent/__init__.py +0 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-openai/agent/agent.py +157 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-openai/agent/mcps.py +28 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-openai/agent/tools/__init__.py +24 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-openai/agent/tools/sample_tool.py +15 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-openai/agent/tools/send_message.py +18 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-openai/app.yaml +13 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-openai/pyproject.toml +42 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-openai/runtime/__init__.py +0 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-openai/runtime/adapter.py +159 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-openai/runtime/main.py +25 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-openai/tests/__init__.py +0 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-openai/tests/test_agent.py +297 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-openai/tests/test_runtime.py +19 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/agent-openai/tests/test_workspace.py +28 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/custom-agent-langgraph/.env.example +1 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/custom-agent-langgraph/.gitignore +7 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/custom-agent-langgraph/README.md +22 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/custom-agent-langgraph/agent/__init__.py +0 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/custom-agent-langgraph/agent/agent.py +27 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/custom-agent-langgraph/app.yaml +1 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/custom-agent-langgraph/pyproject.toml +38 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/custom-agent-langgraph/runtime/__init__.py +0 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/custom-agent-langgraph/runtime/main.py +31 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/custom-agent-langgraph/tests/test_runtime.py +29 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/custom-agent-openai/.env.example +1 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/custom-agent-openai/.gitignore +7 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/custom-agent-openai/README.md +22 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/custom-agent-openai/agent/__init__.py +0 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/custom-agent-openai/agent/agent.py +29 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/custom-agent-openai/app.yaml +1 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/custom-agent-openai/pyproject.toml +38 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/custom-agent-openai/runtime/__init__.py +0 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/custom-agent-openai/runtime/main.py +31 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/custom-agent-openai/tests/test_runtime.py +29 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/ui/agent-langgraph/CHAT_APP.md +44 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/ui/agent-langgraph/runtime/main.py +26 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/ui/agent-langgraph/runtime/ui.py +526 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/ui/agent-langgraph/tests/test_demo_ui.py +525 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/ui/agent-langgraph/ui/app.js +939 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/ui/agent-langgraph/ui/index.html +184 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/ui/agent-langgraph/ui/styles.css +1139 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/ui/agent-openai/CHAT_APP.md +49 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/ui/agent-openai/runtime/main.py +26 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/ui/agent-openai/runtime/ui.py +519 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/ui/agent-openai/tests/test_demo_ui.py +495 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/ui/agent-openai/ui/app.js +903 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/ui/agent-openai/ui/index.html +184 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/templates/ui/agent-openai/ui/styles.css +1139 -0
- databricks_mason-0.1.6.dev0/src/databricks_mason/theme.py +72 -0
- databricks_mason-0.1.5.dev0/PKG-INFO +0 -351
- databricks_mason-0.1.5.dev0/README.md +0 -313
- databricks_mason-0.1.5.dev0/src/databricks_mason/cli.py +0 -85
- databricks_mason-0.1.5.dev0/src/databricks_mason/dev.py +0 -220
- databricks_mason-0.1.5.dev0/src/databricks_mason/init.py +0 -433
- databricks_mason-0.1.5.dev0/src/databricks_mason/memory_store_access.py +0 -30
- databricks_mason-0.1.5.dev0/src/databricks_mason/runtime/durability/__init__.py +0 -1
- databricks_mason-0.1.5.dev0/src/databricks_mason/runtime/durability/attempt.py +0 -140
- databricks_mason-0.1.5.dev0/src/databricks_mason/runtime/durability/recovery.py +0 -112
- databricks_mason-0.1.5.dev0/src/databricks_mason/runtime/durability/runtime.py +0 -167
- databricks_mason-0.1.5.dev0/src/databricks_mason/runtime/durability/types.py +0 -189
- databricks_mason-0.1.5.dev0/src/databricks_mason/session_store_access.py +0 -18
- databricks_mason-0.1.5.dev0/src/databricks_mason/store_access.py +0 -201
- databricks_mason-0.1.5.dev0/src/databricks_mason/templates/python_tool_langgraph.py +0 -9
- databricks_mason-0.1.5.dev0/src/databricks_mason/templates/python_tool_test.py +0 -12
- databricks_mason-0.1.5.dev0/src/databricks_mason/tracing.py +0 -367
- {databricks_mason-0.1.5.dev0 → databricks_mason-0.1.6.dev0}/.gitignore +0 -0
- {databricks_mason-0.1.5.dev0 → databricks_mason-0.1.6.dev0}/NOTICE +0 -0
- {databricks_mason-0.1.5.dev0 → databricks_mason-0.1.6.dev0}/src/databricks_mason/_pagination.py +0 -0
- {databricks_mason-0.1.5.dev0/src/databricks_mason → databricks_mason-0.1.6.dev0/src/databricks_mason/cli}/mcp.py +0 -0
- {databricks_mason-0.1.5.dev0 → databricks_mason-0.1.6.dev0}/src/databricks_mason/langgraph/mcp.py +0 -0
- {databricks_mason-0.1.5.dev0 → databricks_mason-0.1.6.dev0}/src/databricks_mason/langgraph/memory.py +0 -0
- {databricks_mason-0.1.5.dev0 → databricks_mason-0.1.6.dev0}/src/databricks_mason/langgraph/session_store.py +0 -0
- {databricks_mason-0.1.5.dev0 → databricks_mason-0.1.6.dev0}/src/databricks_mason/openai/memory.py +0 -0
- {databricks_mason-0.1.5.dev0 → databricks_mason-0.1.6.dev0}/src/databricks_mason/openai/sessions.py +0 -0
- {databricks_mason-0.1.5.dev0 → databricks_mason-0.1.6.dev0}/src/databricks_mason/py.typed +0 -0
- {databricks_mason-0.1.5.dev0 → databricks_mason-0.1.6.dev0}/src/databricks_mason/runtime/session_store_client.py +0 -0
- {databricks_mason-0.1.5.dev0 → databricks_mason-0.1.6.dev0}/src/databricks_mason/runtime/workspace.py +0 -0
- {databricks_mason-0.1.5.dev0 → databricks_mason-0.1.6.dev0}/src/databricks_mason/templates/sandbox_mcp.py +0 -0
- {databricks_mason-0.1.5.dev0 → databricks_mason-0.1.6.dev0}/src/databricks_mason/templates/sandbox_mcp_langgraph.py +0 -0
- {databricks_mason-0.1.5.dev0 → databricks_mason-0.1.6.dev0}/src/databricks_mason/timefmt.py +0 -0
|
@@ -0,0 +1,466 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: databricks-mason
|
|
3
|
+
Version: 0.1.6.dev0
|
|
4
|
+
Summary: Databricks integration for Mason
|
|
5
|
+
Author-email: Databricks <agent-feedback@databricks.com>
|
|
6
|
+
License-File: NOTICE
|
|
7
|
+
Requires-Python: >=3.10
|
|
8
|
+
Requires-Dist: click>=8.4
|
|
9
|
+
Requires-Dist: databricks-ai-bridge[memory]>=0.21.0
|
|
10
|
+
Requires-Dist: databricks-sdk>=0.94.0
|
|
11
|
+
Requires-Dist: fastapi>=0.129.0
|
|
12
|
+
Requires-Dist: mlflow-skinny>=3.10.1
|
|
13
|
+
Requires-Dist: psycopg[binary]>=3.1
|
|
14
|
+
Requires-Dist: pyyaml>=6.0
|
|
15
|
+
Requires-Dist: rich>=13.7
|
|
16
|
+
Requires-Dist: sqlalchemy[asyncio]>=2.0
|
|
17
|
+
Requires-Dist: tomli>=2.0
|
|
18
|
+
Requires-Dist: tomlkit>=0.13
|
|
19
|
+
Requires-Dist: uvicorn>=0.20.0
|
|
20
|
+
Provides-Extra: langgraph
|
|
21
|
+
Requires-Dist: databricks-agents>=1.9.3; extra == 'langgraph'
|
|
22
|
+
Requires-Dist: databricks-langchain>=0.17.0; extra == 'langgraph'
|
|
23
|
+
Requires-Dist: langchain-mcp-adapters>=0.2.1; extra == 'langgraph'
|
|
24
|
+
Requires-Dist: langchain>=1.0.0; extra == 'langgraph'
|
|
25
|
+
Requires-Dist: langgraph>=1.1.0; extra == 'langgraph'
|
|
26
|
+
Requires-Dist: mlflow>=3.10.1; extra == 'langgraph'
|
|
27
|
+
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc>=1.25.0; extra == 'langgraph'
|
|
28
|
+
Provides-Extra: openai
|
|
29
|
+
Requires-Dist: databricks-agents>=1.9.3; extra == 'openai'
|
|
30
|
+
Requires-Dist: databricks-openai>=0.13.0; extra == 'openai'
|
|
31
|
+
Requires-Dist: mlflow>=3.10.1; extra == 'openai'
|
|
32
|
+
Requires-Dist: openai-agents>=0.7.0; extra == 'openai'
|
|
33
|
+
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc>=1.25.0; extra == 'openai'
|
|
34
|
+
Description-Content-Type: text/markdown
|
|
35
|
+
|
|
36
|
+
# `databricks-mason`
|
|
37
|
+
|
|
38
|
+
Mason is an experimental CLI for Databricks custom agent preview APIs and
|
|
39
|
+
deployments. It manages memory, sessions, tracing, and deployments from one
|
|
40
|
+
authenticated command.
|
|
41
|
+
|
|
42
|
+
> The underlying APIs are in preview and may need workspace enablement.
|
|
43
|
+
|
|
44
|
+
## Prerequisites
|
|
45
|
+
|
|
46
|
+
- **Python ≥3.10** — the mason CLI installs and runs on any Python 3.10+. The
|
|
47
|
+
`memory`, `sessions`, `tracing`, and `mcp` commands need nothing else.
|
|
48
|
+
- **[`uv`](https://docs.astral.sh/uv/)** — needed to scaffold, run, and deploy an
|
|
49
|
+
agent (`mason init` → `mason dev` → `mason deploy`): the scaffolded project builds
|
|
50
|
+
its environment and launches with `uv run`, both locally and in the deployed Apps
|
|
51
|
+
runtime. Not needed for the store/session/tracing/mcp commands above.
|
|
52
|
+
- **[Databricks CLI](https://docs.databricks.com/dev-tools/cli/)** — needed for
|
|
53
|
+
browser-based `mason login`. If a profile is already authenticated, Mason uses it
|
|
54
|
+
directly and the Databricks CLI is optional.
|
|
55
|
+
|
|
56
|
+
## Installation
|
|
57
|
+
|
|
58
|
+
From PyPI:
|
|
59
|
+
|
|
60
|
+
```sh
|
|
61
|
+
pip install databricks-mason
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
From source:
|
|
65
|
+
|
|
66
|
+
```sh
|
|
67
|
+
pip install 'git+https://github.com/databricks/databricks-ai-bridge.git#subdirectory=integrations/mason'
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
The base package includes the CLI, store SDK, and `AgentApp` HTTP runtime. Generated projects
|
|
71
|
+
declare their framework dependencies automatically.
|
|
72
|
+
|
|
73
|
+
## Shell completion
|
|
74
|
+
Add this to `~/.zshrc`:
|
|
75
|
+
```sh
|
|
76
|
+
eval "$(_MASON_COMPLETE=zsh_source mason)"
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Authentication
|
|
80
|
+
|
|
81
|
+
Mason uses [Databricks authentication](https://docs.databricks.com/aws/en/dev-tools/cli/authentication).
|
|
82
|
+
Ask Mason to authenticate and remember a named profile:
|
|
83
|
+
|
|
84
|
+
```sh
|
|
85
|
+
mason login --profile <profile>
|
|
86
|
+
mason sessions stores list
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
`mason login` validates existing credentials first. If credentials are missing or rejected in
|
|
90
|
+
an interactive terminal, Mason runs `databricks auth login --profile <profile>`, revalidates the
|
|
91
|
+
profile, and stores the selection in `~/.mason/config.json`. This browser-based setup requires
|
|
92
|
+
the Databricks CLI. In non-interactive environments, authenticate the profile before running
|
|
93
|
+
Mason. `mason logout` forgets the saved selection without revoking the underlying credentials.
|
|
94
|
+
|
|
95
|
+
If Databricks SDK default authentication is already configured, you can skip `mason login`.
|
|
96
|
+
You can also pass the global `--profile/-p` option before an individual command, for example
|
|
97
|
+
`mason --profile <profile> mcp list`. Use `--output json` for scripting.
|
|
98
|
+
|
|
99
|
+
## Quickstart
|
|
100
|
+
|
|
101
|
+
The shortest path from a blank directory to a running and deployed agent:
|
|
102
|
+
|
|
103
|
+
```sh
|
|
104
|
+
mason login --profile <profile>
|
|
105
|
+
mason init my-agent
|
|
106
|
+
cd my-agent
|
|
107
|
+
mason dev # run locally
|
|
108
|
+
mason deploy my-agent # deploy to Databricks
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
`mason dev` runs the agent locally on `http://localhost:8000`, wrapping the Databricks Apps
|
|
112
|
+
local runtime so local behavior matches a deployment.
|
|
113
|
+
|
|
114
|
+
`mason deploy my-agent` deploys a Databricks App named `agent-mason-my-agent`, provisions the
|
|
115
|
+
stores declared in `agent.toml`, and grants the app's service principal access to them. `mason
|
|
116
|
+
deployments list` shows what you have deployed, and `mason deployments get my-agent` prints its
|
|
117
|
+
URL and status.
|
|
118
|
+
|
|
119
|
+
`mason init` declares default memory and session stores in `agent.toml` (named `<name>-memory` and
|
|
120
|
+
`<name>-session`), so the deployed agent has long-term memory and durable conversation history —
|
|
121
|
+
`mason deploy` creates them if they don't exist yet. Point the agent at stores you already have with
|
|
122
|
+
`mason memory bind <name>` / `mason sessions bind <name>`, or scaffold without stores using
|
|
123
|
+
`mason init --server custom` (see [Initialize the chat app demo](#initialize-the-chat-app-demo)).
|
|
124
|
+
|
|
125
|
+
To exercise the agent — locally under `mason dev` or once deployed — `mason endpoint invoke` sends
|
|
126
|
+
it an HTTP request. MLflow tracing is on by default; `mason tracing list` shows the traces it
|
|
127
|
+
produces.
|
|
128
|
+
|
|
129
|
+
## Python SDK
|
|
130
|
+
|
|
131
|
+
`MasonClient` adds a small resource-oriented layer over the Mason API. Pass it an
|
|
132
|
+
authenticated Databricks `WorkspaceClient`, or omit the argument to use the
|
|
133
|
+
Databricks SDK's default authentication resolution:
|
|
134
|
+
|
|
135
|
+
```python
|
|
136
|
+
from databricks.sdk import WorkspaceClient
|
|
137
|
+
from databricks_mason import MasonClient
|
|
138
|
+
|
|
139
|
+
mason = MasonClient(WorkspaceClient(profile="my-workspace"))
|
|
140
|
+
|
|
141
|
+
session_store = mason.session_stores.create("support-agent-sessions")
|
|
142
|
+
session = session_store.add(actor_id="customer-123", session_id="case-456")
|
|
143
|
+
session.append_items(
|
|
144
|
+
[
|
|
145
|
+
{"type": "message", "role": "user", "content": "I need help with my cluster."},
|
|
146
|
+
{"type": "message", "role": "assistant", "content": "Let's take a look."},
|
|
147
|
+
]
|
|
148
|
+
)
|
|
149
|
+
|
|
150
|
+
memory_store = mason.memory_stores.create("coding-agent-memory")
|
|
151
|
+
memory = memory_store.add(
|
|
152
|
+
actor_id="alice",
|
|
153
|
+
path="/preferences/style.md",
|
|
154
|
+
content="The user prefers concise answers.",
|
|
155
|
+
)
|
|
156
|
+
results = memory_store.search(
|
|
157
|
+
actor_id="alice",
|
|
158
|
+
query="response preferences",
|
|
159
|
+
limit=10,
|
|
160
|
+
)
|
|
161
|
+
memory = memory.update(content="The user prefers very concise answers.")
|
|
162
|
+
memory.delete()
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
The root collections manage stores: `mason.memory_stores.create/get/list` and
|
|
166
|
+
`mason.session_stores.create/get/list`. A returned store owns operations on its
|
|
167
|
+
contents, such as `memory_store.add()`, `memory_store.get("memory-id")`,
|
|
168
|
+
`memory_store.list()`, and `memory_store.search()`, or `session_store.add()`,
|
|
169
|
+
`session_store.get("session-id")`, and `session_store.list()`. Returned memories,
|
|
170
|
+
sessions, and stores own their `update()` and `delete()` operations.
|
|
171
|
+
|
|
172
|
+
All `list()` methods return iterators that automatically consume server pages. List
|
|
173
|
+
`page_size` and search `limit` values must be between 1 and 100. `session.list_items()`
|
|
174
|
+
also auto-pages. `session.fork(...)` creates an independent copy, optionally through
|
|
175
|
+
a specific item. Deleting a session with descendants requires
|
|
176
|
+
`session.delete(force=True)` to cascade the deletion.
|
|
177
|
+
|
|
178
|
+
The resource layer intentionally does not mirror every API method. Its private
|
|
179
|
+
transport will be replaced by the generated `WorkspaceClient.mason` service when that
|
|
180
|
+
is released, without changing this public surface. Deployment, sandbox, tracing, and
|
|
181
|
+
the existing CLI commands remain separate.
|
|
182
|
+
|
|
183
|
+
## Runtime
|
|
184
|
+
|
|
185
|
+
`AgentApp` runs your agent through one HTTP API for synchronous, streaming, and background
|
|
186
|
+
invocations. Register an `@app.invoke` handler, publish progress with `await context.emit(event)`,
|
|
187
|
+
and return a JSON result. You can also add your own FastAPI endpoints.
|
|
188
|
+
|
|
189
|
+
Start from a template, edit the agent code in `agent/`, and run it locally before deploying:
|
|
190
|
+
|
|
191
|
+
```sh
|
|
192
|
+
mason init my-agent --framework langgraph --server mason --profile <profile>
|
|
193
|
+
cd my-agent
|
|
194
|
+
mason dev
|
|
195
|
+
# Stop the local server when ready to deploy.
|
|
196
|
+
mason --profile <profile> deploy my-agent
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
Use `--framework openai` for OpenAI Agents. Templates keep agent code separate from the runtime
|
|
200
|
+
adapter and declare default Session and Memory Store bindings in `agent.toml`.
|
|
201
|
+
|
|
202
|
+
Each managed run is an **invocation**. Send a client-generated UUID `id` and your agent's `input`:
|
|
203
|
+
|
|
204
|
+
```json
|
|
205
|
+
{
|
|
206
|
+
"id": "550e8400-e29b-41d4-a716-446655440000",
|
|
207
|
+
"input": {"messages": [{"role": "user", "content": "Hello"}]},
|
|
208
|
+
"background": true,
|
|
209
|
+
"stream": true
|
|
210
|
+
}
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
| Endpoint | Behavior |
|
|
214
|
+
| --- | --- |
|
|
215
|
+
| `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. |
|
|
216
|
+
| `GET /api/invocations/{id}` | Returns the invocation status and, when completed, its output. |
|
|
217
|
+
| `GET /api/invocations/{id}/events?after={cursor}` | Streams events after the last received event ID, allowing clients to reconnect. |
|
|
218
|
+
|
|
219
|
+
The UUID also acts as an idempotency key: repeating the same request reuses the existing invocation
|
|
220
|
+
while its record is retained; using the ID for a different request returns `409`.
|
|
221
|
+
|
|
222
|
+
`mason dev` keeps execution state in process and loses it on restart. For projects with
|
|
223
|
+
`[agent].server = "mason"`, `mason deploy` provisions a persistent Runtime Store for requests,
|
|
224
|
+
status, events, and results. Register `@app.recover` to restart interrupted work after worker
|
|
225
|
+
failures. Recovery is at-least-once, so external side effects must be idempotent. Session and
|
|
226
|
+
Memory Stores separately preserve the state used by your agent.
|
|
227
|
+
|
|
228
|
+
Use `server = "custom"` to deploy your own HTTP server without provisioning a Runtime Store.
|
|
229
|
+
Changing the server type of an existing deployment is not supported. To use a different server,
|
|
230
|
+
scaffold a new project with the desired `mason init --server` option and deploy it under a new name.
|
|
231
|
+
See the [runtime guide](src/databricks_mason/runtime/README.md) for agent hooks, full API examples,
|
|
232
|
+
and recovery behavior.
|
|
233
|
+
|
|
234
|
+
## Commands
|
|
235
|
+
|
|
236
|
+
```text
|
|
237
|
+
mason [-p <profile>] [-o text|json]
|
|
238
|
+
login [--profile P]
|
|
239
|
+
logout
|
|
240
|
+
init [--framework openai|langgraph] [--server mason|custom]
|
|
241
|
+
[--disable-chat-app]
|
|
242
|
+
[--memory-store NAME] [--session-store NAME]
|
|
243
|
+
[--profile P] [directory]
|
|
244
|
+
dev [--source PATH] [--prepare-environment] [--app-port PORT]
|
|
245
|
+
[--with-traces C.S]
|
|
246
|
+
memory
|
|
247
|
+
bind STORE [--source PATH]
|
|
248
|
+
unbind [--source PATH]
|
|
249
|
+
stores create | list | get | update | delete
|
|
250
|
+
entries create | get | list | search | update | delete
|
|
251
|
+
sessions create | list | get | update | delete | fork
|
|
252
|
+
bind STORE [--source PATH]
|
|
253
|
+
unbind [--source PATH]
|
|
254
|
+
stores create | list | get | update | delete
|
|
255
|
+
items list | append | pop | clear
|
|
256
|
+
tracing
|
|
257
|
+
configure [--experiment E] [--source PATH]
|
|
258
|
+
disable [--source PATH]
|
|
259
|
+
list | get
|
|
260
|
+
mcp
|
|
261
|
+
list [--schema CATALOG.SCHEMA]
|
|
262
|
+
tools
|
|
263
|
+
add sandbox --scope SCOPE [--scope SCOPE ...] [--source PATH]
|
|
264
|
+
add mcp SERVICE [--name NAME] [--source PATH]
|
|
265
|
+
add uc-function FUNCTION [--name NAME] [--source PATH]
|
|
266
|
+
list [--source PATH]
|
|
267
|
+
deploy <name> --source PATH [--with-traces C.S] [--instances N]
|
|
268
|
+
deployments list | get | logs | start | stop | delete
|
|
269
|
+
endpoint
|
|
270
|
+
invoke [APP] --path PATH [--url URL] [--json JSON] [--sse]
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
## Invoke HTTP endpoints
|
|
274
|
+
|
|
275
|
+
`mason endpoint invoke` is a low-level HTTP command. It resolves and authenticates a deployed
|
|
276
|
+
Databricks App, or targets localhost and arbitrary servers through `--url`. It does not assume an
|
|
277
|
+
agent protocol: provide the method, path, query parameters, and complete JSON body required by the
|
|
278
|
+
server.
|
|
279
|
+
|
|
280
|
+
```sh
|
|
281
|
+
mason --profile <profile> endpoint invoke mason-my-agent \
|
|
282
|
+
--path /api/invocations \
|
|
283
|
+
--json '{"id":"00000000-0000-4000-8000-000000000001","input":[{"role":"user","content":"Hello"}]}'
|
|
284
|
+
|
|
285
|
+
mason endpoint invoke --url http://localhost:8000 \
|
|
286
|
+
--path /api/invocations \
|
|
287
|
+
--json '{"id":"00000000-0000-4000-8000-000000000001","input":[{"role":"user","content":"Hello"}]}'
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
The JSON body remains explicit even for Mason-generated agents. For example, Mason Runtime agents require
|
|
291
|
+
a client-generated invocation ID, and streaming servers require their own streaming field plus
|
|
292
|
+
`--sse` so the CLI consumes the response as Server-Sent Events.
|
|
293
|
+
|
|
294
|
+
```sh
|
|
295
|
+
INVOCATION_ID=$(uuidgen)
|
|
296
|
+
mason --profile <profile> endpoint invoke mason-my-agent \
|
|
297
|
+
--path /api/invocations \
|
|
298
|
+
--json "{\"id\":\"$INVOCATION_ID\",\"input\":[{\"role\":\"user\",\"content\":\"Run the report\"}]}"
|
|
299
|
+
|
|
300
|
+
mason --profile <profile> endpoint invoke mason-my-agent \
|
|
301
|
+
--path /api/invocations \
|
|
302
|
+
--sse \
|
|
303
|
+
--json "{\"id\":\"$INVOCATION_ID\",\"input\":[{\"role\":\"user\",\"content\":\"Hello\"}],\"stream\":true}"
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
`--session-id` preserves one application session across calls by setting the Databricks Apps routing
|
|
307
|
+
cookie. This also works with a direct App URL and with the generated runtime on localhost. OAuth and
|
|
308
|
+
session headers are managed by Mason; arbitrary custom request headers are intentionally not exposed
|
|
309
|
+
by this command.
|
|
310
|
+
|
|
311
|
+
## Command help
|
|
312
|
+
|
|
313
|
+
Use the conventional help flag at any command level. Every command's help includes runnable
|
|
314
|
+
examples:
|
|
315
|
+
|
|
316
|
+
```sh
|
|
317
|
+
mason --help
|
|
318
|
+
mason deploy --help
|
|
319
|
+
mason sessions items append --help
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
## Agent tools
|
|
323
|
+
|
|
324
|
+
For projects with `[agent].server = "mason"` (the default from `mason init`), `agent.toml` is the
|
|
325
|
+
declarative source of truth for Databricks-managed infrastructure: the Runtime Store, sandbox,
|
|
326
|
+
managed MCP and Unity Catalog function bindings, plus memory and session resources. `mason tools
|
|
327
|
+
add` updates only this file; direct TOML edits have the same behavior. Both Mason-server framework
|
|
328
|
+
adapters read the managed bindings at runtime without generating or patching agent source:
|
|
329
|
+
|
|
330
|
+
```sh
|
|
331
|
+
mason tools add sandbox --scope table:samples.nyctaxi.trips
|
|
332
|
+
mason tools add mcp system.ai.web_search
|
|
333
|
+
mason tools add uc-function catalog.schema.lookup_ticket
|
|
334
|
+
mason tools remove mcp system.ai.web_search
|
|
335
|
+
mason tools list
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
For MCP services, the remove command accepts the same service name as the add command. You can also
|
|
339
|
+
remove any binding by the ID shown in `mason tools list`, for example `mason tools remove
|
|
340
|
+
web_search`. `mason tools list` reports these managed bindings; it does not inventory custom code.
|
|
341
|
+
|
|
342
|
+
Discover the MCP Services available to your user before adding one. By default Mason lists the
|
|
343
|
+
Databricks-managed services in `system.ai`; pass `--schema catalog.schema` for another Unity Catalog
|
|
344
|
+
schema. Text output includes a copyable add command, while `--output json` returns normalized service
|
|
345
|
+
records for scripts:
|
|
346
|
+
|
|
347
|
+
```sh
|
|
348
|
+
mason mcp list
|
|
349
|
+
mason mcp list --schema main.tools
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
In Mason-server templates, custom Python tools are code-first. Write them with the framework's native
|
|
353
|
+
decorator in `agent/tools/`: LangGraph uses `@tool`, while OpenAI Agents uses `@function_tool`. The
|
|
354
|
+
templates auto-discover decorated tools from that package and add them to the agent; there is no CLI
|
|
355
|
+
command or `agent.toml` entry to keep in sync. Customer-managed MCP servers are likewise ordinary
|
|
356
|
+
code in `agent/mcps.py` and are joined with the managed bindings by `mcp_tools(...)` or
|
|
357
|
+
`mcp_servers(...)`.
|
|
358
|
+
|
|
359
|
+
Projects created with `--server custom` do not auto-discover `agent/tools/` or load managed tool
|
|
360
|
+
bindings from `agent.toml`, so `mason tools add` rejects those projects. Wire framework-native Python
|
|
361
|
+
tools and MCP servers directly in `agent/agent.py` instead.
|
|
362
|
+
|
|
363
|
+
If an older Mason-server manifest contains `source = { kind = "python", ... }`, remove that
|
|
364
|
+
`[[tools]]` entry; the decorated tool in `agent/tools/` remains active. `mason dev` and `mason deploy`
|
|
365
|
+
do not generate or patch Python tool code, and do not alter the manifest's `[[tools]]` bindings.
|
|
366
|
+
|
|
367
|
+
Sandbox scopes default to read-only access. Repeat `--scope` to allow more than one resource, use
|
|
368
|
+
`volume:` or `workspace:` for those resource types, and use `--permission read_write` only when the
|
|
369
|
+
agent needs writes. Every sandbox call carries this fixed downscope in MCP `_meta`, outside the tool
|
|
370
|
+
arguments controlled by the model.
|
|
371
|
+
|
|
372
|
+
## Initialize the chat app demo
|
|
373
|
+
|
|
374
|
+
The chat app is a LangGraph-specific init overlay, not a command that mutates an existing project.
|
|
375
|
+
It is included by default for `--framework langgraph`; pass `--disable-chat-app` to scaffold the
|
|
376
|
+
API-only backend instead.
|
|
377
|
+
|
|
378
|
+
```sh
|
|
379
|
+
mason init --framework langgraph \
|
|
380
|
+
--profile <profile> \
|
|
381
|
+
./my-agent
|
|
382
|
+
cd ./my-agent
|
|
383
|
+
mason dev
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
The chat app includes synchronous, SSE streaming, background polling, Session Store, Memory Store,
|
|
387
|
+
and HITL resume UI. The framework-specific overlay adds `ui/`, `runtime/ui.py`, the UI-enabled
|
|
388
|
+
`runtime/main.py`, and UI tests.
|
|
389
|
+
|
|
390
|
+
For the full deployed demo, bind both managed stores, then deploy:
|
|
391
|
+
|
|
392
|
+
```sh
|
|
393
|
+
mason sessions bind mason-demo-sessions
|
|
394
|
+
mason memory bind mason-demo-memory
|
|
395
|
+
mason --profile <profile> deploy mason-agent-demo --source .
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
(`bind` declares the store name in `agent.toml`; `mason deploy` creates any declared-but-missing
|
|
399
|
+
store and grants the app's service principal access to it. The memory store id flows to the runtime
|
|
400
|
+
via the `AGENT_MEMORY_STORE` env var, injected by `deploy` and `mason dev` — it is not persisted
|
|
401
|
+
in `agent.toml`.)
|
|
402
|
+
|
|
403
|
+
The chat UI generates a stable application session UUID in browser local storage, places it inside
|
|
404
|
+
the invocation's opaque `input`, and creates a fresh invocation UUID per turn. The
|
|
405
|
+
`__Host-databricks-app-router` cookie remains independent: API clients may reuse it for sticky
|
|
406
|
+
replica routing, but it is neither authentication nor the template's application session state.
|
|
407
|
+
|
|
408
|
+
The generated `README.md` documents every request the client makes: config discovery, sync and SSE
|
|
409
|
+
invocations, background submission and polling, session transcript loading, HITL resume, and memory
|
|
410
|
+
entry operations. Capability colors are automatic from `/api/demo/config`; only the
|
|
411
|
+
sync/streaming/background transport selector is manual.
|
|
412
|
+
|
|
413
|
+
## Developing Mason
|
|
414
|
+
|
|
415
|
+
Templates ship **inside** the `databricks_mason` package (`src/databricks_mason/templates/`), so
|
|
416
|
+
`mason init` copies the template that matches the installed CLI — the scaffold can't drift from the
|
|
417
|
+
`databricks-mason` it runs against.
|
|
418
|
+
|
|
419
|
+
For an **editable install** (`pip install -e integrations/mason`), two things run straight from your
|
|
420
|
+
working tree with no rebuild or commit:
|
|
421
|
+
|
|
422
|
+
- **CLI** — the `mason` command (`databricks_mason.cli` and the command modules) runs from the
|
|
423
|
+
checkout, since the editable install is the entrypoint.
|
|
424
|
+
- **Templates** — `mason init` reads them via `importlib.resources`, which for an editable install
|
|
425
|
+
resolves to the source tree, so editing a template file changes the next scaffold immediately.
|
|
426
|
+
|
|
427
|
+
```sh
|
|
428
|
+
pip install -e integrations/mason # editable install of the CLI
|
|
429
|
+
mason init /tmp/scratch-agent # scaffolds from your working-tree template
|
|
430
|
+
cd /tmp/scratch-agent && mason dev
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
The editable install is one-and-done per venv and follows the working tree, so switching branches
|
|
434
|
+
needs no reinstall — **except** a dependency change (a branch that adds or bumps a package in
|
|
435
|
+
`integrations/mason/pyproject.toml`), which needs a reinstall to pick it up:
|
|
436
|
+
|
|
437
|
+
```sh
|
|
438
|
+
pip install -e integrations/mason # only when dependencies changed
|
|
439
|
+
```
|
|
440
|
+
|
|
441
|
+
### Running a scaffold against unreleased Mason (SDK changes)
|
|
442
|
+
|
|
443
|
+
A scaffold uses a normal `databricks-mason` PyPI dependency, so `mason dev` and `mason deploy`
|
|
444
|
+
install the **released** SDK — editing `databricks_mason.runtime`/`.langgraph`/`.openai` in your
|
|
445
|
+
checkout does **not** change what a scaffold runs. To exercise local or unreleased SDK changes in a
|
|
446
|
+
scaffolded project, add a `[tool.uv.sources]` override to the scaffold's `pyproject.toml`. It's a
|
|
447
|
+
dev-loop-only edit — don't ship it in a real deployment.
|
|
448
|
+
|
|
449
|
+
**`mason dev` — your local checkout (editable, picks up uncommitted edits):**
|
|
450
|
+
|
|
451
|
+
```toml
|
|
452
|
+
[tool.uv.sources]
|
|
453
|
+
databricks-mason = { path = "/abs/path/to/databricks-ai-bridge/integrations/mason", editable = true }
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
`mason dev` builds the scaffold's venv from this, so your working-tree SDK edits run live.
|
|
457
|
+
|
|
458
|
+
**`mason deploy` — a pushed git ref (the Apps build can't reach a local path):**
|
|
459
|
+
|
|
460
|
+
```toml
|
|
461
|
+
[tool.uv.sources]
|
|
462
|
+
databricks-mason = { git = "https://github.com/<you>/databricks-ai-bridge", rev = "<pushed-sha>", subdirectory = "integrations/mason" }
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
Commit and push first — the Apps build clones that commit. A `path` or `file://` pin won't resolve
|
|
466
|
+
in the build sandbox, so use a git ref (or a released version) for deploys.
|