Repository navigation
feat(appkit): migrate files to modular @databricks/sdk-files - #638
Open
MarioCadenas wants to merge 6 commits into
Open
MarioCadenas wants to merge 6 commits into
MarioCadenas wants to merge 6 commits into
Conversation
MarioCadenas
force-pushed
the
feat/modular-files
branch
from
October 8, 2026 14:37
24b99c1 to
d49a04c
Compare
MarioCadenas
changed the base branch from
feat/modular-sdk-integration
to
feat/modular-jobs
October 8, 2026 14:37
MarioCadenas
added this pull request to stack #636
October 8, 2026 14:38
Contributor
📦 Bundle size reportCompared against
|
| dist | raw | gzip |
|---|---|---|
| JS (runtime) | 1.3 MB (+24 KB) | 456 KB (+9.1 KB) |
| Type declarations | 462 KB (+6.5 KB) | 168 KB (+2.5 KB) |
| Source maps | 2.5 MB (+49 KB) | 854 KB (+17 KB) |
| Other | 11 KB | 3.7 KB |
| Total | 4.2 MB (+79 KB) | 1.4 MB (+28 KB) |
Per-entry composition (own code — deps external (as shipped))
| Entry | Initial (gz) | Lazy (gz) | Total (gz) | node_modules (min) | Own code (min) |
|---|---|---|---|---|---|
. |
105 KB (+2.9 KB) | 2.5 KB (+1 B) | 107 KB (+2.9 KB) | external | 340 KB (+8.0 KB) |
./beta |
101 KB (+2.7 KB) | 484 B (-1 B) | 102 KB (+2.7 KB) | external | 304 KB (+7.1 KB) |
./testing |
44 KB (+2.5 KB) | 32 KB (-43 B) | 77 KB (+2.4 KB) | external | 221 KB (+6.6 KB) |
./tsdown |
520 B | 0 B | 520 B | external | 813 B |
./type-generator |
25 KB (+2.3 KB) | 0 B | 25 KB (+2.3 KB) | external | 73 KB (+6.2 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 | 82 KB |
./beta |
stream-manager.js |
initial | 5.9 KB |
./beta |
modular.js |
initial | 5.6 KB |
./beta |
service-context.js |
initial | 4.2 KB |
./beta |
databricks.js |
initial | 3.3 KB |
./beta |
client.js |
initial | 594 B |
./beta |
index.js |
initial | 20 B |
./beta |
supervisor-api.js |
lazy | 192 B |
./beta |
databricks.js |
lazy | 177 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 (+550 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 (+768 B) | 98 KB (+349 B) |
| Source maps | 853 KB (+314 B) | 286 KB (+143 B) |
| CSS | 16 KB | 3.2 KB |
| Total | 1.5 MB (+1.3 KB) | 534 KB (+600 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
force-pushed
the
feat/modular-files
branch
from
October 9, 2026 13:48
d49a04c to
49e4099
Compare
Contributor
🤖 AppKit PR bot🔬 Run evalsStart an eval for this PR from the evals-monitor app: Go to Evals Monitor → 📦 Try this PR's app templateScaffolds a new app from this PR's SDK build. Run it in any folder (requires the GitHub CLI — gh run download 38918716064 -R databricks/appkit -n appkit-template-0.88.1-pr.9589be0-feat-modular-files-638 -D appkit-pr-638 \
&& unzip -o "appkit-pr-638/appkit-template-0.88.1-pr.9589be0-feat-modular-files-638.zip" -d "appkit-pr-638" \
&& databricks apps init --template "appkit-pr-638"The template pins |
MarioCadenas
force-pushed
the
feat/modular-files
branch
from
October 9, 2026 15:07
49e4099 to
a0d0a3a
Compare
MarioCadenas
removed this pull request from stack #636
October 13, 2026 08:32
MarioCadenas
added this pull request to stack #664
October 13, 2026 08:33
MarioCadenas
force-pushed
the
feat/modular-files
branch
from
October 13, 2026 09:01
a0d0a3a to
0a40d62
Compare
MarioCadenas
force-pushed
the
feat/modular-files
branch
from
October 13, 2026 14:32
60a89e4 to
ccd4a20
Compare
MarioCadenas
removed this pull request from stack #664
October 13, 2026 15:47
MarioCadenas
added this pull request to stack #669
October 13, 2026 15:48
MarioCadenas
marked this pull request as ready for review
October 14, 2026 09:26
MarioCadenas
force-pushed
the
feat/modular-files
branch
from
October 14, 2026 14:21
c125a5c to
b6880cc
Compare
MarioCadenas
force-pushed
the
feat/modular-files
branch
2 times, most recently
from
October 15, 2026 16:29
6fb96b8 to
1e04d9f
Compare
MarioCadenas
force-pushed
the
feat/modular-files
branch
from
October 16, 2026 09:15
1e04d9f to
cee3839
Compare
MarioCadenas
force-pushed
the
feat/modular-files
branch
from
October 16, 2026 10:21
cee3839 to
9669f3f
Compare
Swap the facade's files accessor to a lazily built FilesClient (sdk-files 0.52.0, accepts sdk-core/auth/options 0.51.0). - list/download/createDirectory/delete use listDirectoryContentsIter, downloadFile, createDirectory, deleteFile; results are mapped back to the legacy snake_case / header-keyed shapes. - metadata uses a raw HEAD via request(): the generated getFileMetadata parses the empty HEAD body and drops the metadata headers. - Modular ApiError (httpStatusCode) is converted to the wrapper ApiError so exists() and the plugin's 4xx mapping keep working. - DirectoryEntry / DownloadResponse are now AppKit-owned types with the same shape. Co-authored-by: Isaac <no-reply@databricks.com> Signed-off-by: MarioCadenas <MarioCadenas@users.noreply.github.com>
…mples Files metadata now reads a raw HEAD through client.request, so the files.getMetadata seed never reached the route. Co-authored-by: Isaac <no-reply@databricks.com> Signed-off-by: MarioCadenas <MarioCadenas@users.noreply.github.com>
Export FilesDirectoryEntry / FilesDownloadResponse (modular SDK shapes) from the package root alongside the legacy DirectoryEntry / DownloadResponse, now marked @deprecated. list() and download() keep returning the legacy shapes. Add TODOs for the /list camelCase migration and for switching metadata to getFileMetadata once sdk-files reads the HEAD headers. Co-authored-by: Isaac <no-reply@databricks.com> Signed-off-by: MarioCadenas <MarioCadenas@users.noreply.github.com>
Replace the raw PUT workaround in FilesConnector.upload() with client.files.uploadFile. Buffer/string bodies are wrapped in a stream (uploadFile only takes a ReadableStream). Errors keep the UPLOAD_FAILED re-wrap with the upstream status and 200-char safe message. The route now passes the execute() timeout signal through. uploadFile does not go through executeCall, so the SDK never retries it, and FILES_WRITE_DEFAULTS disables AppKit retry; a consumed stream body is never replayed. Co-authored-by: Isaac <no-reply@databricks.com> Signed-off-by: MarioCadenas <MarioCadenas@users.noreply.github.com>
metadata() sent the raw resolved path through client.request(), whose new URL(path, host) parses '#' and '?' in a file name as fragment/query. 'report#1.csv' hit '.../report', so exists() could report a different file. Encode each segment like the typed SDK calls do. Co-authored-by: Isaac <no-reply@databricks.com> Signed-off-by: MarioCadenas <MarioCadenas@users.noreply.github.com>
Buffer and string uploads were wrapped as a ReadableStream for uploadFile, which sends them chunked with no Content-Length and makes them impossible to retry. Send in-memory contents as bytes through the request seam instead; real streams still go through uploadFile. Co-authored-by: Isaac <no-reply@databricks.com> Signed-off-by: MarioCadenas <MarioCadenas@users.noreply.github.com>
MarioCadenas
force-pushed
the
feat/modular-files
branch
from
October 16, 2026 14:46
9669f3f to
84fa559
Compare
atilafassina
approved these changes
Oct 16, 2026
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of the migration off
@databricks/sdk-experimentalonto the modular@databricks/sdk-*SDK (see #562). Base:feat/modular-sdk-integration.Changes
feat(appkit): migrate files to modular @databricks/sdk-files
Swap the facade's files accessor to a lazily built FilesClient
(sdk-files 0.52.0, accepts sdk-core/auth/options 0.51.0).
downloadFile, createDirectory, deleteFile; results are mapped back to
the legacy snake_case / header-keyed shapes.
parses the empty HEAD body and drops the metadata headers.
so exists() and the plugin's 4xx mapping keep working.
same shape.
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.