@fractary/core 0.1.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 (139) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +169 -0
  3. package/dist/__tests__/smoke.test.d.ts +7 -0
  4. package/dist/__tests__/smoke.test.d.ts.map +1 -0
  5. package/dist/__tests__/smoke.test.js +132 -0
  6. package/dist/__tests__/smoke.test.js.map +1 -0
  7. package/dist/common/config.d.ts +30 -0
  8. package/dist/common/config.d.ts.map +1 -0
  9. package/dist/common/config.js +120 -0
  10. package/dist/common/config.js.map +1 -0
  11. package/dist/common/errors.d.ts +264 -0
  12. package/dist/common/errors.d.ts.map +1 -0
  13. package/dist/common/errors.js +491 -0
  14. package/dist/common/errors.js.map +1 -0
  15. package/dist/common/index.d.ts +9 -0
  16. package/dist/common/index.d.ts.map +1 -0
  17. package/dist/common/index.js +25 -0
  18. package/dist/common/index.js.map +1 -0
  19. package/dist/common/types.d.ts +622 -0
  20. package/dist/common/types.d.ts.map +1 -0
  21. package/dist/common/types.js +8 -0
  22. package/dist/common/types.js.map +1 -0
  23. package/dist/docs/index.d.ts +8 -0
  24. package/dist/docs/index.d.ts.map +1 -0
  25. package/dist/docs/index.js +26 -0
  26. package/dist/docs/index.js.map +1 -0
  27. package/dist/docs/manager.d.ts +47 -0
  28. package/dist/docs/manager.d.ts.map +1 -0
  29. package/dist/docs/manager.js +250 -0
  30. package/dist/docs/manager.js.map +1 -0
  31. package/dist/docs/types.d.ts +113 -0
  32. package/dist/docs/types.d.ts.map +1 -0
  33. package/dist/docs/types.js +8 -0
  34. package/dist/docs/types.js.map +1 -0
  35. package/dist/file/index.d.ts +9 -0
  36. package/dist/file/index.d.ts.map +1 -0
  37. package/dist/file/index.js +28 -0
  38. package/dist/file/index.js.map +1 -0
  39. package/dist/file/local.d.ts +42 -0
  40. package/dist/file/local.d.ts.map +1 -0
  41. package/dist/file/local.js +137 -0
  42. package/dist/file/local.js.map +1 -0
  43. package/dist/file/manager.d.ts +42 -0
  44. package/dist/file/manager.d.ts.map +1 -0
  45. package/dist/file/manager.js +68 -0
  46. package/dist/file/manager.js.map +1 -0
  47. package/dist/file/types.d.ts +52 -0
  48. package/dist/file/types.d.ts.map +1 -0
  49. package/dist/file/types.js +8 -0
  50. package/dist/file/types.js.map +1 -0
  51. package/dist/index.d.ts +21 -0
  52. package/dist/index.d.ts.map +1 -0
  53. package/dist/index.js +43 -0
  54. package/dist/index.js.map +1 -0
  55. package/dist/logs/index.d.ts +8 -0
  56. package/dist/logs/index.d.ts.map +1 -0
  57. package/dist/logs/index.js +26 -0
  58. package/dist/logs/index.js.map +1 -0
  59. package/dist/logs/manager.d.ts +97 -0
  60. package/dist/logs/manager.d.ts.map +1 -0
  61. package/dist/logs/manager.js +584 -0
  62. package/dist/logs/manager.js.map +1 -0
  63. package/dist/logs/types.d.ts +45 -0
  64. package/dist/logs/types.d.ts.map +1 -0
  65. package/dist/logs/types.js +8 -0
  66. package/dist/logs/types.js.map +1 -0
  67. package/dist/repo/git.d.ts +182 -0
  68. package/dist/repo/git.d.ts.map +1 -0
  69. package/dist/repo/git.js +496 -0
  70. package/dist/repo/git.js.map +1 -0
  71. package/dist/repo/index.d.ts +10 -0
  72. package/dist/repo/index.d.ts.map +1 -0
  73. package/dist/repo/index.js +29 -0
  74. package/dist/repo/index.js.map +1 -0
  75. package/dist/repo/manager.d.ts +179 -0
  76. package/dist/repo/manager.d.ts.map +1 -0
  77. package/dist/repo/manager.js +433 -0
  78. package/dist/repo/manager.js.map +1 -0
  79. package/dist/repo/providers/bitbucket.d.ts +48 -0
  80. package/dist/repo/providers/bitbucket.d.ts.map +1 -0
  81. package/dist/repo/providers/bitbucket.js +86 -0
  82. package/dist/repo/providers/bitbucket.js.map +1 -0
  83. package/dist/repo/providers/github.d.ts +30 -0
  84. package/dist/repo/providers/github.d.ts.map +1 -0
  85. package/dist/repo/providers/github.js +311 -0
  86. package/dist/repo/providers/github.js.map +1 -0
  87. package/dist/repo/providers/gitlab.d.ts +47 -0
  88. package/dist/repo/providers/gitlab.d.ts.map +1 -0
  89. package/dist/repo/providers/gitlab.js +84 -0
  90. package/dist/repo/providers/gitlab.js.map +1 -0
  91. package/dist/repo/providers/index.d.ts +9 -0
  92. package/dist/repo/providers/index.d.ts.map +1 -0
  93. package/dist/repo/providers/index.js +15 -0
  94. package/dist/repo/providers/index.js.map +1 -0
  95. package/dist/repo/types.d.ts +48 -0
  96. package/dist/repo/types.d.ts.map +1 -0
  97. package/dist/repo/types.js +8 -0
  98. package/dist/repo/types.js.map +1 -0
  99. package/dist/spec/index.d.ts +9 -0
  100. package/dist/spec/index.d.ts.map +1 -0
  101. package/dist/spec/index.js +30 -0
  102. package/dist/spec/index.js.map +1 -0
  103. package/dist/spec/manager.d.ts +106 -0
  104. package/dist/spec/manager.d.ts.map +1 -0
  105. package/dist/spec/manager.js +672 -0
  106. package/dist/spec/manager.js.map +1 -0
  107. package/dist/spec/templates.d.ts +28 -0
  108. package/dist/spec/templates.d.ts.map +1 -0
  109. package/dist/spec/templates.js +357 -0
  110. package/dist/spec/templates.js.map +1 -0
  111. package/dist/spec/types.d.ts +53 -0
  112. package/dist/spec/types.d.ts.map +1 -0
  113. package/dist/spec/types.js +8 -0
  114. package/dist/spec/types.js.map +1 -0
  115. package/dist/work/index.d.ts +8 -0
  116. package/dist/work/index.d.ts.map +1 -0
  117. package/dist/work/index.js +26 -0
  118. package/dist/work/index.js.map +1 -0
  119. package/dist/work/manager.d.ts +112 -0
  120. package/dist/work/manager.d.ts.map +1 -0
  121. package/dist/work/manager.js +227 -0
  122. package/dist/work/manager.js.map +1 -0
  123. package/dist/work/providers/github.d.ts +40 -0
  124. package/dist/work/providers/github.d.ts.map +1 -0
  125. package/dist/work/providers/github.js +299 -0
  126. package/dist/work/providers/github.js.map +1 -0
  127. package/dist/work/providers/jira.d.ts +60 -0
  128. package/dist/work/providers/jira.d.ts.map +1 -0
  129. package/dist/work/providers/jira.js +109 -0
  130. package/dist/work/providers/jira.js.map +1 -0
  131. package/dist/work/providers/linear.d.ts +57 -0
  132. package/dist/work/providers/linear.d.ts.map +1 -0
  133. package/dist/work/providers/linear.js +103 -0
  134. package/dist/work/providers/linear.js.map +1 -0
  135. package/dist/work/types.d.ts +42 -0
  136. package/dist/work/types.d.ts.map +1 -0
  137. package/dist/work/types.js +8 -0
  138. package/dist/work/types.js.map +1 -0
  139. package/package.json +102 -0
@@ -0,0 +1,299 @@
1
+ "use strict";
2
+ /**
3
+ * @fractary/faber - GitHub Work Provider
4
+ *
5
+ * Work tracking via GitHub Issues using the gh CLI.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.GitHubWorkProvider = void 0;
9
+ const child_process_1 = require("child_process");
10
+ const errors_1 = require("../../common/errors");
11
+ /**
12
+ * Execute a command and return the output
13
+ */
14
+ function exec(command, options) {
15
+ try {
16
+ const result = (0, child_process_1.execSync)(command, {
17
+ encoding: 'utf-8',
18
+ maxBuffer: 10 * 1024 * 1024, // 10MB
19
+ ...options,
20
+ });
21
+ return (typeof result === 'string' ? result : result.toString()).trim();
22
+ }
23
+ catch (error) {
24
+ const err = error;
25
+ const exitCode = err.status || 1;
26
+ const stderr = err.stderr?.toString() || '';
27
+ if (stderr.includes('authentication') || stderr.includes('auth')) {
28
+ throw new errors_1.AuthenticationError('github', 'GitHub authentication failed. Run "gh auth login"');
29
+ }
30
+ throw new errors_1.CommandExecutionError(command, exitCode, stderr);
31
+ }
32
+ }
33
+ /**
34
+ * Check if gh CLI is available and authenticated
35
+ */
36
+ function checkGhCli() {
37
+ try {
38
+ exec('gh auth status');
39
+ }
40
+ catch {
41
+ throw new errors_1.AuthenticationError('github', 'GitHub CLI not authenticated. Run "gh auth login" to authenticate.');
42
+ }
43
+ }
44
+ /**
45
+ * GitHub Issues provider using gh CLI
46
+ */
47
+ class GitHubWorkProvider {
48
+ platform = 'github';
49
+ owner;
50
+ repo;
51
+ constructor(config) {
52
+ if (!config.owner || !config.repo) {
53
+ throw new errors_1.ProviderError('github', 'init', 'GitHub work provider requires owner and repo in config');
54
+ }
55
+ this.owner = config.owner;
56
+ this.repo = config.repo;
57
+ checkGhCli();
58
+ }
59
+ getRepoArg() {
60
+ return `${this.owner}/${this.repo}`;
61
+ }
62
+ // =========================================================================
63
+ // ISSUES
64
+ // =========================================================================
65
+ async createIssue(options) {
66
+ const args = [`--repo ${this.getRepoArg()}`];
67
+ args.push(`--title "${options.title.replace(/"/g, '\\"')}"`);
68
+ if (options.body) {
69
+ args.push(`--body "${options.body.replace(/"/g, '\\"')}"`);
70
+ }
71
+ if (options.labels && options.labels.length > 0) {
72
+ args.push(`--label "${options.labels.join(',')}"`);
73
+ }
74
+ if (options.assignees && options.assignees.length > 0) {
75
+ args.push(`--assignee "${options.assignees.join(',')}"`);
76
+ }
77
+ if (options.milestone) {
78
+ args.push(`--milestone "${options.milestone}"`);
79
+ }
80
+ try {
81
+ const result = exec(`gh issue create ${args.join(' ')} --json number,title,body,state,labels,assignees,milestone,createdAt,updatedAt,url`);
82
+ return this.parseIssue(JSON.parse(result));
83
+ }
84
+ catch (error) {
85
+ if (error instanceof errors_1.CommandExecutionError) {
86
+ throw new errors_1.IssueCreateError(error.stderr);
87
+ }
88
+ throw error;
89
+ }
90
+ }
91
+ async fetchIssue(issueId) {
92
+ try {
93
+ const result = exec(`gh issue view ${issueId} --repo ${this.getRepoArg()} --json number,title,body,state,labels,assignees,milestone,createdAt,updatedAt,closedAt,url`);
94
+ return this.parseIssue(JSON.parse(result));
95
+ }
96
+ catch (error) {
97
+ if (error instanceof errors_1.CommandExecutionError) {
98
+ if (error.stderr.includes('not found') || error.stderr.includes('Could not resolve')) {
99
+ throw new errors_1.IssueNotFoundError(issueId);
100
+ }
101
+ }
102
+ throw error;
103
+ }
104
+ }
105
+ async updateIssue(issueId, options) {
106
+ const args = [`--repo ${this.getRepoArg()}`];
107
+ if (options.title) {
108
+ args.push(`--title "${options.title.replace(/"/g, '\\"')}"`);
109
+ }
110
+ if (options.body) {
111
+ args.push(`--body "${options.body.replace(/"/g, '\\"')}"`);
112
+ }
113
+ if (args.length > 1) {
114
+ exec(`gh issue edit ${issueId} ${args.join(' ')}`);
115
+ }
116
+ return this.fetchIssue(issueId);
117
+ }
118
+ async closeIssue(issueId) {
119
+ exec(`gh issue close ${issueId} --repo ${this.getRepoArg()}`);
120
+ return this.fetchIssue(issueId);
121
+ }
122
+ async reopenIssue(issueId) {
123
+ exec(`gh issue reopen ${issueId} --repo ${this.getRepoArg()}`);
124
+ return this.fetchIssue(issueId);
125
+ }
126
+ async searchIssues(query, filters) {
127
+ const args = [`--repo ${this.getRepoArg()}`];
128
+ if (filters?.state && filters.state !== 'all') {
129
+ args.push(`--state ${filters.state}`);
130
+ }
131
+ if (filters?.labels && filters.labels.length > 0) {
132
+ args.push(`--label "${filters.labels.join(',')}"`);
133
+ }
134
+ if (filters?.assignee) {
135
+ args.push(`--assignee ${filters.assignee}`);
136
+ }
137
+ if (filters?.milestone) {
138
+ args.push(`--milestone "${filters.milestone}"`);
139
+ }
140
+ args.push(`--search "${query}"`);
141
+ args.push('--json number,title,body,state,labels,assignees,milestone,createdAt,updatedAt,closedAt,url');
142
+ const result = exec(`gh issue list ${args.join(' ')}`);
143
+ const issues = JSON.parse(result || '[]');
144
+ return issues.map(i => this.parseIssue(i));
145
+ }
146
+ async assignIssue(issueId, assignee) {
147
+ exec(`gh issue edit ${issueId} --repo ${this.getRepoArg()} --add-assignee ${assignee}`);
148
+ return this.fetchIssue(issueId);
149
+ }
150
+ async unassignIssue(issueId) {
151
+ // Get current assignees and remove them
152
+ const issue = await this.fetchIssue(issueId);
153
+ if (issue.assignees.length > 0) {
154
+ exec(`gh issue edit ${issueId} --repo ${this.getRepoArg()} --remove-assignee ${issue.assignees.join(',')}`);
155
+ }
156
+ return this.fetchIssue(issueId);
157
+ }
158
+ // =========================================================================
159
+ // COMMENTS
160
+ // =========================================================================
161
+ async createComment(issueId, body, faberContext) {
162
+ // Add FABER context to comment if provided
163
+ let finalBody = body;
164
+ if (faberContext) {
165
+ finalBody = `<!-- faber:${faberContext} -->\n${body}`;
166
+ }
167
+ exec(`gh issue comment ${issueId} --repo ${this.getRepoArg()} --body "${finalBody.replace(/"/g, '\\"')}"`);
168
+ // gh doesn't return JSON for comment creation, so we fetch latest
169
+ const comments = await this.listComments(issueId, { limit: 1 });
170
+ return comments[0];
171
+ }
172
+ async listComments(issueId, options) {
173
+ const result = exec(`gh api repos/${this.getRepoArg()}/issues/${issueId}/comments --jq '.[] | {id: .id, body: .body, author: .user.login, createdAt: .created_at, updatedAt: .updated_at}'`);
174
+ if (!result)
175
+ return [];
176
+ const lines = result.split('\n').filter(l => l.trim());
177
+ let comments = lines.map(line => {
178
+ const c = JSON.parse(line);
179
+ return {
180
+ id: String(c.id),
181
+ body: c.body,
182
+ author: c.author,
183
+ created_at: c.createdAt,
184
+ updated_at: c.updatedAt,
185
+ };
186
+ });
187
+ if (options?.since) {
188
+ const sinceDate = new Date(options.since);
189
+ comments = comments.filter(c => new Date(c.created_at) > sinceDate);
190
+ }
191
+ if (options?.limit) {
192
+ comments = comments.slice(-options.limit);
193
+ }
194
+ return comments;
195
+ }
196
+ // =========================================================================
197
+ // LABELS
198
+ // =========================================================================
199
+ async addLabels(issueId, labels) {
200
+ exec(`gh issue edit ${issueId} --repo ${this.getRepoArg()} --add-label "${labels.join(',')}"`);
201
+ const issue = await this.fetchIssue(issueId);
202
+ return issue.labels;
203
+ }
204
+ async removeLabels(issueId, labels) {
205
+ exec(`gh issue edit ${issueId} --repo ${this.getRepoArg()} --remove-label "${labels.join(',')}"`);
206
+ }
207
+ async setLabels(issueId, labels) {
208
+ // First remove all labels, then add new ones
209
+ const issue = await this.fetchIssue(issueId);
210
+ if (issue.labels.length > 0) {
211
+ await this.removeLabels(issueId, issue.labels.map(l => l.name));
212
+ }
213
+ if (labels.length > 0) {
214
+ return this.addLabels(issueId, labels);
215
+ }
216
+ return [];
217
+ }
218
+ async listLabels(issueId) {
219
+ if (issueId) {
220
+ const issue = await this.fetchIssue(issueId);
221
+ return issue.labels;
222
+ }
223
+ const result = exec(`gh label list --repo ${this.getRepoArg()} --json name,color,description`);
224
+ return JSON.parse(result || '[]');
225
+ }
226
+ // =========================================================================
227
+ // MILESTONES
228
+ // =========================================================================
229
+ async createMilestone(options) {
230
+ const args = [`--title "${options.title}"`];
231
+ if (options.description) {
232
+ args.push(`--description "${options.description.replace(/"/g, '\\"')}"`);
233
+ }
234
+ if (options.due_on) {
235
+ args.push(`--due-date "${options.due_on}"`);
236
+ }
237
+ const result = exec(`gh api repos/${this.getRepoArg()}/milestones -f title="${options.title}" ${options.description ? `-f description="${options.description}"` : ''} ${options.due_on ? `-f due_on="${options.due_on}"` : ''}`);
238
+ const m = JSON.parse(result);
239
+ return {
240
+ id: String(m.number),
241
+ title: m.title,
242
+ description: m.description,
243
+ due_on: m.due_on,
244
+ state: m.state,
245
+ };
246
+ }
247
+ async setMilestone(issueId, milestone) {
248
+ exec(`gh issue edit ${issueId} --repo ${this.getRepoArg()} --milestone "${milestone}"`);
249
+ return this.fetchIssue(issueId);
250
+ }
251
+ async removeMilestone(issueId) {
252
+ exec(`gh issue edit ${issueId} --repo ${this.getRepoArg()} --milestone ""`);
253
+ return this.fetchIssue(issueId);
254
+ }
255
+ async listMilestones(state) {
256
+ const stateArg = state && state !== 'all' ? `?state=${state}` : '';
257
+ const result = exec(`gh api repos/${this.getRepoArg()}/milestones${stateArg}`);
258
+ const milestones = JSON.parse(result || '[]');
259
+ return milestones.map(m => ({
260
+ id: String(m.number),
261
+ title: m.title,
262
+ description: m.description,
263
+ due_on: m.due_on,
264
+ state: m.state,
265
+ }));
266
+ }
267
+ // =========================================================================
268
+ // HELPERS
269
+ // =========================================================================
270
+ parseIssue(raw) {
271
+ const data = raw;
272
+ return {
273
+ id: String(data['number']),
274
+ number: data['number'],
275
+ title: data['title'],
276
+ body: data['body'] || '',
277
+ state: data['state']?.toLowerCase() === 'open' ? 'open' : 'closed',
278
+ labels: (data['labels'] || []).map(l => ({
279
+ name: l.name,
280
+ color: l.color,
281
+ description: l.description,
282
+ })),
283
+ assignees: (data['assignees'] || []).map(a => a.login),
284
+ milestone: data['milestone'] ? {
285
+ id: String(data['milestone']['number']),
286
+ title: data['milestone']['title'],
287
+ description: data['milestone']['description'],
288
+ due_on: data['milestone']['dueOn'],
289
+ state: data['milestone']['state']?.toLowerCase() === 'open' ? 'open' : 'closed',
290
+ } : undefined,
291
+ created_at: data['createdAt'],
292
+ updated_at: data['updatedAt'],
293
+ closed_at: data['closedAt'],
294
+ url: data['url'],
295
+ };
296
+ }
297
+ }
298
+ exports.GitHubWorkProvider = GitHubWorkProvider;
299
+ //# sourceMappingURL=github.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.js","sourceRoot":"","sources":["../../../src/work/providers/github.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * @fractary/core - Jira Work Provider
3
+ *
4
+ * ⚠️ STUB IMPLEMENTATION - NOT YET FUNCTIONAL
5
+ *
6
+ * This provider is included for future compatibility but is not currently implemented.
7
+ * All methods will throw ProviderError when called.
8
+ *
9
+ * Use GitHubWorkProvider for a fully functional work tracking provider.
10
+ *
11
+ * Future implementation will include:
12
+ * - Jira Cloud REST API v3 integration
13
+ * - Issue creation and management
14
+ * - Custom field mapping
15
+ * - Sprint and epic support
16
+ */
17
+ import { WorkConfig, Issue, IssueCreateOptions, IssueUpdateOptions, IssueFilters, Comment, Label, Milestone, MilestoneCreateOptions, FaberContext } from '../../common/types';
18
+ import { WorkProvider } from '../types';
19
+ /**
20
+ * Jira Issues provider
21
+ *
22
+ * Note: This is a stub implementation. Full Jira support requires:
23
+ * - Jira REST API v3 integration
24
+ * - JQL query support
25
+ * - ADF (Atlassian Document Format) for rich text
26
+ * - Project/board configuration
27
+ */
28
+ export declare class JiraWorkProvider implements WorkProvider {
29
+ readonly platform: "jira";
30
+ private baseUrl;
31
+ private projectKey;
32
+ constructor(config: WorkConfig);
33
+ /** Get the API base URL */
34
+ protected getBaseUrl(): string;
35
+ /** Get the project key for API calls */
36
+ protected getProjectKey(): string;
37
+ private notImplemented;
38
+ createIssue(_options: IssueCreateOptions): Promise<Issue>;
39
+ fetchIssue(_issueId: string | number): Promise<Issue>;
40
+ updateIssue(_issueId: string | number, _options: IssueUpdateOptions): Promise<Issue>;
41
+ closeIssue(_issueId: string | number): Promise<Issue>;
42
+ reopenIssue(_issueId: string | number): Promise<Issue>;
43
+ searchIssues(_query: string, _filters?: IssueFilters): Promise<Issue[]>;
44
+ assignIssue(_issueId: string | number, _assignee: string): Promise<Issue>;
45
+ unassignIssue(_issueId: string | number): Promise<Issue>;
46
+ createComment(_issueId: string | number, _body: string, _faberContext?: FaberContext): Promise<Comment>;
47
+ listComments(_issueId: string | number, _options?: {
48
+ limit?: number;
49
+ since?: string;
50
+ }): Promise<Comment[]>;
51
+ addLabels(_issueId: string | number, _labels: string[]): Promise<Label[]>;
52
+ removeLabels(_issueId: string | number, _labels: string[]): Promise<void>;
53
+ setLabels(_issueId: string | number, _labels: string[]): Promise<Label[]>;
54
+ listLabels(_issueId?: string | number): Promise<Label[]>;
55
+ createMilestone(_options: MilestoneCreateOptions): Promise<Milestone>;
56
+ setMilestone(_issueId: string | number, _milestone: string): Promise<Issue>;
57
+ removeMilestone(_issueId: string | number): Promise<Issue>;
58
+ listMilestones(_state?: 'open' | 'closed' | 'all'): Promise<Milestone[]>;
59
+ }
60
+ //# sourceMappingURL=jira.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jira.d.ts","sourceRoot":"","sources":["../../../src/work/providers/jira.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EACL,UAAU,EACV,KAAK,EACL,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,OAAO,EACP,KAAK,EACL,SAAS,EACT,sBAAsB,EACtB,YAAY,EACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGxC;;;;;;;;GAQG;AACH,qBAAa,gBAAiB,YAAW,YAAY;IACnD,QAAQ,CAAC,QAAQ,EAAG,MAAM,CAAU;IAEpC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAS;gBAEf,MAAM,EAAE,UAAU;IAY9B,2BAA2B;IAC3B,SAAS,CAAC,UAAU,IAAI,MAAM;IAI9B,wCAAwC;IACxC,SAAS,CAAC,aAAa,IAAI,MAAM;IAIjC,OAAO,CAAC,cAAc;IAQhB,WAAW,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IAIzD,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAIrD,WAAW,CACf,QAAQ,EAAE,MAAM,GAAG,MAAM,EACzB,QAAQ,EAAE,kBAAkB,GAC3B,OAAO,CAAC,KAAK,CAAC;IAIX,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAIrD,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAItD,YAAY,CAChB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,YAAY,GACtB,OAAO,CAAC,KAAK,EAAE,CAAC;IAIb,WAAW,CACf,QAAQ,EAAE,MAAM,GAAG,MAAM,EACzB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,KAAK,CAAC;IAIX,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAIxD,aAAa,CACjB,QAAQ,EAAE,MAAM,GAAG,MAAM,EACzB,KAAK,EAAE,MAAM,EACb,aAAa,CAAC,EAAE,YAAY,GAC3B,OAAO,CAAC,OAAO,CAAC;IAIb,YAAY,CAChB,QAAQ,EAAE,MAAM,GAAG,MAAM,EACzB,QAAQ,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5C,OAAO,CAAC,OAAO,EAAE,CAAC;IAIf,SAAS,CACb,QAAQ,EAAE,MAAM,GAAG,MAAM,EACzB,OAAO,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC,KAAK,EAAE,CAAC;IAIb,YAAY,CAChB,QAAQ,EAAE,MAAM,GAAG,MAAM,EACzB,OAAO,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC,IAAI,CAAC;IAIV,SAAS,CACb,QAAQ,EAAE,MAAM,GAAG,MAAM,EACzB,OAAO,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC,KAAK,EAAE,CAAC;IAIb,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAIxD,eAAe,CACnB,QAAQ,EAAE,sBAAsB,GAC/B,OAAO,CAAC,SAAS,CAAC;IAIf,YAAY,CAChB,QAAQ,EAAE,MAAM,GAAG,MAAM,EACzB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,KAAK,CAAC;IAIX,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAI1D,cAAc,CAClB,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,GACjC,OAAO,CAAC,SAAS,EAAE,CAAC;CAGxB"}
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ /**
3
+ * @fractary/core - Jira Work Provider
4
+ *
5
+ * ⚠️ STUB IMPLEMENTATION - NOT YET FUNCTIONAL
6
+ *
7
+ * This provider is included for future compatibility but is not currently implemented.
8
+ * All methods will throw ProviderError when called.
9
+ *
10
+ * Use GitHubWorkProvider for a fully functional work tracking provider.
11
+ *
12
+ * Future implementation will include:
13
+ * - Jira Cloud REST API v3 integration
14
+ * - Issue creation and management
15
+ * - Custom field mapping
16
+ * - Sprint and epic support
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.JiraWorkProvider = void 0;
20
+ const errors_1 = require("../../common/errors");
21
+ /**
22
+ * Jira Issues provider
23
+ *
24
+ * Note: This is a stub implementation. Full Jira support requires:
25
+ * - Jira REST API v3 integration
26
+ * - JQL query support
27
+ * - ADF (Atlassian Document Format) for rich text
28
+ * - Project/board configuration
29
+ */
30
+ class JiraWorkProvider {
31
+ platform = 'jira';
32
+ // Stored for future API implementation
33
+ baseUrl;
34
+ projectKey;
35
+ constructor(config) {
36
+ if (!config.project) {
37
+ throw new errors_1.ProviderError('jira', 'init', 'Jira work provider requires project in config');
38
+ }
39
+ this.baseUrl = ''; // TODO: Load from config
40
+ this.projectKey = config.project;
41
+ }
42
+ /** Get the API base URL */
43
+ getBaseUrl() {
44
+ return this.baseUrl;
45
+ }
46
+ /** Get the project key for API calls */
47
+ getProjectKey() {
48
+ return this.projectKey;
49
+ }
50
+ notImplemented(operation) {
51
+ throw new errors_1.ProviderError('jira', operation, `Jira ${operation} not yet implemented`);
52
+ }
53
+ async createIssue(_options) {
54
+ this.notImplemented('createIssue');
55
+ }
56
+ async fetchIssue(_issueId) {
57
+ this.notImplemented('fetchIssue');
58
+ }
59
+ async updateIssue(_issueId, _options) {
60
+ this.notImplemented('updateIssue');
61
+ }
62
+ async closeIssue(_issueId) {
63
+ this.notImplemented('closeIssue');
64
+ }
65
+ async reopenIssue(_issueId) {
66
+ this.notImplemented('reopenIssue');
67
+ }
68
+ async searchIssues(_query, _filters) {
69
+ this.notImplemented('searchIssues');
70
+ }
71
+ async assignIssue(_issueId, _assignee) {
72
+ this.notImplemented('assignIssue');
73
+ }
74
+ async unassignIssue(_issueId) {
75
+ this.notImplemented('unassignIssue');
76
+ }
77
+ async createComment(_issueId, _body, _faberContext) {
78
+ this.notImplemented('createComment');
79
+ }
80
+ async listComments(_issueId, _options) {
81
+ this.notImplemented('listComments');
82
+ }
83
+ async addLabels(_issueId, _labels) {
84
+ this.notImplemented('addLabels');
85
+ }
86
+ async removeLabels(_issueId, _labels) {
87
+ this.notImplemented('removeLabels');
88
+ }
89
+ async setLabels(_issueId, _labels) {
90
+ this.notImplemented('setLabels');
91
+ }
92
+ async listLabels(_issueId) {
93
+ this.notImplemented('listLabels');
94
+ }
95
+ async createMilestone(_options) {
96
+ this.notImplemented('createMilestone');
97
+ }
98
+ async setMilestone(_issueId, _milestone) {
99
+ this.notImplemented('setMilestone');
100
+ }
101
+ async removeMilestone(_issueId) {
102
+ this.notImplemented('removeMilestone');
103
+ }
104
+ async listMilestones(_state) {
105
+ this.notImplemented('listMilestones');
106
+ }
107
+ }
108
+ exports.JiraWorkProvider = JiraWorkProvider;
109
+ //# sourceMappingURL=jira.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jira.js","sourceRoot":"","sources":["../../../src/work/providers/jira.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAeH,gDAAoD;AAEpD;;;;;;;;GAQG;AACH,MAAa,gBAAgB;IAClB,QAAQ,GAAG,MAAe,CAAC;IACpC,uCAAuC;IAC/B,OAAO,CAAS;IAChB,UAAU,CAAS;IAE3B,YAAY,MAAkB;QAC5B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,sBAAa,CACrB,MAAM,EACN,MAAM,EACN,+CAA+C,CAChD,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,yBAAyB;QAC5C,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC;IACnC,CAAC;IAED,2BAA2B;IACjB,UAAU;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,wCAAwC;IAC9B,aAAa;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAEO,cAAc,CAAC,SAAiB;QACtC,MAAM,IAAI,sBAAa,CACrB,MAAM,EACN,SAAS,EACT,QAAQ,SAAS,sBAAsB,CACxC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,QAA4B;QAC5C,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,QAAyB;QACxC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,WAAW,CACf,QAAyB,EACzB,QAA4B;QAE5B,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,QAAyB;QACxC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,QAAyB;QACzC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,MAAc,EACd,QAAuB;QAEvB,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,WAAW,CACf,QAAyB,EACzB,SAAiB;QAEjB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,QAAyB;QAC3C,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,QAAyB,EACzB,KAAa,EACb,aAA4B;QAE5B,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,QAAyB,EACzB,QAA6C;QAE7C,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,SAAS,CACb,QAAyB,EACzB,OAAiB;QAEjB,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,QAAyB,EACzB,OAAiB;QAEjB,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,SAAS,CACb,QAAyB,EACzB,OAAiB;QAEjB,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,QAA0B;QACzC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,QAAgC;QAEhC,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,QAAyB,EACzB,UAAkB;QAElB,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,QAAyB;QAC7C,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,MAAkC;QAElC,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;IACxC,CAAC;CACF;AA3ID,4CA2IC"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * @fractary/core - Linear Work Provider
3
+ *
4
+ * ⚠️ STUB IMPLEMENTATION - NOT YET FUNCTIONAL
5
+ *
6
+ * This provider is included for future compatibility but is not currently implemented.
7
+ * All methods will throw ProviderError when called.
8
+ *
9
+ * Use GitHubWorkProvider for a fully functional work tracking provider.
10
+ *
11
+ * Future implementation will include:
12
+ * - Linear GraphQL API integration
13
+ * - Issue creation and management
14
+ * - Project and team support
15
+ * - Cycle management
16
+ */
17
+ import { WorkConfig, Issue, IssueCreateOptions, IssueUpdateOptions, IssueFilters, Comment, Label, Milestone, MilestoneCreateOptions, FaberContext } from '../../common/types';
18
+ import { WorkProvider } from '../types';
19
+ /**
20
+ * Linear Issues provider
21
+ *
22
+ * Note: This is a stub implementation. Full Linear support requires:
23
+ * - Linear GraphQL API integration
24
+ * - Team/workspace configuration
25
+ * - Cycle support (Linear's equivalent of milestones)
26
+ * - Label management
27
+ */
28
+ export declare class LinearWorkProvider implements WorkProvider {
29
+ readonly platform: "linear";
30
+ private teamId;
31
+ constructor(config: WorkConfig);
32
+ /** Get the team ID for API calls */
33
+ protected getTeamId(): string;
34
+ private notImplemented;
35
+ createIssue(_options: IssueCreateOptions): Promise<Issue>;
36
+ fetchIssue(_issueId: string | number): Promise<Issue>;
37
+ updateIssue(_issueId: string | number, _options: IssueUpdateOptions): Promise<Issue>;
38
+ closeIssue(_issueId: string | number): Promise<Issue>;
39
+ reopenIssue(_issueId: string | number): Promise<Issue>;
40
+ searchIssues(_query: string, _filters?: IssueFilters): Promise<Issue[]>;
41
+ assignIssue(_issueId: string | number, _assignee: string): Promise<Issue>;
42
+ unassignIssue(_issueId: string | number): Promise<Issue>;
43
+ createComment(_issueId: string | number, _body: string, _faberContext?: FaberContext): Promise<Comment>;
44
+ listComments(_issueId: string | number, _options?: {
45
+ limit?: number;
46
+ since?: string;
47
+ }): Promise<Comment[]>;
48
+ addLabels(_issueId: string | number, _labels: string[]): Promise<Label[]>;
49
+ removeLabels(_issueId: string | number, _labels: string[]): Promise<void>;
50
+ setLabels(_issueId: string | number, _labels: string[]): Promise<Label[]>;
51
+ listLabels(_issueId?: string | number): Promise<Label[]>;
52
+ createMilestone(_options: MilestoneCreateOptions): Promise<Milestone>;
53
+ setMilestone(_issueId: string | number, _milestone: string): Promise<Issue>;
54
+ removeMilestone(_issueId: string | number): Promise<Issue>;
55
+ listMilestones(_state?: 'open' | 'closed' | 'all'): Promise<Milestone[]>;
56
+ }
57
+ //# sourceMappingURL=linear.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linear.d.ts","sourceRoot":"","sources":["../../../src/work/providers/linear.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EACL,UAAU,EACV,KAAK,EACL,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,OAAO,EACP,KAAK,EACL,SAAS,EACT,sBAAsB,EACtB,YAAY,EACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGxC;;;;;;;;GAQG;AACH,qBAAa,kBAAmB,YAAW,YAAY;IACrD,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAU;IAEtC,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,UAAU;IAW9B,oCAAoC;IACpC,SAAS,CAAC,SAAS,IAAI,MAAM;IAI7B,OAAO,CAAC,cAAc;IAQhB,WAAW,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IAIzD,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAIrD,WAAW,CACf,QAAQ,EAAE,MAAM,GAAG,MAAM,EACzB,QAAQ,EAAE,kBAAkB,GAC3B,OAAO,CAAC,KAAK,CAAC;IAIX,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAIrD,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAItD,YAAY,CAChB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,YAAY,GACtB,OAAO,CAAC,KAAK,EAAE,CAAC;IAIb,WAAW,CACf,QAAQ,EAAE,MAAM,GAAG,MAAM,EACzB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,KAAK,CAAC;IAIX,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAIxD,aAAa,CACjB,QAAQ,EAAE,MAAM,GAAG,MAAM,EACzB,KAAK,EAAE,MAAM,EACb,aAAa,CAAC,EAAE,YAAY,GAC3B,OAAO,CAAC,OAAO,CAAC;IAIb,YAAY,CAChB,QAAQ,EAAE,MAAM,GAAG,MAAM,EACzB,QAAQ,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5C,OAAO,CAAC,OAAO,EAAE,CAAC;IAIf,SAAS,CACb,QAAQ,EAAE,MAAM,GAAG,MAAM,EACzB,OAAO,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC,KAAK,EAAE,CAAC;IAIb,YAAY,CAChB,QAAQ,EAAE,MAAM,GAAG,MAAM,EACzB,OAAO,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC,IAAI,CAAC;IAIV,SAAS,CACb,QAAQ,EAAE,MAAM,GAAG,MAAM,EACzB,OAAO,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC,KAAK,EAAE,CAAC;IAIb,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAIxD,eAAe,CACnB,QAAQ,EAAE,sBAAsB,GAC/B,OAAO,CAAC,SAAS,CAAC;IAIf,YAAY,CAChB,QAAQ,EAAE,MAAM,GAAG,MAAM,EACzB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,KAAK,CAAC;IAIX,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAI1D,cAAc,CAClB,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,GACjC,OAAO,CAAC,SAAS,EAAE,CAAC;CAGxB"}
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ /**
3
+ * @fractary/core - Linear Work Provider
4
+ *
5
+ * ⚠️ STUB IMPLEMENTATION - NOT YET FUNCTIONAL
6
+ *
7
+ * This provider is included for future compatibility but is not currently implemented.
8
+ * All methods will throw ProviderError when called.
9
+ *
10
+ * Use GitHubWorkProvider for a fully functional work tracking provider.
11
+ *
12
+ * Future implementation will include:
13
+ * - Linear GraphQL API integration
14
+ * - Issue creation and management
15
+ * - Project and team support
16
+ * - Cycle management
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.LinearWorkProvider = void 0;
20
+ const errors_1 = require("../../common/errors");
21
+ /**
22
+ * Linear Issues provider
23
+ *
24
+ * Note: This is a stub implementation. Full Linear support requires:
25
+ * - Linear GraphQL API integration
26
+ * - Team/workspace configuration
27
+ * - Cycle support (Linear's equivalent of milestones)
28
+ * - Label management
29
+ */
30
+ class LinearWorkProvider {
31
+ platform = 'linear';
32
+ // Stored for future API implementation
33
+ teamId;
34
+ constructor(config) {
35
+ if (!config.project) {
36
+ throw new errors_1.ProviderError('linear', 'init', 'Linear work provider requires project (team_id) in config');
37
+ }
38
+ this.teamId = config.project;
39
+ }
40
+ /** Get the team ID for API calls */
41
+ getTeamId() {
42
+ return this.teamId;
43
+ }
44
+ notImplemented(operation) {
45
+ throw new errors_1.ProviderError('linear', operation, `Linear ${operation} not yet implemented`);
46
+ }
47
+ async createIssue(_options) {
48
+ this.notImplemented('createIssue');
49
+ }
50
+ async fetchIssue(_issueId) {
51
+ this.notImplemented('fetchIssue');
52
+ }
53
+ async updateIssue(_issueId, _options) {
54
+ this.notImplemented('updateIssue');
55
+ }
56
+ async closeIssue(_issueId) {
57
+ this.notImplemented('closeIssue');
58
+ }
59
+ async reopenIssue(_issueId) {
60
+ this.notImplemented('reopenIssue');
61
+ }
62
+ async searchIssues(_query, _filters) {
63
+ this.notImplemented('searchIssues');
64
+ }
65
+ async assignIssue(_issueId, _assignee) {
66
+ this.notImplemented('assignIssue');
67
+ }
68
+ async unassignIssue(_issueId) {
69
+ this.notImplemented('unassignIssue');
70
+ }
71
+ async createComment(_issueId, _body, _faberContext) {
72
+ this.notImplemented('createComment');
73
+ }
74
+ async listComments(_issueId, _options) {
75
+ this.notImplemented('listComments');
76
+ }
77
+ async addLabels(_issueId, _labels) {
78
+ this.notImplemented('addLabels');
79
+ }
80
+ async removeLabels(_issueId, _labels) {
81
+ this.notImplemented('removeLabels');
82
+ }
83
+ async setLabels(_issueId, _labels) {
84
+ this.notImplemented('setLabels');
85
+ }
86
+ async listLabels(_issueId) {
87
+ this.notImplemented('listLabels');
88
+ }
89
+ async createMilestone(_options) {
90
+ this.notImplemented('createMilestone');
91
+ }
92
+ async setMilestone(_issueId, _milestone) {
93
+ this.notImplemented('setMilestone');
94
+ }
95
+ async removeMilestone(_issueId) {
96
+ this.notImplemented('removeMilestone');
97
+ }
98
+ async listMilestones(_state) {
99
+ this.notImplemented('listMilestones');
100
+ }
101
+ }
102
+ exports.LinearWorkProvider = LinearWorkProvider;
103
+ //# sourceMappingURL=linear.js.map