@cloudglab/zentao-cli 0.1.4 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/README.md +139 -257
  3. package/dist/api/execution.d.ts +33 -0
  4. package/dist/api/execution.js +363 -0
  5. package/dist/api/execution.js.map +1 -1
  6. package/dist/api/index.js +1 -1
  7. package/dist/api/index.js.map +1 -1
  8. package/dist/api/statistics.d.ts +38 -1
  9. package/dist/api/statistics.js +307 -1
  10. package/dist/api/statistics.js.map +1 -1
  11. package/dist/api/task.js +24 -5
  12. package/dist/api/task.js.map +1 -1
  13. package/dist/cli.js +21 -3
  14. package/dist/cli.js.map +1 -1
  15. package/dist/core/http.d.ts +1 -0
  16. package/dist/core/http.js +26 -0
  17. package/dist/core/http.js.map +1 -1
  18. package/dist/core/roles.js +1 -1
  19. package/dist/core/roles.js.map +1 -1
  20. package/dist/install.d.ts +2 -0
  21. package/dist/install.js +206 -0
  22. package/dist/install.js.map +1 -0
  23. package/dist/tools/execution.js +8 -0
  24. package/dist/tools/execution.js.map +1 -1
  25. package/dist/tools/statistics.js +8 -0
  26. package/dist/tools/statistics.js.map +1 -1
  27. package/dist/version.d.ts +1 -1
  28. package/dist/version.js +1 -1
  29. package/package.json +10 -3
  30. package/skills/zentao-cli/SKILL.md +185 -0
  31. package/skills/zentao-cli/reference/bug.md +93 -0
  32. package/skills/zentao-cli/reference/build.md +21 -0
  33. package/skills/zentao-cli/reference/cli.md +25 -0
  34. package/skills/zentao-cli/reference/execution.md +38 -0
  35. package/skills/zentao-cli/reference/install.md +90 -0
  36. package/skills/zentao-cli/reference/overview.md +24 -0
  37. package/skills/zentao-cli/reference/plan.md +20 -0
  38. package/skills/zentao-cli/reference/product.md +14 -0
  39. package/skills/zentao-cli/reference/project.md +14 -0
  40. package/skills/zentao-cli/reference/statistics.md +30 -0
  41. package/skills/zentao-cli/reference/story.md +22 -0
  42. package/skills/zentao-cli/reference/task.md +21 -0
  43. package/skills/zentao-cli/reference/testcase.md +20 -0
  44. package/skills/zentao-cli/reference/testtask.md +20 -0
@@ -9,9 +9,10 @@ function countBy(items, getter) {
9
9
  }, {});
10
10
  }
11
11
  export class StatisticsApi {
12
- constructor(taskApi, bugApi) {
12
+ constructor(taskApi, bugApi, http) {
13
13
  this.taskApi = taskApi;
14
14
  this.bugApi = bugApi;
15
+ this.http = http;
15
16
  }
16
17
  async getMyTaskStatistics() {
17
18
  const tasks = await this.getAllMyTasks();
@@ -34,6 +35,62 @@ export class StatisticsApi {
34
35
  bugs: this.pickBugs(bugs),
35
36
  };
36
37
  }
38
+ async getMyWeeklyActivity(input) {
39
+ const range = this.resolveActivityRange(input);
40
+ const response = await this.getUserDynamic(input.account, range.legacyPeriod, range.anchorTimestamp);
41
+ const actions = this.extractActions(response);
42
+ const normalizedActions = actions
43
+ .map(action => this.normalizeAction(action))
44
+ .filter(action => this.isInDateRange(action.date, range.startDate, range.endDate));
45
+ const bugActions = normalizedActions.filter(action => action.objectType === 'bug');
46
+ const taskActions = normalizedActions.filter(action => action.objectType === 'task');
47
+ const comments = normalizedActions.filter(action => action.action === 'commented' || action.comment);
48
+ const flowActions = normalizedActions.filter(action => this.isFlowAction(action));
49
+ const resolvedBugs = bugActions.filter(action => action.action === 'resolved');
50
+ const closedBugs = bugActions.filter(action => action.action === 'closed');
51
+ const finishedTasks = taskActions.filter(action => ['finished', 'done', 'closed'].includes(action.action));
52
+ const dedupedWorkItems = this.buildDedupedWorkItems(normalizedActions);
53
+ return {
54
+ source: 'legacy-user-dynamic',
55
+ note: '近似读取:调用禅道旧版动态页面 JSON 获取动态原始数据,再按 originalDate/date 在客户端筛选日期范围。若旧版页面权限或 Token 不兼容,需服务端补 REST dynamic 接口。',
56
+ account: input.account,
57
+ query: {
58
+ week: input.week ?? 'last',
59
+ dateRange: input.dateRange,
60
+ startDate: input.startDate,
61
+ endDate: input.endDate,
62
+ days: input.days,
63
+ },
64
+ resolvedDateRange: range,
65
+ totalActions: normalizedActions.length,
66
+ summary: {
67
+ resolvedBugs: resolvedBugs.length,
68
+ closedBugs: closedBugs.length,
69
+ taskActions: taskActions.length,
70
+ finishedTasks: finishedTasks.length,
71
+ comments: comments.length,
72
+ flowActions: flowActions.length,
73
+ dedupedWorkItems: dedupedWorkItems.length,
74
+ },
75
+ bug: {
76
+ resolved: this.pickActivityItems(resolvedBugs),
77
+ closed: this.pickActivityItems(closedBugs),
78
+ all: this.pickActivityItems(bugActions),
79
+ },
80
+ task: {
81
+ finished: this.pickActivityItems(finishedTasks),
82
+ all: this.pickActivityItems(taskActions),
83
+ },
84
+ comments: this.pickActivityItems(comments),
85
+ flow: this.pickActivityItems(flowActions),
86
+ daily: this.groupDaily(normalizedActions),
87
+ dedupedWorkItems,
88
+ limitations: [
89
+ `旧版动态页按 ${range.legacyPeriod} 拉取,默认每页 50 条;客户端会再按 ${range.startDate} 到 ${range.endDate} 过滤。`,
90
+ 'bug 转任务去重会优先识别 action/detail 中的 fromBug/bug/sourceBug/parent 等字段;如果动态记录里没有来源 Bug 字段,该任务会按 task 独立计数。',
91
+ ],
92
+ };
93
+ }
37
94
  async getAllMyBugs(productId) {
38
95
  const limit = 100;
39
96
  const firstPage = await this.bugApi.getMyBugs({ productId, page: 1, limit });
@@ -63,5 +120,254 @@ export class StatisticsApi {
63
120
  pickBugs(bugs) {
64
121
  return bugs.map(bug => ({ id: bug.id, title: bug.title, status: bug.status }));
65
122
  }
123
+ async getUserDynamic(account, period, anchorTimestamp) {
124
+ const datePart = anchorTimestamp ? String(anchorTimestamp) : '';
125
+ if (account === this.http.username) {
126
+ return this.http.legacyRequest('GET', `/my-dynamic-${period}-0-${datePart}-next-0.json`);
127
+ }
128
+ const user = await this.http.request('GET', `/users/${encodeURIComponent(account)}`);
129
+ const userId = this.findUserId(user);
130
+ if (!userId)
131
+ throw new Error(`未能从 /users/${account} 响应中解析用户 ID,无法调用 user-dynamic 页面。`);
132
+ return this.http.legacyRequest('GET', `/user-dynamic-${userId}-${period}-0-${datePart}-next.json`);
133
+ }
134
+ resolveActivityRange(input) {
135
+ if (input.startDate || input.endDate) {
136
+ const start = input.startDate ? this.parseDate(input.startDate) : undefined;
137
+ const end = input.endDate ? this.parseDate(input.endDate) : undefined;
138
+ if (!start && input.startDate)
139
+ throw new Error(`无法解析开始日期: ${input.startDate}`);
140
+ if (!end && input.endDate)
141
+ throw new Error(`无法解析结束日期: ${input.endDate}`);
142
+ const startDate = this.formatDate(start ?? end ?? new Date());
143
+ const endDate = this.formatDate(end ?? start ?? new Date());
144
+ return this.withLegacyAnchor(this.normalizeDateRange({ label: `${startDate}..${endDate}`, startDate, endDate, legacyPeriod: 'all', source: 'explicit-date' }));
145
+ }
146
+ if (input.days !== undefined) {
147
+ if (input.days < 1)
148
+ throw new Error('days 必须大于 0');
149
+ return this.rangeForRecentDays(input.days, `最近${input.days}天`);
150
+ }
151
+ if (input.dateRange)
152
+ return this.parseNaturalDateRange(input.dateRange);
153
+ return this.rangeForWeek(input.week ?? 'last');
154
+ }
155
+ parseNaturalDateRange(text) {
156
+ const normalized = text.trim().toLowerCase();
157
+ if (!normalized)
158
+ return this.rangeForWeek('last');
159
+ if (['last', 'lastweek', 'last week', '上周', '上一周'].includes(normalized))
160
+ return this.rangeForWeek('last');
161
+ if (['this', 'thisweek', 'this week', '本周', '这周', '这一周'].includes(normalized))
162
+ return this.rangeForWeek('this');
163
+ if (['today', '今天', '今日'].includes(normalized))
164
+ return this.rangeForPeriodDay('今天', new Date(), 'today');
165
+ if (['yesterday', '昨天', '昨日'].includes(normalized))
166
+ return this.rangeForPeriodDay('昨天', this.addDays(new Date(), -1), 'yesterday');
167
+ const recentDays = normalized.match(/(?:最近|近|last|past)\s*(\d+)\s*(?:天|days?|日)?/);
168
+ if (recentDays)
169
+ return this.rangeForRecentDays(Number(recentDays[1]), text);
170
+ const daysAgo = normalized.match(/(\d+)\s*天前/);
171
+ if (daysAgo)
172
+ return this.rangeForPeriodDay(text, this.addDays(new Date(), -Number(daysAgo[1])), 'all');
173
+ const rangeParts = text.split(/\s*(?:\.\.|~|至|到|—)\s*/).filter(Boolean);
174
+ if (rangeParts.length === 2) {
175
+ const start = this.parseDate(rangeParts[0]);
176
+ const end = this.parseDate(rangeParts[1]);
177
+ if (start && end) {
178
+ return this.withLegacyAnchor(this.normalizeDateRange({ label: text, startDate: this.formatDate(start), endDate: this.formatDate(end), legacyPeriod: 'all', source: 'natural-range' }));
179
+ }
180
+ }
181
+ const singleDate = this.parseDate(text);
182
+ if (singleDate)
183
+ return this.rangeForPeriodDay(text, singleDate, 'all');
184
+ throw new Error(`无法解析日期描述: ${text}。可用示例:上周、本周、今天、昨天、最近3天、3天前、2026-05-28、2026-05-25到2026-05-29。`);
185
+ }
186
+ rangeForWeek(week) {
187
+ const today = new Date();
188
+ const day = today.getDay() || 7;
189
+ const thisMonday = this.startOfDay(this.addDays(today, 1 - day));
190
+ const start = week === 'this' ? thisMonday : this.addDays(thisMonday, -7);
191
+ const end = week === 'this' ? this.addDays(start, 6) : this.addDays(thisMonday, -1);
192
+ return {
193
+ label: week === 'last' ? '上周' : '本周',
194
+ startDate: this.formatDate(start),
195
+ endDate: this.formatDate(end),
196
+ legacyPeriod: week === 'last' ? 'lastWeek' : 'thisWeek',
197
+ source: 'week',
198
+ };
199
+ }
200
+ rangeForRecentDays(days, label) {
201
+ const end = this.startOfDay(new Date());
202
+ const start = this.addDays(end, 1 - days);
203
+ return {
204
+ label,
205
+ startDate: this.formatDate(start),
206
+ endDate: this.formatDate(end),
207
+ legacyPeriod: days === 1 ? 'today' : days === 2 ? 'twodaysago' : days === 3 ? 'latest3days' : 'all',
208
+ source: 'recent-days',
209
+ };
210
+ }
211
+ rangeForPeriodDay(label, date, legacyPeriod) {
212
+ const day = this.formatDate(date);
213
+ const range = { label, startDate: day, endDate: day, legacyPeriod, source: 'single-day' };
214
+ return legacyPeriod === 'all' ? this.withLegacyAnchor(range) : range;
215
+ }
216
+ withLegacyAnchor(range) {
217
+ const end = this.parseDate(range.endDate);
218
+ if (!end)
219
+ return range;
220
+ return { ...range, anchorTimestamp: Math.floor(this.addDays(end, 1).getTime() / 1000) };
221
+ }
222
+ normalizeDateRange(range) {
223
+ if (range.startDate <= range.endDate)
224
+ return range;
225
+ return { ...range, startDate: range.endDate, endDate: range.startDate };
226
+ }
227
+ parseDate(value) {
228
+ const trimmed = value.trim();
229
+ const full = trimmed.match(/^(\d{4})[-/.年](\d{1,2})[-/.月](\d{1,2})日?$/);
230
+ if (full)
231
+ return this.makeDate(Number(full[1]), Number(full[2]), Number(full[3]));
232
+ const monthDay = trimmed.match(/^(\d{1,2})[-/.月](\d{1,2})日?$/);
233
+ if (monthDay)
234
+ return this.makeDate(new Date().getFullYear(), Number(monthDay[1]), Number(monthDay[2]));
235
+ return undefined;
236
+ }
237
+ makeDate(year, month, day) {
238
+ const date = new Date(year, month - 1, day);
239
+ if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day)
240
+ return undefined;
241
+ return this.startOfDay(date);
242
+ }
243
+ isInDateRange(date, startDate, endDate) {
244
+ if (!date)
245
+ return false;
246
+ return date >= startDate && date <= endDate;
247
+ }
248
+ addDays(date, days) {
249
+ const next = new Date(date);
250
+ next.setDate(next.getDate() + days);
251
+ return next;
252
+ }
253
+ startOfDay(date) {
254
+ const next = new Date(date);
255
+ next.setHours(0, 0, 0, 0);
256
+ return next;
257
+ }
258
+ formatDate(date) {
259
+ const year = date.getFullYear();
260
+ const month = String(date.getMonth() + 1).padStart(2, '0');
261
+ const day = String(date.getDate()).padStart(2, '0');
262
+ return `${year}-${month}-${day}`;
263
+ }
264
+ findUserId(value) {
265
+ const records = this.collectRecords(value);
266
+ for (const record of records) {
267
+ const id = record.id;
268
+ if (typeof id === 'string' || typeof id === 'number')
269
+ return String(id);
270
+ }
271
+ return undefined;
272
+ }
273
+ extractActions(value) {
274
+ const parsed = this.parsePossiblyJsonString(value);
275
+ const records = this.collectRecords(parsed);
276
+ const actions = records.filter(record => typeof record.objectType === 'string' && typeof record.action === 'string');
277
+ return actions;
278
+ }
279
+ parsePossiblyJsonString(value) {
280
+ if (typeof value !== 'string')
281
+ return value;
282
+ try {
283
+ return JSON.parse(value);
284
+ }
285
+ catch {
286
+ return value;
287
+ }
288
+ }
289
+ collectRecords(value) {
290
+ if (Array.isArray(value))
291
+ return value.flatMap(item => this.collectRecords(item));
292
+ if (typeof value !== 'object' || value === null)
293
+ return [];
294
+ const record = value;
295
+ return [record, ...Object.values(record).flatMap(item => this.collectRecords(this.parsePossiblyJsonString(item)))];
296
+ }
297
+ normalizeAction(action) {
298
+ const originalDate = this.asString(action.originalDate) ?? this.asString(action.date) ?? '';
299
+ return {
300
+ id: this.asString(action.id),
301
+ date: originalDate.slice(0, 10),
302
+ time: this.asString(action.time) ?? originalDate.slice(11, 19),
303
+ originalDate,
304
+ actor: this.asString(action.actor) ?? this.asString(action.actor?.account),
305
+ objectType: (this.asString(action.objectType) ?? '').toLowerCase(),
306
+ objectID: this.asString(action.objectID),
307
+ objectName: this.asString(action.objectName),
308
+ action: (this.asString(action.action) ?? '').toLowerCase(),
309
+ actionLabel: this.asString(action.actionLabel),
310
+ objectLabel: this.asString(action.objectLabel),
311
+ comment: this.asString(action.comment),
312
+ relatedBugId: this.findRelatedBugId(action),
313
+ };
314
+ }
315
+ findRelatedBugId(action) {
316
+ const candidates = ['fromBug', 'bug', 'bugID', 'sourceBug', 'sourceBugID', 'parent'];
317
+ const records = this.collectRecords(action);
318
+ for (const record of records) {
319
+ for (const key of candidates) {
320
+ const value = record[key];
321
+ if (typeof value === 'string' || typeof value === 'number')
322
+ return String(value);
323
+ }
324
+ }
325
+ return undefined;
326
+ }
327
+ isFlowAction(action) {
328
+ return ['assigned', 'resolved', 'closed', 'activated', 'started', 'finished', 'paused', 'canceled', 'cancelled', 'edited'].includes(action.action);
329
+ }
330
+ pickActivityItems(actions) {
331
+ return actions.map(action => ({
332
+ date: action.date,
333
+ time: action.time,
334
+ objectType: action.objectType,
335
+ objectID: action.objectID,
336
+ objectName: action.objectName,
337
+ action: action.action,
338
+ actionLabel: action.actionLabel,
339
+ comment: action.comment,
340
+ }));
341
+ }
342
+ groupDaily(actions) {
343
+ return actions.reduce((acc, action) => {
344
+ const date = action.date || 'unknown';
345
+ acc[date] ?? (acc[date] = { total: 0, items: [] });
346
+ acc[date].total += 1;
347
+ acc[date].items.push(...this.pickActivityItems([action]));
348
+ return acc;
349
+ }, {});
350
+ }
351
+ buildDedupedWorkItems(actions) {
352
+ const items = new Map();
353
+ for (const action of actions.filter(item => item.objectType === 'bug' || item.objectType === 'task')) {
354
+ const key = action.objectType === 'task' && action.relatedBugId ? `bug:${action.relatedBugId}` : `${action.objectType}:${action.objectID ?? 'unknown'}`;
355
+ const existing = items.get(key);
356
+ if (existing) {
357
+ existing.actions += 1;
358
+ }
359
+ else {
360
+ items.set(key, { key, objectType: action.objectType, objectID: action.objectID, objectName: action.objectName, actions: 1 });
361
+ }
362
+ }
363
+ return [...items.values()];
364
+ }
365
+ asString(value) {
366
+ if (typeof value === 'string')
367
+ return value;
368
+ if (typeof value === 'number')
369
+ return String(value);
370
+ return undefined;
371
+ }
66
372
  }
67
373
  //# sourceMappingURL=statistics.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"statistics.js","sourceRoot":"","sources":["../../src/api/statistics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"statistics.js","sourceRoot":"","sources":["../../src/api/statistics.ts"],"names":[],"mappings":"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"}
package/dist/api/task.js CHANGED
@@ -1,4 +1,4 @@
1
- import { toServerListResult } from '../core/list-result.js';
1
+ import { extractItems, toClientPaginatedListResult, toServerListResult } from '../core/list-result.js';
2
2
  import { normalizePagination } from '../core/pagination.js';
3
3
  export class TaskApi {
4
4
  constructor(http) {
@@ -6,14 +6,33 @@ export class TaskApi {
6
6
  }
7
7
  async getMyTasks(input = {}) {
8
8
  const pagination = normalizePagination(input);
9
- const response = await this.http.request('GET', '/tasks', {
9
+ // ZenTao's /tasks endpoint ignores status/limit in some deployments, and its
10
+ // page query behaves like "return the first N tasks". Fetch the user's full
11
+ // task list, then apply status filtering and pagination on the client.
12
+ const firstResponse = await this.http.request('GET', '/tasks', {
10
13
  params: {
11
14
  assignedTo: this.http.username,
12
- status: input.status ?? 'all',
13
- ...pagination,
15
+ page: 1,
14
16
  },
15
17
  });
16
- return toServerListResult(response, ['tasks'], pagination);
18
+ const firstPage = toServerListResult(firstResponse, ['tasks'], { page: 1, limit: 1 });
19
+ const total = Math.max(firstPage.total, firstPage.items.length);
20
+ const response = total > firstPage.items.length
21
+ ? await this.http.request('GET', '/tasks', {
22
+ params: {
23
+ assignedTo: this.http.username,
24
+ page: total,
25
+ },
26
+ })
27
+ : firstResponse;
28
+ const allTasks = extractItems(response, ['tasks']);
29
+ const filteredTasks = input.status && input.status !== 'all'
30
+ ? allTasks.filter(task => task.status === input.status)
31
+ : allTasks;
32
+ return {
33
+ ...toClientPaginatedListResult({ tasks: filteredTasks }, ['tasks'], pagination),
34
+ scanned: allTasks.length,
35
+ };
17
36
  }
18
37
  async getTaskDetail(taskId) {
19
38
  return this.http.request('GET', `/tasks/${taskId}`);
@@ -1 +1 @@
1
- {"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/api/task.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAwB,MAAM,uBAAuB,CAAC;AAOlF,MAAM,OAAO,OAAO;IAClB,YAA6B,IAAsB;QAAtB,SAAI,GAAJ,IAAI,CAAkB;IAAG,CAAC;IAEvD,KAAK,CAAC,UAAU,CAAC,QAAyB,EAAE;QAC1C,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAA0C,KAAK,EAAE,QAAQ,EAAE;YACjG,MAAM,EAAE;gBACN,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAC9B,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,KAAK;gBAC7B,GAAG,UAAU;aACd;SACF,CAAC,CAAC;QAEH,OAAO,kBAAkB,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAc;QAChC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAa,KAAK,EAAE,UAAU,MAAM,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,MAA+B;QAC9D,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,MAAM,EAAE,EAAE;YAClD,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,SAAkC,EAAE;QACnE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,MAAM,SAAS,EAAE;YAC1D,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAqD;QACpE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,eAAe,IAAI,CAAC,SAAS,QAAQ,EAAE;YACtE,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/api/task.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACvG,OAAO,EAAE,mBAAmB,EAAwB,MAAM,uBAAuB,CAAC;AAOlF,MAAM,OAAO,OAAO;IAClB,YAA6B,IAAsB;QAAtB,SAAI,GAAJ,IAAI,CAAkB;IAAG,CAAC;IAEvD,KAAK,CAAC,UAAU,CAAC,QAAyB,EAAE;QAC1C,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAE9C,6EAA6E;QAC7E,4EAA4E;QAC5E,uEAAuE;QACvE,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAA0C,KAAK,EAAE,QAAQ,EAAE;YACtG,MAAM,EAAE;gBACN,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAC9B,IAAI,EAAE,CAAC;aACR;SACF,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,kBAAkB,CAAa,aAAa,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAClG,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM;YAC7C,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAA0C,KAAK,EAAE,QAAQ,EAAE;gBAClF,MAAM,EAAE;oBACN,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ;oBAC9B,IAAI,EAAE,KAAK;iBACZ;aACF,CAAC;YACF,CAAC,CAAC,aAAa,CAAC;QAElB,MAAM,QAAQ,GAAG,YAAY,CAAa,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/D,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK;YAC1D,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC;YACvD,CAAC,CAAC,QAAQ,CAAC;QAEb,OAAO;YACL,GAAG,2BAA2B,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC;YAC/E,OAAO,EAAE,QAAQ,CAAC,MAAM;SACzB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAc;QAChC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAa,KAAK,EAAE,UAAU,MAAM,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,MAA+B;QAC9D,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,MAAM,EAAE,EAAE;YAClD,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,SAAkC,EAAE;QACnE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,MAAM,SAAS,EAAE;YAC1D,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAqD;QACpE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,eAAe,IAAI,CAAC,SAAS,QAAQ,EAAE;YACtE,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;IACL,CAAC;CACF"}
package/dist/cli.js CHANGED
@@ -1,13 +1,16 @@
1
1
  import { InMemoryCliRegistry, parseCommandInput } from './core/cli-registry.js';
2
2
  import { registerTools } from './core/tool-registry.js';
3
+ import { runInstallCommand, runUpdateCommand } from './install.js';
3
4
  import { CLI_VERSION } from './version.js';
4
5
  const VALID_ROLES = new Set(['full', 'dev', 'pm', 'qa']);
5
6
  export async function runCli(rawArgs) {
6
7
  const { role, commandName, commandArgs } = parseCliArgs(rawArgs);
7
8
  const registry = new InMemoryCliRegistry();
8
9
  registerTools(registry, role);
10
+ const builtinCommandNames = ['help', 'list', 'version', 'install', 'update'];
11
+ const commandNames = [...builtinCommandNames, ...registry.listCommands().map((item) => item.name)];
9
12
  if (!commandName || commandName === 'help' || commandName === '--help' || commandName === '-h') {
10
- printHelp(role, registry.listCommands().map((item) => item.name));
13
+ printHelp(role, commandNames);
11
14
  return;
12
15
  }
13
16
  if (commandName === '--version' || commandName === '-v' || commandName === 'version') {
@@ -15,11 +18,19 @@ export async function runCli(rawArgs) {
15
18
  return;
16
19
  }
17
20
  if (commandName === 'list') {
18
- for (const item of registry.listCommands()) {
19
- process.stdout.write(`${item.name}\n`);
21
+ for (const item of commandNames) {
22
+ process.stdout.write(`${item}\n`);
20
23
  }
21
24
  return;
22
25
  }
26
+ if (commandName === 'install') {
27
+ await runInstallCommand(commandArgs);
28
+ return;
29
+ }
30
+ if (commandName === 'update' || commandName === 'upgrade') {
31
+ await runUpdateCommand(commandArgs);
32
+ return;
33
+ }
23
34
  const command = registry.getCommand(commandName);
24
35
  if (!command) {
25
36
  throw new Error(`未找到命令: ${commandName}`);
@@ -57,8 +68,15 @@ function printHelp(role, commands) {
57
68
  ' zentao [--role full|dev|pm|qa] <command> [--key value ...]',
58
69
  ' zentao list',
59
70
  ' zentao help',
71
+ ' zentao version',
72
+ ' zentao update',
73
+ ' npx -y @cloudglab/zentao-cli@latest install',
74
+ ' zentao install --skill-source npm',
60
75
  '',
61
76
  '示例:',
77
+ ' zentao install',
78
+ ' zentao install --skill-source npm',
79
+ ' zentao update',
62
80
  ' zentao getMyTasks --status all --limit 20',
63
81
  ' zentao --role qa getMyBugs --limit 50',
64
82
  ' zentao initZentao --url https://host --username xxx --password yyy',
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAO,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAE/D,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAAiB;IAC5C,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,IAAI,mBAAmB,EAAE,CAAC;IAC3C,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAE9B,IAAI,CAAC,WAAW,IAAI,WAAW,KAAK,MAAM,IAAI,WAAW,KAAK,QAAQ,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QAC/F,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAClE,OAAO;IACT,CAAC;IAED,IAAI,WAAW,KAAK,WAAW,IAAI,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QACrF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,IAAI,CAAC,CAAC;QACzC,OAAO;IACT,CAAC;IAED,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;QAC3B,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC;YAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;QACzC,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,UAAU,WAAW,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;IAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,YAAY,CAAC,OAAiB;IACrC,MAAM,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;IAC1B,IAAI,IAAI,GAAS,MAAM,CAAC;IAExB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC;IAC5E,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;QACnB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAiB,CAAC,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,YAAY,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,GAAG,SAAiB,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAC5B,CAAC;SAAM,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAS,CAAC,EAAE,CAAC;QACvD,IAAI,GAAG,IAAI,CAAC,KAAK,EAAU,CAAC;IAC9B,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IACjC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AAClD,CAAC;AAED,SAAS,SAAS,CAAC,IAAU,EAAE,QAAkB;IAC/C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;QACnB,YAAY;QACZ,EAAE;QACF,YAAY,IAAI,EAAE;QAClB,EAAE;QACF,KAAK;QACL,8DAA8D;QAC9D,eAAe;QACf,eAAe;QACf,EAAE;QACF,KAAK;QACL,6CAA6C;QAC7C,yCAAyC;QACzC,sEAAsE;QACtE,oBAAoB;QACpB,EAAE;QACF,qBAAqB;QACrB,EAAE;QACF,OAAO;QACP,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC;QACxC,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -8,5 +8,6 @@ export declare class ZentaoHttpClient {
8
8
  get username(): string;
9
9
  getToken(): Promise<string>;
10
10
  request<T = unknown>(method: string, url: string, options?: AxiosRequestConfig): Promise<T>;
11
+ legacyRequest<T = unknown>(method: string, path: string, options?: AxiosRequestConfig): Promise<T>;
11
12
  private requestWithRetry;
12
13
  }
package/dist/core/http.js CHANGED
@@ -19,6 +19,32 @@ export class ZentaoHttpClient {
19
19
  async request(method, url, options = {}) {
20
20
  return this.requestWithRetry(method, url, options, false);
21
21
  }
22
+ async legacyRequest(method, path, options = {}) {
23
+ const token = await this.auth.getToken();
24
+ const baseURL = `${this.config.url.replace(/\/$/, '')}/zentao`;
25
+ try {
26
+ const response = await axios.request({
27
+ ...options,
28
+ method,
29
+ baseURL,
30
+ url: path,
31
+ timeout: 30000,
32
+ headers: {
33
+ ...options.headers,
34
+ Token: token,
35
+ },
36
+ });
37
+ return sanitizeJsonLikeResponse(response.data);
38
+ }
39
+ catch (error) {
40
+ if (axios.isAxiosError(error)) {
41
+ const data = error.response?.data;
42
+ const message = typeof data === 'string' ? data.slice(0, 500) : JSON.stringify(data ?? error.message);
43
+ throw new Error(`旧版页面请求失败: ${error.response?.status ?? 'NO_STATUS'} - ${message}`);
44
+ }
45
+ throw error;
46
+ }
47
+ }
22
48
  async requestWithRetry(method, url, options, retried) {
23
49
  const token = await this.auth.getToken();
24
50
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/core/http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAsD,MAAM,OAAO,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,MAAM,OAAO,gBAAgB;IAI3B,YAA6B,MAAoB;QAApB,WAAM,GAAN,MAAM,CAAc;QAC/C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YACzB,OAAO,EAAE,MAAM,CAAC,UAAU,IAAI,GAAG,MAAM,CAAC,GAAG,mBAAmB,MAAM,CAAC,UAAU,EAAE;YACjF,OAAO,EAAE,KAAM;SAChB,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,OAAO,CAAc,MAAc,EAAE,GAAW,EAAE,UAA8B,EAAE;QACtF,OAAO,IAAI,CAAC,gBAAgB,CAAI,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/D,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAc,MAAc,EAAE,GAAW,EAAE,OAA2B,EAAE,OAAgB;QACpH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEzC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;gBACzC,GAAG,OAAO;gBACV,MAAM;gBACN,GAAG;gBACH,OAAO,EAAE;oBACP,GAAG,OAAO,CAAC,OAAO;oBAClB,KAAK,EAAE,KAAK;iBACb;aACF,CAAC,CAAC;YAEH,OAAO,wBAAwB,CAAC,QAAQ,CAAC,IAAI,CAAM,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;oBAC/C,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;oBACvB,OAAO,IAAI,CAAC,gBAAgB,CAAI,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;gBAC9D,CAAC;gBAED,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC;gBAClC,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;gBACxF,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,CAAC,QAAQ,EAAE,MAAM,IAAI,WAAW,MAAM,OAAO,EAAE,CAAC,CAAC;YACjF,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/core/http.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  const ROLE_TOOL_GROUPS = {
2
2
  full: ['init', 'task', 'bug', 'story', 'execution', 'comment', 'profile', 'statistics', 'relation', 'context', 'product', 'project', 'testcase', 'testtask', 'program', 'plan', 'build', 'release', 'search', 'story-write', 'task-derived', 'plan-relation', 'execution-write', 'build-write', 'testcase-write', 'testtask-write'],
3
3
  dev: ['init', 'task', 'bug', 'story', 'execution', 'comment', 'profile', 'statistics', 'relation', 'context', 'product', 'project', 'build', 'release', 'search', 'story-write', 'task-derived', 'execution-write', 'build-write'],
4
- qa: ['init', 'bug', 'story', 'execution', 'comment', 'profile', 'statistics', 'relation', 'context', 'product', 'project', 'testcase', 'testtask', 'build', 'release', 'search', 'testcase-write', 'testtask-write'],
4
+ qa: ['init', 'task', 'bug', 'story', 'execution', 'comment', 'profile', 'statistics', 'relation', 'context', 'product', 'project', 'testcase', 'testtask', 'build', 'release', 'search', 'testcase-write', 'testtask-write'],
5
5
  pm: ['init', 'story', 'execution', 'comment', 'profile', 'relation', 'context', 'product', 'project', 'program', 'plan', 'release', 'search', 'story-write', 'plan-relation', 'execution-write'],
6
6
  };
7
7
  export function hasToolGroup(role, group) {
@@ -1 +1 @@
1
- {"version":3,"file":"roles.js","sourceRoot":"","sources":["../../src/core/roles.ts"],"names":[],"mappings":"AAIA,MAAM,gBAAgB,GAA8B;IAClD,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,iBAAiB,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;IACnU,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa,CAAC;IAClO,EAAE,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;IACpN,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,CAAC;CACjM,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,IAAU,EAAE,KAAgB;IACvD,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAU;IACtC,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"roles.js","sourceRoot":"","sources":["../../src/core/roles.ts"],"names":[],"mappings":"AAIA,MAAM,gBAAgB,GAA8B;IAClD,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,iBAAiB,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;IACnU,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa,CAAC;IAClO,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;IAC5N,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,CAAC;CACjM,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,IAAU,EAAE,KAAgB;IACvD,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAU;IACtC,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function runInstallCommand(args?: string[]): Promise<void>;
2
+ export declare function runUpdateCommand(args?: string[]): Promise<void>;