A powerful VS Code extension for querying multiple data sources with AI assistance. Query Azure Data Explorer (KQL), Azure DevOps work items (WIQL), and local Outlook (OQL) from a unified interface.
| Source | Language | Description |
|---|---|---|
| Azure Data Explorer | KQL | Query Kusto clusters with full IntelliSense and schema explorer |
| Azure DevOps | WIQL | Query work items with preview panel showing description/repro steps |
| Outlook | OQL | Query local Outlook mail, calendar, contacts using KQL-like syntax |
- Generate queries from natural language descriptions
- Explain complex queries in plain English
- Get intelligent query suggestions and improvements
- Supports GitHub Copilot, Azure OpenAI, and GitHub Models
The editor provides a rich query writing experience:
| Feature | Description |
|---|---|
| Syntax Highlighting | Full colorization for KQL, WIQL, and OQL |
| IntelliSense | Schema-aware autocomplete with table/column suggestions |
| Hover Documentation | Function and operator documentation on hover |
| Run Button | Execute query with the play button in editor toolbar |
| Mode Selector | Switch between Kusto, ADO, and Outlook modes |
The results panel displays query output with powerful features:
| Button/Feature | Description |
|---|---|
| Filter Box | Real-time text filtering across all columns with match highlighting |
| Column Toggle | Show/hide columns using the columns dropdown |
| Export CSV | Download results as CSV file |
| Export JSON | Download results as JSON file |
| Preview | Show detailed preview of selected row (HTML rendering for ADO fields) |
| Open Item | Double-click rows to open in browser (ADO) or Outlook |
| Cancel | Stop long-running queries with the cancel button |
| Tabs | Multiple result tabs for concurrent queries |
Row Selection:
- Click to select a single row
- Ctrl+Click to add/remove from selection
- Shift+Click to select a range
Manage your connections in the sidebar:
| Button | Description |
|---|---|
| Add (+) | Add a new cluster, ADO organization, or configure Outlook |
| Refresh | Reload schema and database list |
| Star | Mark frequently used connections as favorites |
| Rename | Give connections friendly display names |
| Remove | Delete a connection from your list |
Get AI assistance for your queries:
| Feature | Description |
|---|---|
| Generate Query | Describe what you want in natural language |
| Explain Query | Paste a query to get a plain English explanation |
| Improve Query | Get suggestions for optimization |
| Insert to Editor | Click to insert AI-generated queries directly |
| Panel | Description |
|---|---|
| Favorites | Save frequently used queries with custom names |
| History | Browse and search previously executed queries |
| Results History | Access past query results with metadata |
Quest uses a two-component architecture:
┌─────────────────────────────────────────────────────────────┐
│ VS Code Extension │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ Languages │ │ Providers │ │ Commands │ │
│ │ KQL/WIQL/OQL│ │Results/Chat │ │ Query/Cluster/AI │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
│ │ │
│ JSON-RPC (stdin/stdout) │
│ │ │
└───────────────────────────┼─────────────────────────────────┘
│
┌───────────────────────────┼─────────────────────────────────┐
│ .NET 8 Sidecar Server │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ Handlers │ │ Services │ │ Data Sources │ │
│ │Query/Schema │ │Outlook/ADO │ │ Kusto/ADO/Outlook │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
TypeScript-based VS Code extension providing:
- Language support (syntax highlighting, completion, hover)
- WebView providers (results viewer, AI chat, favorites, history)
- Command handlers (run query, add cluster, AI interactions)
- Sidecar process management
.NET 8 console application providing:
- JSON-RPC request handlers via StreamJsonRpc
- Kusto query execution with Azure.Identity authentication
- ADO work item queries via Azure DevOps REST API
- Outlook COM interop for local mail/calendar queries
- Schema caching and management
- VS Code 1.85+
- .NET 8 SDK
- Node.js LTS (18+)
- Windows (required for Outlook queries)
-
Clone the repository
git clone https://github.com/InbarR/Quest.git cd Quest -
Build the server
cd server dotnet build dotnet publish -c Release -r win-x64 --self-contained true -o ../extension/server
-
Build the extension
cd extension npm install npm run compile -
Package the extension
npm run package # Creates quest-x.x.x.vsix -
Install in VS Code
code --install-extension quest-*.vsix
- Open the project in VS Code
- Press
F5to launch Extension Development Host - Make changes and reload (
Ctrl+Rin dev host)
Kusto Cluster:
- Click the
+button in the Data Sources panel - Enter cluster URL (e.g.,
https://help.kusto.windows.net) - Select a database
- Authenticate via Azure AD
Azure DevOps:
- Switch to ADO mode using the mode selector
- Add organization URL (e.g.,
https://dev.azure.com/myorg) - Provide project name
- Authenticate via Azure AD or PAT
Outlook:
- Switch to Outlook mode
- No configuration needed - uses local Outlook installation
Create a new file with the appropriate extension:
KQL (.kql)
StormEvents
| where StartTime > ago(7d)
| summarize Count=count() by State
| top 10 by CountWIQL (.wiql)
SELECT [System.Id], [System.Title], [System.State]
FROM WorkItems
WHERE [System.AssignedTo] = @Me
AND [System.State] <> 'Closed'
ORDER BY [System.ChangedDate] DESCOQL (.oql)
Inbox
| where Subject contains "meeting"
| where ReceivedTime > ago(7d)
| project Subject, From, ReceivedTime
| take 50
Quest/
├── extension/ # VS Code extension (TypeScript)
│ ├── src/
│ │ ├── commands/ # Command handlers
│ │ ├── languages/ # KQL, WIQL, OQL language support
│ │ ├── providers/ # WebView providers
│ │ └── sidecar/ # Sidecar client & manager
│ ├── syntaxes/ # TextMate grammars
│ └── resources/ # Icons, walkthrough
├── server/ # .NET sidecar server
│ ├── Handlers/ # JSON-RPC request handlers
│ ├── Models/ # Data source abstractions
│ ├── Services/ # Business logic
│ └── Protocol/ # Message types
└── server.Tests/ # Server unit tests
| Setting | Description | Default |
|---|---|---|
queryStudio.queryTimeout |
Query timeout in seconds | 300 |
queryStudio.maxResults |
Maximum rows to return | 10000 |
queryStudio.autoSaveHistory |
Auto-save executed queries | true |
queryStudio.ai.enabled |
Enable AI features | true |
queryStudio.ai.provider |
AI provider (github, azure, copilot) | github |
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Outlook queries require Windows with Outlook installed (COM interop)
- Large result sets (>10,000 rows) may impact performance
- AI features require configured provider credentials
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with VS Code Extension API
- Server communication via StreamJsonRpc
- Kusto queries powered by Azure.Data.Explorer