)]}'
{
  "commit": "b4c6cbfcc546d19fd19acda72c52a830941e2c6d",
  "tree": "5f5fda5f20b075a0cf0309416b44d99ffe5675e0",
  "parents": [
    "45211acdc98545eb50dbae81656cc655d6dd57c9"
  ],
  "author": {
    "name": "Comrade Yi",
    "email": "119987662+ambiguous-pointer@users.noreply.github.com",
    "time": "Sun May 10 16:06:50 2026 +0800"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Sun May 10 16:06:50 2026 +0800"
  },
  "message": "Service/Application Dependency Graph Implement (#1460)\n\n* feat(ui): Added application and service topology mapping feature\n\n* style(ui-vue3): Add a minimum width to the login form and remove unnecessary blank lines\n\n* Feat: Add service and application topology graph APIs based on discussion #1398\n\n* feat(api): add GraphServices endpoint for service-level topology\n\nBased on discussion #1398, use ServiceProviderMetadata and ServiceConsumerMetadata\nto return provider/consumer application relations as graph nodes and edges for AntV G6.\n\n* feat(api): add GraphApplications endpoint for application-level topology\n\nTraverse provider/consumer service relations to build application-level graph.\nAlso add idx_service_consumer_service_key index to support efficient serviceKey queries.\n\n* feat(api): add graph models (GraphNode, GraphEdge, GraphData) in pkg/console/model/graph.go\n\n* feat(api): add ApplicationGraphReq, ServiceGraphReq and GetApplicationGraph, GetServiceGraph handlers\n\n* feat(router): register /application/graph and /service/graph routes\n\n* feat(api): fix error handling to use direct err pass-through instead of MeshNotFoundError\n\n* Feat: Enhance service metadata derivation and detail retrieval ([#1430](https://github.com/apache/dubbo-admin/issues/1430))\n\n* feat(api): replace Service.{providers,consumers,features} with {methods} field\n\nSimplify Service proto by removing providers, consumers, and features map,\nkeeping only the aggregated methods list derived from provider metadata.\n\n* feat(api): derive Service resource from ServiceProviderMetadata on add/update/delete\n\nServiceProviderMetadataEventSubscriber now maintains Service resources by\naggregating methods from all provider instances sharing the same serviceKey.\nHandles add, update, and delete events to keep Service spec in sync.\n\n* feat(api): add language detection from provider metadata parameters\n\nDetect provider language (golang/java) from metadata parameters and method\ntype signatures when explicit language field is absent.\n\n* feat(api): add GetServiceDetail endpoint returning language and methods\n\nAdd GET /service/detail returning ServiceDetailResp with language and\naggregated method names from the derived Service resource.\n\n* feat(api): add BuildServiceIdentityKey helper for {service}:{version}:{group}\n\n* feat(api): add ByServiceName index for ServiceKind\n\n* feat(api): refactor SearchServices to query ServiceResource directly\n\nSearchServices and SearchServicesByKeywords now use ServiceResource instead\nof ServiceProviderMetadataResource for service listing.\n\n* feat(api): remove providerAppName from ServiceSearchResp and ServiceTabDistributionReq\n\n* feat(api): add ServiceDetailReq and ServiceDetailResp models\n\n* feat(router): register /service/detail and /service/interfaces routes\n\n* feat(ui-vue3): remove providerAppName from grafana types and tab components\n\n* chore: Add G6 chart library and its dependencies to the project\n\n* chore(assets): Add Apache license and format code for iconfont file\n\n* fix: Correct the naming errors in the application topology graph API parameters and improve the code comments\n\n* chore: minor cleanup - fix comment language and import order\n\n* chore: translate Chinese comment to English in GraphApplications error handling\n* chore: reorder imports in service_provider_metadata.go\n\n* fix:Fix parameter passing error when obtaining application details\n\n* fix: fix type mismatch and index issues in service search and metadata sync\n\n  1. pkg/console/service/service.go:132\n     - fix generic type mismatch with resourceKind\n     - generic ServiceResource should use ServiceKind, was incorrectly passing ServiceProviderMetadataKind\n     - index changed from ByServiceProviderServiceName to ByServiceName (aligned with ServiceKind)\n\n  2. pkg/core/discovery/subscriber/service_provider_metadata.go\n     - processUpdate: remove redundant oldRes key check (oldKey always equals newKey in same resource update,\n       else branch is unreachable dead code)\n     - syncService: use ByServiceProviderServiceKey index instead of ByServiceProviderServiceName\n       + manual version/group filtering, reduces data returned from DB and improves performance\n       Ref: [1460](https://github.com/apache/dubbo-admin/pull/1460#discussion_r3106255166)\n\n* Feat: Add coding agent domain skills ([#1457](https://github.com/apache/dubbo-admin/issues/1457))\n\n* feat(skills): add backend domain skills for runtime, discovery, engine, events, store, and Console API\n\nDocument component lifecycle, ListAndWatch discovery, resource engine behavior, EventBus dispatching, storage indexes, and Web MVC flow for coding agents.\n\n* feat(skills): add frontend domain skill for routing, components, and traffic rule forms\n\nDocument Vue frontend structure, API clients, Pinia state, route metadata, layout tabs, and traffic rule form design.\n\n* feat(skills): add OpenAI skill metadata\n\nAdd agents/openai.yaml metadata for each dubbo-admin domain skill.\n\n* fix(console): use ServiceKind for service list search\n\nQuery ServiceResource from ServiceKind instead of ServiceProviderMetadataKind so the non-keyword service list path uses the matching resource store and index set.\n\n---------\n\nCo-authored-by: sohandsomejie \u003c3080955413@qq.com\u003e\nCo-authored-by: MoChengqian \u003c2972013548@qq.com\u003e",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6468b8fddd45296a6d633dc0ae1656f1b7f96890",
      "new_mode": 33188,
      "new_path": ".agents/skills/dubbo-admin-console-api/SKILL.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0b64fe7cee6426db324ac0c0a0a5d93bfa9e8498",
      "new_mode": 33188,
      "new_path": ".agents/skills/dubbo-admin-console-api/evals/evals.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "367f8552b4f0729ab59b85cfe497f523141c6bcb",
      "new_mode": 33188,
      "new_path": ".agents/skills/dubbo-admin-console-api/references/web-mvc-flow.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3181e0495fa131b15989b9863c1997c878ec2c84",
      "new_mode": 33188,
      "new_path": ".agents/skills/dubbo-admin-discovery/SKILL.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1ca8c6894d3d183d59eb5435f147086289092be5",
      "new_mode": 33188,
      "new_path": ".agents/skills/dubbo-admin-discovery/evals/evals.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c6ea9fc9e8575ecf47cd2630d3f0024cb45525a6",
      "new_mode": 33188,
      "new_path": ".agents/skills/dubbo-admin-discovery/references/discovery-flow.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ff66e66165f97c91b36e03242046898a1602a6ba",
      "new_mode": 33188,
      "new_path": ".agents/skills/dubbo-admin-domain/SKILL.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "47d399f8a842462081d5443113e2d3eafd79ab9d",
      "new_mode": 33188,
      "new_path": ".agents/skills/dubbo-admin-domain/evals/evals.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c474dfbe097750569b642c2bb31f120b74c81a55",
      "new_mode": 33188,
      "new_path": ".agents/skills/dubbo-admin-domain/references/architecture-map.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8cde1ae18cc8418907ebb14ea98d2ffe4012d2bf",
      "new_mode": 33188,
      "new_path": ".agents/skills/dubbo-admin-engine/SKILL.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c1d71dc333114ad1d6a38c8e2aec33655f2ea23f",
      "new_mode": 33188,
      "new_path": ".agents/skills/dubbo-admin-engine/evals/evals.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "51807312e4a00208f801c83152ba70ab5f733765",
      "new_mode": 33188,
      "new_path": ".agents/skills/dubbo-admin-engine/references/runtime-engine-flow.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4dc8352ad94efdd16c8b6244266303cacb9bb0ab",
      "new_mode": 33188,
      "new_path": ".agents/skills/dubbo-admin-events/SKILL.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5b5d07ed3cfab404cafe78ec95ebfa7e20c68349",
      "new_mode": 33188,
      "new_path": ".agents/skills/dubbo-admin-events/evals/evals.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "dbd232a35ce5d91fc6e59dcf9a3abce8095b7768",
      "new_mode": 33188,
      "new_path": ".agents/skills/dubbo-admin-events/references/eventbus-dispatch.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3178b2a26f3d58b69441729115e0e22721cc26cb",
      "new_mode": 33188,
      "new_path": ".agents/skills/dubbo-admin-frontend/SKILL.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "be026a6dab80631b21c9f748ac2a4a9e451a3f4a",
      "new_mode": 33188,
      "new_path": ".agents/skills/dubbo-admin-frontend/evals/evals.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "df9caa806aaf17cdde3f954202542bbbfa2ec73c",
      "new_mode": 33188,
      "new_path": ".agents/skills/dubbo-admin-frontend/references/frontend-structure.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "39ef4a8eeccdbc8020908d235e30dcbd4bb61af9",
      "new_mode": 33188,
      "new_path": ".agents/skills/dubbo-admin-frontend/references/traffic-rule-forms.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "364d5691e449960775def2b9bdb76befe7d7f8bb",
      "new_mode": 33188,
      "new_path": ".agents/skills/dubbo-admin-runtime/SKILL.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6785e563433dd58aa8153ba00efaa9e41db9615e",
      "new_mode": 33188,
      "new_path": ".agents/skills/dubbo-admin-runtime/evals/evals.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "28e21a20a2098796fa98e5e64af246531a33af98",
      "new_mode": 33188,
      "new_path": ".agents/skills/dubbo-admin-runtime/references/bootstrap-flow.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7dee4ca2a9b4d646388ed8e7796c788a0bced74a",
      "new_mode": 33188,
      "new_path": ".agents/skills/dubbo-admin-runtime/references/component-contracts.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "98776fbd7eb79eb8655e6209e2efbd5a977c01f3",
      "new_mode": 33188,
      "new_path": ".agents/skills/dubbo-admin-runtime/references/dependency-graph.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "bc0f36e234f95ca51e9484410b900e3988c2dd73",
      "new_mode": 33188,
      "new_path": ".agents/skills/dubbo-admin-runtime/references/runtime-start.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "87306d453bfc4d56000e3bb7d68e948812780f4c",
      "new_mode": 33188,
      "new_path": ".agents/skills/dubbo-admin-store/SKILL.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0fa0bb1edda5482a5e3cf440b6bb44fd9b12966a",
      "new_mode": 33188,
      "new_path": ".agents/skills/dubbo-admin-store/evals/evals.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6741ba8287ad9d75f585f409cd94869ae23cca16",
      "new_mode": 33188,
      "new_path": ".agents/skills/dubbo-admin-store/references/indexing-and-query.md"
    },
    {
      "type": "modify",
      "old_id": "8e5c415d99f953a92efe6babb9eff6462a0b0906",
      "old_mode": 33188,
      "old_path": ".licenserc.yaml",
      "new_id": "7bbbde883c93e4e8b255448b68a1fa87347f468b",
      "new_mode": 33188,
      "new_path": ".licenserc.yaml"
    },
    {
      "type": "modify",
      "old_id": "6160f20d04e9b6d9293bbccbcaa769447d8e10ac",
      "old_mode": 33188,
      "old_path": "api/mesh/v1alpha1/service.pb.go",
      "new_id": "10723e7a37cfc09f5065e98147653243e6cec050",
      "new_mode": 33188,
      "new_path": "api/mesh/v1alpha1/service.pb.go"
    },
    {
      "type": "modify",
      "old_id": "cf8b29e80630117aac5220cc3b9904e87a6a07ab",
      "old_mode": 33188,
      "old_path": "api/mesh/v1alpha1/service.proto",
      "new_id": "4a2ea1cbd0001856451dfce089a6b13b892de41c",
      "new_mode": 33188,
      "new_path": "api/mesh/v1alpha1/service.proto"
    },
    {
      "type": "modify",
      "old_id": "4ad2985af7e8d037373a557765dcf254d5958649",
      "old_mode": 33188,
      "old_path": "pkg/console/handler/application.go",
      "new_id": "1b33212f3ab38a6bb949edb388d7efaa0f06db81",
      "new_mode": 33188,
      "new_path": "pkg/console/handler/application.go"
    },
    {
      "type": "modify",
      "old_id": "549405d0cdba1955fb2e5c8812386657a8c12fb2",
      "old_mode": 33188,
      "old_path": "pkg/console/handler/service.go",
      "new_id": "d78ff526436d0f2180ab104f1ad7add6e1079e3c",
      "new_mode": 33188,
      "new_path": "pkg/console/handler/service.go"
    },
    {
      "type": "modify",
      "old_id": "ee70a038175609510ec3311b34d8f1863a32a3bd",
      "old_mode": 33188,
      "old_path": "pkg/console/model/application.go",
      "new_id": "35b3e46366e1250eee92d3f4c3074145698bbb7e",
      "new_mode": 33188,
      "new_path": "pkg/console/model/application.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "333b9a07b4cd238ab392cb98605b63f1c7d29d00",
      "new_mode": 33188,
      "new_path": "pkg/console/model/graph.go"
    },
    {
      "type": "modify",
      "old_id": "d5ab9a877a17d82ef563b3f80489d38dae3a0ffc",
      "old_mode": 33188,
      "old_path": "pkg/console/model/observability.go",
      "new_id": "81822286d52fa5d1b90a76f51cec541f61881231",
      "new_mode": 33188,
      "new_path": "pkg/console/model/observability.go"
    },
    {
      "type": "modify",
      "old_id": "3f9bdcabac6df709021ae137185f70a0bf091a81",
      "old_mode": 33188,
      "old_path": "pkg/console/model/service.go",
      "new_id": "09b236de84cd3a7a747c66aa04568150d81b2cce",
      "new_mode": 33188,
      "new_path": "pkg/console/model/service.go"
    },
    {
      "type": "modify",
      "old_id": "64f7c0010af6dd2f2b678edde0dd62aae9493615",
      "old_mode": 33188,
      "old_path": "pkg/console/router/router.go",
      "new_id": "24cd7d44c865d643e26803d4fcee53317b567149",
      "new_mode": 33188,
      "new_path": "pkg/console/router/router.go"
    },
    {
      "type": "modify",
      "old_id": "9a5ee89d2d3bcde03bbfdc1ef7b2b84aff55b5bd",
      "old_mode": 33188,
      "old_path": "pkg/console/service/application.go",
      "new_id": "58133521ed853328e1f48a054f47bf8c28c22534",
      "new_mode": 33188,
      "new_path": "pkg/console/service/application.go"
    },
    {
      "type": "modify",
      "old_id": "0178fe2c6a8c92ddbd0233dcf6c400cd53a1fa02",
      "old_mode": 33188,
      "old_path": "pkg/console/service/service.go",
      "new_id": "a58347341ac9abb99928890a49f3a997c4402704",
      "new_mode": 33188,
      "new_path": "pkg/console/service/service.go"
    },
    {
      "type": "modify",
      "old_id": "069c451f118ddd4c19ea13206b9b7d4deae1f16d",
      "old_mode": 33188,
      "old_path": "pkg/core/discovery/component.go",
      "new_id": "0911eab5cf9a05571b92fff5b2b5fec260097bca",
      "new_mode": 33188,
      "new_path": "pkg/core/discovery/component.go"
    },
    {
      "type": "modify",
      "old_id": "77ebe7342d3b1dd7de1f7dbe3a404261bfa0278b",
      "old_mode": 33188,
      "old_path": "pkg/core/discovery/subscriber/service_provider_metadata.go",
      "new_id": "0defc7d18a44f19e075c2bd4eb590566b5bc0b38",
      "new_mode": 33188,
      "new_path": "pkg/core/discovery/subscriber/service_provider_metadata.go"
    },
    {
      "type": "modify",
      "old_id": "a4d0792082bb70550ae39956ff21e3b158219ee4",
      "old_mode": 33188,
      "old_path": "pkg/core/resource/apis/mesh/v1alpha1/service_helper.go",
      "new_id": "36fcaf6d58a04c7f9d16b1529ed4e086b2f192f3",
      "new_mode": 33188,
      "new_path": "pkg/core/resource/apis/mesh/v1alpha1/service_helper.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f02500faa5e7bcf23221958db3cf695047da89de",
      "new_mode": 33188,
      "new_path": "pkg/core/store/index/service.go"
    },
    {
      "type": "modify",
      "old_id": "3498adc609dd3f308e7850ed98ebbbebbbd86e53",
      "old_mode": 33188,
      "old_path": "pkg/core/store/index/service_consumer_metadata.go",
      "new_id": "e249620ab89f825a3d5d38960d6fd824a10d8e8a",
      "new_mode": 33188,
      "new_path": "pkg/core/store/index/service_consumer_metadata.go"
    },
    {
      "type": "modify",
      "old_id": "9a4044a4546b8bf633cedabc84bdc0bf194dc36e",
      "old_mode": 33188,
      "old_path": "ui-vue3/package.json",
      "new_id": "70b06d7c17145ecb771f4edbc12c3cbf9e22d49c",
      "new_mode": 33188,
      "new_path": "ui-vue3/package.json"
    },
    {
      "type": "modify",
      "old_id": "1b4ffa2e185873136f305ce3b7f3bf8eae60a3d5",
      "old_mode": 33188,
      "old_path": "ui-vue3/src/App.vue",
      "new_id": "d1d51782ce69badb48ee9ad996ecfeb317896d3b",
      "new_mode": 33188,
      "new_path": "ui-vue3/src/App.vue"
    },
    {
      "type": "modify",
      "old_id": "3bd0321b8324f07bc168faf1865c2b9a3596ba70",
      "old_mode": 33188,
      "old_path": "ui-vue3/src/Login.vue",
      "new_id": "dfe8f04e29fdd3a151251edbbdf5b7e8a8b48cd8",
      "new_mode": 33188,
      "new_path": "ui-vue3/src/Login.vue"
    },
    {
      "type": "modify",
      "old_id": "97c1b4345ddcb10c0d1a7b98a158804240caec7d",
      "old_mode": 33188,
      "old_path": "ui-vue3/src/api/service/app.ts",
      "new_id": "c38f28ea10ca1a1e5858a0edcff19b8ba1533c41",
      "new_mode": 33188,
      "new_path": "ui-vue3/src/api/service/app.ts"
    },
    {
      "type": "modify",
      "old_id": "abd64ec1e790de57f943b545102a296af8a18d1f",
      "old_mode": 33188,
      "old_path": "ui-vue3/src/api/service/service.ts",
      "new_id": "f26a4a2a66502c908dc5703e5ab687d6fedfd3ff",
      "new_mode": 33188,
      "new_path": "ui-vue3/src/api/service/service.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7deb8dc1880fd990d91c040628d7bc383c86bafa",
      "new_mode": 33188,
      "new_path": "ui-vue3/src/assets/iconfont/demo.css"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "579bb80ee968ef3d31e08de7ca6c051beecb9c99",
      "new_mode": 33188,
      "new_path": "ui-vue3/src/assets/iconfont/iconfont.css"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ef61ae2a367c5989986be4b41bf6bf6d92d9ccf6",
      "new_mode": 33188,
      "new_path": "ui-vue3/src/assets/iconfont/iconfont.js"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "54ed6368770c694f5f1fdb91c0d8912f15554895",
      "new_mode": 33188,
      "new_path": "ui-vue3/src/assets/iconfont/iconfont.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "76a150ef3db305160470b9a57729a58c502caf79",
      "new_mode": 33188,
      "new_path": "ui-vue3/src/assets/iconfont/iconfont.ttf"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9913aabaa05170a074d173d904c0ec11e4841d14",
      "new_mode": 33188,
      "new_path": "ui-vue3/src/assets/iconfont/iconfont.woff"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5647ceda7b643991ac9351c52be6dd6a097ac78b",
      "new_mode": 33188,
      "new_path": "ui-vue3/src/assets/iconfont/iconfont.woff2"
    },
    {
      "type": "modify",
      "old_id": "777c7dc941ee1b33921dd2f215b569a38dc9c920",
      "old_mode": 33188,
      "old_path": "ui-vue3/src/base/i18n/en.ts",
      "new_id": "1ae6ec15acb5892ea5cff3b7f58acc4d381bfc22",
      "new_mode": 33188,
      "new_path": "ui-vue3/src/base/i18n/en.ts"
    },
    {
      "type": "modify",
      "old_id": "c382c0e9e1895381714ada070669db61366340e5",
      "old_mode": 33188,
      "old_path": "ui-vue3/src/base/i18n/zh.ts",
      "new_id": "c355a42c992f5f2a4fb8e3472ed0ab04fc9d3963",
      "new_mode": 33188,
      "new_path": "ui-vue3/src/base/i18n/zh.ts"
    },
    {
      "type": "modify",
      "old_id": "c7769c55de5b4dd298f773007a8e33dd0332f7be",
      "old_mode": 33188,
      "old_path": "ui-vue3/src/main.ts",
      "new_id": "b9043a96ffad4e9adc77aa1d8162847b24cc7deb",
      "new_mode": 33188,
      "new_path": "ui-vue3/src/main.ts"
    },
    {
      "type": "modify",
      "old_id": "9d4e1ff536a1dfe88634cb4f385c335e150e045d",
      "old_mode": 33188,
      "old_path": "ui-vue3/src/router/defaultRoutes.ts",
      "new_id": "ecb2c9d4ef6a75d12df4f21162fa40fad47b1726",
      "new_mode": 33188,
      "new_path": "ui-vue3/src/router/defaultRoutes.ts"
    },
    {
      "type": "modify",
      "old_id": "9443e969f8484947d2000510a1af2a8fb05a2737",
      "old_mode": 33188,
      "old_path": "ui-vue3/src/types/grafana.ts",
      "new_id": "866ec9a30d0b280b91f8e90a3309b5e604f7e28b",
      "new_mode": 33188,
      "new_path": "ui-vue3/src/types/grafana.ts"
    },
    {
      "type": "modify",
      "old_id": "43e5808af9b2166c43234f6e845bc4407691cb92",
      "old_mode": 33188,
      "old_path": "ui-vue3/src/views/resources/applications/tabs/detail.vue",
      "new_id": "46ce2a67b75c4333535f1a24d3ebdb8c4bb3e844",
      "new_mode": 33188,
      "new_path": "ui-vue3/src/views/resources/applications/tabs/detail.vue"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "11cb90a1494cc4b71e0c6021161780ce4b11230f",
      "new_mode": 33188,
      "new_path": "ui-vue3/src/views/resources/applications/tabs/topology.vue"
    },
    {
      "type": "modify",
      "old_id": "a9c4f5eb32426011bcb591bf4df538f18c518c77",
      "old_mode": 33188,
      "old_path": "ui-vue3/src/views/resources/services/search.vue",
      "new_id": "b7bf57d138fedbb7a21734883dbe470e84c4d266",
      "new_mode": 33188,
      "new_path": "ui-vue3/src/views/resources/services/search.vue"
    },
    {
      "type": "modify",
      "old_id": "0127e8c53a86c6f9ffe30357dd9fc13684689cf8",
      "old_mode": 33188,
      "old_path": "ui-vue3/src/views/resources/services/tabs/distribution.vue",
      "new_id": "cdd306655e2f0d58735dfcbadc85c9e267665609",
      "new_mode": 33188,
      "new_path": "ui-vue3/src/views/resources/services/tabs/distribution.vue"
    },
    {
      "type": "modify",
      "old_id": "e7b239bad40bead4941e8e45699f80ae10bc8dcf",
      "old_mode": 33188,
      "old_path": "ui-vue3/src/views/resources/services/tabs/monitor.vue",
      "new_id": "71e69243c061b505fb957d068a4a96801f57322c",
      "new_mode": 33188,
      "new_path": "ui-vue3/src/views/resources/services/tabs/monitor.vue"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "809bc6810221a037a3aaa6d4badcdcdcb1f169d9",
      "new_mode": 33188,
      "new_path": "ui-vue3/src/views/resources/services/tabs/topology.vue"
    },
    {
      "type": "modify",
      "old_id": "12f5900402d4e75434b7ec705228f9c2a525af35",
      "old_mode": 33188,
      "old_path": "ui-vue3/src/views/resources/services/tabs/tracing.vue",
      "new_id": "fb544e02a5a69d5a5f59dd59ea4f62b162d27496",
      "new_mode": 33188,
      "new_path": "ui-vue3/src/views/resources/services/tabs/tracing.vue"
    },
    {
      "type": "modify",
      "old_id": "6723b80e2543bcd989d9359a2f6e3a884c268573",
      "old_mode": 33188,
      "old_path": "ui-vue3/yarn.lock",
      "new_id": "b012370c9eefd563b7885e2139d68fcb981e58ba",
      "new_mode": 33188,
      "new_path": "ui-vue3/yarn.lock"
    }
  ]
}
