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
29 changes: 25 additions & 4 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,17 @@ edition = "2021"
license = "MIT"

[dependencies]
openab-core = { path = "crates/openab-core", default-features = false }
openab-gateway = { path = "crates/openab-gateway", default-features = false, optional = true }
# OAB MCP Facade: in-process loopback Streamable HTTP MCP server, enabled by
# `[mcp]` in config.toml (OAB MCP Adapter ADR §6.2).
# `[mcp]` in config.toml (OAB MCP Adapter ADR §6.2). The `acp-mcp` core feature
# is enabled UNCONDITIONALLY here — not via the `acp` feature — because the
# agent control-plane facade (`src/cp_tools.rs`) links `openab_core::acp_mcp`
# and `openab_core::control_plane` in every build, including a default
# Discord/Slack build without any gateway. Enabling it on the dependency once,
# rather than re-adding `openab-core/acp-mcp` from the `acp` feature, keeps a
# single source of truth (the `acp` feature adding it again was redundant and
# could drift).
openab-core = { path = "crates/openab-core", default-features = false, features = ["acp-mcp"] }
openab-gateway = { path = "crates/openab-gateway", default-features = false, optional = true }
openab-mcp = { path = "crates/openab-mcp" }
tokio = { version = "1", features = ["full"] }
tracing = "0.1"
Expand Down Expand Up @@ -51,8 +58,22 @@ feishu = ["dep:openab-gateway", "dep:axum", "openab-gateway/feishu"]
googlechat = ["dep:openab-gateway", "dep:axum", "openab-gateway/googlechat"]
wecom = ["dep:openab-gateway", "dep:axum", "openab-gateway/wecom"]
teams = ["dep:openab-gateway", "dep:axum", "openab-gateway/teams"]
acp = ["dep:openab-gateway", "dep:axum", "openab-gateway/acp", "openab-core/acp-mcp"]
# `openab-core/acp-mcp` is NOT re-listed here: it is enabled unconditionally on
# the `openab-core` dependency above (the CP facade links it in every build), so
# adding it to this feature would be redundant.
acp = ["dep:openab-gateway", "dep:axum", "openab-gateway/acp"]
lineworks = ["dep:openab-gateway", "dep:axum", "openab-gateway/lineworks"]

[dev-dependencies]
tempfile = "3.27.0"
# `test-util` unlocks paused-time control (`tokio::time::pause`/`advance` and
# `#[tokio::test(start_paused = true)]`) used by the shared spawn-timeout test,
# which must not wait real seconds for the `deadline_secs + 5` bound.
tokio = { version = "1", features = ["full", "test-util"] }
# rmcp 1.7's Streamable-HTTP client transport is generic over a client that
# implements its `StreamableHttpClient` trait, whose blanket impl is for
# reqwest 0.13's `Client` (the runtime crate holds the same pin). The
# cp_tools real-HTTP facade test drives that client, so the test build — and
# only the test build — needs reqwest 0.13 to construct one with a custom
# `Authorization` header.
reqwest013 = { package = "reqwest", version = "0.13", default-features = false, features = ["rustls", "json"] }
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ webhook platforms and `WS/webhook` for Feishu/Lark.
- **@mention trigger** — mention the bot in an allowed channel to start a conversation
- **Thread-based multi-turn** — auto-creates threads; no @mention needed for follow-ups
- **Multi-agent collaboration** — bot-to-bot messaging for coordinated workflows ([docs/multi-agent.md](docs/multi-agent.md))
- **Agent control plane (preview)** — standalone `openab-cp` service for direct agent-to-agent delegation over WebSocket, with identity-bound registration and CP-authoritative policy; runtime client and facade land in follow-up releases ([docs/control-plane.md](docs/control-plane.md))
- **Agent control plane (preview)** — standalone `openab-cp` routes direct agent-to-agent delegation; runtimes register outbound, workers serve through their ACP pool, and primaries get four direct MCP tools plus the `openab agent` CLI over an owner-only local socket ([docs/control-plane.md](docs/control-plane.md))
- **Agent-controlled reply-to** — agents choose which message to reply to via `[[reply_to:id]]` directive, enabling clear conversation threads in multi-bot channels ([docs/output-directives.md](docs/output-directives.md))
- **Edit-streaming** — live-updates the Discord message every 1.5s as tokens arrive
- **Emoji status reactions** — 👀→🤔→🔥/👨‍💻/⚡→👍+random mood face
Expand Down
2 changes: 1 addition & 1 deletion README.zh-TW.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ platforms 使用 `webhook/API`,Feishu/Lark 則使用 `WS/webhook`。
- **@mention 觸發** — 在允許的頻道中 mention bot,即可開始對話
- **以討論串進行多輪對話** — 自動建立討論串;後續訊息不需再次 @mention
- **多 agent 協作** — 支援 bot-to-bot 訊息,實現協調式工作流程([docs/multi-agent.md](docs/multi-agent.md))
- **Agent control plane(預覽)** — 獨立的 `openab-cp` 服務,讓 agent 之間可透過 WebSocket 直接委派任務,具備綁定身分的註冊機制與由 CP 主導的政策控管;runtime client 與 facade 將於後續版本推出([docs/control-plane.md](docs/control-plane.md))
- **Agent control plane(預覽)** — 獨立的 `openab-cp` 負責 agent 間的直接委派;runtime 主動註冊、worker 透過 ACP session pool 執行工作,primary 則取得四個 MCP tools 與透過 owner-only 本機 socket 使用的 `openab agent` CLI([docs/control-plane.md](docs/control-plane.md))
- **由 agent 控制回覆對象** — agent 可透過 `[[reply_to:id]]` 指令選擇要回覆的訊息,讓多 bot 頻道中的對話脈絡更清楚([docs/output-directives.md](docs/output-directives.md))
- **編輯式串流輸出** — token 產生時每 1.5 秒即時更新 Discord 訊息
- **Emoji 狀態反應** — 👀→🤔→🔥/👨‍💻/⚡→👍+隨機情緒表情
Expand Down
Loading
Loading