Skip to content

Install Databricks AI Tools as part of the configuration step#230

Open
lennartkats-db wants to merge 3 commits into
databricks:mainfrom
lennartkats-db:add-skills-install
Open

Install Databricks AI Tools as part of the configuration step#230
lennartkats-db wants to merge 3 commits into
databricks:mainfrom
lennartkats-db:add-skills-install

Conversation

@lennartkats-db

@lennartkats-db lennartkats-db commented Jul 22, 2026

Copy link
Copy Markdown

ucode configure now installs Databricks AI Tools for each coding agent it sets up, so agents can work with Databricks (bundles, jobs, SQL, Genie) out of the box instead of making low-level API calls.

Followup PR to be merged after this: #231

Testing

  • Unit tests cover the token mapping, both configure chokepoints, profile passthrough, and non-fatal failure with CLI-stderr surfacing (incl. the bytes-decoded timeout path).
  • Manual end-to-end validation:
  1. Baseline: claude-code + codex plugins installed.
  2. databricks aitools uninstall --agents claude-code,codex.
  3. Confirmed neither installed.
  4. ucode configure --agent claude → "✔ Databricks AI Tools installed".
  5. Verified claude-code installed, codex still absent (per-agent, not stale state).
  6. ucode configure --agent codex → "✔ Databricks AI Tools installed".
  7. Verified both installed.
  8. Also verified the first-run launch path (ucode claude auto-configure) installs AI Tools, and that an already-configured launch skips it.

`ucode configure` now runs `databricks aitools install` for each coding
agent it sets up (claude-code, codex, opencode, copilot), so agents work
with Databricks out of the box. Best-effort: a failure only warns with the
CLI's own error, since AI Tools aren't required to launch an agent.

Co-authored-by: Isaac
v1.0.0 is the release that ships `databricks aitools install --agents
... --scope`, so bump MIN_DATABRICKS_CLI_VERSION to (1, 0, 0) and drop the
decorative AITOOLS_MIN_CLI_VERSION. `ensure_databricks_cli_version` already
runs (and auto-upgrades) before every path that reaches install_ai_tools,
so the install no longer guesses a version cause on failure: it just
surfaces the CLI's own error.

Co-authored-by: Isaac
subprocess.TimeoutExpired.stderr is bytes even when the call used text=True
(a CPython quirk), so a timed-out `databricks aitools install` rendered its
warning as `b'...'`. Decode bytes before building the reason string, and
cover the timeout-with-stderr path with a test.

Co-authored-by: Isaac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant