@renseiai/agentfactory-linear 0.8.0

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.
Files changed (84) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +91 -0
  3. package/dist/src/agent-client-project-repo.test.d.ts +2 -0
  4. package/dist/src/agent-client-project-repo.test.d.ts.map +1 -0
  5. package/dist/src/agent-client-project-repo.test.js +153 -0
  6. package/dist/src/agent-client.d.ts +261 -0
  7. package/dist/src/agent-client.d.ts.map +1 -0
  8. package/dist/src/agent-client.js +902 -0
  9. package/dist/src/agent-session.d.ts +303 -0
  10. package/dist/src/agent-session.d.ts.map +1 -0
  11. package/dist/src/agent-session.js +969 -0
  12. package/dist/src/checkbox-utils.d.ts +88 -0
  13. package/dist/src/checkbox-utils.d.ts.map +1 -0
  14. package/dist/src/checkbox-utils.js +120 -0
  15. package/dist/src/circuit-breaker.d.ts +76 -0
  16. package/dist/src/circuit-breaker.d.ts.map +1 -0
  17. package/dist/src/circuit-breaker.js +229 -0
  18. package/dist/src/circuit-breaker.test.d.ts +2 -0
  19. package/dist/src/circuit-breaker.test.d.ts.map +1 -0
  20. package/dist/src/circuit-breaker.test.js +292 -0
  21. package/dist/src/constants.d.ts +87 -0
  22. package/dist/src/constants.d.ts.map +1 -0
  23. package/dist/src/constants.js +101 -0
  24. package/dist/src/defaults/auto-trigger.d.ts +35 -0
  25. package/dist/src/defaults/auto-trigger.d.ts.map +1 -0
  26. package/dist/src/defaults/auto-trigger.js +36 -0
  27. package/dist/src/defaults/index.d.ts +12 -0
  28. package/dist/src/defaults/index.d.ts.map +1 -0
  29. package/dist/src/defaults/index.js +11 -0
  30. package/dist/src/defaults/priority.d.ts +20 -0
  31. package/dist/src/defaults/priority.d.ts.map +1 -0
  32. package/dist/src/defaults/priority.js +37 -0
  33. package/dist/src/defaults/prompts.d.ts +42 -0
  34. package/dist/src/defaults/prompts.d.ts.map +1 -0
  35. package/dist/src/defaults/prompts.js +310 -0
  36. package/dist/src/defaults/prompts.test.d.ts +2 -0
  37. package/dist/src/defaults/prompts.test.d.ts.map +1 -0
  38. package/dist/src/defaults/prompts.test.js +263 -0
  39. package/dist/src/defaults/work-type-detection.d.ts +19 -0
  40. package/dist/src/defaults/work-type-detection.d.ts.map +1 -0
  41. package/dist/src/defaults/work-type-detection.js +93 -0
  42. package/dist/src/errors.d.ts +91 -0
  43. package/dist/src/errors.d.ts.map +1 -0
  44. package/dist/src/errors.js +173 -0
  45. package/dist/src/frontend-adapter.d.ts +168 -0
  46. package/dist/src/frontend-adapter.d.ts.map +1 -0
  47. package/dist/src/frontend-adapter.js +314 -0
  48. package/dist/src/frontend-adapter.test.d.ts +2 -0
  49. package/dist/src/frontend-adapter.test.d.ts.map +1 -0
  50. package/dist/src/frontend-adapter.test.js +545 -0
  51. package/dist/src/index.d.ts +28 -0
  52. package/dist/src/index.d.ts.map +1 -0
  53. package/dist/src/index.js +30 -0
  54. package/dist/src/issue-tracker-proxy.d.ts +140 -0
  55. package/dist/src/issue-tracker-proxy.d.ts.map +1 -0
  56. package/dist/src/issue-tracker-proxy.js +10 -0
  57. package/dist/src/platform-adapter.d.ts +132 -0
  58. package/dist/src/platform-adapter.d.ts.map +1 -0
  59. package/dist/src/platform-adapter.js +260 -0
  60. package/dist/src/platform-adapter.test.d.ts +2 -0
  61. package/dist/src/platform-adapter.test.d.ts.map +1 -0
  62. package/dist/src/platform-adapter.test.js +468 -0
  63. package/dist/src/proxy-client.d.ts +103 -0
  64. package/dist/src/proxy-client.d.ts.map +1 -0
  65. package/dist/src/proxy-client.js +191 -0
  66. package/dist/src/rate-limiter.d.ts +64 -0
  67. package/dist/src/rate-limiter.d.ts.map +1 -0
  68. package/dist/src/rate-limiter.js +163 -0
  69. package/dist/src/rate-limiter.test.d.ts +2 -0
  70. package/dist/src/rate-limiter.test.d.ts.map +1 -0
  71. package/dist/src/rate-limiter.test.js +217 -0
  72. package/dist/src/retry.d.ts +59 -0
  73. package/dist/src/retry.d.ts.map +1 -0
  74. package/dist/src/retry.js +82 -0
  75. package/dist/src/types.d.ts +492 -0
  76. package/dist/src/types.d.ts.map +1 -0
  77. package/dist/src/types.js +143 -0
  78. package/dist/src/utils.d.ts +52 -0
  79. package/dist/src/utils.d.ts.map +1 -0
  80. package/dist/src/utils.js +277 -0
  81. package/dist/src/webhook-types.d.ts +308 -0
  82. package/dist/src/webhook-types.d.ts.map +1 -0
  83. package/dist/src/webhook-types.js +46 -0
  84. package/package.json +70 -0
@@ -0,0 +1,303 @@
1
+ import type { Issue } from '@linear/sdk';
2
+ import type { AgentSessionState, AgentSessionConfig, CreateActivityOptions, AgentPlan, AgentPlanItem, AgentPlanItemState, SessionOperationResult, AgentActivityContentPayload, AgentActivitySignal, AgentActivityResult, IssueRelationResult, IssueRelationInfo } from './types.js';
3
+ import { type EnvironmentIssueType } from './constants.js';
4
+ import { type CheckboxItem, type CheckboxUpdate } from './checkbox-utils.js';
5
+ /**
6
+ * Agent Session Handler
7
+ * Manages the lifecycle of an agent working on a Linear issue
8
+ */
9
+ export declare class AgentSession {
10
+ private readonly client;
11
+ private readonly issueId;
12
+ private readonly autoTransition;
13
+ private readonly workType;
14
+ private sessionId;
15
+ private state;
16
+ private currentPlan;
17
+ private issue;
18
+ private activityLog;
19
+ constructor(config: AgentSessionConfig);
20
+ get currentState(): AgentSessionState;
21
+ get id(): string | null;
22
+ get plan(): AgentPlan;
23
+ get activities(): Array<{
24
+ type: string;
25
+ timestamp: Date;
26
+ content: string;
27
+ }>;
28
+ /**
29
+ * Add or update an external URL for the session
30
+ * External URLs appear in the Linear issue view, linking to dashboards, logs, or PRs
31
+ *
32
+ * @param label - Display label for the URL (e.g., "Pull Request", "Logs")
33
+ * @param url - The URL to link to
34
+ */
35
+ addExternalUrl(label: string, url: string): Promise<void>;
36
+ /**
37
+ * Set the pull request URL for this session
38
+ * This unlocks additional PR-related features in Linear
39
+ *
40
+ * @param prUrl - The GitHub pull request URL
41
+ * @see https://linear.app/developers/agents
42
+ */
43
+ setPullRequestUrl(prUrl: string): Promise<void>;
44
+ /**
45
+ * Start the agent session
46
+ *
47
+ * Transitions issue status based on work type:
48
+ * - development: Backlog -> Started
49
+ * - Other work types: No transition on start (issue stays in current status)
50
+ */
51
+ start(): Promise<SessionOperationResult>;
52
+ /**
53
+ * Mark session as awaiting user input
54
+ */
55
+ awaitInput(prompt: string): Promise<void>;
56
+ /**
57
+ * Complete the session successfully
58
+ *
59
+ * Transitions issue status based on work type:
60
+ * - development/inflight: Started -> Finished
61
+ * - qa: Finished -> Delivered (only if workResult === 'passed')
62
+ * - acceptance: Delivered -> Accepted (only if workResult === 'passed')
63
+ * - refinement: Rejected -> Backlog
64
+ * - research: No transition (user decides when to move to Backlog)
65
+ *
66
+ * @param summary - Optional completion summary to post as a comment
67
+ * @param workResult - For QA/acceptance: 'passed' promotes, 'failed' transitions to fail status, undefined skips transition
68
+ */
69
+ complete(summary?: string, workResult?: 'passed' | 'failed'): Promise<SessionOperationResult>;
70
+ /**
71
+ * Mark session as failed
72
+ * Emits an error activity (auto-generates comment) if session ID is available,
73
+ * otherwise falls back to creating a comment directly.
74
+ */
75
+ fail(errorMessage: string): Promise<SessionOperationResult>;
76
+ /**
77
+ * Emit a generic activity (legacy method for backward compatibility)
78
+ * @deprecated Use createActivity for native Linear Agent API
79
+ */
80
+ emitActivity(options: CreateActivityOptions): Promise<void>;
81
+ /**
82
+ * Create an activity using the native Linear Agent API
83
+ *
84
+ * @param content - The activity content payload
85
+ * @param ephemeral - Whether the activity should disappear after the next activity
86
+ * @param signal - Optional modifier for how the activity should be interpreted
87
+ * @returns Result containing success status and activity ID
88
+ */
89
+ createActivity(content: AgentActivityContentPayload, ephemeral?: boolean, signal?: AgentActivitySignal): Promise<AgentActivityResult>;
90
+ /**
91
+ * Emit a thought activity (persistent by default for visibility in Linear)
92
+ */
93
+ emitThought(text: string, ephemeral?: boolean): Promise<void>;
94
+ /**
95
+ * Emit an action activity (tool call)
96
+ */
97
+ emitAction(toolName: string, input: Record<string, unknown>, ephemeral?: boolean): Promise<void>;
98
+ /**
99
+ * Emit a tool result activity
100
+ */
101
+ emitToolResult(toolName: string, output: unknown, ephemeral?: boolean): Promise<void>;
102
+ /**
103
+ * Emit a response activity (persisted)
104
+ */
105
+ emitResponse(text: string): Promise<void>;
106
+ /**
107
+ * Emit an error activity using native API
108
+ */
109
+ emitError(error: Error): Promise<void>;
110
+ /**
111
+ * Emit an elicitation activity - asking for clarification from the user
112
+ */
113
+ emitElicitation(text: string, ephemeral?: boolean): Promise<AgentActivityResult | void>;
114
+ /**
115
+ * Emit a prompt activity - prompts/instructions for the user
116
+ */
117
+ emitPrompt(text: string, ephemeral?: boolean): Promise<AgentActivityResult | void>;
118
+ /**
119
+ * Emit an authentication required activity
120
+ * Shows an authentication prompt to the user with a link to authorize
121
+ *
122
+ * @param authUrl - The URL the user should visit to authenticate
123
+ * @param providerName - Optional name of the auth provider (e.g., "GitHub", "Google")
124
+ * @param body - Optional custom message body
125
+ * @returns Activity result with ID
126
+ *
127
+ * @see https://linear.app/developers/agent-signals
128
+ */
129
+ emitAuthRequired(authUrl: string, providerName?: string, body?: string): Promise<AgentActivityResult>;
130
+ /**
131
+ * Emit a selection prompt activity
132
+ * Shows a multiple choice selection to the user
133
+ *
134
+ * @param prompt - The question or prompt for the user
135
+ * @param options - Array of option strings the user can select from
136
+ * @returns Activity result with ID
137
+ *
138
+ * @see https://linear.app/developers/agent-signals
139
+ */
140
+ emitSelect(prompt: string, options: string[]): Promise<AgentActivityResult>;
141
+ /**
142
+ * Report an environment issue for self-improvement.
143
+ * Creates a bug in the Agent project backlog to track infrastructure improvements.
144
+ *
145
+ * This is a best-effort operation - failures are logged but don't propagate.
146
+ *
147
+ * @param title - Short description of the issue
148
+ * @param description - Detailed explanation of what happened
149
+ * @param context - Additional context about the issue
150
+ * @returns The created issue, or null if creation failed
151
+ */
152
+ reportEnvironmentIssue(title: string, description: string, context?: {
153
+ issueType?: EnvironmentIssueType;
154
+ sourceIssueId?: string;
155
+ errorStack?: string;
156
+ additionalContext?: Record<string, unknown>;
157
+ }): Promise<{
158
+ id: string;
159
+ identifier: string;
160
+ url: string;
161
+ } | null>;
162
+ /**
163
+ * Report a human-needed blocker issue.
164
+ * Creates an issue in Icebox with "Needs Human" label, linked as blocking the current issue.
165
+ *
166
+ * This is a best-effort operation - failures are logged but don't propagate.
167
+ *
168
+ * @param title - Short description of what the human needs to do
169
+ * @param description - Detailed steps or context for the human
170
+ * @param options - Optional overrides for project and assignee
171
+ * @returns The created blocker issue, or null if creation failed
172
+ */
173
+ reportHumanBlocker(title: string, description: string, options?: {
174
+ projectId?: string;
175
+ assigneeId?: string;
176
+ }): Promise<{
177
+ id: string;
178
+ identifier: string;
179
+ url: string;
180
+ } | null>;
181
+ /**
182
+ * Create an agent session on a sub-issue for activity reporting
183
+ *
184
+ * The coordinator uses this to emit activities to individual sub-issue threads,
185
+ * making sub-agent progress visible on each sub-issue in Linear.
186
+ *
187
+ * @param subIssueId - The sub-issue ID (UUID) to create a session on
188
+ * @returns The session ID for the sub-issue, or null if creation failed
189
+ */
190
+ createSubIssueSession(subIssueId: string): Promise<string | null>;
191
+ /**
192
+ * Emit an activity to a sub-issue's agent session
193
+ *
194
+ * Used by the coordinator to report progress on individual sub-issues.
195
+ * Falls back to creating a comment if the activity emission fails.
196
+ *
197
+ * @param subIssueSessionId - The agent session ID for the sub-issue
198
+ * @param content - The activity content to emit
199
+ * @param ephemeral - Whether the activity is ephemeral (default: false)
200
+ */
201
+ emitSubIssueActivity(subIssueSessionId: string, content: AgentActivityContentPayload, ephemeral?: boolean): Promise<void>;
202
+ /**
203
+ * Get the current issue description
204
+ * Refreshes the issue data from Linear if needed
205
+ */
206
+ getDescription(): Promise<string | undefined>;
207
+ /**
208
+ * Parse checkboxes from the issue description
209
+ *
210
+ * @returns Array of checkbox items, or empty array if no description
211
+ */
212
+ getDescriptionCheckboxes(): Promise<CheckboxItem[]>;
213
+ /**
214
+ * Update checkboxes in the issue description
215
+ *
216
+ * @param updates - Array of updates to apply
217
+ * @returns The updated issue, or null if no changes were made
218
+ */
219
+ updateDescriptionCheckboxes(updates: CheckboxUpdate[]): Promise<Issue | null>;
220
+ /**
221
+ * Mark a specific task as complete in the issue description
222
+ *
223
+ * @param textPattern - String or regex to match the task text
224
+ * @returns The updated issue, or null if task not found
225
+ */
226
+ completeDescriptionTask(textPattern: string | RegExp): Promise<Issue | null>;
227
+ /**
228
+ * Mark a specific task as incomplete in the issue description
229
+ *
230
+ * @param textPattern - String or regex to match the task text
231
+ * @returns The updated issue, or null if task not found
232
+ */
233
+ uncompleteDescriptionTask(textPattern: string | RegExp): Promise<Issue | null>;
234
+ /**
235
+ * Link this issue as related to another issue
236
+ *
237
+ * @param relatedIssueId - The issue ID or identifier to link to
238
+ * @returns Result with relation ID, or null if relation already exists
239
+ */
240
+ linkRelatedIssue(relatedIssueId: string): Promise<IssueRelationResult | null>;
241
+ /**
242
+ * Mark this issue as blocked by another issue
243
+ *
244
+ * @param blockingIssueId - The issue ID or identifier that blocks this one
245
+ * @returns Result with relation ID, or null if relation already exists
246
+ */
247
+ markAsBlockedBy(blockingIssueId: string): Promise<IssueRelationResult | null>;
248
+ /**
249
+ * Mark this issue as blocking another issue
250
+ *
251
+ * @param blockedIssueId - The issue ID or identifier that this issue blocks
252
+ * @returns Result with relation ID, or null if relation already exists
253
+ */
254
+ markAsBlocking(blockedIssueId: string): Promise<IssueRelationResult | null>;
255
+ /**
256
+ * Mark this issue as a duplicate of another issue
257
+ *
258
+ * @param originalIssueId - The original issue ID or identifier
259
+ * @returns Result with relation ID, or null if relation already exists
260
+ */
261
+ markAsDuplicateOf(originalIssueId: string): Promise<IssueRelationResult | null>;
262
+ /**
263
+ * Get issues that are blocking this issue
264
+ *
265
+ * @returns Array of relation info for blocking issues
266
+ */
267
+ getBlockers(): Promise<IssueRelationInfo[]>;
268
+ /**
269
+ * Check if this issue is blocked by any other issues
270
+ *
271
+ * @returns True if blocked, false otherwise
272
+ */
273
+ isBlocked(): Promise<boolean>;
274
+ /**
275
+ * Update the agent's plan (full replacement)
276
+ *
277
+ * Uses Linear's native agentSessionUpdate mutation to display the plan
278
+ * as checkboxes in the Linear UI. Also maintains internal plan state
279
+ * for checkbox sync and completion tracking.
280
+ */
281
+ updatePlan(items: Omit<AgentPlanItem, 'id'>[]): Promise<void>;
282
+ /**
283
+ * Flatten nested plan items into Linear's flat format
284
+ * Converts: { title, state, children } -> { content, status }
285
+ */
286
+ private flattenPlanItems;
287
+ /**
288
+ * Update a single plan item's state
289
+ * Also updates the plan in Linear's native API and syncs description checkboxes
290
+ */
291
+ updatePlanItemState(itemId: string, state: AgentPlanItemState): Promise<void>;
292
+ /**
293
+ * Create a plan item helper
294
+ */
295
+ createPlanItem(title: string, state?: AgentPlanItemState, details?: string): Omit<AgentPlanItem, 'id'>;
296
+ private formatActivityAsComment;
297
+ private postCompletionComment;
298
+ }
299
+ /**
300
+ * Create a new agent session
301
+ */
302
+ export declare function createAgentSession(config: AgentSessionConfig): AgentSession;
303
+ //# sourceMappingURL=agent-session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-session.d.ts","sourceRoot":"","sources":["../../src/agent-session.ts"],"names":[],"mappings":"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"}