feat: Add Azure Storage backend integration with comprehensive sync, sharing, and analytics capabilities#145
Merged
rajbos merged 89 commits intorajbos:mainfrom Jan 30, 2026
Merged
Conversation
Co-authored-by: rajbos <6085745+rajbos@users.noreply.github.com>
Co-authored-by: rajbos <6085745+rajbos@users.noreply.github.com>
Co-authored-by: rajbos <6085745+rajbos@users.noreply.github.com>
Co-authored-by: rajbos <6085745+rajbos@users.noreply.github.com>
Bumps the minor-and-patch-updates group with 3 updates: [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node), [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) and [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser). Updates `@types/node` from 25.0.6 to 25.0.9 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) Updates `@typescript-eslint/eslint-plugin` from 8.52.0 to 8.53.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.53.0/packages/eslint-plugin) Updates `@typescript-eslint/parser` from 8.52.0 to 8.53.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.53.0/packages/parser) --- updated-dependencies: - dependency-name: "@types/node" dependency-version: 25.0.9 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: minor-and-patch-updates - dependency-name: "@typescript-eslint/eslint-plugin" dependency-version: 8.53.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-and-patch-updates - dependency-name: "@typescript-eslint/parser" dependency-version: 8.53.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-and-patch-updates ... Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: rajbos <6085745+rajbos@users.noreply.github.com>
Co-authored-by: rajbos <6085745+rajbos@users.noreply.github.com>
… tool name extraction Co-authored-by: rajbos <6085745+rajbos@users.noreply.github.com>
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.31.9 to 4.31.10. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](github/codeql-action@5d4e8d1...cdefb33) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 4.31.10 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6.1.0 to 6.2.0. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](actions/setup-node@395ad32...6044e13) --- updated-dependencies: - dependency-name: actions/setup-node dependency-version: 6.2.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: rajbos <6085745+rajbos@users.noreply.github.com>
Co-authored-by: rajbos <6085745+rajbos@users.noreply.github.com>
…services # Conflicts: # package-lock.json # package.json # src/extension.ts
…vements, and new utility functions - Added error handling for entity creation and logging in AzureResourceService. - Improved query caching logic in QueryService. - Introduced batch upsert functionality in DataPlaneService for better reliability. - Enhanced consent timestamp validation in SyncService with logging. - Added utility functions for day key validation and sanitization in UtilityService. - Updated commands to handle cloning failures gracefully in commands.ts.
…ging in Azure Resource Service
- Implemented validation, error, success, help text, and confirmation message helpers in `src/backend/ui/messages.ts`. - Created unit tests for message helpers in `src/test-node/backend-ui-messages.test.ts`. - Added a new file for backend configurator tests in `src/test-node/backend-configurator.test.ts`. - Introduced a type definition for jsdom in `src/types/jsdom.d.ts`.
- Added SessionFileCache type definition and getSessionFileDataCached method to BackendFacadeDeps. - Refactored SyncService to utilize cached session data, improving performance by reducing redundant file parsing. - Implemented cache validation to prevent injection attacks and ensure data integrity. - Enhanced logging for cache performance statistics, including hits and misses. - Updated extension integration to support cache functionality. - Added comprehensive tests for cache integration, covering hits, misses, validation, and error handling. - Documented cache integration details and performance impact in CACHE-INTEGRATION.md.
Removed the escapeHtml function that handled HTML escaping for untrusted content.
…scripting Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
- Remove pnpm-lock.yaml - Add package-lock.json - Install dependencies with npm
…s as all tasks are marked complete and ready for beta testing.
…nd cache management
…fits and improved HTML structure
4 tasks
Owner
|
Awesome @jongio ! Taking a look now. |
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
rajbos
reviewed
Jan 30, 2026
rajbos
approved these changes
Jan 30, 2026
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
This PR introduces a complete Azure Storage backend integration for the GitHub Copilot Token Tracker extension, enabling users to sync token usage data to Azure Table Storage for cross-device sharing, team analytics, and long-term data persistence.
Key Features
Azure Storage Backend Integration
Backend Services Architecture
azureResourceService: Azure resource discovery, creation, and managementcredentialService: Multi-method authentication with automatic fallback chaindataPlaneService: Azure Table Storage operations with retry logic and error handlingqueryService: Advanced querying with aggregations, filters, and rollupssyncService: Intelligent synchronization with cache integration and conflict resolutionutilityService: Shared utilities for redaction, encryption, and validationSession File Cache Integration
UI & Webview Improvements
Developer Experience
Documentation
TRACKABLE-DATA.md: Detailed specification of trackable metrics and data structuresUSAGE-ANALYSIS.md: Usage analysis feature documentation with metrics explanationsCACHE-INTEGRATION.md: Cache architecture and integration patternsbackend.md: Complete backend specification with architecture diagramsTechnical Changes
New Files (57 files)
src/backend/services/*.ts(6 services)src/backend/*.ts(13 modules)src/webview/{chart,details,diagnostics,usage}/*.ts(4 modules)src/test-node/*.test.ts(20 test files)src/utils/*.ts(4 utility modules)docs/specs/backend*.md,docs/TRACKABLE-DATA.md, etc.Modified Files (42 files)
src/extension.ts: +1354 lines for backend integration and webview refactoringpackage.json: Added dependencies (@azure/data-tables, @azure/identity, jsdom, html-escape)Statistics
Breaking Changes
None - all new features are opt-in. Extension continues to work without backend configuration.
Testing
Migration Guide
For users wanting to enable the Azure backend:
Future Work
Related Issues
Closes #[issue-number-if-applicable]
Checklist