Files
j3ssie 520977d1ea feat: Add agent-acp step type with ACP protocol support
- Implement agent-acp step type for spawning external ACP agent subprocesses via Agent Communication Protocol
- Add ACPExecutor with validation, field rendering, and subprocess lifecycle management
- Integrate agent-acp field rendering in StepDispatcher (batch and sequential modes)
- Add run_agent() utility function for workflows to execute ACP agents from steps and JS context
- Add osmedeus agent CLI command for interactive agent execution with --agent, --cwd, --timeout, --stdin, and --list flags
- Add /osm/api/agent/chat/completions REST endpoint with OpenAI-compatible chat format and concurrency control
- Support agent selection via: built-in names (claude-code, codex, opencode, gemini) or custom acp_config.command
- Add step-level configuration: cwd, allowed_paths, acp_config (command, args, env, write_enabled)
- Add comprehensive E2E tests for agent-acp workflows (basic, minimal, config, codex variants)
- Add test workflows in test/testdata/workflows/agent-and-llm/
- Update AGENTS.md documentation with agent-acp examples, CLI usage, and API endpoints
2026-02-27 16:18:06 +08:00

32 lines
782 B
Go

package cli
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestResolveAgentMessage_Positional(t *testing.T) {
msg, err := resolveAgentMessage([]string{"hello", "world"})
assert.NoError(t, err)
assert.Equal(t, "hello world", msg)
}
func TestResolveAgentMessage_SingleArg(t *testing.T) {
msg, err := resolveAgentMessage([]string{"test message"})
assert.NoError(t, err)
assert.Equal(t, "test message", msg)
}
func TestResolveAgentMessage_NoArgs(t *testing.T) {
_, err := resolveAgentMessage(nil)
assert.Error(t, err)
assert.Contains(t, err.Error(), "no message provided")
}
func TestResolveAgentMessage_EmptyArgs(t *testing.T) {
_, err := resolveAgentMessage([]string{})
assert.Error(t, err)
assert.Contains(t, err.Error(), "no message provided")
}