MCPcopy Create free account
hub / github.com/github/gh-aw / validateCoreToolConfiguration

Method validateCoreToolConfiguration

pkg/workflow/compiler_validators.go:148–193  ·  view source on GitHub ↗
(workflowData *WorkflowData, markdownPath string)

Source from the content-addressed store, hash-verified

146}
147
148func (c *Compiler) validateCoreToolConfiguration(workflowData *WorkflowData, markdownPath string) error {
149 validations := []struct {
150 logMessage string
151 validateFn func() error
152 }{
153 {logMessage: "Validating sandbox configuration", validateFn: func() error { return validateSandboxConfig(workflowData) }},
154 {logMessage: "Validating safe-outputs target fields", validateFn: func() error { return validateSafeOutputsTarget(workflowData.SafeOutputs) }},
155 {logMessage: "Validating safe-outputs max fields", validateFn: func() error { return validateSafeOutputsMax(workflowData.SafeOutputs) }},
156 {logMessage: "Validating safe-outputs samples entries against MCP tool schemas", validateFn: func() error { return validateSafeOutputsSamples(workflowData.SafeOutputs) }},
157 {logMessage: "Validating safe-outputs urls policy", validateFn: func() error { return validateSafeOutputsURLs(workflowData.SafeOutputs) }},
158 {logMessage: "Validating safe-outputs allowed-domains", validateFn: func() error { return c.validateSafeOutputsAllowedDomains(workflowData.SafeOutputs) }},
159 {logMessage: "Validating safe-outputs merge-pull-request", validateFn: func() error { return validateSafeOutputsMergePullRequest(workflowData.SafeOutputs) }},
160 {logMessage: "Validating safe-outputs needs declarations", validateFn: func() error { return validateSafeOutputsNeeds(workflowData) }},
161 {logMessage: "Validating on.needs declarations", validateFn: func() error { return c.validateOnNeeds(workflowData) }},
162 {logMessage: "Validating safe-job needs declarations", validateFn: func() error { return validateSafeJobNeeds(workflowData) }},
163 {logMessage: "Validating safe-outputs allowed-labels glob scope", validateFn: func() error { return c.validateSafeOutputsAllowedLabelsGlobScope(workflowData.SafeOutputs) }},
164 {logMessage: "Validating network allowed domains", validateFn: func() error { return c.validateNetworkAllowedDomains(workflowData.NetworkPermissions) }},
165 {logMessage: "Validating network firewall configuration", validateFn: func() error { return validateNetworkFirewallConfig(workflowData.NetworkPermissions) }},
166 {logMessage: "Validating safe-outputs allow-workflows", validateFn: func() error { return validateSafeOutputsAllowWorkflows(workflowData.SafeOutputs) }},
167 {logMessage: "Validating OTLP resource attributes", validateFn: func() error { return validateOTLPResourceAttributes(workflowData) }},
168 {logMessage: "Validating labels", validateFn: func() error { return validateLabels(workflowData) }},
169 {logMessage: "Validating workflow_dispatch input requirements for command triggers", validateFn: func() error { return validateCommandWorkflowDispatchInputs(workflowData) }},
170 {logMessage: "Validating max-daily-ai-credits frontmatter", validateFn: func() error { return validateMaxDailyAICFrontmatter(workflowData) }},
171 }
172 // This validation is intentionally outside the table below because strict mode
173 // turns the same validation result into either an error or a warning.
174 workflowLog.Printf("Validating safe-outputs steps for shell expansion patterns")
175 if err := validateSafeOutputsStepsShellExpansion(workflowData.SafeOutputs); err != nil {
176 if c.strictMode {
177 return formatCompilerError(markdownPath, "error", err.Error(), err)
178 }
179 fmt.Fprintln(os.Stderr, formatCompilerMessage(markdownPath, "warning", err.Error()))
180 c.IncrementWarningCount()
181 }
182 workflowLog.Printf("Validating cross-repo checkout paths")
183 c.deriveAndWarnCrossRepoCheckoutPaths(workflowData.CheckoutConfigs, markdownPath)
184 workflowLog.Printf("Validating push-to-pull-request-branch configuration")
185 c.validatePushToPullRequestBranchWarnings(workflowData.SafeOutputs, workflowData.CheckoutConfigs)
186 for _, validation := range validations {
187 workflowLog.Printf("%s", validation.logMessage)
188 if err := validation.validateFn(); err != nil {
189 return formatCompilerError(markdownPath, "error", err.Error(), err)
190 }
191 }
192 return nil
193}
194
195func (c *Compiler) validateThreatDetectionSandboxRequirement(workflowData *WorkflowData, markdownPath string) error {
196 if workflowData.SafeOutputs != nil && workflowData.SafeOutputs.ThreatDetection != nil && isAgentSandboxDisabled(workflowData) {

Callers 1

Tested by

no test coverage detected