ag-ui-protocol/ag-ui
AG-UI: the Agent-User Interaction Protocol. Bring Agents into Frontend Applications.
The score is jscpd's own --health model: markup, data and text left out, tests kept. The numbers below are the trending scan's.
Most complex files
- integrations/aws-strands/python/src/ag_ui_strands/agent.py1093 cx
- integrations/aws-strands/typescript/src/agent.ts1089 cx
- integrations/langgraph/python/ag_ui_langgraph/agent.py1042 cx
- sdks/dotnet/src/AGUI.Protobuf/Generated/WireGuards.g.cs771 cx
- integrations/adk-middleware/python/src/ag_ui_adk/adk_agent.py761 cx
- integrations/mastra/typescript/src/mastra.ts692 cx
- sdks/community/ruby/templates/default/fulldoc/markdown/setup.rb506 cx
- integrations/langgraph/typescript/src/agent.ts439 cx
- sdks/community/dart/lib/src/events/events.dart391 cx
- integrations/aws-strands/typescript/src/__tests__/url-fetch-policy.test.ts375 cx
Dead code 0.44% unused · 88 findings
- middlewares/a2ui-middleware/src/schema.ts:_REMOVED_V08_SCHEMAunused-symbol
- sdks/typescript/packages/core/src/event-factories.tsunused-file
- integrations/claude-agent-sdk/typescript/scripts/probe-frontend-resume.mjsunused-file
- integrations/claude-agent-sdk/typescript/scripts/probe-durable-resume.mjsunused-file
- integrations/claude-agent-sdk/typescript/scripts/probe-mcp-deferral-limit.mjsunused-file
- sdks/typescript/packages/client/src/conformance/fixture.tsunused-file
- integrations/claude-agent-sdk/typescript/scripts/probe-assistant-blocks.mjsunused-file
- integrations/claude-agent-sdk/typescript/scripts/public-client-driver.mjsunused-file
- integrations/claude-agent-sdk/typescript/scripts/registered-root-driver.mjsunused-file
- integrations/claude-agent-sdk/python/scripts/probe_frontend_resume.pyunused-file
The code number leaves out tests, fixtures, docs, examples, data files, styles, translations and vendored code, and 28 generated files: sdks/community/dart/example/linux/flutter/generated_plugin_registrant.cc, sdks/community/dart/example/linux/flutter/generated_plugin_registrant.h, sdks/community/dart/example/macos/Flutter/GeneratedPluginRegistrant.swift, sdks/community/dart/example/windows/flutter/generated_plugin_registrant.cc, sdks/community/dart/example/windows/flutter/generated_plugin_registrant.h, sdks/community/swift/Sources/AGUIAgentSDK/AgUiAgentConfig.swift, sdks/dotnet/src/AGUI.Abstractions/Generated/AGUIConstants.g.cs, sdks/dotnet/src/AGUI.Abstractions/Generated/AGUIEvents.g.cs, sdks/dotnet/src/AGUI.Abstractions/Generated/AGUIEventTypes.g.cs, sdks/dotnet/src/AGUI.Abstractions/Generated/AGUIMessages.g.cs, sdks/dotnet/src/AGUI.Abstractions/Generated/AGUIRoles.g.cs, sdks/dotnet/src/AGUI.Abstractions/Generated/AGUITypes.g.cs, sdks/dotnet/src/AGUI.Abstractions/Generated/BaseEvent.g.cs, sdks/dotnet/src/AGUI.Protobuf/Generated/ProtoEventMapper.g.cs, sdks/dotnet/src/AGUI.Protobuf/Generated/ProtoMessageMapper.g.cs, sdks/dotnet/src/AGUI.Protobuf/Generated/WireGuards.g.cs, sdks/python/ag_ui/_generated/__init__.py, sdks/python/ag_ui/_generated/models.py, sdks/python/ag_ui/_generated/version.py, sdks/typescript/packages/core/src/generated/schemas.ts and 8 more.
Largest clones in the code
- 8 lines in 10 placesjava301 tokenssdks/community/java/ag-ui/core/src/main/java/com/agui/community/core/event/CustomEvent.java:9–16sdks/community/java/ag-ui/core/src/main/java/com/agui/community/core/event/MessagesSnapshotEvent.java:11–18sdks/community/java/ag-ui/core/src/main/java/com/agui/community/core/event/MetaEvent.java:12–19sdks/community/java/ag-ui/core/src/main/java/com/agui/community/core/event/RawEvent.java:10–17sdks/community/java/ag-ui/core/src/main/java/com/agui/community/core/event/ReasoningEndEvent.java:9–16and 5 more
9 * @param value the associated event data (required) 10 * @param timestamp the event creation time in epoch milliseconds, or 11 * {@code null} (optional) 12 * @param rawEvent the original event this was transformed from, or 13 * {@code null} (optional) 14 * @see <a href="https://docs.ag-ui.com/concepts/events">AG-UI Events</a> 15 */ 16public record CustomEvent(String name, Object value, Long timestamp, Object rawEvent)11 * (required, copied to an unmodifiable list) 12 * @param timestamp the event creation time in epoch milliseconds, or 13 * {@code null} (optional) 14 * @param rawEvent the original event this was transformed from, or 15 * {@code null} (optional) 16 * @see <a href="https://docs.ag-ui.com/concepts/events">AG-UI Events</a> 17 */ 18public record MessagesSnapshotEvent(List<Message> messages, Long timestamp, Object rawEvent) - 21 lines in 19 placestypescript89 tokensintegrations/a2a/typescript/vitest.config.ts:1–21integrations/agno/typescript/vitest.config.ts:1–21integrations/claude-managed-agents/typescript/vitest.config.ts:1–21integrations/community/cloudflare-agents/typescript/vitest.config.ts:1–21integrations/community/omnara/typescript/vitest.config.ts:1–21and 14 more
1import path from "path"; 2import { defineConfig } from "vitest/config"; 3 4export default defineConfig({ 5 test: { 6 globals: true, 7 environment: "node", 8 include: ["**/*.test.ts"], 9 passWithNoTests: true, 10 coverage: {First 10 of 21 lines.
- 12 lines in 22 placestypescript53 tokensintegrations/adk-middleware/typescript/tsdown.config.ts:1–12integrations/ag2/typescript/tsdown.config.ts:1–12integrations/agno/typescript/tsdown.config.ts:1–12integrations/antigravity/typescript/tsdown.config.ts:1–12integrations/claude-managed-agents/typescript/tsdown.config.ts:1–12and 17 more
1import { defineConfig } from "tsdown"; 2 3export default defineConfig({ 4 entry: ["src/index.ts"], 5 format: ["cjs", "esm"], 6 dts: true, 7 exports: true, 8 fixedExtension: false, 9 sourcemap: true, 10 clean: true,First 10 of 12 lines.
7 more
- 8 lines in 4 placesjava324 tokenssdks/community/java/ag-ui/core/src/main/java/com/agui/community/core/event/RawEvent.java:10–17sdks/community/java/ag-ui/core/src/main/java/com/agui/community/core/event/ReasoningMessageChunkEvent.java:12–19sdks/community/java/ag-ui/core/src/main/java/com/agui/community/core/event/RunErrorEvent.java:9–16sdks/community/java/ag-ui/core/src/main/java/com/agui/community/core/event/TextMessageChunkEvent.java:14–21
- 8 lines in 4 placesjava322 tokenssdks/community/java/ag-ui/core/src/main/java/com/agui/community/core/event/ReasoningEndEvent.java:9–16sdks/community/java/ag-ui/core/src/main/java/com/agui/community/core/event/ReasoningMessageEndEvent.java:9–16sdks/community/java/ag-ui/core/src/main/java/com/agui/community/core/event/ReasoningStartEvent.java:8–15sdks/community/java/ag-ui/core/src/main/java/com/agui/community/core/event/TextMessageStartEvent.java:10–17
- 10 lines in 17 placesswift50 tokenssdks/community/swift/Tests/AGUICoreTests/SpecialEvents/CustomEventTests.swift:218–227sdks/community/swift/Tests/AGUICoreTests/SpecialEvents/CustomEventTests.swift:281–290sdks/community/swift/Tests/AGUICoreTests/SpecialEvents/RawEventTests.swift:200–209sdks/community/swift/Tests/AGUICoreTests/TextMessageEvents/TextMessageContentEventTests.swift:179–188sdks/community/swift/Tests/AGUICoreTests/TextMessageEvents/TextMessageContentEventTests.swift:198–207and 12 more
- 8 lines in 3 placesjava315 tokenssdks/community/java/ag-ui/core/src/main/java/com/agui/community/core/event/ToolCallArgsEvent.java:10–17sdks/community/java/ag-ui/core/src/main/java/com/agui/community/core/event/ToolCallEndEvent.java:9–16sdks/community/java/ag-ui/core/src/main/java/com/agui/community/core/event/ToolCallResultEvent.java:15–22
- 105 lines in 2 placesswift601 tokens
- 8 lines in 3 placesjava299 tokenssdks/community/java/ag-ui/core/src/main/java/com/agui/community/core/message/DeveloperMessage.java:6–13sdks/community/java/ag-ui/core/src/main/java/com/agui/community/core/message/SystemMessage.java:6–13sdks/community/java/ag-ui/core/src/main/java/com/agui/community/core/message/UserMessage.java:6–13
- 8 lines in 11 placeskotlin53 tokenssdks/community/kotlin/library/core/src/commonMain/kotlin/com/agui/core/types/Events.kt:449–456sdks/community/kotlin/library/core/src/commonMain/kotlin/com/agui/core/types/Events.kt:500–507sdks/community/kotlin/library/core/src/commonMain/kotlin/com/agui/core/types/Events.kt:526–533sdks/community/kotlin/library/core/src/commonMain/kotlin/com/agui/core/types/Events.kt:549–556sdks/community/kotlin/library/core/src/commonMain/kotlin/com/agui/core/types/Events.kt:630–637and 6 more
Largest clones over all files, tests and data included
- 21 lines in 414 placesjsontests57 tokenssdks/dotnet/tests/AGUI.Hosting.AspNetCore.IntegrationTests/Samples/GettingStarted/baselines/MixedToolInvocationIntegration/MixedInvocation_TwoTurnFlow_EmitsToolCallsThenServerResults#Turn_01.08.Response.Client.NET.verified.json:260–280sdks/dotnet/tests/AGUI.Hosting.AspNetCore.IntegrationTests/Samples/GettingStarted/baselines/MixedToolInvocationIntegration/MixedInvocation_TwoTurnFlow_EmitsToolCallsThenServerResults#Turn_01.08.Response.Client.NET.verified.json:295–315sdks/dotnet/tests/AGUI.Hosting.AspNetCore.IntegrationTests/Samples/GettingStarted/baselines/MixedToolInvocationIntegration/MixedInvocation_TwoTurnFlow_EmitsToolCallsThenServerResults#Turn_01.08.Response.Client.NET.verified.json:330–350sdks/dotnet/tests/AGUI.Hosting.AspNetCore.IntegrationTests/Samples/GettingStarted/baselines/MixedToolInvocationIntegration/MixedInvocation_TwoTurnFlow_EmitsToolCallsThenServerResults#Turn_01.08.Response.Client.NET.verified.json:365–385sdks/dotnet/tests/AGUI.Hosting.AspNetCore.IntegrationTests/Samples/GettingStarted/baselines/MixedToolInvocationIntegration/MixedInvocation_TwoTurnFlow_EmitsToolCallsThenServerResults#Turn_01.08.Response.Client.NET.verified.json:400–420and 409 more
260 "text": "1", 261 "annotations": null, 262 "additionalProperties": null 263 } 264], 265"additionalProperties": null, 266"responseId": "chatcmpl-Id_2", 267"messageId": "chatcmpl-Id_2", 268"conversationId": null, 269"finishReason": null,First 10 of 21 lines.
- 21 lines in 397 placesjsontests57 tokenssdks/dotnet/tests/AGUI.Hosting.AspNetCore.IntegrationTests/Samples/GettingStarted/baselines/Step01_GettingStarted/PostRun_MultiTurn_SynthesizesAssistantMessages#Turn_01.08.Response.Client.NET.verified.json:36–56sdks/dotnet/tests/AGUI.Hosting.AspNetCore.IntegrationTests/Samples/GettingStarted/baselines/Step01_GettingStarted/PostRun_MultiTurn_SynthesizesAssistantMessages#Turn_01.08.Response.Client.NET.verified.json:71–91sdks/dotnet/tests/AGUI.Hosting.AspNetCore.IntegrationTests/Samples/GettingStarted/baselines/Step01_GettingStarted/PostRun_MultiTurn_SynthesizesAssistantMessages#Turn_01.08.Response.Client.NET.verified.json:106–126sdks/dotnet/tests/AGUI.Hosting.AspNetCore.IntegrationTests/Samples/GettingStarted/baselines/Step01_GettingStarted/PostRun_MultiTurn_SynthesizesAssistantMessages#Turn_01.08.Response.Client.NET.verified.json:141–161sdks/dotnet/tests/AGUI.Hosting.AspNetCore.IntegrationTests/Samples/GettingStarted/baselines/Step01_GettingStarted/PostRun_MultiTurn_SynthesizesAssistantMessages#Turn_01.08.Response.Client.NET.verified.json:176–196and 392 more
36 "text": "Hello", 37 "annotations": null, 38 "additionalProperties": null 39 } 40], 41"additionalProperties": null, 42"responseId": "chatcmpl-Id_1", 43"messageId": "chatcmpl-Id_1", 44"conversationId": null, 45"finishReason": null,First 10 of 21 lines.
- 18 lines in 418 placesjsontests52 tokenssdks/dotnet/tests/AGUI.Hosting.AspNetCore.IntegrationTests/Samples/GettingStarted/baselines/MixedToolInvocationIntegration/MixedInvocation_TwoTurnFlow_EmitsToolCallsThenServerResults#Turn_02.07.Response.Client.AGUI.verified.json:44–61sdks/dotnet/tests/AGUI.Hosting.AspNetCore.IntegrationTests/Samples/GettingStarted/baselines/MixedToolInvocationIntegration/MixedInvocation_TwoTurnFlow_EmitsToolCallsThenServerResults#Turn_02.07.Response.Client.AGUI.verified.json:68–85sdks/dotnet/tests/AGUI.Hosting.AspNetCore.IntegrationTests/Samples/GettingStarted/baselines/MixedToolInvocationIntegration/MixedInvocation_TwoTurnFlow_EmitsToolCallsThenServerResults#Turn_02.07.Response.Client.AGUI.verified.json:92–109sdks/dotnet/tests/AGUI.Hosting.AspNetCore.IntegrationTests/Samples/GettingStarted/baselines/MixedToolInvocationIntegration/MixedInvocation_TwoTurnFlow_EmitsToolCallsThenServerResults#Turn_02.07.Response.Client.AGUI.verified.json:116–133sdks/dotnet/tests/AGUI.Hosting.AspNetCore.IntegrationTests/Samples/GettingStarted/baselines/MixedToolInvocationIntegration/MixedInvocation_TwoTurnFlow_EmitsToolCallsThenServerResults#Turn_02.07.Response.Client.AGUI.verified.json:140–157and 413 more
44 "text": "", 45 "annotations": null, 46 "additionalProperties": null 47 } 48], 49"additionalProperties": null, 50"responseId": "chatcmpl-Id_2", 51"messageId": "chatcmpl-Id_2", 52"conversationId": null, 53"finishReason": null,First 10 of 18 lines.
- 18 lines in 399 placesjsontests52 tokenssdks/dotnet/tests/AGUI.Hosting.AspNetCore.IntegrationTests/Samples/GettingStarted/baselines/Step01_GettingStarted/PostRun_MultiTurn_SynthesizesAssistantMessages#Turn_01.07.Response.Client.AGUI.verified.json:18–35sdks/dotnet/tests/AGUI.Hosting.AspNetCore.IntegrationTests/Samples/GettingStarted/baselines/Step01_GettingStarted/PostRun_MultiTurn_SynthesizesAssistantMessages#Turn_01.07.Response.Client.AGUI.verified.json:42–59sdks/dotnet/tests/AGUI.Hosting.AspNetCore.IntegrationTests/Samples/GettingStarted/baselines/Step01_GettingStarted/PostRun_MultiTurn_SynthesizesAssistantMessages#Turn_01.07.Response.Client.AGUI.verified.json:66–83sdks/dotnet/tests/AGUI.Hosting.AspNetCore.IntegrationTests/Samples/GettingStarted/baselines/Step01_GettingStarted/PostRun_MultiTurn_SynthesizesAssistantMessages#Turn_01.07.Response.Client.AGUI.verified.json:90–107sdks/dotnet/tests/AGUI.Hosting.AspNetCore.IntegrationTests/Samples/GettingStarted/baselines/Step01_GettingStarted/PostRun_MultiTurn_SynthesizesAssistantMessages#Turn_01.07.Response.Client.AGUI.verified.json:114–131and 394 more
- 2133 lines in 2 placesjsontests7,682 tokens
By format, code only
| Format | Files | Lines | Clones | Duplicated lines | Duplication |
|---|---|---|---|---|---|
| swift | 272 | 48,956 | 230 | 2,903 | 5.93% |
| typescript | 274 | 75,490 | 133 | 2,034 | 2.69% |
| java | 94 | 5,293 | 68 | 573 | 10.83% |
| python | 140 | 68,088 | 53 | 702 | 1.03% |
| kotlin | 46 | 9,965 | 41 | 577 | 5.79% |
| dart | 21 | 9,578 | 31 | 428 | 4.47% |
| tsx | 61 | 10,077 | 24 | 395 | 3.92% |
| javascript | 20 | 4,049 | 17 | 336 | 8.3% |
| go | 33 | 9,406 | 15 | 186 | 1.98% |
| ruby | 9 | 5,178 | 15 | 238 | 4.6% |
By format, all files
| Format | Files | Lines | Clones | Duplicated lines | Duplication |
|---|---|---|---|---|---|
| json | 468 | 223,977 | 6,646 | 209,474 | 93.52% |
| typescript | 1,322 | 401,906 | 4,989 | 119,309 | 29.69% |
| python | 695 | 264,481 | 1,067 | 15,064 | 5.7% |
| csharp | 408 | 67,780 | 540 | 10,661 | 15.73% |
| swift | 281 | 50,168 | 235 | 2,962 | 5.9% |
| java | 143 | 11,034 | 134 | 1,291 | 11.7% |
| go | 109 | 24,342 | 122 | 1,359 | 5.58% |
| markdown | 230 | 34,186 | 113 | 1,692 | 4.95% |
| dart | 74 | 29,464 | 104 | 1,220 | 4.14% |
| kotlin | 172 | 34,111 | 101 | 1,467 | 4.3% |
Trending appearances
| Day | Rank | Stars | Files | Lines | Clones | All files | Code | Health | Commit |
|---|---|---|---|---|---|---|---|---|---|
| Nov 15, 2026 | #7 | 17,433 (+9) | 4,440 | 1,214,566 | 14,448 | 30.68% | 3.16% | D 47 | 2330368 |
Want this for your own project? Install jscpd and run jscpd ., or measure it the way the baselines were measured.