Skip to content

feat(shared): add a modular auth + raw-request seam to the workspace client - #644

Open
MarioCadenas wants to merge 2 commits into
analytics-migration-sdkfrom
feat/modular-auth-seam
Open

MarioCadenas wants to merge 2 commits into
analytics-migration-sdkfrom
feat/modular-auth-seam

Conversation

@MarioCadenas

Copy link
Copy Markdown
Collaborator

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

Changes

feat(shared): add a modular auth + raw-request seam to the workspace client

Add getHost(), authenticate(headers) and request(req) to the WorkspaceClient
facade, built only from mapToClientOptions and resolved the same way the
modular SDK's resolveClientConfig does (profile resolve + defaultCredentials).
request() sends through the modular transport, so it carries the AppKit
User-Agent, returns the raw Response, and throws the wrapper ApiError on
non-2xx.

Migrate the drop-in callers off the legacy config/apiClient: SCIM workspace
id probe, dev warehouse discovery (still skip_cannot_use=true), internal
telemetry, files upload, mlflow eval auth, and agents hosted-tool auth.

Also cache env-M2M OAuth tokens until 40s before expiry. sdk-auth 0.51.0's
newM2mCredentials mints a new token per request, unlike the legacy SDK; this
affected the already-migrated warehouses/statementExecution clients too.

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 force-pushed the feat/modular-auth-seam branch from cb1617a to f90c6b8 Compare October 8, 2026 14:37
@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 (+18 KB) — gzipped download (dist + bin; excludes release-only docs/NOTICE).

dist raw gzip
JS (runtime) 1.2 MB (+18 KB) 454 KB (+6.9 KB)
Type declarations 459 KB (+3.5 KB) 167 KB (+1.4 KB)
Source maps 2.5 MB (+35 KB) 850 KB (+13 KB)
Other 11 KB 3.7 KB
Total 4.2 MB (+56 KB) 1.4 MB (+21 KB)
Per-entry composition (own code — deps external (as shipped))
Entry Initial (gz) Lazy (gz) Total (gz) node_modules (min) Own code (min)
. 104 KB (+2.2 KB) 2.5 KB 107 KB (+2.2 KB) external 337 KB (+5.7 KB)
./beta 101 KB (+2.3 KB) 487 B (+2 B) 101 KB (+2.3 KB) external 303 KB (+5.6 KB)
./testing 44 KB (+2.2 KB) 32 KB (-40 B) 76 KB (+2.1 KB) external 220 KB (+5.7 KB)
./tsdown 520 B 0 B 520 B external 813 B
./type-generator 25 KB (+2.1 KB) 0 B 25 KB (+2.1 KB) external 72 KB (+5.6 KB)

Chunks:

Entry Chunk Load Size (gz)
. index.js initial 100 KB
. utils.js initial 4.6 KB
. remote-tunnel-manager.js lazy 2.5 KB
./beta beta.js initial 81 KB
./beta stream-manager.js initial 5.9 KB
./beta modular.js initial 5.4 KB
./beta service-context.js initial 4.2 KB
./beta databricks.js initial 3.3 KB
./beta client.js initial 595 B
./beta index.js initial 20 B
./beta supervisor-api.js lazy 193 B
./beta databricks.js lazy 179 B
./beta index.js lazy 115 B
./testing manifest.js initial 31 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 25 KB

@databricks/appkit-ui

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

dist raw gzip
JS (runtime) 429 KB 146 KB
Type declarations 266 KB (+231 B) 98 KB (+131 B)
Source maps 853 KB 285 KB
CSS 16 KB 3.2 KB
Total 1.5 MB (+231 B) 533 KB (+131 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 49 KB 481 KB 1.3 MB 177 KB
./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 8, 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 38918735971 -R databricks/appkit -n appkit-template-0.88.1-pr.81154ef-feat-modular-auth-seam-644 -D appkit-pr-644 \
  && unzip -o "appkit-pr-644/appkit-template-0.88.1-pr.81154ef-feat-modular-auth-seam-644.zip" -d "appkit-pr-644" \
  && databricks apps init --template "appkit-pr-644"

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 added this pull request to stack #664 October 13, 2026 08:33
@MarioCadenas
MarioCadenas force-pushed the feat/modular-auth-seam branch from f90c6b8 to d52a58c Compare October 13, 2026 09:01
@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 marked this pull request as ready for review October 14, 2026 14:04
@MarioCadenas
MarioCadenas requested a review from a team as a code owner October 14, 2026 14:04
@MarioCadenas
MarioCadenas force-pushed the feat/modular-auth-seam branch from 83bed35 to a76ebbb Compare October 14, 2026 14:21
@MarioCadenas
MarioCadenas force-pushed the feat/modular-auth-seam branch 4 times, most recently from a02ed45 to 69017fe Compare October 16, 2026 10:21
MarioCadenas and others added 2 commits October 16, 2026 16:43
…client

Add getHost(), authenticate(headers) and request(req) to the WorkspaceClient
facade, built only from mapToClientOptions and resolved the same way the
modular SDK's resolveClientConfig does (profile resolve + defaultCredentials).
request() sends through the modular transport, so it carries the AppKit
User-Agent, returns the raw Response, and throws the wrapper ApiError on
non-2xx.

Migrate the drop-in callers off the legacy config/apiClient: SCIM workspace
id probe, dev warehouse discovery (still skip_cannot_use=true), internal
telemetry, files upload, mlflow eval auth, and agents hosted-tool auth.

Also cache env-M2M OAuth tokens until 40s before expiry. sdk-auth 0.51.0's
newM2mCredentials mints a new token per request, unlike the legacy SDK; this
affected the already-migrated warehouses/statementExecution clients too.

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

Type WorkspaceRequest.headers as Headers so callers keep using .set instead
of plain objects. Put the files upload back on its pre-seam code; it moves
to the modular files.uploadFile in the files migration. Restore the token
cache to its base position so it drops out of this layer's diff.

Co-authored-by: Isaac <no-reply@databricks.com>
Signed-off-by: MarioCadenas <MarioCadenas@users.noreply.github.com>
@MarioCadenas
MarioCadenas force-pushed the feat/modular-auth-seam branch from 69017fe to 46168f7 Compare October 16, 2026 14:46

This branch has not been deployed

No deployments
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