* Add Cosmos DB Shell (NoSQL) support to Cloud Shell
Adds Cosmos DB (NoSQL) support to the Cloud Shell experience and wires up authentication for RBAC / local-auth-disabled accounts:
- Enable the Open Cosmos DB Shell button behind the enableCloudShell feature flag.
- Bootstrap .NET SDK 10 in Cloud Shell before installing the CosmosDBShell tool.
- Force gateway connection mode and add --verbose to surface connection errors.
- Select Entra ID vs account-key auth via isCloudShellEntraAuthEnabled (covers dataplane RBAC and disableLocalAuth accounts).
- Acquire a data-plane-scoped Entra token on demand when no cached aadToken exists, and omit --connect-tenant so a missing token falls through to DefaultAzureCredential (Cloud Shell az session) instead of interactive/device-code auth.
* Fix popup_window_error in CosmosDB Cloud Shell Entra auth
Acquiring an Entra token on demand via acquireMsalTokenForAccount triggered a browser loginPopup (even in silent mode when no MSAL account was cached), which fails with popup_window_error inside the hosted Cloud Shell context. getKey now returns the cached userContext.aadToken when present, or an empty string otherwise. With no token exported, the CosmosDBShell tool falls through to DefaultAzureCredential, which uses the Cloud Shell's signed-in az session.
* Force --connect-azure-cli whenever no credential env var is exported
In Azure Cloud Shell, DefaultAzureCredential tries ManagedIdentityCredential first, which cannot mint a token for the *.documents.azure.com audience (AudienceNotSupported). Force AzureCliCredential via --connect-azure-cli whenever no key/token env var is exported, covering both the Entra-no-token and key-auth-empty-key cases. Also auto-update the CosmosDBShell tool so cached installs pick up the new flag.
* Silently mint a Cosmos data-plane token for the Cloud Shell Entra path
A disableLocalAuth Cosmos account whose Data Explorer session is still in key mode has no cached userContext.aadToken, and the ephemeral Cloud Shell can obtain a Cosmos token from neither its managed identity (AudienceNotSupported for *.documents.azure.com) nor its az session (not logged in). Mint a Cosmos-scoped token in the browser and export it via COSMOSDB_SHELL_TOKEN. The acquisition is guarded on an existing cached MSAL account so it can never trigger an interactive popup, and any failure returns an empty string so the tool falls back to --connect-azure-cli.
* Only accept Y/N at the Cloud Shell consent prompt
askConfirmation now ignores any key that is not Y or N instead of treating every non-Y key as a decline, so an accidental keypress no longer aborts the Cloud Shell consent flow. Also add diagnostic warnings on the Cloud Shell token path so the browser console reveals whether the silent Cosmos token mint was skipped (no cached MSAL account) or returned empty.
* Use device-code auth when Cloud Shell has no token
* Pass the Data Explorer credential to the Cosmos DB shell instead of signing in interactively
Azure Cloud Shell cannot authenticate to Cosmos DB on its own: its managed identity
is rejected with AudienceNotSupported for the *.documents.azure.com audience, its az
session is not signed in, and neither the interactive browser nor the device-code flow
is usable from the embedded terminal.
Resolve the credential in Data Explorer and hand it to the shell out-of-band:
- getCosmosDBShellCredential() returns an Entra ID data-plane token (cached aadToken,
or one minted silently only when an MSAL account already exists so it can never
trigger a popup), falling back to the account master key unless local auth is
disabled. It reports which kind it resolved so the correct env var is exported.
- CosmosDBShellHandler exports COSMOSDB_SHELL_TOKEN or COSMOSDB_SHELL_ACCOUNT_KEY and
drops every credential flag, so the tool always lands on a terminal, non-interactive
step of its credential chain.
- When nothing can be resolved, print actionable guidance instead of launching the
tool with no credential.
* Fix TS7011 in ShellTypeFactory tests by typing the mocked getAllAccounts
The empty array literal in the getMsalInstance mock had no contextual type, so
tsc inferred an implicit any[] return under noImplicitAny. Route every mock
through a typed mockMsalAccounts helper.
* Reuse DE's cached credential for Cosmos DB Shell; add read-only key fallback
* Deliver Cosmos DB Shell key as a full connection string; harden key resolution
* Surface the specific reason a Cosmos DB Shell credential could not be resolved
* Deliver Cosmos DB Shell credential inline (export+connect on one line), mirroring Mongo handler
* Log which Cosmos DB Shell credential kind was resolved for debugging
* Increase ARM timeout for Cloud Shell provisioning calls to avoid spurious abort errors
* Gate Cosmos DB Shell button behind enableCosmosDBShell feature flag
* Fix TS2741: add missing enableCosmosDBShell to Features test fixture
* implemented search bar
* formatting corrected
* added pin(fav) and sorting in local in sidebar tree of DE
* reverted changes
* fixed lint and formatting issues
* fixed lint and formatting issues
* theme toggle button is disabled if in portal
* fixed lint error
* added link on disabled theme toggle button
* updated the variable for pin icon
* removed en-us from url
---------
Co-authored-by: nishthaAhujaa <nishtha17354@iiittd.ac.in>
Co-authored-by: sakshigupta12feb <sakshigupta12feb1@gmail.com>
Co-authored-by: Sakshi Gupta <sakshig@microsoft.com>
* First dark theme commits for command bar
* Updated theme on sidebar
* Updated tabs, sidebar, splash screen
* settings theme changes
* Dark theme applied to Monaco editor
* Dark theme to stored procedures
* Fixed sidebar scroll
* Updated scroll issue in sidebar
* Command bar items fixed
* Fixed lint errors
* fixed lint errors
* settings side panel fixed
* Second last iteration for css
* Fixed all the issues of css
* Updated the theme icon for now on DE to change the theme from portal/DE itself
* Formatting issue resolved
* Remove CloudShellTerminalComponent changes - revert to master version
* Fixed test issue
* Fixed formatting issue
* Fix tests: update snapshots and revert xterm imports for compatibility
* Fix xterm imports in CloudShellTerminalComponent to use @xterm packages
* Fix Cloud Shell component imports for compatibility
* Update test snapshots
* Fix xterm package consistency across all CloudShell components
* Fix TypeScript compilation errors in CloudShell components and query Documents
- Standardized xterm package imports across CloudShell components to use legacy 'xterm' package
- Fixed Terminal type compatibility issues in CommonUtils.tsx
- Added type casting for enableQueryControl property in queryDocuments.ts to handle Azure Cosmos SDK interface limitations
- Applied code formatting to ensure consistency
* Update failing snapshot tests
- Updated TreeNodeComponent snapshot tests for loading states
- Updated ThroughputInputAutoPilotV3Component snapshots for number formatting changes (10,00,000 -> 1,000,000)
- All snapshot tests now pass
* Fixed test issue
* Fixed test issue
* Updated the buttons for theme
* Updated the Theme changes based on portal theme changes
* Updated review comments
* Updated the duplicate code and fixed the fabric react error
* Few places styling added and resolving few comments
* Fixed errors
* Fixed comments
* Fixed comments
* Fixed comments
* Fixed full text policy issue for mongoru accounts
* Resolved comments for class Name and few others
* Added css for homepage in ru accounts
* Final commit with all the feedback issues resolved
* Lint error resolved
* Updated the review comments and few Ui issues
* Resolved review comments and changed header bg and active state color
* Moved svg code to different file and imported
* css fixed for the hpome page boxed for ru account
* Lint errors
* Fixed boxes issue in ru accounts
* Handled the initial theme from the portal
* Updated snap
* Update snapshots for TreeNodeComponent and CreateCopyJobScreensProvider tests
* Fix duplicate DataExplorerRoot test id causing Playwright strict mode violation
* Fix locale-dependent number formatting in ThroughputInputAutoPilotV3Component
---------
Co-authored-by: Sakshi Gupta <sakshig+microsoft@microsoft.com>
Co-authored-by: Sakshi Gupta <sakshig@microsoft.com>
* master pull
* Reverting .npmrc file
* Removed logging userContext
* Prettier run
* Added support for opening CosmosDB Account without clicking database tab
* Reverting change in settings.json
* Prettier run
* Added check if the link closed
* Added check if the link didn't closed
* Check if VS Code was opened, if not popup with download button link
* Prettier run
* Redirect to Download VS Code if not opened
* Added error message to VS Code timeout and redirect
* Fixing baseUrl from testing
* Increased timeout for when user is asked to open VS Code
* switched to iframe for redirects
* Fixed VS Code url
* Removed insider url
* Added log messages
* Added link to vCore data explorer dashboard
* Increased timeout to 2.5 secs to see if that helps with VS Code open popup
* Changed to dialog box
* Changed param name
* Increase startTime for extra popup
* Changed to dialog box only when no VS Code detected
* Fixed vscode url
* Changed title back to Open CosmosDB in VS Code
* Added text on required extensions
* Removed text on required extensions as it will prompt by default
* Fixed wording and Primary Button timeout
* Spelled out VS Code
* Removed console log of timeout
* Updated snapshots and lowered timeout
* Remove VS Code button from Gremlin
* Prettier run on CommandBarComponentButtonFactory
* Changed from referencing location to a link
* Prettier run
* Reverting back to popup for opening
* Updated unit test snapshots
* Added vscode: to Content Security Policy
* Reverting back to popup only if opening times out
* Infrastructure to save app state
* Save filters
* Replace read/save methods with more generic ones
* Make datalist for filter unique per database/container combination
* Disable saving middle split position for now
* Fix unit tests
* Turn off confusing auto-complete from input box
* Disable tabStateData for now
* Save and restore split position
* Fix replace autocomplete="off" by removing id on Input tag
* Properly set allotment width
* Fix saved percentage
* Save splitter per collection
* Add error handling and telemetry
* Fix compiling issue
* Add ability to delete filter history. Bug fix when hitting Enter on filter input box.
* Replace delete filter modal with dropdown menu
* Add code to remove oldest record if max limit is reached in app state persistence
* Only save new splitter position on drag end (not onchange)
* Add unit tests
* Add Clear all in settings. Update snapshots
* Fix format
* Remove filter delete and keep filter history to a max. Reword clear button and message in settings pane.
* Fix setting button label
* Update test snapshots
* Reword Clear history button text
* Update unit test snapshot
* Enable Settings pane for Fabric, but turn off Rbac dial for Fabric.
* Change union type to enum
* Update src/Shared/AppStatePersistenceUtility.ts
Assert that path does not include slash char.
Co-authored-by: Ashley Stanton-Nurse <ashleyst@microsoft.com>
* Update src/Shared/AppStatePersistenceUtility.ts
Assert that path does not contain slash.
Co-authored-by: Ashley Stanton-Nurse <ashleyst@microsoft.com>
* Fix format
---------
Co-authored-by: Ashley Stanton-Nurse <ashleyst@microsoft.com>
* start redesign work
* add left padding to all tree nodes
* fiddling with padding
* align tab bar line with first item in resource tree
* final touch ups
* fix a strange password manager autofill prompt
* add keyboard shortcuts
* revert testing change
* nudge messagebar to layout row height
* tidy up
* switch to Allotment to stop ResizeObserver issues with monaco
* refmt and fix lints
* fabric touch-ups
* update snapshots
* remove explicit react-icons dependency
* reinstall packages
* remove background from FluentProvider
* fix alignment of message bar
* undo temporary workaround
* restore refresh button
* fix e2e tests and reformat
* fix compiler error
* remove uiw/react-split
* uncomment selection change on expand
* Fix API endpoint for CassandraProxy query API
* activate Mongo Proxy and Cassandra Proxy in Prod
* Add CP Prod endpoint
* Run npm format and tests
* Revert code
* fix bug that blocked local mongo proxy and cassandra proxy development
* Add prod endpoint
* fix pr check tests
* Remove prod
* Remove prod endpoint
* Remove dev endpoint
* Support data plane RBAC
* Support data plane RBAC
* Add additional changes for Portal RBAC functionality
* Address errors and checks
* Cleanup DP RBAC code
* Run format
* Fix unit tests
* Remove unnecessary code
* Run npm format
* Fix enableAadDataPlane feature flag behavior
* Fix enable AAD dataplane feature flag behavior
* Address feedback comments
* Minor fix
* Add new fixes
* Fix Tables test
* Run npm format
---------
Co-authored-by: Asier Isayas <aisayas@microsoft.com>
* keyboard shortcuts using tinykeys
* refmt and fix lints
* retarget keyboard shortcuts to the body instead of the root element of the React component tree
* refmt
* Update src/Explorer/Menus/CommandBar/CommandBarUtil.tsx
Co-authored-by: Laurent Nguyen <laurent.nguyen@microsoft.com>
* add Save binding to New Item command bar
---------
Co-authored-by: Laurent Nguyen <laurent.nguyen@microsoft.com>
* Implement copilot for user database
* Fix minor bugs
* fix bugs
* Add user database copilot
* Add placeholder text on copilot
* Add AFEC adn killswitch
* Add new v2 sampledatabase endpoint
* Add telemetry
* fix telemetry bug
* Add query edited telemetry
* add authorization header
* Add back to the staging env for phoenix
* point to stage for phoenix
* Preview commit for test env
* Preview link for staging
* change the staging url
* fix lint, unit tests
* fix lint, unit tests
* fix formatting
* Update contracts for new all resource messages
* Add timestamp to token message signature
* Reconstruct resource tree with databases and collections parsed from token dictionary keys
* Create FabricDatabase and FabricCollection to turn off interaction
* Remove unnecessary FabricCollection derived class
* Handle resource tokens
* Bug fix
* Fix linting issues
* Fix update document
* Fix partitition keys
* Remove special case for FabricDatabase tree node
* Modify readCollections to follow normal flow with Fabric
* Move fabric databases refresh to data access and remove special case in Explorer
* Revert Explorer.tsx changes
* Disable database context menu and delete container context menu
* Remove create database/container button for Fabric
* Fix format
* Renew token logic
* Parallelize read collections calls to speed up
* Disable readDatabaseOffer, because it is too slow for now
* Reduce TOKEN_VALIDITY_MS a bit to make sure renewal happens before expiration. Receving new tokens new refreshes databases
* Add container element for Main app in HTML
* Do not handle "openTab" message anymore
* Fix style of main div
* Simplify conditional load of the fabric .css
* Fix format
* Fix tsc can't find dynamic less import
---------
Co-authored-by: Armando Trejo Oliver <artrejo@microsoft.com>
* Add Platform.Fabric to run in context of Fabric
* Use separate StyleConstants
We want to have more flexibility with Styles at runtime
but Constants depend on ConfigContext and therefore
get loaded very early at startup.
* Add Fabric specific styles and Fluent theme
documentDBFabric.less contains all styles for Fabric.
We use React.lazy to import them conditionally at
runtime preventing webpack from preprocessing
them into main.css.
* Restyle CommandBar for Fabric
with more roundness and native colors.
* Disable Notebooks when running in Fabric
* Disable Synapse and Scripts commands for Fabric
* Fix code formatting issues
* Fetch encrypted token from sessionStorage for fabric platform
* Fix Tabs style
* Dark refresh icons for Fabric
* Use new ResourceTree2 for Fabric
* Fluent tree should have a fixed width
otherwise the action buttons jump around on hover.
* Disable remaining Script actions in Fabric
* Revert accidentally committed change
which broke a test
* Fix cross-origin error second try
* Adjust @FabrixBoxMargin css
* Hide Database Scale node on Fabric
* Remove all Collection child nodes on Fabric
* Add a comment about why we need FabricPlatform.tsx
* Fix equality checks
* Fix more Colors for Fabric
* Switch resource tree to "medium" size
* Fix formatting again
* Fix formatting again
* Disable no-var-requires error on some intended var import.
* Increase memory limit for build
* Use standard Segoe UI font for Fabric
* Improve Tabs design for Fabric
* Fix active Tab style bug in Portal
introduced with 39a7765aef
---------
Co-authored-by: Laurent Nguyen <laurent.nguyen@microsoft.com>
* Add additional teaching bubbles in Quickstart
* Run npm format
* Fix lint error
* Add unit tests
* Add Mongo teaching bubbles for Try CosmosDB and Launch full screen
* Add additional tests for UrlUtility
* Run npm format
* Add tests for Notebook Utils
* Add teaching bubbles after creating sample DB
* Add teaching bubble while creating sample container
* Remove test code
* Update tests and always show teaching bubbles in add collection panel when launched from quick start
* Fix snapshot