Skip to content
Closed
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
2 changes: 0 additions & 2 deletions pkg/cli/logs_firewall_parse_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,7 @@ package cli

import (
"os"
"os/exec"
"path/filepath"
"strings"
"testing"

"github.com/githubnext/gh-aw/pkg/testutil"
Expand Down
2 changes: 0 additions & 2 deletions pkg/cli/logs_parse_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,10 @@ package cli

import (
"os"
"os/exec"
"path/filepath"
"testing"

"github.com/githubnext/gh-aw/pkg/testutil"

"github.com/githubnext/gh-aw/pkg/workflow"
)

Expand Down
4 changes: 2 additions & 2 deletions pkg/cli/mcp_inspect_safe_inputs_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
package cli

import (
"testing"
"testing"
)

// SKIPPED: Scripts now use require() pattern and are loaded at runtime from external files
// TestSafeInputsMCPServerCompilation tests that safe-inputs are properly compiled
// into MCP server configurations for all three agentic engines
func TestSafeInputsMCPServerCompilation(t *testing.T) {
t.Skip("Test skipped - safe-inputs MCP server scripts now use require() pattern and are loaded at runtime from external files")
t.Skip("Test skipped - safe-inputs MCP server scripts now use require() pattern and are loaded at runtime from external files")
}
14 changes: 7 additions & 7 deletions pkg/workflow/jobs.go
Original file line number Diff line number Diff line change
Expand Up @@ -104,32 +104,32 @@ func (jm *JobManager) ValidateDependencies() error {
// This detects compiler bugs where the same step is added multiple times
func (jm *JobManager) ValidateDuplicateSteps() error {
jobLog.Printf("Validating for duplicate steps in %d jobs", len(jm.jobs))

for jobName, job := range jm.jobs {
if len(job.Steps) == 0 {
continue
}

// Track seen steps to detect duplicates
seen := make(map[string]int)

for i, step := range job.Steps {
// Extract step name from YAML for comparison
stepName := extractStepName(step)
if stepName == "" {
// Steps without names can't be checked for duplicates
continue
}

if firstIndex, exists := seen[stepName]; exists {
jobLog.Printf("Duplicate step detected in job '%s': step '%s' at positions %d and %d", jobName, stepName, firstIndex, i)
return fmt.Errorf("compiler bug: duplicate step '%s' found in job '%s' (positions %d and %d)", stepName, jobName, firstIndex, i)
}

seen[stepName] = i
}
}

jobLog.Print("No duplicate steps detected in any job")
return nil
}
Expand All @@ -145,7 +145,7 @@ func extractStepName(stepYAML string) string {
// Remove leading dash if present
trimmed = strings.TrimPrefix(trimmed, "-")
trimmed = strings.TrimSpace(trimmed)

if strings.HasPrefix(trimmed, "name:") {
// Extract the name value after "name:"
name := strings.TrimSpace(strings.TrimPrefix(trimmed, "name:"))
Expand Down
2 changes: 1 addition & 1 deletion pkg/workflow/jobs_duplicate_steps_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ func TestJobManager_ValidateDuplicateSteps_StepsWithoutNames(t *testing.T) {
RunsOn: "ubuntu-latest",
Steps: []string{
` - uses: actions/checkout@v4`, // No name
` - run: echo "Hello"`, // No name
` - run: echo "Hello"`, // No name
` - name: Named step
run: echo "World"`,
},
Expand Down
45 changes: 36 additions & 9 deletions pkg/workflow/js.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,33 @@ var jsLog = logger.New("workflow:js")
//go:embed js/safe_outputs_tools.json
var safeOutputsToolsJSONContent string

//go:embed js/read_buffer.cjs
var readBufferScript string

//go:embed js/mcp_http_transport.cjs
var mcpHTTPTransportScript string

//go:embed js/safe_inputs_config_loader.cjs
var safeInputsConfigLoaderScript string

//go:embed js/mcp_server_core.cjs
var mcpServerCoreScript string

//go:embed js/safe_inputs_validation.cjs
var safeInputsValidationScript string

//go:embed js/mcp_logger.cjs
var mcpLoggerScript string

//go:embed js/mcp_handler_shell.cjs
var mcpHandlerShellScript string

//go:embed js/mcp_handler_python.cjs
var mcpHandlerPythonScript string

//go:embed js/safe_inputs_mcp_server_http.cjs
var safeInputsMCPServerHTTPScript string

// init registers scripts from js.go with the DefaultScriptRegistry
// Note: Embedded scripts have been removed - scripts are now provided by actions/setup at runtime
func init() {
Expand Down Expand Up @@ -71,31 +98,31 @@ func GetSafeOutputsToolsJSON() string {
}

func GetReadBufferScript() string {
return ""
return readBufferScript
}

func GetMCPServerCoreScript() string {
return ""
return mcpServerCoreScript
}

func GetMCPHTTPTransportScript() string {
return ""
return mcpHTTPTransportScript
}

func GetMCPLoggerScript() string {
return ""
return mcpLoggerScript
}

func GetSafeInputsMCPServerScript() string {
return ""
}

func GetSafeInputsMCPServerHTTPScript() string {
return ""
return safeInputsMCPServerHTTPScript
}

func GetSafeInputsConfigLoaderScript() string {
return ""
return safeInputsConfigLoaderScript
}

func GetSafeInputsToolFactoryScript() string {
Expand All @@ -107,15 +134,15 @@ func GetSafeInputsBootstrapScript() string {
}

func GetSafeInputsValidationScript() string {
return ""
return safeInputsValidationScript
}

func GetMCPHandlerShellScript() string {
return ""
return mcpHandlerShellScript
}

func GetMCPHandlerPythonScript() string {
return ""
return mcpHandlerPythonScript
}

func GetSafeOutputsConfigScript() string {
Expand Down
Loading