Skip to content

feat: drop @databricks/sdk-experimental from @databricks/lakebase - #642

Open
MarioCadenas wants to merge 5 commits into
feat/modular-client-postgresfrom
feat/modular-lakebase
Open

MarioCadenas wants to merge 5 commits into
feat/modular-client-postgresfrom
feat/modular-lakebase

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: drop @databricks/sdk-experimental from @databricks/lakebase

Lakebase now takes a structural workspace client: either the legacy
WorkspaceClient shape (currentUser.me + apiClient.request) or anything with an
authenticated request() (the AppKit modular client). Credential generation and
the SCIM Me lookup go through request() when present.

The default client (no workspaceClient passed) uses the modular sdk-core
profile resolution and sdk-auth default credentials, loaded via dynamic
import so the CJS build keeps working with the ESM-only SDK.

Token refresh timing and caching are unchanged.

feat(appkit): pass the modular workspace client to lakebase

The lakebase plugin and initializeLakebasePool hand the AppKit client to
@databricks/lakebase directly instead of toLegacyWorkspaceClient().

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-lakebase branch from b17efc2 to 5fc3b68 Compare October 8, 2026 14:37
@MarioCadenas
MarioCadenas changed the base branch from feat/modular-sdk-integration to feat/modular-agents 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 (+30 KB) — gzipped download (dist + bin; excludes release-only docs/NOTICE).

dist raw gzip
JS (runtime) 1.3 MB (+28 KB) 458 KB (+11 KB)
Type declarations 463 KB (+7.8 KB) 168 KB (+2.9 KB)
Source maps 2.5 MB (+58 KB) 857 KB (+20 KB)
Other 11 KB 3.7 KB
Total 4.2 MB (+94 KB) 1.5 MB (+33 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 (+3.8 KB) 2.5 KB (+1 B) 108 KB (+3.8 KB) external 343 KB (+11 KB)
./beta 102 KB (+3.7 KB) 486 B (+1 B) 103 KB (+3.7 KB) external 307 KB (+9.8 KB)
./testing 45 KB (+3.2 KB) 32 KB (-2 B) 77 KB (+3.2 KB) external 224 KB (+8.8 KB)
./tsdown 520 B 0 B 520 B external 813 B
./type-generator 26 KB (+2.6 KB) 0 B 26 KB (+2.6 KB) external 74 KB (+7.1 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 stream-manager.js initial 5.9 KB
./beta modular.js initial 5.8 KB
./beta service-context.js initial 4.2 KB
./beta databricks.js initial 3.3 KB
./beta client.js initial 653 B
./beta index.js initial 20 B
./beta supervisor-api.js lazy 192 B
./beta databricks.js lazy 179 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 (+579 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 (+887 B) 99 KB (+371 B)
Source maps 853 KB (+314 B) 286 KB (+143 B)
CSS 16 KB 3.2 KB
Total 1.5 MB (+1.4 KB) 534 KB (+622 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

@MarioCadenas
MarioCadenas force-pushed the feat/modular-lakebase branch from 5fc3b68 to c51b470 Compare October 9, 2026 13:48
@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 38918707769 -R databricks/appkit -n appkit-template-0.88.1-pr.167ffac-feat-modular-lakebase-642 -D appkit-pr-642 \
  && unzip -o "appkit-pr-642/appkit-template-0.88.1-pr.167ffac-feat-modular-lakebase-642.zip" -d "appkit-pr-642" \
  && databricks apps init --template "appkit-pr-642"

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 force-pushed the feat/modular-lakebase branch from c51b470 to 5246761 Compare October 9, 2026 15:07
@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-lakebase branch from 5246761 to b93a9e5 Compare October 13, 2026 09:01
@MarioCadenas
MarioCadenas force-pushed the feat/modular-lakebase branch from b93a9e5 to 7225b69 Compare October 13, 2026 13:03
@MarioCadenas
MarioCadenas force-pushed the feat/modular-lakebase branch from 7225b69 to 0aad830 Compare October 13, 2026 14:14
@MarioCadenas
MarioCadenas force-pushed the feat/modular-lakebase branch 2 times, most recently from 278221f to 82f9959 Compare October 13, 2026 15:41
@MarioCadenas
MarioCadenas removed this pull request from stack #664 October 13, 2026 15:47
@MarioCadenas
MarioCadenas changed the base branch from feat/modular-agents to feat/modular-client-postgres 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 13, 2026 16:12
@MarioCadenas
MarioCadenas requested a review from a team as a code owner October 13, 2026 16:12
@MarioCadenas
MarioCadenas requested a review from ditadi October 13, 2026 16:12
@MarioCadenas
MarioCadenas force-pushed the feat/modular-lakebase branch from 1dbb5d5 to a49a734 Compare October 14, 2026 14:21
@MarioCadenas
MarioCadenas force-pushed the feat/modular-lakebase branch from a49a734 to a11556c Compare October 14, 2026 14:35
MarioCadenas and others added 5 commits October 16, 2026 16:43
Lakebase now takes a structural workspace client: either the legacy
WorkspaceClient shape (currentUser.me + apiClient.request) or anything with an
authenticated request() (the AppKit modular client). Credential generation and
the SCIM Me lookup go through request() when present.

The default client (no workspaceClient passed) uses the modular sdk-core
profile resolution and sdk-auth default credentials, loaded via dynamic
import so the CJS build keeps working with the ESM-only SDK.

Token refresh timing and caching are unchanged.

Co-authored-by: Isaac <no-reply@databricks.com>
Signed-off-by: MarioCadenas <MarioCadenas@users.noreply.github.com>
The lakebase plugin and initializeLakebasePool hand the AppKit client to
@databricks/lakebase directly instead of toLegacyWorkspaceClient().

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

The PGHOST check now calls postgres.getEndpoint on the AppKit workspace
client instead of a raw GET, keeping the raw request and legacy paths for
other clients. A 404 from the typed client's ApiError (httpStatusCode) is
still treated as a missing endpoint.

Co-authored-by: Isaac <no-reply@databricks.com>
Signed-off-by: MarioCadenas <MarioCadenas@users.noreply.github.com>
Lakebase's request-capable client type gains an optional `postgres` (the
subset of sdk-postgres PostgresClient it uses). When present, credentials go
through postgres.generateDatabaseCredential, mapping the snake_case public
request to the camelCase model and expireTime back to an ISO string.

Claims using unspecified_resource_name fall back to the raw request: the typed
model only has tableName and would drop them.

The endpoint host check drops its raw request() branch and the cast; a
request-only client now skips verification with a warning.

Co-authored-by: Isaac <no-reply@databricks.com>
Signed-off-by: MarioCadenas <MarioCadenas@users.noreply.github.com>
AppKit's workspace client types its raw request headers as Headers, so the
request type and its callers now use Headers too.

Co-authored-by: Isaac <no-reply@databricks.com>
Signed-off-by: MarioCadenas <MarioCadenas@users.noreply.github.com>
@MarioCadenas
MarioCadenas force-pushed the feat/modular-lakebase branch from f5706e4 to 162c59f 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