@@ -1737,6 +1737,31 @@ const CTO_LINEAR_SYNC_TOOL_SPECS: ToolSpec[] = [
17371737 description : "Read a compact Linear workspace, project, and issue quick view through the connected Linear SDK account." ,
17381738 inputSchema : { type : "object" , additionalProperties : false , properties : { } }
17391739 } ,
1740+ {
1741+ name : "getLinearIssuePickerData" ,
1742+ description : "Read the projects, users, and workflow states needed to populate the Linear issue picker for lane creation." ,
1743+ inputSchema : { type : "object" , additionalProperties : false , properties : { } }
1744+ } ,
1745+ {
1746+ name : "searchLinearIssues" ,
1747+ description : "Search Linear issues for the lane Linear-issue picker, filtered by project, team, state, assignee, priority, or text query." ,
1748+ inputSchema : {
1749+ type : "object" ,
1750+ additionalProperties : false ,
1751+ properties : {
1752+ projectId : { anyOf : [ { type : "string" } , { type : "null" } ] } ,
1753+ projectSlug : { anyOf : [ { type : "string" } , { type : "null" } ] } ,
1754+ teamKey : { anyOf : [ { type : "string" } , { type : "null" } ] } ,
1755+ stateTypes : { type : "array" , items : { type : "string" } } ,
1756+ assigneeId : { anyOf : [ { type : "string" } , { type : "null" } ] } ,
1757+ priority : { anyOf : [ { type : "number" } , { type : "null" } ] } ,
1758+ query : { anyOf : [ { type : "string" } , { type : "null" } ] } ,
1759+ first : { type : "number" , minimum : 1 , maximum : 200 } ,
1760+ after : { anyOf : [ { type : "string" } , { type : "null" } ] } ,
1761+ includeArchived : { type : "boolean" }
1762+ }
1763+ }
1764+ } ,
17401765 {
17411766 name : "getLinearSyncDashboard" ,
17421767 description : "Read the ADE Linear sync dashboard." ,
@@ -1961,6 +1986,8 @@ const READ_ONLY_TOOLS = new Set([
19611986 "getChatStatus" ,
19621987 "readChatTranscript" ,
19631988 "getLinearQuickView" ,
1989+ "getLinearIssuePickerData" ,
1990+ "searchLinearIssues" ,
19641991 "listLinearWorkflows" ,
19651992 "getLinearRunStatus" ,
19661993 "getLinearSyncDashboard" ,
@@ -4352,6 +4379,35 @@ async function runTool(args: {
43524379 }
43534380 }
43544381
4382+ if ( name === "getLinearIssuePickerData" ) {
4383+ const tracker = requireLinearIssueTracker ( runtime ) ;
4384+ const [ projects , users , states ] = await Promise . all ( [
4385+ tracker . listProjects ( ) . catch ( ( ) => [ ] ) ,
4386+ tracker . listUsers ( ) . catch ( ( ) => [ ] ) ,
4387+ tracker . listWorkflowStates ( ) . catch ( ( ) => [ ] ) ,
4388+ ] ) ;
4389+ return { projects, users, states } ;
4390+ }
4391+
4392+ if ( name === "searchLinearIssues" ) {
4393+ const tracker = requireLinearIssueTracker ( runtime ) ;
4394+ const stateTypes = Array . isArray ( toolArgs . stateTypes )
4395+ ? assertStringArray ( toolArgs . stateTypes , "stateTypes" )
4396+ : [ ] ;
4397+ return await tracker . searchIssues ( {
4398+ projectId : assertOptionalStringOrNull ( toolArgs . projectId ?? null , "projectId" ) ,
4399+ projectSlug : assertOptionalStringOrNull ( toolArgs . projectSlug ?? null , "projectSlug" ) ,
4400+ teamKey : assertOptionalStringOrNull ( toolArgs . teamKey ?? null , "teamKey" ) ,
4401+ stateTypes,
4402+ assigneeId : assertOptionalStringOrNull ( toolArgs . assigneeId ?? null , "assigneeId" ) ,
4403+ priority : assertOptionalNumberOrNull ( toolArgs . priority ?? null , "priority" ) ,
4404+ query : assertOptionalStringOrNull ( toolArgs . query ?? null , "query" ) ,
4405+ first : typeof toolArgs . first === "number" ? toolArgs . first : 50 ,
4406+ after : assertOptionalStringOrNull ( toolArgs . after ?? null , "after" ) ,
4407+ includeArchived : asBoolean ( toolArgs . includeArchived , false ) ,
4408+ } ) ;
4409+ }
4410+
43554411 if ( name === "getLinearSyncDashboard" ) {
43564412 return requireLinearSyncService ( runtime ) . getDashboard ( ) ;
43574413 }
0 commit comments