@@ -116,6 +116,45 @@ pub struct GitHubConfig {
116116 pub webhook_secret : Option < String > ,
117117}
118118
119+ #[ derive( Debug , Clone , Serialize , Deserialize , Default ) ]
120+ pub struct JiraConfig {
121+ #[ serde( default , rename = "jira_base_url" ) ]
122+ pub base_url : Option < String > ,
123+
124+ #[ serde( default , rename = "jira_email" ) ]
125+ pub email : Option < String > ,
126+
127+ #[ serde( default , rename = "jira_api_token" ) ]
128+ pub api_token : Option < String > ,
129+ }
130+
131+ #[ derive( Debug , Clone , Serialize , Deserialize , Default ) ]
132+ pub struct LinearConfig {
133+ #[ serde( default , rename = "linear_api_key" ) ]
134+ pub api_key : Option < String > ,
135+ }
136+
137+ #[ derive( Debug , Clone , Serialize , Deserialize , PartialEq , Eq , Hash ) ]
138+ #[ serde( rename_all = "snake_case" ) ]
139+ pub enum LinkedIssueProvider {
140+ Jira ,
141+ Linear ,
142+ }
143+
144+ #[ derive( Debug , Clone , Serialize , Deserialize , PartialEq , Eq ) ]
145+ pub struct LinkedIssueContext {
146+ pub provider : LinkedIssueProvider ,
147+ pub identifier : String ,
148+ #[ serde( default ) ]
149+ pub title : Option < String > ,
150+ #[ serde( default ) ]
151+ pub status : Option < String > ,
152+ #[ serde( default ) ]
153+ pub url : Option < String > ,
154+ #[ serde( default ) ]
155+ pub summary : String ,
156+ }
157+
119158#[ derive( Debug , Clone , Serialize , Deserialize , Default ) ]
120159pub struct AutomationConfig {
121160 /// Outbound webhook URL for downstream automation consumers.
@@ -459,6 +498,9 @@ pub struct Config {
459498 #[ serde( default ) ]
460499 pub custom_context : Vec < CustomContextConfig > ,
461500
501+ #[ serde( default , skip_serializing_if = "Vec::is_empty" ) ]
502+ pub linked_issue_contexts : Vec < LinkedIssueContext > ,
503+
462504 #[ serde( default ) ]
463505 pub pattern_repositories : Vec < PatternRepositoryConfig > ,
464506
@@ -477,6 +519,12 @@ pub struct Config {
477519 #[ serde( default , flatten) ]
478520 pub github : GitHubConfig ,
479521
522+ #[ serde( default , flatten) ]
523+ pub jira : JiraConfig ,
524+
525+ #[ serde( default , flatten) ]
526+ pub linear : LinearConfig ,
527+
480528 #[ serde( default , flatten) ]
481529 pub automation : AutomationConfig ,
482530
@@ -679,12 +727,15 @@ impl Default for Config {
679727 exclude_patterns : default_exclude_patterns ( ) ,
680728 paths : HashMap :: new ( ) ,
681729 custom_context : Vec :: new ( ) ,
730+ linked_issue_contexts : Vec :: new ( ) ,
682731 pattern_repositories : Vec :: new ( ) ,
683732 rules_files : Vec :: new ( ) ,
684733 max_active_rules : default_max_active_rules ( ) ,
685734 rule_priority : Vec :: new ( ) ,
686735 providers : HashMap :: new ( ) ,
687736 github : GitHubConfig :: default ( ) ,
737+ jira : JiraConfig :: default ( ) ,
738+ linear : LinearConfig :: default ( ) ,
688739 automation : AutomationConfig :: default ( ) ,
689740 server_security : ServerSecurityConfig :: default ( ) ,
690741 multi_pass_specialized : false ,
0 commit comments