Skip to content

feat: add GitHub Copilot Chat (VS Code) agent support#171

Open
MaxRyabov wants to merge 6 commits intovakovalskii:mainfrom
MaxRyabov:feat/copilot-agent
Open

feat: add GitHub Copilot Chat (VS Code) agent support#171
MaxRyabov wants to merge 6 commits intovakovalskii:mainfrom
MaxRyabov:feat/copilot-agent

Conversation

@MaxRyabov
Copy link
Copy Markdown

Summary

Добавляет GitHub Copilot Chat (расширение VS Code) как поддерживаемый агент в CodeDash — загрузка сессий, детальный просмотр, поиск, leaderboard, полная интеграция в UI.

Использует tool name copilot-chat, чтобы не конфликтовать с PR #167 (Copilot CLI, tool: copilot).

Closes #166

What changed

  • добавлено обнаружение сессий Copilot Chat из VS Code workspaceStorage/*/chatSessions/*.json и *.jsonl с маппингом workspace → проект через workspace.json (декодирование file URI, нормализация путей Windows)
  • поддержка двух форматов хранения Copilot: JSON (полное состояние сессии) и JSONL mutation log (kind:0 init, kind:1 set, kind:2 splice) с целевым replay — извлекаются только requests и responses
  • загрузка detail в унифицированный формат — текст пользователя из request.message.text, текст ассистента конкатенируется из response[] items где kind отсутствует, text или markdownContent
  • дисковый кэш метаданных сессий по ключу path|mtime|size — холодный скан ~5с для 300+ сессий, тёплый скан ~120мс
  • оптимизация парсинга JSONL: пропуск нерелевантных мутаций (inputState, image byte-array вложения) через проверку префикса строки до JSON.parse, сокращение загрузки detail для 200+ МБ файлов с зависания до ~1с
  • обработка формата Copilot Chat в _computeSessionDailyBreakdown() через parseCopilotJsonl/parseCopilotJson вместо построчного сканирования — фикс зависания leaderboard на больших сессиях
  • computeSessionCost() возвращает пустую стоимость (нет локальных данных о токенах, как Cursor/Kiro)
  • UI: сайдбар фильтр с иконкой, фиолетовый бейдж (.tool-copilot-chat / #8b6fc0), фильтр в календаре, метка в аналитике, цвет в heatmap, запись в AGENT_INSTALL
  • кросс-платформенные пути VS Code: %APPDATA%/Code (Windows), ~/Library/Application Support/Code (macOS), ~/.config/Code (Linux)

Validation

Проверено локально на реальных данных VS Code (319 сессий, 50+ проектов):

  • node -c src/data.js — синтаксис ОК
  • node bin/cli.js version — CLI стартует
  • loadSessions() — 319 Copilot Chat сессий с корректными путями проектов из .json и .jsonl форматов
  • loadSessionDetail() — сообщения с корректными ролями user/assistant
  • computeSessionCost() — возвращает пустую стоимость
  • getLeaderboardStats() — Copilot Chat в разбивке по агентам, leaderboard загружается без зависаний
  • дашборд стартует, сессии с фиолетовыми бейджами, фильтр в сайдбаре работает

Known limitations

  • Стоимость недоступна — Copilot Chat не хранит данные о токенах локально (как Cursor и Kiro)
  • Active session detection не поддерживается — Copilot Chat работает внутри VS Code, не как отдельный процесс
  • Количество сообщений для больших JSON-файлов (>1МБ) оценивается по размеру файла при сканировании; точное количество доступно в detail view
  • Вариант Code - Insiders пока не сканируется (только стандартная директория Code)

@vakovalskii
Copy link
Copy Markdown
Owner

Conflicts after merging recent PRs (#165 Kilo, #177 Linux focus, #172 WSL). Please rebase on latest main.

@vakovalskii vakovalskii mentioned this pull request Apr 16, 2026
@vakovalskii
Copy link
Copy Markdown
Owner

Still conflicts. Please rebase on latest main (v7.1.0+).

@MaxRyabov MaxRyabov force-pushed the feat/copilot-agent branch from a41dd69 to b5493d5 Compare April 17, 2026 07:58
Максим Рябов added 6 commits April 17, 2026 11:03
Scan VS Code workspaceStorage for Copilot Chat sessions (JSON and JSONL
mutation format). Includes workspace-to-project mapping with disk cache,
targeted JSONL replay for request/response extraction, and integration
into loadSessions/findSessionFile/loadSessionDetail/computeSessionCost.
Add sidebar item with copilot-only filter, .tool-copilot CSS class,
calendar filter toggle, analytics label, heatmap color, and
AGENT_INSTALL entry for GitHub Copilot.
Update agent counts and tables in README.md, CLAUDE.md, ARCHITECTURE.md,
README_RU.md, and README_ZH.md. Add Copilot storage section to
ARCHITECTURE.md with session format details.
- Skip irrelevant JSONL lines (inputState, attachments) before JSON.parse
- Add disk cache for parsed Copilot session metadata
- Use peek-based extraction for large JSON files (>1MB)
- Cold scan: 46s -> 5s, warm scan: 120ms, detail 232MB: 1.1s
_computeSessionDailyBreakdown now uses parseCopilotJsonl/parseCopilotJson
for Copilot sessions instead of generic line-by-line JSONL scan that
would read entire multi-hundred-MB files without extracting any data.
Fixes leaderboard hanging on projects with large Copilot sessions.
…opilot CLI

PR vakovalskii#167 adds Copilot CLI support with tool: 'copilot'. Our implementation
covers Copilot Chat (VS Code extension) — a different agent with different
storage format. Rename to 'copilot-chat' so both can coexist.
@MaxRyabov MaxRyabov force-pushed the feat/copilot-agent branch from b5493d5 to 109da75 Compare April 17, 2026 08:08
@MaxRyabov
Copy link
Copy Markdown
Author

Rebased on latest main (v7.2.3). All conflicts resolved — Kilo, WSL, Linux focus, collapse/expand, analytics sub-tabs are preserved alongside Copilot Chat additions.

Verified locally:

  • node -c passes for all 5 source files (bin/cli.js, data.js, server.js, terminals.js, html.js)
  • node bin/cli.js version → 7.2.3
  • node bin/cli.js help → OK
  • 322 copilot-chat sessions loaded (both .json and .jsonl formats)
  • Detail loading works for both formats (27 msgs from JSON, 23 from JSONL)
  • computeSessionCost() → 0 (expected, no local token data)
  • getLeaderboardStats() → 339ms, copilot-chat appears in agents breakdown
  • Dashboard starts cleanly, sessions visible with purple badges, sidebar filter works

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: добавить поддержку GitHub Copilot Chat агента

2 participants