Add Lakehouse Minio file picker in wizard and clickable file links in job detail#4
Open
Add Lakehouse Minio file picker in wizard and clickable file links in job detail#4
Conversation
Add a "Browse S3" button to the job creation wizard that opens JupyterLab's built-in FileDialog rooted at lakehouse_minio/, converting selected paths to s3a:// URLs via a new bidirectional path mapping utility. In the job detail view, input files are now displayed in a new section and both input and output file paths are rendered as clickable links that open in JupyterLab's file browser when they map to a known lakehouse_minio/ virtual directory.
Mock jobs now include input_files with S3 URLs and outputs use full S3 paths, so file picker and clickable file links are exercisable in mock mode. Also defaults hubUser to 'testuser' when CTS_MOCK_MODE is enabled, ensuring s3ToJlab path mapping works without JupyterHub.
…ions Add a Tornado handler at GET /api/task-browser/s3-path-mappings that reads the authoritative mapping from GroupedS3ContentsManager at runtime, with a governance API fallback. Replace the hardcoded client-side s3PathMapping module with a server-driven s3PathResolver that receives the mapping table from the server at activation. Register berdl-task-browser:navigate-to-path command for file browser navigation.
- Delete unused fileBrowserNav.ts (registered command never called) - Remove BaseHandler abstraction in handlers.py (single handler) - Remove unused hubUser/cdmDefaultBucket page_config entries - Remove redundant .catch() on fetchS3Mappings (handles errors internally) - Remove stale comment in s3PathResolver.ts
Refactor Browse Lakehouse Minio from an embedded button inside the wizard body (which opened a nested dialog) to a top-level dialog button that closes the wizard, opens the file picker, then reopens with updated form data. Also apply prettier formatting to mock data.
5782f97 to
33334b7
Compare
Tianhao-Gu
approved these changes
Feb 9, 2026
Tianhao-Gu
left a comment
There was a problem hiding this comment.
Thanks for the screenshots - looks awesome.
- Replace fire-and-forget window.kbase.task_browser.s3Mappings with useS3Mappings React Query hook, passing mappings via props - Remove _fallback_mappings() (dead code: governance API unavailable when ContentsManager fails; MSW handles mock mode client-side) - Show inline error when Browse files can't be resolved to S3 paths - Extract shared _removeRow helper from duplicate removal methods - Simplify MockServiceWorkerHandler (remove dead importlib path) - Rename MAX_DISPLAYED_OUTPUTS to MAX_DISPLAYED_FILES - Fix non-null assertion lint error in JobWizardDialog - Add s3PathResolver unit tests (19 tests)
|
Prerelease: pr-4 Wheel will be attached once the build completes. Updated on each push. |
- Replace recursive reopen closure in wizard dialog with iterative
trampoline pattern (runWizardStep + while loop)
- Add key={selectedJobId} to JobDetail so expand state resets on
job change
- Remove dead browseRow div wrapper and its CSS rule
- Add output_dir to three mock jobs for realistic test data
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.
Summary
lakehouse_minio/GET /api/task-browser/s3-path-mappings) that reads the running GroupedS3ContentsManager to provide S3-to-JupyterLab path mappingss3PathResolver.ts) converts betweens3a://URLs andlakehouse_minio/paths using server-provided mappingsuseS3Mappings) and passed through props — no window namespace mutationinput_filesandoutputsso file picker and clickable links work in mock modeTest plan
CTS_MOCK_MODE=true uv run jupyter laband open the task browser sidebars3a://URLslakehouse_minio/— verify inline error message shown in wizarduv run jlpm test— 19 s3PathResolver tests pass