Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions .github/workflows/build-and-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,6 @@ jobs:
- uses: ./tools/github-actions/setup-deps
- run: make tools
- run: ./mvnw -B install
- run: tools/scripts/verify-api-contract.sh --skip-install
- run: tools/scripts/verify-clear-room.sh
build:
if: (github.repository == 'agentic-ai-java/argi')
runs-on: ubuntu-22.04
Expand All @@ -72,7 +70,6 @@ jobs:
- run: pnpm --dir argi-studio/agent-chat-ui exec tsc --noEmit
- run: pnpm --dir argi-studio/agent-chat-ui run test
- run: pnpm --dir argi-studio/agent-chat-ui run build:static
- run: python3 tools/tests/release-tools-test.py
- run: make tools
- name: Build release artifacts without signing or publishing
run: ./mvnw -B -Prelease -Dgpg.skip=true -DskipTests=true package
Expand Down
2 changes: 0 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,6 @@ jobs:
], text=True))
assert release['isDraft'] and release['targetCommitish'] == sha, 'Release draft target mismatch'
PY
- name: Verify release tools
run: python3 tools/tests/release-tools-test.py
- name: Check publishing credentials
shell: bash
env:
Expand Down
16 changes: 7 additions & 9 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ This file provides guidance for AI assistants working with the ARGI codebase.

## Project Overview

ARGI (Agent Runtime and Graph Intelligence, pronounced "AR-jee") is a production-ready framework for building agents, workflows, and multi-agent applications. It is forked from Spring AI Alibaba and focuses on stateful agent runtime capabilities: graph orchestration, persistence, context engineering, and human-in-the-loop support. Its runtime consumes framework-neutral `argi-api` contracts. Spring AI, LangChain4j, Google ADK Java, and AgentScope Java are isolated in optional adapters.
ARGI (Agent Runtime and Graph Intelligence, pronounced "AR-jee") is a production-ready framework for building agents, workflows, and multi-agent applications. It is forked from Spring AI Alibaba and focuses on stateful agent runtime capabilities: graph orchestration, persistence, context engineering, and human-in-the-loop support. Its runtime consumes framework-neutral `argi-api` contracts. Spring AI, LangChain4j, and Google ADK Java are isolated in optional adapters.

> **Naming:** the product display name is *ARGI*. Published Maven coordinates use `io.github.agentic-ai-java:argi-*`, Java packages use `io.github.agentic.ai`, configuration prefixes use `argi.*`, and framework-specific public class names use the `Argi*` prefix.

Expand All @@ -35,7 +35,7 @@ ARGI (Agent Runtime and Graph Intelligence, pronounced "AR-jee") is a production
- Context Engineering with human-in-the-loop, context compaction, editing, model call limits
- Graph-based workflow with conditional routing, nested graphs, parallel execution
- A2A (Agent-to-Agent) client support (Nacos service discovery lives in the Extensions repository)
- Multi-model integration through four optional ChatClient adapters, plus MCP (Model Context Protocol)
- Multi-model integration through three optional ChatClient adapters, plus MCP (Model Context Protocol)
- Embedded visual debugging studio

## Repository Structure
Expand All @@ -46,8 +46,7 @@ argi/
│ ├── argi-api-base/ # Publishes argi-api; JDK-only public contracts
│ ├── argi-adapter-spring-ai/
│ ├── argi-adapter-langchain4j/
│ ├── argi-adapter-google-adk/
│ └── argi-adapter-agentscope/
│ └── argi-adapter-google-adk/
├── argi-runtime/ # Runtime contracts and implementation
│ ├── argi-runtime-api/
│ └── argi-runtime-core/
Expand All @@ -65,8 +64,7 @@ argi/
│ ├── argi-starter-graph-observation/ # Observability
│ ├── argi-starter-adapter-spring-ai/
│ ├── argi-starter-adapter-langchain4j/
│ ├── argi-starter-adapter-google-adk/
│ └── argi-starter-adapter-agentscope/
│ └── argi-starter-adapter-google-adk/
└── tools/ # Build and linting tools
```

Expand Down Expand Up @@ -116,14 +114,14 @@ make licenses-check
### Core Components

- **Agent Framework**: Built-in agents like `SequentialAgent`, `ParallelAgent`, `RoutingAgent`, `LoopAgent`.
- **Graph Core**: Underlying engine for stateful agents, supporting persistence (PostgreSQL, MySQL, Oracle, MongoDB, Redis, File).
- **A2A (Agent-to-Agent)**: Enables agents to seek and communicate with each other using Nacos as a registry.
- **Graph Core**: Underlying engine for stateful agents with in-memory and file persistence; JDBC, MongoDB, and Redis savers live in the Extensions repository.
- **A2A (Agent-to-Agent)**: Enables agents to call remote agents through agent cards; Nacos discovery lives in the Extensions repository.
- **Studio**: Provides embedded visual tools for debugging agent workflows.

### Technology Stack

- **Framework**: Java 17; Spring Boot 4.1.x for optional starters and Studio
- **Model and Integration Layer**: `argi-api` contracts and four isolated provider adapters; MCP and A2A integrations
- **Model and Integration Layer**: `argi-api` contracts and three isolated provider adapters; MCP and A2A integrations
- **Observability**: Lightweight Micrometer observation; no required OpenTelemetry deployment

Core production sources, bytecode, and runtime dependency trees must remain free of provider SDKs. Native SDKs in core test fixtures must use test scope. This is a breaking replacement, not a deprecated compatibility bridge.
Expand Down
4 changes: 1 addition & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,9 +77,7 @@ maintainers should review untrusted workflow/script changes before approving run
No welcome message or label is added automatically. Review requirements are
managed by repository branch protection or rulesets.

Run local checks before submitting even when upstream CI is available. The CI
test job installs the tested artifacts once, then uses
`verify-api-contract.sh --skip-install` to compile the independent consumer.
Run local checks before submitting even when upstream CI is available.

Commit format example:

Expand Down
9 changes: 3 additions & 6 deletions README-zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ ARGI 是 **Agent Runtime and Graph Intelligence** 的缩写,读作 **“AR-jee
- **上下文工程**:支持上下文压缩与编辑、调用限制、工具重试、规划和动态工具选择。
- **图工作流**:支持条件路由、并行执行、嵌套图、状态持久化和中断恢复。
- **智能体运行时基础**:提供模型无关的智能体编排、工作流状态和可嵌入调试支持。
- **开放集成**:通过中立 ChatClient 接入 Spring AI、LangChain4j、Google ADK 和 AgentScope,并提供工具调用、MCP、A2A 和 Nacos。
- **开放集成**:通过中立 ChatClient 接入 Spring AI、LangChain4j 和 Google ADK,并提供工具调用、MCP、A2A 和 Nacos。
- **可视化调试**:提供可嵌入 Spring Boot 应用的 Agent Chat UI。

## 快速开始
Expand Down Expand Up @@ -57,7 +57,7 @@ mvn -f examples/chatbot/pom.xml spring-boot:run

| 模块 | 说明 |
| --- | --- |
| [API 与 Adapter](argi-api) | 中立 ChatClient 契约及 Spring AI、LangChain4j、Google ADK、AgentScope 接入 |
| [API 与 Adapter](argi-api) | 中立 ChatClient 契约及 Spring AI、LangChain4j、Google ADK 接入 |
| [Runtime API](argi-runtime/argi-runtime-api) | JDK-only identity、definition 与 execution-control 契约 |
| [Runtime Core](argi-runtime/argi-runtime-core) | 中立 Run/Task 数据、codec 与 reference storage |
| [Agent API](argi-agent/argi-agent-api) | 引擎无关的 Agent invocation 与共享 interceptor 契约 |
Expand All @@ -67,7 +67,7 @@ mvn -f examples/chatbot/pom.xml spring-boot:run
| [Workflow Core](argi-orchestration/argi-workflow-core) | 版本化声明式工作流定义与独立执行 |
| [Studio](argi-studio) | Agent 可视化调试界面 |
| [Sandbox](https://github.com/agentic-ai-java/argi-extensions/tree/main/sandbox/argi-sandbox) | 工具调用的可选隔离执行环境,由 Extensions 维护 |
| [Spring Boot Starters](argi-spring-boot-starter) | 内置图节点、图可观测性与四个 Adapter 的自动配置 |
| [Spring Boot Starters](argi-spring-boot-starter) | 内置图节点、图可观测性与三个 Adapter 的自动配置 |
| [Extensions](https://github.com/agentic-ai-java/argi-extensions) | 模型与文档契约、A2A、Nacos、AgentScope、存储等可选扩展 |
| [Examples](https://github.com/agentic-ai-java/argi-examples/tree/main/examples) | Chatbot、多智能体、图工程和文档示例 |
| [Benchmark](benchmark) | [ARGI 基准测试项目](https://github.com/agentic-ai-java/argi-benchmark) |
Expand All @@ -78,9 +78,6 @@ mvn -f examples/chatbot/pom.xml spring-boot:run
- [快速开始](https://agentic-ai-java.github.io/argi-website/docs/quick-start)
- [Agent Framework 教程](https://agentic-ai-java.github.io/argi-website/docs/frameworks/agent-framework/tutorials/agents)
- [Workflow Graph Core 快速开始](https://agentic-ai-java.github.io/argi-website/docs/frameworks/workflow-graph-core/quick-start)
- [Clear Room 基线与命名决策](docs/architecture/clear-room-baseline.md)
- [Checkpoint 兼容契约](docs/architecture/checkpoint-compatibility.md)
- [Agent、Studio 与 serializer 边界](docs/architecture/api-boundaries.md)
- [示例项目](https://github.com/agentic-ai-java/argi-examples/tree/main/examples)
- [模型厂商相关示例](https://github.com/agentic-ai-java/argi-extensions/tree/main/examples)

Expand Down
9 changes: 3 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ ARGI stands for **Agent Runtime and Graph Intelligence** and is pronounced **"AR
- **Context engineering**: context compaction and editing, call limits, tool retries, planning, and dynamic tool selection.
- **Graph workflows**: conditional routing, parallel execution, nested graphs, state persistence, and interruption recovery.
- **Agent runtime foundation**: provider-neutral agent orchestration, workflow state, and embeddable debugging support.
- **Open integrations**: a neutral ChatClient with Spring AI, LangChain4j, Google ADK, and AgentScope adapters, plus tool calling, MCP, A2A, and Nacos.
- **Open integrations**: a neutral ChatClient with Spring AI, LangChain4j, and Google ADK adapters, plus tool calling, MCP, A2A, and Nacos.
- **Visual debugging**: an embeddable Agent Chat UI for Spring Boot applications.

## Quick Start
Expand Down Expand Up @@ -57,7 +57,7 @@ Open [http://localhost:8080/chatui/index.html](http://localhost:8080/chatui/inde

| Module | Description |
| --- | --- |
| [API and Adapters](argi-api) | Framework-neutral ChatClient contracts and Spring AI, LangChain4j, Google ADK, and AgentScope adapters |
| [API and Adapters](argi-api) | Framework-neutral ChatClient contracts and Spring AI, LangChain4j, and Google ADK adapters |
| [Agent Framework](argi-orchestration/argi-agent-framework) | Agent development and multi-agent orchestration |
| [Workflow Graph Core](argi-orchestration/argi-workflow-graph-core) | Stateful graph execution, persistence, and workflow runtime |
| [Runtime API](argi-runtime/argi-runtime-api) | JDK-only identity, definition and execution-control contracts |
Expand All @@ -67,7 +67,7 @@ Open [http://localhost:8080/chatui/index.html](http://localhost:8080/chatui/inde
| [Runtime Core](argi-runtime/argi-runtime-core) | Engine-neutral Run/Task data, codecs and reference storage |
| [Studio](argi-studio) | Visual debugging UI for agents |
| [Sandbox](https://github.com/agentic-ai-java/argi-extensions/tree/main/sandbox/argi-sandbox) | Optional isolated execution environment for tool calls, maintained in Extensions |
| [Spring Boot Starters](argi-spring-boot-starter) | Built-in graph nodes, graph observability, and four adapter auto-configurations |
| [Spring Boot Starters](argi-spring-boot-starter) | Built-in graph nodes, graph observability, and three adapter auto-configurations |
| [Extensions](https://github.com/agentic-ai-java/argi-extensions) | Model and document contracts, A2A, Nacos, AgentScope, storage, and other optional integrations |
| [Examples](https://github.com/agentic-ai-java/argi-examples/tree/main/examples) | Chatbot, multi-agent, graph engineering, and documentation examples |
| [Benchmark](benchmark) | [argi-benchmark](https://github.com/agentic-ai-java/argi-benchmark) |
Expand All @@ -78,9 +78,6 @@ Open [http://localhost:8080/chatui/index.html](http://localhost:8080/chatui/inde
- [Quick Start](https://agentic-ai-java.github.io/argi-website/en/docs/quick-start)
- [Agent Framework tutorials](https://agentic-ai-java.github.io/argi-website/en/docs/frameworks/agent-framework/tutorials/agents)
- [Workflow Graph Core Quick Start](https://agentic-ai-java.github.io/argi-website/en/docs/frameworks/workflow-graph-core/quick-start)
- [Clear Room baseline](docs/architecture/clear-room-baseline.md)
- [Checkpoint compatibility contract](docs/architecture/checkpoint-compatibility.md)
- [Agent, Studio, and serializer boundaries](docs/architecture/api-boundaries.md)
- [Examples](https://github.com/agentic-ai-java/argi-examples/tree/main/examples)
- [Provider-specific examples](https://github.com/agentic-ai-java/argi-extensions/tree/main/examples)

Expand Down
8 changes: 0 additions & 8 deletions argi-agent/argi-agent-api/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,16 +108,8 @@ API is explicit, not an automatic replacement for existing Graph calls.

```sh
./mvnw -B -pl :argi-agent-api -am test
tools/scripts/verify-api-contract.sh
```

The independent consumer compiles and executes local model interception, a real
loopback HTTP call, and a two-step composition through the same Agent interface.
Its classpath contains exactly Agent API, Runtime API and API. The gate checks
public signatures, actual bytecode dependencies (java.base only), missing types,
and duplicate classes in Framework. These are executable contract consumers,
not production ReAct, declarative Workflow or remote-protocol engines.

Unit tests cover immutable boundaries, suspended outcomes, malformed streams,
cancellation in both directions, late subscriptions, deadline and ownership loss,
completion races, and 100,000 intermediate events without collector accumulation.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.github.agentic.ai.agent.interceptor;
package io.github.agentic.ai.agent.outcome;

/**
* Implemented by tools that carry their own {@link BusinessOutcomeMapper}; lets
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.github.agentic.ai.agent.interceptor;
package io.github.agentic.ai.agent.outcome;

import io.github.agentic.ai.api.chat.ToolCall;
import io.github.agentic.ai.api.tool.ToolResult;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.github.agentic.ai.agent.interceptor;
package io.github.agentic.ai.agent.outcome;

import java.util.Collections;
import java.util.HashMap;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
import io.github.agentic.ai.api.tool.ToolRegistry;
import io.github.agentic.ai.api.tool.ToolResult;
import io.github.agentic.ai.agent.AgentResult;
import io.github.agentic.ai.agent.interceptor.BusinessOutcomeMapperRegistry;
import io.github.agentic.ai.agent.outcome.BusinessOutcomeMapperRegistry;
import io.github.agentic.ai.agent.interceptor.ModelCallHandler;
import io.github.agentic.ai.agent.interceptor.ModelInterceptor;
import io.github.agentic.ai.agent.interceptor.ModelRequest;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.github.agentic.ai.agent.interceptor;
package io.github.agentic.ai.agent.outcome;

import io.github.agentic.ai.api.chat.ToolCall;
import io.github.agentic.ai.api.chat.ToolDefinition;
Expand Down
16 changes: 6 additions & 10 deletions argi-api/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ runtime dependency. The root `pom.xml` aggregates each child module directly.
| `argi-adapter-spring-ai` | `argi-adapter-spring-ai` | Adapt Spring AI ChatClient and ChatModel |
| `argi-adapter-langchain4j` | `argi-adapter-langchain4j` | Adapt LangChain4j chat and streaming models |
| `argi-adapter-google-adk` | `argi-adapter-google-adk` | Adapt Google ADK BaseLlm |
| `argi-adapter-agentscope` | `argi-adapter-agentscope` | Adapt AgentScope Model |

All artifacts use the group ID `io.github.agentic-ai-java`. The `argi-api-base`
directory intentionally publishes as **`argi-api`**: applications should not need
Expand All @@ -27,7 +26,7 @@ From the repository root:

```shell
./mvnw -B -pl :argi-api -am test
./mvnw -B -pl :argi-adapter-spring-ai,:argi-adapter-langchain4j,:argi-adapter-google-adk,:argi-adapter-agentscope -am test
./mvnw -B -pl :argi-adapter-spring-ai,:argi-adapter-langchain4j,:argi-adapter-google-adk -am test
```

For path-based module selection, use the complete child path, for example
Expand All @@ -39,7 +38,7 @@ Java packages, and adapter behavior are unchanged by the directory move.

Import `io.github.agentic-ai-java:argi-bom` at the ARGI version used by the
application. For a standalone ReAct application, add `argi-agent-framework` and
one of the four adapter artifacts. A graph-only application uses `argi-workflow-graph-core`
one of the three adapter artifacts. A graph-only application uses `argi-workflow-graph-core`
and, for built-in model nodes, `argi-starter-builtin-nodes` instead. The directory
name `argi-api-base` is not a dependency coordinate.

Expand All @@ -51,9 +50,8 @@ wraps it explicitly. Adapter constructors accept these native types:
| `SpringAiChatClientAdapter` | Spring AI `ChatModel` or `ChatClient` |
| `LangChain4jChatClientAdapter` | LangChain4j `ChatModel`, optionally with `StreamingChatModel` |
| `GoogleAdkChatClientAdapter` | Google ADK `BaseLlm` |
| `AgentScopeChatClientAdapter` | AgentScope `Model` |

After wrapping, the agent code is the same for all four frameworks:
After wrapping, the agent code is the same for all three frameworks:

```java
import io.github.agentic.ai.api.chat.ChatClient;
Expand Down Expand Up @@ -99,7 +97,7 @@ constants or Maven command-line secrets.
-Dsurefire.failIfNoSpecifiedTests=false test
```

The matrix covers four adapters, Graph and ReAct tool loops, and synchronous and
The matrix covers three adapters, Graph and ReAct tool loops, and synchronous and
streaming calls. ADK uses its `ApigeeLlm` OpenAI-compatible transport in this
matrix; it does not validate native Gemini/Vertex AI, native ADK Claude, or the
upstream identity of a model served by a gateway. Studio's optional Jina MCP
Expand Down Expand Up @@ -215,7 +213,7 @@ and `ToolRegistry`; existing Spring AI callbacks can be explicitly wrapped with
The API, Graph, Agent/ReAct, Studio, and generic starters use neutral messages,
tools, serializers, and model calls. Their production sources, compiled classes,
and runtime dependency trees must not reference provider SDKs or adapters. Provider
SDKs are confined to the four adapter modules and their dedicated starters;
SDKs are confined to the three adapter modules and their dedicated starters;
test-scoped adapter fixtures do not become application dependencies. Third-party
Native Agent Mode is not implemented in this phase.

Expand Down Expand Up @@ -305,7 +303,7 @@ compatible**. They fail explicitly; they must not become user messages or disapp
Template content must be resolved with the previous runtime. There is no bundled
one-command binary export tool: use the old runtime and an application-specific
export that emits the supported historical JSON layout or neutral messages.
Do not pass legacy maps directly to `Messageutils`; deserialize them first.
Do not pass legacy maps directly to `MessageUtils`; deserialize them first.

Before deployment:

Expand Down Expand Up @@ -363,8 +361,6 @@ Studio attaches turn usage only to the final event when splitting a multi-messag
output. Earlier split events carry unknown usage. Upgrade SSE consumers for
`inputTokens`, `outputTokens`, `totalTokens` rather than the previous
`promptTokens` / `completionTokens` fields; do not accumulate usage per message.
AgentScope uses the native total-token getter, without assuming a provider total
can always be reconstructed from input and output tokens.

The agent framework uses JSON Schema Validator 3.x for its current neutral tool
validation API. Studio pins 1.5.7 in test scope because its MCP fixture requires
Expand Down
Loading
Loading