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

Method extractSafeOutputsConfig

pkg/workflow/safe_outputs_config.go:58–811  ·  view source on GitHub ↗

======================================== Safe Output Configuration Extraction ======================================== ## Schema Generation Architecture MCP tool schemas for Safe Outputs are managed through a hybrid approach: ### Static Schemas (30+ built-in safe output types) Defined in: pkg/wor

(frontmatter map[string]any)

Source from the content-addressed store, hash-verified

56
57// extractSafeOutputsConfig extracts output configuration from frontmatter
58func (c *Compiler) extractSafeOutputsConfig(frontmatter map[string]any) *SafeOutputsConfig {
59 safeOutputsConfigLog.Print("Extracting safe-outputs configuration from frontmatter")
60
61 var config *SafeOutputsConfig
62
63 if output, exists := frontmatter["safe-outputs"]; exists {
64 if outputMap, ok := output.(map[string]any); ok {
65 safeOutputsConfigLog.Printf("Processing safe-outputs configuration with %d top-level keys", len(outputMap))
66 config = &SafeOutputsConfig{}
67
68 // Handle create-issue
69 issuesConfig := c.parseCreateIssuesConfig(outputMap)
70 if issuesConfig != nil {
71 safeOutputsConfigLog.Print("Configured create-issue output handler")
72 config.CreateIssues = issuesConfig
73 }
74
75 // Handle create-agent-session
76 agentSessionConfig := c.parseAgentSessionConfig(outputMap)
77 if agentSessionConfig != nil {
78 config.CreateAgentSessions = agentSessionConfig
79 }
80
81 // Handle update-project (smart project board management)
82 updateProjectConfig := c.parseUpdateProjectConfig(outputMap)
83 if updateProjectConfig != nil {
84 config.UpdateProjects = updateProjectConfig
85 }
86
87 // Handle create-project
88 createProjectConfig := c.parseCreateProjectsConfig(outputMap)
89 if createProjectConfig != nil {
90 config.CreateProjects = createProjectConfig
91 }
92
93 // Handle create-project-status-update (project status updates)
94 createProjectStatusUpdateConfig := c.parseCreateProjectStatusUpdateConfig(outputMap)
95 if createProjectStatusUpdateConfig != nil {
96 config.CreateProjectStatusUpdates = createProjectStatusUpdateConfig
97 }
98
99 // Handle create-discussion
100 discussionsConfig := c.parseCreateDiscussionsConfig(outputMap)
101 if discussionsConfig != nil {
102 config.CreateDiscussions = discussionsConfig
103 }
104
105 // Handle close-discussion
106 closeDiscussionsConfig := c.parseCloseDiscussionsConfig(outputMap)
107 if closeDiscussionsConfig != nil {
108 config.CloseDiscussions = closeDiscussionsConfig
109 }
110
111 // Handle close-issue
112 closeIssuesConfig := c.parseCloseIssuesConfig(outputMap)
113 if closeIssuesConfig != nil {
114 config.CloseIssues = closeIssuesConfig
115 }