mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-12 07:20:45 +00:00
feat(acp): enable dispatch by default
This commit is contained in:
@@ -28,6 +28,7 @@ Docs: https://docs.openclaw.ai
|
||||
- **BREAKING:** Plugin SDK removed `api.registerHttpHandler(...)`. Plugins must register explicit HTTP routes via `api.registerHttpRoute({ path, auth, match, handler })`, and dynamic webhook lifecycles should use `registerPluginHttpRoute(...)`.
|
||||
- **BREAKING:** Zalo Personal plugin (`@openclaw/zalouser`) no longer depends on external `zca`-compatible CLI binaries (`openzca`, `zca-cli`) for runtime send/listen/login; operators should use `openclaw channels login --channel zalouser` after upgrade to refresh sessions in the new JS-native path.
|
||||
- **BREAKING:** Onboarding now defaults `tools.profile` to `messaging` for new local installs (interactive + non-interactive). New setups no longer start with broad coding/system tools unless explicitly configured.
|
||||
- **BREAKING:** ACP dispatch now defaults to enabled unless explicitly disabled (`acp.dispatch.enabled=false`). If you need to pause ACP turn routing while keeping `/acp` controls, set `acp.dispatch.enabled=false`. Docs: https://docs.openclaw.ai/tools/acp-agents
|
||||
|
||||
### Fixes
|
||||
|
||||
|
||||
@@ -75,7 +75,7 @@ Thread binding support is adapter-specific. If the active channel adapter does n
|
||||
Required feature flags for thread-bound ACP:
|
||||
|
||||
- `acp.enabled=true`
|
||||
- `acp.dispatch.enabled=true`
|
||||
- `acp.dispatch.enabled` is on by default (set `false` to pause ACP dispatch)
|
||||
- Channel-adapter ACP thread-spawn flag enabled (adapter-specific)
|
||||
- Discord: `channels.discord.threadBindings.spawnAcpSessions=true`
|
||||
|
||||
@@ -249,6 +249,7 @@ Core ACP baseline:
|
||||
{
|
||||
acp: {
|
||||
enabled: true,
|
||||
// Optional. Default is true; set false to pause ACP dispatch while keeping /acp controls.
|
||||
dispatch: { enabled: true },
|
||||
backend: "acpx",
|
||||
defaultAgent: "codex",
|
||||
|
||||
@@ -11,11 +11,11 @@ import {
|
||||
} from "./policy.js";
|
||||
|
||||
describe("acp policy", () => {
|
||||
it("treats ACP as enabled by default", () => {
|
||||
it("treats ACP + ACP dispatch as enabled by default", () => {
|
||||
const cfg = {} satisfies OpenClawConfig;
|
||||
expect(isAcpEnabledByPolicy(cfg)).toBe(true);
|
||||
expect(isAcpDispatchEnabledByPolicy(cfg)).toBe(false);
|
||||
expect(resolveAcpDispatchPolicyState(cfg)).toBe("dispatch_disabled");
|
||||
expect(isAcpDispatchEnabledByPolicy(cfg)).toBe(true);
|
||||
expect(resolveAcpDispatchPolicyState(cfg)).toBe("enabled");
|
||||
});
|
||||
|
||||
it("reports ACP disabled state when acp.enabled is false", () => {
|
||||
|
||||
@@ -16,7 +16,8 @@ export function resolveAcpDispatchPolicyState(cfg: OpenClawConfig): AcpDispatchP
|
||||
if (!isAcpEnabledByPolicy(cfg)) {
|
||||
return "acp_disabled";
|
||||
}
|
||||
if (cfg.acp?.dispatch?.enabled !== true) {
|
||||
// ACP dispatch is enabled unless explicitly disabled.
|
||||
if (cfg.acp?.dispatch?.enabled === false) {
|
||||
return "dispatch_disabled";
|
||||
}
|
||||
return "enabled";
|
||||
|
||||
@@ -163,7 +163,7 @@ export const FIELD_HELP: Record<string, string> = {
|
||||
"acp.enabled":
|
||||
"Global ACP feature gate. Keep disabled unless ACP runtime + policy are configured.",
|
||||
"acp.dispatch.enabled":
|
||||
"Independent dispatch gate for ACP session turns. Disable to keep ACP commands available while blocking ACP turn execution.",
|
||||
"Independent dispatch gate for ACP session turns (default: true). Set false to keep ACP commands available while blocking ACP turn execution.",
|
||||
"acp.backend":
|
||||
"Default ACP runtime backend id (for example: acpx). Must match a registered ACP runtime plugin backend.",
|
||||
"acp.defaultAgent":
|
||||
|
||||
Reference in New Issue
Block a user