@elizaos/plugin-linear 1.2.10 → 1.2.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -4,10 +4,20 @@ A comprehensive Linear integration plugin for ElizaOS that enables issue trackin
4
4
 
5
5
  ## Features
6
6
 
7
+ ### 🤖 Natural Language Understanding
8
+ All actions now support advanced natural language parsing powered by LLM:
9
+ - **Flexible References**: Reference issues by ID, title keywords, assignee, or recency
10
+ - **Smart Filtering**: Use natural language for complex searches and filters
11
+ - **Context Awareness**: Understands relative references like "my issues" or "today's activity"
12
+ - **Graceful Fallbacks**: Falls back to pattern matching when LLM parsing fails
13
+
14
+ ## Core Features
15
+
7
16
  ### 📋 Issue Management
8
17
  - **Create Issues**: Create new issues with title, description, priority, assignees, and labels
9
18
  - **Get Issue Details**: Retrieve comprehensive information about specific issues
10
19
  - **Update Issues**: Modify existing issues with new information
20
+ - **Delete Issues**: Archive issues (move to archived state)
11
21
  - **Search Issues**: Find issues using various filters and search criteria
12
22
  - **Add Comments**: Comment on existing issues
13
23
 
@@ -47,8 +57,23 @@ LINEAR_API_KEY=your_linear_api_key_here
47
57
 
48
58
  # Optional
49
59
  LINEAR_WORKSPACE_ID=your_workspace_id_here
60
+ LINEAR_DEFAULT_TEAM_KEY=your_default_team_key_here # e.g., ENG, ELIZA, COM2
50
61
  ```
51
62
 
63
+ ### Default Team Behavior
64
+
65
+ When `LINEAR_DEFAULT_TEAM_KEY` is configured, it affects the following actions:
66
+
67
+ - **Create Issue**: New issues will be assigned to the default team if no team is specified
68
+ - **Search Issues**: Searches will be filtered by the default team unless:
69
+ - A team filter is explicitly provided
70
+ - The user asks for "all" issues
71
+ - **List Projects**: Projects will be filtered by the default team unless:
72
+ - A specific team is mentioned
73
+ - The user asks for "all" projects
74
+
75
+ This helps ensure that actions are scoped to the most relevant team by default while still allowing users to access all data when needed.
76
+
52
77
  ## Usage
53
78
 
54
79
  ### Register the Plugin
@@ -82,8 +107,11 @@ agent.registerPlugin(linearPlugin);
82
107
 
83
108
  #### Get Issue
84
109
  ```typescript
85
- // Natural language
86
- "Show me issue ENG-123"
110
+ // Natural language examples
111
+ "Show me issue ENG-123" // Direct ID
112
+ "What's the status of the login bug?" // Search by title
113
+ "Show me the latest high priority issue assigned to Sarah" // Complex query
114
+ "Get John's most recent task" // Assignee + recency
87
115
 
88
116
  // With options
89
117
  {
@@ -97,7 +125,9 @@ agent.registerPlugin(linearPlugin);
97
125
  #### Search Issues
98
126
  ```typescript
99
127
  // Natural language
100
- "Show me all high priority bugs assigned to me"
128
+ "Show me all high priority bugs assigned to me" // Uses default team if configured
129
+ "Show me all issues across all teams" // Searches all teams
130
+ "Show me issues in the ELIZA team" // Searches specific team
101
131
 
102
132
  // With options
103
133
  {
@@ -106,6 +136,7 @@ agent.registerPlugin(linearPlugin);
106
136
  query: "bug",
107
137
  priority: [1, 2], // Urgent and High
108
138
  state: ["in-progress", "todo"],
139
+ team: "ELIZA", // Override default team
109
140
  limit: 20
110
141
  }
111
142
  }
@@ -113,22 +144,53 @@ agent.registerPlugin(linearPlugin);
113
144
 
114
145
  #### Update Issue
115
146
  ```typescript
147
+ // Natural language examples
148
+ "Update issue ENG-123 title to 'Fix login button on all devices'"
149
+ "Move issue COM2-7 to the ELIZA team"
150
+ "Change the priority of BUG-456 to high and assign to john@example.com"
151
+ "Update issue PROD-789 status to in-progress"
152
+
116
153
  // With options
117
154
  {
118
155
  action: "UPDATE_LINEAR_ISSUE",
119
156
  options: {
120
157
  issueId: "issue-id",
121
158
  title: "Updated title",
122
- priority: 1,
123
- stateId: "state-id"
159
+ description: "Updated description",
160
+ priority: 1, // 1=urgent, 2=high, 3=normal, 4=low
161
+ teamId: "team-id", // Move to different team
162
+ assigneeId: "user-id",
163
+ stateId: "state-id",
164
+ labelIds: ["label-id-1", "label-id-2"]
124
165
  }
125
166
  }
126
167
  ```
127
168
 
128
- #### Add Comment
169
+ #### Delete Issue
129
170
  ```typescript
130
171
  // Natural language
172
+ "Delete issue ENG-123"
173
+ "Remove COM2-7 from Linear"
174
+ "Archive the bug report BUG-456"
175
+
176
+ // With options
177
+ {
178
+ action: "DELETE_LINEAR_ISSUE",
179
+ options: {
180
+ issueId: "issue-id-or-identifier"
181
+ }
182
+ }
183
+ ```
184
+
185
+ > **Note**: Linear doesn't support permanent deletion. This action archives the issue, moving it to an archived state where it won't appear in active views.
186
+
187
+ #### Add Comment
188
+ ```typescript
189
+ // Natural language examples
131
190
  "Comment on ENG-123: This has been fixed in the latest release"
191
+ "Tell the login bug that we need more information from QA"
192
+ "Reply to COM2-7: Thanks for the update"
193
+ "Add a note to the payment issue saying it's blocked by API changes"
132
194
 
133
195
  // With options
134
196
  {
@@ -142,16 +204,21 @@ agent.registerPlugin(linearPlugin);
142
204
 
143
205
  #### List Teams
144
206
  ```typescript
145
- // Natural language
146
- "Show me all teams"
207
+ // Natural language examples
208
+ "Show me all teams" // Lists all teams
209
+ "Which engineering teams do we have?" // Filter by name
210
+ "Show me the teams I'm part of" // Personal teams
211
+ "Show me the ELIZA team details" // Specific team lookup
147
212
  ```
148
213
 
149
214
  #### List Projects
150
215
  ```typescript
151
216
  // Natural language
152
- "Show me all projects"
217
+ "Show me all projects" // Uses default team filter if configured
218
+ "Show me all projects across all teams" // Lists all projects
219
+ "Show me projects for the engineering team" // Lists projects for specific team
153
220
 
154
- // Filter by team
221
+ // With options
155
222
  {
156
223
  action: "LIST_LINEAR_PROJECTS",
157
224
  options: {
@@ -162,8 +229,12 @@ agent.registerPlugin(linearPlugin);
162
229
 
163
230
  #### Get Activity
164
231
  ```typescript
165
- // Natural language
166
- "Show me recent Linear activity"
232
+ // Natural language examples
233
+ "Show me recent Linear activity" // All recent activity
234
+ "What happened in Linear today?" // Time-based filter
235
+ "Show me what issues John created this week" // User + action + time
236
+ "Activity on ENG-123" // Resource-specific activity
237
+ "Show me failed operations" // Filter by success status
167
238
 
168
239
  // With options
169
240
  {
package/dist/index.d.ts CHANGED
@@ -73,6 +73,7 @@ declare class LinearService extends Service {
73
73
  createIssue(input: LinearIssueInput): Promise<Issue>;
74
74
  getIssue(issueId: string): Promise<Issue>;
75
75
  updateIssue(issueId: string, updates: Partial<LinearIssueInput>): Promise<Issue>;
76
+ deleteIssue(issueId: string): Promise<void>;
76
77
  searchIssues(filters: LinearSearchFilters): Promise<Issue[]>;
77
78
  createComment(input: LinearCommentInput): Promise<Comment>;
78
79
  getProjects(teamId?: string): Promise<Project[]>;