@qelos/aidev 0.2.8 → 0.2.11
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 +51 -37
- package/CONTRIBUTING.md +78 -78
- package/LICENSE +21 -21
- package/README.md +455 -453
- package/dist/__tests__/ai-runners.test.js +15 -10
- package/dist/__tests__/ai-runners.test.js.map +1 -1
- package/dist/__tests__/init.test.js +122 -1
- package/dist/__tests__/init.test.js.map +1 -1
- package/dist/__tests__/local-provider.test.js +31 -31
- package/dist/__tests__/platform.test.js +235 -20
- package/dist/__tests__/platform.test.js.map +1 -1
- package/dist/__tests__/providers.test.js +413 -21
- package/dist/__tests__/providers.test.js.map +1 -1
- package/dist/__tests__/run.test.js +19 -0
- package/dist/__tests__/run.test.js.map +1 -1
- package/dist/ai/antigravity.d.ts +12 -0
- package/dist/ai/antigravity.d.ts.map +1 -0
- package/dist/ai/antigravity.js +70 -0
- package/dist/ai/antigravity.js.map +1 -0
- package/dist/ai/codex.d.ts +11 -0
- package/dist/ai/codex.d.ts.map +1 -0
- package/dist/ai/codex.js +49 -0
- package/dist/ai/codex.js.map +1 -0
- package/dist/ai/windsurf.d.ts +7 -0
- package/dist/ai/windsurf.d.ts.map +1 -1
- package/dist/ai/windsurf.js +205 -58
- package/dist/ai/windsurf.js.map +1 -1
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/help.js +61 -61
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/init.d.ts +11 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +116 -22
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/run.d.ts +4 -0
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +155 -117
- 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/diagnostics.d.ts.map +1 -1
- package/dist/diagnostics.js +1 -0
- package/dist/diagnostics.js.map +1 -1
- package/dist/github.js +23 -23
- package/dist/platform.d.ts +20 -2
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +74 -3
- package/dist/platform.js.map +1 -1
- package/dist/providers/assets.d.ts +15 -0
- package/dist/providers/assets.d.ts.map +1 -0
- package/dist/providers/assets.js +153 -0
- package/dist/providers/assets.js.map +1 -0
- package/dist/providers/clickup.d.ts +4 -0
- package/dist/providers/clickup.d.ts.map +1 -1
- package/dist/providers/clickup.js +45 -8
- package/dist/providers/clickup.js.map +1 -1
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +6 -0
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/jira.d.ts +11 -0
- package/dist/providers/jira.d.ts.map +1 -1
- package/dist/providers/jira.js +143 -11
- package/dist/providers/jira.js.map +1 -1
- package/dist/providers/linear.d.ts +19 -0
- package/dist/providers/linear.d.ts.map +1 -0
- package/dist/providers/linear.js +214 -0
- package/dist/providers/linear.js.map +1 -0
- package/dist/providers/monday.d.ts +18 -0
- package/dist/providers/monday.d.ts.map +1 -0
- package/dist/providers/monday.js +185 -0
- package/dist/providers/monday.js.map +1 -0
- package/dist/providers/notion.d.ts +21 -0
- package/dist/providers/notion.d.ts.map +1 -0
- package/dist/providers/notion.js +182 -0
- package/dist/providers/notion.js.map +1 -0
- package/dist/types.d.ts +11 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +50 -50
|
@@ -1,13 +1,51 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
37
|
};
|
|
5
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const fs = __importStar(require("node:fs"));
|
|
40
|
+
const os = __importStar(require("node:os"));
|
|
41
|
+
const path = __importStar(require("node:path"));
|
|
6
42
|
const node_test_1 = require("node:test");
|
|
7
43
|
const strict_1 = __importDefault(require("node:assert/strict"));
|
|
8
44
|
const node_test_2 = require("node:test");
|
|
9
45
|
const clickup_1 = require("../providers/clickup");
|
|
10
46
|
const jira_1 = require("../providers/jira");
|
|
47
|
+
const linear_1 = require("../providers/linear");
|
|
48
|
+
const monday_1 = require("../providers/monday");
|
|
11
49
|
const baseClickUpConfig = {
|
|
12
50
|
clickupApiKey: 'test-key',
|
|
13
51
|
clickupTeamId: 'team1',
|
|
@@ -22,15 +60,108 @@ const baseJiraConfig = {
|
|
|
22
60
|
jiraLabel: 'aidev',
|
|
23
61
|
assigneeTag: '',
|
|
24
62
|
};
|
|
25
|
-
|
|
26
|
-
|
|
63
|
+
const baseLinearConfig = {
|
|
64
|
+
linearApiKey: 'lin_api_test',
|
|
65
|
+
linearTeamId: 'team-uuid-123',
|
|
66
|
+
linearLabel: 'aidev',
|
|
67
|
+
linearPendingStatus: 'Backlog',
|
|
68
|
+
linearInReviewStatus: 'In Review',
|
|
69
|
+
assigneeTag: '',
|
|
70
|
+
};
|
|
71
|
+
const baseMondayConfig = {
|
|
72
|
+
mondayApiToken: 'test-token',
|
|
73
|
+
mondayBoardId: '12345',
|
|
74
|
+
mondayStatusColumnId: 'status',
|
|
75
|
+
mondayGroupId: 'topics',
|
|
76
|
+
clickupPendingStatus: 'Working on it',
|
|
77
|
+
clickupInReviewStatus: 'Done',
|
|
78
|
+
};
|
|
79
|
+
function jsonResponse(body) {
|
|
80
|
+
return {
|
|
27
81
|
ok: true,
|
|
28
82
|
status: 200,
|
|
83
|
+
statusText: 'OK',
|
|
29
84
|
text: async () => JSON.stringify(body),
|
|
30
85
|
json: async () => body,
|
|
31
|
-
|
|
86
|
+
arrayBuffer: async () => Buffer.from(JSON.stringify(body)),
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
function binaryResponse(text) {
|
|
90
|
+
return {
|
|
91
|
+
ok: true,
|
|
92
|
+
status: 200,
|
|
93
|
+
statusText: 'OK',
|
|
94
|
+
text: async () => text,
|
|
95
|
+
json: async () => ({ text }),
|
|
96
|
+
arrayBuffer: async () => Buffer.from(text),
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
function mockFetch(body) {
|
|
100
|
+
node_test_2.mock.method(globalThis, 'fetch', async () => jsonResponse(body));
|
|
101
|
+
}
|
|
102
|
+
function withTempCwd(fn) {
|
|
103
|
+
const previous = process.cwd();
|
|
104
|
+
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'aidev-provider-test-'));
|
|
105
|
+
process.chdir(tmpDir);
|
|
106
|
+
return fn(tmpDir).finally(() => {
|
|
107
|
+
process.chdir(previous);
|
|
108
|
+
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
function mockJiraCommentsFetch(comments, attachments = []) {
|
|
112
|
+
node_test_2.mock.method(globalThis, 'fetch', async (input) => {
|
|
113
|
+
const url = String(input);
|
|
114
|
+
if (url.includes('?fields=attachment')) {
|
|
115
|
+
return jsonResponse({ fields: { attachment: attachments } });
|
|
116
|
+
}
|
|
117
|
+
return jsonResponse({ comments });
|
|
118
|
+
});
|
|
32
119
|
}
|
|
33
120
|
// ─── ClickUpProvider.getComments ─────────────────────────────────────────────
|
|
121
|
+
(0, node_test_1.describe)('ClickUpProvider.fetchTasks', () => {
|
|
122
|
+
(0, node_test_1.afterEach)(() => node_test_2.mock.restoreAll());
|
|
123
|
+
(0, node_test_1.it)('downloads task attachments and appends local asset paths to the description', async () => {
|
|
124
|
+
await withTempCwd(async (cwd) => {
|
|
125
|
+
node_test_2.mock.method(globalThis, 'fetch', async (input, init) => {
|
|
126
|
+
const url = String(input);
|
|
127
|
+
if (url.includes('/team/team1/task')) {
|
|
128
|
+
return jsonResponse({
|
|
129
|
+
tasks: [
|
|
130
|
+
{
|
|
131
|
+
id: 'task1',
|
|
132
|
+
name: 'Task with file',
|
|
133
|
+
description: 'Handle the attached screenshot.',
|
|
134
|
+
status: { status: 'open' },
|
|
135
|
+
priority: { id: '1' },
|
|
136
|
+
url: 'https://app.clickup.com/t/task1',
|
|
137
|
+
tags: [{ name: 'aidev' }],
|
|
138
|
+
},
|
|
139
|
+
],
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
if (url.endsWith('/task/task1')) {
|
|
143
|
+
return jsonResponse({
|
|
144
|
+
attachments: [
|
|
145
|
+
{
|
|
146
|
+
id: 'att1',
|
|
147
|
+
title: 'Screenshot 1.png',
|
|
148
|
+
url: 'https://files.example/screenshot.png',
|
|
149
|
+
},
|
|
150
|
+
],
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
strict_1.default.equal(init?.headers instanceof Object ? init.headers.Authorization : undefined, 'test-key');
|
|
154
|
+
return binaryResponse('image-bytes');
|
|
155
|
+
});
|
|
156
|
+
const provider = new clickup_1.ClickUpProvider(baseClickUpConfig);
|
|
157
|
+
const tasks = await provider.fetchTasks();
|
|
158
|
+
strict_1.default.equal(tasks.length, 1);
|
|
159
|
+
strict_1.default.match(tasks[0].description, /Local asset files/);
|
|
160
|
+
strict_1.default.match(tasks[0].description, /\.aidev\/assets\/task1\/att1-Screenshot-1\.png/);
|
|
161
|
+
strict_1.default.ok(fs.existsSync(path.join(cwd, '.aidev', 'assets', 'task1', 'att1-Screenshot-1.png')));
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
});
|
|
34
165
|
(0, node_test_1.describe)('ClickUpProvider.getComments', () => {
|
|
35
166
|
(0, node_test_1.afterEach)(() => node_test_2.mock.restoreAll());
|
|
36
167
|
(0, node_test_1.it)('sorts newest-first API response into oldest-first (ascending by date)', async () => {
|
|
@@ -115,39 +246,300 @@ function mockFetch(body) {
|
|
|
115
246
|
};
|
|
116
247
|
}
|
|
117
248
|
(0, node_test_1.it)('extracts plain text from ADF body', async () => {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
],
|
|
122
|
-
});
|
|
249
|
+
mockJiraCommentsFetch([
|
|
250
|
+
{ id: '1', body: adfComment('hello world'), author: { displayName: 'Alice', accountId: 'a1' }, created: '2024-01-01T10:00:00.000Z' },
|
|
251
|
+
]);
|
|
123
252
|
const provider = new jira_1.JiraProvider(baseJiraConfig);
|
|
124
253
|
const comments = await provider.getComments('PROJ-1');
|
|
125
254
|
strict_1.default.equal(comments[0].text, 'hello world');
|
|
126
255
|
});
|
|
127
256
|
(0, node_test_1.it)('sorts out-of-order API response into ascending date order', async () => {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
],
|
|
134
|
-
});
|
|
257
|
+
mockJiraCommentsFetch([
|
|
258
|
+
{ id: '3', body: adfComment('aidev-continue'), author: { displayName: 'Alice', accountId: 'a1' }, created: '2024-01-01T12:00:00.000Z' },
|
|
259
|
+
{ id: '1', body: adfComment('[aidev] Starting'), author: { displayName: 'bot', accountId: 'b1' }, created: '2024-01-01T10:00:00.000Z' },
|
|
260
|
+
{ id: '2', body: adfComment('User reply'), author: { displayName: 'Alice', accountId: 'a1' }, created: '2024-01-01T11:00:00.000Z' },
|
|
261
|
+
]);
|
|
135
262
|
const provider = new jira_1.JiraProvider(baseJiraConfig);
|
|
136
263
|
const comments = await provider.getComments('PROJ-1');
|
|
137
264
|
strict_1.default.equal(comments[0].text, '[aidev] Starting'); // oldest first
|
|
138
265
|
strict_1.default.equal(comments[2].text, 'aidev-continue'); // newest last
|
|
139
266
|
});
|
|
140
267
|
(0, node_test_1.it)('trigger word is detected when newest comment contains it', async () => {
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
],
|
|
146
|
-
});
|
|
268
|
+
mockJiraCommentsFetch([
|
|
269
|
+
{ id: '1', body: adfComment('[aidev] Clarification needed'), author: { displayName: 'bot', accountId: 'b1' }, created: '2024-01-01T10:00:00.000Z' },
|
|
270
|
+
{ id: '2', body: adfComment('aidev-continue'), author: { displayName: 'Alice', accountId: 'a1' }, created: '2024-01-01T11:00:00.000Z' },
|
|
271
|
+
]);
|
|
147
272
|
const provider = new jira_1.JiraProvider(baseJiraConfig);
|
|
148
273
|
const comments = await provider.getComments('PROJ-1');
|
|
149
274
|
const last = comments[comments.length - 1];
|
|
150
275
|
strict_1.default.ok(last.text.toLowerCase().includes('aidev-continue'));
|
|
151
276
|
});
|
|
277
|
+
(0, node_test_1.it)('appends local asset paths when a comment links a native Jira attachment', async () => {
|
|
278
|
+
await withTempCwd(async (cwd) => {
|
|
279
|
+
node_test_2.mock.method(globalThis, 'fetch', async (input) => {
|
|
280
|
+
const url = String(input);
|
|
281
|
+
if (url.includes('?fields=attachment')) {
|
|
282
|
+
return jsonResponse({
|
|
283
|
+
fields: {
|
|
284
|
+
attachment: [
|
|
285
|
+
{
|
|
286
|
+
id: '101',
|
|
287
|
+
filename: 'trace.json',
|
|
288
|
+
content: 'https://example.atlassian.net/rest/api/3/attachment/content/101',
|
|
289
|
+
},
|
|
290
|
+
],
|
|
291
|
+
},
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
if (url.endsWith('/comment')) {
|
|
295
|
+
return jsonResponse({
|
|
296
|
+
comments: [
|
|
297
|
+
{
|
|
298
|
+
id: '1',
|
|
299
|
+
body: {
|
|
300
|
+
type: 'doc',
|
|
301
|
+
version: 1,
|
|
302
|
+
content: [
|
|
303
|
+
{
|
|
304
|
+
type: 'paragraph',
|
|
305
|
+
content: [
|
|
306
|
+
{ type: 'text', text: 'Please inspect ' },
|
|
307
|
+
{
|
|
308
|
+
type: 'text',
|
|
309
|
+
text: 'the trace',
|
|
310
|
+
marks: [
|
|
311
|
+
{
|
|
312
|
+
type: 'link',
|
|
313
|
+
attrs: {
|
|
314
|
+
href: 'https://example.atlassian.net/rest/api/3/attachment/content/101',
|
|
315
|
+
},
|
|
316
|
+
},
|
|
317
|
+
],
|
|
318
|
+
},
|
|
319
|
+
],
|
|
320
|
+
},
|
|
321
|
+
],
|
|
322
|
+
},
|
|
323
|
+
author: { displayName: 'Alice', accountId: 'a1' },
|
|
324
|
+
created: '2024-01-01T10:00:00.000Z',
|
|
325
|
+
},
|
|
326
|
+
],
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
return binaryResponse('{"trace":true}');
|
|
330
|
+
});
|
|
331
|
+
const provider = new jira_1.JiraProvider(baseJiraConfig);
|
|
332
|
+
const comments = await provider.getComments('PROJ-1');
|
|
333
|
+
strict_1.default.match(comments[0].text, /Local asset files referenced by this comment/);
|
|
334
|
+
strict_1.default.match(comments[0].text, /\.aidev\/assets\/PROJ-1\/101-trace\.json/);
|
|
335
|
+
strict_1.default.ok(fs.existsSync(path.join(cwd, '.aidev', 'assets', 'PROJ-1', '101-trace.json')));
|
|
336
|
+
});
|
|
337
|
+
});
|
|
338
|
+
});
|
|
339
|
+
(0, node_test_1.describe)('JiraProvider.fetchTasks', () => {
|
|
340
|
+
(0, node_test_1.afterEach)(() => node_test_2.mock.restoreAll());
|
|
341
|
+
(0, node_test_1.it)('downloads issue attachments and appends local asset paths to the description', async () => {
|
|
342
|
+
await withTempCwd(async (cwd) => {
|
|
343
|
+
node_test_2.mock.method(globalThis, 'fetch', async (input) => {
|
|
344
|
+
const url = String(input);
|
|
345
|
+
if (url.includes('/search/jql')) {
|
|
346
|
+
return jsonResponse({
|
|
347
|
+
issues: [
|
|
348
|
+
{
|
|
349
|
+
id: '1001',
|
|
350
|
+
key: 'PROJ-1',
|
|
351
|
+
fields: {
|
|
352
|
+
summary: 'Handle uploaded trace',
|
|
353
|
+
description: {
|
|
354
|
+
type: 'doc',
|
|
355
|
+
version: 1,
|
|
356
|
+
content: [{ type: 'paragraph', content: [{ type: 'text', text: 'Review the trace file.' }] }],
|
|
357
|
+
},
|
|
358
|
+
status: { name: 'Open' },
|
|
359
|
+
priority: { id: '2' },
|
|
360
|
+
labels: ['aidev'],
|
|
361
|
+
self: 'https://example.atlassian.net/rest/api/3/issue/1001',
|
|
362
|
+
attachment: [
|
|
363
|
+
{
|
|
364
|
+
id: '101',
|
|
365
|
+
filename: 'trace.json',
|
|
366
|
+
content: 'https://example.atlassian.net/rest/api/3/attachment/content/101',
|
|
367
|
+
},
|
|
368
|
+
],
|
|
369
|
+
},
|
|
370
|
+
},
|
|
371
|
+
],
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
return binaryResponse('{"trace":true}');
|
|
375
|
+
});
|
|
376
|
+
const provider = new jira_1.JiraProvider(baseJiraConfig);
|
|
377
|
+
const tasks = await provider.fetchTasks();
|
|
378
|
+
strict_1.default.equal(tasks.length, 1);
|
|
379
|
+
strict_1.default.match(tasks[0].description, /Local asset files/);
|
|
380
|
+
strict_1.default.match(tasks[0].description, /\.aidev\/assets\/PROJ-1\/101-trace\.json/);
|
|
381
|
+
strict_1.default.ok(fs.existsSync(path.join(cwd, '.aidev', 'assets', 'PROJ-1', '101-trace.json')));
|
|
382
|
+
});
|
|
383
|
+
});
|
|
384
|
+
});
|
|
385
|
+
// ─── LinearProvider ─────────────────────────────────────────────────────────
|
|
386
|
+
(0, node_test_1.describe)('LinearProvider.fetchTasks', () => {
|
|
387
|
+
(0, node_test_1.afterEach)(() => node_test_2.mock.restoreAll());
|
|
388
|
+
(0, node_test_1.it)('returns issues with identifier as id and state name as status', async () => {
|
|
389
|
+
node_test_2.mock.method(globalThis, 'fetch', async (_url, init) => {
|
|
390
|
+
const body = init?.body ? JSON.parse(init.body) : {};
|
|
391
|
+
if (body.query?.includes('workflowStates')) {
|
|
392
|
+
return jsonResponse({
|
|
393
|
+
data: { workflowStates: { nodes: [{ id: 's1', name: 'Backlog', type: 'unstarted' }, { id: 's2', name: 'In Review', type: 'started' }] } },
|
|
394
|
+
});
|
|
395
|
+
}
|
|
396
|
+
if (body.query?.includes('issues')) {
|
|
397
|
+
return jsonResponse({
|
|
398
|
+
data: {
|
|
399
|
+
issues: {
|
|
400
|
+
nodes: [
|
|
401
|
+
{
|
|
402
|
+
id: 'issue-uuid-1',
|
|
403
|
+
identifier: 'ENG-42',
|
|
404
|
+
title: 'Fix login',
|
|
405
|
+
description: 'Fix the login flow.',
|
|
406
|
+
url: 'https://linear.app/org/issue/ENG-42',
|
|
407
|
+
state: { id: 's1', name: 'Backlog', type: 'unstarted' },
|
|
408
|
+
priority: 2,
|
|
409
|
+
labels: { nodes: [{ name: 'aidev' }] },
|
|
410
|
+
},
|
|
411
|
+
],
|
|
412
|
+
},
|
|
413
|
+
},
|
|
414
|
+
});
|
|
415
|
+
}
|
|
416
|
+
return jsonResponse({ data: {} });
|
|
417
|
+
});
|
|
418
|
+
const provider = new linear_1.LinearProvider(baseLinearConfig);
|
|
419
|
+
const tasks = await provider.fetchTasks();
|
|
420
|
+
strict_1.default.equal(tasks.length, 1);
|
|
421
|
+
strict_1.default.equal(tasks[0].id, 'ENG-42');
|
|
422
|
+
strict_1.default.equal(tasks[0].name, 'Fix login');
|
|
423
|
+
strict_1.default.equal(tasks[0].description, 'Fix the login flow.');
|
|
424
|
+
strict_1.default.equal(tasks[0].status, 'Backlog');
|
|
425
|
+
strict_1.default.equal(tasks[0].url, 'https://linear.app/org/issue/ENG-42');
|
|
426
|
+
strict_1.default.deepEqual(tasks[0].tags, ['aidev']);
|
|
427
|
+
strict_1.default.equal(tasks[0].priority, 2);
|
|
428
|
+
});
|
|
429
|
+
});
|
|
430
|
+
(0, node_test_1.describe)('LinearProvider.getComments', () => {
|
|
431
|
+
(0, node_test_1.afterEach)(() => node_test_2.mock.restoreAll());
|
|
432
|
+
(0, node_test_1.it)('returns comments sorted ascending by date', async () => {
|
|
433
|
+
node_test_2.mock.method(globalThis, 'fetch', async (_url, init) => {
|
|
434
|
+
const body = init?.body ? JSON.parse(init.body) : {};
|
|
435
|
+
if (body.query?.includes('issues') && body.variables?.filter?.identifier) {
|
|
436
|
+
return jsonResponse({ data: { issues: { nodes: [{ id: 'issue-uuid-1' }] } } });
|
|
437
|
+
}
|
|
438
|
+
if (body.query?.includes('issue(id:')) {
|
|
439
|
+
return jsonResponse({
|
|
440
|
+
data: {
|
|
441
|
+
issue: {
|
|
442
|
+
comments: {
|
|
443
|
+
nodes: [
|
|
444
|
+
{ id: 'c1', body: '[aidev] Starting', user: { name: 'Bot', id: 'u1' }, createdAt: '2024-01-01T10:00:00.000Z' },
|
|
445
|
+
{ id: 'c2', body: 'aidev-continue', user: { name: 'Alice', id: 'u2' }, createdAt: '2024-01-01T11:00:00.000Z' },
|
|
446
|
+
],
|
|
447
|
+
},
|
|
448
|
+
},
|
|
449
|
+
},
|
|
450
|
+
});
|
|
451
|
+
}
|
|
452
|
+
return jsonResponse({ data: {} });
|
|
453
|
+
});
|
|
454
|
+
const provider = new linear_1.LinearProvider(baseLinearConfig);
|
|
455
|
+
const comments = await provider.getComments('ENG-42');
|
|
456
|
+
strict_1.default.equal(comments.length, 2);
|
|
457
|
+
strict_1.default.equal(comments[0].text, '[aidev] Starting');
|
|
458
|
+
strict_1.default.equal(comments[1].text, 'aidev-continue');
|
|
459
|
+
strict_1.default.equal(comments[1].author, 'Alice');
|
|
460
|
+
});
|
|
461
|
+
});
|
|
462
|
+
// ─── MondayProvider ───────────────────────────────────────────────────────────
|
|
463
|
+
(0, node_test_1.describe)('MondayProvider.fetchTasks', () => {
|
|
464
|
+
(0, node_test_1.afterEach)(() => node_test_2.mock.restoreAll());
|
|
465
|
+
(0, node_test_1.it)('returns items whose status matches pending or in-review', async () => {
|
|
466
|
+
node_test_2.mock.method(globalThis, 'fetch', async (_input, init) => {
|
|
467
|
+
const body = typeof (init?.body) === 'string' ? JSON.parse(init.body) : {};
|
|
468
|
+
const query = body.query;
|
|
469
|
+
if (query.includes('boards') && query.includes('items_page')) {
|
|
470
|
+
return jsonResponse({
|
|
471
|
+
data: {
|
|
472
|
+
boards: [
|
|
473
|
+
{
|
|
474
|
+
items_page: {
|
|
475
|
+
cursor: null,
|
|
476
|
+
items: [
|
|
477
|
+
{
|
|
478
|
+
id: '1001',
|
|
479
|
+
name: 'Task one',
|
|
480
|
+
url: 'https://example.monday.com/boards/12345/pulses/1001',
|
|
481
|
+
description: { description: 'Do something' },
|
|
482
|
+
column_values: [
|
|
483
|
+
{ id: 'status', value: '{"label":"Working on it"}', text: 'Working on it' },
|
|
484
|
+
],
|
|
485
|
+
},
|
|
486
|
+
{
|
|
487
|
+
id: '1002',
|
|
488
|
+
name: 'Task two',
|
|
489
|
+
url: 'https://example.monday.com/boards/12345/pulses/1002',
|
|
490
|
+
description: { description: '' },
|
|
491
|
+
column_values: [
|
|
492
|
+
{ id: 'status', value: '{"label":"Done"}', text: 'Done' },
|
|
493
|
+
],
|
|
494
|
+
},
|
|
495
|
+
{
|
|
496
|
+
id: '1003',
|
|
497
|
+
name: 'Task three',
|
|
498
|
+
url: '',
|
|
499
|
+
description: {},
|
|
500
|
+
column_values: [
|
|
501
|
+
{ id: 'status', value: '{}', text: 'Stuck' },
|
|
502
|
+
],
|
|
503
|
+
},
|
|
504
|
+
],
|
|
505
|
+
},
|
|
506
|
+
},
|
|
507
|
+
],
|
|
508
|
+
},
|
|
509
|
+
});
|
|
510
|
+
}
|
|
511
|
+
return jsonResponse({});
|
|
512
|
+
});
|
|
513
|
+
const provider = new monday_1.MondayProvider(baseMondayConfig);
|
|
514
|
+
const tasks = await provider.fetchTasks();
|
|
515
|
+
strict_1.default.equal(tasks.length, 2);
|
|
516
|
+
strict_1.default.equal(tasks[0].id, '1001');
|
|
517
|
+
strict_1.default.equal(tasks[0].name, 'Task one');
|
|
518
|
+
strict_1.default.equal(tasks[0].status, 'Working on it');
|
|
519
|
+
strict_1.default.equal(tasks[1].id, '1002');
|
|
520
|
+
strict_1.default.equal(tasks[1].status, 'Done');
|
|
521
|
+
});
|
|
522
|
+
});
|
|
523
|
+
(0, node_test_1.describe)('MondayProvider.getComments', () => {
|
|
524
|
+
(0, node_test_1.afterEach)(() => node_test_2.mock.restoreAll());
|
|
525
|
+
(0, node_test_1.it)('returns updates sorted ascending by date', async () => {
|
|
526
|
+
node_test_2.mock.method(globalThis, 'fetch', async () => jsonResponse({
|
|
527
|
+
data: {
|
|
528
|
+
items: [
|
|
529
|
+
{
|
|
530
|
+
updates: [
|
|
531
|
+
{ id: 'u2', text_body: 'Newest', body: '<p>Newest</p>', created_at: '2024-01-02T12:00:00Z', creator: { id: 'u1', name: 'Alice' } },
|
|
532
|
+
{ id: 'u1', text_body: 'Oldest', body: '<p>Oldest</p>', created_at: '2024-01-01T10:00:00Z', creator: { id: 'u1', name: 'Alice' } },
|
|
533
|
+
],
|
|
534
|
+
},
|
|
535
|
+
],
|
|
536
|
+
},
|
|
537
|
+
}));
|
|
538
|
+
const provider = new monday_1.MondayProvider(baseMondayConfig);
|
|
539
|
+
const comments = await provider.getComments('1001');
|
|
540
|
+
strict_1.default.equal(comments.length, 2);
|
|
541
|
+
strict_1.default.equal(comments[0].text, 'Oldest');
|
|
542
|
+
strict_1.default.equal(comments[1].text, 'Newest');
|
|
543
|
+
});
|
|
152
544
|
});
|
|
153
545
|
//# sourceMappingURL=providers.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.test.js","sourceRoot":"","sources":["../../src/__tests__/providers.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"providers.test.js","sourceRoot":"","sources":["../../src/__tests__/providers.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA8B;AAC9B,4CAA8B;AAC9B,gDAAkC;AAClC,yCAAoD;AACpD,gEAAwC;AACxC,yCAAiC;AAEjC,kDAAuD;AACvD,4CAAiD;AACjD,gDAAqD;AACrD,gDAAqD;AAErD,MAAM,iBAAiB,GAAG;IACxB,aAAa,EAAE,UAAU;IACzB,aAAa,EAAE,OAAO;IACtB,UAAU,EAAE,OAAO;IACnB,WAAW,EAAE,EAAE;CACK,CAAC;AAEvB,MAAM,cAAc,GAAG;IACrB,WAAW,EAAE,+BAA+B;IAC5C,SAAS,EAAE,kBAAkB;IAC7B,YAAY,EAAE,OAAO;IACrB,WAAW,EAAE,MAAM;IACnB,SAAS,EAAE,OAAO;IAClB,WAAW,EAAE,EAAE;CACK,CAAC;AAEvB,MAAM,gBAAgB,GAAG;IACvB,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,eAAe;IAC7B,WAAW,EAAE,OAAO;IACpB,mBAAmB,EAAE,SAAS;IAC9B,oBAAoB,EAAE,WAAW;IACjC,WAAW,EAAE,EAAE;CACK,CAAC;AAEvB,MAAM,gBAAgB,GAAG;IACvB,cAAc,EAAE,YAAY;IAC5B,aAAa,EAAE,OAAO;IACtB,oBAAoB,EAAE,QAAQ;IAC9B,aAAa,EAAE,QAAQ;IACvB,oBAAoB,EAAE,eAAe;IACrC,qBAAqB,EAAE,MAAM;CACT,CAAC;AAEvB,SAAS,YAAY,CAAC,IAAa;IACjC,OAAO;QACL,EAAE,EAAE,IAAI;QACR,MAAM,EAAE,GAAG;QACX,UAAU,EAAE,IAAI;QAChB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QACtC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;QACtB,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;KAC3D,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO;QACL,EAAE,EAAE,IAAI;QACR,MAAM,EAAE,GAAG;QACX,UAAU,EAAE,IAAI;QAChB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;QACtB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QAC5B,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,IAAa;IAC9B,gBAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,WAAW,CAAC,EAAkC;IACrD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAC9E,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAEtB,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;QAC7B,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxB,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,qBAAqB,CAAC,QAAiB,EAAE,cAAyB,EAAE;IAC3E,gBAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,KAA6B,EAAE,EAAE;QACvE,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;YACvC,OAAO,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,gFAAgF;AAEhF,IAAA,oBAAQ,EAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,IAAA,qBAAS,EAAC,GAAG,EAAE,CAAC,gBAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAEnC,IAAA,cAAE,EAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;QAC3F,MAAM,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC9B,gBAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,KAA6B,EAAE,IAAkB,EAAE,EAAE;gBAC3F,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC1B,IAAI,GAAG,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;oBACrC,OAAO,YAAY,CAAC;wBAClB,KAAK,EAAE;4BACL;gCACE,EAAE,EAAE,OAAO;gCACX,IAAI,EAAE,gBAAgB;gCACtB,WAAW,EAAE,iCAAiC;gCAC9C,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;gCAC1B,QAAQ,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;gCACrB,GAAG,EAAE,iCAAiC;gCACtC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;6BAC1B;yBACF;qBACF,CAAC,CAAC;gBACL,CAAC;gBACD,IAAI,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;oBAChC,OAAO,YAAY,CAAC;wBAClB,WAAW,EAAE;4BACX;gCACE,EAAE,EAAE,MAAM;gCACV,KAAK,EAAE,kBAAkB;gCACzB,GAAG,EAAE,sCAAsC;6BAC5C;yBACF;qBACF,CAAC,CAAC;gBACL,CAAC;gBACD,gBAAM,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,YAAY,MAAM,CAAC,CAAC,CAAE,IAAI,CAAC,OAAkC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;gBAC/H,OAAO,cAAc,CAAC,aAAa,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,IAAI,yBAAe,CAAC,iBAAiB,CAAC,CAAC;YACxD,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;YAE1C,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC9B,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;YACxD,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,gDAAgD,CAAC,CAAC;YACrF,gBAAM,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC;QACjG,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,oBAAQ,EAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,IAAA,qBAAS,EAAC,GAAG,EAAE,CAAC,gBAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAEnC,IAAA,cAAE,EAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;QACrF,SAAS,CAAC;YACR,QAAQ,EAAE;gBACR,+BAA+B;gBAC/B,EAAE,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,gBAAgB,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;gBACzG,EAAE,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;gBACtG,EAAE,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,gCAAgC,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;aACzH;SACF,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,yBAAe,CAAC,iBAAiB,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACrD,gBAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,gCAAgC,CAAC,CAAC,CAAC,eAAe;QACjF,gBAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAkB,cAAc;IACnF,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,SAAS,CAAC;YACR,QAAQ,EAAE;gBACR,EAAE,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;aACvG;SACF,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,yBAAe,CAAC,iBAAiB,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACrD,gBAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,2EAA2E,EAAE,KAAK,IAAI,EAAE;QACzF,SAAS,CAAC;YACR,QAAQ,EAAE;gBACR;oBACE,EAAE,EAAE,GAAG;oBACP,YAAY,EAAE,EAAE;oBAChB,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,gBAAgB,EAAE,UAAU,EAAE,EAAE,EAAE;wBAC1C,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE;qBAClD;oBACD,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE;oBACjC,IAAI,EAAE,MAAM;iBACb;aACF;SACF,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,yBAAe,CAAC,iBAAiB,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACrD,gBAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;QACrF,SAAS,CAAC;YACR,QAAQ,EAAE;gBACR,EAAE,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;aAC5F;SACF,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,yBAAe,CAAC,iBAAiB,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACrD,gBAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,gFAAgF,EAAE,KAAK,IAAI,EAAE;QAC9F,kFAAkF;QAClF,0EAA0E;QAC1E,SAAS,CAAC;YACR,QAAQ,EAAE;gBACR,EAAE,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,gBAAgB,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;gBAC1G,EAAE,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;gBAC5G,EAAE,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,gCAAgC,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;gBACxH,EAAE,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,iCAAiC,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;gBACzH,EAAE,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,gCAAgC,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;aACzH;SACF,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,yBAAe,CAAC,iBAAiB,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC3C,gBAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,iFAAiF;AAEjF,IAAA,oBAAQ,EAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,IAAA,qBAAS,EAAC,GAAG,EAAE,CAAC,gBAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAEnC,SAAS,UAAU,CAAC,IAAY;QAC9B,OAAO;YACL,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;SACpE,CAAC;IACJ,CAAC;IAED,IAAA,cAAE,EAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,qBAAqB,CAAC;YACpB,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,0BAA0B,EAAE;SACrI,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,mBAAY,CAAC,cAAc,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACtD,gBAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,qBAAqB,CAAC;YACpB,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,0BAA0B,EAAE;YACvI,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,0BAA0B,EAAE;YACvI,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,0BAA0B,EAAE;SACpI,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,mBAAY,CAAC,cAAc,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACtD,gBAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAE,eAAe;QACpE,gBAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAK,cAAc;IACtE,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,qBAAqB,CAAC;YACpB,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,8BAA8B,CAAC,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,0BAA0B,EAAE;YACnJ,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,0BAA0B,EAAE;SACxI,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,mBAAY,CAAC,cAAc,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC3C,gBAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;QACvF,MAAM,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC9B,gBAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,KAA6B,EAAE,EAAE;gBACvE,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC1B,IAAI,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;oBACvC,OAAO,YAAY,CAAC;wBAClB,MAAM,EAAE;4BACN,UAAU,EAAE;gCACV;oCACE,EAAE,EAAE,KAAK;oCACT,QAAQ,EAAE,YAAY;oCACtB,OAAO,EAAE,iEAAiE;iCAC3E;6BACF;yBACF;qBACF,CAAC,CAAC;gBACL,CAAC;gBACD,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC7B,OAAO,YAAY,CAAC;wBAClB,QAAQ,EAAE;4BACR;gCACE,EAAE,EAAE,GAAG;gCACP,IAAI,EAAE;oCACJ,IAAI,EAAE,KAAK;oCACX,OAAO,EAAE,CAAC;oCACV,OAAO,EAAE;wCACP;4CACE,IAAI,EAAE,WAAW;4CACjB,OAAO,EAAE;gDACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE;gDACzC;oDACE,IAAI,EAAE,MAAM;oDACZ,IAAI,EAAE,WAAW;oDACjB,KAAK,EAAE;wDACL;4DACE,IAAI,EAAE,MAAM;4DACZ,KAAK,EAAE;gEACL,IAAI,EAAE,iEAAiE;6DACxE;yDACF;qDACF;iDACF;6CACF;yCACF;qCACF;iCACF;gCACD,MAAM,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE;gCACjD,OAAO,EAAE,0BAA0B;6BACpC;yBACF;qBACF,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,cAAc,CAAC,gBAAgB,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,IAAI,mBAAY,CAAC,cAAc,CAAC,CAAC;YAClD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAEtD,gBAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,8CAA8C,CAAC,CAAC;YAC/E,gBAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,0CAA0C,CAAC,CAAC;YAC3E,gBAAM,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAC3F,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,oBAAQ,EAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,IAAA,qBAAS,EAAC,GAAG,EAAE,CAAC,gBAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAEnC,IAAA,cAAE,EAAC,8EAA8E,EAAE,KAAK,IAAI,EAAE;QAC5F,MAAM,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC9B,gBAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,KAA6B,EAAE,EAAE;gBACvE,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC1B,IAAI,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;oBAChC,OAAO,YAAY,CAAC;wBAClB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,MAAM;gCACV,GAAG,EAAE,QAAQ;gCACb,MAAM,EAAE;oCACN,OAAO,EAAE,uBAAuB;oCAChC,WAAW,EAAE;wCACX,IAAI,EAAE,KAAK;wCACX,OAAO,EAAE,CAAC;wCACV,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,EAAE,CAAC;qCAC9F;oCACD,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;oCACxB,QAAQ,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;oCACrB,MAAM,EAAE,CAAC,OAAO,CAAC;oCACjB,IAAI,EAAE,qDAAqD;oCAC3D,UAAU,EAAE;wCACV;4CACE,EAAE,EAAE,KAAK;4CACT,QAAQ,EAAE,YAAY;4CACtB,OAAO,EAAE,iEAAiE;yCAC3E;qCACF;iCACF;6BACF;yBACF;qBACF,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,cAAc,CAAC,gBAAgB,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,IAAI,mBAAY,CAAC,cAAc,CAAC,CAAC;YAClD,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;YAE1C,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC9B,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;YACxD,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,0CAA0C,CAAC,CAAC;YAC/E,gBAAM,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAC3F,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,+EAA+E;AAE/E,IAAA,oBAAQ,EAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,IAAA,qBAAS,EAAC,GAAG,EAAE,CAAC,gBAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAEnC,IAAA,cAAE,EAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAC7E,gBAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAA4B,EAAE,IAAkB,EAAE,EAAE;YAC1F,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAC3C,OAAO,YAAY,CAAC;oBAClB,IAAI,EAAE,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE;iBAC1I,CAAC,CAAC;YACL,CAAC;YACD,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACnC,OAAO,YAAY,CAAC;oBAClB,IAAI,EAAE;wBACJ,MAAM,EAAE;4BACN,KAAK,EAAE;gCACL;oCACE,EAAE,EAAE,cAAc;oCAClB,UAAU,EAAE,QAAQ;oCACpB,KAAK,EAAE,WAAW;oCAClB,WAAW,EAAE,qBAAqB;oCAClC,GAAG,EAAE,qCAAqC;oCAC1C,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE;oCACvD,QAAQ,EAAE,CAAC;oCACX,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE;iCACvC;6BACF;yBACF;qBACF;iBACF,CAAC,CAAC;YACL,CAAC;YACD,OAAO,YAAY,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,uBAAc,CAAC,gBAAgB,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAE1C,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC9B,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QACpC,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACzC,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;QAC1D,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACzC,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;QAClE,gBAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QAC3C,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,oBAAQ,EAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,IAAA,qBAAS,EAAC,GAAG,EAAE,CAAC,gBAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAEnC,IAAA,cAAE,EAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,gBAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAA4B,EAAE,IAAkB,EAAE,EAAE;YAC1F,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;gBACzE,OAAO,YAAY,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACjF,CAAC;YACD,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBACtC,OAAO,YAAY,CAAC;oBAClB,IAAI,EAAE;wBACJ,KAAK,EAAE;4BACL,QAAQ,EAAE;gCACR,KAAK,EAAE;oCACL,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,0BAA0B,EAAE;oCAC9G,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,0BAA0B,EAAE;iCAC/G;6BACF;yBACF;qBACF;iBACF,CAAC,CAAC;YACL,CAAC;YACD,OAAO,YAAY,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,uBAAc,CAAC,gBAAgB,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAEtD,gBAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACjC,gBAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;QACnD,gBAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QACjD,gBAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,iFAAiF;AAEjF,IAAA,oBAAQ,EAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,IAAA,qBAAS,EAAC,GAAG,EAAE,CAAC,gBAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAEnC,IAAA,cAAE,EAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,gBAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,MAA8B,EAAE,IAAkB,EAAE,EAAE;YAC5F,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAe,CAAC;YACnC,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC7D,OAAO,YAAY,CAAC;oBAClB,IAAI,EAAE;wBACJ,MAAM,EAAE;4BACN;gCACE,UAAU,EAAE;oCACV,MAAM,EAAE,IAAI;oCACZ,KAAK,EAAE;wCACL;4CACE,EAAE,EAAE,MAAM;4CACV,IAAI,EAAE,UAAU;4CAChB,GAAG,EAAE,qDAAqD;4CAC1D,WAAW,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE;4CAC5C,aAAa,EAAE;gDACb,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,2BAA2B,EAAE,IAAI,EAAE,eAAe,EAAE;6CAC5E;yCACF;wCACD;4CACE,EAAE,EAAE,MAAM;4CACV,IAAI,EAAE,UAAU;4CAChB,GAAG,EAAE,qDAAqD;4CAC1D,WAAW,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;4CAChC,aAAa,EAAE;gDACb,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,EAAE;6CAC1D;yCACF;wCACD;4CACE,EAAE,EAAE,MAAM;4CACV,IAAI,EAAE,YAAY;4CAClB,GAAG,EAAE,EAAE;4CACP,WAAW,EAAE,EAAE;4CACf,aAAa,EAAE;gDACb,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;6CAC7C;yCACF;qCACF;iCACF;6BACF;yBACF;qBACF;iBACF,CAAC,CAAC;YACL,CAAC;YACD,OAAO,YAAY,CAAC,EAAE,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,uBAAc,CAAC,gBAAgB,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAE1C,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC9B,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAClC,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACxC,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QAC/C,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAClC,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,oBAAQ,EAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,IAAA,qBAAS,EAAC,GAAG,EAAE,CAAC,gBAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAEnC,IAAA,cAAE,EAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,gBAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,CAC1C,YAAY,CAAC;YACX,IAAI,EAAE;gBACJ,KAAK,EAAE;oBACL;wBACE,OAAO,EAAE;4BACP,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,sBAAsB,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;4BAClI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,sBAAsB,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;yBACnI;qBACF;iBACF;aACF;SACF,CAAC,CACH,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,uBAAc,CAAC,gBAAgB,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAEpD,gBAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACjC,gBAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACzC,gBAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -7,6 +7,7 @@ const node_test_1 = require("node:test");
|
|
|
7
7
|
const strict_1 = __importDefault(require("node:assert/strict"));
|
|
8
8
|
const run_1 = require("../commands/run");
|
|
9
9
|
const baseConfig = {
|
|
10
|
+
provider: 'clickup',
|
|
10
11
|
githubRepo: 'owner/repo',
|
|
11
12
|
githubBaseBranch: 'main',
|
|
12
13
|
clickupInReviewStatus: 'review',
|
|
@@ -328,6 +329,24 @@ function makeTask(id, priority) {
|
|
|
328
329
|
strict_1.default.equal(sorted[0].id, 'a');
|
|
329
330
|
});
|
|
330
331
|
});
|
|
332
|
+
// ─── getRunSkipReason ─────────────────────────────────────────────────────────
|
|
333
|
+
(0, node_test_1.describe)('getRunSkipReason', () => {
|
|
334
|
+
(0, node_test_1.it)('allows open tasks for the default all filter', () => {
|
|
335
|
+
strict_1.default.equal((0, run_1.getRunSkipReason)('open', 'all', 'pending'), null);
|
|
336
|
+
});
|
|
337
|
+
(0, node_test_1.it)('allows configured pending tasks for the default all filter', () => {
|
|
338
|
+
strict_1.default.equal((0, run_1.getRunSkipReason)('Pending Review', 'all', 'pending review'), null);
|
|
339
|
+
});
|
|
340
|
+
(0, node_test_1.it)('skips statuses that are neither open nor pending', () => {
|
|
341
|
+
strict_1.default.equal((0, run_1.getRunSkipReason)('failed', 'all', 'pending'), 'status "failed" is not open or pending');
|
|
342
|
+
});
|
|
343
|
+
(0, node_test_1.it)('skips pending tasks for the open filter', () => {
|
|
344
|
+
strict_1.default.equal((0, run_1.getRunSkipReason)('pending', 'open', 'pending'), 'filter=open but task is pending');
|
|
345
|
+
});
|
|
346
|
+
(0, node_test_1.it)('skips open tasks for the pending filter', () => {
|
|
347
|
+
strict_1.default.equal((0, run_1.getRunSkipReason)('open', 'pending', 'pending'), 'filter=pending but task is not pending');
|
|
348
|
+
});
|
|
349
|
+
});
|
|
331
350
|
// ─── buildConflictResolutionPrompt ───────────────────────────────────────────
|
|
332
351
|
(0, node_test_1.describe)('buildConflictResolutionPrompt', () => {
|
|
333
352
|
const task = {
|