Skip to content

feat(shared): migrate the appkit CLI off the legacy workspace client - #643

Merged
MarioCadenas merged 3 commits into
feat/modular-client-appsfrom
feat/modular-cli
Oct 19, 2026
Merged

MarioCadenas merged 3 commits into
feat/modular-client-appsfrom
feat/modular-cli

Conversation

@MarioCadenas

Copy link
Copy Markdown
Collaborator

Part of the migration off @databricks/sdk-experimental onto the modular @databricks/sdk-* SDK (see #562). Base: feat/modular-sdk-integration.

Changes

feat(shared): migrate the appkit CLI off the legacy workspace client

doctor and the registry picker now use the facade's modular clients
(warehouses, jobs, genie, currentUser) and its raw request() seam for
services with no modular client yet (serving, volumes, vector search,
UC functions, connections, database, experiments, apps).

  • Profile host is read via sdk-core profiles resolve (disableEnv), exposed
    from the facade as resolveProfile.
  • Resolved host comes from getHost(), which needs no network, so it is
    also shown when credentials are rejected. The ConfigError host= parsing
    is gone.
  • Existence probes classify both ApiError shapes (statusCode/errorCode and
    httpStatusCode/code), so NOT_FOUND/INVALID_VALUE/ACCESS_DENIED are kept.
  • Auth hints also match the sdk-core "profile not found" and "Host is
    required" messages.
  • The Lakebase probe hands createLakebasePool a legacy-shaped adapter,
    since that package calls currentUser.me() with no argument.

Draft: implemented by an agent; needs review and a deployed SP + OBO check before it's marked ready.

This pull request and its description were written by Isaac.

@MarioCadenas
MarioCadenas changed the base branch from feat/modular-sdk-integration to feat/modular-lakebase October 8, 2026 14:38
@MarioCadenas
MarioCadenas added this pull request to stack #636 October 8, 2026 14:38
@github-actions

github-actions Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

📦 Bundle size report

Compared against bundle-size-baseline.json (main).

@databricks/appkit

npm tarball (packed): 1.2 MB (+32 KB) — gzipped download (dist + bin; excludes release-only docs/NOTICE).

dist raw gzip
JS (runtime) 1.3 MB (+32 KB) 458 KB (+11 KB)
Type declarations 465 KB (+9.3 KB) 169 KB (+3.2 KB)
Source maps 2.5 MB (+67 KB) 858 KB (+21 KB)
Other 11 KB 3.7 KB
Total 4.2 MB (+107 KB) 1.5 MB (+35 KB)
Per-entry composition (own code — deps external (as shipped))
Entry Initial (gz) Lazy (gz) Total (gz) node_modules (min) Own code (min)
. 106 KB (+4.0 KB) 2.5 KB (+1 B) 109 KB (+4.0 KB) external 344 KB (+12 KB)
./beta 102 KB (+3.9 KB) 483 B (-2 B) 103 KB (+3.9 KB) external 308 KB (+11 KB)
./testing 45 KB (+3.5 KB) 32 KB (-2 B) 78 KB (+3.5 KB) external 225 KB (+10 KB)
./tsdown 520 B 0 B 520 B external 813 B
./type-generator 26 KB (+2.9 KB) 0 B 26 KB (+2.9 KB) external 75 KB (+8.2 KB)

Chunks:

Entry Chunk Load Size (gz)
. index.js initial 101 KB
. utils.js initial 4.6 KB
. remote-tunnel-manager.js lazy 2.5 KB
./beta beta.js initial 82 KB
./beta modular.js initial 6.1 KB
./beta stream-manager.js initial 5.9 KB
./beta service-context.js initial 4.2 KB
./beta databricks.js initial 3.3 KB
./beta client.js initial 652 B
./beta index.js initial 20 B
./beta supervisor-api.js lazy 192 B
./beta databricks.js lazy 176 B
./beta index.js lazy 115 B
./testing manifest.js initial 32 KB
./testing index.js initial 10 KB
./testing wide-event-emitter.js initial 2.9 KB
./testing index.js lazy 28 KB
./testing remote-tunnel-manager.js lazy 2.5 KB
./testing utils.js lazy 1.8 KB
./tsdown index.js initial 520 B
./type-generator index.js initial 26 KB

@databricks/appkit-ui

npm tarball (packed): 397 KB (+630 B) — gzipped download (dist + bin; excludes release-only docs/NOTICE).

dist raw gzip
JS (runtime) 429 KB (+235 B) 147 KB (+108 B)
Type declarations 267 KB (+1.2 KB) 99 KB (+421 B)
Source maps 853 KB (+314 B) 286 KB (+143 B)
CSS 16 KB 3.2 KB
Total 1.5 MB (+1.7 KB) 534 KB (+672 B)
Per-entry composition (consumer bundle — deps bundled, peerDeps external)
Entry Initial (gz) Lazy (gz) Total (gz) node_modules (min) Own code (min)
./js 5.3 KB 49 KB 55 KB 208 KB 14 KB
./js/beta 2.1 KB 0 B 2.1 KB 0 B 5.0 KB
./react 433 KB (+12 B) 49 KB 481 KB (+12 B) 1.3 MB 177 KB (+41 B)
./react/beta 4.9 KB 0 B 4.9 KB 0 B 12 KB

Chunks:

Entry Chunk Load Size (gz)
./js index.js initial 5.2 KB
./js chunk initial 120 B
./js apache-arrow lazy 49 KB
./js/beta beta.js initial 2.1 KB
./react index.js initial 431 KB
./react tslib initial 2.1 KB
./react apache-arrow lazy 49 KB
./react/beta beta.js initial 4.9 KB

@github-actions

github-actions Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

🤖 AppKit PR bot

🔬 Run evals

Start an eval for this PR from the evals-monitor app: Go to Evals Monitor →

📦 Try this PR's app template

Scaffolds a new app from this PR's SDK build. Run it in any folder (requires the GitHub CLI — gh auth login — and the Databricks CLI):

gh run download 38918731191 -R databricks/appkit -n appkit-template-0.88.1-pr.7350ba3-feat-modular-cli-643 -D appkit-pr-643 \
  && unzip -o "appkit-pr-643/appkit-template-0.88.1-pr.7350ba3-feat-modular-cli-643.zip" -d "appkit-pr-643" \
  && databricks apps init --template "appkit-pr-643"

The template pins @databricks/appkit and @databricks/appkit-ui to tarballs built from this branch, so the scaffolded app runs against this PR's code.

@MarioCadenas
MarioCadenas removed this pull request from stack #636 October 13, 2026 08:32
@MarioCadenas
MarioCadenas changed the base branch from feat/modular-lakebase to feat/modular-client-apps October 13, 2026 08:32
@MarioCadenas
MarioCadenas added this pull request to stack #664 October 13, 2026 08:33
@MarioCadenas
MarioCadenas marked this pull request as ready for review October 13, 2026 10:44
@MarioCadenas
MarioCadenas requested a review from a team as a code owner October 13, 2026 10:44
@MarioCadenas
MarioCadenas force-pushed the feat/modular-cli branch 2 times, most recently from 0b34fbf to e3f0736 Compare October 13, 2026 14:14
@MarioCadenas
MarioCadenas removed this pull request from stack #664 October 13, 2026 15:47
@MarioCadenas
MarioCadenas added this pull request to stack #669 October 13, 2026 15:48
@MarioCadenas
MarioCadenas force-pushed the feat/modular-cli branch 2 times, most recently from 91622be to f4f2c1f Compare October 16, 2026 09:15
MarioCadenas and others added 3 commits October 16, 2026 16:43
doctor and the registry picker now use the facade's modular clients
(warehouses, jobs, genie, currentUser) and its raw request() seam for
services with no modular client yet (serving, volumes, vector search,
UC functions, connections, database, experiments, apps).

- Profile host is read via sdk-core profiles resolve (disableEnv), exposed
  from the facade as resolveProfile.
- Resolved host comes from getHost(), which needs no network, so it is
  also shown when credentials are rejected. The ConfigError host= parsing
  is gone.
- Existence probes classify both ApiError shapes (statusCode/errorCode and
  httpStatusCode/code), so NOT_FOUND/INVALID_VALUE/ACCESS_DENIED are kept.
- Auth hints also match the sdk-core "profile not found" and "Host is
  required" messages.
- The Lakebase probe hands createLakebasePool a legacy-shaped adapter,
  since that package calls currentUser.me() with no argument.

Co-authored-by: Isaac <no-reply@databricks.com>
Signed-off-by: MarioCadenas <MarioCadenas@users.noreply.github.com>
…lient

doctor's vector_search_index probe now calls vectorSearch.getVectorIndex({ name })
instead of a raw GET through request(). Its modular ApiError is already classified.

Co-authored-by: Isaac <no-reply@databricks.com>
Signed-off-by: MarioCadenas <MarioCadenas@users.noreply.github.com>
doctor probes and registry picker lists no longer call REST through
request(); each uses its facade accessor:

- serving get/list: modelServing.getInferenceEndpoint / listInferenceEndpoints
- volume read: volumes.getVolume({ fullNameArg })
- function get: functions.getFunction({ fullNameArg })
- connections, database instances, experiments, apps: list*Iter({})

Picker label/id fields follow the camelCase models (fullName,
experimentId). Error classification is unchanged.

Co-authored-by: Isaac <no-reply@databricks.com>
Signed-off-by: MarioCadenas <MarioCadenas@users.noreply.github.com>
@MarioCadenas
MarioCadenas merged commit aa8e894 into main Oct 19, 2026
29 of 33 checks passed
@MarioCadenas
MarioCadenas deleted the feat/modular-cli branch October 19, 2026 11:16
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.

2 participants