You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@devlake.apache.org by kl...@apache.org on 2026/08/28 07:55:47 UTC
(devlake) branch fix-ci updated (8bb16c722 -> c1f46329e)
This is an automated email from the ASF dual-hosted git repository.
klesh pushed a change to branch fix-ci
in repository https://gitbox.apache.org/repos/asf/devlake.git
omit 8bb16c722 fix(ci): lock Poetry to version 2.2.1 for Python 3.9 compatibility
add 840c72890 feat(linker): link when branch names contain issue keys (#8777)
add b68c102f2 Add codespell support with configuration and fixes (#8761)
add c4ad2cbc7 feat(q-dev): enrich logging fields, separate dashboards, add E2E tests (#8786)
add 47c681e90 fix: add SQL identifier validation to prevent SQL injection via table/column names (#8769)
add 670dcaa90 feat(q-dev): add Kiro Credits + DORA Correlation dashboard (#8792)
add 57beabec4 feat(q-dev): add AI Cost-Efficiency dashboard (#8793)
add 3a3986d95 feat(q-dev): add Multi-AI Tool Comparison dashboard (Copilot vs Kiro) (#8794)
add e5d85ea0f feat(q-dev): add Kiro AI Model ROI dashboard (#8795)
add ada151553 feat(q-dev): add Steering & Spec Mode Adoption dashboard (#8798)
add 5abf9ee6e feat(q-dev): add Developer AI Productivity Hours dashboard (#8797)
add 7941038bb feat(q-dev): add Language AI Heatmap dashboard (#8796)
add fb6f20d9f Fix/circleci column names (#8799)
add 1e6bb1dcd fix(jenkins): scope multi-branch build collection to current project (#8430) (#8781)
add f318fd90d fix: Make gh-copilot plugin database agnostic (#8779)
add c29ffc08a fix(sonarqube): increase cq_issues and cq_file_metrics project_key length to 500 (#8783)
add 17e3ea42b feat: added taiga plugin (#8755)
add 2e9cca0eb fix(gh-copilot): skip empty report responses for dates without Copilot data (#8804)
add 887257baf fix(docker): pin Poetry to 2.2.1 for Python 3.9 compatibility (#8735)
add caa5a6ac7 fix(linker): scope clearHistoryData to current project only (#8814) (#8815)
add ad698c5bf fix(circleci): prevent negative values when calculating circleci (#8800)
add 5fcd33990 fix: sonarqube: missing api/users/search endpoint (#8813)
add 94f7bca49 fix(argocd): extract revision from multi-source application revisions[] (#8810)
add c2b530a5c Fix/gh copilot apiversion (#8826)
add 4973be6c5 fix(github_graphql): remove stale local issue rows when an issue no longer resolves (#8820)
add adaa00857 fix: throwing on parsing for a 204 response (#8825)
add bfebec36d fix(asana): use float8 instead of double for PostgreSQL compatibility (#8837)
add 9ae723f29 Fix/8787 cancel pipeline keeps running (#8832)
add d7d5fa6e3 fix(bitbucket): handle microsecond precision timestamps in PR extractor (#8828)
add a6335ae10 fix(asana): remove MySQL-specific gorm type tags for PostgreSQL compatibility (#8836)
add bff3bfb31 fix(docker): Add BUILDPLATFORM to config-ui builder stage and update node version (#8845)
add c5905f75f fix(github): bisect adaptive time windows for workflow runs 40k pagination cap (#8844)
add c8a7711c2 fix(sonarqube): use filter parameter for project search (#8849)
add f72868cd3 fix: disable API client caching for GitHub App connections (#8850)
add 1d21f1997 fix(ci): pin docker/* actions in build.yml to ASF-approved SHAs (#8852)
add 19ee801d9 feat(auth): implement oidc authentication and session management (#8854)
add 49959f614 fix(github_graphql): keep requestedIssues out of GraphQL query in Collect Issues (#8855)
add 0e16249ce fix(server): use interface{} for store handler swag annotations (#8859)
add 16c5b928c fix(argoCD): avoid duplication of latest deployments (#8862)
add 3472cc364 fix(azuredevops_go): handle empty/invalid timeline responses for YAML… (#8839)
add ac73e27d4 feat(ui): implement dark theme and refactor color usage (#8865)
add e26c61b92 feat(github): Add incremental data collection (#8858)
add 78cb8d79b fix(ipc): increase scanner buffer size to 5MB to handle large outputs (#8841)
add a6232fbe7 fix(ci): replace Poetry runtime setup with uv (#8830)
add 420e494b4 feat(docker): add Dockerfile.local for local development and fix migrations (#8866)
add aff3487a8 feat(rootly): add rootly integration plugin (#8877)
add ecb703c8e fix: Multiple credential-leak paths in gitextractor (#8872)
add c413ebc6c fix(asana): implement encryption for Asana connection token (#8873)
add f03b83df5 fix: harden dbt pipeline inputs (#8878)
add c057341d1 feat(push-api): implement push API with authentication and validation logic (#8879)
add 7e9a2aec6 fix: require secret for forwarded user auth (#8880)
add c1b617f60 chore: upgrade go to 1.26 (#8875)
add 048adfb4e Allow Rootly plugin to collect incidents without service identifiers assigned (#8892)
add 163540a21 feature: Add claude code metrics data integration (#8808)
add 4ac2c4256 fix(bitbucket): handle API errors in workspace listing and guard empty pipelineId (#8885)
add ad202276a feat: require authentication for /proceed-db-migration endpoint if auth was enabled (#8893)
add 92fbab8c0 fix(dora): count failed deployments, not incidents, in Change Failure Rate (#8890)
add 5e9dfb8b8 feat(encryption): implement AES-GCM encryption and decryption with backward compatibility (#8895)
add 31ea53038 Grafana postgresql support (#8870)
add ecb905d7a fix(jenkins): truncate primary_view to fit varchar(255) column (#8899)
add 8a3af1f97 fix: Copilot plugin - add backfill time window to ensure data consistency (#8811)
add 9e659abdb feat(tempo): add Jira Tempo Timesheets plugin (#8884)
add a9650e4ca feat(gh-copilot): close Copilot metrics parity gaps (#8889)
add 144c2b7f8 fix(plugin-circleci): populate workflow id for unfinished-job collection (#8907) (#8912)
add 61d66a133 Fix/graphql client token refresh (#8791)
add f4888416e fix(github): create domain accounts for non-committer authors (#8886) (#8894)
add 65cbe82b0 fix(webhook): set resolution_date and lead_time_minutes on incident close (#8919)
add cec4286c0 feat: add Linear (linear.app) data source plugin (#8900)
add 33f7d340f fix(ui): guard against empty plugin prop on connection creation page (#8918)
add 50010e093 fix(jira): rename "Jira Server" to "Jira Data Center" in UI labels (#8903)
add 55911c8a7 docs: Update README.md to remove incubator wording (#8936)
add 46c5c5106 fix(grafana): use account email instead of user email in Work Logs Code Commits panel (#8925)
add b9b0373d2 feat(webhook): Issues and PullRequests new endpoint by projectName (#8915)
add 48e71f50a fix(server): remove auth from proceed-db-migration endpoint (#8930)
add 57b2641eb fix(security): update nginx-unprivileged to 1.30.3 (#8940)
add f2de2dcb1 feat(webhook): allow closing incidents via request body instead of url (#8939)
add bcfdfb69d fix(circleci): skip HTTP 500 on workflow/job collectors and filter by time range (#8956)
add 88c14a2b2 fix(authentication): feature should be disabled by default (#8951)
add 0e96ba111 fix: recover create a new connection action (#8952)
add c43696ab5 fix(azuredevops): treat 204 No Content as graceful skip in timeline collector (#8958)
add 6f2ee9d15 Add Copilot team adoption dashboards (#8966)
add 15e34bb80 fix(jira): collect issues via search API to avoid kanban sub-filter exclusion (#8931)
add edb9b0d99 fix(opsgenie): align access-rights error with docs (#8976)
add 7a51debd6 feat:allow claude organization support (#8978)
add ee919fa66 fix: docker file path in build-grafana-image target (#8979)
add cd7bebf64 feat(jira): Allow extra JQL when querying JIRA board (#8972)
add e7ac139f9 refactor: deprecating dbt plugin (#8971)
add 50f664e49 feat(auth): add OIDC allowlist restrictions (#8984)
add 52278b0a2 fix(bitbucket): migrate off cross-workspace APIs removed by CHANGE-2770 (#8916)
add f93895f32 fix(gh-copilot): preserve hyphenated enterprise slugs (#8935)
add 082a40242 fix(dora): use two-phase deployment lookup to prevent first-deploymen… (#8942)
add 3a4333eb6 fix(python): add missing composite primary keys in domain_layer/code.py (#8957)
add 1cbd8357e feat(sonarqube): collect historical project metrics and Grafana trends (#8983)
add eaf86ce57 build: pin swag CLI and oauth2-proxy, ignore build artifacts in docker context (#8989)
add 060af3a9c fix(config-ui): explicitly set initialValues for plugins missing it (#8995)
add b34d761c3 fix(sonarqube): support long issue code block components (#8986)
add b4b53b8a6 fix(domain): migrate issue component to text (#8987)
add 27c771a89 fix(jira): change _tool_jira_issues.fix_versions column to text (#8988)
add 9e8ca1b8d feat(grafana): upgrade dashboards and provisioning for Grafana 13 (#8992)
add b70ac93a8 chore(docker): bump PostgreSQL to 18.1 and MySQL to 8.4.10 (#9003)
add c4a15bf89 fix(bitbucket): paginate remote-scopes API to return all repositories (#8999) (#9004)
add 20179fa52 Fix webhook authorization when AUTH_ENABLED=true (#9008)
add 21ea61c30 feat(jira): persist Sprint Report snapshot for accurate committed/completed velocity (#8967) (#9010)
add 7f7cf09b0 fix(sonarqube): tolerate missing migration indexes (#9012)
add 2127e8492 chore(config-ui): modernize frontend toolchain and framework stack (#9006)
add 73fa07d97 feat(clickup): add ClickUp data-source plugin (folder-scope boards, sprints, DORA) (#9009)
add e217c670a fix(dashboards): fix string team/user ID filtering in MySQL dashboards (#8926)
add 2cfe6308c fix(config-ui): improve copy text contrast in dark mode (#9020)
add 2d4834ca3 fix(org): resolve API handlers at request time to survive late plugin init (#9022)
add 0194a41b1 feat(incidentio): add incident.io data source plugin (#9023)
add 705280d08 feat(gh-copilot): add AI credit usage billing metrics and fix report-body double-read (#9019)
add 14a4e5bcd feat(jira): add Atlassian API Gateway authentication mode (#9024)
add e3a42717b feat(jira): add JIRA_SKIP_UNPARSEABLE_ISSUES to survive unparseable issue pages (#9026)
add 5eee167f3 fix(customize): skip rows with a missing raw record instead of ending the scan (#9027)
add 352f3b5ef fix(jira): add missing _raw_data_* columns to _tool_jira_sprint_reports (#9015)
add b7e5efaf1 chore(python): bump Python runtime from 3.9 to 3.11 (#9005)
add 6ea77c926 fix(core): replace constraints.Unsigned with local interface in archived base (#9032)
add 361455ef0 fix(sonarqube): correct aggregate coverage formula in Grafana dashboards (#8997)
add d323c1697 feat(github): warn when adding a repo already scoped on another connection (#9034)
add 7df8ba0c8 build(deps): bump libgit2 1.3 → 1.5.0 and git2go v33 → v34 (#9028)
add 82cab8b0b refactor(api): rename GetURIStringPointer to ResolveRequestURI and reject absolute relativePath (#9043)
add b005e6ffb fix(gitlab): always re-collect MR commits regardless of MR updated_at… (#8959)
add ea8c25c6c fix(gitlab): map WorkInProgress to IsDraft in MR converter (#8982)
add 62612a82f build(deps): refresh container images and frontend dependencies (#9044)
add 4b75a1ca4 fix(gitlab): use diff_stats instead of changes_count for correct MR s… (#8928)
add 79b262bca build(deps): bump mockery v2.53.6 → v3.7.2 (#9029)
add 7e90d3628 fix(jira): stop the changelog convertor hiding unconverted items forever (#9042)
add 739771bd2 feat(github): collect GitHub issue fields and map them onto domain issues (#9038)
add b24379c46 feat(dora): exclude bot/automation accounts from PR Pickup Time calcu… (#9000)
add 092b8953c fix(gitlab): add missing commit_updated_at column used by MR incremental filter (#9046)
add 83b457eac feat(gitlab,bitbucket): warn when adding a repo already scoped on another connection (#9047)
add d08864432 fix(org): match user and account emails case-insensitively (#9051)
add 5b3a51f77 feat(azuredevops): add Azure DevOps Server (On-Premises) support (#9014) (#9014)
add 3b7092b7d fix(jira): stop false-positive 'field name is duplicated' warnings across boards (#9053)
add 0417eee3b refactor(deps): drop lib/pq and bump pgx/v5 to v5.10.0 (#9031)
add 5cd167183 build(deps): bump x/crypto, x/net, x/oauth2, jwt/v5, logrus and protobuf (#9054)
add a9853911a chore(deps): bump CI Go bootstrap to 1.26.6 (#9056)
add fe357c041 build(deps): bump go-git v5.12.0 -> v5.19.2 and cover the go-git collector with tests (#9055)
add b34e53a5d feat(jira): add projectname support for extra jql (#9035)
add 046a4691b build(deps): refresh Python 3.11 Poetry locks for pydevlake/azuredevops/fakeplugin (#9060)
add c5a4fb6dc fix(org): match account names and logins case-insensitively (#9064)
add ca79876d6 fix: widen unbounded GitHub and CI/CD string columns (#9063)
add c9721ee11 fix(jira): honor EpicKeyField when extracting issues (#9067)
add 6da478b54 fix(server,asana): surface real /proceed-db-migration error instead of bare 500 (#9068)
add c2b0b171d build(ci): consolidate database, builder and mockery pins (#9069)
add d4b31f1ed build(deps): maintain Go dependencies and migrate mapstructure v2 (#9061)
add 065206eed feat(kiro): add core models and report parser (#9073)
add 825a81ca6 feat: add Kiro commit attribution helper (#9074)
new c1f46329e fix: build image failed
This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version. This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:
* -- * -- B -- O -- O -- O (8bb16c722)
\
N -- N -- N refs/heads/fix-ci (c1f46329e)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.github/workflows/config-ui.yml => .codespellrc | 32 +-
.devcontainer/Dockerfile | 4 +-
.devcontainer/devcontainer.json | 2 +-
.devcontainer/docker-compose.yml | 2 +-
.github/actions/auto-cherry-pick/action.yml | 2 +-
.github/workflows/NOTICE-year-check.yml | 2 +-
.github/workflows/asf-header-check.yml | 2 +-
.github/workflows/auto-cherry-pick.yml | 2 +-
.github/workflows/build-builder.yml | 6 +-
.github/workflows/build.yml | 69 +-
...int.yml => codespell.yml.action-blocked-by-asf} | 26 +-
.github/workflows/commit-msg.yml | 4 +-
.github/workflows/config-ui.yml | 6 +-
.github/workflows/golangci-lint.yml | 16 +-
.github/workflows/grafana-dashboards-check.yml | 2 +-
.github/workflows/migration-script-lint.yml | 2 +-
.github/workflows/stale.yml | 2 +-
.github/workflows/test-e2e.yml | 20 +-
.github/workflows/test.yml | 10 +-
.github/workflows/yaml-lint.yml | 2 +-
Makefile | 2 +-
README.md | 12 +-
backend/.dockerignore | 24 +
backend/.golangci.yaml | 542 +-
backend/.mockery.core.yml | 38 +
.../yaml-lint.yml => backend/.mockery.helpers.yml | 38 +-
backend/Dockerfile | 22 +-
backend/Dockerfile.local | 92 +
backend/Makefile | 16 +-
backend/core/dal/identifier.go | 50 +
backend/core/migration/linter/main.go | 2 +-
backend/core/models/common/iso8601time.go | 4 +
backend/core/models/common/iso8601time_test.go | 16 +-
backend/core/models/domainlayer/README.md | 2 +-
.../domainlayer/codequality/cq_file_metrics.go | 2 +-
.../codequality/cq_issue_code_blocks.go | 2 +-
.../models/domainlayer/codequality/cq_issues.go | 2 +-
.../cq_project_metrics_history.go} | 32 +-
.../core/models/domainlayer/crossdomain/account.go | 4 +-
.../domainlayer/devops/cicd_deployment_commit.go | 6 +-
.../models/domainlayer/devops/cicd_pipeline.go | 2 +-
.../core/models/domainlayer/devops/cicd_release.go | 4 +-
.../core/models/domainlayer/devops/cicd_scope.go | 2 +-
.../core/models/domainlayer/devops/cicd_task.go | 2 +-
.../domainlayer/devops/text_columns_test.go} | 47 +-
.../models/domainlayer/domaininfo/domaininfo.go | 1 +
backend/core/models/domainlayer/ticket/incident.go | 2 +-
.../ticket/incident_text_column_test.go} | 18 +-
backend/core/models/domainlayer/ticket/sprint.go | 19 +-
backend/core/models/locking.go | 2 +-
...60317_increase_cq_issues_project_key_length.go} | 21 +-
.../20260426_add_auth_sessions.go} | 35 +-
.../20260629_change_issue_component_to_text.go} | 20 +-
...20260629_change_issue_component_to_text_test.go | 82 +
...ange_cq_issue_code_blocks_component_to_text.go} | 21 +-
.../20260707_add_cq_project_metrics_history.go} | 23 +-
.../20260720_add_is_bot_to_accounts.go} | 29 +-
.../20260722_add_sprint_velocity_fields.go} | 26 +-
...0260818_add_blueprint_id_index_to_pipelines.go} | 30 +-
.../20260819_expand_text_columns.go} | 39 +-
.../20260819_expand_text_columns_test.go | 88 +
.../core/models/migrationscripts/archived/base.go | 11 +-
.../archived/cq_project_metrics_history.go} | 31 +-
backend/core/models/migrationscripts/register.go | 9 +
backend/core/models/pipeline.go | 2 +-
backend/core/plugin/plugin_blueprint.go | 4 +-
backend/core/plugin/plugin_task.go | 3 +-
backend/core/plugin/plugin_utils.go | 66 +-
backend/core/plugin/plugin_utils_test.go | 69 +
backend/core/runner/db.go | 6 +-
backend/core/runner/mysql_dialector.go | 111 +
backend/core/runner/run_task.go | 22 +-
backend/core/utils/ipc.go | 2 +
backend/core/utils/network_helper.go | 5 +-
backend/core/utils/network_helper_test.go | 2 +-
backend/go.mod | 75 +-
backend/go.sum | 190 +-
backend/helpers/e2ehelper/data_flow_tester.go | 2 +-
backend/helpers/e2ehelper/migration_db.go | 126 +
backend/helpers/migrationhelper/migrationhelper.go | 43 +-
.../migrationhelper/migrationhelper_test.go | 16 +-
.../oidchelper/authorization.go} | 29 +-
backend/helpers/oidchelper/authorization_test.go | 119 +
backend/helpers/oidchelper/config.go | 255 +
backend/helpers/oidchelper/config_test.go | 134 +
backend/helpers/oidchelper/cookie.go | 63 +
backend/helpers/oidchelper/provider.go | 126 +
backend/helpers/oidchelper/session.go | 85 +
backend/helpers/oidchelper/session_test.go | 86 +
backend/helpers/oidchelper/state.go | 118 +
backend/helpers/oidchelper/state_test.go | 110 +
backend/helpers/oidchelper/wif.go | 77 +
backend/helpers/oidchelper/wif_test.go | 109 +
.../helpers/pluginhelper/api/api_async_client.go | 2 +-
backend/helpers/pluginhelper/api/api_client.go | 15 +-
.../helpers/pluginhelper/api/batch_save_divider.go | 4 +-
.../pluginhelper/api/data_convertor_stateful.go | 2 +-
.../api/ds_remote_api_scope_list_helper.go | 2 +-
.../pluginhelper/api/graphql_async_client.go | 70 +-
.../helpers/pluginhelper/api/graphql_collector.go | 18 +-
.../pluginhelper/api/graphql_collector_test.go} | 16 +-
backend/helpers/pluginhelper/api/iterator.go | 4 +-
backend/helpers/pluginhelper/api/mapstructure.go | 2 +-
.../helpers/pluginhelper/api/model_api_helper.go | 4 +-
.../pluginhelper/api/scope_generic_helper.go | 3 +
.../pluginhelper/api/subtask_state_manager.go | 55 +
.../pluginhelper/api/subtask_state_manager_test.go | 169 +
.../helpers/pluginhelper/api/worker_scheduler.go | 4 +-
backend/helpers/pluginhelper/csv_file_test.go | 4 +-
backend/helpers/srvhelper/model_service_helper.go | 2 +-
backend/helpers/srvhelper/scope_service_helper.go | 3 +
.../helpers/srvhelper/scope_service_helper_test.go | 2 +-
backend/helpers/unithelper/table_info_checker.go | 49 +-
backend/helpers/utils/mapstructure.go | 2 +-
backend/impls/context/default_basic_res.go | 2 +-
backend/impls/context/default_exec_context.go | 4 +
backend/impls/dalgorm/dalgorm.go | 16 +-
backend/impls/logruslog/logger.go | 4 +-
backend/plugins/ae/api/connection.go | 2 +-
.../20260331_add_repo_url_to_sync_operations.go} | 31 +-
.../argocd/models/migrationscripts/register.go | 1 +
backend/plugins/argocd/models/sync_operation.go | 1 +
.../plugins/argocd/tasks/application_extractor.go | 39 +-
.../argocd/tasks/sync_operation_convertor.go | 8 +-
.../argocd/tasks/sync_operation_extractor.go | 180 +-
.../argocd/tasks/sync_operation_extractor_test.go | 168 +
backend/plugins/asana/models/connection.go | 2 +-
.../20250212_add_task_transformation_fields.go | 4 +-
.../20260509000001_encrypt_connection_token.go | 103 +
.../asana/models/migrationscripts/register.go | 1 +
.../azuredevops_go/api/azuredevops/client.go | 48 +-
.../api/azuredevops/client_onprem_test.go | 107 +
.../plugins/azuredevops_go/api/blueprint_v200.go | 6 +-
.../plugins/azuredevops_go/api/connection_api.go | 49 +-
.../plugins/azuredevops_go/api/remote_helper.go | 46 +-
.../plugins/azuredevops_go/models/connection.go | 38 +-
.../azuredevops_go/models/connection_test.go | 144 +
.../20260722_add_endpoint_to_azuredevops.go} | 33 +-
.../20260726_add_username_to_azuredevops.go} | 33 +-
.../models/migrationscripts/archived/connection.go | 1 +
.../models/migrationscripts/register.go | 2 +
.../azuredevops_go/tasks/account_collector.go | 5 +
.../azuredevops_go/tasks/ci_cd_build_collector.go | 2 +-
.../tasks/ci_cd_timeline_records_collector.go | 6 +-
.../azuredevops_go/tasks/commit_collector.go | 2 +-
.../plugins/azuredevops_go/tasks/pr_collector.go | 2 +-
.../azuredevops_go/tasks/pr_commit_collector.go | 2 +-
backend/plugins/azuredevops_go/tasks/shared.go | 34 +-
.../plugins/azuredevops_go/tasks/shared_test.go | 78 +
backend/plugins/bamboo/api/connection_api.go | 10 +-
backend/plugins/bamboo/models/plan.go | 2 +-
backend/plugins/bamboo/tasks/shared.go | 2 +-
backend/plugins/bitbucket/api/blueprint_v200.go | 5 +-
.../plugins/bitbucket/api/connection_api_test.go | 12 +-
backend/plugins/bitbucket/api/remote_api.go | 140 +-
backend/plugins/bitbucket/api/remote_api_test.go | 83 +
.../plugins/bitbucket/api/scope_duplicates_api.go | 200 +
.../bitbucket/api/scope_duplicates_api_test.go | 114 +
.../bitbucket/e2e/snapshot_tables/accounts.csv | 4 +-
backend/plugins/bitbucket/impl/impl.go | 3 +
backend/plugins/bitbucket/models/repo.go | 12 +-
backend/plugins/bitbucket/tasks/api_common.go | 5 +-
backend/plugins/bitbucket/tasks/api_common_test.go | 53 +
backend/plugins/bitbucket/tasks/pr_extractor.go | 9 +-
.../plugins/bitbucket_server/api/blueprint_v200.go | 5 +-
backend/plugins/circleci/circleci | Bin 0 -> 39212626 bytes
backend/plugins/circleci/e2e/incremental_test.go | 154 +
backend/plugins/circleci/e2e/job_collector_test.go | 82 +
.../_raw_circleci_api_jobs_incremental.csv | 73 +
.../e2e/raw_tables/_raw_circleci_api_workflows.csv | 2 +-
...=> _raw_circleci_api_workflows_incremental.csv} | 44 -
.../e2e/snapshot_tables/_tool_circleci_jobs.csv | 20 +-
.../_tool_circleci_jobs_incremental.csv | 7 +
.../snapshot_tables/_tool_circleci_pipelines.csv | 22 +-
.../snapshot_tables/_tool_circleci_workflows.csv | 2 +-
...sv => _tool_circleci_workflows_incremental.csv} | 4 -
.../e2e/snapshot_tables/cicd_pipelines.csv | 20 +-
backend/plugins/circleci/e2e/workflow_test.go | 2 +-
backend/plugins/circleci/models/job.go | 2 +-
.../20260322_rename_created_at_to_created_date.go | 71 +
.../circleci/models/migrationscripts/register.go | 1 +
backend/plugins/circleci/models/pipeline.go | 4 +-
backend/plugins/circleci/models/workflow.go | 2 +-
backend/plugins/circleci/tasks/job_collector.go | 32 +-
backend/plugins/circleci/tasks/job_converter.go | 4 +-
backend/plugins/circleci/tasks/shared.go | 13 +-
.../circleci/tasks/shared_test.go} | 64 +-
.../plugins/circleci/tasks/workflow_collector.go | 10 +-
.../plugins/circleci/tasks/workflow_converter.go | 6 +-
.../plugins/circleci/tasks/workflow_extractor.go | 10 +-
.../{tapd => claude_code}/api/blueprint_v200.go | 59 +-
backend/plugins/claude_code/api/connection.go | 113 +
backend/plugins/claude_code/api/connection_test.go | 135 +
backend/plugins/claude_code/api/init.go | 58 +
backend/plugins/claude_code/api/remote_api.go | 113 +
backend/plugins/claude_code/api/scope.go | 53 +
backend/plugins/claude_code/api/scope_config.go | 53 +
backend/plugins/claude_code/api/test_connection.go | 70 +
backend/plugins/claude_code/claude_code.go | 45 +
.../impl/connection_helper.go} | 14 +-
backend/plugins/claude_code/impl/impl.go | 170 +
.../models/activity_summary.go} | 30 +-
backend/plugins/claude_code/models/chat_project.go | 47 +
backend/plugins/claude_code/models/connection.go | 203 +
.../plugins/claude_code/models/connection_test.go | 84 +
.../models/connector_usage.go} | 29 +-
.../models/migrationscripts/20260309_initialize.go | 84 +
.../20260319_add_custom_headers.go | 58 +
.../20260319_replace_analytics_tables.go | 207 +
.../models/migrationscripts/register.go | 7 +-
.../diffline.go => claude_code/models/models.go} | 33 +-
backend/plugins/claude_code/models/scope.go | 102 +
.../claude_code/models/scope_config.go} | 25 +-
.../models/skill_usage.go} | 29 +-
.../plugins/claude_code/models/user_activity.go | 71 +
.../claude_code/service/connection_test_helper.go | 115 +
.../tasks/activity_summary_collector.go} | 85 +-
.../tasks/activity_summary_extractor.go | 99 +
.../tasks/api_client.go | 18 +-
.../tasks/chat_project_collector.go} | 83 +-
.../claude_code/tasks/chat_project_extractor.go | 115 +
.../plugins/claude_code/tasks/collector_utils.go | 195 +
.../claude_code/tasks/collector_utils_test.go | 55 +
.../tasks/connector_usage_collector.go} | 87 +-
.../claude_code/tasks/connector_usage_extractor.go | 103 +
.../register.go => claude_code/tasks/options.go} | 16 +-
.../{gh-copilot => claude_code}/tasks/register.go | 22 +-
.../tasks/retry_after.go | 0
.../tasks/skill_usage_collector.go} | 82 +-
.../claude_code/tasks/skill_usage_extractor.go | 103 +
backend/plugins/claude_code/tasks/subtasks.go | 105 +
.../register.go => claude_code/tasks/task_data.go} | 15 +-
.../tasks/user_activity_collector.go} | 97 +-
.../claude_code/tasks/user_activity_extractor.go | 285 +
.../tasks/user_activity_extractor_test.go | 53 +
backend/plugins/clickup/README.md | 92 +
.../{tapd => clickup}/api/blueprint_v200.go | 41 +-
backend/plugins/clickup/api/connection_api.go | 175 +
backend/plugins/clickup/api/init.go | 51 +
backend/plugins/clickup/api/remote_api.go | 170 +
backend/plugins/clickup/api/scope_api.go | 105 +
backend/plugins/clickup/api/scope_config_api.go | 106 +
backend/plugins/clickup/clickup.go | 43 +
backend/plugins/clickup/impl/impl.go | 225 +
.../{asana => clickup}/models/connection.go | 51 +-
backend/plugins/clickup/models/folder.go | 72 +
backend/plugins/clickup/models/list.go | 51 +
.../migrationscripts/20260720_add_init_tables.go} | 30 +-
.../migrationscripts/20260722_add_folder_scope.go | 102 +
.../20260723_add_list_type_patterns.go | 56 +
.../models/migrationscripts/archived/models.go | 113 +
.../models/migrationscripts/register.go | 3 +-
backend/plugins/clickup/models/scope_config.go | 79 +
backend/plugins/clickup/models/task.go | 54 +
.../account.go => clickup/models/task_comment.go} | 31 +-
.../clickup/models/user.go} | 23 +-
.../task_data.go => clickup/tasks/api_client.go} | 40 +-
backend/plugins/clickup/tasks/folder_convertor.go | 93 +
backend/plugins/clickup/tasks/list_collector.go | 111 +
backend/plugins/clickup/tasks/list_extractor.go | 102 +
backend/plugins/clickup/tasks/shared.go | 254 +
backend/plugins/clickup/tasks/shared_test.go | 254 +
backend/plugins/clickup/tasks/sprint_convertor.go | 124 +
backend/plugins/clickup/tasks/task_collector.go | 137 +
backend/plugins/clickup/tasks/task_convertor.go | 254 +
.../plugins/clickup/tasks/task_convertor_test.go | 55 +
backend/plugins/clickup/tasks/task_data.go | 46 +
backend/plugins/clickup/tasks/task_extractor.go | 196 +
.../tasks/user_collector.go} | 59 +-
backend/plugins/clickup/tasks/user_convertor.go | 88 +
backend/plugins/clickup/tasks/user_extractor.go | 83 +
backend/plugins/customize/impl/impl.go | 2 +-
backend/plugins/customize/service/service.go | 2 +-
.../customize/tasks/customized_fields_extractor.go | 56 +-
.../tasks/customized_fields_extractor_test.go | 150 +
backend/plugins/dbt/dbt.go | 1 -
backend/plugins/dbt/impl/impl.go | 19 +-
backend/plugins/dbt/tasks/convertor.go | 1 +
backend/plugins/dbt/tasks/git.go | 24 +-
backend/plugins/dbt/tasks/options.go | 132 +
backend/plugins/dbt/tasks/options_test.go | 110 +
backend/plugins/dbt/tasks/task_data.go | 3 +
backend/plugins/dora/api/data.go | 6 +-
.../change_lead_time/cicd_deployment_commits.csv | 3 +-
.../e2e/change_lead_time/project_pr_metrics.csv | 1 +
.../e2e/change_lead_time/pull_request_comments.csv | 1 +
.../e2e/change_lead_time/pull_request_commits.csv | 1 +
.../dora/e2e/change_lead_time/pull_requests.csv | 1 +
.../dora/tasks/change_lead_time_calculator.go | 56 +-
.../_tool_copilot_enterprise_ai_credit_usage.csv | 4 +
.../_tool_copilot_enterprise_daily_metrics.csv | 6 +-
.../_tool_copilot_org_ai_credit_usage.csv | 4 +
.../snapshot_tables/_tool_copilot_seats.csv | 6 +-
.../_tool_copilot_user_ai_credit_usage.csv | 4 +
.../models/enterprise_ai_credit_usage.go | 56 +
.../gh-copilot/models/enterprise_metrics.go | 48 +-
.../models/migrationscripts/20250100_initialize.go | 4 +-
.../20260116_add_name_fields_to_scopes.go | 4 +-
.../migrationscripts/20260121_add_scope_configs.go | 2 +-
.../20260527_add_copilot_metrics_gaps.go | 153 +
.../20260708_add_ai_credit_usage_metrics.go | 162 +
...260731_fix_ai_credit_usage_breakdown_columns.go | 98 +
.../gh-copilot/models/migrationscripts/register.go | 3 +
backend/plugins/gh-copilot/models/models.go | 6 +
backend/plugins/gh-copilot/models/models_test.go | 38 +-
.../gh-copilot/models/org_ai_credit_usage.go | 53 +
backend/plugins/gh-copilot/models/scope_test.go | 2 +-
backend/plugins/gh-copilot/models/seat.go | 5 +
.../gh-copilot/models/user_ai_credit_usage.go | 52 +
backend/plugins/gh-copilot/models/user_metrics.go | 15 +-
backend/plugins/gh-copilot/models/user_team.go | 45 +
.../register.go => gh-copilot/service/api_path.go} | 13 +-
.../gh-copilot/service/api_path_test.go} | 18 +-
.../gh-copilot/service/connection_test_helper.go | 6 +-
...metrics_collector.go => ai_credit_collector.go} | 76 +-
.../gh-copilot/tasks/ai_credit_extractor.go | 194 +
backend/plugins/gh-copilot/tasks/api_client.go | 4 +-
.../plugins/gh-copilot/tasks/api_client_test.go | 5 +
.../register.go => gh-copilot/tasks/api_path.go} | 13 +-
.../gh-copilot/tasks/api_path_test.go} | 18 +-
.../tasks/enterprise_metrics_collector.go | 49 +-
.../tasks/enterprise_metrics_extractor.go | 100 +-
.../gh-copilot/tasks/metrics_collector_test.go | 81 +-
.../plugins/gh-copilot/tasks/metrics_extractor.go | 46 +
.../gh-copilot/tasks/org_metrics_collector.go | 24 +-
backend/plugins/gh-copilot/tasks/register.go | 4 +
.../gh-copilot/tasks/report_download_helper.go | 143 +-
backend/plugins/gh-copilot/tasks/seat_collector.go | 4 +-
backend/plugins/gh-copilot/tasks/seat_extractor.go | 7 +
backend/plugins/gh-copilot/tasks/subtasks.go | 34 +
.../gh-copilot/tasks/user_metrics_collector.go | 85 +-
.../gh-copilot/tasks/user_metrics_extractor.go | 43 +-
...etrics_collector.go => user_teams_collector.go} | 42 +-
.../gh-copilot/tasks/user_teams_extractor.go | 93 +
.../models/migrationscripts/archived/connection.go | 2 +-
backend/plugins/gitextractor/README.md | 8 +-
backend/plugins/gitextractor/models/diffline.go | 2 +-
.../plugins/gitextractor/parser/clone_gitcli.go | 106 +-
backend/plugins/gitextractor/parser/repo_gogit.go | 12 +-
.../plugins/gitextractor/parser/repo_gogit_test.go | 122 +
.../plugins/gitextractor/parser/repo_libgit2.go | 2 +-
backend/plugins/github/api/blueprint_v200.go | 5 +-
backend/plugins/github/api/connection_api.go | 2 +-
backend/plugins/github/api/scope_duplicates_api.go | 205 +
.../github/api/scope_duplicates_api_test.go | 114 +
backend/plugins/github/e2e/account_test.go | 33 +
.../plugins/github/e2e/issue_field_value_test.go | 95 +
.../_raw_github_api_issue_field_values.csv | 9 +
.../e2e/raw_tables/_tool_github_repo_accounts.csv | 33 +-
.../_tool_github_issue_field_values.csv | 9 +
.../plugins/github/e2e/snapshot_tables/account.csv | 1 +
.../snapshot_tables/issues_with_field_values.csv | 27 +
backend/plugins/github/impl/impl.go | 4 +
backend/plugins/github/models/account.go | 4 +-
backend/plugins/github/models/connection.go | 10 +
backend/plugins/github/models/connection_test.go | 42 +
backend/plugins/github/models/deployment.go | 6 +-
backend/plugins/github/models/issue_field_value.go | 53 +
backend/plugins/github/models/job.go | 6 +-
.../20240821_add_index_to_tool_github_jobs.go | 5 +
.../20260809_add_github_issue_fields.go | 71 +
.../20260819_expand_text_columns.go | 65 +
.../20260819_expand_text_columns_test.go | 94 +
.../github/models/migrationscripts/register.go | 2 +
backend/plugins/github/models/pr.go | 8 +-
backend/plugins/github/models/run.go | 4 +-
backend/plugins/github/models/scope_config.go | 29 +-
backend/plugins/github/models/text_columns_test.go | 57 +
backend/plugins/github/tasks/account_convertor.go | 114 +-
backend/plugins/github/tasks/account_extractor.go | 38 +-
.../plugins/github/tasks/account_org_extractor.go | 21 +-
backend/plugins/github/tasks/api_client.go | 39 +-
backend/plugins/github/tasks/cicd_job_convertor.go | 45 +-
.../github/tasks/cicd_job_convertor_test.go | 112 +-
backend/plugins/github/tasks/cicd_job_extractor.go | 19 +-
backend/plugins/github/tasks/cicd_run_collector.go | 368 +-
.../github/tasks/cicd_run_collector_test.go | 542 +
backend/plugins/github/tasks/cicd_run_convertor.go | 39 +-
backend/plugins/github/tasks/cicd_run_extractor.go | 25 +-
backend/plugins/github/tasks/comment_collector.go | 3 +-
backend/plugins/github/tasks/comment_extractor.go | 65 +-
backend/plugins/github/tasks/commit_collector.go | 3 +-
backend/plugins/github/tasks/commit_convertor.go | 46 +-
backend/plugins/github/tasks/commit_extractor.go | 60 +-
.../plugins/github/tasks/commit_stats_extractor.go | 35 +-
backend/plugins/github/tasks/event_extractor.go | 22 +-
backend/plugins/github/tasks/http_client.go | 88 +
.../github/tasks/issue_assignee_convertor.go | 40 +-
backend/plugins/github/tasks/issue_collector.go | 3 +-
.../github/tasks/issue_comment_convertor.go | 41 +-
backend/plugins/github/tasks/issue_convertor.go | 53 +-
backend/plugins/github/tasks/issue_extractor.go | 50 +-
.../plugins/github/tasks/issue_field_mapping.go | 202 +
.../github/tasks/issue_field_mapping_test.go | 91 +
.../github/tasks/issue_field_value_collector.go | 124 +
.../github/tasks/issue_field_value_extractor.go | 143 +
.../tasks/issue_field_value_extractor_test.go | 97 +
.../plugins/github/tasks/issue_label_convertor.go | 40 +-
.../plugins/github/tasks/milestone_extractor.go | 19 +-
.../plugins/github/tasks/pr_comment_convertor.go | 42 +-
.../plugins/github/tasks/pr_commit_convertor.go | 41 +-
.../plugins/github/tasks/pr_commit_extractor.go | 34 +-
backend/plugins/github/tasks/pr_convertor.go | 48 +-
backend/plugins/github/tasks/pr_extractor.go | 67 +-
backend/plugins/github/tasks/pr_issue_convertor.go | 39 +-
backend/plugins/github/tasks/pr_issue_enricher.go | 48 +-
backend/plugins/github/tasks/pr_label_convertor.go | 40 +-
.../github/tasks/pr_review_comment_collector.go | 3 +-
.../github/tasks/pr_review_comment_extractor.go | 81 +-
.../plugins/github/tasks/pr_review_convertor.go | 41 +-
.../plugins/github/tasks/pr_review_extractor.go | 58 +-
backend/plugins/github/tasks/release_convertor.go | 58 +-
backend/plugins/github/tasks/repo_convertor.go | 47 +-
backend/plugins/github/tasks/review_convertor.go | 41 +-
backend/plugins/github/token/refresh_api_client.go | 2 +-
backend/plugins/github/token/round_tripper.go | 36 +
backend/plugins/github_graphql/impl/impl.go | 51 +-
.../plugins/github_graphql/tasks/graphql_client.go | 66 +
.../github_graphql/tasks/issue_collector.go | 198 +
.../github_graphql/tasks/issue_collector_test.go | 139 +
backend/plugins/gitlab/api/scope_duplicates_api.go | 205 +
.../gitlab/api/scope_duplicates_api_test.go | 114 +
backend/plugins/gitlab/e2e/job_test.go | 2 +-
.../gitlab/e2e/snapshot_tables/pull_requests.csv | 4 +-
backend/plugins/gitlab/impl/impl.go | 3 +
.../20260812_add_mr_commit_updated_at.go} | 27 +-
.../add_additions_deletions_to_mr.go} | 26 +-
.../models/migrationscripts/archived/connection.go | 2 +-
.../gitlab/models/migrationscripts/register.go | 2 +
backend/plugins/gitlab/models/mr.go | 7 +
.../plugins/gitlab/tasks/mr_commit_extractor.go | 32 +-
backend/plugins/gitlab/tasks/mr_convertor.go | 1 +
.../plugins/gitlab/tasks/mr_detail_collector.go | 1 +
backend/plugins/gitlab/tasks/mr_extractor.go | 20 +
backend/plugins/gitlab/tasks/shared.go | 12 +-
backend/plugins/icla/api/swagger.go | 4 +-
.../{tapd => incidentio}/api/blueprint_v200.go | 39 +-
.../{opsgenie => incidentio}/api/connection_api.go | 128 +-
backend/plugins/incidentio/api/init.go | 55 +
backend/plugins/incidentio/api/remote_api.go | 155 +
backend/plugins/incidentio/api/scope_api.go | 107 +
.../api/scope_state_api.go} | 30 +-
.../register.go => incidentio/api/swagger.go} | 24 +-
backend/plugins/incidentio/e2e/incident_test.go | 108 +
.../e2e/raw_tables/_raw_incidentio_incidents.csv | 6 +
.../_tool_incidentio_incident_types.csv | 2 +
.../snapshot_tables/_tool_incidentio_incidents.csv | 4 +
.../e2e/snapshot_tables/board_issues.csv | 4 +
.../incidentio/e2e/snapshot_tables/boards.csv | 2 +
.../incidentio/e2e/snapshot_tables/issues.csv | 4 +
backend/plugins/incidentio/impl/impl.go | 187 +
.../register.go => incidentio/incidentio.go} | 26 +-
.../{asana => incidentio}/models/connection.go | 45 +-
.../incidentio/models/incident.go} | 32 +-
.../incidentio/models/incident_type.go} | 62 +-
.../migrationscripts/20260729_add_init_tables.go} | 25 +-
.../models/migrationscripts/archived/connection.go | 16 +-
.../models/migrationscripts/archived/incident.go} | 31 +-
.../migrationscripts/archived/incident_type.go} | 19 +-
.../migrationscripts/archived/scope_config.go} | 18 +-
.../models/migrationscripts/register.go | 2 +-
backend/plugins/incidentio/models/raw/incident.go | 78 +
.../models/raw/incident_type.go} | 16 +-
.../incidentio/models/scope_config.go} | 16 +-
.../incidentio/tasks/incident_type_converter.go | 81 +
.../incidentio/tasks/incident_types_collector.go | 72 +
.../incidentio/tasks/incident_types_extractor.go | 78 +
.../incidentio/tasks/incidents_collector.go | 129 +
.../incidentio/tasks/incidents_collector_test.go | 64 +
.../incidentio/tasks/incidents_converter.go | 153 +
.../incidentio/tasks/incidents_converter_test.go | 114 +
.../incidentio/tasks/incidents_extractor.go | 141 +
.../incidentio/tasks/incidents_extractor_test.go | 289 +
backend/plugins/incidentio/tasks/task_data.go | 76 +
backend/plugins/issue_trace/impl/enricher.go | 2 +-
.../tasks/issue_status_history_convertor.go | 2 +-
backend/plugins/jenkins/models/build.go | 2 +-
.../20220916_modify_jenkins_build.go | 4 +-
.../20221131_add_fullName_for_builds.go | 4 +-
.../models/migrationscripts/archived/build.go | 2 +-
backend/plugins/jenkins/models/response.go | 7 +-
backend/plugins/jenkins/tasks/build_collector.go | 11 +-
backend/plugins/jira/api/connection_api.go | 7 +-
backend/plugins/jira/api/connection_api_test.go | 144 +
.../jira/e2e/issue_changelog_board_scope_test.go | 105 +
backend/plugins/jira/e2e/migration_schema_test.go | 110 +
backend/plugins/jira/impl/impl.go | 9 +-
backend/plugins/jira/models/board.go | 1 +
.../migrationscripts/20220716_add_init_tables.go | 2 +-
.../20260611_add_sub_query_to_boards.go} | 25 +-
.../20260702_add_extra_jql_to_scope_config.go} | 30 +-
.../20260707_change_fix_versions_to_text.go} | 30 +-
.../20260722_add_sprint_report_table.go | 55 +
...260727_add_raw_data_columns_to_sprint_report.go | 65 +
.../models/migrationscripts/archived/source.go | 2 +-
.../jira/models/migrationscripts/register.go | 5 +
backend/plugins/jira/models/scope_config.go | 7 +
backend/plugins/jira/models/sprint_report.go | 64 +
.../jira/tasks/apiv2models/sprint_report.go | 73 +
.../jira/tasks/board_filter_begin_collector.go | 46 +-
.../tasks/board_filter_begin_collector_test.go | 137 +
.../jira/tasks/board_filter_end_collector.go | 23 +-
backend/plugins/jira/tasks/epic_collector_test.go | 18 +-
backend/plugins/jira/tasks/epic_extractor.go | 7 +-
.../jira/tasks/issue_changelog_convertor.go | 54 +-
.../jira/tasks/issue_changelog_convertor_test.go | 46 +
backend/plugins/jira/tasks/issue_collector.go | 251 +-
backend/plugins/jira/tasks/issue_collector_test.go | 372 +
backend/plugins/jira/tasks/issue_extractor.go | 20 +-
backend/plugins/jira/tasks/issue_extractor_test.go | 126 +
.../plugins/jira/tasks/sprint_report_collector.go | 116 +
.../plugins/jira/tasks/sprint_report_convertor.go | 99 +
.../plugins/jira/tasks/sprint_report_extractor.go | 92 +
backend/plugins/jira/tasks/task_data.go | 4 +
backend/plugins/kiro/models/chat_log.go | 86 +
backend/plugins/kiro/models/completion_log.go | 63 +
backend/plugins/kiro/models/connection.go | 139 +
backend/plugins/kiro/models/connection_test.go | 89 +
.../models/migrationscripts/20260729_init.go} | 38 +-
.../kiro/models/migrationscripts/archived/init.go | 168 +
.../models/migrationscripts/register.go | 6 +-
backend/plugins/kiro/models/s3_file_meta.go | 75 +
backend/plugins/kiro/models/s3_slice.go | 164 +
backend/plugins/kiro/models/s3_slice_test.go | 110 +
backend/plugins/kiro/models/user_model_messages.go | 57 +
backend/plugins/kiro/models/user_report.go | 78 +
backend/plugins/kiro/tasks/normalize.go | 171 +
backend/plugins/kiro/tasks/normalize_test.go | 273 +
.../01_earliest_no_email_no_newuser.csv | 2 +
.../tasks/testdata/user_report/02_standard_cli.csv | 2 +
.../tasks/testdata/user_report/03_standard_ide.csv | 2 +
.../user_report/04_newuser_after_models.csv | 2 +
.../user_report/05_prefixed_userid_upper_bool.csv | 2 +
.../tasks/testdata/user_report/06_two_users.csv | 3 +
.../user_report/07_kiro_web_nonzero_overage.csv | 2 +
.../testdata/user_report/08_plugin_multi_model.csv | 2 +
backend/plugins/kiro/tasks/user_report_parser.go | 294 +
.../plugins/kiro/tasks/user_report_parser_test.go | 312 +
backend/plugins/linear/README.md | 115 +
.../plugins/{tapd => linear}/api/blueprint_v200.go | 41 +-
backend/plugins/linear/api/blueprint_v200_test.go | 122 +
backend/plugins/linear/api/connection_api.go | 177 +
backend/plugins/linear/api/init.go | 51 +
backend/plugins/linear/api/remote_api.go | 137 +
backend/plugins/linear/api/remote_api_test.go | 66 +
backend/plugins/linear/api/scope_api.go | 105 +
backend/plugins/linear/api/scope_config_api.go | 106 +
backend/plugins/linear/e2e/account_test.go | 58 +
backend/plugins/linear/e2e/board_test.go | 56 +
backend/plugins/linear/e2e/comment_test.go | 64 +
backend/plugins/linear/e2e/cycle_test.go | 77 +
.../linear/e2e/issue_history_leadtime_test.go | 77 +
backend/plugins/linear/e2e/issue_history_test.go | 64 +
backend/plugins/linear/e2e/issue_incident_test.go | 67 +
backend/plugins/linear/e2e/issue_leadtime_test.go | 64 +
backend/plugins/linear/e2e/issue_longtitle_test.go | 55 +
backend/plugins/linear/e2e/issue_test.go | 77 +
backend/plugins/linear/e2e/label_test.go | 55 +
.../linear/e2e/raw_tables/_raw_linear_accounts.csv | 4 +
.../linear/e2e/raw_tables/_raw_linear_comments.csv | 4 +
.../linear/e2e/raw_tables/_raw_linear_cycles.csv | 3 +
.../e2e/raw_tables/_raw_linear_issue_history.csv | 4 +
.../linear/e2e/raw_tables/_raw_linear_issues.csv | 6 +
.../raw_tables/_raw_linear_issues_long_title.csv | 2 +
.../_raw_linear_issues_negative_leadtime.csv | 2 +
.../e2e/raw_tables/_raw_linear_workflow_states.csv | 6 +
.../e2e/snapshot_tables/_tool_linear_accounts.csv | 4 +
.../e2e/snapshot_tables/_tool_linear_comments.csv | 4 +
.../e2e/snapshot_tables/_tool_linear_cycles.csv | 3 +
.../snapshot_tables/_tool_linear_issue_history.csv | 4 +
.../snapshot_tables/_tool_linear_issue_labels.csv | 4 +
.../e2e/snapshot_tables/_tool_linear_issues.csv | 6 +
.../e2e/snapshot_tables/_tool_linear_teams.csv | 2 +
.../_tool_linear_workflow_states.csv | 6 +
.../linear/e2e/snapshot_tables/accounts.csv | 4 +
.../linear/e2e/snapshot_tables/board_issues.csv | 6 +
.../linear/e2e/snapshot_tables/board_sprints.csv | 3 +
.../plugins/linear/e2e/snapshot_tables/boards.csv | 2 +
.../linear/e2e/snapshot_tables/issue_assignees.csv | 3 +
.../e2e/snapshot_tables/issue_changelogs.csv | 4 +
.../linear/e2e/snapshot_tables/issue_comments.csv | 4 +
.../linear/e2e/snapshot_tables/issue_labels.csv | 4 +
.../plugins/linear/e2e/snapshot_tables/issues.csv | 6 +
.../snapshot_tables/issues_history_leadtime.csv | 6 +
.../linear/e2e/snapshot_tables/issues_incident.csv | 6 +
.../snapshot_tables/issues_negative_leadtime.csv | 2 +
.../linear/e2e/snapshot_tables/sprint_issues.csv | 3 +
.../sprint_issues_after_leaving_cycle.csv | 1 +
.../plugins/linear/e2e/snapshot_tables/sprints.csv | 3 +
backend/plugins/linear/e2e/sprint_issue_test.go | 71 +
backend/plugins/linear/e2e/workflow_state_test.go | 48 +
backend/plugins/linear/impl/impl.go | 233 +
.../connection.go => linear/impl/impl_test.go} | 25 +-
backend/plugins/linear/linear.go | 43 +
.../models/account.go} | 25 +-
.../plugins/{asana => linear}/models/connection.go | 50 +-
.../linear/models/cycle.go} | 27 +-
backend/plugins/linear/models/issue.go | 56 +
.../linear/models/issue_comment.go} | 26 +-
backend/plugins/linear/models/issue_history.go | 45 +
.../models/issue_label.go} | 22 +-
.../migrationscripts/20260601_add_init_tables.go} | 41 +-
.../models/migrationscripts/archived/models.go | 169 +
.../models/migrationscripts/register.go | 0
backend/plugins/linear/models/scope_config.go | 44 +
.../models/board.go => linear/models/team.go} | 47 +-
.../account.go => linear/models/workflow_state.go} | 25 +-
backend/plugins/linear/tasks/account_collector.go | 98 +
backend/plugins/linear/tasks/account_convertor.go | 97 +
backend/plugins/linear/tasks/account_extractor.go | 74 +
backend/plugins/linear/tasks/api_client.go | 108 +
backend/plugins/linear/tasks/board_convertor.go | 93 +
backend/plugins/linear/tasks/comment_collector.go | 148 +
backend/plugins/linear/tasks/comment_convertor.go | 97 +
backend/plugins/linear/tasks/comment_extractor.go | 78 +
backend/plugins/linear/tasks/cycle_collector.go | 102 +
backend/plugins/linear/tasks/cycle_convertor.go | 106 +
backend/plugins/linear/tasks/cycle_extractor.go | 72 +
backend/plugins/linear/tasks/issue_collector.go | 164 +
.../linear/tasks/issue_collector_test.go} | 31 +-
backend/plugins/linear/tasks/issue_convertor.go | 229 +
backend/plugins/linear/tasks/issue_extractor.go | 108 +
.../linear/tasks/issue_history_collector.go | 137 +
.../linear/tasks/issue_history_convertor.go | 168 +
.../linear/tasks/issue_history_extractor.go | 85 +
.../tasks/label_convertor.go} | 60 +-
backend/plugins/linear/tasks/shared.go | 86 +
.../tasks/shared_clauses_test.go} | 37 +-
backend/plugins/linear/tasks/shared_test.go | 45 +
.../plugins/linear/tasks/sprint_issue_convertor.go | 107 +
backend/plugins/linear/tasks/task_data.go | 46 +
.../linear/tasks/workflow_state_collector.go | 100 +
.../linear/tasks/workflow_state_extractor.go | 71 +
.../plugins/linker/e2e/link_pr_and_issue_test.go | 42 +
.../linker/e2e/snapshot_tables/board_issues.csv | 1 +
...d_issues.csv => cross_project_board_issues.csv} | 1 +
.../e2e/snapshot_tables/cross_project_issues.csv | 4 +
.../cross_project_project_mapping.csv | 5 +
...=> cross_project_pull_request_issues_after.csv} | 2 +
.../cross_project_pull_request_issues_before.csv | 4 +
...equests.csv => cross_project_pull_requests.csv} | 3 +-
.../e2e/snapshot_tables/pull_request_issues.csv | 1 +
.../linker/e2e/snapshot_tables/pull_requests.csv | 3 +-
backend/plugins/linker/impl/impl.go | 2 +-
backend/plugins/linker/tasks/link_pr_and_issue.go | 23 +-
backend/plugins/opsgenie/api/connection_api.go | 2 +-
backend/plugins/org/e2e/raw_tables/accounts.csv | 2 +
.../org/e2e/snapshot_tables/user_accounts.csv | 2 +
backend/plugins/org/impl/impl.go | 35 +-
backend/plugins/org/impl/impl_test.go | 42 +
backend/plugins/org/tasks/user_account.go | 15 +-
backend/plugins/q_dev/models/chat_log.go | 3 +
backend/plugins/q_dev/models/completion_log.go | 22 +-
.../20250623_add_display_name_fields.go | 41 +-
.../20251123_add_scope_config_id_to_s3_slice.go | 22 +-
..._s3_slice.go => 20260319_add_logging_fields.go} | 31 +-
.../models/migrationscripts/archived/chat_log.go | 3 +
.../migrationscripts/archived/completion_log.go | 22 +-
.../q_dev/models/migrationscripts/register.go | 1 +
.../plugins/q_dev/tasks/s3_logging_extractor.go | 32 +-
backend/plugins/refdiff/tasks/refdiff_task_data.go | 6 +-
.../plugins/{tapd => rootly}/api/blueprint_v200.go | 37 +-
.../{opsgenie => rootly}/api/connection_api.go | 128 +-
backend/plugins/rootly/api/init.go | 55 +
backend/plugins/rootly/api/remote_api.go | 189 +
backend/plugins/rootly/api/scope_api.go | 107 +
.../api/scope_state_api.go} | 30 +-
.../register.go => rootly/api/swagger.go} | 24 +-
backend/plugins/rootly/e2e/incident_test.go | 126 +
.../e2e/raw_tables/_raw_rootly_incidents.csv | 7 +
.../e2e/snapshot_tables/_tool_rootly_incidents.csv | 6 +
.../e2e/snapshot_tables/_tool_rootly_services.csv | 2 +
.../e2e/snapshot_tables/_tool_rootly_users.csv | 4 +
.../rootly/e2e/snapshot_tables/board_issues.csv | 6 +
.../plugins/rootly/e2e/snapshot_tables/boards.csv | 2 +
.../rootly/e2e/snapshot_tables/issue_assignees.csv | 6 +
.../plugins/rootly/e2e/snapshot_tables/issues.csv | 6 +
backend/plugins/rootly/impl/impl.go | 190 +
.../plugins/{asana => rootly}/models/connection.go | 45 +-
backend/plugins/rootly/models/incident.go | 62 +
.../migrationscripts/20260512_add_init_tables.go} | 26 +-
.../models/migrationscripts/archived/connection.go | 16 +-
.../models/migrationscripts/archived/incident.go} | 41 +-
.../migrationscripts/archived/scope_config.go} | 18 +-
.../models/migrationscripts/archived/service.go} | 20 +-
.../models/migrationscripts/archived/user.go} | 22 +-
.../models/migrationscripts/register.go | 2 +-
backend/plugins/rootly/models/raw/incident.go | 87 +
.../diffline.go => rootly/models/raw/service.go} | 30 +-
.../rootly/models/scope_config.go} | 16 +-
.../rootly/models/service.go} | 63 +-
.../models/user.go} | 19 +-
.../register.go => rootly/rootly.go} | 26 +-
.../plugins/rootly/tasks/incidents_collector.go | 140 +
.../rootly/tasks/incidents_collector_test.go | 53 +
.../plugins/rootly/tasks/incidents_converter.go | 212 +
.../rootly/tasks/incidents_converter_test.go | 223 +
.../plugins/rootly/tasks/incidents_extractor.go | 160 +
.../rootly/tasks/incidents_extractor_test.go | 382 +
backend/plugins/rootly/tasks/service_converter.go | 82 +
backend/plugins/rootly/tasks/services_collector.go | 76 +
backend/plugins/rootly/tasks/services_extractor.go | 78 +
backend/plugins/rootly/tasks/task_data.go | 76 +
.../plugins/schema_e2e/migration_schema_test.go | 242 +
.../schema_e2e/migration_upgrade_path_test.go | 382 +
backend/plugins/sonarqube/api/blueprint_v200.go | 9 +-
backend/plugins/sonarqube/api/connection_api.go | 3 +
backend/plugins/sonarqube/api/remote_api.go | 21 +-
.../api/remote_api_test.go} | 21 +-
.../e2e/issue_code_block_long_component_test.go | 205 +
.../sonarqube/e2e/snapshot_tables/accounts.csv | 6 +-
backend/plugins/sonarqube/impl/impl.go | 8 +
backend/plugins/sonarqube/models/connection.go | 42 +-
.../plugins/sonarqube/models/connection_test.go | 92 +
.../20230316_modify_character_set.go | 34 +-
.../20240325_modify_commit_character_type.go | 18 +-
.../20240508_modify_commit_character_type.go | 16 +-
...0701_change_issue_code_block_component_type.go} | 21 +-
.../20260707_add_project_metrics_history.go | 77 +
.../sonarqube/models/migrationscripts/register.go | 2 +
.../sonarqube/models/sonarqube_issue_code_block.go | 2 +-
.../models/sonarqube_project_analyses.go} | 26 +-
.../models/sonarqube_project_metrics_history.go} | 23 +-
.../plugins/sonarqube/tasks/accounts_collector.go | 11 +-
.../tasks/issue_code_blocks_convertor_test.go} | 45 +-
.../tasks/project_analyses_collector.go} | 61 +-
.../sonarqube/tasks/project_analyses_extractor.go | 84 +
.../tasks/project_metrics_history_collector.go} | 63 +-
.../tasks/project_metrics_history_convertor.go | 158 +
.../tasks/project_metrics_history_extractor.go | 89 +
backend/plugins/sonarqube/tasks/task_data.go | 1 +
backend/plugins/starrocks/tasks/tasks.go | 7 +-
backend/plugins/starrocks/tasks/tasks_test.go | 68 +
backend/plugins/table_info_test.go | 16 +-
.../plugins/{tapd => taiga}/api/blueprint_v200.go | 81 +-
backend/plugins/taiga/api/connection_api.go | 225 +
backend/plugins/taiga/api/init.go | 53 +
backend/plugins/taiga/api/remote_api.go | 132 +
backend/plugins/taiga/api/scope_api.go | 52 +
backend/plugins/taiga/api/scope_config_api.go | 47 +
backend/plugins/taiga/e2e/epic_test.go | 74 +
backend/plugins/taiga/e2e/issue_test.go | 77 +
backend/plugins/taiga/e2e/project_test.go | 69 +
.../taiga/e2e/raw_tables/_raw_taiga_api_epics.csv | 3 +
.../taiga/e2e/raw_tables/_raw_taiga_api_issues.csv | 3 +
.../e2e/raw_tables/_raw_taiga_api_projects.csv | 2 +
.../taiga/e2e/raw_tables/_raw_taiga_api_tasks.csv | 3 +
.../e2e/raw_tables/_raw_taiga_api_user_stories.csv | 3 +
.../e2e/snapshot_tables/_tool_taiga_epics.csv | 3 +
.../e2e/snapshot_tables/_tool_taiga_issues.csv | 3 +
.../e2e/snapshot_tables/_tool_taiga_projects.csv | 2 +
.../e2e/snapshot_tables/_tool_taiga_tasks.csv | 3 +
.../snapshot_tables/_tool_taiga_user_stories.csv | 3 +
.../snapshot_tables/board_issues_from_epics.csv | 3 +
.../snapshot_tables/board_issues_from_issues.csv | 3 +
.../snapshot_tables/board_issues_from_tasks.csv | 3 +
.../board_issues_from_user_stories.csv | 3 +
.../plugins/taiga/e2e/snapshot_tables/boards.csv | 2 +
.../e2e/snapshot_tables/issues_from_epics.csv | 3 +
.../e2e/snapshot_tables/issues_from_issues.csv | 3 +
.../e2e/snapshot_tables/issues_from_tasks.csv | 3 +
.../snapshot_tables/issues_from_user_stories.csv | 3 +
backend/plugins/taiga/e2e/task_test.go | 74 +
backend/plugins/taiga/e2e/user_story_test.go | 74 +
backend/plugins/taiga/impl/impl.go | 251 +
backend/plugins/taiga/models/connection.go | 143 +
.../models/account.go => taiga/models/epic.go} | 31 +-
backend/plugins/taiga/models/issue.go | 49 +
.../migrationscripts/20250220_add_init_tables.go | 132 +
.../20260306_add_task_issue_epic_tables.go | 128 +
.../20260727_add_missing_scope_config_columns.go | 61 +
.../models/migrationscripts/register.go | 5 +-
backend/plugins/taiga/models/project.go | 63 +
backend/plugins/taiga/models/scope_config.go | 53 +
backend/plugins/taiga/models/task.go | 49 +
backend/plugins/taiga/models/user_story.go | 53 +
backend/plugins/taiga/taiga.go | 45 +
.../tasks/api_client.go} | 42 +-
.../tasks/epic_collector.go} | 63 +-
backend/plugins/taiga/tasks/epic_convertor.go | 106 +
backend/plugins/taiga/tasks/epic_extractor.go | 106 +
.../tasks/issue_collector.go} | 63 +-
backend/plugins/taiga/tasks/issue_convertor.go | 132 +
backend/plugins/taiga/tasks/issue_extractor.go | 136 +
backend/plugins/taiga/tasks/project_collector.go | 76 +
.../tasks/project_convertor.go} | 61 +-
.../tasks/project_extractor.go} | 62 +-
.../tasks/task_collector.go} | 63 +-
backend/plugins/taiga/tasks/task_convertor.go | 107 +
backend/plugins/{jira => taiga}/tasks/task_data.go | 31 +-
backend/plugins/taiga/tasks/task_extractor.go | 122 +
.../plugins/taiga/tasks/user_story_collector.go | 80 +
.../plugins/taiga/tasks/user_story_convertor.go | 129 +
.../plugins/taiga/tasks/user_story_extractor.go | 135 +
backend/plugins/tapd/api/blueprint_v200.go | 2 +-
.../migrationscripts/archived/tapd_connection.go | 2 +-
.../20260727_add_missing_scope_config_columns.go | 90 +
.../teambition/models/migrationscripts/register.go | 1 +
.../plugins/{tapd => tempo}/api/blueprint_v200.go | 78 +-
backend/plugins/tempo/api/connection.go | 211 +
backend/plugins/tempo/api/init.go | 52 +
backend/plugins/tempo/api/remote.go | 196 +
backend/plugins/tempo/api/scope.go | 120 +
backend/plugins/tempo/api/scope_config.go | 97 +
.../tempo/e2e/raw_tables/_raw_tempo_api_teams.csv | 3 +
.../e2e/snapshot_tables/_tool_tempo_teams.csv | 3 +
.../e2e/snapshot_tables/_tool_tempo_worklogs.csv | 3 +
.../tempo/e2e/snapshot_tables/issue_worklogs.csv | 3 +
backend/plugins/tempo/e2e/worklog_test.go | 74 +
backend/plugins/tempo/impl/impl.go | 204 +
backend/plugins/tempo/models/connection.go | 74 +
.../models/migrationscripts/archived/models.go | 77 +
.../models/migrationscripts/register.go | 4 +-
.../models/migrationscripts/register_tables.go} | 26 +-
backend/plugins/tempo/models/team.go | 95 +
backend/plugins/tempo/models/worklog.go | 43 +
.../tasks/api_client.go} | 32 +-
backend/plugins/tempo/tasks/tasks.go | 45 +
backend/plugins/tempo/tasks/team_collector.go | 115 +
.../tasks/team_extractor.go} | 61 +-
backend/plugins/tempo/tasks/worklog_collector.go | 134 +
backend/plugins/tempo/tasks/worklog_convertor.go | 155 +
backend/plugins/tempo/tasks/worklog_extractor.go | 97 +
.../tempo.go} | 38 +-
.../20250629_add_scope_config_id_to_projects.go | 12 +-
.../20260727_add_missing_scope_config_columns.go | 61 +
.../testmo/models/migrationscripts/register.go | 1 +
backend/plugins/webhook/api/deployments.go | 6 +-
backend/plugins/webhook/api/issues.go | 108 +-
backend/plugins/webhook/api/pull_requests.go | 25 +-
backend/plugins/webhook/impl/impl.go | 15 +
.../e2e/snapshot_tables/execution_sprint.csv | 18 +-
.../plugins/zentao/e2e/snapshot_tables/users.csv | 26 +-
.../models/migrationscripts/archived/connection.go | 2 +-
.../tasks/execution_summary_dev_extractor.go | 2 +-
backend/plugins/zentao/tasks/task_collector.go | 2 +-
backend/plugins/zentao/tasks/task_data.go | 2 +-
backend/python/DevelopmentSetup.md | 17 +-
backend/python/plugins/azuredevops/build.sh | 2 +-
backend/python/plugins/azuredevops/poetry.lock | 774 +-
backend/python/plugins/azuredevops/pyproject.toml | 4 +-
backend/python/plugins/azuredevops/run.sh | 2 +-
backend/python/pydevlake/poetry.lock | 768 +-
backend/python/pydevlake/pydevlake/api.py | 2 +-
.../pydevlake/pydevlake/domain_layer/code.py | 5 +-
backend/python/pydevlake/pyproject.toml | 8 +-
backend/python/run_tests.sh | 12 +-
backend/python/test/fakeplugin/build.sh | 2 +-
backend/python/test/fakeplugin/poetry.lock | 775 +-
backend/python/test/fakeplugin/pyproject.toml | 2 +-
backend/python/test/fakeplugin/run.sh | 5 +-
backend/python/uv.sh | 113 +
backend/scripts/build-plugins.sh | 3 +-
backend/scripts/install-go.sh | 94 +
backend/scripts/install-libgit2.sh | 90 +
backend/scripts/install-mockery.sh | 100 +
backend/server/api/README.md | 2 +-
backend/server/api/api.go | 23 +-
backend/server/api/auth/auth.go | 536 +
backend/server/api/auth/auth_test.go | 51 +
backend/server/api/auth/cleanup.go | 57 +
backend/server/api/auth/handlers_test.go | 426 +
backend/server/api/auth/middleware.go | 169 +
backend/server/api/auth/revocation_cache.go | 117 +
backend/server/api/auth/revocation_cache_test.go | 67 +
backend/server/api/auth/store.go | 76 +
backend/server/api/middlewares.go | 88 +-
.../server/api/middlewares_forwardsecret_test.go | 147 +
backend/server/api/middlewares_rest_auth_test.go | 107 +
backend/server/api/middlewares_test.go | 74 +
backend/server/api/push/README.md | 8 +-
backend/server/api/router.go | 8 +
backend/server/api/shared/gin_utils.go | 29 +-
backend/server/api/store/store.go | 6 +-
backend/server/services/blueprint.go | 2 +-
backend/server/services/blueprint_makeplan_v200.go | 20 +
.../services/blueprint_makeplan_v200_test.go | 63 +
backend/server/services/pipeline.go | 56 +-
backend/server/services/pipeline_runner.go | 12 +-
backend/server/services/project.go | 2 +-
backend/server/services/pushapi.go | 21 +-
backend/server/services/pushapiaccess/access.go | 54 +
.../server/services/pushapiaccess/access_test.go | 70 +
backend/server/services/remote/bridge/context.go | 7 +
.../server/services/remote/models/conversion.go | 2 +-
backend/server/services/remote/plugin/scope_api.go | 2 +-
backend/test/Readme.md | 23 +
backend/test/e2e/remote/docker-compose.test.yml | 6 +-
backend/test/e2e/services/pipeline_runner_test.go | 122 +-
backend/test/e2e/services/server_startup_test.go | 4 +
backend/test/helper/client.go | 7 +-
config-ui/.eslintignore | 18 -
...iller-columns-select-npm-1.4.1-a8bc1f9d49.patch | 34 +
config-ui/.yarn/releases/yarn-3.4.1.cjs | 911 --
config-ui/.yarn/releases/yarn-4.17.0.cjs | 944 ++
config-ui/.yarnrc.yml | 2 +-
config-ui/Dockerfile | 6 +-
config-ui/env.example | 7 +
config-ui/eslint.config.mjs | 87 +
config-ui/package.json | 91 +-
config-ui/src/__tests__/main-entry.test.ts | 44 +
.../sync-policy/styled.ts => api/auth/index.ts} | 47 +-
config-ui/src/api/connection/index.ts | 8 +
config-ui/src/api/index.ts | 2 +
config-ui/src/api/scope/index.ts | 30 +
config-ui/src/app/{routrer.tsx => router.tsx} | 5 +
config-ui/src/app/store.ts | 3 +-
.../src/components/action/copy-text/index.tsx | 3 +-
.../src/components/action/icon-button/index.tsx | 14 +-
config-ui/src/components/block/styled.ts | 2 +-
config-ui/src/components/inspector/styled.ts | 6 +-
config-ui/src/components/loading/styled.ts | 2 +-
config-ui/src/components/markdown/index.tsx | 37 +-
config-ui/src/components/message/index.tsx | 2 +-
config-ui/src/components/page-header/styled.ts | 2 +-
config-ui/src/components/tip-layout/styled.ts | 4 +-
config-ui/src/config/cron.ts | 9 +-
config-ui/src/config/entities.ts | 1 +
config-ui/src/features/connections/utils.ts | 14 +-
config-ui/src/features/index.ts | 1 +
.../features/theme/index.ts} | 1 +
config-ui/src/features/theme/slice.ts | 87 +
config-ui/src/hooks/use-auto-refresh.ts | 2 +-
config-ui/src/index.css | 12 +-
config-ui/src/main.tsx | 23 +-
.../__tests__/miller-columns-select.test.tsx | 69 +
.../components/connection-form/fields/index.tsx | 6 +-
.../components/connection-form/fields/styled.ts | 2 +-
.../plugins/components/connection-form/index.tsx | 134 +-
.../plugins/components/connection-list/index.tsx | 2 +-
.../data-scope-remote/data-scope-remote.tsx | 105 +-
.../components/data-scope-remote/search-local.tsx | 6 +-
.../components/data-scope-remote/search-remote.tsx | 65 +-
.../plugins/components/data-scope-remote/styled.ts | 2 +-
.../plugins/components/data-scope-select/index.tsx | 6 +-
.../plugins/components/scope-config-form/index.tsx | 10 +
.../src/plugins/register/argocd/transformation.tsx | 2 +-
config-ui/src/plugins/register/azure/config.tsx | 22 +-
.../register/azure/connection-fields/base-url.tsx | 47 +-
.../azure/connection-fields/organization.tsx | 8 +-
.../register/azure/connection-fields/styled.ts | 2 +-
.../src/plugins/register/azure/transformation.tsx | 2 +-
config-ui/src/plugins/register/bamboo/config.tsx | 1 +
.../plugins/register/bitbucket-server/config.tsx | 1 +
.../plugins/register/circleci/transformation.tsx | 2 +-
.../plugins/register/claude-code/assets/icon.svg | 4 +
.../register/{jira => claude-code}/config.tsx | 58 +-
.../connection-fields/custom-headers.tsx | 99 +
.../claude-code/connection-fields}/index.ts | 4 +-
.../claude-code/connection-fields/organization.tsx | 67 +
.../connection-fields/styled.ts | 0
.../claude-code/connection-fields/token.tsx | 70 +
.../register/{opsgenie => claude-code}/index.ts | 0
.../src/plugins/register/clickup/assets/icon.svg | 8 +-
.../{bitbucket-server => clickup}/config.tsx | 55 +-
.../plugins/register/{argocd => clickup}/index.ts | 0
.../plugins/register/clickup/transformation.tsx | 186 +
.../gh-copilot/connection-fields/styled.ts | 2 +-
.../register/github/connection-fields/styled.ts | 10 +-
.../register/github/connection-fields/token.tsx | 6 +-
.../src/plugins/register/github/transformation.tsx | 15 +-
.../src/plugins/register/gitlab/transformation.tsx | 2 +-
.../plugins/register/incidentio/assets/icon.svg | 8 +-
.../register/{bamboo => incidentio}/config.tsx | 42 +-
.../register/{opsgenie => incidentio}/index.ts | 0
config-ui/src/plugins/register/index.ts | 12 +
config-ui/src/plugins/register/jenkins/config.tsx | 1 +
.../plugins/register/jenkins/transformation.tsx | 2 +-
config-ui/src/plugins/register/jira/config.tsx | 4 +-
.../register/jira/connection-fields/auth.test.ts | 144 +
.../register/jira/connection-fields/auth.tsx | 113 +-
.../register/jira/connection-fields/styled.ts | 2 +-
.../register/jira/transformation-fields/styled.ts | 6 +-
.../src/plugins/register/jira/transformation.tsx | 22 +-
.../src/plugins/register/linear/assets/icon.svg | 19 +
.../plugins/register/{bamboo => linear}/config.tsx | 45 +-
.../plugins/register/{opsgenie => linear}/index.ts | 0
.../register/opsgenie/connection-fields/styled.ts | 10 +-
.../q-dev/connection-fields/aws-credentials.tsx | 27 +-
.../q-dev/connection-fields/connection-test.tsx | 2 +-
.../connection-fields/identity-center-config.tsx | 8 +-
.../register/q-dev/connection-fields/s3-config.tsx | 4 +-
.../src/plugins/register/rootly/assets/icon.svg | 28 +
.../plugins/register/{bamboo => rootly}/config.tsx | 42 +-
.../plugins/register/{opsgenie => rootly}/index.ts | 0
.../src/plugins/register/tapd/transformation.tsx | 11 +-
.../src/plugins/register/tempo/assets/icon.png | Bin 0 -> 4179 bytes
.../src/plugins/register/tempo/assets/icon.svg | 11 +
.../plugins/register/{jenkins => tempo}/config.tsx | 41 +-
.../plugins/register/{opsgenie => tempo}/index.ts | 0
config-ui/src/plugins/register/webhook/styled.ts | 6 +-
config-ui/src/plugins/register/zentao/config.tsx | 1 +
config-ui/src/plugins/utils.ts | 11 +
config-ui/src/release/stable.ts | 8 +
.../components/add-connection-dialog/index.tsx | 2 +-
.../components/advanced-editor/example/dbt.ts | 2 +-
.../detail/components/sync-policy/index.tsx | 14 +-
.../detail/components/sync-policy/styled.ts | 2 +-
config-ui/src/routes/blueprint/detail/styled.ts | 6 +-
config-ui/src/routes/blueprint/home/index.tsx | 6 +-
config-ui/src/routes/blueprint/home/styled.ts | 2 +-
config-ui/src/routes/connection/connections.tsx | 14 +-
config-ui/src/routes/connection/styled.ts | 20 +-
config-ui/src/routes/db-migrate/index.tsx | 2 +-
config-ui/src/routes/error/index.tsx | 4 +-
config-ui/src/routes/index.ts | 1 +
config-ui/src/routes/layout/config.tsx | 26 +-
config-ui/src/routes/layout/layout.tsx | 69 +-
config-ui/src/routes/layout/loader.ts | 9 +-
config-ui/src/routes/login/index.tsx | 84 +
config-ui/src/routes/not-found/index.tsx | 2 +-
config-ui/src/routes/onboard/components/card.tsx | 8 +-
config-ui/src/routes/onboard/components/tour.tsx | 6 +-
config-ui/src/routes/onboard/index.tsx | 7 +-
config-ui/src/routes/onboard/step-0.tsx | 5 +-
config-ui/src/routes/onboard/step-4.tsx | 9 +-
config-ui/src/routes/onboard/styled.ts | 36 +-
config-ui/src/routes/pipeline/styled.ts | 32 +-
config-ui/src/routes/project/home/index.tsx | 10 +-
config-ui/src/theme/ThemeProvider.tsx | 83 +
config-ui/src/{features => theme}/index.ts | 3 +-
.../styled.ts => theme/styled.d.ts} | 14 +-
config-ui/src/theme/tokens.ts | 188 +
config-ui/src/types/connection.ts | 11 +
config-ui/src/utils/request.ts | 15 +
config-ui/src/vite-env.d.ts | 1 +
config-ui/tsconfig.json | 1 +
config-ui/vite.config.ts | 25 +-
config-ui/{.eslintrc.js => vitest.config.ts} | 28 +-
config-ui/{.file-headerrc => vitest.setup.ts} | 6 +
config-ui/yarn.lock | 10834 +++++++++----------
devops/deployment/k8s/k8s-deploy.yaml | 6 +-
.../temporal/docker-compose-temporal.yml | 2 +-
devops/docker/lake-builder/Dockerfile | 23 +-
...compose-dev.yml => docker-compose-dev-mysql.yml | 87 +-
...se-dev.yml => docker-compose-dev-postgresql.yml | 85 +-
docker-compose.datasources.yml | 2 +-
e2e/package.json | 16 +
.../register.go => e2e/playwright.config.ts | 37 +-
e2e/qdev-full-flow.spec.ts | 248 +
env.example | 91 +-
grafana/Dockerfile | 14 +-
grafana/_archive/Daily_Needs_To_Be_Improved.json | 389 -
.../DataSourceSpecificDashboardsHomepage.json | 293 -
.../DeliveryCapability(RequireJenkinsData).json | 470 -
.../_archive/DeliveryCost(RequireGitlabData).json | 408 -
.../DeliveryQuality(RequireJiraAndGitlabData).json | 1699 ---
...DeliveryVelocity(RequireJiraAndGitlabData).json | 4093 -------
grafana/_archive/GithubDomainLayerOnly.json | 622 --
grafana/_archive/Gitlab.json | 2186 ----
grafana/_archive/Jenkins.json | 470 -
.../UserValueSpecificDashboardsHomepage.json | 344 -
grafana/dashboards/ClaudeCodeAdoption.json | 1295 +++
grafana/dashboards/ClaudeCodeAdoptionByUser.json | 1301 +++
.../dashboards/{PagerDuty.json => Incidentio.json} | 34 +-
grafana/dashboards/{Asana.json => Linear.json} | 76 +-
grafana/dashboards/{PagerDuty.json => Rootly.json} | 74 +-
grafana/dashboards/{ => mysql}/Asana.json | 62 +-
grafana/dashboards/{ => mysql}/Bamboo.json | 54 +-
.../dashboards/{Asana.json => mysql/ClickUp.json} | 148 +-
grafana/dashboards/{ => mysql}/DORA.json | 60 +-
.../dashboards/{ => mysql}/GithubCopilotREADME.md | 0
grafana/dashboards/{ => mysql}/Gitlab.json | 98 +-
grafana/dashboards/{ => mysql}/Homepage.json | 14 +-
grafana/dashboards/{ => mysql}/Jenkins.json | 54 +-
grafana/dashboards/{ => mysql}/Jira.json | 212 +-
grafana/dashboards/{ => mysql}/Opsgenie.json | 72 +-
grafana/dashboards/{ => mysql}/Sonarqube.json | 329 +-
grafana/dashboards/{ => mysql}/TAPD.json | 62 +-
.../{EngineeringOverview.json => mysql/Taiga.json} | 2176 ++--
grafana/dashboards/{ => mysql}/Teambition.json | 62 +-
grafana/dashboards/{ => mysql}/Testmo.json | 66 +-
grafana/dashboards/{ => mysql}/Zentao.json | 62 +-
grafana/dashboards/mysql/ai-cost-efficiency.json | 317 +
grafana/dashboards/mysql/ai-model-roi.json | 537 +
.../dashboards/{ArgoCD.json => mysql/argo-cd.json} | 88 +-
.../{AzureDevOps.json => mysql/azure-dev-ops.json} | 102 +-
.../{BitBucket.json => mysql/bit-bucket.json} | 102 +-
.../{CircleCI.json => mysql/circle-ci.json} | 54 +-
.../component-and-file-level-metrics.json} | 48 +-
.../contributor-experience.json} | 54 +-
...average-requirement-lead-time-by-assignee.json} | 10 +-
.../demo-commit-count-by-author.json} | 10 +-
.../demo-detailed-bug-info.json} | 10 +-
.../demo-homepage.json} | 6 +-
...st-do-we-respond-to-customer-requirements.json} | 12 +-
...o-is-this-month-more-productive-than-last.json} | 10 +-
.../demo-was-our-quality-improved-or-not.json} | 10 +-
.../mysql/developer-productivity-hours.json | 162 +
.../{DORAByTeam.json => mysql/dora-by-team.json} | 78 +-
.../{DORADebug.json => mysql/dora-debug.json} | 208 +-
.../dora-details-change-failure-rate.json} | 38 +-
.../dora-details-deployment-frequency.json} | 58 +-
...a-details-failed-deployment-recovery-time.json} | 22 +-
.../dora-details-lead-timefor-changes.json} | 44 +-
.../dora-details-timeto-restore-service.json} | 22 +-
.../engineering-overview.json} | 116 +-
...ering-throughput-and-cycle-time-team-view.json} | 156 +-
.../engineering-throughput-and-cycle-time.json} | 78 +-
.../dashboards/{GitHub.json => mysql/git-hub.json} | 162 +-
.../github-copilot-adoption-by-team-and-user.json | 224 +
.../mysql/github-copilot-adoption-by-team.json | 330 +
.../github-copilot-adoption.json} | 0
.../github-copilot-dora-correlation.json} | 0
...release-quality-and-contribution-analysis.json} | 74 +-
grafana/dashboards/mysql/kiro-credits-dora.json | 426 +
grafana/dashboards/mysql/language-ai-heatmap.json | 156 +
grafana/dashboards/mysql/multi-ai-comparison.json | 299 +
.../{PagerDuty.json => mysql/pager-duty.json} | 60 +-
.../{QDevDORA.json => mysql/q-dev-dora.json} | 70 +-
grafana/dashboards/{ => mysql}/qdev_executive.json | 492 +-
.../qdev_feature_metrics.json} | 534 +-
grafana/dashboards/{ => mysql}/qdev_logging.json | 398 +-
grafana/dashboards/{ => mysql}/qdev_user_data.json | 54 +-
.../dashboards/{ => mysql}/qdev_user_report.json | 30 +-
.../sonar-qube-cloud.json} | 353 +-
.../mysql/steering-adoption-tracker.json | 212 +
.../weekly-bug-retro.json} | 94 +-
.../weekly-community-retro.json} | 124 +-
.../{WorkLogs.json => mysql/work-logs.json} | 104 +-
grafana/dashboards/{ => postgresql}/Asana.json | 92 +-
grafana/dashboards/{ => postgresql}/Bamboo.json | 76 +-
.../{Asana.json => postgresql/ClickUp.json} | 148 +-
grafana/dashboards/postgresql/DORA.json | 1517 +++
grafana/dashboards/{ => postgresql}/Gitlab.json | 136 +-
grafana/dashboards/{ => postgresql}/Homepage.json | 18 +-
grafana/dashboards/{ => postgresql}/Jenkins.json | 76 +-
grafana/dashboards/{ => postgresql}/Jira.json | 242 +-
grafana/dashboards/{ => postgresql}/Opsgenie.json | 100 +-
grafana/dashboards/{ => postgresql}/Sonarqube.json | 365 +-
grafana/dashboards/{ => postgresql}/TAPD.json | 90 +-
.../Taiga.json} | 2344 ++--
.../dashboards/{ => postgresql}/Teambition.json | 90 +-
grafana/dashboards/{ => postgresql}/Testmo.json | 100 +-
grafana/dashboards/{ => postgresql}/Zentao.json | 90 +-
.../dashboards/postgresql/ai-cost-efficiency.json | 537 +
grafana/dashboards/postgresql/ai-model-roi.json | 537 +
.../{ArgoCD.json => postgresql/argo-cd.json} | 124 +-
.../azure-dev-ops.json} | 140 +-
.../{BitBucket.json => postgresql/bit-bucket.json} | 140 +-
.../{CircleCI.json => postgresql/circle-ci.json} | 76 +-
.../component-and-file-level-metrics.json} | 74 +-
.../contributor-experience.json} | 76 +-
...average-requirement-lead-time-by-assignee.json} | 16 +-
.../demo-commit-count-by-author.json} | 16 +-
.../demo-detailed-bug-info.json} | 16 +-
.../demo-homepage.json} | 14 +-
...st-do-we-respond-to-customer-requirements.json} | 16 +-
...o-is-this-month-more-productive-than-last.json} | 14 +-
.../demo-was-our-quality-improved-or-not.json} | 14 +-
.../postgresql/developer-productivity-hours.json | 267 +
grafana/dashboards/postgresql/dora-by-team.json | 1254 +++
.../{DORADebug.json => postgresql/dora-debug.json} | 290 +-
.../dora-details-change-failure-rate.json} | 54 +-
.../dora-details-deployment-frequency.json | 1335 +++
...a-details-failed-deployment-recovery-time.json} | 34 +-
.../dora-details-lead-timefor-changes.json} | 70 +-
.../dora-details-timeto-restore-service.json} | 34 +-
.../engineering-overview.json} | 170 +-
...ering-throughput-and-cycle-time-team-view.json} | 174 +-
.../engineering-throughput-and-cycle-time.json} | 112 +-
.../{GitHub.json => postgresql/git-hub.json} | 250 +-
.../github-copilot-adoption-by-team-and-user.json | 224 +
.../github-copilot-adoption-by-team.json | 330 +
.../postgresql/github-copilot-adoption.json | 2322 ++++
.../github-copilot-dora-correlation.json | 2931 +++++
...release-quality-and-contribution-analysis.json} | 518 +-
.../dashboards/postgresql/kiro-credits-dora.json | 709 ++
.../dashboards/postgresql/language-ai-heatmap.json | 276 +
.../dashboards/postgresql/multi-ai-comparison.json | 464 +
.../{PagerDuty.json => postgresql/pager-duty.json} | 84 +-
.../{QDevDORA.json => postgresql/q-dev-dora.json} | 150 +-
grafana/dashboards/postgresql/qdev_executive.json | 768 ++
.../qdev_feature_metrics.json} | 532 +-
grafana/dashboards/postgresql/qdev_logging.json | 1118 ++
.../{ => postgresql}/qdev_user_data.json | 74 +-
.../{ => postgresql}/qdev_user_report.json | 42 +-
.../sonar-qube-cloud.json} | 397 +-
.../postgresql/steering-adoption-tracker.json | 353 +
.../weekly-bug-retro.json} | 138 +-
.../weekly-community-retro.json} | 176 +-
.../{WorkLogs.json => postgresql/work-logs.json} | 112 +-
grafana/provisioning/dashboards/dashboard.yml | 2 +-
grafana/provisioning/datasources/datasource.yml | 29 -
grafana/scripts/convert-mysql-to-postgresql.py | 1409 +++
grafana/scripts/entrypoint.sh | 244 +
grafana/scripts/requirements.txt | 1 +
tools/kiro-attribution/README.md | 148 +
tools/kiro-attribution/install.sh | 303 +
tools/kiro-attribution/kiro-session-record.sh | 55 +
tools/kiro-attribution/prepare-commit-msg.sh | 75 +
1191 files changed, 84712 insertions(+), 31036 deletions(-)
copy .github/workflows/config-ui.yml => .codespellrc (52%)
copy .github/workflows/{yaml-lint.yml => codespell.yml.action-blocked-by-asf} (72%)
create mode 100644 backend/.dockerignore
create mode 100644 backend/.mockery.core.yml
copy .github/workflows/yaml-lint.yml => backend/.mockery.helpers.yml (53%)
create mode 100644 backend/Dockerfile.local
create mode 100644 backend/core/dal/identifier.go
copy backend/core/models/domainlayer/{crossdomain/account.go => codequality/cq_project_metrics_history.go} (55%)
copy backend/{server/services/pushapi.go => core/models/domainlayer/devops/text_columns_test.go} (51%)
copy backend/{plugins/azuredevops_go/models/migrationscripts/register.go => core/models/domainlayer/ticket/incident_text_column_test.go} (67%)
copy backend/{plugins/testmo/models/migrationscripts/20250629_add_scope_config_id_to_projects.go => core/models/migrationscripts/20260317_increase_cq_issues_project_key_length.go} (61%)
copy backend/{plugins/testmo/models/migrationscripts/20250629_add_scope_config_id_to_projects.go => core/models/migrationscripts/20260426_add_auth_sessions.go} (50%)
copy backend/{plugins/testmo/models/migrationscripts/20250629_add_scope_config_id_to_projects.go => core/models/migrationscripts/20260629_change_issue_component_to_text.go} (66%)
create mode 100644 backend/core/models/migrationscripts/20260629_change_issue_component_to_text_test.go
copy backend/{plugins/testmo/models/migrationscripts/20250629_add_scope_config_id_to_projects.go => core/models/migrationscripts/20260701_change_cq_issue_code_blocks_component_to_text.go} (60%)
copy backend/{plugins/testmo/models/migrationscripts/20250629_add_scope_config_id_to_projects.go => core/models/migrationscripts/20260707_add_cq_project_metrics_history.go} (61%)
copy backend/{plugins/testmo/models/migrationscripts/20250629_add_scope_config_id_to_projects.go => core/models/migrationscripts/20260720_add_is_bot_to_accounts.go} (62%)
copy backend/{plugins/testmo/models/migrationscripts/20250629_add_scope_config_id_to_projects.go => core/models/migrationscripts/20260722_add_sprint_velocity_fields.go} (61%)
copy backend/{plugins/q_dev/models/migrationscripts/20251123_add_scope_config_id_to_s3_slice.go => core/models/migrationscripts/20260818_add_blueprint_id_index_to_pipelines.go} (60%)
copy backend/{plugins/github/models/migrationscripts/20240821_add_index_to_tool_github_jobs.go => core/models/migrationscripts/20260819_expand_text_columns.go} (55%)
create mode 100644 backend/core/models/migrationscripts/20260819_expand_text_columns_test.go
copy backend/{plugins/azuredevops_go/models/migrationscripts/archived/connection.go => core/models/migrationscripts/archived/cq_project_metrics_history.go} (52%)
create mode 100644 backend/core/runner/mysql_dialector.go
create mode 100644 backend/helpers/e2ehelper/migration_db.go
copy backend/{plugins/argocd/models/migrationscripts/register.go => helpers/oidchelper/authorization.go} (65%)
create mode 100644 backend/helpers/oidchelper/authorization_test.go
create mode 100644 backend/helpers/oidchelper/config.go
create mode 100644 backend/helpers/oidchelper/config_test.go
create mode 100644 backend/helpers/oidchelper/cookie.go
create mode 100644 backend/helpers/oidchelper/provider.go
create mode 100644 backend/helpers/oidchelper/session.go
create mode 100644 backend/helpers/oidchelper/session_test.go
create mode 100644 backend/helpers/oidchelper/state.go
create mode 100644 backend/helpers/oidchelper/state_test.go
create mode 100644 backend/helpers/oidchelper/wif.go
create mode 100644 backend/helpers/oidchelper/wif_test.go
copy backend/{plugins/argocd/models/migrationscripts/register.go => helpers/pluginhelper/api/graphql_collector_test.go} (67%)
copy backend/plugins/{testmo/models/migrationscripts/20250629_add_scope_config_id_to_projects.go => argocd/models/migrationscripts/20260331_add_repo_url_to_sync_operations.go} (52%)
create mode 100644 backend/plugins/asana/models/migrationscripts/20260509000001_encrypt_connection_token.go
create mode 100644 backend/plugins/azuredevops_go/api/azuredevops/client_onprem_test.go
create mode 100644 backend/plugins/azuredevops_go/models/connection_test.go
copy backend/plugins/{q_dev/models/migrationscripts/20251123_add_scope_config_id_to_s3_slice.go => azuredevops_go/models/migrationscripts/20260722_add_endpoint_to_azuredevops.go} (57%)
copy backend/plugins/{q_dev/models/migrationscripts/20251123_add_scope_config_id_to_s3_slice.go => azuredevops_go/models/migrationscripts/20260726_add_username_to_azuredevops.go} (57%)
create mode 100644 backend/plugins/azuredevops_go/tasks/shared_test.go
create mode 100644 backend/plugins/bitbucket/api/remote_api_test.go
create mode 100644 backend/plugins/bitbucket/api/scope_duplicates_api.go
create mode 100644 backend/plugins/bitbucket/api/scope_duplicates_api_test.go
create mode 100644 backend/plugins/bitbucket/tasks/api_common_test.go
create mode 100755 backend/plugins/circleci/circleci
create mode 100644 backend/plugins/circleci/e2e/incremental_test.go
create mode 100644 backend/plugins/circleci/e2e/job_collector_test.go
create mode 100644 backend/plugins/circleci/e2e/raw_tables/_raw_circleci_api_jobs_incremental.csv
copy backend/plugins/circleci/e2e/raw_tables/{_raw_circleci_api_workflows.csv => _raw_circleci_api_workflows_incremental.csv} (60%)
create mode 100644 backend/plugins/circleci/e2e/snapshot_tables/_tool_circleci_jobs_incremental.csv
copy backend/plugins/circleci/e2e/snapshot_tables/{_tool_circleci_workflows.csv => _tool_circleci_workflows_incremental.csv} (64%)
create mode 100644 backend/plugins/circleci/models/migrationscripts/20260322_rename_created_at_to_created_date.go
copy backend/{core/plugin/plugin_utils_test.go => plugins/circleci/tasks/shared_test.go} (50%)
copy backend/plugins/{tapd => claude_code}/api/blueprint_v200.go (53%)
create mode 100644 backend/plugins/claude_code/api/connection.go
create mode 100644 backend/plugins/claude_code/api/connection_test.go
create mode 100644 backend/plugins/claude_code/api/init.go
create mode 100644 backend/plugins/claude_code/api/remote_api.go
create mode 100644 backend/plugins/claude_code/api/scope.go
create mode 100644 backend/plugins/claude_code/api/scope_config.go
create mode 100644 backend/plugins/claude_code/api/test_connection.go
create mode 100644 backend/plugins/claude_code/claude_code.go
copy backend/plugins/{argocd/models/migrationscripts/register.go => claude_code/impl/connection_helper.go} (75%)
create mode 100644 backend/plugins/claude_code/impl/impl.go
copy backend/plugins/{github/models/account.go => claude_code/models/activity_summary.go} (51%)
create mode 100644 backend/plugins/claude_code/models/chat_project.go
create mode 100644 backend/plugins/claude_code/models/connection.go
create mode 100644 backend/plugins/claude_code/models/connection_test.go
copy backend/plugins/{github/models/account.go => claude_code/models/connector_usage.go} (54%)
create mode 100644 backend/plugins/claude_code/models/migrationscripts/20260309_initialize.go
create mode 100644 backend/plugins/claude_code/models/migrationscripts/20260319_add_custom_headers.go
create mode 100644 backend/plugins/claude_code/models/migrationscripts/20260319_replace_analytics_tables.go
copy backend/plugins/{circleci => claude_code}/models/migrationscripts/register.go (82%)
copy backend/plugins/{gitextractor/models/diffline.go => claude_code/models/models.go} (64%)
create mode 100644 backend/plugins/claude_code/models/scope.go
copy backend/{server/api/shared/gin_utils.go => plugins/claude_code/models/scope_config.go} (59%)
copy backend/plugins/{github/models/account.go => claude_code/models/skill_usage.go} (55%)
create mode 100644 backend/plugins/claude_code/models/user_activity.go
create mode 100644 backend/plugins/claude_code/service/connection_test_helper.go
copy backend/plugins/{gh-copilot/tasks/org_metrics_collector.go => claude_code/tasks/activity_summary_collector.go} (50%)
create mode 100644 backend/plugins/claude_code/tasks/activity_summary_extractor.go
copy backend/plugins/{gh-copilot => claude_code}/tasks/api_client.go (73%)
copy backend/plugins/{gh-copilot/tasks/org_metrics_collector.go => claude_code/tasks/chat_project_collector.go} (51%)
create mode 100644 backend/plugins/claude_code/tasks/chat_project_extractor.go
create mode 100644 backend/plugins/claude_code/tasks/collector_utils.go
create mode 100644 backend/plugins/claude_code/tasks/collector_utils_test.go
copy backend/plugins/{gh-copilot/tasks/org_metrics_collector.go => claude_code/tasks/connector_usage_collector.go} (51%)
create mode 100644 backend/plugins/claude_code/tasks/connector_usage_extractor.go
copy backend/plugins/{azuredevops_go/models/migrationscripts/register.go => claude_code/tasks/options.go} (75%)
copy backend/plugins/{gh-copilot => claude_code}/tasks/register.go (72%)
copy backend/plugins/{gh-copilot => claude_code}/tasks/retry_after.go (100%)
copy backend/plugins/{gh-copilot/tasks/org_metrics_collector.go => claude_code/tasks/skill_usage_collector.go} (51%)
create mode 100644 backend/plugins/claude_code/tasks/skill_usage_extractor.go
create mode 100644 backend/plugins/claude_code/tasks/subtasks.go
copy backend/plugins/{argocd/models/migrationscripts/register.go => claude_code/tasks/task_data.go} (75%)
copy backend/plugins/{gh-copilot/tasks/org_metrics_collector.go => claude_code/tasks/user_activity_collector.go} (51%)
create mode 100644 backend/plugins/claude_code/tasks/user_activity_extractor.go
create mode 100644 backend/plugins/claude_code/tasks/user_activity_extractor_test.go
create mode 100644 backend/plugins/clickup/README.md
copy backend/plugins/{tapd => clickup}/api/blueprint_v200.go (74%)
create mode 100644 backend/plugins/clickup/api/connection_api.go
create mode 100644 backend/plugins/clickup/api/init.go
create mode 100644 backend/plugins/clickup/api/remote_api.go
create mode 100644 backend/plugins/clickup/api/scope_api.go
create mode 100644 backend/plugins/clickup/api/scope_config_api.go
create mode 100644 backend/plugins/clickup/clickup.go
create mode 100644 backend/plugins/clickup/impl/impl.go
copy backend/plugins/{asana => clickup}/models/connection.go (52%)
create mode 100644 backend/plugins/clickup/models/folder.go
create mode 100644 backend/plugins/clickup/models/list.go
copy backend/plugins/{testmo/models/migrationscripts/20250629_add_scope_config_id_to_projects.go => clickup/models/migrationscripts/20260720_add_init_tables.go} (59%)
create mode 100644 backend/plugins/clickup/models/migrationscripts/20260722_add_folder_scope.go
create mode 100644 backend/plugins/clickup/models/migrationscripts/20260723_add_list_type_patterns.go
create mode 100644 backend/plugins/clickup/models/migrationscripts/archived/models.go
copy backend/plugins/{azuredevops_go => clickup}/models/migrationscripts/register.go (95%)
create mode 100644 backend/plugins/clickup/models/scope_config.go
create mode 100644 backend/plugins/clickup/models/task.go
copy backend/plugins/{github/models/account.go => clickup/models/task_comment.go} (51%)
copy backend/{server/api/shared/gin_utils.go => plugins/clickup/models/user.go} (58%)
copy backend/plugins/{sonarqube/tasks/task_data.go => clickup/tasks/api_client.go} (53%)
create mode 100644 backend/plugins/clickup/tasks/folder_convertor.go
create mode 100644 backend/plugins/clickup/tasks/list_collector.go
create mode 100644 backend/plugins/clickup/tasks/list_extractor.go
create mode 100644 backend/plugins/clickup/tasks/shared.go
create mode 100644 backend/plugins/clickup/tasks/shared_test.go
create mode 100644 backend/plugins/clickup/tasks/sprint_convertor.go
create mode 100644 backend/plugins/clickup/tasks/task_collector.go
create mode 100644 backend/plugins/clickup/tasks/task_convertor.go
create mode 100644 backend/plugins/clickup/tasks/task_convertor_test.go
create mode 100644 backend/plugins/clickup/tasks/task_data.go
create mode 100644 backend/plugins/clickup/tasks/task_extractor.go
copy backend/plugins/{azuredevops_go/tasks/account_collector.go => clickup/tasks/user_collector.go} (50%)
create mode 100644 backend/plugins/clickup/tasks/user_convertor.go
create mode 100644 backend/plugins/clickup/tasks/user_extractor.go
create mode 100644 backend/plugins/customize/tasks/customized_fields_extractor_test.go
create mode 100644 backend/plugins/dbt/tasks/options.go
create mode 100644 backend/plugins/dbt/tasks/options_test.go
create mode 100644 backend/plugins/gh-copilot/e2e/metrics/snapshot_tables/_tool_copilot_enterprise_ai_credit_usage.csv
create mode 100644 backend/plugins/gh-copilot/e2e/metrics/snapshot_tables/_tool_copilot_org_ai_credit_usage.csv
create mode 100644 backend/plugins/gh-copilot/e2e/metrics/snapshot_tables/_tool_copilot_user_ai_credit_usage.csv
create mode 100644 backend/plugins/gh-copilot/models/enterprise_ai_credit_usage.go
create mode 100644 backend/plugins/gh-copilot/models/migrationscripts/20260527_add_copilot_metrics_gaps.go
create mode 100644 backend/plugins/gh-copilot/models/migrationscripts/20260708_add_ai_credit_usage_metrics.go
create mode 100644 backend/plugins/gh-copilot/models/migrationscripts/20260731_fix_ai_credit_usage_breakdown_columns.go
create mode 100644 backend/plugins/gh-copilot/models/org_ai_credit_usage.go
create mode 100644 backend/plugins/gh-copilot/models/user_ai_credit_usage.go
create mode 100644 backend/plugins/gh-copilot/models/user_team.go
copy backend/plugins/{argocd/models/migrationscripts/register.go => gh-copilot/service/api_path.go} (77%)
copy backend/{server/api/shared/gin_utils.go => plugins/gh-copilot/service/api_path_test.go} (72%)
copy backend/plugins/gh-copilot/tasks/{org_metrics_collector.go => ai_credit_collector.go} (60%)
create mode 100644 backend/plugins/gh-copilot/tasks/ai_credit_extractor.go
copy backend/plugins/{argocd/models/migrationscripts/register.go => gh-copilot/tasks/api_path.go} (77%)
copy backend/{server/api/shared/gin_utils.go => plugins/gh-copilot/tasks/api_path_test.go} (72%)
copy backend/plugins/gh-copilot/tasks/{user_metrics_collector.go => user_teams_collector.go} (74%)
create mode 100644 backend/plugins/gh-copilot/tasks/user_teams_extractor.go
create mode 100644 backend/plugins/gitextractor/parser/repo_gogit_test.go
create mode 100644 backend/plugins/github/api/scope_duplicates_api.go
create mode 100644 backend/plugins/github/api/scope_duplicates_api_test.go
create mode 100644 backend/plugins/github/e2e/issue_field_value_test.go
create mode 100644 backend/plugins/github/e2e/raw_tables/_raw_github_api_issue_field_values.csv
create mode 100644 backend/plugins/github/e2e/snapshot_tables/_tool_github_issue_field_values.csv
create mode 100644 backend/plugins/github/e2e/snapshot_tables/issues_with_field_values.csv
create mode 100644 backend/plugins/github/models/issue_field_value.go
create mode 100644 backend/plugins/github/models/migrationscripts/20260809_add_github_issue_fields.go
create mode 100644 backend/plugins/github/models/migrationscripts/20260819_expand_text_columns.go
create mode 100644 backend/plugins/github/models/migrationscripts/20260819_expand_text_columns_test.go
create mode 100644 backend/plugins/github/models/text_columns_test.go
create mode 100644 backend/plugins/github/tasks/cicd_run_collector_test.go
create mode 100644 backend/plugins/github/tasks/http_client.go
create mode 100644 backend/plugins/github/tasks/issue_field_mapping.go
create mode 100644 backend/plugins/github/tasks/issue_field_mapping_test.go
create mode 100644 backend/plugins/github/tasks/issue_field_value_collector.go
create mode 100644 backend/plugins/github/tasks/issue_field_value_extractor.go
create mode 100644 backend/plugins/github/tasks/issue_field_value_extractor_test.go
create mode 100644 backend/plugins/github_graphql/tasks/graphql_client.go
create mode 100644 backend/plugins/github_graphql/tasks/issue_collector_test.go
create mode 100644 backend/plugins/gitlab/api/scope_duplicates_api.go
create mode 100644 backend/plugins/gitlab/api/scope_duplicates_api_test.go
copy backend/plugins/{testmo/models/migrationscripts/20250629_add_scope_config_id_to_projects.go => gitlab/models/migrationscripts/20260812_add_mr_commit_updated_at.go} (62%)
copy backend/plugins/{testmo/models/migrationscripts/20250629_add_scope_config_id_to_projects.go => gitlab/models/migrationscripts/add_additions_deletions_to_mr.go} (61%)
copy backend/plugins/{tapd => incidentio}/api/blueprint_v200.go (72%)
copy backend/plugins/{opsgenie => incidentio}/api/connection_api.go (57%)
create mode 100644 backend/plugins/incidentio/api/init.go
create mode 100644 backend/plugins/incidentio/api/remote_api.go
create mode 100644 backend/plugins/incidentio/api/scope_api.go
copy backend/plugins/{testmo/models/migrationscripts/20250629_add_scope_config_id_to_projects.go => incidentio/api/scope_state_api.go} (53%)
copy backend/plugins/{asana/models/migrationscripts/register.go => incidentio/api/swagger.go} (62%)
create mode 100644 backend/plugins/incidentio/e2e/incident_test.go
create mode 100644 backend/plugins/incidentio/e2e/raw_tables/_raw_incidentio_incidents.csv
create mode 100644 backend/plugins/incidentio/e2e/snapshot_tables/_tool_incidentio_incident_types.csv
create mode 100644 backend/plugins/incidentio/e2e/snapshot_tables/_tool_incidentio_incidents.csv
create mode 100644 backend/plugins/incidentio/e2e/snapshot_tables/board_issues.csv
create mode 100644 backend/plugins/incidentio/e2e/snapshot_tables/boards.csv
create mode 100644 backend/plugins/incidentio/e2e/snapshot_tables/issues.csv
create mode 100644 backend/plugins/incidentio/impl/impl.go
copy backend/plugins/{asana/models/migrationscripts/register.go => incidentio/incidentio.go} (54%)
copy backend/plugins/{asana => incidentio}/models/connection.go (55%)
copy backend/{server/api/shared/gin_utils.go => plugins/incidentio/models/incident.go} (58%)
copy backend/{helpers/srvhelper/scope_service_helper_test.go => plugins/incidentio/models/incident_type.go} (54%)
copy backend/plugins/{testmo/models/migrationscripts/20250629_add_scope_config_id_to_projects.go => incidentio/models/migrationscripts/20260729_add_init_tables.go} (61%)
copy backend/plugins/{azuredevops_go => incidentio}/models/migrationscripts/archived/connection.go (62%)
copy backend/plugins/{azuredevops_go/models/migrationscripts/archived/connection.go => incidentio/models/migrationscripts/archived/incident.go} (60%)
copy backend/plugins/{azuredevops_go/models/migrationscripts/archived/connection.go => incidentio/models/migrationscripts/archived/incident_type.go} (63%)
copy backend/plugins/{azuredevops_go/models/migrationscripts/archived/connection.go => incidentio/models/migrationscripts/archived/scope_config.go} (58%)
copy backend/plugins/{argocd => incidentio}/models/migrationscripts/register.go (93%)
create mode 100644 backend/plugins/incidentio/models/raw/incident.go
copy backend/plugins/{circleci/models/migrationscripts/register.go => incidentio/models/raw/incident_type.go} (74%)
copy backend/{server/api/shared/gin_utils.go => plugins/incidentio/models/scope_config.go} (79%)
create mode 100644 backend/plugins/incidentio/tasks/incident_type_converter.go
create mode 100644 backend/plugins/incidentio/tasks/incident_types_collector.go
create mode 100644 backend/plugins/incidentio/tasks/incident_types_extractor.go
create mode 100644 backend/plugins/incidentio/tasks/incidents_collector.go
create mode 100644 backend/plugins/incidentio/tasks/incidents_collector_test.go
create mode 100644 backend/plugins/incidentio/tasks/incidents_converter.go
create mode 100644 backend/plugins/incidentio/tasks/incidents_converter_test.go
create mode 100644 backend/plugins/incidentio/tasks/incidents_extractor.go
create mode 100644 backend/plugins/incidentio/tasks/incidents_extractor_test.go
create mode 100644 backend/plugins/incidentio/tasks/task_data.go
create mode 100644 backend/plugins/jira/api/connection_api_test.go
create mode 100644 backend/plugins/jira/e2e/issue_changelog_board_scope_test.go
create mode 100644 backend/plugins/jira/e2e/migration_schema_test.go
copy backend/plugins/{testmo/models/migrationscripts/20250629_add_scope_config_id_to_projects.go => jira/models/migrationscripts/20260611_add_sub_query_to_boards.go} (63%)
copy backend/plugins/{q_dev/models/migrationscripts/20251123_add_scope_config_id_to_s3_slice.go => jira/models/migrationscripts/20260702_add_extra_jql_to_scope_config.go} (59%)
copy backend/plugins/{q_dev/models/migrationscripts/20251123_add_scope_config_id_to_s3_slice.go => jira/models/migrationscripts/20260707_change_fix_versions_to_text.go} (58%)
create mode 100644 backend/plugins/jira/models/migrationscripts/20260722_add_sprint_report_table.go
create mode 100644 backend/plugins/jira/models/migrationscripts/20260727_add_raw_data_columns_to_sprint_report.go
create mode 100644 backend/plugins/jira/models/sprint_report.go
create mode 100644 backend/plugins/jira/tasks/apiv2models/sprint_report.go
create mode 100644 backend/plugins/jira/tasks/board_filter_begin_collector_test.go
create mode 100644 backend/plugins/jira/tasks/issue_changelog_convertor_test.go
create mode 100644 backend/plugins/jira/tasks/issue_extractor_test.go
create mode 100644 backend/plugins/jira/tasks/sprint_report_collector.go
create mode 100644 backend/plugins/jira/tasks/sprint_report_convertor.go
create mode 100644 backend/plugins/jira/tasks/sprint_report_extractor.go
create mode 100644 backend/plugins/kiro/models/chat_log.go
create mode 100644 backend/plugins/kiro/models/completion_log.go
create mode 100644 backend/plugins/kiro/models/connection.go
create mode 100644 backend/plugins/kiro/models/connection_test.go
copy backend/plugins/{q_dev/models/migrationscripts/20251123_add_scope_config_id_to_s3_slice.go => kiro/models/migrationscripts/20260729_init.go} (58%)
create mode 100644 backend/plugins/kiro/models/migrationscripts/archived/init.go
copy backend/plugins/{azuredevops_go => kiro}/models/migrationscripts/register.go (88%)
create mode 100644 backend/plugins/kiro/models/s3_file_meta.go
create mode 100644 backend/plugins/kiro/models/s3_slice.go
create mode 100644 backend/plugins/kiro/models/s3_slice_test.go
create mode 100644 backend/plugins/kiro/models/user_model_messages.go
create mode 100644 backend/plugins/kiro/models/user_report.go
create mode 100644 backend/plugins/kiro/tasks/normalize.go
create mode 100644 backend/plugins/kiro/tasks/normalize_test.go
create mode 100644 backend/plugins/kiro/tasks/testdata/user_report/01_earliest_no_email_no_newuser.csv
create mode 100644 backend/plugins/kiro/tasks/testdata/user_report/02_standard_cli.csv
create mode 100644 backend/plugins/kiro/tasks/testdata/user_report/03_standard_ide.csv
create mode 100644 backend/plugins/kiro/tasks/testdata/user_report/04_newuser_after_models.csv
create mode 100644 backend/plugins/kiro/tasks/testdata/user_report/05_prefixed_userid_upper_bool.csv
create mode 100644 backend/plugins/kiro/tasks/testdata/user_report/06_two_users.csv
create mode 100644 backend/plugins/kiro/tasks/testdata/user_report/07_kiro_web_nonzero_overage.csv
create mode 100644 backend/plugins/kiro/tasks/testdata/user_report/08_plugin_multi_model.csv
create mode 100644 backend/plugins/kiro/tasks/user_report_parser.go
create mode 100644 backend/plugins/kiro/tasks/user_report_parser_test.go
create mode 100644 backend/plugins/linear/README.md
copy backend/plugins/{tapd => linear}/api/blueprint_v200.go (74%)
create mode 100644 backend/plugins/linear/api/blueprint_v200_test.go
create mode 100644 backend/plugins/linear/api/connection_api.go
create mode 100644 backend/plugins/linear/api/init.go
create mode 100644 backend/plugins/linear/api/remote_api.go
create mode 100644 backend/plugins/linear/api/remote_api_test.go
create mode 100644 backend/plugins/linear/api/scope_api.go
create mode 100644 backend/plugins/linear/api/scope_config_api.go
create mode 100644 backend/plugins/linear/e2e/account_test.go
create mode 100644 backend/plugins/linear/e2e/board_test.go
create mode 100644 backend/plugins/linear/e2e/comment_test.go
create mode 100644 backend/plugins/linear/e2e/cycle_test.go
create mode 100644 backend/plugins/linear/e2e/issue_history_leadtime_test.go
create mode 100644 backend/plugins/linear/e2e/issue_history_test.go
create mode 100644 backend/plugins/linear/e2e/issue_incident_test.go
create mode 100644 backend/plugins/linear/e2e/issue_leadtime_test.go
create mode 100644 backend/plugins/linear/e2e/issue_longtitle_test.go
create mode 100644 backend/plugins/linear/e2e/issue_test.go
create mode 100644 backend/plugins/linear/e2e/label_test.go
create mode 100644 backend/plugins/linear/e2e/raw_tables/_raw_linear_accounts.csv
create mode 100644 backend/plugins/linear/e2e/raw_tables/_raw_linear_comments.csv
create mode 100644 backend/plugins/linear/e2e/raw_tables/_raw_linear_cycles.csv
create mode 100644 backend/plugins/linear/e2e/raw_tables/_raw_linear_issue_history.csv
create mode 100644 backend/plugins/linear/e2e/raw_tables/_raw_linear_issues.csv
create mode 100644 backend/plugins/linear/e2e/raw_tables/_raw_linear_issues_long_title.csv
create mode 100644 backend/plugins/linear/e2e/raw_tables/_raw_linear_issues_negative_leadtime.csv
create mode 100644 backend/plugins/linear/e2e/raw_tables/_raw_linear_workflow_states.csv
create mode 100644 backend/plugins/linear/e2e/snapshot_tables/_tool_linear_accounts.csv
create mode 100644 backend/plugins/linear/e2e/snapshot_tables/_tool_linear_comments.csv
create mode 100644 backend/plugins/linear/e2e/snapshot_tables/_tool_linear_cycles.csv
create mode 100644 backend/plugins/linear/e2e/snapshot_tables/_tool_linear_issue_history.csv
create mode 100644 backend/plugins/linear/e2e/snapshot_tables/_tool_linear_issue_labels.csv
create mode 100644 backend/plugins/linear/e2e/snapshot_tables/_tool_linear_issues.csv
create mode 100644 backend/plugins/linear/e2e/snapshot_tables/_tool_linear_teams.csv
create mode 100644 backend/plugins/linear/e2e/snapshot_tables/_tool_linear_workflow_states.csv
create mode 100644 backend/plugins/linear/e2e/snapshot_tables/accounts.csv
create mode 100644 backend/plugins/linear/e2e/snapshot_tables/board_issues.csv
create mode 100644 backend/plugins/linear/e2e/snapshot_tables/board_sprints.csv
create mode 100644 backend/plugins/linear/e2e/snapshot_tables/boards.csv
create mode 100644 backend/plugins/linear/e2e/snapshot_tables/issue_assignees.csv
create mode 100644 backend/plugins/linear/e2e/snapshot_tables/issue_changelogs.csv
create mode 100644 backend/plugins/linear/e2e/snapshot_tables/issue_comments.csv
create mode 100644 backend/plugins/linear/e2e/snapshot_tables/issue_labels.csv
create mode 100644 backend/plugins/linear/e2e/snapshot_tables/issues.csv
create mode 100644 backend/plugins/linear/e2e/snapshot_tables/issues_history_leadtime.csv
create mode 100644 backend/plugins/linear/e2e/snapshot_tables/issues_incident.csv
create mode 100644 backend/plugins/linear/e2e/snapshot_tables/issues_negative_leadtime.csv
create mode 100644 backend/plugins/linear/e2e/snapshot_tables/sprint_issues.csv
create mode 100644 backend/plugins/linear/e2e/snapshot_tables/sprint_issues_after_leaving_cycle.csv
create mode 100644 backend/plugins/linear/e2e/snapshot_tables/sprints.csv
create mode 100644 backend/plugins/linear/e2e/sprint_issue_test.go
create mode 100644 backend/plugins/linear/e2e/workflow_state_test.go
create mode 100644 backend/plugins/linear/impl/impl.go
copy backend/plugins/{azuredevops_go/models/migrationscripts/archived/connection.go => linear/impl/impl_test.go} (53%)
create mode 100644 backend/plugins/linear/linear.go
copy backend/plugins/{sonarqube/models/sonarqube_issue_code_block.go => linear/models/account.go} (57%)
copy backend/plugins/{asana => linear}/models/connection.go (53%)
copy backend/{server/api/shared/gin_utils.go => plugins/linear/models/cycle.go} (56%)
create mode 100644 backend/plugins/linear/models/issue.go
copy backend/{server/api/shared/gin_utils.go => plugins/linear/models/issue_comment.go} (57%)
create mode 100644 backend/plugins/linear/models/issue_history.go
copy backend/plugins/{sonarqube/models/sonarqube_issue_code_block.go => linear/models/issue_label.go} (63%)
copy backend/plugins/{q_dev/models/migrationscripts/20251123_add_scope_config_id_to_s3_slice.go => linear/models/migrationscripts/20260601_add_init_tables.go} (55%)
create mode 100644 backend/plugins/linear/models/migrationscripts/archived/models.go
copy backend/plugins/{feishu => linear}/models/migrationscripts/register.go (100%)
create mode 100644 backend/plugins/linear/models/scope_config.go
copy backend/plugins/{jira/models/board.go => linear/models/team.go} (50%)
copy backend/plugins/{github/models/account.go => linear/models/workflow_state.go} (55%)
create mode 100644 backend/plugins/linear/tasks/account_collector.go
create mode 100644 backend/plugins/linear/tasks/account_convertor.go
create mode 100644 backend/plugins/linear/tasks/account_extractor.go
create mode 100644 backend/plugins/linear/tasks/api_client.go
create mode 100644 backend/plugins/linear/tasks/board_convertor.go
create mode 100644 backend/plugins/linear/tasks/comment_collector.go
create mode 100644 backend/plugins/linear/tasks/comment_convertor.go
create mode 100644 backend/plugins/linear/tasks/comment_extractor.go
create mode 100644 backend/plugins/linear/tasks/cycle_collector.go
create mode 100644 backend/plugins/linear/tasks/cycle_convertor.go
create mode 100644 backend/plugins/linear/tasks/cycle_extractor.go
create mode 100644 backend/plugins/linear/tasks/issue_collector.go
copy backend/{core/models/domainlayer/crossdomain/account.go => plugins/linear/tasks/issue_collector_test.go} (50%)
create mode 100644 backend/plugins/linear/tasks/issue_convertor.go
create mode 100644 backend/plugins/linear/tasks/issue_extractor.go
create mode 100644 backend/plugins/linear/tasks/issue_history_collector.go
create mode 100644 backend/plugins/linear/tasks/issue_history_convertor.go
create mode 100644 backend/plugins/linear/tasks/issue_history_extractor.go
copy backend/plugins/{github/tasks/issue_label_convertor.go => linear/tasks/label_convertor.go} (52%)
create mode 100644 backend/plugins/linear/tasks/shared.go
copy backend/plugins/{gh-copilot/models/seat.go => linear/tasks/shared_clauses_test.go} (50%)
create mode 100644 backend/plugins/linear/tasks/shared_test.go
create mode 100644 backend/plugins/linear/tasks/sprint_issue_convertor.go
create mode 100644 backend/plugins/linear/tasks/task_data.go
create mode 100644 backend/plugins/linear/tasks/workflow_state_collector.go
create mode 100644 backend/plugins/linear/tasks/workflow_state_extractor.go
copy backend/plugins/linker/e2e/snapshot_tables/{board_issues.csv => cross_project_board_issues.csv} (73%)
create mode 100644 backend/plugins/linker/e2e/snapshot_tables/cross_project_issues.csv
create mode 100644 backend/plugins/linker/e2e/snapshot_tables/cross_project_project_mapping.csv
copy backend/plugins/linker/e2e/snapshot_tables/{pull_request_issues.csv => cross_project_pull_request_issues_after.csv} (53%)
create mode 100644 backend/plugins/linker/e2e/snapshot_tables/cross_project_pull_request_issues_before.csv
copy backend/plugins/linker/e2e/snapshot_tables/{pull_requests.csv => cross_project_pull_requests.csv} (60%)
create mode 100644 backend/plugins/org/impl/impl_test.go
copy backend/plugins/q_dev/models/migrationscripts/{20251123_add_scope_config_id_to_s3_slice.go => 20260319_add_logging_fields.go} (58%)
copy backend/plugins/{tapd => rootly}/api/blueprint_v200.go (73%)
copy backend/plugins/{opsgenie => rootly}/api/connection_api.go (57%)
create mode 100644 backend/plugins/rootly/api/init.go
create mode 100644 backend/plugins/rootly/api/remote_api.go
create mode 100644 backend/plugins/rootly/api/scope_api.go
copy backend/plugins/{testmo/models/migrationscripts/20250629_add_scope_config_id_to_projects.go => rootly/api/scope_state_api.go} (54%)
copy backend/plugins/{asana/models/migrationscripts/register.go => rootly/api/swagger.go} (64%)
create mode 100644 backend/plugins/rootly/e2e/incident_test.go
create mode 100644 backend/plugins/rootly/e2e/raw_tables/_raw_rootly_incidents.csv
create mode 100644 backend/plugins/rootly/e2e/snapshot_tables/_tool_rootly_incidents.csv
create mode 100644 backend/plugins/rootly/e2e/snapshot_tables/_tool_rootly_services.csv
create mode 100644 backend/plugins/rootly/e2e/snapshot_tables/_tool_rootly_users.csv
create mode 100644 backend/plugins/rootly/e2e/snapshot_tables/board_issues.csv
create mode 100644 backend/plugins/rootly/e2e/snapshot_tables/boards.csv
create mode 100644 backend/plugins/rootly/e2e/snapshot_tables/issue_assignees.csv
create mode 100644 backend/plugins/rootly/e2e/snapshot_tables/issues.csv
create mode 100644 backend/plugins/rootly/impl/impl.go
copy backend/plugins/{asana => rootly}/models/connection.go (56%)
create mode 100644 backend/plugins/rootly/models/incident.go
copy backend/plugins/{testmo/models/migrationscripts/20250629_add_scope_config_id_to_projects.go => rootly/models/migrationscripts/20260512_add_init_tables.go} (61%)
copy backend/plugins/{azuredevops_go => rootly}/models/migrationscripts/archived/connection.go (62%)
copy backend/plugins/{jenkins/models/migrationscripts/archived/build.go => rootly/models/migrationscripts/archived/incident.go} (57%)
copy backend/plugins/{azuredevops_go/models/migrationscripts/archived/connection.go => rootly/models/migrationscripts/archived/scope_config.go} (59%)
copy backend/plugins/{azuredevops_go/models/migrationscripts/archived/connection.go => rootly/models/migrationscripts/archived/service.go} (63%)
copy backend/plugins/{teambition/models/migrationscripts/register.go => rootly/models/migrationscripts/archived/user.go} (68%)
copy backend/plugins/{argocd => rootly}/models/migrationscripts/register.go (93%)
create mode 100644 backend/plugins/rootly/models/raw/incident.go
copy backend/plugins/{gitextractor/models/diffline.go => rootly/models/raw/service.go} (62%)
copy backend/{server/api/shared/gin_utils.go => plugins/rootly/models/scope_config.go} (79%)
copy backend/{helpers/srvhelper/scope_service_helper_test.go => plugins/rootly/models/service.go} (54%)
copy backend/plugins/{sonarqube/models/sonarqube_issue_code_block.go => rootly/models/user.go} (71%)
copy backend/plugins/{asana/models/migrationscripts/register.go => rootly/rootly.go} (54%)
create mode 100644 backend/plugins/rootly/tasks/incidents_collector.go
create mode 100644 backend/plugins/rootly/tasks/incidents_collector_test.go
create mode 100644 backend/plugins/rootly/tasks/incidents_converter.go
create mode 100644 backend/plugins/rootly/tasks/incidents_converter_test.go
create mode 100644 backend/plugins/rootly/tasks/incidents_extractor.go
create mode 100644 backend/plugins/rootly/tasks/incidents_extractor_test.go
create mode 100644 backend/plugins/rootly/tasks/service_converter.go
create mode 100644 backend/plugins/rootly/tasks/services_collector.go
create mode 100644 backend/plugins/rootly/tasks/services_extractor.go
create mode 100644 backend/plugins/rootly/tasks/task_data.go
create mode 100644 backend/plugins/schema_e2e/migration_schema_test.go
create mode 100644 backend/plugins/schema_e2e/migration_upgrade_path_test.go
copy backend/plugins/{argocd/models/migrationscripts/register.go => sonarqube/api/remote_api_test.go} (58%)
create mode 100644 backend/plugins/sonarqube/e2e/issue_code_block_long_component_test.go
create mode 100644 backend/plugins/sonarqube/models/connection_test.go
copy backend/plugins/{testmo/models/migrationscripts/20250629_add_scope_config_id_to_projects.go => sonarqube/models/migrationscripts/20260701_change_issue_code_block_component_type.go} (59%)
create mode 100644 backend/plugins/sonarqube/models/migrationscripts/20260707_add_project_metrics_history.go
copy backend/{server/api/shared/gin_utils.go => plugins/sonarqube/models/sonarqube_project_analyses.go} (57%)
copy backend/{server/api/shared/gin_utils.go => plugins/sonarqube/models/sonarqube_project_metrics_history.go} (64%)
copy backend/plugins/{q_dev/models/migrationscripts/20251123_add_scope_config_id_to_s3_slice.go => sonarqube/tasks/issue_code_blocks_convertor_test.go} (52%)
copy backend/plugins/{github/tasks/comment_collector.go => sonarqube/tasks/project_analyses_collector.go} (57%)
create mode 100644 backend/plugins/sonarqube/tasks/project_analyses_extractor.go
copy backend/plugins/{github/tasks/comment_collector.go => sonarqube/tasks/project_metrics_history_collector.go} (52%)
create mode 100644 backend/plugins/sonarqube/tasks/project_metrics_history_convertor.go
create mode 100644 backend/plugins/sonarqube/tasks/project_metrics_history_extractor.go
create mode 100644 backend/plugins/starrocks/tasks/tasks_test.go
copy backend/plugins/{tapd => taiga}/api/blueprint_v200.go (60%)
create mode 100644 backend/plugins/taiga/api/connection_api.go
create mode 100644 backend/plugins/taiga/api/init.go
create mode 100644 backend/plugins/taiga/api/remote_api.go
create mode 100644 backend/plugins/taiga/api/scope_api.go
create mode 100644 backend/plugins/taiga/api/scope_config_api.go
create mode 100644 backend/plugins/taiga/e2e/epic_test.go
create mode 100644 backend/plugins/taiga/e2e/issue_test.go
create mode 100644 backend/plugins/taiga/e2e/project_test.go
create mode 100644 backend/plugins/taiga/e2e/raw_tables/_raw_taiga_api_epics.csv
create mode 100644 backend/plugins/taiga/e2e/raw_tables/_raw_taiga_api_issues.csv
create mode 100644 backend/plugins/taiga/e2e/raw_tables/_raw_taiga_api_projects.csv
create mode 100644 backend/plugins/taiga/e2e/raw_tables/_raw_taiga_api_tasks.csv
create mode 100644 backend/plugins/taiga/e2e/raw_tables/_raw_taiga_api_user_stories.csv
create mode 100644 backend/plugins/taiga/e2e/snapshot_tables/_tool_taiga_epics.csv
create mode 100644 backend/plugins/taiga/e2e/snapshot_tables/_tool_taiga_issues.csv
create mode 100644 backend/plugins/taiga/e2e/snapshot_tables/_tool_taiga_projects.csv
create mode 100644 backend/plugins/taiga/e2e/snapshot_tables/_tool_taiga_tasks.csv
create mode 100644 backend/plugins/taiga/e2e/snapshot_tables/_tool_taiga_user_stories.csv
create mode 100644 backend/plugins/taiga/e2e/snapshot_tables/board_issues_from_epics.csv
create mode 100644 backend/plugins/taiga/e2e/snapshot_tables/board_issues_from_issues.csv
create mode 100644 backend/plugins/taiga/e2e/snapshot_tables/board_issues_from_tasks.csv
create mode 100644 backend/plugins/taiga/e2e/snapshot_tables/board_issues_from_user_stories.csv
create mode 100644 backend/plugins/taiga/e2e/snapshot_tables/boards.csv
create mode 100644 backend/plugins/taiga/e2e/snapshot_tables/issues_from_epics.csv
create mode 100644 backend/plugins/taiga/e2e/snapshot_tables/issues_from_issues.csv
create mode 100644 backend/plugins/taiga/e2e/snapshot_tables/issues_from_tasks.csv
create mode 100644 backend/plugins/taiga/e2e/snapshot_tables/issues_from_user_stories.csv
create mode 100644 backend/plugins/taiga/e2e/task_test.go
create mode 100644 backend/plugins/taiga/e2e/user_story_test.go
create mode 100644 backend/plugins/taiga/impl/impl.go
create mode 100644 backend/plugins/taiga/models/connection.go
copy backend/plugins/{github/models/account.go => taiga/models/epic.go} (51%)
create mode 100644 backend/plugins/taiga/models/issue.go
create mode 100644 backend/plugins/taiga/models/migrationscripts/20250220_add_init_tables.go
create mode 100644 backend/plugins/taiga/models/migrationscripts/20260306_add_task_issue_epic_tables.go
create mode 100644 backend/plugins/taiga/models/migrationscripts/20260727_add_missing_scope_config_columns.go
copy backend/plugins/{azuredevops_go => taiga}/models/migrationscripts/register.go (90%)
create mode 100644 backend/plugins/taiga/models/project.go
create mode 100644 backend/plugins/taiga/models/scope_config.go
create mode 100644 backend/plugins/taiga/models/task.go
create mode 100644 backend/plugins/taiga/models/user_story.go
create mode 100644 backend/plugins/taiga/taiga.go
copy backend/plugins/{testmo/models/migrationscripts/20250629_add_scope_config_id_to_projects.go => taiga/tasks/api_client.go} (55%)
copy backend/plugins/{sonarqube/tasks/accounts_collector.go => taiga/tasks/epic_collector.go} (50%)
create mode 100644 backend/plugins/taiga/tasks/epic_convertor.go
create mode 100644 backend/plugins/taiga/tasks/epic_extractor.go
copy backend/plugins/{sonarqube/tasks/accounts_collector.go => taiga/tasks/issue_collector.go} (50%)
create mode 100644 backend/plugins/taiga/tasks/issue_convertor.go
create mode 100644 backend/plugins/taiga/tasks/issue_extractor.go
create mode 100644 backend/plugins/taiga/tasks/project_collector.go
copy backend/plugins/{github/tasks/issue_label_convertor.go => taiga/tasks/project_convertor.go} (53%)
copy backend/plugins/{github/tasks/cicd_run_extractor.go => taiga/tasks/project_extractor.go} (50%)
copy backend/plugins/{sonarqube/tasks/accounts_collector.go => taiga/tasks/task_collector.go} (50%)
create mode 100644 backend/plugins/taiga/tasks/task_convertor.go
copy backend/plugins/{jira => taiga}/tasks/task_data.go (58%)
create mode 100644 backend/plugins/taiga/tasks/task_extractor.go
create mode 100644 backend/plugins/taiga/tasks/user_story_collector.go
create mode 100644 backend/plugins/taiga/tasks/user_story_convertor.go
create mode 100644 backend/plugins/taiga/tasks/user_story_extractor.go
create mode 100644 backend/plugins/teambition/models/migrationscripts/20260727_add_missing_scope_config_columns.go
copy backend/plugins/{tapd => tempo}/api/blueprint_v200.go (56%)
create mode 100644 backend/plugins/tempo/api/connection.go
create mode 100644 backend/plugins/tempo/api/init.go
create mode 100644 backend/plugins/tempo/api/remote.go
create mode 100644 backend/plugins/tempo/api/scope.go
create mode 100644 backend/plugins/tempo/api/scope_config.go
create mode 100644 backend/plugins/tempo/e2e/raw_tables/_raw_tempo_api_teams.csv
create mode 100644 backend/plugins/tempo/e2e/snapshot_tables/_tool_tempo_teams.csv
create mode 100644 backend/plugins/tempo/e2e/snapshot_tables/_tool_tempo_worklogs.csv
create mode 100644 backend/plugins/tempo/e2e/snapshot_tables/issue_worklogs.csv
create mode 100644 backend/plugins/tempo/e2e/worklog_test.go
create mode 100644 backend/plugins/tempo/impl/impl.go
create mode 100644 backend/plugins/tempo/models/connection.go
create mode 100644 backend/plugins/tempo/models/migrationscripts/archived/models.go
copy backend/plugins/{argocd => tempo}/models/migrationscripts/register.go (92%)
copy backend/plugins/{testmo/models/migrationscripts/20250629_add_scope_config_id_to_projects.go => tempo/models/migrationscripts/register_tables.go} (60%)
create mode 100644 backend/plugins/tempo/models/team.go
create mode 100644 backend/plugins/tempo/models/worklog.go
copy backend/plugins/{testmo/models/migrationscripts/20250629_add_scope_config_id_to_projects.go => tempo/tasks/api_client.go} (59%)
create mode 100644 backend/plugins/tempo/tasks/tasks.go
create mode 100644 backend/plugins/tempo/tasks/team_collector.go
copy backend/plugins/{zentao/tasks/execution_summary_dev_extractor.go => tempo/tasks/team_extractor.go} (53%)
create mode 100644 backend/plugins/tempo/tasks/worklog_collector.go
create mode 100644 backend/plugins/tempo/tasks/worklog_convertor.go
create mode 100644 backend/plugins/tempo/tasks/worklog_extractor.go
copy backend/plugins/{q_dev/models/migrationscripts/20251123_add_scope_config_id_to_s3_slice.go => tempo/tempo.go} (52%)
create mode 100644 backend/plugins/testmo/models/migrationscripts/20260727_add_missing_scope_config_columns.go
create mode 100755 backend/python/uv.sh
create mode 100755 backend/scripts/install-go.sh
create mode 100755 backend/scripts/install-libgit2.sh
create mode 100755 backend/scripts/install-mockery.sh
create mode 100644 backend/server/api/auth/auth.go
create mode 100644 backend/server/api/auth/auth_test.go
create mode 100644 backend/server/api/auth/cleanup.go
create mode 100644 backend/server/api/auth/handlers_test.go
create mode 100644 backend/server/api/auth/middleware.go
create mode 100644 backend/server/api/auth/revocation_cache.go
create mode 100644 backend/server/api/auth/revocation_cache_test.go
create mode 100644 backend/server/api/auth/store.go
create mode 100644 backend/server/api/middlewares_forwardsecret_test.go
create mode 100644 backend/server/api/middlewares_rest_auth_test.go
create mode 100644 backend/server/api/middlewares_test.go
create mode 100644 backend/server/services/pushapiaccess/access.go
create mode 100644 backend/server/services/pushapiaccess/access_test.go
delete mode 100644 config-ui/.eslintignore
create mode 100644 config-ui/.yarn/patches/miller-columns-select-npm-1.4.1-a8bc1f9d49.patch
delete mode 100755 config-ui/.yarn/releases/yarn-3.4.1.cjs
create mode 100755 config-ui/.yarn/releases/yarn-4.17.0.cjs
create mode 100644 config-ui/eslint.config.mjs
create mode 100644 config-ui/src/__tests__/main-entry.test.ts
copy config-ui/src/{routes/blueprint/detail/components/sync-policy/styled.ts => api/auth/index.ts} (58%)
rename config-ui/src/app/{routrer.tsx => router.tsx} (97%)
copy config-ui/{.file-headerrc => src/features/theme/index.ts} (96%)
create mode 100644 config-ui/src/features/theme/slice.ts
create mode 100644 config-ui/src/plugins/components/__tests__/miller-columns-select.test.tsx
create mode 100644 config-ui/src/plugins/register/claude-code/assets/icon.svg
copy config-ui/src/plugins/register/{jira => claude-code}/config.tsx (50%)
create mode 100644 config-ui/src/plugins/register/claude-code/connection-fields/custom-headers.tsx
copy config-ui/src/{features => plugins/register/claude-code/connection-fields}/index.ts (89%)
create mode 100644 config-ui/src/plugins/register/claude-code/connection-fields/organization.tsx
copy config-ui/src/plugins/register/{gh-copilot => claude-code}/connection-fields/styled.ts (100%)
create mode 100644 config-ui/src/plugins/register/claude-code/connection-fields/token.tsx
copy config-ui/src/plugins/register/{opsgenie => claude-code}/index.ts (100%)
copy backend/test/Readme.md => config-ui/src/plugins/register/clickup/assets/icon.svg (73%)
copy config-ui/src/plugins/register/{bitbucket-server => clickup}/config.tsx (50%)
copy config-ui/src/plugins/register/{argocd => clickup}/index.ts (100%)
create mode 100644 config-ui/src/plugins/register/clickup/transformation.tsx
copy backend/plugins/gitextractor/README.md => config-ui/src/plugins/register/incidentio/assets/icon.svg (56%)
copy config-ui/src/plugins/register/{bamboo => incidentio}/config.tsx (58%)
copy config-ui/src/plugins/register/{opsgenie => incidentio}/index.ts (100%)
create mode 100644 config-ui/src/plugins/register/jira/connection-fields/auth.test.ts
create mode 100644 config-ui/src/plugins/register/linear/assets/icon.svg
copy config-ui/src/plugins/register/{bamboo => linear}/config.tsx (56%)
copy config-ui/src/plugins/register/{opsgenie => linear}/index.ts (100%)
create mode 100644 config-ui/src/plugins/register/rootly/assets/icon.svg
copy config-ui/src/plugins/register/{bamboo => rootly}/config.tsx (58%)
copy config-ui/src/plugins/register/{opsgenie => rootly}/index.ts (100%)
create mode 100644 config-ui/src/plugins/register/tempo/assets/icon.png
create mode 100644 config-ui/src/plugins/register/tempo/assets/icon.svg
copy config-ui/src/plugins/register/{jenkins => tempo}/config.tsx (56%)
copy config-ui/src/plugins/register/{opsgenie => tempo}/index.ts (100%)
create mode 100644 config-ui/src/routes/login/index.tsx
create mode 100644 config-ui/src/theme/ThemeProvider.tsx
copy config-ui/src/{features => theme}/index.ts (93%)
copy config-ui/src/{plugins/register/gh-copilot/connection-fields/styled.ts => theme/styled.d.ts} (78%)
create mode 100644 config-ui/src/theme/tokens.ts
rename config-ui/{.eslintrc.js => vitest.config.ts} (66%)
rename config-ui/{.file-headerrc => vitest.setup.ts} (86%)
copy docker-compose-dev.yml => docker-compose-dev-mysql.yml (53%)
rename docker-compose-dev.yml => docker-compose-dev-postgresql.yml (54%)
create mode 100644 e2e/package.json
copy backend/plugins/asana/models/migrationscripts/register.go => e2e/playwright.config.ts (61%)
create mode 100644 e2e/qdev-full-flow.spec.ts
delete mode 100644 grafana/_archive/Daily_Needs_To_Be_Improved.json
delete mode 100644 grafana/_archive/DataSourceSpecificDashboardsHomepage.json
delete mode 100644 grafana/_archive/DeliveryCapability(RequireJenkinsData).json
delete mode 100644 grafana/_archive/DeliveryCost(RequireGitlabData).json
delete mode 100644 grafana/_archive/DeliveryQuality(RequireJiraAndGitlabData).json
delete mode 100644 grafana/_archive/DeliveryVelocity(RequireJiraAndGitlabData).json
delete mode 100644 grafana/_archive/GithubDomainLayerOnly.json
delete mode 100644 grafana/_archive/Gitlab.json
delete mode 100644 grafana/_archive/Jenkins.json
delete mode 100644 grafana/_archive/UserValueSpecificDashboardsHomepage.json
create mode 100644 grafana/dashboards/ClaudeCodeAdoption.json
create mode 100644 grafana/dashboards/ClaudeCodeAdoptionByUser.json
copy grafana/dashboards/{PagerDuty.json => Incidentio.json} (92%)
copy grafana/dashboards/{Asana.json => Linear.json} (94%)
copy grafana/dashboards/{PagerDuty.json => Rootly.json} (94%)
copy grafana/dashboards/{ => mysql}/Asana.json (94%)
copy grafana/dashboards/{ => mysql}/Bamboo.json (95%)
copy grafana/dashboards/{Asana.json => mysql/ClickUp.json} (91%)
rename grafana/dashboards/{ => mysql}/DORA.json (97%)
rename grafana/dashboards/{ => mysql}/GithubCopilotREADME.md (100%)
copy grafana/dashboards/{ => mysql}/Gitlab.json (95%)
copy grafana/dashboards/{ => mysql}/Homepage.json (96%)
copy grafana/dashboards/{ => mysql}/Jenkins.json (95%)
copy grafana/dashboards/{ => mysql}/Jira.json (84%)
copy grafana/dashboards/{ => mysql}/Opsgenie.json (95%)
copy grafana/dashboards/{ => mysql}/Sonarqube.json (72%)
copy grafana/dashboards/{ => mysql}/TAPD.json (94%)
copy grafana/dashboards/{EngineeringOverview.json => mysql/Taiga.json} (52%)
copy grafana/dashboards/{ => mysql}/Teambition.json (94%)
copy grafana/dashboards/{ => mysql}/Testmo.json (94%)
copy grafana/dashboards/{ => mysql}/Zentao.json (94%)
create mode 100644 grafana/dashboards/mysql/ai-cost-efficiency.json
create mode 100644 grafana/dashboards/mysql/ai-model-roi.json
copy grafana/dashboards/{ArgoCD.json => mysql/argo-cd.json} (91%)
copy grafana/dashboards/{AzureDevOps.json => mysql/azure-dev-ops.json} (95%)
copy grafana/dashboards/{BitBucket.json => mysql/bit-bucket.json} (95%)
copy grafana/dashboards/{CircleCI.json => mysql/circle-ci.json} (95%)
copy grafana/dashboards/{ComponentAndFileLevelMetrics.json => mysql/component-and-file-level-metrics.json} (96%)
copy grafana/dashboards/{ContributorExperience.json => mysql/contributor-experience.json} (94%)
copy grafana/dashboards/{DemoAverageRequirementLeadTimeByAssignee.json => mysql/demo-average-requirement-lead-time-by-assignee.json} (97%)
copy grafana/dashboards/{DemoCommitCountByAuthor.json => mysql/demo-commit-count-by-author.json} (97%)
copy grafana/dashboards/{DemoDetailedBugInfo.json => mysql/demo-detailed-bug-info.json} (96%)
copy grafana/dashboards/{DemoHomepage.json => mysql/demo-homepage.json} (98%)
copy grafana/dashboards/{DemoHowFastDoWeRespondToCustomerRequirements.json => mysql/demo-how-fast-do-we-respond-to-customer-requirements.json} (56%)
copy grafana/dashboards/{DemoIsThisMonthMoreProductiveThanLast.json => mysql/demo-is-this-month-more-productive-than-last.json} (97%)
copy grafana/dashboards/{DemoWasOurQualityImprovedOrNot.json => mysql/demo-was-our-quality-improved-or-not.json} (98%)
create mode 100644 grafana/dashboards/mysql/developer-productivity-hours.json
rename grafana/dashboards/{DORAByTeam.json => mysql/dora-by-team.json} (50%)
copy grafana/dashboards/{DORADebug.json => mysql/dora-debug.json} (95%)
copy grafana/dashboards/{DORADetails-ChangeFailureRate.json => mysql/dora-details-change-failure-rate.json} (88%)
rename grafana/dashboards/{DORADetails-DeploymentFrequency.json => mysql/dora-details-deployment-frequency.json} (97%)
copy grafana/dashboards/{DORADetails-FailedDeploymentRecoveryTime.json => mysql/dora-details-failed-deployment-recovery-time.json} (96%)
copy grafana/dashboards/{DORADetails-LeadTimeforChanges.json => mysql/dora-details-lead-timefor-changes.json} (95%)
copy grafana/dashboards/{DORADetails-TimetoRestoreService.json => mysql/dora-details-timeto-restore-service.json} (95%)
copy grafana/dashboards/{EngineeringOverview.json => mysql/engineering-overview.json} (95%)
copy grafana/dashboards/{EngineeringThroughputAndCycleTimeTeamView.json => mysql/engineering-throughput-and-cycle-time-team-view.json} (90%)
copy grafana/dashboards/{EngineeringThroughputAndCycleTime.json => mysql/engineering-throughput-and-cycle-time.json} (96%)
copy grafana/dashboards/{GitHub.json => mysql/git-hub.json} (95%)
create mode 100644 grafana/dashboards/mysql/github-copilot-adoption-by-team-and-user.json
create mode 100644 grafana/dashboards/mysql/github-copilot-adoption-by-team.json
rename grafana/dashboards/{GithubCopilotAdoption.json => mysql/github-copilot-adoption.json} (100%)
rename grafana/dashboards/{GithubCopilotDORACorrelation.json => mysql/github-copilot-dora-correlation.json} (100%)
rename grafana/dashboards/{GithubReleaseQualityAndContributionAnalysis.json => mysql/github-release-quality-and-contribution-analysis.json} (97%)
create mode 100644 grafana/dashboards/mysql/kiro-credits-dora.json
create mode 100644 grafana/dashboards/mysql/language-ai-heatmap.json
create mode 100644 grafana/dashboards/mysql/multi-ai-comparison.json
copy grafana/dashboards/{PagerDuty.json => mysql/pager-duty.json} (95%)
copy grafana/dashboards/{QDevDORA.json => mysql/q-dev-dora.json} (94%)
copy grafana/dashboards/{ => mysql}/qdev_executive.json (59%)
copy grafana/dashboards/{qdev_executive.json => mysql/qdev_feature_metrics.json} (59%)
rename grafana/dashboards/{ => mysql}/qdev_logging.json (62%)
copy grafana/dashboards/{ => mysql}/qdev_user_data.json (95%)
copy grafana/dashboards/{ => mysql}/qdev_user_report.json (93%)
copy grafana/dashboards/{SonarQubeCloud.json => mysql/sonar-qube-cloud.json} (76%)
create mode 100644 grafana/dashboards/mysql/steering-adoption-tracker.json
copy grafana/dashboards/{WeeklyBugRetro.json => mysql/weekly-bug-retro.json} (95%)
copy grafana/dashboards/{WeeklyCommunityRetro.json => mysql/weekly-community-retro.json} (94%)
copy grafana/dashboards/{WorkLogs.json => mysql/work-logs.json} (64%)
copy grafana/dashboards/{ => postgresql}/Asana.json (77%)
rename grafana/dashboards/{ => postgresql}/Bamboo.json (79%)
rename grafana/dashboards/{Asana.json => postgresql/ClickUp.json} (90%)
create mode 100644 grafana/dashboards/postgresql/DORA.json
rename grafana/dashboards/{ => postgresql}/Gitlab.json (78%)
rename grafana/dashboards/{ => postgresql}/Homepage.json (96%)
rename grafana/dashboards/{ => postgresql}/Jenkins.json (79%)
rename grafana/dashboards/{ => postgresql}/Jira.json (70%)
rename grafana/dashboards/{ => postgresql}/Opsgenie.json (80%)
rename grafana/dashboards/{ => postgresql}/Sonarqube.json (61%)
rename grafana/dashboards/{ => postgresql}/TAPD.json (78%)
copy grafana/dashboards/{EngineeringOverview.json => postgresql/Taiga.json} (50%)
rename grafana/dashboards/{ => postgresql}/Teambition.json (78%)
rename grafana/dashboards/{ => postgresql}/Testmo.json (75%)
rename grafana/dashboards/{ => postgresql}/Zentao.json (78%)
create mode 100644 grafana/dashboards/postgresql/ai-cost-efficiency.json
create mode 100644 grafana/dashboards/postgresql/ai-model-roi.json
rename grafana/dashboards/{ArgoCD.json => postgresql/argo-cd.json} (67%)
rename grafana/dashboards/{AzureDevOps.json => postgresql/azure-dev-ops.json} (78%)
rename grafana/dashboards/{BitBucket.json => postgresql/bit-bucket.json} (78%)
rename grafana/dashboards/{CircleCI.json => postgresql/circle-ci.json} (83%)
rename grafana/dashboards/{ComponentAndFileLevelMetrics.json => postgresql/component-and-file-level-metrics.json} (82%)
rename grafana/dashboards/{ContributorExperience.json => postgresql/contributor-experience.json} (74%)
rename grafana/dashboards/{DemoAverageRequirementLeadTimeByAssignee.json => postgresql/demo-average-requirement-lead-time-by-assignee.json} (54%)
rename grafana/dashboards/{DemoCommitCountByAuthor.json => postgresql/demo-commit-count-by-author.json} (50%)
rename grafana/dashboards/{DemoDetailedBugInfo.json => postgresql/demo-detailed-bug-info.json} (87%)
rename grafana/dashboards/{DemoHomepage.json => postgresql/demo-homepage.json} (89%)
rename grafana/dashboards/{DemoHowFastDoWeRespondToCustomerRequirements.json => postgresql/demo-how-fast-do-we-respond-to-customer-requirements.json} (52%)
rename grafana/dashboards/{DemoIsThisMonthMoreProductiveThanLast.json => postgresql/demo-is-this-month-more-productive-than-last.json} (92%)
rename grafana/dashboards/{DemoWasOurQualityImprovedOrNot.json => postgresql/demo-was-our-quality-improved-or-not.json} (89%)
create mode 100644 grafana/dashboards/postgresql/developer-productivity-hours.json
create mode 100644 grafana/dashboards/postgresql/dora-by-team.json
rename grafana/dashboards/{DORADebug.json => postgresql/dora-debug.json} (64%)
rename grafana/dashboards/{DORADetails-ChangeFailureRate.json => postgresql/dora-details-change-failure-rate.json} (70%)
create mode 100644 grafana/dashboards/postgresql/dora-details-deployment-frequency.json
rename grafana/dashboards/{DORADetails-FailedDeploymentRecoveryTime.json => postgresql/dora-details-failed-deployment-recovery-time.json} (61%)
rename grafana/dashboards/{DORADetails-LeadTimeforChanges.json => postgresql/dora-details-lead-timefor-changes.json} (72%)
rename grafana/dashboards/{DORADetails-TimetoRestoreService.json => postgresql/dora-details-timeto-restore-service.json} (70%)
rename grafana/dashboards/{EngineeringOverview.json => postgresql/engineering-overview.json} (73%)
rename grafana/dashboards/{EngineeringThroughputAndCycleTimeTeamView.json => postgresql/engineering-throughput-and-cycle-time-team-view.json} (70%)
rename grafana/dashboards/{EngineeringThroughputAndCycleTime.json => postgresql/engineering-throughput-and-cycle-time.json} (77%)
rename grafana/dashboards/{GitHub.json => postgresql/git-hub.json} (76%)
create mode 100644 grafana/dashboards/postgresql/github-copilot-adoption-by-team-and-user.json
create mode 100644 grafana/dashboards/postgresql/github-copilot-adoption-by-team.json
create mode 100644 grafana/dashboards/postgresql/github-copilot-adoption.json
create mode 100644 grafana/dashboards/postgresql/github-copilot-dora-correlation.json
rename grafana/{_archive/EeGitHubReleaseQualityAndContributionAnalysis.json => dashboards/postgresql/github-release-quality-and-contribution-analysis.json} (56%)
create mode 100644 grafana/dashboards/postgresql/kiro-credits-dora.json
create mode 100644 grafana/dashboards/postgresql/language-ai-heatmap.json
create mode 100644 grafana/dashboards/postgresql/multi-ai-comparison.json
rename grafana/dashboards/{PagerDuty.json => postgresql/pager-duty.json} (81%)
rename grafana/dashboards/{QDevDORA.json => postgresql/q-dev-dora.json} (67%)
create mode 100644 grafana/dashboards/postgresql/qdev_executive.json
rename grafana/dashboards/{qdev_executive.json => postgresql/qdev_feature_metrics.json} (57%)
create mode 100644 grafana/dashboards/postgresql/qdev_logging.json
rename grafana/dashboards/{ => postgresql}/qdev_user_data.json (74%)
rename grafana/dashboards/{ => postgresql}/qdev_user_report.json (76%)
rename grafana/dashboards/{SonarQubeCloud.json => postgresql/sonar-qube-cloud.json} (65%)
create mode 100644 grafana/dashboards/postgresql/steering-adoption-tracker.json
rename grafana/dashboards/{WeeklyBugRetro.json => postgresql/weekly-bug-retro.json} (71%)
rename grafana/dashboards/{WeeklyCommunityRetro.json => postgresql/weekly-community-retro.json} (75%)
rename grafana/dashboards/{WorkLogs.json => postgresql/work-logs.json} (58%)
delete mode 100644 grafana/provisioning/datasources/datasource.yml
create mode 100755 grafana/scripts/convert-mysql-to-postgresql.py
create mode 100644 grafana/scripts/entrypoint.sh
create mode 100644 grafana/scripts/requirements.txt
create mode 100644 tools/kiro-attribution/README.md
create mode 100755 tools/kiro-attribution/install.sh
create mode 100755 tools/kiro-attribution/kiro-session-record.sh
create mode 100755 tools/kiro-attribution/prepare-commit-msg.sh
(devlake) 01/01: fix: build image failed
Posted by kl...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
klesh pushed a commit to branch fix-ci
in repository https://gitbox.apache.org/repos/asf/devlake.git
commit c1f46329e16d57e2c9beb1fe4d961dbc526330ff
Author: Klesh Wong <kl...@qq.com>
AuthorDate: Fri Aug 28 15:52:44 2026 +0800
fix: build image failed
---
.github/workflows/build.yml | 40 ++++++++++++++++++++--------------------
1 file changed, 20 insertions(+), 20 deletions(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 32733df61..fe715dc72 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -43,16 +43,16 @@ jobs:
docker volume prune -f
- uses: actions/checkout@v6
- name: Set up QEMU
- uses: docker/setup-qemu-action@ce360397dd3f832beb865e1373c09c0e9f86d70a # v4.0.0
+ uses: docker/setup-qemu-action@96fe6ef7f33517b61c61be40b68a1882f3264fb8 # v4.2.0
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
+ uses: docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e # v4.3.0
- name: Login to DockerHub
- uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
+ uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
with:
username: ${{ env.DOCKERHUB_USERNAME }}
password: ${{ env.DOCKERHUB_TOKEN }}
- name: Build and push lake image
- uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
+ uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0
with:
context: ./backend
push: true
@@ -75,16 +75,16 @@ jobs:
docker volume prune -f
- uses: actions/checkout@v6
- name: Set up QEMU
- uses: docker/setup-qemu-action@ce360397dd3f832beb865e1373c09c0e9f86d70a # v4.0.0
+ uses: docker/setup-qemu-action@96fe6ef7f33517b61c61be40b68a1882f3264fb8 # v4.2.0
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
+ uses: docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e # v4.3.0
- name: Login to DockerHub
- uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
+ uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
with:
username: ${{ env.DOCKERHUB_USERNAME }}
password: ${{ env.DOCKERHUB_TOKEN }}
- name: Build and push lake image
- uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
+ uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0
with:
context: ./backend
push: true
@@ -114,11 +114,11 @@ jobs:
id: get_short_sha
run: echo "SHORT_SHA=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
- name: Set up QEMU
- uses: docker/setup-qemu-action@ce360397dd3f832beb865e1373c09c0e9f86d70a # v4.0.0
+ uses: docker/setup-qemu-action@96fe6ef7f33517b61c61be40b68a1882f3264fb8 # v4.2.0
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
+ uses: docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e # v4.3.0
- name: Login to DockerHub
- uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
+ uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
with:
username: ${{ env.DOCKERHUB_USERNAME }}
password: ${{ env.DOCKERHUB_TOKEN }}
@@ -127,7 +127,7 @@ jobs:
path: /tmp/devlake-build-cache-${{ matrix.platform }}
key: buildx-devlake-build-cache-${{ github.run_id }}-${{ matrix.platform }}
- name: Build and cache lake build
- uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
+ uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0
with:
context: ./backend
push: false
@@ -166,11 +166,11 @@ jobs:
id: get_short_sha
run: echo "SHORT_SHA=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
- name: Set up QEMU
- uses: docker/setup-qemu-action@ce360397dd3f832beb865e1373c09c0e9f86d70a # v4.0.0
+ uses: docker/setup-qemu-action@96fe6ef7f33517b61c61be40b68a1882f3264fb8 # v4.2.0
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
+ uses: docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e # v4.3.0
- name: Login to DockerHub
- uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
+ uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
with:
username: ${{ env.DOCKERHUB_USERNAME }}
password: ${{ env.DOCKERHUB_TOKEN }}
@@ -194,7 +194,7 @@ jobs:
echo "TAGS=${image_name}:${{ github.ref_name }}_${{ needs.get-timestamp.outputs.timestamp }}_${{ steps.get_short_sha.outputs.SHORT_SHA }}" >> $GITHUB_OUTPUT
fi
- name: Build and push lake image
- uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
+ uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0
with:
context: ./backend
push: true
@@ -253,11 +253,11 @@ jobs:
id: get_short_sha
run: echo "SHORT_SHA=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
- name: Set up QEMU
- uses: docker/setup-qemu-action@ce360397dd3f832beb865e1373c09c0e9f86d70a # v4.0.0
+ uses: docker/setup-qemu-action@96fe6ef7f33517b61c61be40b68a1882f3264fb8 # v4.2.0
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
+ uses: docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e # v4.3.0
- name: Login to DockerHub
- uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
+ uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
with:
username: ${{ env.DOCKERHUB_USERNAME }}
password: ${{ env.DOCKERHUB_TOKEN }}
@@ -273,7 +273,7 @@ jobs:
echo "TAGS=${image_name}:${{ github.ref_name }}_${{ needs.get-timestamp.outputs.timestamp }}_${{ steps.get_short_sha.outputs.SHORT_SHA }}" >> $GITHUB_OUTPUT
fi
- name: Build and push ${{ matrix.build.name }} image
- uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
+ uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0
with:
context: ${{ matrix.build.context }}
push: true