gitextract_1usf67qd/ ├── .claude/ │ └── settings.json ├── .gitattributes ├── .github/ │ ├── CODEOWNERS │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ ├── documentation.yml │ │ └── feature_request.yml │ ├── pull_request_template.md │ └── workflows/ │ ├── auto-approve-community.yml │ ├── build-python-preview.yml │ ├── dojo-e2e.yml │ ├── pr-check-binaries.yml │ ├── publish-commit.yml │ ├── publish-java-sdk.yml │ ├── publish-kotlin-sdk.yml │ ├── publish-python-package.yml │ ├── publish-python-preview.yml │ ├── rust-lint-test.yml │ ├── unit-dart-sdk.yml │ ├── unit-genkit-go.yml │ ├── unit-go-sdk.yml │ ├── unit-java-sdk.yml │ ├── unit-kotlin-sdk.yml │ ├── unit-python-sdk.yml │ ├── unit-ruby-sdk.yml │ └── unit-typescript-sdk.yml ├── .gitignore ├── .mcp.json ├── AGENTS.md ├── CLAUDE.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── apps/ │ ├── client-cli-example/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── agent.ts │ │ │ ├── index.ts │ │ │ └── tools/ │ │ │ ├── browser.tool.ts │ │ │ └── weather.tool.ts │ │ └── tsconfig.json │ └── dojo/ │ ├── .gitignore │ ├── LICENSE │ ├── README.md │ ├── components.json │ ├── e2e/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── VIDEO_SETUP.md │ │ ├── clean-reporter.cjs │ │ ├── featurePages/ │ │ │ ├── AgenticChatPage.ts │ │ │ ├── HumanInTheLoopPage.ts │ │ │ ├── SharedStatePage.ts │ │ │ ├── ToolBaseGenUIPage.ts │ │ │ └── V1AgenticChatPage.ts │ │ ├── fixtures/ │ │ │ └── openai/ │ │ │ ├── agentic-chat.json │ │ │ ├── agentic-gen-ui.json │ │ │ ├── backend-tool-rendering.json │ │ │ ├── human-in-the-loop.json │ │ │ ├── predictive-state.json │ │ │ ├── shared-state.json │ │ │ ├── subgraphs.json │ │ │ ├── tool-based-gen-ui.json │ │ │ └── v1-chat.json │ │ ├── lib/ │ │ │ ├── constants.ts │ │ │ ├── mock-agent.ts │ │ │ └── upload-video.ts │ │ ├── llmock-setup.ts │ │ ├── package.json │ │ ├── pages/ │ │ │ ├── a2aMiddlewarePages/ │ │ │ │ └── A2AChatPage.ts │ │ │ ├── adkMiddlewarePages/ │ │ │ │ ├── HumanInLoopPage.ts │ │ │ │ └── PredictiveStateUpdatesPage.ts │ │ │ ├── agnoPages/ │ │ │ │ └── HumanInLoopPage.ts │ │ │ ├── awsStrandsPages/ │ │ │ │ ├── AgenticUIGenPage.ts │ │ │ │ └── HumanInLoopPage.ts │ │ │ ├── crewAIPages/ │ │ │ │ ├── AgenticUIGenPage.ts │ │ │ │ ├── HumanInLoopPage.ts │ │ │ │ └── PredictiveStateUpdatesPage.ts │ │ │ ├── langGraphFastAPIPages/ │ │ │ │ ├── AgenticUIGenPage.ts │ │ │ │ ├── HumanInLoopPage.ts │ │ │ │ ├── PredictiveStateUpdatesPage.ts │ │ │ │ └── SubgraphsPage.ts │ │ │ ├── langGraphPages/ │ │ │ │ ├── AgenticUIGenPage.ts │ │ │ │ ├── HumanInLoopPage.ts │ │ │ │ ├── PredictiveStateUpdatesPage.ts │ │ │ │ └── SubgraphsPage.ts │ │ │ ├── langroidPages/ │ │ │ │ └── AgenticUIGenPage.ts │ │ │ ├── llamaIndexPages/ │ │ │ │ ├── AgenticUIGenPage.ts │ │ │ │ └── HumanInLoopPage.ts │ │ │ ├── pydanticAIPages/ │ │ │ │ ├── AgenticUIGenPage.ts │ │ │ │ ├── HumanInLoopPage.ts │ │ │ │ └── PredictiveStateUpdatesPage.ts │ │ │ └── serverStarterAllFeaturesPages/ │ │ │ ├── AgenticUIGenPage.ts │ │ │ ├── HumanInLoopPage.ts │ │ │ └── PredictiveStateUpdatesPage.ts │ │ ├── playwright.config.ts │ │ ├── pnpm-workspace.yaml │ │ ├── reporters/ │ │ │ └── s3-video-reporter.ts │ │ ├── setup-aws.sh │ │ ├── slack-layout-simple.ts │ │ ├── slack-layout.ts │ │ ├── test-isolation-helper.ts │ │ ├── test-isolation-setup.ts │ │ ├── test-isolation-teardown.ts │ │ ├── tests/ │ │ │ ├── a2aMiddlewareTests/ │ │ │ │ └── a2aChatPage.spec.ts │ │ │ ├── adkMiddlewareTests/ │ │ │ │ ├── agenticChatPage.spec.ts │ │ │ │ ├── backendToolRenderingPage.spec.ts │ │ │ │ ├── humanInTheLoopPage.spec.ts │ │ │ │ ├── predictiveStateUpdatePage.spec.ts │ │ │ │ ├── sharedStatePage.spec.ts │ │ │ │ ├── toolBasedGenUIPage.spec.ts │ │ │ │ └── v1AgenticChatPage.spec.ts │ │ │ ├── agnoTests/ │ │ │ │ ├── agenticChatPage.spec.ts │ │ │ │ ├── backendToolRenderingPage.spec.ts │ │ │ │ ├── humanInTheLoopPage.spec.ts │ │ │ │ ├── toolBasedGenUIPage.spec.ts │ │ │ │ └── v1AgenticChatPage.spec.ts │ │ │ ├── awsStrandsTests/ │ │ │ │ ├── agenticChatPage.spec.ts │ │ │ │ ├── agenticGenUI.spec.ts │ │ │ │ ├── backendToolRenderingPage.spec.ts │ │ │ │ ├── humanInTheLoopPage.spec.ts │ │ │ │ ├── sharedStatePage.spec.ts │ │ │ │ └── v1AgenticChatPage.spec.ts │ │ │ ├── claudeAgentSdkPythonTests/ │ │ │ │ ├── agenticChatPage.spec.ts │ │ │ │ ├── backendToolRenderingPage.spec.ts │ │ │ │ ├── humanInTheLoopPage.spec.ts │ │ │ │ ├── sharedStatePage.spec.ts │ │ │ │ └── toolBasedGenUIPage.spec.ts │ │ │ ├── claudeAgentSdkTypescriptTests/ │ │ │ │ ├── agenticChatPage.spec.ts │ │ │ │ ├── backendToolRenderingPage.spec.ts │ │ │ │ ├── humanInTheLoopPage.spec.ts │ │ │ │ ├── sharedStatePage.spec.ts │ │ │ │ └── toolBasedGenUIPage.spec.ts │ │ │ ├── crewAITests/ │ │ │ │ ├── agenticChatPage.spec.ts │ │ │ │ ├── agenticGenUI.spec.ts │ │ │ │ ├── humanInTheLoopPage.spec.ts │ │ │ │ ├── predictiveStateUpdatePage.spec.ts │ │ │ │ ├── sharedStatePage.spec.ts │ │ │ │ ├── toolBasedGenUIPage.spec.ts │ │ │ │ └── v1AgenticChatPage.spec.ts │ │ │ ├── langchainTests/ │ │ │ │ ├── agenticChatPage.spec.ts │ │ │ │ └── toolBasedGenUIPage.spec.ts │ │ │ ├── langgraphFastAPITests/ │ │ │ │ ├── agenticChatPage.spec.ts │ │ │ │ ├── agenticGenUI.spec.ts │ │ │ │ ├── backendToolRenderingPage.spec.ts │ │ │ │ ├── humanInTheLoopPage.spec.ts │ │ │ │ ├── predictiveStateUpdatePage.spec.ts │ │ │ │ ├── sharedStatePage.spec.ts │ │ │ │ ├── subgraphsPage.spec.ts │ │ │ │ ├── toolBasedGenUIPage.spec.ts │ │ │ │ └── v1AgenticChatPage.spec.ts │ │ │ ├── langgraphPythonTests/ │ │ │ │ ├── agenticChatPage.spec.ts │ │ │ │ ├── agenticGenUI.spec.ts │ │ │ │ ├── backendToolRenderingPage.spec.ts │ │ │ │ ├── humanInTheLoopPage.spec.ts │ │ │ │ ├── predictiveStateUpdatePage.spec.ts │ │ │ │ ├── sharedStatePage.spec.ts │ │ │ │ ├── subgraphsPage.spec.ts │ │ │ │ ├── toolBasedGenUIPage.spec.ts │ │ │ │ └── v1AgenticChatPage.spec.ts │ │ │ ├── langgraphTypescriptTests/ │ │ │ │ ├── agenticChatDeterministic.spec.ts │ │ │ │ ├── agenticChatPage.spec.ts │ │ │ │ ├── agenticGenUI.spec.ts │ │ │ │ ├── humanInTheLoopPage.spec.ts │ │ │ │ ├── predictiveStateUpdatePage.spec.ts │ │ │ │ ├── sharedStatePage.spec.ts │ │ │ │ ├── subgraphsPage.spec.ts │ │ │ │ ├── toolBasedGenUIPage.spec.ts │ │ │ │ └── v1AgenticChatPage.spec.ts │ │ │ ├── langroidTests/ │ │ │ │ ├── agenticChatPage.spec.ts │ │ │ │ ├── agenticGenUI.spec.ts │ │ │ │ ├── backendToolRenderingPage.spec.ts │ │ │ │ └── sharedStatePage.spec.ts │ │ │ ├── llamaIndexTests/ │ │ │ │ ├── agenticChatPage.spec.ts │ │ │ │ ├── agenticGenUI.spec.ts │ │ │ │ ├── backendToolRenderingPage.spec.ts │ │ │ │ ├── humanInTheLoopPage.spec.ts │ │ │ │ ├── sharedStatePage.spec.ts │ │ │ │ └── v1AgenticChatPage.spec.ts │ │ │ ├── mastraAgentLocalTests/ │ │ │ │ ├── agenticChatPage.spec.ts │ │ │ │ ├── backendToolRenderingPage.spec.ts │ │ │ │ ├── humanInTheLoopPage.spec.ts │ │ │ │ ├── sharedStatePage.spec.ts │ │ │ │ ├── toolBasedGenUIPage.spec.ts │ │ │ │ └── v1AgenticChatPage.spec.ts │ │ │ ├── mastraTests/ │ │ │ │ ├── agenticChatPage.spec.ts │ │ │ │ ├── backendToolRenderingPage.spec.ts │ │ │ │ ├── humanInTheLoopPage.spec.ts │ │ │ │ ├── toolBasedGenUIPage.spec.ts │ │ │ │ └── v1AgenticChatPage.spec.ts │ │ │ ├── middlewareStarterTests/ │ │ │ │ ├── agenticChatPage.spec.ts │ │ │ │ └── v1AgenticChatPage.spec.ts │ │ │ ├── pydanticAITests/ │ │ │ │ ├── agenticChatPage.spec.ts │ │ │ │ ├── agenticGenUI.spec.ts │ │ │ │ ├── backendToolRenderingPage.spec.ts │ │ │ │ ├── humanInTheLoopPage.spec.ts │ │ │ │ ├── predictiveStateUpdatePage.spec.ts │ │ │ │ ├── sharedStatePage.spec.ts │ │ │ │ ├── toolBasedGenUIPage.spec.ts │ │ │ │ └── v1AgenticChatPage.spec.ts │ │ │ ├── serverStarterAllFeaturesTests/ │ │ │ │ ├── agenticChatPage.spec.ts │ │ │ │ ├── agenticGenUI.spec.ts │ │ │ │ ├── backendToolRenderingPage.spec.ts │ │ │ │ ├── humanInTheLoopPage.spec.ts │ │ │ │ ├── predictiveStateUpdatePage.spec.ts │ │ │ │ ├── sharedStatePage.spec.ts │ │ │ │ ├── toolBasedGenUIPage.spec.ts │ │ │ │ └── v1AgenticChatPage.spec.ts │ │ │ └── serverStarterTests/ │ │ │ ├── agenticChatPage.spec.ts │ │ │ └── v1AgenticChatPage.spec.ts │ │ └── utils/ │ │ ├── aiWaitHelpers.ts │ │ ├── copilot-actions.ts │ │ └── copilot-selectors.ts │ ├── eslint.config.mjs │ ├── next.config.ts │ ├── package.json │ ├── postcss.config.mjs │ ├── scripts/ │ │ ├── generate-content-json.ts │ │ ├── link-cpk.js │ │ ├── prep-dojo-everything.js │ │ └── run-dojo-everything.js │ ├── src/ │ │ ├── agents.ts │ │ ├── app/ │ │ │ ├── [integrationId]/ │ │ │ │ ├── feature/ │ │ │ │ │ ├── (v1)/ │ │ │ │ │ │ └── v1_agentic_chat/ │ │ │ │ │ │ ├── README.mdx │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── (v2)/ │ │ │ │ │ │ ├── a2a_chat/ │ │ │ │ │ │ │ ├── README.mdx │ │ │ │ │ │ │ ├── a2a_chat.tsx │ │ │ │ │ │ │ ├── page.tsx │ │ │ │ │ │ │ └── style.css │ │ │ │ │ │ ├── a2ui_chat/ │ │ │ │ │ │ │ ├── README.mdx │ │ │ │ │ │ │ ├── page.tsx │ │ │ │ │ │ │ ├── style.css │ │ │ │ │ │ │ └── theme.ts │ │ │ │ │ │ ├── agentic_chat/ │ │ │ │ │ │ │ ├── README.mdx │ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ │ ├── agentic_chat_reasoning/ │ │ │ │ │ │ │ ├── README.mdx │ │ │ │ │ │ │ ├── page.tsx │ │ │ │ │ │ │ └── style.css │ │ │ │ │ │ ├── agentic_generative_ui/ │ │ │ │ │ │ │ ├── README.mdx │ │ │ │ │ │ │ ├── page.tsx │ │ │ │ │ │ │ └── style.css │ │ │ │ │ │ ├── backend_tool_rendering/ │ │ │ │ │ │ │ ├── README.mdx │ │ │ │ │ │ │ ├── page.tsx │ │ │ │ │ │ │ └── style.css │ │ │ │ │ │ ├── human_in_the_loop/ │ │ │ │ │ │ │ ├── README.mdx │ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ │ ├── predictive_state_updates/ │ │ │ │ │ │ │ ├── README.mdx │ │ │ │ │ │ │ ├── page.tsx │ │ │ │ │ │ │ └── style.css │ │ │ │ │ │ ├── shared_state/ │ │ │ │ │ │ │ ├── README.mdx │ │ │ │ │ │ │ ├── page.tsx │ │ │ │ │ │ │ └── style.css │ │ │ │ │ │ ├── subgraphs/ │ │ │ │ │ │ │ ├── README.mdx │ │ │ │ │ │ │ ├── page.tsx │ │ │ │ │ │ │ └── style.css │ │ │ │ │ │ ├── tool_based_generative_ui/ │ │ │ │ │ │ │ ├── README.mdx │ │ │ │ │ │ │ ├── page.tsx │ │ │ │ │ │ │ └── style.css │ │ │ │ │ │ └── vnext_chat/ │ │ │ │ │ │ ├── README.mdx │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── layout-client.tsx │ │ │ │ │ ├── layout.tsx │ │ │ │ │ └── not-found.tsx │ │ │ │ ├── not-found.tsx │ │ │ │ └── page.tsx │ │ │ ├── api/ │ │ │ │ ├── copilotkit/ │ │ │ │ │ ├── [integrationId]/ │ │ │ │ │ │ └── [[...slug]]/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── route.ts │ │ │ │ └── copilotkitnext/ │ │ │ │ └── [integrationId]/ │ │ │ │ └── [[...slug]]/ │ │ │ │ └── route.ts │ │ │ ├── globals.css │ │ │ ├── layout.tsx │ │ │ └── page.tsx │ │ ├── components/ │ │ │ ├── code-viewer/ │ │ │ │ ├── code-editor.tsx │ │ │ │ └── code-viewer.tsx │ │ │ ├── demo-list/ │ │ │ │ └── demo-list.tsx │ │ │ ├── file-tree/ │ │ │ │ ├── file-tree-nav.tsx │ │ │ │ └── file-tree.tsx │ │ │ ├── layout/ │ │ │ │ ├── main-layout.tsx │ │ │ │ └── viewer-layout.tsx │ │ │ ├── readme/ │ │ │ │ └── readme.tsx │ │ │ ├── sidebar/ │ │ │ │ └── sidebar.tsx │ │ │ ├── theme-provider.tsx │ │ │ ├── theme-wrapper.tsx │ │ │ └── ui/ │ │ │ ├── badge.tsx │ │ │ ├── button.tsx │ │ │ ├── carousel.tsx │ │ │ ├── dropdown-menu.tsx │ │ │ ├── mdx-components.tsx │ │ │ ├── tabs.tsx │ │ │ └── theme-toggle.tsx │ │ ├── config.ts │ │ ├── contexts/ │ │ │ └── url-params-context.tsx │ │ ├── env.ts │ │ ├── files.json │ │ ├── lib/ │ │ │ └── utils.ts │ │ ├── mastra/ │ │ │ ├── agents/ │ │ │ │ ├── agentic-chat.ts │ │ │ │ ├── backend-tool-rendering.ts │ │ │ │ ├── human-in-the-loop.ts │ │ │ │ ├── shared-state.ts │ │ │ │ └── tool-based-generative-ui.ts │ │ │ ├── index.ts │ │ │ ├── storage.ts │ │ │ └── tools.ts │ │ ├── menu.ts │ │ ├── proxy.ts │ │ ├── styles/ │ │ │ └── typography.css │ │ ├── types/ │ │ │ ├── agents.ts │ │ │ ├── feature.ts │ │ │ ├── integration.ts │ │ │ └── interface.ts │ │ └── utils/ │ │ ├── agents.ts │ │ ├── domain-config.ts │ │ ├── mdx-utils.tsx │ │ ├── menu.ts │ │ ├── use-is-inside-iframe.ts │ │ ├── use-mobile-chat.ts │ │ └── use-mobile-view.ts │ ├── tailwind.config.ts │ └── tsconfig.json ├── docs/ │ ├── .gitignore │ ├── .prettierignore │ ├── .prettierrc │ ├── LICENSE │ ├── README.md │ ├── ag_ui.md │ ├── agentic-protocols.mdx │ ├── concepts/ │ │ ├── agents.mdx │ │ ├── architecture.mdx │ │ ├── capabilities.mdx │ │ ├── events.mdx │ │ ├── generative-ui-specs.mdx │ │ ├── messages.mdx │ │ ├── middleware.mdx │ │ ├── reasoning.mdx │ │ ├── serialization.mdx │ │ ├── state.mdx │ │ └── tools.mdx │ ├── development/ │ │ ├── contributing.mdx │ │ ├── roadmap.mdx │ │ └── updates.mdx │ ├── docs.json │ ├── drafts/ │ │ ├── generative-ui.mdx │ │ ├── interrupts.mdx │ │ ├── meta-events.mdx │ │ ├── multimodal-messages.mdx │ │ └── overview.mdx │ ├── icons/ │ │ ├── custom-icons.tsx │ │ └── index.tsx │ ├── images/ │ │ └── left-illustration.avif │ ├── integrations.mdx │ ├── introduction.mdx │ ├── package.json │ ├── quickstart/ │ │ ├── applications.mdx │ │ ├── clients.mdx │ │ ├── introduction.mdx │ │ ├── middleware.mdx │ │ └── server.mdx │ ├── sdk/ │ │ ├── dart/ │ │ │ ├── client/ │ │ │ │ ├── client.mdx │ │ │ │ └── overview.mdx │ │ │ ├── core/ │ │ │ │ ├── events.mdx │ │ │ │ ├── overview.mdx │ │ │ │ └── types.mdx │ │ │ ├── encoder/ │ │ │ │ └── overview.mdx │ │ │ └── overview.mdx │ │ ├── go/ │ │ │ ├── client/ │ │ │ │ ├── overview.mdx │ │ │ │ └── sse-client.mdx │ │ │ ├── core/ │ │ │ │ ├── events.mdx │ │ │ │ ├── overview.mdx │ │ │ │ └── types.mdx │ │ │ ├── encoding/ │ │ │ │ └── overview.mdx │ │ │ ├── errors/ │ │ │ │ └── overview.mdx │ │ │ └── overview.mdx │ │ ├── java/ │ │ │ ├── client/ │ │ │ │ ├── abstract-agent.mdx │ │ │ │ ├── http-agent.mdx │ │ │ │ ├── overview.mdx │ │ │ │ └── subscriber.mdx │ │ │ ├── core/ │ │ │ │ ├── events.mdx │ │ │ │ ├── overview.mdx │ │ │ │ ├── stream.mdx │ │ │ │ ├── subscription.mdx │ │ │ │ └── types.mdx │ │ │ ├── overview.mdx │ │ │ └── server/ │ │ │ ├── overview.mdx │ │ │ └── spring.mdx │ │ ├── js/ │ │ │ ├── client/ │ │ │ │ ├── abstract-agent.mdx │ │ │ │ ├── compaction.mdx │ │ │ │ ├── http-agent.mdx │ │ │ │ ├── middleware.mdx │ │ │ │ ├── overview.mdx │ │ │ │ └── subscriber.mdx │ │ │ ├── core/ │ │ │ │ ├── events.mdx │ │ │ │ ├── overview.mdx │ │ │ │ └── types.mdx │ │ │ ├── encoder.mdx │ │ │ ├── overview.mdx │ │ │ └── proto.mdx │ │ ├── kotlin/ │ │ │ ├── client/ │ │ │ │ ├── abstract-agent.mdx │ │ │ │ ├── agui-agent.mdx │ │ │ │ ├── http-agent.mdx │ │ │ │ ├── overview.mdx │ │ │ │ └── stateful-agui-agent.mdx │ │ │ ├── core/ │ │ │ │ ├── events.mdx │ │ │ │ ├── overview.mdx │ │ │ │ └── types.mdx │ │ │ ├── overview.mdx │ │ │ └── tools/ │ │ │ ├── overview.mdx │ │ │ ├── tool-executor.mdx │ │ │ └── tool-registry.mdx │ │ ├── python/ │ │ │ ├── core/ │ │ │ │ ├── events.mdx │ │ │ │ ├── overview.mdx │ │ │ │ └── types.mdx │ │ │ └── encoder/ │ │ │ └── overview.mdx │ │ ├── ruby/ │ │ │ ├── core/ │ │ │ │ ├── events.mdx │ │ │ │ ├── overview.mdx │ │ │ │ └── types.mdx │ │ │ ├── encoder/ │ │ │ │ └── overview.mdx │ │ │ └── overview.mdx │ │ └── rust/ │ │ ├── client/ │ │ │ ├── agent-trait.mdx │ │ │ ├── http-agent.mdx │ │ │ ├── overview.mdx │ │ │ └── subscriber.mdx │ │ ├── core/ │ │ │ ├── events.mdx │ │ │ ├── overview.mdx │ │ │ └── types.mdx │ │ └── overview.mdx │ ├── snippets/ │ │ └── snippet-intro.mdx │ └── tutorials/ │ ├── cursor.mdx │ └── debugging.mdx ├── integrations/ │ ├── a2a/ │ │ └── typescript/ │ │ ├── .gitignore │ │ ├── .npmrc │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── __tests__/ │ │ │ │ ├── agent.test.ts │ │ │ │ └── utils.test.ts │ │ │ ├── agent.ts │ │ │ ├── index.ts │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── adk-middleware/ │ │ ├── python/ │ │ │ ├── .gitignore │ │ │ ├── ARCHITECTURE.md │ │ │ ├── CHANGELOG.md │ │ │ ├── CLAUDE.md │ │ │ ├── CONFIGURATION.md │ │ │ ├── LOGGING.md │ │ │ ├── README.md │ │ │ ├── STREAMING_FC_ARGS_RECONSTRUCTION.md │ │ │ ├── TOOLS.md │ │ │ ├── USAGE.md │ │ │ ├── examples/ │ │ │ │ ├── README.md │ │ │ │ ├── other/ │ │ │ │ │ ├── complete_setup.py │ │ │ │ │ ├── configure_adk_agent.py │ │ │ │ │ ├── context_usage.py │ │ │ │ │ └── simple_agent.py │ │ │ │ ├── pyproject.toml │ │ │ │ └── server/ │ │ │ │ ├── __init__.py │ │ │ │ └── api/ │ │ │ │ ├── __init__.py │ │ │ │ ├── agentic_chat.py │ │ │ │ ├── agentic_generative_ui.py │ │ │ │ ├── backend_tool_rendering.py │ │ │ │ ├── human_in_the_loop.py │ │ │ │ ├── predictive_state_updates.py │ │ │ │ ├── shared_state.py │ │ │ │ └── tool_based_generative_ui.py │ │ │ ├── pyproject.toml │ │ │ ├── pytest.ini │ │ │ ├── src/ │ │ │ │ └── ag_ui_adk/ │ │ │ │ ├── __init__.py │ │ │ │ ├── adk_agent.py │ │ │ │ ├── agui_toolset.py │ │ │ │ ├── client_proxy_tool.py │ │ │ │ ├── client_proxy_toolset.py │ │ │ │ ├── config.py │ │ │ │ ├── endpoint.py │ │ │ │ ├── event_translator.py │ │ │ │ ├── execution_state.py │ │ │ │ ├── session_manager.py │ │ │ │ └── utils/ │ │ │ │ ├── __init__.py │ │ │ │ └── converters.py │ │ │ └── tests/ │ │ │ ├── __init__.py │ │ │ ├── conftest.py │ │ │ ├── run_all_tests.sh │ │ │ ├── server_setup.py │ │ │ ├── test_adk_agent.py │ │ │ ├── test_adk_agent_memory_integration.py │ │ │ ├── test_adk_llm_flow_tool_override.py │ │ │ ├── test_app_name_extractor.py │ │ │ ├── test_chunk_event.py │ │ │ ├── test_claude_streaming.py │ │ │ ├── test_client_proxy_tool.py │ │ │ ├── test_client_proxy_toolset.py │ │ │ ├── test_concurrency.py │ │ │ ├── test_concurrent_limits.py │ │ │ ├── test_context_handling.py │ │ │ ├── test_context_integration.py │ │ │ ├── test_credential_service_defaults.py │ │ │ ├── test_duplicate_function_response.py │ │ │ ├── test_endpoint.py │ │ │ ├── test_endpoint_error_handling.py │ │ │ ├── test_event_bookending.py │ │ │ ├── test_event_translator_comprehensive.py │ │ │ ├── test_execution_state.py │ │ │ ├── test_from_app_integration.py │ │ │ ├── test_hitl_resumption_text_output.py │ │ │ ├── test_integration.py │ │ │ ├── test_integration_mixed_partials.py │ │ │ ├── test_issue_437_skip_summarization_integration.py │ │ │ ├── test_lro_filtering.py │ │ │ ├── test_lro_sse_id_remap.py │ │ │ ├── test_lro_sse_persistence.py │ │ │ ├── test_lro_tool_response_persistence.py │ │ │ ├── test_message_history.py │ │ │ ├── test_multi_turn_conversation.py │ │ │ ├── test_non_streaming_text_with_lro_tool.py │ │ │ ├── test_predictive_state.py │ │ │ ├── test_resumability_config.py │ │ │ ├── test_sequential_agent_hitl_resumption.py │ │ │ ├── test_session_cleanup.py │ │ │ ├── test_session_creation.py │ │ │ ├── test_session_deletion.py │ │ │ ├── test_session_memory.py │ │ │ ├── test_skip_summarization.py │ │ │ ├── test_stale_session_invocation_id.py │ │ │ ├── test_streaming.py │ │ │ ├── test_streaming_fc_args.py │ │ │ ├── test_text_events.py │ │ │ ├── test_thought_to_thinking_integration.py │ │ │ ├── test_tool_error_handling.py │ │ │ ├── test_tool_result_flow.py │ │ │ ├── test_tool_tracking_hitl.py │ │ │ ├── test_use_thread_id_as_session_id.py │ │ │ ├── test_user_id_extractor.py │ │ │ ├── test_utils_converters.py │ │ │ ├── test_utils_init.py │ │ │ └── test_vertex_session_service.py │ │ └── typescript/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ ├── tsconfig.json │ │ └── tsdown.config.ts │ ├── ag2/ │ │ ├── python/ │ │ │ ├── .gitignore │ │ │ └── examples/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── pyproject.toml │ │ │ └── server/ │ │ │ ├── __init__.py │ │ │ └── api/ │ │ │ ├── __init__.py │ │ │ ├── agentic_chat.py │ │ │ ├── agentic_generative_ui.py │ │ │ ├── backend_tool_rendering.py │ │ │ ├── human_in_the_loop.py │ │ │ ├── shared_state.py │ │ │ └── tool_based_generative_ui.py │ │ └── typescript/ │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── agent-spec/ │ │ └── python/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── ag_ui_agentspec/ │ │ │ ├── __init__.py │ │ │ ├── agent.py │ │ │ ├── agentspec_tracing_exporter.py │ │ │ ├── agentspecloader.py │ │ │ ├── endpoint.py │ │ │ └── runtimes/ │ │ │ ├── __init__.py │ │ │ ├── langgraph_runner.py │ │ │ └── wayflow_runner.py │ │ ├── examples/ │ │ │ ├── README.md │ │ │ ├── pyproject.toml │ │ │ └── server/ │ │ │ ├── __init__.py │ │ │ └── api/ │ │ │ ├── A2UI_PROMPT.txt │ │ │ ├── __init__.py │ │ │ ├── a2ui_chat.py │ │ │ ├── agentic_chat.py │ │ │ ├── backend_tool_rendering.py │ │ │ ├── human_in_the_loop.py │ │ │ ├── routes.py │ │ │ └── tool_based_generative_ui.py │ │ └── pyproject.toml │ ├── agno/ │ │ ├── python/ │ │ │ ├── .gitignore │ │ │ └── examples/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── pyproject.toml │ │ │ ├── requirements.txt │ │ │ └── server/ │ │ │ ├── __init__.py │ │ │ └── api/ │ │ │ ├── __init__.py │ │ │ ├── agentic_chat.py │ │ │ ├── backend_tool_rendering.py │ │ │ ├── human_in_the_loop.py │ │ │ └── tool_based_generative_ui.py │ │ └── typescript/ │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── aws-strands/ │ │ ├── ARCHITECTURE.md │ │ ├── python/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── examples/ │ │ │ │ ├── .gitignore │ │ │ │ ├── README.md │ │ │ │ ├── pyproject.toml │ │ │ │ └── server/ │ │ │ │ ├── __init__.py │ │ │ │ ├── __main__.py │ │ │ │ └── api/ │ │ │ │ ├── __init__.py │ │ │ │ ├── agentic_chat.py │ │ │ │ ├── agentic_generative_ui.py │ │ │ │ ├── backend_tool_rendering.py │ │ │ │ ├── human_in_the_loop.py │ │ │ │ └── shared_state.py │ │ │ ├── pyproject.toml │ │ │ ├── src/ │ │ │ │ └── ag_ui_strands/ │ │ │ │ ├── __init__.py │ │ │ │ ├── agent.py │ │ │ │ ├── client_proxy_tool.py │ │ │ │ ├── config.py │ │ │ │ ├── endpoint.py │ │ │ │ ├── types.py │ │ │ │ └── utils.py │ │ │ └── tests/ │ │ │ ├── __init__.py │ │ │ └── test_client_proxy_tool.py │ │ └── typescript/ │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── claude-agent-sdk/ │ │ ├── .gitignore │ │ ├── python/ │ │ │ ├── README.md │ │ │ ├── ag_ui_claude_sdk/ │ │ │ │ ├── __init__.py │ │ │ │ ├── adapter.py │ │ │ │ ├── config.py │ │ │ │ ├── endpoint.py │ │ │ │ ├── handlers.py │ │ │ │ ├── session.py │ │ │ │ ├── types.py │ │ │ │ └── utils.py │ │ │ ├── examples/ │ │ │ │ ├── README.md │ │ │ │ ├── agents/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── agentic_chat.py │ │ │ │ │ ├── backend_tool_rendering.py │ │ │ │ │ ├── constants.py │ │ │ │ │ ├── human_in_the_loop.py │ │ │ │ │ ├── shared_state.py │ │ │ │ │ └── tool_based_generative_ui.py │ │ │ │ ├── pyproject.toml │ │ │ │ └── server.py │ │ │ └── pyproject.toml │ │ └── typescript/ │ │ ├── README.md │ │ ├── examples/ │ │ │ ├── agentic_chat.ts │ │ │ ├── backend_tool_rendering.ts │ │ │ ├── constants.ts │ │ │ ├── human_in_the_loop.ts │ │ │ ├── server.ts │ │ │ ├── shared_state.ts │ │ │ └── tool_based_generative_ui.ts │ │ ├── package.json │ │ ├── src/ │ │ │ ├── adapter.ts │ │ │ ├── config.ts │ │ │ ├── handlers.ts │ │ │ ├── index.ts │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ ├── tsconfig.json │ │ ├── tsup.config.ts │ │ └── vitest.config.ts │ ├── community/ │ │ ├── genkit/ │ │ │ └── go/ │ │ │ ├── README.md │ │ │ ├── examples/ │ │ │ │ ├── README.md │ │ │ │ ├── cmd/ │ │ │ │ │ └── server/ │ │ │ │ │ └── main.go │ │ │ │ ├── go.mod │ │ │ │ ├── go.sum │ │ │ │ ├── internal/ │ │ │ │ │ ├── agents/ │ │ │ │ │ │ ├── agentic_chat/ │ │ │ │ │ │ │ └── agent.go │ │ │ │ │ │ └── registry.go │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.go │ │ │ │ │ └── handlers/ │ │ │ │ │ └── agent.go │ │ │ │ └── mock/ │ │ │ │ └── mock.go │ │ │ └── genkit/ │ │ │ ├── genkit.go │ │ │ ├── genkit_test.go │ │ │ ├── go.mod │ │ │ └── go.sum │ │ └── spring-ai/ │ │ └── typescript/ │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── crew-ai/ │ │ ├── python/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── ag_ui_crewai/ │ │ │ │ ├── __init__.py │ │ │ │ ├── context.py │ │ │ │ ├── crews.py │ │ │ │ ├── dojo.py │ │ │ │ ├── endpoint.py │ │ │ │ ├── enterprise.py │ │ │ │ ├── events.py │ │ │ │ ├── examples/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── agentic_chat.py │ │ │ │ │ ├── agentic_generative_ui.py │ │ │ │ │ ├── human_in_the_loop.py │ │ │ │ │ ├── predictive_state_updates.py │ │ │ │ │ ├── shared_state.py │ │ │ │ │ └── tool_based_generative_ui.py │ │ │ │ ├── sdk.py │ │ │ │ └── utils.py │ │ │ ├── pyproject.toml │ │ │ └── tests/ │ │ │ └── __init__.py │ │ └── typescript/ │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── langchain/ │ │ └── typescript/ │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── agent.ts │ │ │ ├── index.ts │ │ │ ├── messages.ts │ │ │ ├── streaming.ts │ │ │ └── tools.ts │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── langgraph/ │ │ ├── python/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── ag_ui_langgraph/ │ │ │ │ ├── __init__.py │ │ │ │ ├── agent.py │ │ │ │ ├── endpoint.py │ │ │ │ ├── middlewares/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── state_streaming.py │ │ │ │ ├── types.py │ │ │ │ └── utils.py │ │ │ ├── examples/ │ │ │ │ ├── .gitignore │ │ │ │ ├── README.md │ │ │ │ ├── agents/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── a2ui_chat/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── agent.py │ │ │ │ │ │ └── prompt.py │ │ │ │ │ ├── agentic_chat/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── agent.py │ │ │ │ │ ├── agentic_chat_reasoning/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── agent.py │ │ │ │ │ ├── agentic_generative_ui/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── agent.py │ │ │ │ │ ├── backend_tool_rendering/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── agent.py │ │ │ │ │ ├── dojo.py │ │ │ │ │ ├── human_in_the_loop/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── agent.py │ │ │ │ │ ├── multimodal_messages/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── agent.py │ │ │ │ │ ├── predictive_state_updates/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── agent.py │ │ │ │ │ ├── shared_state/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── agent.py │ │ │ │ │ ├── subgraphs/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── agent.py │ │ │ │ │ └── tool_based_generative_ui/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── agent.py │ │ │ │ ├── langgraph.json │ │ │ │ └── pyproject.toml │ │ │ ├── pyproject.toml │ │ │ └── tests/ │ │ │ ├── __init__.py │ │ │ ├── test_make_json_safe.py │ │ │ ├── test_multimodal.py │ │ │ └── test_state_streaming_middleware.py │ │ └── typescript/ │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── README.md │ │ ├── examples/ │ │ │ ├── .env.example │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── langgraph.json │ │ │ ├── package.json │ │ │ ├── pnpm-workspace.yaml │ │ │ ├── src/ │ │ │ │ └── agents/ │ │ │ │ ├── agentic_chat/ │ │ │ │ │ └── agent.ts │ │ │ │ ├── agentic_generative_ui/ │ │ │ │ │ └── agent.ts │ │ │ │ ├── backend_tool_rendering/ │ │ │ │ │ └── agent.ts │ │ │ │ ├── human_in_the_loop/ │ │ │ │ │ └── agent.ts │ │ │ │ ├── multimodal_messages/ │ │ │ │ │ └── agent.ts │ │ │ │ ├── predictive_state_updates/ │ │ │ │ │ └── agent.ts │ │ │ │ ├── shared_state/ │ │ │ │ │ └── agent.ts │ │ │ │ ├── subgraphs/ │ │ │ │ │ └── agent.ts │ │ │ │ └── tool_based_generative_ui/ │ │ │ │ └── agent.ts │ │ │ └── tsconfig.json │ │ ├── package.json │ │ ├── src/ │ │ │ ├── agent.ts │ │ │ ├── index.ts │ │ │ ├── messages-tuple.test.ts │ │ │ ├── middlewares/ │ │ │ │ ├── index.ts │ │ │ │ ├── state-streaming.test.ts │ │ │ │ └── state-streaming.ts │ │ │ ├── types.ts │ │ │ ├── utils.test.ts │ │ │ └── utils.ts │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── langroid/ │ │ ├── ARCHITECTURE.md │ │ ├── README.md │ │ ├── python/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── examples/ │ │ │ │ ├── .gitignore │ │ │ │ ├── README.md │ │ │ │ ├── pyproject.toml │ │ │ │ └── server/ │ │ │ │ ├── __init__.py │ │ │ │ ├── __main__.py │ │ │ │ └── api/ │ │ │ │ ├── __init__.py │ │ │ │ ├── agentic_chat.py │ │ │ │ ├── agentic_generative_ui.py │ │ │ │ ├── backend_tool_rendering.py │ │ │ │ └── shared_state.py │ │ │ ├── pyproject.toml │ │ │ ├── src/ │ │ │ │ └── ag_ui_langroid/ │ │ │ │ ├── __init__.py │ │ │ │ ├── agent.py │ │ │ │ ├── endpoint.py │ │ │ │ ├── types.py │ │ │ │ └── utils.py │ │ │ └── tests/ │ │ │ ├── __init__.py │ │ │ ├── test_agent.py │ │ │ ├── test_endpoint.py │ │ │ └── test_types.py │ │ └── typescript/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── jest.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ ├── tsconfig.json │ │ └── tsup.config.ts │ ├── llama-index/ │ │ ├── python/ │ │ │ ├── .gitignore │ │ │ └── examples/ │ │ │ ├── README.md │ │ │ ├── pyproject.toml │ │ │ └── server/ │ │ │ ├── __init__.py │ │ │ └── routers/ │ │ │ ├── agentic_chat.py │ │ │ ├── agentic_generative_ui.py │ │ │ ├── backend_tool_rendering.py │ │ │ ├── human_in_the_loop.py │ │ │ └── shared_state.py │ │ └── typescript/ │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── mastra/ │ │ └── typescript/ │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── README.md │ │ ├── examples/ │ │ │ ├── .env.example │ │ │ ├── .gitignore │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ └── mastra/ │ │ │ │ ├── agents/ │ │ │ │ │ ├── agentic-chat.ts │ │ │ │ │ ├── backend-tool-rendering.ts │ │ │ │ │ ├── human-in-the-loop.ts │ │ │ │ │ └── tool-based-generative-ui.ts │ │ │ │ ├── index.ts │ │ │ │ └── tools/ │ │ │ │ └── weather-tool.ts │ │ │ └── tsconfig.json │ │ ├── package.json │ │ ├── src/ │ │ │ ├── __tests__/ │ │ │ │ ├── edge-cases.test.ts │ │ │ │ ├── helpers.ts │ │ │ │ ├── integration.test.ts │ │ │ │ └── message-conversion.test.ts │ │ │ ├── copilotkit.ts │ │ │ ├── index.ts │ │ │ ├── mastra.ts │ │ │ └── utils.ts │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── microsoft-agent-framework/ │ │ ├── dotnet/ │ │ │ └── examples/ │ │ │ ├── .gitignore │ │ │ ├── AGUIDojoServer/ │ │ │ │ ├── .dockerignore │ │ │ │ ├── AGUIDojoServer.csproj │ │ │ │ ├── AGUIDojoServerSerializerContext.cs │ │ │ │ ├── AgenticUI/ │ │ │ │ │ ├── AgenticPlanningTools.cs │ │ │ │ │ ├── AgenticUIAgent.cs │ │ │ │ │ ├── JsonPatchOperation.cs │ │ │ │ │ ├── Plan.cs │ │ │ │ │ ├── Step.cs │ │ │ │ │ └── StepStatus.cs │ │ │ │ ├── BackendToolRendering/ │ │ │ │ │ └── WeatherInfo.cs │ │ │ │ ├── ChatClientAgentFactory.cs │ │ │ │ ├── Dockerfile │ │ │ │ ├── PredictiveStateUpdates/ │ │ │ │ │ ├── DocumentState.cs │ │ │ │ │ └── PredictiveStateUpdatesAgent.cs │ │ │ │ ├── Program.cs │ │ │ │ ├── Properties/ │ │ │ │ │ └── launchSettings.json │ │ │ │ └── SharedState/ │ │ │ │ ├── Ingredient.cs │ │ │ │ ├── Recipe.cs │ │ │ │ ├── RecipeResponse.cs │ │ │ │ └── SharedStateAgent.cs │ │ │ └── README.md │ │ └── python/ │ │ └── examples/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── agents/ │ │ │ ├── __init__.py │ │ │ └── dojo.py │ │ └── pyproject.toml │ ├── pydantic-ai/ │ │ ├── python/ │ │ │ ├── .gitignore │ │ │ └── examples/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── pyproject.toml │ │ │ └── server/ │ │ │ ├── __init__.py │ │ │ └── api/ │ │ │ ├── __init__.py │ │ │ ├── agentic_chat.py │ │ │ ├── agentic_generative_ui.py │ │ │ ├── backend_tool_rendering.py │ │ │ ├── human_in_the_loop.py │ │ │ ├── predictive_state_updates.py │ │ │ ├── shared_state.py │ │ │ └── tool_based_generative_ui.py │ │ └── typescript/ │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── server-starter/ │ │ ├── python/ │ │ │ ├── .gitignore │ │ │ └── examples/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── example_server/ │ │ │ │ └── __init__.py │ │ │ ├── pyproject.toml │ │ │ └── tests/ │ │ │ └── __init__.py │ │ └── typescript/ │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── server-starter-all-features/ │ │ ├── python/ │ │ │ ├── .gitignore │ │ │ └── examples/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── example_server/ │ │ │ │ ├── __init__.py │ │ │ │ ├── agentic_chat.py │ │ │ │ ├── agentic_generative_ui.py │ │ │ │ ├── backend_tool_rendering.py │ │ │ │ ├── human_in_the_loop.py │ │ │ │ ├── predictive_state_updates.py │ │ │ │ ├── shared_state.py │ │ │ │ └── tool_based_generative_ui.py │ │ │ ├── pyproject.toml │ │ │ └── tests/ │ │ │ └── __init__.py │ │ └── typescript/ │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ └── vercel-ai-sdk/ │ └── typescript/ │ ├── .gitignore │ ├── .npmignore │ ├── README.md │ ├── package.json │ ├── src/ │ │ └── index.ts │ ├── tsconfig.json │ ├── tsdown.config.ts │ └── vitest.config.ts ├── lefthook.yml ├── middlewares/ │ ├── a2a-middleware/ │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── README.md │ │ ├── examples/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── buildings_management.py │ │ │ ├── finance.py │ │ │ ├── it.py │ │ │ ├── orchestrator.py │ │ │ └── pyproject.toml │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ └── utils.ts │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── a2ui-middleware/ │ │ ├── .gitignore │ │ ├── __tests__/ │ │ │ └── a2ui-middleware.test.ts │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ ├── schema.ts │ │ │ ├── tools.ts │ │ │ └── types.ts │ │ ├── tsconfig.json │ │ ├── tsup.config.ts │ │ └── vitest.config.ts │ ├── mcp-apps-middleware/ │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── README.md │ │ ├── __tests__/ │ │ │ ├── mcp-apps-middleware.test.ts │ │ │ └── test-utils.ts │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ └── middleware-starter/ │ ├── .gitignore │ ├── .npmignore │ ├── README.md │ ├── package.json │ ├── src/ │ │ └── index.ts │ ├── tsconfig.json │ ├── tsdown.config.ts │ └── vitest.config.ts ├── nx.json ├── package.json ├── pnpm-workspace.yaml ├── render.yaml ├── scripts/ │ ├── check-codeowners-auth.ts │ └── rewrite-python-preview-versions.py └── sdks/ ├── community/ │ ├── dart/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── TEST_GUIDE.md │ │ ├── analysis_options.yaml │ │ ├── example/ │ │ │ ├── README.md │ │ │ ├── analysis_options.yaml │ │ │ ├── dart_output_with_tools.json │ │ │ ├── dart_output_with_tools_fixed.json │ │ │ └── pubspec.yaml │ │ ├── lib/ │ │ │ ├── ag_ui.dart │ │ │ └── src/ │ │ │ ├── client/ │ │ │ │ ├── client.dart │ │ │ │ ├── config.dart │ │ │ │ ├── errors.dart │ │ │ │ └── validators.dart │ │ │ ├── encoder/ │ │ │ │ ├── client_codec.dart │ │ │ │ ├── decoder.dart │ │ │ │ ├── encoder.dart │ │ │ │ ├── errors.dart │ │ │ │ └── stream_adapter.dart │ │ │ ├── events/ │ │ │ │ ├── event_type.dart │ │ │ │ └── events.dart │ │ │ ├── sse/ │ │ │ │ ├── backoff_strategy.dart │ │ │ │ ├── sse_client.dart │ │ │ │ ├── sse_message.dart │ │ │ │ └── sse_parser.dart │ │ │ └── types/ │ │ │ ├── base.dart │ │ │ ├── context.dart │ │ │ ├── message.dart │ │ │ ├── tool.dart │ │ │ └── types.dart │ │ ├── pubspec.yaml │ │ └── test/ │ │ ├── ag_ui_test.dart │ │ ├── client/ │ │ │ ├── client_test.dart │ │ │ ├── config_test.dart │ │ │ ├── config_test.dill │ │ │ ├── errors_test.dart │ │ │ ├── http_endpoints_test.dart │ │ │ └── validators_test.dart │ │ ├── encoder/ │ │ │ ├── client_codec_test.dart │ │ │ ├── decoder_test.dart │ │ │ ├── encoder_test.dart │ │ │ ├── errors_test.dart │ │ │ └── stream_adapter_test.dart │ │ ├── events/ │ │ │ ├── event_test.dart │ │ │ └── event_type_test.dart │ │ ├── fixtures/ │ │ │ ├── events.json │ │ │ └── sse_streams.txt │ │ ├── integration/ │ │ │ ├── event_decoding_integration_test.dart │ │ │ ├── fixtures_integration_test.dart │ │ │ └── helpers/ │ │ │ └── test_helpers.dart │ │ ├── sse/ │ │ │ ├── backoff_strategy_test.dart │ │ │ ├── sse_client_basic_test.dart │ │ │ ├── sse_client_stream_test.dart │ │ │ ├── sse_client_test.dart.skip │ │ │ ├── sse_message_test.dart │ │ │ └── sse_parser_test.dart │ │ └── types/ │ │ ├── base_test.dart │ │ ├── message_test.dart │ │ └── tool_context_test.dart │ ├── go/ │ │ ├── .gitignore │ │ ├── example/ │ │ │ ├── client/ │ │ │ │ ├── cmd/ │ │ │ │ │ └── main.go │ │ │ │ ├── go.mod │ │ │ │ ├── go.sum │ │ │ │ └── internal/ │ │ │ │ ├── agent/ │ │ │ │ │ └── chat.go │ │ │ │ ├── event/ │ │ │ │ │ └── parse.go │ │ │ │ ├── message/ │ │ │ │ │ └── message.go │ │ │ │ └── ui/ │ │ │ │ ├── model.go │ │ │ │ ├── splash.go │ │ │ │ ├── theme.go │ │ │ │ └── typing.go │ │ │ └── server/ │ │ │ ├── cmd/ │ │ │ │ └── main.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ └── internal/ │ │ │ ├── agentic/ │ │ │ │ ├── agentic.go │ │ │ │ ├── agentic_integration_test.go │ │ │ │ ├── data/ │ │ │ │ │ ├── languages_prompt.md │ │ │ │ │ └── reminder.md │ │ │ │ └── handler.go │ │ │ ├── config/ │ │ │ │ └── config.go │ │ │ ├── mcp/ │ │ │ │ ├── adapter.go │ │ │ │ └── server.go │ │ │ └── routes/ │ │ │ └── routes.go │ │ ├── go.mod │ │ ├── go.sum │ │ └── pkg/ │ │ ├── client/ │ │ │ └── sse/ │ │ │ ├── client.go │ │ │ ├── client_stream_test.go │ │ │ └── client_test.go │ │ ├── core/ │ │ │ ├── events/ │ │ │ │ ├── activity_events.go │ │ │ │ ├── activity_events_test.go │ │ │ │ ├── additional_events_test.go │ │ │ │ ├── custom_events.go │ │ │ │ ├── decoder.go │ │ │ │ ├── decoder_test.go │ │ │ │ ├── events.go │ │ │ │ ├── events_test.go │ │ │ │ ├── id_utils.go │ │ │ │ ├── id_utils_test.go │ │ │ │ ├── message_events.go │ │ │ │ ├── reasoning_events.go │ │ │ │ ├── run_events.go │ │ │ │ ├── state_events.go │ │ │ │ ├── state_events_test.go │ │ │ │ ├── thinking_events.go │ │ │ │ ├── thinking_events_test.go │ │ │ │ └── tool_events.go │ │ │ └── types/ │ │ │ ├── message_helpers.go │ │ │ ├── types.go │ │ │ └── types_test.go │ │ ├── encoding/ │ │ │ ├── buffer_sizing.go │ │ │ ├── encoder/ │ │ │ │ └── encoder.go │ │ │ ├── errors.go │ │ │ ├── interface.go │ │ │ ├── json/ │ │ │ │ ├── json.go │ │ │ │ ├── json_codec.go │ │ │ │ ├── json_decoder.go │ │ │ │ └── json_encoder.go │ │ │ ├── negotiation/ │ │ │ │ ├── negotiator.go │ │ │ │ ├── negotiator_test.go │ │ │ │ ├── parser.go │ │ │ │ └── selector.go │ │ │ ├── pool.go │ │ │ └── sse/ │ │ │ ├── writer.go │ │ │ └── writer_test.go │ │ └── errors/ │ │ ├── error_types.go │ │ └── error_utils.go │ ├── java/ │ │ ├── .gitignore │ │ ├── CLAUDE.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── clients/ │ │ │ ├── ok-http/ │ │ │ │ ├── README.md │ │ │ │ ├── pom.xml │ │ │ │ └── src/ │ │ │ │ ├── main/ │ │ │ │ │ └── java/ │ │ │ │ │ └── com/ │ │ │ │ │ └── agui/ │ │ │ │ │ └── okhttp/ │ │ │ │ │ └── HttpClient.java │ │ │ │ └── test/ │ │ │ │ └── java/ │ │ │ │ └── com/ │ │ │ │ └── agui/ │ │ │ │ └── okhttp/ │ │ │ │ └── HttpClientTest.java │ │ │ └── spring-client/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── agui/ │ │ │ └── spring/ │ │ │ └── HttpClient.java │ │ ├── examples/ │ │ │ ├── copilot-app/ │ │ │ │ ├── .gitignore │ │ │ │ ├── README.md │ │ │ │ ├── eslint.config.mjs │ │ │ │ ├── next.config.ts │ │ │ │ ├── package.json │ │ │ │ ├── postcss.config.mjs │ │ │ │ ├── src/ │ │ │ │ │ └── app/ │ │ │ │ │ ├── api/ │ │ │ │ │ │ └── copilotkit/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ ├── globals.css │ │ │ │ │ ├── layout.tsx │ │ │ │ │ └── page.tsx │ │ │ │ └── tsconfig.json │ │ │ └── spring-ai-example/ │ │ │ ├── .gitignore │ │ │ ├── Dockerfile │ │ │ ├── docker-compose.yml │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── agui/ │ │ │ └── example/ │ │ │ ├── AgUiController.java │ │ │ ├── Application.java │ │ │ ├── config/ │ │ │ │ ├── AgUiConfig.java │ │ │ │ └── CorsConfig.java │ │ │ └── tools/ │ │ │ ├── GeocodingResponse.java │ │ │ ├── WeatherRequest.java │ │ │ ├── WeatherResponse.java │ │ │ ├── WeatherTool.java │ │ │ └── WeatherToolResult.java │ │ ├── integrations/ │ │ │ └── spring-ai/ │ │ │ ├── README.md │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ ├── main/ │ │ │ │ └── java/ │ │ │ │ └── com/ │ │ │ │ └── agui/ │ │ │ │ └── spring/ │ │ │ │ └── ai/ │ │ │ │ ├── AgUiFunctionToolCallback.java │ │ │ │ ├── AgUiToolCallbackParams.java │ │ │ │ ├── SpringAIAgent.java │ │ │ │ ├── StateTool.java │ │ │ │ └── ToolMapper.java │ │ │ └── test/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── agui/ │ │ │ └── spring/ │ │ │ └── ai/ │ │ │ └── ToolMapperTest.java │ │ ├── packages/ │ │ │ ├── README.md │ │ │ ├── client/ │ │ │ │ ├── README.md │ │ │ │ ├── pom.xml │ │ │ │ └── src/ │ │ │ │ ├── main/ │ │ │ │ │ └── java/ │ │ │ │ │ └── com/ │ │ │ │ │ └── agui/ │ │ │ │ │ └── client/ │ │ │ │ │ ├── agent/ │ │ │ │ │ │ └── AbstractAgent.java │ │ │ │ │ ├── message/ │ │ │ │ │ │ └── MessageFactory.java │ │ │ │ │ └── verifier/ │ │ │ │ │ └── EventVerifier.java │ │ │ │ └── test/ │ │ │ │ └── java/ │ │ │ │ └── com/ │ │ │ │ └── agui/ │ │ │ │ └── client/ │ │ │ │ ├── agent/ │ │ │ │ │ └── AbstractAgentTest.java │ │ │ │ ├── message/ │ │ │ │ │ └── MessageFactoryTest.java │ │ │ │ └── verifier/ │ │ │ │ └── EventVerifierTest.java │ │ │ ├── core/ │ │ │ │ ├── README.md │ │ │ │ ├── pom.xml │ │ │ │ └── src/ │ │ │ │ ├── main/ │ │ │ │ │ └── java/ │ │ │ │ │ └── com/ │ │ │ │ │ └── agui/ │ │ │ │ │ └── core/ │ │ │ │ │ ├── agent/ │ │ │ │ │ │ ├── Agent.java │ │ │ │ │ │ ├── AgentSubscriber.java │ │ │ │ │ │ ├── AgentSubscriberParams.java │ │ │ │ │ │ ├── RunAgentInput.java │ │ │ │ │ │ └── RunAgentParameters.java │ │ │ │ │ ├── context/ │ │ │ │ │ │ └── Context.java │ │ │ │ │ ├── event/ │ │ │ │ │ │ ├── BaseEvent.java │ │ │ │ │ │ ├── CustomEvent.java │ │ │ │ │ │ ├── MessagesSnapshotEvent.java │ │ │ │ │ │ ├── RawEvent.java │ │ │ │ │ │ ├── RunErrorEvent.java │ │ │ │ │ │ ├── RunFinishedEvent.java │ │ │ │ │ │ ├── RunStartedEvent.java │ │ │ │ │ │ ├── StateDeltaEvent.java │ │ │ │ │ │ ├── StateSnapshotEvent.java │ │ │ │ │ │ ├── StepFinishedEvent.java │ │ │ │ │ │ ├── StepStartedEvent.java │ │ │ │ │ │ ├── TextMessageChunkEvent.java │ │ │ │ │ │ ├── TextMessageContentEvent.java │ │ │ │ │ │ ├── TextMessageEndEvent.java │ │ │ │ │ │ ├── TextMessageStartEvent.java │ │ │ │ │ │ ├── ThinkingEndEvent.java │ │ │ │ │ │ ├── ThinkingStartEvent.java │ │ │ │ │ │ ├── ThinkingTextMessageContentEvent.java │ │ │ │ │ │ ├── ThinkingTextMessageEndEvent.java │ │ │ │ │ │ ├── ThinkingTextMessageStartEvent.java │ │ │ │ │ │ ├── ToolCallArgsEvent.java │ │ │ │ │ │ ├── ToolCallChunkEvent.java │ │ │ │ │ │ ├── ToolCallEndEvent.java │ │ │ │ │ │ ├── ToolCallResultEvent.java │ │ │ │ │ │ └── ToolCallStartEvent.java │ │ │ │ │ ├── exception/ │ │ │ │ │ │ └── AGUIException.java │ │ │ │ │ ├── function/ │ │ │ │ │ │ └── FunctionCall.java │ │ │ │ │ ├── message/ │ │ │ │ │ │ ├── AssistantMessage.java │ │ │ │ │ │ ├── BaseMessage.java │ │ │ │ │ │ ├── DeveloperMessage.java │ │ │ │ │ │ ├── Role.java │ │ │ │ │ │ ├── SystemMessage.java │ │ │ │ │ │ ├── ToolMessage.java │ │ │ │ │ │ └── UserMessage.java │ │ │ │ │ ├── state/ │ │ │ │ │ │ └── State.java │ │ │ │ │ ├── stream/ │ │ │ │ │ │ ├── EventStream.java │ │ │ │ │ │ └── IEventStream.java │ │ │ │ │ ├── subscription/ │ │ │ │ │ │ └── Subscription.java │ │ │ │ │ ├── tool/ │ │ │ │ │ │ ├── Tool.java │ │ │ │ │ │ └── ToolCall.java │ │ │ │ │ └── type/ │ │ │ │ │ └── EventType.java │ │ │ │ └── test/ │ │ │ │ └── java/ │ │ │ │ └── com/ │ │ │ │ └── agui/ │ │ │ │ └── core/ │ │ │ │ ├── agent/ │ │ │ │ │ ├── AgentSubscriberParamsTest.java │ │ │ │ │ ├── AgentSubscriberTest.java │ │ │ │ │ ├── RunAgentInputTest.java │ │ │ │ │ └── RunAgentParametersTest.java │ │ │ │ ├── context/ │ │ │ │ │ └── ContextTest.java │ │ │ │ ├── event/ │ │ │ │ │ ├── BaseEventTest.java │ │ │ │ │ ├── CustomEventTest.java │ │ │ │ │ ├── MessagesSnapshotEventTest.java │ │ │ │ │ ├── RawEventTest.java │ │ │ │ │ ├── RunErrorEventTest.java │ │ │ │ │ ├── RunFinishedEventTest.java │ │ │ │ │ ├── RunStartedEventTest.java │ │ │ │ │ ├── StateDeltaEventTest.java │ │ │ │ │ ├── StateSnapshotEventTest.java │ │ │ │ │ ├── StepFinishedEventTest.java │ │ │ │ │ ├── StepStartedEventTest.java │ │ │ │ │ ├── TextMessageChunkEventTest.java │ │ │ │ │ ├── TextMessageContentEventTest.java │ │ │ │ │ ├── TextMessageEndEventTest.java │ │ │ │ │ ├── TextMessageStartEventTest.java │ │ │ │ │ ├── ThinkingEndEventTest.java │ │ │ │ │ ├── ThinkingStartEventTest.java │ │ │ │ │ ├── ThinkingTextMessageContentEventTest.java │ │ │ │ │ ├── ThinkingTextMessageEndEventTest.java │ │ │ │ │ ├── ThinkingTextMessageStartEventTest.java │ │ │ │ │ ├── ToolCallArgsEventTest.java │ │ │ │ │ ├── ToolCallChunkEventTest.java │ │ │ │ │ ├── ToolCallEndEventTest.java │ │ │ │ │ ├── ToolCallResultEventTest.java │ │ │ │ │ └── ToolCallStartEventTest.java │ │ │ │ ├── exception/ │ │ │ │ │ └── AGUIExceptionTest.java │ │ │ │ ├── function/ │ │ │ │ │ └── FunctionCallTest.java │ │ │ │ ├── message/ │ │ │ │ │ ├── AssistantMessageTest.java │ │ │ │ │ ├── DeveloperMessageTest.java │ │ │ │ │ ├── SystemMessageTest.java │ │ │ │ │ ├── ToolMessageTest.java │ │ │ │ │ └── UserMessageTest.java │ │ │ │ ├── state/ │ │ │ │ │ └── StateTest.java │ │ │ │ ├── stream/ │ │ │ │ │ ├── EventStreamTest.java │ │ │ │ │ └── IEventStreamTest.java │ │ │ │ ├── subscription/ │ │ │ │ │ └── SubscriptionTest.java │ │ │ │ ├── tool/ │ │ │ │ │ ├── ToolCallTest.java │ │ │ │ │ └── ToolTest.java │ │ │ │ └── type/ │ │ │ │ └── EventTypeTest.java │ │ │ ├── http/ │ │ │ │ ├── README.md │ │ │ │ ├── pom.xml │ │ │ │ └── src/ │ │ │ │ ├── main/ │ │ │ │ │ └── java/ │ │ │ │ │ └── com/ │ │ │ │ │ └── agui/ │ │ │ │ │ └── http/ │ │ │ │ │ ├── BaseHttpClient.java │ │ │ │ │ └── HttpAgent.java │ │ │ │ └── test/ │ │ │ │ └── java/ │ │ │ │ └── com/ │ │ │ │ └── agui/ │ │ │ │ └── http/ │ │ │ │ ├── BaseHttpClientTest.java │ │ │ │ └── HttpAgentTest.java │ │ │ └── server/ │ │ │ ├── README.md │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ ├── main/ │ │ │ │ └── java/ │ │ │ │ └── com/ │ │ │ │ └── agui/ │ │ │ │ └── server/ │ │ │ │ ├── EventFactory.java │ │ │ │ ├── LocalAgent.java │ │ │ │ └── streamer/ │ │ │ │ └── AgentStreamer.java │ │ │ └── test/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── agui/ │ │ │ └── server/ │ │ │ ├── EventFactoryTest.java │ │ │ ├── LocalAgentTest.java │ │ │ └── streamer/ │ │ │ └── AgentStreamerTest.java │ │ ├── pom.xml │ │ ├── servers/ │ │ │ └── spring/ │ │ │ ├── README.md │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ ├── main/ │ │ │ │ ├── java/ │ │ │ │ │ └── com/ │ │ │ │ │ └── agui/ │ │ │ │ │ └── server/ │ │ │ │ │ └── spring/ │ │ │ │ │ ├── AgUiAutoConfiguration.java │ │ │ │ │ ├── AgUiParameters.java │ │ │ │ │ └── AgUiService.java │ │ │ │ └── resources/ │ │ │ │ └── META-INF/ │ │ │ │ ├── spring/ │ │ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ │ │ └── spring.factories │ │ │ └── test/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── agui/ │ │ │ └── server/ │ │ │ └── spring/ │ │ │ └── AgUiParametersTest.java │ │ └── utils/ │ │ └── json/ │ │ ├── README.md │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── agui/ │ │ │ └── json/ │ │ │ ├── ObjectMapperFactory.java │ │ │ └── mixins/ │ │ │ ├── EventMixin.java │ │ │ ├── MessageMixin.java │ │ │ └── StateMixin.java │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── agui/ │ │ └── json/ │ │ └── ObjectMapperFactoryTest.java │ ├── kotlin/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── OVERVIEW.md │ │ ├── PERFORMANCE.md │ │ ├── README.md │ │ ├── build.bat │ │ ├── build.gradle.kts │ │ ├── build.sh │ │ ├── detekt-config.yml │ │ ├── examples/ │ │ │ ├── chatapp/ │ │ │ │ ├── .gitignore │ │ │ │ ├── CHANGELOG.md │ │ │ │ ├── README.md │ │ │ │ ├── androidApp/ │ │ │ │ │ ├── build.gradle.kts │ │ │ │ │ └── src/ │ │ │ │ │ └── main/ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ ├── assets/ │ │ │ │ │ │ └── logback.xml │ │ │ │ │ └── res/ │ │ │ │ │ ├── drawable/ │ │ │ │ │ │ ├── ic_launcher_background.xml │ │ │ │ │ │ └── ic_launcher_foreground.xml │ │ │ │ │ ├── mipmap-anydpi/ │ │ │ │ │ │ ├── ic_launcher.xml │ │ │ │ │ │ └── ic_launcher_round.xml │ │ │ │ │ └── values/ │ │ │ │ │ └── strings.xml │ │ │ │ ├── build.gradle.kts │ │ │ │ ├── desktopApp/ │ │ │ │ │ └── build.gradle.kts │ │ │ │ ├── gradle/ │ │ │ │ │ ├── libs.versions.toml │ │ │ │ │ └── wrapper/ │ │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ ├── gradle.properties │ │ │ │ ├── gradlew │ │ │ │ ├── gradlew.bat │ │ │ │ ├── iosApp/ │ │ │ │ │ ├── README.md │ │ │ │ │ ├── iosApp/ │ │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ │ ├── AccentColor.colorset/ │ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ ├── ContentView.swift │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ └── iOSApp.swift │ │ │ │ │ └── iosApp.xcodeproj/ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ └── project.xcworkspace/ │ │ │ │ │ └── contents.xcworkspacedata │ │ │ │ ├── settings.gradle.kts │ │ │ │ ├── shared/ │ │ │ │ │ ├── build.gradle.kts │ │ │ │ │ └── src/ │ │ │ │ │ ├── androidInstrumentedTest/ │ │ │ │ │ │ └── kotlin/ │ │ │ │ │ │ └── com/ │ │ │ │ │ │ └── agui/ │ │ │ │ │ │ └── example/ │ │ │ │ │ │ └── chatapp/ │ │ │ │ │ │ ├── AndroidIntegrationTest.kt │ │ │ │ │ │ ├── AndroidSettingsTest.kt │ │ │ │ │ │ ├── MinimalAndroidTest.kt │ │ │ │ │ │ └── ui/ │ │ │ │ │ │ ├── MessageBubbleTest.kt │ │ │ │ │ │ └── components/ │ │ │ │ │ │ └── MessageBubbleComponentTest.kt │ │ │ │ │ ├── androidMain/ │ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ │ └── kotlin/ │ │ │ │ │ │ └── com/ │ │ │ │ │ │ └── agui/ │ │ │ │ │ │ └── example/ │ │ │ │ │ │ └── chatapp/ │ │ │ │ │ │ └── MainActivity.kt │ │ │ │ │ ├── commonMain/ │ │ │ │ │ │ ├── composeResources/ │ │ │ │ │ │ │ └── values/ │ │ │ │ │ │ │ └── strings.xml │ │ │ │ │ │ └── kotlin/ │ │ │ │ │ │ └── com/ │ │ │ │ │ │ └── agui/ │ │ │ │ │ │ └── example/ │ │ │ │ │ │ └── chatapp/ │ │ │ │ │ │ ├── App.kt │ │ │ │ │ │ ├── ui/ │ │ │ │ │ │ │ ├── screens/ │ │ │ │ │ │ │ │ ├── chat/ │ │ │ │ │ │ │ │ │ ├── ChatScreen.kt │ │ │ │ │ │ │ │ │ ├── ChatViewModel.kt │ │ │ │ │ │ │ │ │ └── components/ │ │ │ │ │ │ │ │ │ ├── ChatHeader.kt │ │ │ │ │ │ │ │ │ ├── ChatInput.kt │ │ │ │ │ │ │ │ │ ├── ClawgUiPairingDialog.kt │ │ │ │ │ │ │ │ │ ├── MessageBubble.kt │ │ │ │ │ │ │ │ │ └── MessageList.kt │ │ │ │ │ │ │ │ └── settings/ │ │ │ │ │ │ │ │ ├── SettingsScreen.kt │ │ │ │ │ │ │ │ ├── SettingsViewModel.kt │ │ │ │ │ │ │ │ └── components/ │ │ │ │ │ │ │ │ ├── AddAgentDialog.kt │ │ │ │ │ │ │ │ └── AgentCard.kt │ │ │ │ │ │ │ └── theme/ │ │ │ │ │ │ │ ├── Color.kt │ │ │ │ │ │ │ └── Theme.kt │ │ │ │ │ │ └── util/ │ │ │ │ │ │ └── Extensions.kt │ │ │ │ │ ├── commonTest/ │ │ │ │ │ │ └── kotlin/ │ │ │ │ │ │ └── com/ │ │ │ │ │ │ └── agui/ │ │ │ │ │ │ └── example/ │ │ │ │ │ │ └── chatapp/ │ │ │ │ │ │ ├── auth/ │ │ │ │ │ │ │ └── AuthProviderTest.kt │ │ │ │ │ │ ├── test/ │ │ │ │ │ │ │ └── TestSettings.kt │ │ │ │ │ │ └── viewmodel/ │ │ │ │ │ │ └── ChatViewModelBehaviorTest.kt │ │ │ │ │ ├── desktopMain/ │ │ │ │ │ │ └── kotlin/ │ │ │ │ │ │ └── com/ │ │ │ │ │ │ └── agui/ │ │ │ │ │ │ └── example/ │ │ │ │ │ │ └── chatapp/ │ │ │ │ │ │ └── Main.kt │ │ │ │ │ ├── desktopTest/ │ │ │ │ │ │ └── kotlin/ │ │ │ │ │ │ └── com/ │ │ │ │ │ │ └── agui/ │ │ │ │ │ │ └── example/ │ │ │ │ │ │ └── chatapp/ │ │ │ │ │ │ ├── auth/ │ │ │ │ │ │ │ └── AuthManagerIntegrationTest.kt │ │ │ │ │ │ └── repository/ │ │ │ │ │ │ └── AgentRepositoryPersistenceTest.kt │ │ │ │ │ ├── iosMain/ │ │ │ │ │ │ └── kotlin/ │ │ │ │ │ │ └── com/ │ │ │ │ │ │ └── agui/ │ │ │ │ │ │ └── example/ │ │ │ │ │ │ └── chatapp/ │ │ │ │ │ │ └── MainViewController.kt │ │ │ │ │ └── iosTest/ │ │ │ │ │ └── kotlin/ │ │ │ │ │ └── com/ │ │ │ │ │ └── agui/ │ │ │ │ │ └── example/ │ │ │ │ │ └── chatapp/ │ │ │ │ │ ├── IosPlatformTest.kt │ │ │ │ │ ├── IosSettingsTest.kt │ │ │ │ │ └── IosUserIdManagerTest.kt │ │ │ │ └── verify-ios-implementation.sh │ │ │ ├── chatapp-java/ │ │ │ │ ├── README.md │ │ │ │ ├── app/ │ │ │ │ │ ├── build.gradle │ │ │ │ │ ├── proguard-rules.pro │ │ │ │ │ └── src/ │ │ │ │ │ ├── androidTest/ │ │ │ │ │ │ └── java/ │ │ │ │ │ │ └── com/ │ │ │ │ │ │ └── agui/ │ │ │ │ │ │ └── chatapp/ │ │ │ │ │ │ └── java/ │ │ │ │ │ │ ├── MultiAgentInstrumentedTest.java │ │ │ │ │ │ └── ui/ │ │ │ │ │ │ ├── ChatActivityTest.java │ │ │ │ │ │ ├── SettingsActivityTest.java │ │ │ │ │ │ └── SettingsActivityTest.java.old │ │ │ │ │ └── main/ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ ├── java/ │ │ │ │ │ │ └── com/ │ │ │ │ │ │ └── agui/ │ │ │ │ │ │ └── chatapp/ │ │ │ │ │ │ └── java/ │ │ │ │ │ │ ├── ChatJavaApplication.java │ │ │ │ │ │ ├── model/ │ │ │ │ │ │ │ └── ChatMessage.java │ │ │ │ │ │ ├── repository/ │ │ │ │ │ │ │ └── MultiAgentRepository.kt │ │ │ │ │ │ ├── ui/ │ │ │ │ │ │ │ ├── ChatActivity.java │ │ │ │ │ │ │ ├── SettingsActivity.java │ │ │ │ │ │ │ └── adapter/ │ │ │ │ │ │ │ ├── AgentListAdapter.java │ │ │ │ │ │ │ └── MessageAdapter.java │ │ │ │ │ │ └── viewmodel/ │ │ │ │ │ │ └── ChatViewModel.kt │ │ │ │ │ └── res/ │ │ │ │ │ ├── drawable/ │ │ │ │ │ │ └── ic_launcher_foreground.xml │ │ │ │ │ ├── layout/ │ │ │ │ │ │ ├── activity_chat.xml │ │ │ │ │ │ ├── activity_settings.xml │ │ │ │ │ │ ├── dialog_agent_form.xml │ │ │ │ │ │ ├── item_agent_card.xml │ │ │ │ │ │ ├── item_message_assistant.xml │ │ │ │ │ │ ├── item_message_system.xml │ │ │ │ │ │ └── item_message_user.xml │ │ │ │ │ ├── menu/ │ │ │ │ │ │ └── chat_menu.xml │ │ │ │ │ ├── mipmap-anydpi-v26/ │ │ │ │ │ │ ├── ic_launcher.xml │ │ │ │ │ │ └── ic_launcher_round.xml │ │ │ │ │ ├── values/ │ │ │ │ │ │ ├── colors.xml │ │ │ │ │ │ ├── strings.xml │ │ │ │ │ │ └── themes.xml │ │ │ │ │ ├── values-night/ │ │ │ │ │ │ └── themes.xml │ │ │ │ │ └── xml/ │ │ │ │ │ ├── backup_rules.xml │ │ │ │ │ └── data_extraction_rules.xml │ │ │ │ ├── build.gradle │ │ │ │ ├── gradle/ │ │ │ │ │ ├── libs.versions.toml │ │ │ │ │ └── wrapper/ │ │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ ├── gradle.properties │ │ │ │ ├── gradlew │ │ │ │ ├── gradlew.bat │ │ │ │ └── settings.gradle │ │ │ ├── chatapp-shared/ │ │ │ │ ├── README.md │ │ │ │ ├── build.gradle.kts │ │ │ │ ├── gradle.properties │ │ │ │ ├── settings.gradle.kts │ │ │ │ └── src/ │ │ │ │ ├── androidMain/ │ │ │ │ │ └── kotlin/ │ │ │ │ │ └── com/ │ │ │ │ │ └── agui/ │ │ │ │ │ └── example/ │ │ │ │ │ └── chatapp/ │ │ │ │ │ ├── data/ │ │ │ │ │ │ └── pairing/ │ │ │ │ │ │ └── PairingHttpClientFactory.kt │ │ │ │ │ └── util/ │ │ │ │ │ └── AndroidPlatform.kt │ │ │ │ ├── commonMain/ │ │ │ │ │ └── kotlin/ │ │ │ │ │ └── com/ │ │ │ │ │ └── agui/ │ │ │ │ │ └── example/ │ │ │ │ │ ├── chatapp/ │ │ │ │ │ │ ├── chat/ │ │ │ │ │ │ │ ├── ChatAgent.kt │ │ │ │ │ │ │ └── ChatController.kt │ │ │ │ │ │ ├── data/ │ │ │ │ │ │ │ ├── auth/ │ │ │ │ │ │ │ │ ├── ApiKeyAuthProvider.kt │ │ │ │ │ │ │ │ ├── AuthManager.kt │ │ │ │ │ │ │ │ ├── AuthProvider.kt │ │ │ │ │ │ │ │ ├── BasicAuthProvider.kt │ │ │ │ │ │ │ │ └── BearerTokenAuthProvider.kt │ │ │ │ │ │ │ ├── model/ │ │ │ │ │ │ │ │ ├── AgentConfig.kt │ │ │ │ │ │ │ │ ├── AuthMethod.kt │ │ │ │ │ │ │ │ └── ClawgUiPairingResponse.kt │ │ │ │ │ │ │ ├── pairing/ │ │ │ │ │ │ │ │ ├── ClawgUiPairingService.kt │ │ │ │ │ │ │ │ └── PairingHttpClientFactory.kt │ │ │ │ │ │ │ └── repository/ │ │ │ │ │ │ │ └── AgentRepository.kt │ │ │ │ │ │ └── util/ │ │ │ │ │ │ ├── Platform.kt │ │ │ │ │ │ ├── StringResourceProvider.kt │ │ │ │ │ │ └── UserIdManager.kt │ │ │ │ │ └── tools/ │ │ │ │ │ └── ChangeBackgroundToolExecutor.kt │ │ │ │ ├── commonTest/ │ │ │ │ │ └── kotlin/ │ │ │ │ │ └── com/ │ │ │ │ │ └── agui/ │ │ │ │ │ └── example/ │ │ │ │ │ └── chatapp/ │ │ │ │ │ ├── chat/ │ │ │ │ │ │ └── ChatControllerTest.kt │ │ │ │ │ ├── data/ │ │ │ │ │ │ ├── AgentRepositoryTest.kt │ │ │ │ │ │ ├── AuthManagerTest.kt │ │ │ │ │ │ └── pairing/ │ │ │ │ │ │ └── ClawgUiPairingServiceTest.kt │ │ │ │ │ └── testutil/ │ │ │ │ │ └── FakeSettings.kt │ │ │ │ ├── desktopMain/ │ │ │ │ │ └── kotlin/ │ │ │ │ │ └── com/ │ │ │ │ │ └── agui/ │ │ │ │ │ └── example/ │ │ │ │ │ └── chatapp/ │ │ │ │ │ ├── data/ │ │ │ │ │ │ └── pairing/ │ │ │ │ │ │ └── PairingHttpClientFactory.kt │ │ │ │ │ └── util/ │ │ │ │ │ └── DesktopPlatform.kt │ │ │ │ └── iosMain/ │ │ │ │ └── kotlin/ │ │ │ │ └── com/ │ │ │ │ └── agui/ │ │ │ │ └── example/ │ │ │ │ └── chatapp/ │ │ │ │ ├── data/ │ │ │ │ │ └── pairing/ │ │ │ │ │ └── PairingHttpClientFactory.kt │ │ │ │ └── util/ │ │ │ │ └── IosPlatform.kt │ │ │ ├── chatapp-swiftui/ │ │ │ │ ├── README.md │ │ │ │ ├── build.gradle.kts │ │ │ │ ├── gradle/ │ │ │ │ │ ├── libs.versions.toml │ │ │ │ │ └── wrapper/ │ │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ ├── gradle.properties │ │ │ │ ├── gradlew │ │ │ │ ├── gradlew.bat │ │ │ │ ├── iosApp/ │ │ │ │ │ ├── ChatAppSwiftUI.xcodeproj/ │ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ │ └── project.xcworkspace/ │ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── swiftpm/ │ │ │ │ │ │ └── Package.resolved │ │ │ │ │ ├── Resources/ │ │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ └── LaunchScreen.storyboard │ │ │ │ │ ├── Sources/ │ │ │ │ │ │ ├── App/ │ │ │ │ │ │ │ └── ChatAppSwiftUIApp.swift │ │ │ │ │ │ ├── Store/ │ │ │ │ │ │ │ └── ChatAppStore.swift │ │ │ │ │ │ └── Views/ │ │ │ │ │ │ ├── AgentFormView.swift │ │ │ │ │ │ ├── ChatView.swift │ │ │ │ │ │ ├── Components/ │ │ │ │ │ │ │ └── AgentListView.swift │ │ │ │ │ │ └── RootView.swift │ │ │ │ │ └── project.yml │ │ │ │ ├── settings.gradle.kts │ │ │ │ └── shared/ │ │ │ │ ├── build.gradle.kts │ │ │ │ └── src/ │ │ │ │ └── commonMain/ │ │ │ │ └── kotlin/ │ │ │ │ └── com/ │ │ │ │ └── agui/ │ │ │ │ └── example/ │ │ │ │ └── chatapp/ │ │ │ │ └── bridge/ │ │ │ │ └── SwiftBridge.kt │ │ │ ├── chatapp-wearos/ │ │ │ │ ├── README.md │ │ │ │ ├── build.gradle.kts │ │ │ │ ├── gradle/ │ │ │ │ │ ├── libs.versions.toml │ │ │ │ │ └── wrapper/ │ │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ ├── gradle.properties │ │ │ │ ├── gradlew │ │ │ │ ├── gradlew.bat │ │ │ │ ├── settings.gradle.kts │ │ │ │ └── wearApp/ │ │ │ │ ├── build.gradle.kts │ │ │ │ └── src/ │ │ │ │ └── main/ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ ├── java/ │ │ │ │ │ └── com/ │ │ │ │ │ └── agui/ │ │ │ │ │ └── example/ │ │ │ │ │ └── chatwear/ │ │ │ │ │ ├── MainActivity.kt │ │ │ │ │ └── ui/ │ │ │ │ │ ├── ChatWearApp.kt │ │ │ │ │ ├── WearChatViewModel.kt │ │ │ │ │ └── theme/ │ │ │ │ │ └── ChatWearTheme.kt │ │ │ │ └── res/ │ │ │ │ ├── drawable/ │ │ │ │ │ ├── ic_launcher_background.xml │ │ │ │ │ └── ic_launcher_foreground.xml │ │ │ │ ├── mipmap-anydpi/ │ │ │ │ │ ├── ic_launcher.xml │ │ │ │ │ └── ic_launcher_round.xml │ │ │ │ └── values/ │ │ │ │ ├── colors.xml │ │ │ │ ├── strings.xml │ │ │ │ └── themes.xml │ │ │ └── tools/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle/ │ │ │ │ ├── libs.versions.toml │ │ │ │ └── wrapper/ │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ │ ├── gradle.properties │ │ │ ├── gradlew │ │ │ ├── gradlew.bat │ │ │ ├── settings.gradle.kts │ │ │ └── src/ │ │ │ ├── androidMain/ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ └── kotlin/ │ │ │ │ └── com/ │ │ │ │ └── agui/ │ │ │ │ └── example/ │ │ │ │ └── tools/ │ │ │ │ └── AndroidLocationProvider.kt │ │ │ ├── commonMain/ │ │ │ │ └── kotlin/ │ │ │ │ └── com/ │ │ │ │ └── agui/ │ │ │ │ └── example/ │ │ │ │ └── tools/ │ │ │ │ ├── ChangeBackgroundToolExecutor.kt │ │ │ │ └── CurrentLocationToolExecutor.kt │ │ │ ├── commonTest/ │ │ │ │ └── kotlin/ │ │ │ │ └── com/ │ │ │ │ └── agui/ │ │ │ │ └── example/ │ │ │ │ └── tools/ │ │ │ │ ├── CurrentLocationToolTest.kt │ │ │ │ └── ExampleToolsIntegrationTest.kt │ │ │ ├── iosMain/ │ │ │ │ └── kotlin/ │ │ │ │ └── com/ │ │ │ │ └── agui/ │ │ │ │ └── example/ │ │ │ │ └── tools/ │ │ │ │ └── IosLocationProvider.kt │ │ │ ├── iosTest/ │ │ │ │ └── kotlin/ │ │ │ │ └── com/ │ │ │ │ └── agui/ │ │ │ │ └── example/ │ │ │ │ └── tools/ │ │ │ │ ├── IosLocationIntegrationTest.kt │ │ │ │ └── IosLocationProviderTest.kt │ │ │ └── jvmMain/ │ │ │ └── kotlin/ │ │ │ └── com/ │ │ │ └── agui/ │ │ │ └── example/ │ │ │ └── tools/ │ │ │ └── JvmLocationProvider.kt │ │ ├── gradle.properties │ │ ├── library/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── build.gradle.kts │ │ │ ├── client/ │ │ │ │ ├── build.gradle.kts │ │ │ │ ├── consumer-rules.pro │ │ │ │ └── src/ │ │ │ │ ├── androidMain/ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ └── kotlin/ │ │ │ │ │ └── com/ │ │ │ │ │ └── agui/ │ │ │ │ │ └── client/ │ │ │ │ │ └── agent/ │ │ │ │ │ └── HttpClientFactory.kt │ │ │ │ ├── commonMain/ │ │ │ │ │ └── kotlin/ │ │ │ │ │ └── com/ │ │ │ │ │ └── agui/ │ │ │ │ │ └── client/ │ │ │ │ │ ├── AgUiAgent.kt │ │ │ │ │ ├── ClientStateManager.kt │ │ │ │ │ ├── StatefulAgUiAgent.kt │ │ │ │ │ ├── agent/ │ │ │ │ │ │ ├── AbstractAgent.kt │ │ │ │ │ │ ├── AgentSubscriber.kt │ │ │ │ │ │ ├── HttpAgent.kt │ │ │ │ │ │ └── HttpClientFactory.kt │ │ │ │ │ ├── builders/ │ │ │ │ │ │ └── AgentBuilders.kt │ │ │ │ │ ├── chunks/ │ │ │ │ │ │ └── ChunkTransform.kt │ │ │ │ │ ├── sse/ │ │ │ │ │ │ └── SseParser.kt │ │ │ │ │ ├── state/ │ │ │ │ │ │ ├── DefaultApplyEvents.kt │ │ │ │ │ │ ├── JsonPointer.kt │ │ │ │ │ │ ├── StateHandler.kt │ │ │ │ │ │ └── StateManager.kt │ │ │ │ │ ├── tools/ │ │ │ │ │ │ └── ClientToolResponseHandler.kt │ │ │ │ │ └── verify/ │ │ │ │ │ └── EventVerifier.kt │ │ │ │ ├── commonTest/ │ │ │ │ │ └── kotlin/ │ │ │ │ │ └── com/ │ │ │ │ │ └── agui/ │ │ │ │ │ └── client/ │ │ │ │ │ ├── AgUiAgentConfigTest.kt │ │ │ │ │ ├── AgUiAgentToolsTest.kt │ │ │ │ │ ├── IntegrationTest.kt │ │ │ │ │ ├── StatefulAgUiAgentConfigTest.kt │ │ │ │ │ ├── StatefulAgUiAgentTest.kt │ │ │ │ │ ├── UserIdTest.kt │ │ │ │ │ ├── agent/ │ │ │ │ │ │ └── AbstractAgentTest.kt │ │ │ │ │ ├── chunks/ │ │ │ │ │ │ └── ChunkTransformTest.kt │ │ │ │ │ ├── integration/ │ │ │ │ │ │ ├── AdvancedIntegrationTest.kt │ │ │ │ │ │ ├── AgentToolIntegrationTest.kt │ │ │ │ │ │ └── SimpleAgentToolIntegrationTest.kt │ │ │ │ │ ├── sse/ │ │ │ │ │ │ └── SseParserTest.kt │ │ │ │ │ ├── state/ │ │ │ │ │ │ ├── DefaultApplyEventsTest.kt │ │ │ │ │ │ └── StateManagerTest.kt │ │ │ │ │ └── verify/ │ │ │ │ │ └── EventVerifierTest.kt │ │ │ │ ├── iosMain/ │ │ │ │ │ └── kotlin/ │ │ │ │ │ └── com/ │ │ │ │ │ └── agui/ │ │ │ │ │ └── client/ │ │ │ │ │ └── agent/ │ │ │ │ │ └── HttpClientFactory.kt │ │ │ │ └── jvmMain/ │ │ │ │ └── kotlin/ │ │ │ │ └── com/ │ │ │ │ └── agui/ │ │ │ │ └── client/ │ │ │ │ └── agent/ │ │ │ │ └── HttpClientFactory.kt │ │ │ ├── core/ │ │ │ │ ├── build.gradle.kts │ │ │ │ └── src/ │ │ │ │ ├── androidMain/ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ └── kotlin/ │ │ │ │ │ └── com/ │ │ │ │ │ └── agui/ │ │ │ │ │ └── platform/ │ │ │ │ │ └── AndroidPlatform.kt │ │ │ │ ├── commonMain/ │ │ │ │ │ └── kotlin/ │ │ │ │ │ └── com/ │ │ │ │ │ └── agui/ │ │ │ │ │ ├── core/ │ │ │ │ │ │ └── types/ │ │ │ │ │ │ ├── AgUiJson.kt │ │ │ │ │ │ ├── AgUiSerializersModule.kt │ │ │ │ │ │ ├── Events.kt │ │ │ │ │ │ └── Types.kt │ │ │ │ │ └── platform/ │ │ │ │ │ └── Platform.kt │ │ │ │ ├── commonTest/ │ │ │ │ │ └── kotlin/ │ │ │ │ │ └── com/ │ │ │ │ │ └── agui/ │ │ │ │ │ └── tests/ │ │ │ │ │ ├── EventSerializationTest.kt │ │ │ │ │ ├── MessageProtocolComplianceTest.kt │ │ │ │ │ ├── MessageSerializationTest.kt │ │ │ │ │ ├── RunAgentInputProtocolTest.kt │ │ │ │ │ └── ToolSerializationDebugTest.kt │ │ │ │ ├── iosMain/ │ │ │ │ │ └── kotlin/ │ │ │ │ │ └── com/ │ │ │ │ │ └── agui/ │ │ │ │ │ └── platform/ │ │ │ │ │ └── IosPlatform.kt │ │ │ │ ├── jvmMain/ │ │ │ │ │ └── kotlin/ │ │ │ │ │ └── com/ │ │ │ │ │ └── agui/ │ │ │ │ │ └── platform/ │ │ │ │ │ └── JvmPlatform.kt │ │ │ │ └── jvmTest/ │ │ │ │ └── kotlin/ │ │ │ │ └── com/ │ │ │ │ └── agui/ │ │ │ │ └── platform/ │ │ │ │ └── PlatformJvmTest.kt │ │ │ ├── gradle/ │ │ │ │ ├── libs.versions.toml │ │ │ │ └── wrapper/ │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ │ ├── gradle.properties │ │ │ ├── gradlew │ │ │ ├── gradlew.bat │ │ │ ├── settings.gradle.kts │ │ │ └── tools/ │ │ │ ├── build.gradle.kts │ │ │ └── src/ │ │ │ ├── androidMain/ │ │ │ │ └── AndroidManifest.xml │ │ │ ├── commonMain/ │ │ │ │ └── kotlin/ │ │ │ │ └── com/ │ │ │ │ └── agui/ │ │ │ │ └── tools/ │ │ │ │ ├── ToolErrorHandling.kt │ │ │ │ ├── ToolExecutionManager.kt │ │ │ │ ├── ToolExecutor.kt │ │ │ │ └── ToolRegistry.kt │ │ │ └── commonTest/ │ │ │ └── kotlin/ │ │ │ └── com/ │ │ │ └── agui/ │ │ │ └── tools/ │ │ │ ├── CircuitBreakerTest.kt │ │ │ ├── ToolErrorHandlerTest.kt │ │ │ ├── ToolExecutionManagerTest.kt │ │ │ └── ToolsModuleTest.kt │ │ ├── publish.sh │ │ └── settings.gradle.kts │ ├── ruby/ │ │ ├── .gitignore │ │ ├── .yardopts │ │ ├── CHANGELOG.md │ │ ├── Gemfile │ │ ├── README.md │ │ ├── Rakefile │ │ ├── ag-ui-protocol.gemspec │ │ ├── example/ │ │ │ ├── rails/ │ │ │ │ ├── Gemfile │ │ │ │ ├── README.md │ │ │ │ ├── app/ │ │ │ │ │ └── controllers/ │ │ │ │ │ └── ag_ui_controller.rb │ │ │ │ ├── config/ │ │ │ │ │ ├── application.rb │ │ │ │ │ ├── boot.rb │ │ │ │ │ ├── environment.rb │ │ │ │ │ ├── environments/ │ │ │ │ │ │ └── development.rb │ │ │ │ │ ├── puma.rb │ │ │ │ │ └── routes.rb │ │ │ │ └── config.ru │ │ │ └── simple-use/ │ │ │ ├── Gemfile │ │ │ ├── README.md │ │ │ └── main.rb │ │ ├── lib/ │ │ │ ├── ag-ui-protocol.rb │ │ │ ├── ag_ui_protocol/ │ │ │ │ ├── core/ │ │ │ │ │ ├── events.rb │ │ │ │ │ └── types.rb │ │ │ │ ├── encoder/ │ │ │ │ │ └── event_encoder.rb │ │ │ │ ├── util.rb │ │ │ │ └── version.rb │ │ │ └── ag_ui_protocol.rb │ │ ├── sorbet/ │ │ │ └── config │ │ ├── templates/ │ │ │ └── default/ │ │ │ └── fulldoc/ │ │ │ └── markdown/ │ │ │ └── setup.rb │ │ ├── test/ │ │ │ ├── ag_ui_protocol/ │ │ │ │ ├── core/ │ │ │ │ │ ├── events_test.rb │ │ │ │ │ └── types_test.rb │ │ │ │ └── encoder/ │ │ │ │ └── event_encoder_test.rb │ │ │ └── test_helper.rb │ │ └── yard_extensions.rb │ └── rust/ │ ├── Cargo.toml │ ├── TODO │ └── crates/ │ ├── ag-ui-client/ │ │ ├── Cargo.toml │ │ ├── README.md │ │ ├── examples/ │ │ │ ├── basic_agent.rs │ │ │ ├── generative_ui.rs │ │ │ ├── logging_subscriber.rs │ │ │ ├── shared_state.rs │ │ │ └── sse_example.rs │ │ ├── scripts/ │ │ │ ├── basic_agent.py │ │ │ ├── generative_ui.py │ │ │ └── shared_state.py │ │ ├── src/ │ │ │ ├── agent.rs │ │ │ ├── error.rs │ │ │ ├── event_handler.rs │ │ │ ├── http.rs │ │ │ ├── lib.rs │ │ │ ├── sse.rs │ │ │ ├── stream.rs │ │ │ └── subscriber.rs │ │ └── tests/ │ │ ├── http_agent_test.rs │ │ └── sse_test.rs │ └── ag-ui-core/ │ ├── Cargo.toml │ ├── README.md │ ├── src/ │ │ ├── error.rs │ │ ├── event.rs │ │ ├── lib.rs │ │ ├── state.rs │ │ └── types/ │ │ ├── context.rs │ │ ├── ids.rs │ │ ├── input.rs │ │ ├── message.rs │ │ ├── mod.rs │ │ └── tool.rs │ └── tests/ │ └── unit.rs ├── python/ │ ├── .gitignore │ ├── LICENSE │ ├── README.md │ ├── ag_ui/ │ │ ├── __init__.py │ │ ├── core/ │ │ │ ├── __init__.py │ │ │ ├── events.py │ │ │ └── types.py │ │ ├── encoder/ │ │ │ ├── __init__.py │ │ │ └── encoder.py │ │ └── py.typed │ ├── pyproject.toml │ └── tests/ │ ├── __init__.py │ ├── test_encoder.py │ ├── test_events.py │ ├── test_text_roles.py │ └── test_types.py └── typescript/ ├── .cursor/ │ └── rules/ │ └── project-rules.mdc ├── .gitignore ├── .npmrc ├── .prettierrc ├── LICENSE ├── README.md ├── packages/ │ ├── cli/ │ │ ├── .npmignore │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── client/ │ │ ├── .npmignore │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── agent/ │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── agent-clone.test.ts │ │ │ │ │ ├── agent-concurrent.test.ts │ │ │ │ │ ├── agent-multiple-runs.test.ts │ │ │ │ │ ├── agent-mutations.test.ts │ │ │ │ │ ├── agent-result.test.ts │ │ │ │ │ ├── agent-text-roles.test.ts │ │ │ │ │ ├── agent-version.test.ts │ │ │ │ │ ├── http.test.ts │ │ │ │ │ ├── legacy-bridged.test.ts │ │ │ │ │ └── subscriber.test.ts │ │ │ │ ├── agent.ts │ │ │ │ ├── http.ts │ │ │ │ ├── index.ts │ │ │ │ ├── subscriber.ts │ │ │ │ └── types.ts │ │ │ ├── apply/ │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── default.activity.test.ts │ │ │ │ │ ├── default.concurrent.test.ts │ │ │ │ │ ├── default.reasoning.test.ts │ │ │ │ │ ├── default.state.test.ts │ │ │ │ │ ├── default.text-message.test.ts │ │ │ │ │ ├── default.tool-calls.test.ts │ │ │ │ │ └── run-started-input.test.ts │ │ │ │ ├── default.ts │ │ │ │ └── index.ts │ │ │ ├── chunks/ │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── transform-roles.test.ts │ │ │ │ │ └── transform.test.ts │ │ │ │ ├── index.ts │ │ │ │ └── transform.ts │ │ │ ├── compact/ │ │ │ │ ├── __tests__/ │ │ │ │ │ └── compact.test.ts │ │ │ │ ├── compact.ts │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── legacy/ │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── convert.concurrent.test.ts │ │ │ │ │ ├── convert.predictive.test.ts │ │ │ │ │ ├── convert.state.test.ts │ │ │ │ │ └── convert.tool-calls.test.ts │ │ │ │ ├── convert.ts │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ ├── middleware/ │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── backward-compatibility-0-0-39.test.ts │ │ │ │ │ ├── backward-compatibility-0-0-45.test.ts │ │ │ │ │ ├── filter-tool-calls.test.ts │ │ │ │ │ ├── function-middleware.test.ts │ │ │ │ │ ├── middleware-chained-integration.test.ts │ │ │ │ │ ├── middleware-chained-run-next-with-state.test.ts │ │ │ │ │ ├── middleware-live-events.test.ts │ │ │ │ │ ├── middleware-usage-example.ts │ │ │ │ │ ├── middleware-with-state.test.ts │ │ │ │ │ └── middleware.test.ts │ │ │ │ ├── backward-compatibility-0-0-39.ts │ │ │ │ ├── backward-compatibility-0-0-45.ts │ │ │ │ ├── filter-tool-calls.ts │ │ │ │ ├── index.ts │ │ │ │ └── middleware.ts │ │ │ ├── run/ │ │ │ │ ├── __tests__/ │ │ │ │ │ └── http-request.test.ts │ │ │ │ ├── http-request.ts │ │ │ │ └── index.ts │ │ │ ├── transform/ │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── http.test.ts │ │ │ │ │ ├── proto.test.ts │ │ │ │ │ └── sse.test.ts │ │ │ │ ├── http.ts │ │ │ │ ├── index.ts │ │ │ │ ├── proto.ts │ │ │ │ └── sse.ts │ │ │ ├── utils.ts │ │ │ └── verify/ │ │ │ ├── __tests__/ │ │ │ │ ├── verify.concurrent.test.ts │ │ │ │ ├── verify.events.test.ts │ │ │ │ ├── verify.lifecycle.test.ts │ │ │ │ ├── verify.multiple-runs.test.ts │ │ │ │ ├── verify.steps.test.ts │ │ │ │ ├── verify.text-messages.test.ts │ │ │ │ └── verify.tool-calls.test.ts │ │ │ ├── index.ts │ │ │ └── verify.ts │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── core/ │ │ ├── .npmignore │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── __tests__/ │ │ │ │ ├── activity-events.test.ts │ │ │ │ ├── backwards-compatibility.test.ts │ │ │ │ ├── event-factories.test.ts │ │ │ │ ├── events-role-defaults.test.ts │ │ │ │ ├── index.test.ts │ │ │ │ └── multimodal-messages.test.ts │ │ │ ├── capabilities.ts │ │ │ ├── event-factories.ts │ │ │ ├── events.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── encoder/ │ │ ├── .npmignore │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── __tests__/ │ │ │ │ └── encoder.test.ts │ │ │ ├── encoder.ts │ │ │ ├── index.ts │ │ │ └── media-type.ts │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ └── proto/ │ ├── .npmignore │ ├── README.md │ ├── __tests__/ │ │ ├── message-events.test.ts │ │ ├── proto.test.ts │ │ ├── run-events.test.ts │ │ ├── state-events.test.ts │ │ ├── test-utils.ts │ │ └── tool-call-events.test.ts │ ├── package.json │ ├── src/ │ │ ├── index.ts │ │ ├── proto/ │ │ │ ├── events.proto │ │ │ ├── patch.proto │ │ │ └── types.proto │ │ └── proto.ts │ ├── tsconfig.json │ ├── tsdown.config.ts │ └── vitest.config.ts ├── scripts/ │ └── create-integration.ts ├── tsconfig.json └── vitest.base.ts