@qelos/aidev 0.5.3 → 0.6.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.
@@ -4,16 +4,10 @@ exports.LinearProvider = void 0;
4
4
  const logger_1 = require("../logger");
5
5
  const LINEAR_GRAPHQL = 'https://api.linear.app/graphql';
6
6
  const SKIP_STATE_TYPES = new Set(['completed', 'canceled']);
7
- const UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
8
- function formatLinearError(e) {
9
- const detail = e.extensions?.userPresentableMessage;
10
- return detail ? `${e.message} (${detail})` : e.message;
11
- }
12
7
  class LinearProvider {
13
8
  constructor(config) {
14
- this.resolvedTeamId = null;
15
9
  this.apiKey = config.linearApiKey;
16
- this.teamIdInput = config.linearTeamId;
10
+ this.teamId = config.linearTeamId;
17
11
  this.label = config.linearLabel;
18
12
  this.pendingStatus = config.linearPendingStatus || 'Backlog';
19
13
  this.inReviewStatus = config.linearInReviewStatus || 'In Review';
@@ -29,79 +23,30 @@ class LinearProvider {
29
23
  });
30
24
  const raw = (await res.json());
31
25
  if (!res.ok) {
32
- const msg = raw.errors?.map(formatLinearError).join('; ') || res.statusText;
26
+ const msg = raw.errors?.map((e) => e.message).join('; ') || res.statusText;
33
27
  throw new Error(`Linear API error ${res.status}: ${msg}`);
34
28
  }
35
29
  if (raw.errors?.length) {
36
- throw new Error(`Linear GraphQL errors: ${raw.errors.map(formatLinearError).join('; ')}`);
30
+ throw new Error(`Linear GraphQL errors: ${raw.errors.map((e) => e.message).join('; ')}`);
37
31
  }
38
32
  if (raw.data === undefined) {
39
33
  throw new Error('Linear API returned no data');
40
34
  }
41
35
  return raw.data;
42
36
  }
43
- async resolveTeamId() {
44
- if (this.resolvedTeamId)
45
- return this.resolvedTeamId;
46
- if (!this.teamIdInput) {
47
- throw new Error('Linear: LINEAR_TEAM_ID is not set');
48
- }
49
- if (UUID_REGEX.test(this.teamIdInput)) {
50
- this.resolvedTeamId = this.teamIdInput;
51
- return this.resolvedTeamId;
52
- }
53
- // Linear's team(id) accepts UUID or team key (e.g. "ENG", "JAC")
54
- const query = `
55
- query Team($id: String!) {
56
- team(id: $id) { id }
57
- }
58
- `;
59
- const data = await this.graphql(query, { id: this.teamIdInput });
60
- if (!data.team?.id) {
61
- throw new Error(`Linear: could not resolve LINEAR_TEAM_ID "${this.teamIdInput}". Set it to the team UUID or team key.`);
62
- }
63
- this.resolvedTeamId = data.team.id;
64
- return this.resolvedTeamId;
65
- }
66
- async resolveLabelIds(teamId, names) {
67
- if (!names.length)
68
- return { ids: [], missing: [] };
69
- const query = `
70
- query Labels($filter: IssueLabelFilter) {
71
- issueLabels(filter: $filter, first: 250) {
72
- nodes { id name }
73
- }
74
- }
75
- `;
76
- const data = await this.graphql(query, { filter: { team: { id: { eq: teamId } } } });
77
- const byName = new Map();
78
- for (const node of data.issueLabels.nodes)
79
- byName.set(node.name.toLowerCase(), node.id);
80
- const ids = [];
81
- const missing = [];
82
- for (const name of names) {
83
- const id = byName.get(name.toLowerCase());
84
- if (id)
85
- ids.push(id);
86
- else
87
- missing.push(name);
88
- }
89
- return { ids, missing };
90
- }
91
37
  async fetchWorkflowStateIds() {
92
- const query = `
93
- query WorkflowStates($filter: WorkflowStateFilter) {
94
- workflowStates(filter: $filter) {
95
- nodes {
96
- id
97
- name
98
- type
99
- }
100
- }
101
- }
38
+ const query = `
39
+ query WorkflowStates($filter: WorkflowStateFilter) {
40
+ workflowStates(filter: $filter) {
41
+ nodes {
42
+ id
43
+ name
44
+ type
45
+ }
46
+ }
47
+ }
102
48
  `;
103
- const teamId = await this.resolveTeamId();
104
- const data = await this.graphql(query, { filter: { team: { id: { eq: teamId } } } });
49
+ const data = await this.graphql(query, { filter: { team: { id: { eq: this.teamId } } } });
105
50
  const byName = new Map();
106
51
  for (const node of data.workflowStates.nodes) {
107
52
  byName.set(node.name.toLowerCase(), node.id);
@@ -109,30 +54,29 @@ class LinearProvider {
109
54
  return byName;
110
55
  }
111
56
  async fetchTasks() {
112
- const teamId = await this.resolveTeamId();
113
- logger_1.logger.debug(`Fetching Linear issues for team ${teamId} with label "${this.label}"`);
114
- const query = `
115
- query Issues($filter: IssueFilter) {
116
- issues(filter: $filter, first: 100) {
117
- nodes {
118
- id
119
- identifier
120
- title
121
- description
122
- url
123
- state { id name type }
124
- priority
125
- labels { nodes { name } }
126
- }
127
- }
128
- }
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
+ }
129
73
  `;
130
74
  const filter = {
131
- team: { id: { eq: teamId } },
75
+ team: { id: { eq: this.teamId } },
132
76
  state: { type: { nin: ['completed', 'canceled'] } },
133
77
  };
134
78
  if (this.label && this.label !== '*') {
135
- filter.labels = { some: { name: { eq: this.label } } };
79
+ filter.labels = { name: { eq: this.label } };
136
80
  }
137
81
  const data = await this.graphql(query, { filter });
138
82
  const skipTypes = new Set(SKIP_STATE_TYPES);
@@ -156,13 +100,13 @@ class LinearProvider {
156
100
  async postComment(taskId, text) {
157
101
  logger_1.logger.debug(`Posting comment to Linear issue ${taskId}`);
158
102
  const issueId = await this.resolveIssueId(taskId);
159
- const mutation = `
160
- mutation CreateComment($input: CommentCreateInput!) {
161
- commentCreate(input: $input) {
162
- success
163
- comment { id }
164
- }
165
- }
103
+ const mutation = `
104
+ mutation CreateComment($input: CommentCreateInput!) {
105
+ commentCreate(input: $input) {
106
+ success
107
+ comment { id }
108
+ }
109
+ }
166
110
  `;
167
111
  await this.graphql(mutation, {
168
112
  input: { issueId, body: text },
@@ -171,19 +115,19 @@ class LinearProvider {
171
115
  async getComments(taskId) {
172
116
  logger_1.logger.debug(`Fetching comments for Linear issue ${taskId}`);
173
117
  const issueId = await this.resolveIssueId(taskId);
174
- const query = `
175
- query IssueComments($id: String!) {
176
- issue(id: $id) {
177
- comments {
178
- nodes {
179
- id
180
- body
181
- user { name id }
182
- createdAt
183
- }
184
- }
185
- }
186
- }
118
+ const query = `
119
+ query IssueComments($id: String!) {
120
+ issue(id: $id) {
121
+ comments {
122
+ nodes {
123
+ id
124
+ body
125
+ user { name id }
126
+ createdAt
127
+ }
128
+ }
129
+ }
130
+ }
187
131
  `;
188
132
  const data = await this.graphql(query, { id: issueId });
189
133
  const nodes = data.issue?.comments?.nodes ?? [];
@@ -198,12 +142,12 @@ class LinearProvider {
198
142
  }
199
143
  async resolveIssueId(identifier) {
200
144
  if (/^[A-Z]+-\d+$/i.test(identifier)) {
201
- const query = `
202
- query IssueByIdentifier($filter: IssueFilter) {
203
- issues(filter: $filter, first: 1) {
204
- nodes { id }
205
- }
206
- }
145
+ const query = `
146
+ query IssueByIdentifier($filter: IssueFilter) {
147
+ issues(filter: $filter, first: 1) {
148
+ nodes { id }
149
+ }
150
+ }
207
151
  `;
208
152
  const data = await this.graphql(query, {
209
153
  filter: { identifier: { eq: identifier } },
@@ -212,12 +156,12 @@ class LinearProvider {
212
156
  if (id)
213
157
  return id;
214
158
  }
215
- const byIdQuery = `
216
- query Issue($id: String!) {
217
- issue(id: $id) {
218
- id
219
- }
220
- }
159
+ const byIdQuery = `
160
+ query Issue($id: String!) {
161
+ issue(id: $id) {
162
+ id
163
+ }
164
+ }
221
165
  `;
222
166
  const byId = await this.graphql(byIdQuery, { id: identifier });
223
167
  if (byId.issue?.id)
@@ -234,12 +178,12 @@ class LinearProvider {
234
178
  throw new Error(`Linear: no workflow state matching "${status}". Available: ${names}`);
235
179
  }
236
180
  const issueId = await this.resolveIssueId(taskId);
237
- const mutation = `
238
- mutation IssueUpdate($id: String!, $input: IssueUpdateInput!) {
239
- issueUpdate(id: $id, input: $input) {
240
- success
241
- }
242
- }
181
+ const mutation = `
182
+ mutation IssueUpdate($id: String!, $input: IssueUpdateInput!) {
183
+ issueUpdate(id: $id, input: $input) {
184
+ success
185
+ }
186
+ }
243
187
  `;
244
188
  await this.graphql(mutation, {
245
189
  id: issueId,
@@ -247,30 +191,22 @@ class LinearProvider {
247
191
  });
248
192
  }
249
193
  async createTask(params) {
250
- const teamId = await this.resolveTeamId();
251
- const { ids: labelIds, missing } = await this.resolveLabelIds(teamId, params.tags || []);
252
- if (missing.length) {
253
- logger_1.logger.warn(`Linear: skipping unknown labels (create them in Linear first): ${missing.join(', ')}`);
194
+ const mutation = `
195
+ mutation IssueCreate($input: IssueCreateInput!) {
196
+ issueCreate(input: $input) {
197
+ success
198
+ issue { id identifier url }
254
199
  }
255
- const mutation = `
256
- mutation IssueCreate($input: IssueCreateInput!) {
257
- issueCreate(input: $input) {
258
- success
259
- issue { id identifier url }
260
- }
261
- }
200
+ }
262
201
  `;
263
202
  const input = {
264
- teamId,
203
+ teamId: this.teamId,
265
204
  title: params.title,
266
205
  description: params.description || undefined,
267
206
  };
268
207
  if (params.priority !== undefined) {
269
208
  input.priority = params.priority;
270
209
  }
271
- if (labelIds.length) {
272
- input.labelIds = labelIds;
273
- }
274
210
  const data = await this.graphql(mutation, { input });
275
211
  const issue = data.issueCreate?.issue;
276
212
  if (!issue) {
@@ -1 +1 @@
1
- {"version":3,"file":"linear.js","sourceRoot":"","sources":["../../src/providers/linear.ts"],"names":[],"mappings":";;;AAEA,sCAAmC;AAEnC,MAAM,cAAc,GAAG,gCAAgC,CAAC;AACxD,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;AAC5D,MAAM,UAAU,GAAG,iEAAiE,CAAC;AAgBrF,SAAS,iBAAiB,CAAC,CAAqB;IAC9C,MAAM,MAAM,GAAG,CAAC,CAAC,UAAU,EAAE,sBAAsB,CAAC;IACpD,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AACzD,CAAC;AAED,MAAa,cAAc;IAQzB,YAAY,MAAc;QALlB,mBAAc,GAAkB,IAAI,CAAC;QAM3C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC;QAChC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,mBAAmB,IAAI,SAAS,CAAC;QAC7D,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,oBAAoB,IAAI,WAAW,CAAC;IACnE,CAAC;IAEO,KAAK,CAAC,OAAO,CAAI,KAAa,EAAE,SAAmC;QACzE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,cAAc,EAAE;YACtC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,MAAM,EAAE;aAC1F;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA6B,CAAC;QAC3D,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC;YAC5E,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5F,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,CAAC;IAClB,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,IAAI,IAAI,CAAC,cAAc;YAAE,OAAO,IAAI,CAAC,cAAc,CAAC;QACpD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC;YACvC,OAAO,IAAI,CAAC,cAAc,CAAC;QAC7B,CAAC;QACD,iEAAiE;QACjE,MAAM,KAAK,GAAG;;;;KAIb,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAkC,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAClG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CACb,6CAA6C,IAAI,CAAC,WAAW,yCAAyC,CACvG,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,MAAc,EAAE,KAAe;QAC3D,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG;;;;;;KAMb,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,KAAK,EACL,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAC7C,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QACzC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK;YAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACxF,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YAC1C,IAAI,EAAE;gBAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;;gBAChB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;IAC1B,CAAC;IAEO,KAAK,CAAC,qBAAqB;QACjC,MAAM,KAAK,GAAG;;;;;;;;;;KAUb,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAE5B,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAExD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QACzC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;YAC7C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1C,eAAM,CAAC,KAAK,CAAC,mCAAmC,MAAM,gBAAgB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QAErF,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;KAeb,CAAC;QACF,MAAM,MAAM,GAA4B;YACtC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE;YAC5B,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,EAAE;SACpD,CAAC;QACF,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,GAAG,EAAE,CAAC;YACrC,MAAM,CAAC,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC;QACzD,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAa5B,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAEtB,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK;aACrB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aAC3C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACX,EAAE,EAAE,CAAC,CAAC,UAAU;YAChB,IAAI,EAAE,CAAC,CAAC,KAAK;YACb,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,EAAE;YAChC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI;YACpB,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACvC,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,SAAS;SAClC,CAAC,CAAC,CAAC;IACR,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,QAAkB;QACzC,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACpC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,IAAY;QAC5C,eAAM,CAAC,KAAK,CAAC,mCAAmC,MAAM,EAAE,CAAC,CAAC;QAE1D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG;;;;;;;KAOhB,CAAC;QACF,MAAM,IAAI,CAAC,OAAO,CAA0C,QAAQ,EAAE;YACpE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE;SAC/B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc;QAC9B,eAAM,CAAC,KAAK,CAAC,sCAAsC,MAAM,EAAE,CAAC,CAAC;QAE7D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG;;;;;;;;;;;;;KAab,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAW5B,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAE3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAC5B,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAC5E,CAAC;QACF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxB,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE;YAClB,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,SAAS;YACjC,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE;YAC1B,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;SACtC,CAAC,CAAC,CAAC;IACN,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,UAAkB;QAC7C,IAAI,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG;;;;;;OAMb,CAAC;YACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAA+C,KAAK,EAAE;gBACnF,MAAM,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE;aAC3C,CAAC,CAAC;YACH,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACvC,IAAI,EAAE;gBAAE,OAAO,EAAE,CAAC;QACpB,CAAC;QACD,MAAM,SAAS,GAAG;;;;;;KAMjB,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAmC,SAAS,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QACjG,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,oCAAoC,UAAU,GAAG,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAc,EAAE,MAAc;QAC/C,eAAM,CAAC,KAAK,CAAC,yBAAyB,MAAM,eAAe,MAAM,GAAG,CAAC,CAAC;QAEtE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACvG,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,uCAAuC,MAAM,iBAAiB,KAAK,EAAE,CAAC,CAAC;QACzF,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG;;;;;;KAMhB,CAAC;QACF,MAAM,IAAI,CAAC,OAAO,CAAwC,QAAQ,EAAE;YAClE,EAAE,EAAE,OAAO;YACX,KAAK,EAAE,EAAE,OAAO,EAAE;SACnB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAwB;QACvC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1C,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACzF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,eAAM,CAAC,IAAI,CAAC,kEAAkE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtG,CAAC;QAED,MAAM,QAAQ,GAAG;;;;;;;KAOhB,CAAC;QACF,MAAM,KAAK,GAA4B;YACrC,MAAM;YACN,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,SAAS;SAC7C,CAAC;QACF,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAClC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACnC,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpB,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC5B,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAE5B,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAExB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC;QACtC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IAClD,CAAC;CACF;AAvUD,wCAuUC"}
1
+ {"version":3,"file":"linear.js","sourceRoot":"","sources":["../../src/providers/linear.ts"],"names":[],"mappings":"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"}
@@ -53,21 +53,21 @@ class MondayProvider {
53
53
  }
54
54
  async fetchTasks() {
55
55
  logger_1.logger.debug(`Fetching items from Monday board ${this.boardId}`);
56
- const query = `
57
- query ($boardId: ID!, $limit: Int!) {
58
- boards(ids: [$boardId]) {
59
- items_page(limit: $limit) {
60
- cursor
61
- items {
62
- id
63
- name
64
- url
65
- description { description }
66
- column_values { id value text }
67
- }
68
- }
69
- }
70
- }
56
+ const query = `
57
+ query ($boardId: ID!, $limit: Int!) {
58
+ boards(ids: [$boardId]) {
59
+ items_page(limit: $limit) {
60
+ cursor
61
+ items {
62
+ id
63
+ name
64
+ url
65
+ description { description }
66
+ column_values { id value text }
67
+ }
68
+ }
69
+ }
70
+ }
71
71
  `;
72
72
  const data = await this.graphql(query, {
73
73
  boardId: this.boardId,
@@ -102,10 +102,10 @@ class MondayProvider {
102
102
  }
103
103
  async postComment(taskId, text) {
104
104
  logger_1.logger.debug(`Posting update to Monday item ${taskId}`);
105
- const mutation = `
106
- mutation ($itemId: ID!, $body: String!) {
107
- create_update(item_id: $itemId, body: $body) { id }
108
- }
105
+ const mutation = `
106
+ mutation ($itemId: ID!, $body: String!) {
107
+ create_update(item_id: $itemId, body: $body) { id }
108
+ }
109
109
  `;
110
110
  await this.graphql(mutation, {
111
111
  itemId: taskId,
@@ -114,18 +114,18 @@ class MondayProvider {
114
114
  }
115
115
  async getComments(taskId) {
116
116
  logger_1.logger.debug(`Fetching updates for Monday item ${taskId}`);
117
- const query = `
118
- query ($itemId: ID!) {
119
- items(ids: [$itemId]) {
120
- updates(limit: 100) {
121
- id
122
- text_body
123
- body
124
- created_at
125
- creator { id name }
126
- }
127
- }
128
- }
117
+ const query = `
118
+ query ($itemId: ID!) {
119
+ items(ids: [$itemId]) {
120
+ updates(limit: 100) {
121
+ id
122
+ text_body
123
+ body
124
+ created_at
125
+ creator { id name }
126
+ }
127
+ }
128
+ }
129
129
  `;
130
130
  const data = await this.graphql(query, { itemId: taskId });
131
131
  const item = data.items?.[0];
@@ -142,10 +142,10 @@ class MondayProvider {
142
142
  }
143
143
  async updateStatus(taskId, status) {
144
144
  logger_1.logger.debug(`Updating Monday item ${taskId} status to "${status}"`);
145
- const mutation = `
146
- mutation ($boardId: ID!, $itemId: ID!, $columnId: String!, $value: String!) {
147
- change_column_value(board_id: $boardId, item_id: $itemId, column_id: $columnId, value: $value) { id }
148
- }
145
+ const mutation = `
146
+ mutation ($boardId: ID!, $itemId: ID!, $columnId: String!, $value: String!) {
147
+ change_column_value(board_id: $boardId, item_id: $itemId, column_id: $columnId, value: $value) { id }
148
+ }
149
149
  `;
150
150
  const value = JSON.stringify({ label: status });
151
151
  await this.graphql(mutation, {
@@ -157,10 +157,10 @@ class MondayProvider {
157
157
  }
158
158
  async createTask(params) {
159
159
  const groupId = this.groupId || 'topics';
160
- const mutation = `
161
- mutation ($boardId: ID!, $groupId: String!, $itemName: String!, $columnValues: JSON) {
162
- create_item(board_id: $boardId, group_id: $groupId, item_name: $itemName, column_values: $columnValues) { id }
163
- }
160
+ const mutation = `
161
+ mutation ($boardId: ID!, $groupId: String!, $itemName: String!, $columnValues: JSON) {
162
+ create_item(board_id: $boardId, group_id: $groupId, item_name: $itemName, column_values: $columnValues) { id }
163
+ }
164
164
  `;
165
165
  const columnValues = {};
166
166
  if (this.statusColumnId) {
package/package.json CHANGED
@@ -1,51 +1,51 @@
1
- {
2
- "name": "@qelos/aidev",
3
- "version": "0.5.3",
4
- "description": "AI-powered task executor — polls ClickUp (and more) to implement tasks with Claude, Cursor, Windsurf, or Antigravity",
5
- "type": "commonjs",
6
- "bin": {
7
- "aidev": "dist/cli.js"
8
- },
9
- "main": "./dist/cli.js",
10
- "engines": {
11
- "node": ">=22.0.0"
12
- },
13
- "scripts": {
14
- "build": "tsc && node -e \"if(process.platform!=='win32')require('node:fs').chmodSync('dist/cli.js',0o755)\"",
15
- "dev": "tsx src/cli.ts",
16
- "test": "node scripts/run-tests.cjs",
17
- "prepublishOnly": "npm run build"
18
- },
19
- "keywords": [
20
- "ai",
21
- "cli",
22
- "clickup",
23
- "claude",
24
- "cursor",
25
- "automation"
26
- ],
27
- "author": "",
28
- "license": "MIT",
29
- "repository": {
30
- "type": "git",
31
- "url": "git+https://github.com/qelos-io/aidev.git"
32
- },
33
- "bugs": {
34
- "url": "https://github.com/qelos-io/aidev/issues"
35
- },
36
- "homepage": "https://github.com/qelos-io/aidev#readme",
37
- "publishConfig": {
38
- "access": "public"
39
- },
40
- "dependencies": {
41
- "chalk": "^4.1.2",
42
- "commander": "^12.0.0",
43
- "dotenv": "^16.4.0",
44
- "jiti": "^2.6.1"
45
- },
46
- "devDependencies": {
47
- "@types/node": "^22.0.0",
48
- "tsx": "^4.0.0",
49
- "typescript": "^5.0.0"
50
- }
51
- }
1
+ {
2
+ "name": "@qelos/aidev",
3
+ "version": "0.6.0",
4
+ "description": "AI-powered task executor — polls ClickUp (and more) to implement tasks with Claude, Cursor, Windsurf, or Antigravity",
5
+ "type": "commonjs",
6
+ "bin": {
7
+ "aidev": "dist/cli.js"
8
+ },
9
+ "main": "./dist/cli.js",
10
+ "engines": {
11
+ "node": ">=22.0.0"
12
+ },
13
+ "scripts": {
14
+ "build": "tsc && node -e \"if(process.platform!=='win32')require('node:fs').chmodSync('dist/cli.js',0o755)\"",
15
+ "dev": "tsx src/cli.ts",
16
+ "test": "node scripts/run-tests.cjs",
17
+ "prepublishOnly": "npm run build"
18
+ },
19
+ "keywords": [
20
+ "ai",
21
+ "cli",
22
+ "clickup",
23
+ "claude",
24
+ "cursor",
25
+ "automation"
26
+ ],
27
+ "author": "",
28
+ "license": "MIT",
29
+ "repository": {
30
+ "type": "git",
31
+ "url": "git+https://github.com/qelos-io/aidev.git"
32
+ },
33
+ "bugs": {
34
+ "url": "https://github.com/qelos-io/aidev/issues"
35
+ },
36
+ "homepage": "https://github.com/qelos-io/aidev#readme",
37
+ "publishConfig": {
38
+ "access": "public"
39
+ },
40
+ "dependencies": {
41
+ "chalk": "^4.1.2",
42
+ "commander": "^12.0.0",
43
+ "dotenv": "^16.4.0",
44
+ "jiti": "^2.6.1"
45
+ },
46
+ "devDependencies": {
47
+ "@types/node": "^22.0.0",
48
+ "tsx": "^4.0.0",
49
+ "typescript": "^5.0.0"
50
+ }
51
+ }
@@ -1,18 +1,18 @@
1
- 'use strict';
2
-
3
- const { spawnSync } = require('node:child_process');
4
- const { globSync } = require('node:fs');
5
- const path = require('node:path');
6
-
7
- const root = path.join(__dirname, '..');
8
- const files = globSync('src/__tests__/**/*.test.ts', { cwd: root }).sort();
9
- if (files.length === 0) {
10
- console.error('No test files found under src/__tests__');
11
- process.exit(1);
12
- }
13
- const abs = files.map((f) => path.join(root, f));
14
- const r = spawnSync(process.execPath, ['--require', 'tsx/cjs', '--test', ...abs], {
15
- cwd: root,
16
- stdio: 'inherit',
17
- });
18
- process.exit(r.status === null ? 1 : r.status);
1
+ 'use strict';
2
+
3
+ const { spawnSync } = require('node:child_process');
4
+ const { globSync } = require('node:fs');
5
+ const path = require('node:path');
6
+
7
+ const root = path.join(__dirname, '..');
8
+ const files = globSync('src/__tests__/**/*.test.ts', { cwd: root }).sort();
9
+ if (files.length === 0) {
10
+ console.error('No test files found under src/__tests__');
11
+ process.exit(1);
12
+ }
13
+ const abs = files.map((f) => path.join(root, f));
14
+ const r = spawnSync(process.execPath, ['--require', 'tsx/cjs', '--test', ...abs], {
15
+ cwd: root,
16
+ stdio: 'inherit',
17
+ });
18
+ process.exit(r.status === null ? 1 : r.status);
@@ -1,54 +0,0 @@
1
- import { AIRunner } from './ai/base';
2
- import { Comment, Config } from './types';
3
- /** Matches how AIRunner implementations concatenate prompt and notes. */
4
- export declare function fullPromptCharCount(prompt: string, notes?: string): number;
5
- export declare function formatConversationBlock(comments: Comment[]): string;
6
- /** Ticket conversation block plus optional PR review section (same order as run.ts). */
7
- export declare function buildTaskContextSuffix(humanComments: Comment[], reviewSection: string): string;
8
- /**
9
- * Measures total prompt size the same way the runner does: `fullPromptCharCount` of the
10
- * built prompt for a given task-context suffix (task fields live inside `buildPromptFromSuffix`).
11
- */
12
- export declare function measureImplementStylePrompt(buildPromptFromSuffix: (taskContextSuffix: string) => string, humanComments: Comment[], reviewSection: string, notes?: string): number;
13
- /** Safe filename segment from a task id (allows only alphanumerics, `.`, `_`, `-`). */
14
- export declare function sanitizeTaskIdForFile(taskId: string): string;
15
- export declare function getCompressionSessionPath(taskId: string, cwd?: string): string;
16
- export declare function getSessionsDir(cwd?: string): string;
17
- /** Stored under `.aidev/sessions/<sanitizedTaskId>.json`. */
18
- export interface CompressionSessionRecord {
19
- taskId: string;
20
- updatedAt: string;
21
- /** Human comments that were summarized (all but the last in thread order). */
22
- earlierCommentIds: string[];
23
- /** Fingerprint of those comments’ content for idempotent reuse. */
24
- earlierContentHash: string;
25
- /** Summary text only (no “latest comment” banner). */
26
- compressedText: string;
27
- summaryChars: number;
28
- }
29
- export declare function hashEarlierCommentsForCompression(older: Comment[]): string;
30
- export declare function splitHumanCommentsForCompression(comments: Comment[]): {
31
- older: Comment[];
32
- last: Comment;
33
- } | null;
34
- export declare function getAutoCompressTripwireLimit(config: Config): number;
35
- export declare function exceedsAutoCompressBudget(measuredLen: number, config: Config): boolean;
36
- export declare function readCompressionSession(taskId: string, cwd?: string): CompressionSessionRecord | null;
37
- export declare function writeCompressionSessionRecord(taskId: string, record: Omit<CompressionSessionRecord, 'taskId'> & {
38
- taskId?: string;
39
- }, cwd?: string): string;
40
- /**
41
- * Loss-aware extractive compression when AI summarization is unavailable.
42
- * Preserves lines that look like paths, URLs, errors, or explicit bullets; truncates the rest.
43
- */
44
- export declare function compressEarlierThreadDeterministic(older: Comment[]): string;
45
- /**
46
- * When the measured total prompt (see `measureWithComments`) exceeds the configured
47
- * fraction of AUTO_COMPRESS_MAX_CHARS, replaces all but the last human comment
48
- * with a single compressed summary comment. The summary is written under
49
- * `.aidev/sessions/<sanitizedTaskId>.json`.
50
- */
51
- export declare function maybeCompressHumanComments(taskId: string, config: Config, humanComments: Comment[], runners: AIRunner[], measureWithComments: (comments: Comment[]) => number, options?: {
52
- cwd?: string;
53
- }): Promise<Comment[]>;
54
- //# sourceMappingURL=autoCompress.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"autoCompress.d.ts","sourceRoot":"","sources":["../src/autoCompress.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAI1C,yEAAyE;AACzE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAK1E;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAGnE;AAED,wFAAwF;AACxF,wBAAgB,sBAAsB,CAAC,aAAa,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAE9F;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,qBAAqB,EAAE,CAAC,iBAAiB,EAAE,MAAM,KAAK,MAAM,EAC5D,aAAa,EAAE,OAAO,EAAE,EACxB,aAAa,EAAE,MAAM,EACrB,KAAK,CAAC,EAAE,MAAM,GACb,MAAM,CAGR;AAED,uFAAuF;AACvF,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAG5D;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,MAAM,CAG7F;AAED,wBAAgB,cAAc,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAElE;AAED,6DAA6D;AAC7D,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,mEAAmE;IACnE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,sDAAsD;IACtD,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CAK1E;AAED,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,OAAO,EAAE,GAClB;IAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAM5C;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAGtF;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,wBAAwB,GAAG,IAAI,CAoBnH;AAED,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,IAAI,CAAC,wBAAwB,EAAE,QAAQ,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EACtE,GAAG,GAAE,MAAsB,GAC1B,MAAM,CAcR;AAMD;;;GAGG;AACH,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CAwC3E;AAmDD;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,OAAO,EAAE,EACxB,OAAO,EAAE,QAAQ,EAAE,EACnB,mBAAmB,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,MAAM,EACpD,OAAO,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACzB,OAAO,CAAC,OAAO,EAAE,CAAC,CAwEpB"}