Repository navigation
Conversation
…he#8808) * feat: Add claude code metrics data integration (cherry picked from commit 78fd47d9e7647ff3ac8b886b2ddb45f1df55e2b4) (cherry picked from commit fa69cf9ec0fa0db6aa5fb0aec2e5ca2796355ffd) (upstream) story: XPL-551: Add license headers (cherry picked from commit a12ece8c1ca65ff27acc14d4630ac3d404d51ce8) * feat: Fix header validation issues, migrations and tests * feat: Update plugin table tests * feat: Update claude_code unit tests --------- Co-authored-by: tamas.albert <tamas.laczkoalbert@concentrix.com> Co-authored-by: Eldrick Wega <eldrick.wega@outlook.com>
4 tasks done
ubaidkhalidarbisoft
approved these changes
Oct 2, 2026
9 tasks done
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
Brings upstream Apache DevLake's
claude_codeplugin into the fork as upstream ships it. It is phase 1a of the Claude convergence plan (claude-code-upstream-convergence-plan.md). The plugin lands dormant: no connections, no blueprints and no domain writes. Its domain layer, the Enterprise analytics gaps and the upstream bug fixes come in phase 2. Retiring ourclaude(Claude Platform) plugin is the separate PR 1b.Upstream cherry-picks
163540a21(feature: Add claude code metrics data integration apache/devlake#8808): the full plugin.analytics/users,/summaries,/apps/chat/projects,/skillsand/connectors.7a51debd6(feat(claude_code): support Claude Console organizations via usage_report/claude_code endpoint apache/devlake#8978): Console Admin keys (sk-ant-admin01-…). These readusage_report/claude_code; every other key uses Enterpriseanalytics/*.feat(claude-code): …, because upstream'sfeature:prefix fails our commit-msg check.github.com/apache/incubator-devlakemodule as is;Conflicts resolved toward ours
5 files conflicted. Every resolution keeps our behaviour:
table_info_test.go,api/connection/index.ts,types/connection.ts: union of both sides. Ourclaude,codexandcursorentries and ourorg/loginUrl/workspaceSlug/… fields stay. Upstream'sclaude_code,customHeadersandadminApiKeyare added.table_info_test.gois also gofmt'd, which moves upstream'sclaudeCodeimport into order.features/connections/utils.ts: ours, pluscustomHeaders.connection-form/index.tsx: ours in all 3 hunks. Upstream's side would have replaced the shared connection form for every plugin with its own refactor. That would revert our fixes for:Custom headers through our connection form
Upstream's Claude Code form lets you set custom headers (for middleware auth). Our form only sends whitelisted fields, so without this commit the headers would be silently dropped. The change:
customHeaderstoCONNECTION_FORM_FIELDS, so they are saved.sanitizeCustomHeaderson test and save, so blank header rows are dropped.undefinedand is omitted.Dashboards archived
Upstream's
ClaudeCodeAdoptionandClaudeCodeAdoptionByUsermove tografana/archived_dashboards/, so they are not provisioned. They show org-wide, per-user data with no project-access filtering. Phase 2 rebuilds Claude reporting on the domain layer with access filtering.Test plan
devlakeandconfig-uilocally from this branch against an existing local database withFORCE_MIGRATION=true:claude-codemigrations ran, with no errors;_tool_claude_code_*and 5_raw_claude_code_*tables, and nothing was dropped;_tool_claude_code_otel_*andai_activitiesrow counts are identical before and after.go build/go vetandgo test ./plugins/claude_code/...pass.claude_oteltests pass. So do the 4 packages with whitespace-only upstream edits (gh-copilot/models,github/tasks,jira/tasks,bitbucket/api).claude_code,claudeandclaude_otel. The fulltable_info_testneeds libgit2 1.3.0 and runs in CI.tsc, eslint and prettier pass on all changed files.customHeaderssave-payload cases pass. The 3 failing access-route tests fail identically onmain-arbisoft.Notes for reviewers
claude_codeconnections on any environment yet. Upstream stores the API key and custom headers in plaintext (noencdec). Encrypting them is the first PR of phase 2.