@qelos/aidev 0.3.0 → 0.4.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.
- package/.env.aidev.example +81 -62
- package/CONTRIBUTING.md +78 -78
- package/LICENSE +21 -21
- package/README.md +499 -467
- package/dist/__tests__/clickup-format.test.d.ts +2 -0
- package/dist/__tests__/clickup-format.test.d.ts.map +1 -0
- package/dist/__tests__/clickup-format.test.js +256 -0
- package/dist/__tests__/clickup-format.test.js.map +1 -0
- package/dist/__tests__/hooks.test.d.ts +2 -0
- package/dist/__tests__/hooks.test.d.ts.map +1 -0
- package/dist/__tests__/hooks.test.js +329 -0
- package/dist/__tests__/hooks.test.js.map +1 -0
- package/dist/__tests__/init.test.js +33 -0
- package/dist/__tests__/init.test.js.map +1 -1
- package/dist/__tests__/local-provider.test.js +31 -31
- package/dist/__tests__/platform.test.js +5 -5
- package/dist/__tests__/providers.test.js +166 -0
- package/dist/__tests__/providers.test.js.map +1 -1
- package/dist/__tests__/run.test.js +21 -8
- package/dist/__tests__/run.test.js.map +1 -1
- package/dist/cli.js +5 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/help.d.ts.map +1 -1
- package/dist/commands/help.js +67 -61
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/init.d.ts +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +125 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/run.d.ts +2 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +248 -119
- package/dist/commands/run.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +16 -1
- package/dist/config.js.map +1 -1
- package/dist/github.js +23 -23
- package/dist/hooks.d.ts +106 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +146 -0
- package/dist/hooks.js.map +1 -0
- package/dist/providers/clickup-format.d.ts +16 -0
- package/dist/providers/clickup-format.d.ts.map +1 -0
- package/dist/providers/clickup-format.js +255 -0
- package/dist/providers/clickup-format.js.map +1 -0
- package/dist/providers/clickup.d.ts.map +1 -1
- package/dist/providers/clickup.js +8 -6
- package/dist/providers/clickup.js.map +1 -1
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +2 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/linear.js +70 -70
- package/dist/providers/monday.js +39 -39
- package/dist/providers/trello.d.ts +32 -0
- package/dist/providers/trello.d.ts.map +1 -0
- package/dist/providers/trello.js +227 -0
- package/dist/providers/trello.js.map +1 -0
- package/dist/types.d.ts +12 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +51 -50
- package/scripts/run-tests.cjs +18 -18
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Conversion utilities between ClickUp's Quill Delta-like block format and Markdown.
|
|
4
|
+
*
|
|
5
|
+
* ClickUp comments use a block array where each block has `text` and optional
|
|
6
|
+
* `attributes`. Inline attributes (bold, italic, code, link) decorate the text
|
|
7
|
+
* itself; line-level attributes (list, code-block) appear on the trailing `\n`
|
|
8
|
+
* character and apply to the preceding line content.
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.clickupBlocksToMarkdown = clickupBlocksToMarkdown;
|
|
12
|
+
exports.markdownToClickupBlocks = markdownToClickupBlocks;
|
|
13
|
+
/* ------------------------------------------------------------------ */
|
|
14
|
+
/* ClickUp blocks → Markdown */
|
|
15
|
+
/* ------------------------------------------------------------------ */
|
|
16
|
+
function inlineToMarkdown(text, attrs) {
|
|
17
|
+
if (!text)
|
|
18
|
+
return '';
|
|
19
|
+
let out = text;
|
|
20
|
+
if (attrs.code)
|
|
21
|
+
out = `\`${out}\``;
|
|
22
|
+
if (attrs.bold)
|
|
23
|
+
out = `**${out}**`;
|
|
24
|
+
if (attrs.italic)
|
|
25
|
+
out = `*${out}*`;
|
|
26
|
+
if (attrs.link && typeof attrs.link === 'string')
|
|
27
|
+
out = `[${out}](${attrs.link})`;
|
|
28
|
+
return out;
|
|
29
|
+
}
|
|
30
|
+
function resolveListType(attr) {
|
|
31
|
+
if (!attr)
|
|
32
|
+
return undefined;
|
|
33
|
+
if (typeof attr === 'string')
|
|
34
|
+
return attr;
|
|
35
|
+
if (typeof attr === 'object' && attr !== null && 'list' in attr) {
|
|
36
|
+
return String(attr.list);
|
|
37
|
+
}
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
function resolveCodeBlock(attr) {
|
|
41
|
+
if (!attr)
|
|
42
|
+
return undefined;
|
|
43
|
+
if (typeof attr === 'string')
|
|
44
|
+
return attr;
|
|
45
|
+
if (typeof attr === 'object' && attr !== null && 'code-block' in attr) {
|
|
46
|
+
return String(attr['code-block']);
|
|
47
|
+
}
|
|
48
|
+
return 'plain';
|
|
49
|
+
}
|
|
50
|
+
function clickupBlocksToMarkdown(blocks) {
|
|
51
|
+
if (!blocks || blocks.length === 0)
|
|
52
|
+
return '';
|
|
53
|
+
const segments = blocks.map((b) => ({
|
|
54
|
+
text: b.text ?? '',
|
|
55
|
+
attrs: b.attributes ?? {},
|
|
56
|
+
}));
|
|
57
|
+
let result = '';
|
|
58
|
+
let lineContent = '';
|
|
59
|
+
let inCodeBlock = false;
|
|
60
|
+
let orderedCounter = 0;
|
|
61
|
+
const flushLine = (lineAttrs) => {
|
|
62
|
+
const listType = resolveListType(lineAttrs.list);
|
|
63
|
+
const codeBlock = resolveCodeBlock(lineAttrs['code-block']);
|
|
64
|
+
if (codeBlock) {
|
|
65
|
+
if (!inCodeBlock) {
|
|
66
|
+
result += '```\n';
|
|
67
|
+
inCodeBlock = true;
|
|
68
|
+
}
|
|
69
|
+
result += lineContent + '\n';
|
|
70
|
+
orderedCounter = 0;
|
|
71
|
+
}
|
|
72
|
+
else if (listType) {
|
|
73
|
+
if (inCodeBlock) {
|
|
74
|
+
result += '```\n';
|
|
75
|
+
inCodeBlock = false;
|
|
76
|
+
}
|
|
77
|
+
switch (listType) {
|
|
78
|
+
case 'ordered':
|
|
79
|
+
orderedCounter++;
|
|
80
|
+
result += `${orderedCounter}. ${lineContent}\n`;
|
|
81
|
+
break;
|
|
82
|
+
case 'checked':
|
|
83
|
+
result += `- [x] ${lineContent}\n`;
|
|
84
|
+
orderedCounter = 0;
|
|
85
|
+
break;
|
|
86
|
+
case 'unchecked':
|
|
87
|
+
result += `- [ ] ${lineContent}\n`;
|
|
88
|
+
orderedCounter = 0;
|
|
89
|
+
break;
|
|
90
|
+
default: // bullet, toggled
|
|
91
|
+
result += `- ${lineContent}\n`;
|
|
92
|
+
orderedCounter = 0;
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
if (inCodeBlock) {
|
|
98
|
+
result += '```\n';
|
|
99
|
+
inCodeBlock = false;
|
|
100
|
+
}
|
|
101
|
+
result += lineContent + '\n';
|
|
102
|
+
orderedCounter = 0;
|
|
103
|
+
}
|
|
104
|
+
lineContent = '';
|
|
105
|
+
};
|
|
106
|
+
for (const seg of segments) {
|
|
107
|
+
const { attrs } = seg;
|
|
108
|
+
const parts = seg.text.split('\n');
|
|
109
|
+
for (let i = 0; i < parts.length; i++) {
|
|
110
|
+
if (parts[i].length > 0) {
|
|
111
|
+
// Inside code blocks, don't apply inline formatting
|
|
112
|
+
if (inCodeBlock || resolveCodeBlock(attrs['code-block'])) {
|
|
113
|
+
lineContent += parts[i];
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
lineContent += inlineToMarkdown(parts[i], attrs);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
// Each split boundary represents a \n in the original text
|
|
120
|
+
if (i < parts.length - 1) {
|
|
121
|
+
flushLine(attrs);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
// Flush remaining content
|
|
126
|
+
if (inCodeBlock) {
|
|
127
|
+
if (lineContent)
|
|
128
|
+
result += lineContent + '\n';
|
|
129
|
+
result += '```';
|
|
130
|
+
}
|
|
131
|
+
else if (lineContent) {
|
|
132
|
+
result += lineContent;
|
|
133
|
+
}
|
|
134
|
+
return result.trimEnd();
|
|
135
|
+
}
|
|
136
|
+
/* ------------------------------------------------------------------ */
|
|
137
|
+
/* Markdown → ClickUp blocks */
|
|
138
|
+
/* ------------------------------------------------------------------ */
|
|
139
|
+
/**
|
|
140
|
+
* Parse inline markdown formatting into ClickUp blocks.
|
|
141
|
+
*
|
|
142
|
+
* Handles: **bold**, *italic*, `code`, [text](url).
|
|
143
|
+
* `baseAttrs` is merged into every emitted block (used for headings → bold).
|
|
144
|
+
*/
|
|
145
|
+
function parseInline(text, out, baseAttrs = {}) {
|
|
146
|
+
// Order matters: bold before italic so ** is tried first
|
|
147
|
+
const pattern = /(\*\*(.+?)\*\*|\*(.+?)\*|`([^`]+)`|\[([^\]]+)\]\(([^)]+)\))/g;
|
|
148
|
+
let last = 0;
|
|
149
|
+
let m;
|
|
150
|
+
while ((m = pattern.exec(text)) !== null) {
|
|
151
|
+
// Plain text before match
|
|
152
|
+
if (m.index > last) {
|
|
153
|
+
pushBlock(out, text.slice(last, m.index), baseAttrs);
|
|
154
|
+
}
|
|
155
|
+
if (m[2] !== undefined) {
|
|
156
|
+
// **bold**
|
|
157
|
+
pushBlock(out, m[2], { ...baseAttrs, bold: true });
|
|
158
|
+
}
|
|
159
|
+
else if (m[3] !== undefined) {
|
|
160
|
+
// *italic*
|
|
161
|
+
pushBlock(out, m[3], { ...baseAttrs, italic: true });
|
|
162
|
+
}
|
|
163
|
+
else if (m[4] !== undefined) {
|
|
164
|
+
// `code`
|
|
165
|
+
pushBlock(out, m[4], { ...baseAttrs, code: true });
|
|
166
|
+
}
|
|
167
|
+
else if (m[5] !== undefined && m[6] !== undefined) {
|
|
168
|
+
// [text](url)
|
|
169
|
+
pushBlock(out, m[5], { ...baseAttrs, link: m[6] });
|
|
170
|
+
}
|
|
171
|
+
last = m.index + m[0].length;
|
|
172
|
+
}
|
|
173
|
+
// Remaining text after last match
|
|
174
|
+
if (last < text.length) {
|
|
175
|
+
pushBlock(out, text.slice(last), baseAttrs);
|
|
176
|
+
}
|
|
177
|
+
else if (last === 0 && text.length === 0) {
|
|
178
|
+
// empty text, nothing to push
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
function pushBlock(out, text, attrs) {
|
|
182
|
+
const clean = {};
|
|
183
|
+
for (const [k, v] of Object.entries(attrs)) {
|
|
184
|
+
if (v !== undefined)
|
|
185
|
+
clean[k] = v;
|
|
186
|
+
}
|
|
187
|
+
out.push(Object.keys(clean).length > 0
|
|
188
|
+
? { text, attributes: clean }
|
|
189
|
+
: { text });
|
|
190
|
+
}
|
|
191
|
+
function markdownToClickupBlocks(markdown) {
|
|
192
|
+
const blocks = [];
|
|
193
|
+
const lines = markdown.split('\n');
|
|
194
|
+
let inCodeBlock = false;
|
|
195
|
+
let codeLang = '';
|
|
196
|
+
for (let i = 0; i < lines.length; i++) {
|
|
197
|
+
const line = lines[i];
|
|
198
|
+
// Code fence toggle
|
|
199
|
+
if (line.startsWith('```')) {
|
|
200
|
+
if (!inCodeBlock) {
|
|
201
|
+
inCodeBlock = true;
|
|
202
|
+
codeLang = line.slice(3).trim() || 'plain';
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
inCodeBlock = false;
|
|
206
|
+
codeLang = '';
|
|
207
|
+
}
|
|
208
|
+
continue;
|
|
209
|
+
}
|
|
210
|
+
if (inCodeBlock) {
|
|
211
|
+
blocks.push({ text: line });
|
|
212
|
+
blocks.push({ text: '\n', attributes: { 'code-block': { 'code-block': codeLang } } });
|
|
213
|
+
continue;
|
|
214
|
+
}
|
|
215
|
+
// Heading (## Text) → bold text
|
|
216
|
+
const headingMatch = line.match(/^#{1,6}\s+(.*)/);
|
|
217
|
+
if (headingMatch) {
|
|
218
|
+
parseInline(headingMatch[1], blocks, { bold: true });
|
|
219
|
+
blocks.push({ text: '\n' });
|
|
220
|
+
continue;
|
|
221
|
+
}
|
|
222
|
+
// Checklist: - [x] or - [ ]
|
|
223
|
+
const checkMatch = line.match(/^[-*+]\s+\[([ xX])\]\s+(.*)/);
|
|
224
|
+
if (checkMatch) {
|
|
225
|
+
const checked = checkMatch[1].toLowerCase() === 'x';
|
|
226
|
+
parseInline(checkMatch[2], blocks);
|
|
227
|
+
blocks.push({ text: '\n', attributes: { list: { list: checked ? 'checked' : 'unchecked' } } });
|
|
228
|
+
continue;
|
|
229
|
+
}
|
|
230
|
+
// Bullet list: - text, * text, + text
|
|
231
|
+
const bulletMatch = line.match(/^[-*+]\s+(.*)/);
|
|
232
|
+
if (bulletMatch) {
|
|
233
|
+
parseInline(bulletMatch[1], blocks);
|
|
234
|
+
blocks.push({ text: '\n', attributes: { list: { list: 'bullet' } } });
|
|
235
|
+
continue;
|
|
236
|
+
}
|
|
237
|
+
// Ordered list: 1. text or 1) text
|
|
238
|
+
const orderedMatch = line.match(/^\d+[.)]\s+(.*)/);
|
|
239
|
+
if (orderedMatch) {
|
|
240
|
+
parseInline(orderedMatch[1], blocks);
|
|
241
|
+
blocks.push({ text: '\n', attributes: { list: { list: 'ordered' } } });
|
|
242
|
+
continue;
|
|
243
|
+
}
|
|
244
|
+
// Regular line
|
|
245
|
+
if (line === '') {
|
|
246
|
+
blocks.push({ text: '\n' });
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
parseInline(line, blocks);
|
|
250
|
+
blocks.push({ text: '\n' });
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
return blocks;
|
|
254
|
+
}
|
|
255
|
+
//# sourceMappingURL=clickup-format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clickup-format.js","sourceRoot":"","sources":["../../src/providers/clickup-format.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clickup.d.ts","sourceRoot":"","sources":["../../src/providers/clickup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"clickup.d.ts","sourceRoot":"","sources":["../../src/providers/clickup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AActC,qBAAa,eAAgB,YAAW,YAAY;IAClD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,UAAU,CAAS;gBAEf,MAAM,EAAE,MAAM;YAUZ,OAAO;IA4CrB,OAAO,CAAC,gBAAgB;YAOV,oBAAoB;IAyB5B,UAAU,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAoD7B,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASxD,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAyC/C,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3D,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;CA+BtE"}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ClickUpProvider = void 0;
|
|
4
4
|
const logger_1 = require("../logger");
|
|
5
5
|
const assets_1 = require("./assets");
|
|
6
|
+
const clickup_format_1 = require("./clickup-format");
|
|
6
7
|
class ClickUpProvider {
|
|
7
8
|
constructor(config) {
|
|
8
9
|
this.apiKey = config.clickupApiKey;
|
|
@@ -73,7 +74,7 @@ class ClickUpProvider {
|
|
|
73
74
|
async fetchTasks() {
|
|
74
75
|
logger_1.logger.debug(`Fetching tasks with tag "${this.tag}" from team ${this.teamId}`);
|
|
75
76
|
const tagFilter = this.tag === '*' ? '' : `tags[]=${encodeURIComponent(this.tag)}&`;
|
|
76
|
-
const data = await this.request(`/team/${this.teamId}/task?${tagFilter}subtasks=true&include_closed=false`);
|
|
77
|
+
const data = await this.request(`/team/${this.teamId}/task?${tagFilter}subtasks=true&include_closed=false&include_markdown_description=true`);
|
|
77
78
|
const pendingStatus = this.pendingStatus.toLowerCase();
|
|
78
79
|
const openStatus = this.openStatus.toLowerCase();
|
|
79
80
|
const eligibleTasks = data.tasks.filter((t) => {
|
|
@@ -91,7 +92,7 @@ class ClickUpProvider {
|
|
|
91
92
|
return {
|
|
92
93
|
id: t.id,
|
|
93
94
|
name: t.name,
|
|
94
|
-
description: (0, assets_1.appendAttachmentPaths)(t.description || '', attachments),
|
|
95
|
+
description: (0, assets_1.appendAttachmentPaths)(t.markdown_description || t.description || '', attachments),
|
|
95
96
|
status: t.status.status.toLowerCase(),
|
|
96
97
|
url: t.url,
|
|
97
98
|
tags: t.tags.map((tag) => tag.name),
|
|
@@ -101,9 +102,10 @@ class ClickUpProvider {
|
|
|
101
102
|
}
|
|
102
103
|
async postComment(taskId, text) {
|
|
103
104
|
logger_1.logger.debug(`Posting comment to task ${taskId}`);
|
|
105
|
+
const blocks = (0, clickup_format_1.markdownToClickupBlocks)(text);
|
|
104
106
|
await this.request(`/task/${taskId}/comment`, {
|
|
105
107
|
method: 'POST',
|
|
106
|
-
body: JSON.stringify({
|
|
108
|
+
body: JSON.stringify({ comment: blocks }),
|
|
107
109
|
});
|
|
108
110
|
}
|
|
109
111
|
async getComments(taskId) {
|
|
@@ -117,10 +119,10 @@ class ClickUpProvider {
|
|
|
117
119
|
text = c.comment_text;
|
|
118
120
|
}
|
|
119
121
|
else if (Array.isArray(c.comment_text) && c.comment_text.length > 0) {
|
|
120
|
-
text =
|
|
122
|
+
text = (0, clickup_format_1.clickupBlocksToMarkdown)(c.comment_text);
|
|
121
123
|
}
|
|
122
124
|
else if (Array.isArray(c.comment) && c.comment.length > 0) {
|
|
123
|
-
text =
|
|
125
|
+
text = (0, clickup_format_1.clickupBlocksToMarkdown)(c.comment);
|
|
124
126
|
}
|
|
125
127
|
else {
|
|
126
128
|
text = '';
|
|
@@ -148,7 +150,7 @@ class ClickUpProvider {
|
|
|
148
150
|
}
|
|
149
151
|
const body = {
|
|
150
152
|
name: params.title,
|
|
151
|
-
|
|
153
|
+
markdown_description: params.description,
|
|
152
154
|
tags: params.tags,
|
|
153
155
|
};
|
|
154
156
|
if (params.priority)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clickup.js","sourceRoot":"","sources":["../../src/providers/clickup.ts"],"names":[],"mappings":";;;AAEA,sCAAmC;AACnC,qCAKkB;
|
|
1
|
+
{"version":3,"file":"clickup.js","sourceRoot":"","sources":["../../src/providers/clickup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,OAAO,EAAiB,QAAQ,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,OAAO,EAAiB,QAAQ,EAAE,MAAM,SAAS,CAAC;AAKlD,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,YAAY,CAmB5E;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
package/dist/providers/index.js
CHANGED
|
@@ -7,6 +7,7 @@ const linear_1 = require("./linear");
|
|
|
7
7
|
const local_1 = require("./local");
|
|
8
8
|
const monday_1 = require("./monday");
|
|
9
9
|
const notion_1 = require("./notion");
|
|
10
|
+
const trello_1 = require("./trello");
|
|
10
11
|
function createProvider(config, mode) {
|
|
11
12
|
switch (config.provider.toLowerCase()) {
|
|
12
13
|
case 'clickup':
|
|
@@ -22,7 +23,7 @@ function createProvider(config, mode) {
|
|
|
22
23
|
case 'notion':
|
|
23
24
|
return new notion_1.NotionProvider(config);
|
|
24
25
|
case 'trello':
|
|
25
|
-
|
|
26
|
+
return new trello_1.TrelloProvider(config);
|
|
26
27
|
default:
|
|
27
28
|
throw new Error(`Unknown provider: ${config.provider}`);
|
|
28
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":";;AAUA,wCAmBC;AA3BD,uCAA4C;AAC5C,iCAAsC;AACtC,qCAA0C;AAC1C,mCAAkD;AAClD,qCAA0C;AAC1C,qCAA0C;AAC1C,qCAA0C;AAE1C,SAAgB,cAAc,CAAC,MAAc,EAAE,IAAe;IAC5D,QAAQ,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;QACtC,KAAK,SAAS;YACZ,OAAO,IAAI,yBAAe,CAAC,MAAM,CAAC,CAAC;QACrC,KAAK,MAAM;YACT,OAAO,IAAI,mBAAY,CAAC,MAAM,CAAC,CAAC;QAClC,KAAK,QAAQ;YACX,OAAO,IAAI,uBAAc,CAAC,MAAM,CAAC,CAAC;QACpC,KAAK,OAAO;YACV,OAAO,IAAI,qBAAa,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,CAAC,CAAC;QAC1D,KAAK,QAAQ;YACX,OAAO,IAAI,uBAAc,CAAC,MAAM,CAAC,CAAC;QACpC,KAAK,QAAQ;YACX,OAAO,IAAI,uBAAc,CAAC,MAAM,CAAC,CAAC;QACpC,KAAK,QAAQ;YACX,OAAO,IAAI,uBAAc,CAAC,MAAM,CAAC,CAAC;QACpC;YACE,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC"}
|
package/dist/providers/linear.js
CHANGED
|
@@ -35,16 +35,16 @@ class LinearProvider {
|
|
|
35
35
|
return raw.data;
|
|
36
36
|
}
|
|
37
37
|
async fetchWorkflowStateIds() {
|
|
38
|
-
const query = `
|
|
39
|
-
query WorkflowStates($filter: WorkflowStateFilter) {
|
|
40
|
-
workflowStates(filter: $filter) {
|
|
41
|
-
nodes {
|
|
42
|
-
id
|
|
43
|
-
name
|
|
44
|
-
type
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
38
|
+
const query = `
|
|
39
|
+
query WorkflowStates($filter: WorkflowStateFilter) {
|
|
40
|
+
workflowStates(filter: $filter) {
|
|
41
|
+
nodes {
|
|
42
|
+
id
|
|
43
|
+
name
|
|
44
|
+
type
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
48
|
`;
|
|
49
49
|
const data = await this.graphql(query, { filter: { team: { id: { eq: this.teamId } } } });
|
|
50
50
|
const byName = new Map();
|
|
@@ -55,21 +55,21 @@ class LinearProvider {
|
|
|
55
55
|
}
|
|
56
56
|
async fetchTasks() {
|
|
57
57
|
logger_1.logger.debug(`Fetching Linear issues for team ${this.teamId} with label "${this.label}"`);
|
|
58
|
-
const query = `
|
|
59
|
-
query Issues($filter: IssueFilter) {
|
|
60
|
-
issues(filter: $filter, first: 100) {
|
|
61
|
-
nodes {
|
|
62
|
-
id
|
|
63
|
-
identifier
|
|
64
|
-
title
|
|
65
|
-
description
|
|
66
|
-
url
|
|
67
|
-
state { id name type }
|
|
68
|
-
priority
|
|
69
|
-
labels { nodes { name } }
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
58
|
+
const query = `
|
|
59
|
+
query Issues($filter: IssueFilter) {
|
|
60
|
+
issues(filter: $filter, first: 100) {
|
|
61
|
+
nodes {
|
|
62
|
+
id
|
|
63
|
+
identifier
|
|
64
|
+
title
|
|
65
|
+
description
|
|
66
|
+
url
|
|
67
|
+
state { id name type }
|
|
68
|
+
priority
|
|
69
|
+
labels { nodes { name } }
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
73
|
`;
|
|
74
74
|
const filter = {
|
|
75
75
|
team: { id: { eq: this.teamId } },
|
|
@@ -95,13 +95,13 @@ class LinearProvider {
|
|
|
95
95
|
async postComment(taskId, text) {
|
|
96
96
|
logger_1.logger.debug(`Posting comment to Linear issue ${taskId}`);
|
|
97
97
|
const issueId = await this.resolveIssueId(taskId);
|
|
98
|
-
const mutation = `
|
|
99
|
-
mutation CreateComment($input: CommentCreateInput!) {
|
|
100
|
-
commentCreate(input: $input) {
|
|
101
|
-
success
|
|
102
|
-
comment { id }
|
|
103
|
-
}
|
|
104
|
-
}
|
|
98
|
+
const mutation = `
|
|
99
|
+
mutation CreateComment($input: CommentCreateInput!) {
|
|
100
|
+
commentCreate(input: $input) {
|
|
101
|
+
success
|
|
102
|
+
comment { id }
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
105
|
`;
|
|
106
106
|
await this.graphql(mutation, {
|
|
107
107
|
input: { issueId, body: text },
|
|
@@ -110,19 +110,19 @@ class LinearProvider {
|
|
|
110
110
|
async getComments(taskId) {
|
|
111
111
|
logger_1.logger.debug(`Fetching comments for Linear issue ${taskId}`);
|
|
112
112
|
const issueId = await this.resolveIssueId(taskId);
|
|
113
|
-
const query = `
|
|
114
|
-
query IssueComments($id: String!) {
|
|
115
|
-
issue(id: $id) {
|
|
116
|
-
comments {
|
|
117
|
-
nodes {
|
|
118
|
-
id
|
|
119
|
-
body
|
|
120
|
-
user { name id }
|
|
121
|
-
createdAt
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}
|
|
113
|
+
const query = `
|
|
114
|
+
query IssueComments($id: String!) {
|
|
115
|
+
issue(id: $id) {
|
|
116
|
+
comments {
|
|
117
|
+
nodes {
|
|
118
|
+
id
|
|
119
|
+
body
|
|
120
|
+
user { name id }
|
|
121
|
+
createdAt
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
126
|
`;
|
|
127
127
|
const data = await this.graphql(query, { id: issueId });
|
|
128
128
|
const nodes = data.issue?.comments?.nodes ?? [];
|
|
@@ -137,12 +137,12 @@ class LinearProvider {
|
|
|
137
137
|
}
|
|
138
138
|
async resolveIssueId(identifier) {
|
|
139
139
|
if (/^[A-Z]+-\d+$/i.test(identifier)) {
|
|
140
|
-
const query = `
|
|
141
|
-
query IssueByIdentifier($filter: IssueFilter) {
|
|
142
|
-
issues(filter: $filter, first: 1) {
|
|
143
|
-
nodes { id }
|
|
144
|
-
}
|
|
145
|
-
}
|
|
140
|
+
const query = `
|
|
141
|
+
query IssueByIdentifier($filter: IssueFilter) {
|
|
142
|
+
issues(filter: $filter, first: 1) {
|
|
143
|
+
nodes { id }
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
146
|
`;
|
|
147
147
|
const data = await this.graphql(query, {
|
|
148
148
|
filter: { identifier: { eq: identifier } },
|
|
@@ -151,12 +151,12 @@ class LinearProvider {
|
|
|
151
151
|
if (id)
|
|
152
152
|
return id;
|
|
153
153
|
}
|
|
154
|
-
const byIdQuery = `
|
|
155
|
-
query Issue($id: String!) {
|
|
156
|
-
issue(id: $id) {
|
|
157
|
-
id
|
|
158
|
-
}
|
|
159
|
-
}
|
|
154
|
+
const byIdQuery = `
|
|
155
|
+
query Issue($id: String!) {
|
|
156
|
+
issue(id: $id) {
|
|
157
|
+
id
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
160
|
`;
|
|
161
161
|
const byId = await this.graphql(byIdQuery, { id: identifier });
|
|
162
162
|
if (byId.issue?.id)
|
|
@@ -173,12 +173,12 @@ class LinearProvider {
|
|
|
173
173
|
throw new Error(`Linear: no workflow state matching "${status}". Available: ${names}`);
|
|
174
174
|
}
|
|
175
175
|
const issueId = await this.resolveIssueId(taskId);
|
|
176
|
-
const mutation = `
|
|
177
|
-
mutation IssueUpdate($id: String!, $input: IssueUpdateInput!) {
|
|
178
|
-
issueUpdate(id: $id, input: $input) {
|
|
179
|
-
success
|
|
180
|
-
}
|
|
181
|
-
}
|
|
176
|
+
const mutation = `
|
|
177
|
+
mutation IssueUpdate($id: String!, $input: IssueUpdateInput!) {
|
|
178
|
+
issueUpdate(id: $id, input: $input) {
|
|
179
|
+
success
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
182
|
`;
|
|
183
183
|
await this.graphql(mutation, {
|
|
184
184
|
id: issueId,
|
|
@@ -186,13 +186,13 @@ class LinearProvider {
|
|
|
186
186
|
});
|
|
187
187
|
}
|
|
188
188
|
async createTask(params) {
|
|
189
|
-
const mutation = `
|
|
190
|
-
mutation IssueCreate($input: IssueCreateInput!) {
|
|
191
|
-
issueCreate(input: $input) {
|
|
192
|
-
success
|
|
193
|
-
issue { id identifier url }
|
|
194
|
-
}
|
|
195
|
-
}
|
|
189
|
+
const mutation = `
|
|
190
|
+
mutation IssueCreate($input: IssueCreateInput!) {
|
|
191
|
+
issueCreate(input: $input) {
|
|
192
|
+
success
|
|
193
|
+
issue { id identifier url }
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
196
|
`;
|
|
197
197
|
const input = {
|
|
198
198
|
teamId: this.teamId,
|