From f58dbc11e7b60fa8748a7fce2d502503acd61cd2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 16 Feb 2026 01:21:24 +0000 Subject: [PATCH 1/4] Initial plan From 76ce22dfdac4d11b551c9d9e120f8ef1697db7f2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 16 Feb 2026 01:28:51 +0000 Subject: [PATCH 2/4] Remove SupportsHTTPTransport from agentic engine interface All changes made: - Removed SupportsHTTPTransport() from CapabilityProvider interface - Removed supportsHTTPTransport field from BaseEngine struct - Removed field initialization from all engine constructors - Removed validateHTTPTransportSupport() validation function - Removed validation call from compiler orchestrator - Updated all tests to remove SupportsHTTPTransport checks - Updated YAML compiler to remove supports_http_transport output - Updated comments to reflect HTTP transport is always supported Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- pkg/cli/logs_parsing_test.go | 2 -- pkg/workflow/agent_validation.go | 20 ------------------- pkg/workflow/agentic_engine.go | 9 --------- .../agentic_engine_interfaces_test.go | 8 -------- pkg/workflow/claude_engine.go | 1 - pkg/workflow/codex_engine.go | 1 - pkg/workflow/compiler_orchestrator_tools.go | 6 ------ pkg/workflow/compiler_yaml.go | 1 - pkg/workflow/copilot_engine.go | 1 - pkg/workflow/copilot_engine_test.go | 4 ---- pkg/workflow/copilot_sdk_engine.go | 1 - pkg/workflow/copilot_sdk_engine_test.go | 1 - pkg/workflow/custom_engine.go | 1 - pkg/workflow/custom_engine_test.go | 4 ---- pkg/workflow/safe_inputs_renderer.go | 2 +- 15 files changed, 1 insertion(+), 61 deletions(-) diff --git a/pkg/cli/logs_parsing_test.go b/pkg/cli/logs_parsing_test.go index 3bf9ac0bab6..94cd550316d 100644 --- a/pkg/cli/logs_parsing_test.go +++ b/pkg/cli/logs_parsing_test.go @@ -542,7 +542,6 @@ func TestExtractEngineFromAwInfoNestedDirectory(t *testing.T) { "workflow_name": "Test Claude", "experimental": false, "supports_tools_allowlist": true, - "supports_http_transport": false, "run_id": 123456789, "run_number": 42, "run_attempt": "1", @@ -587,7 +586,6 @@ func TestExtractEngineFromAwInfoNestedDirectory(t *testing.T) { "workflow_name": "Test Codex", "experimental": true, "supports_tools_allowlist": true, - "supports_http_transport": false, "run_id": 987654321, "run_number": 7, "run_attempt": "1", diff --git a/pkg/workflow/agent_validation.go b/pkg/workflow/agent_validation.go index 241d43c4c10..08a7b197246 100644 --- a/pkg/workflow/agent_validation.go +++ b/pkg/workflow/agent_validation.go @@ -11,7 +11,6 @@ // # Validation Functions // // - validateAgentFile() - Validates custom agent file exists -// - validateHTTPTransportSupport() - Validates HTTP MCP compatibility with engine // - validateMaxTurnsSupport() - Validates max-turns feature support // - validateWebSearchSupport() - Validates web-search feature support (warning) // - validateWorkflowRunBranches() - Validates workflow_run has branch restrictions @@ -99,25 +98,6 @@ func (c *Compiler) validateAgentFile(workflowData *WorkflowData, markdownPath st return nil } -// validateHTTPTransportSupport validates that HTTP MCP servers are only used with engines that support HTTP transport -func (c *Compiler) validateHTTPTransportSupport(tools map[string]any, engine CodingAgentEngine) error { - if engine.SupportsHTTPTransport() { - // Engine supports HTTP transport, no validation needed - return nil - } - - // Engine doesn't support HTTP transport, check for HTTP MCP servers - for toolName, toolConfig := range tools { - if config, ok := toolConfig.(map[string]any); ok { - if hasMcp, mcpType := hasMCPConfig(config); hasMcp && mcpType == "http" { - return fmt.Errorf("tool '%s' uses HTTP transport which is not supported by engine '%s'. Only stdio transport is supported. Use a different engine (e.g., copilot) or change the tool to use stdio transport. Example:\ntools:\n %s:\n type: stdio\n command: \"node server.js\"", toolName, engine.GetID(), toolName) - } - } - } - - return nil -} - // validateMaxTurnsSupport validates that max-turns is only used with engines that support this feature func (c *Compiler) validateMaxTurnsSupport(frontmatter map[string]any, engine CodingAgentEngine) error { // Check if max-turns is specified in the engine config diff --git a/pkg/workflow/agentic_engine.go b/pkg/workflow/agentic_engine.go index 7b04954462b..72241b111fa 100644 --- a/pkg/workflow/agentic_engine.go +++ b/pkg/workflow/agentic_engine.go @@ -37,7 +37,6 @@ type GitHubActionStep []string // // CapabilityProvider (feature detection - optional) // ├── SupportsToolsAllowlist() -// ├── SupportsHTTPTransport() // ├── SupportsMaxTurns() // ├── SupportsWebFetch() // ├── SupportsWebSearch() @@ -110,9 +109,6 @@ type CapabilityProvider interface { // SupportsToolsAllowlist returns true if this engine supports MCP tool allow-listing SupportsToolsAllowlist() bool - // SupportsHTTPTransport returns true if this engine supports HTTP transport for MCP servers - SupportsHTTPTransport() bool - // SupportsMaxTurns returns true if this engine supports the max-turns feature SupportsMaxTurns() bool @@ -205,7 +201,6 @@ type BaseEngine struct { description string experimental bool supportsToolsAllowlist bool - supportsHTTPTransport bool supportsMaxTurns bool supportsWebFetch bool supportsWebSearch bool @@ -234,10 +229,6 @@ func (e *BaseEngine) SupportsToolsAllowlist() bool { return e.supportsToolsAllowlist } -func (e *BaseEngine) SupportsHTTPTransport() bool { - return e.supportsHTTPTransport -} - func (e *BaseEngine) SupportsMaxTurns() bool { return e.supportsMaxTurns } diff --git a/pkg/workflow/agentic_engine_interfaces_test.go b/pkg/workflow/agentic_engine_interfaces_test.go index ae755d86562..b1d0eef132e 100644 --- a/pkg/workflow/agentic_engine_interfaces_test.go +++ b/pkg/workflow/agentic_engine_interfaces_test.go @@ -52,7 +52,6 @@ func TestInterfaceSegregation(t *testing.T) { // Test capability methods (values can be true/false, just verify they exist) _ = engine.SupportsToolsAllowlist() - _ = engine.SupportsHTTPTransport() _ = engine.SupportsMaxTurns() _ = engine.SupportsWebFetch() _ = engine.SupportsWebSearch() @@ -211,7 +210,6 @@ func TestSpecificInterfaceUsage(t *testing.T) { checkCapabilities := func(cp CapabilityProvider) map[string]bool { return map[string]bool{ "tools_allowlist": cp.SupportsToolsAllowlist(), - "http_transport": cp.SupportsHTTPTransport(), "max_turns": cp.SupportsMaxTurns(), "web_fetch": cp.SupportsWebFetch(), "web_search": cp.SupportsWebSearch(), @@ -258,7 +256,6 @@ func TestBaseEngineImplementsAllInterfaces(t *testing.T) { description: "A test engine", experimental: false, supportsToolsAllowlist: true, - supportsHTTPTransport: true, supportsMaxTurns: true, supportsWebFetch: true, supportsWebSearch: true, @@ -273,7 +270,6 @@ func TestBaseEngineImplementsAllInterfaces(t *testing.T) { // Verify CapabilityProvider interface methods assert.True(t, base.SupportsToolsAllowlist()) - assert.True(t, base.SupportsHTTPTransport()) assert.True(t, base.SupportsMaxTurns()) assert.True(t, base.SupportsWebFetch()) assert.True(t, base.SupportsWebSearch()) @@ -304,7 +300,6 @@ func TestEngineCapabilityVariety(t *testing.T) { // Test that capabilities differ across engines t.Run("copilot capabilities", func(t *testing.T) { assert.True(t, copilot.SupportsToolsAllowlist()) - assert.True(t, copilot.SupportsHTTPTransport()) assert.False(t, copilot.SupportsMaxTurns()) assert.True(t, copilot.SupportsWebFetch()) assert.False(t, copilot.SupportsWebSearch()) @@ -314,7 +309,6 @@ func TestEngineCapabilityVariety(t *testing.T) { t.Run("claude capabilities", func(t *testing.T) { assert.True(t, claude.SupportsToolsAllowlist()) - assert.True(t, claude.SupportsHTTPTransport()) assert.True(t, claude.SupportsMaxTurns()) assert.True(t, claude.SupportsWebFetch()) assert.True(t, claude.SupportsWebSearch()) @@ -324,7 +318,6 @@ func TestEngineCapabilityVariety(t *testing.T) { t.Run("codex capabilities", func(t *testing.T) { assert.True(t, codex.SupportsToolsAllowlist()) - assert.True(t, codex.SupportsHTTPTransport()) assert.False(t, codex.SupportsMaxTurns()) assert.False(t, codex.SupportsWebFetch()) assert.True(t, codex.SupportsWebSearch()) @@ -334,7 +327,6 @@ func TestEngineCapabilityVariety(t *testing.T) { t.Run("custom capabilities", func(t *testing.T) { assert.False(t, custom.SupportsToolsAllowlist()) - assert.False(t, custom.SupportsHTTPTransport()) assert.True(t, custom.SupportsMaxTurns()) assert.False(t, custom.SupportsWebFetch()) assert.False(t, custom.SupportsWebSearch()) diff --git a/pkg/workflow/claude_engine.go b/pkg/workflow/claude_engine.go index 4a4416054d9..de29fefa1d3 100644 --- a/pkg/workflow/claude_engine.go +++ b/pkg/workflow/claude_engine.go @@ -24,7 +24,6 @@ func NewClaudeEngine() *ClaudeEngine { description: "Uses Claude Code with full MCP tool support and allow-listing", experimental: false, supportsToolsAllowlist: true, - supportsHTTPTransport: true, // Claude supports both stdio and HTTP transport supportsMaxTurns: true, // Claude supports max-turns feature supportsWebFetch: true, // Claude has built-in WebFetch support supportsWebSearch: true, // Claude has built-in WebSearch support diff --git a/pkg/workflow/codex_engine.go b/pkg/workflow/codex_engine.go index ee704318c8a..475895a3c40 100644 --- a/pkg/workflow/codex_engine.go +++ b/pkg/workflow/codex_engine.go @@ -36,7 +36,6 @@ func NewCodexEngine() *CodexEngine { description: "Uses OpenAI Codex CLI with MCP server support", experimental: false, supportsToolsAllowlist: true, - supportsHTTPTransport: true, // Codex now supports HTTP transport for remote MCP servers supportsMaxTurns: false, // Codex does not support max-turns feature supportsWebFetch: false, // Codex does not have built-in web-fetch support supportsWebSearch: true, // Codex has built-in web-search support diff --git a/pkg/workflow/compiler_orchestrator_tools.go b/pkg/workflow/compiler_orchestrator_tools.go index 77416bf8dbb..bf8515a62c0 100644 --- a/pkg/workflow/compiler_orchestrator_tools.go +++ b/pkg/workflow/compiler_orchestrator_tools.go @@ -214,12 +214,6 @@ func (c *Compiler) processToolsAndMarkdown(result *parser.FrontmatterResult, cle return nil, err } - // Validate HTTP transport support for the current engine - if err := c.validateHTTPTransportSupport(tools, agenticEngine); err != nil { - orchestratorToolsLog.Printf("HTTP transport validation failed: %v", err) - return nil, err - } - if !agenticEngine.SupportsToolsAllowlist() { // For engines that don't support tool allowlists (like custom engine), ignore tools section and provide warnings fmt.Fprintln(os.Stderr, console.FormatWarningMessage(fmt.Sprintf("Using experimental %s support (engine: %s)", agenticEngine.GetDisplayName(), agenticEngine.GetID()))) diff --git a/pkg/workflow/compiler_yaml.go b/pkg/workflow/compiler_yaml.go index 30b20cdbe7a..dc1a5280152 100644 --- a/pkg/workflow/compiler_yaml.go +++ b/pkg/workflow/compiler_yaml.go @@ -466,7 +466,6 @@ func (c *Compiler) generateCreateAwInfo(yaml *strings.Builder, data *WorkflowDat fmt.Fprintf(yaml, " workflow_name: \"%s\",\n", data.Name) fmt.Fprintf(yaml, " experimental: %t,\n", engine.IsExperimental()) fmt.Fprintf(yaml, " supports_tools_allowlist: %t,\n", engine.SupportsToolsAllowlist()) - fmt.Fprintf(yaml, " supports_http_transport: %t,\n", engine.SupportsHTTPTransport()) // Run metadata yaml.WriteString(" run_id: context.runId,\n") diff --git a/pkg/workflow/copilot_engine.go b/pkg/workflow/copilot_engine.go index 03cf3ae8516..dfcf1531938 100644 --- a/pkg/workflow/copilot_engine.go +++ b/pkg/workflow/copilot_engine.go @@ -39,7 +39,6 @@ func NewCopilotEngine() *CopilotEngine { description: "Uses GitHub Copilot CLI with MCP server support", experimental: false, supportsToolsAllowlist: true, - supportsHTTPTransport: true, // Copilot CLI supports HTTP transport via MCP supportsMaxTurns: false, // Copilot CLI does not support max-turns feature yet supportsWebFetch: true, // Copilot CLI has built-in web-fetch support supportsWebSearch: false, // Copilot CLI does not have built-in web-search support diff --git a/pkg/workflow/copilot_engine_test.go b/pkg/workflow/copilot_engine_test.go index 3cfd545a643..408e515d893 100644 --- a/pkg/workflow/copilot_engine_test.go +++ b/pkg/workflow/copilot_engine_test.go @@ -34,10 +34,6 @@ func TestCopilotEngine(t *testing.T) { t.Error("Expected copilot engine to support tools allowlist") } - if !engine.SupportsHTTPTransport() { - t.Error("Expected copilot engine to support HTTP transport") - } - if engine.SupportsMaxTurns() { t.Error("Expected copilot engine to not support max-turns yet") } diff --git a/pkg/workflow/copilot_sdk_engine.go b/pkg/workflow/copilot_sdk_engine.go index c7d21caff5a..95351f275f1 100644 --- a/pkg/workflow/copilot_sdk_engine.go +++ b/pkg/workflow/copilot_sdk_engine.go @@ -41,7 +41,6 @@ func NewCopilotSDKEngine() *CopilotSDKEngine { description: "Uses GitHub Copilot SDK with headless mode", experimental: true, supportsToolsAllowlist: true, - supportsHTTPTransport: true, supportsMaxTurns: false, supportsWebFetch: true, supportsWebSearch: false, diff --git a/pkg/workflow/copilot_sdk_engine_test.go b/pkg/workflow/copilot_sdk_engine_test.go index 2068bf25b8b..4b9edab658b 100644 --- a/pkg/workflow/copilot_sdk_engine_test.go +++ b/pkg/workflow/copilot_sdk_engine_test.go @@ -26,7 +26,6 @@ func TestCopilotSDKEngineCapabilities(t *testing.T) { // Test CapabilityProvider interface assert.True(t, engine.SupportsToolsAllowlist()) - assert.True(t, engine.SupportsHTTPTransport()) assert.False(t, engine.SupportsMaxTurns()) assert.True(t, engine.SupportsWebFetch()) assert.False(t, engine.SupportsWebSearch()) diff --git a/pkg/workflow/custom_engine.go b/pkg/workflow/custom_engine.go index 05284664927..9d70e108310 100644 --- a/pkg/workflow/custom_engine.go +++ b/pkg/workflow/custom_engine.go @@ -22,7 +22,6 @@ func NewCustomEngine() *CustomEngine { description: "Executes user-defined GitHub Actions steps", experimental: false, supportsToolsAllowlist: false, - supportsHTTPTransport: false, supportsMaxTurns: true, // Custom engine supports max-turns for consistency supportsWebFetch: false, // Custom engine does not have built-in web-fetch support supportsWebSearch: false, // Custom engine does not have built-in web-search support diff --git a/pkg/workflow/custom_engine_test.go b/pkg/workflow/custom_engine_test.go index c12b411dc43..a29c583bba0 100644 --- a/pkg/workflow/custom_engine_test.go +++ b/pkg/workflow/custom_engine_test.go @@ -88,10 +88,6 @@ func TestCustomEngine(t *testing.T) { t.Error("Expected custom engine to not support tools allowlist") } - if engine.SupportsHTTPTransport() { - t.Error("Expected custom engine to not support HTTP transport") - } - if !engine.SupportsMaxTurns() { t.Error("Expected custom engine to support max turns for consistency with other engines") } diff --git a/pkg/workflow/safe_inputs_renderer.go b/pkg/workflow/safe_inputs_renderer.go index 5b8a8d7d1cb..d4273a77c0e 100644 --- a/pkg/workflow/safe_inputs_renderer.go +++ b/pkg/workflow/safe_inputs_renderer.go @@ -73,7 +73,7 @@ func collectSafeInputsSecrets(safeInputs *SafeInputsConfig) map[string]string { } // renderSafeInputsMCPConfigWithOptions generates the Safe Inputs MCP server configuration with engine-specific options -// Only supports HTTP transport mode +// Always uses HTTP transport mode func renderSafeInputsMCPConfigWithOptions(yaml *strings.Builder, safeInputs *SafeInputsConfig, isLast bool, includeCopilotFields bool, workflowData *WorkflowData) { safeInputsRendererLog.Printf("Rendering Safe Inputs MCP config: includeCopilotFields=%t, isLast=%t", includeCopilotFields, isLast) From f21d8a1d9d88809a78a3e73223eefc7a896955e3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 16 Feb 2026 01:37:15 +0000 Subject: [PATCH 3/4] Fix test to expect 5 capability flags instead of 6 Updated TestSpecificInterfaceUsage to expect 5 capability flags after removing SupportsHTTPTransport Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- pkg/workflow/agentic_engine_interfaces_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/workflow/agentic_engine_interfaces_test.go b/pkg/workflow/agentic_engine_interfaces_test.go index b1d0eef132e..3f1a76f6893 100644 --- a/pkg/workflow/agentic_engine_interfaces_test.go +++ b/pkg/workflow/agentic_engine_interfaces_test.go @@ -221,7 +221,7 @@ func TestSpecificInterfaceUsage(t *testing.T) { for _, engine := range registry.GetAllEngines() { caps := checkCapabilities(engine) assert.NotNil(t, caps, "Engine %s should have capabilities", engine.GetID()) - assert.Len(t, caps, 6, "Should have 6 capability flags") + assert.Len(t, caps, 5, "Should have 5 capability flags") } }) From 5753f139eb5df3558ecde0a157a508264ec8aa41 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 16 Feb 2026 01:38:31 +0000 Subject: [PATCH 4/4] Remove supportsHTTPTransport reference from scratchpad documentation Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- .github/workflows/ai-moderator.lock.yml | 1 - scratchpad/mdflow.md | 1 - 2 files changed, 2 deletions(-) diff --git a/.github/workflows/ai-moderator.lock.yml b/.github/workflows/ai-moderator.lock.yml index c6e3e1778bd..636fd9d6b6c 100644 --- a/.github/workflows/ai-moderator.lock.yml +++ b/.github/workflows/ai-moderator.lock.yml @@ -180,7 +180,6 @@ jobs: workflow_name: "AI Moderator", experimental: false, supports_tools_allowlist: true, - supports_http_transport: true, run_id: context.runId, run_number: context.runNumber, run_attempt: process.env.GITHUB_RUN_ATTEMPT, diff --git a/scratchpad/mdflow.md b/scratchpad/mdflow.md index c65d9af95a0..bb901876785 100644 --- a/scratchpad/mdflow.md +++ b/scratchpad/mdflow.md @@ -844,7 +844,6 @@ func NewMdflowCompatEngine() *MdflowCompatEngine { description: "Run mdflow-style workflows with gh-aw safety", experimental: true, supportsToolsAllowlist: true, - supportsHTTPTransport: false, supportsMaxTurns: true, supportsWebFetch: false, supportsWebSearch: false,