feat(operations): Phase 3 operations, widgets and CLI auth bridge - #2
Draft
pg-dev-git wants to merge 51 commits into
Draft
feat(operations): Phase 3 operations, widgets and CLI auth bridge#2pg-dev-git wants to merge 51 commits into
pg-dev-git wants to merge 51 commits into
Conversation
- Add populate_by_name=True to Settings config for test compatibility - Fix _handle_response to properly handle Salesforce error format (list of errors) - Fix exception handling to not catch intentionally raised SalesforceAPIError - Fix CryptoManager to not call get_settings() in __init__ (requires explicit master_key) - Fix integration test fixtures with valid encryption keys and proper mock data - Update service integration tests to pass settings fixture - Fix mock data field naming (snake_case) to match Pydantic models
- Add SFCLIManager for subprocess management of SF CLI commands - Add TokenStore with encryption and keyring integration for secure token storage - Add SFCLIAuthService for high-level SF CLI authentication flow - Add create_client_from_sf_cli factory method to SalesforceClient - Update CLI auth commands to support SF CLI-based authentication (sfcli method) - Add new CLI commands: auth logout, auth status, auth list-orgs - Handle SF CLI warnings (update available) gracefully - All 36 tests pass
…extraction/upload, safety monitor, and widget system Co-authored-by: openhands <openhands@all-hands.dev>
…nstallation Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: openhands <openhands@all-hands.dev>
…n conftest Co-authored-by: openhands <openhands@all-hands.dev>
… to avoid Windows cp1252 UnicodeEncodeError Co-authored-by: openhands <openhands@all-hands.dev>
…sistence, command palette, help screen, and doctor command Co-authored-by: openhands <openhands@all-hands.dev>
… Textual @import parsing error Co-authored-by: openhands <openhands@all-hands.dev>
…riables Co-authored-by: openhands <openhands@all-hands.dev>
… keyring warning gracefully Co-authored-by: openhands <openhands@all-hands.dev>
…xtual widget instantiation Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: openhands <openhands@all-hands.dev>
… NoneType renderable error Co-authored-by: openhands <openhands@all-hands.dev>
…dget Co-authored-by: openhands <openhands@all-hands.dev>
… permanently enforce connection safety Co-authored-by: openhands <openhands@all-hands.dev>
…dless and container environments without system keyring backend Co-authored-by: openhands <openhands@all-hands.dev>
…e) for headless VMs and browser-less environments Co-authored-by: openhands <openhands@all-hands.dev>
- Fix undefined CSS variables in dark.css and light.css: - Add -darken-2, -darken-2, -darken-2 - Fix Footer background to use -darken-2 instead of undefined -dark - Add signal handling in app.py for graceful shutdown: - Register SIGINT/SIGTERM handlers in on_mount() - Call self.exit() directly in signal handler (not call_from_thread) - Add _shutdown_event for coordination - Clean up in on_unmount()
1. Prevent auto-login on startup: - session.initialize() now calls ensure_valid_token(auto_refresh=False) - Added auto_refresh parameter to ensure_valid_token() 2. Fix login screen dismissal after login: - Removed @work decorator from _run_login and _run_device_login - These methods now properly await the login flow before dismissing the screen
- Added layout parameter to refresh() method to match Textual's Widget.refresh() signature - This prevents TypeError when Textual internally calls refresh(layout=True) during mount
…bridge Co-authored-by: openhands <openhands@all-hands.dev>
- Fix F1 help binding error by adding action_help - Implement fuzzy-search command palette on Ctrl+P - Implement column-width save/restore persistence via WindowManager - Implement configuration settings view in MainScreen - Load TUI config, apply themes, and integrate app state on startup Co-authored-by: openhands <openhands@all-hands.dev>
… kwarg Co-authored-by: openhands <openhands@all-hands.dev>
…n sync Co-authored-by: openhands <openhands@all-hands.dev>
…ipe in refresh_org_list Co-authored-by: openhands <openhands@all-hands.dev>
…secure env-based session seeding scripts Co-authored-by: openhands <openhands@all-hands.dev>
… token expiration protocol Co-authored-by: openhands <openhands@all-hands.dev>
…tderr, with TUI error interception and model validation resilience Co-authored-by: openhands <openhands@all-hands.dev>
…ntax, and support sync progress callbacks in dataset extraction Co-authored-by: openhands <openhands@all-hands.dev>
…refresh to prevent TUI blocking Co-authored-by: openhands <openhands@all-hands.dev>
Disable stderr log streaming during TUI execution to prevent background logs from polluting stderr and corrupting the terminal display buffer (single column wrapping issue). Co-authored-by: openhands <openhands@all-hands.dev>
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 freeto 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.
Phase 3: Operations & Background Tasks & CLI Authentication Bridge
dataset_extract.py) with concurrent SAQL extraction andProcessPoolExecutorCSV chunk merging.dataset_upload.py) with chunk splitting, parallel base64 encoding, and sequential multipart upload.dashboard_backup.py) and DataflowController (dataflow_control.py).datasets,dashboards,dataflows, andjobscommands throughSFCLIAuthServiceandSalesforceClientto execute authenticated operations against the real service layer.This PR was created by an AI agent (OpenHands) on behalf of the user.