@polza-ai/yandex-tracker-cli 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/README.md +140 -0
  2. package/dist/bin/tracker.d.ts +3 -0
  3. package/dist/bin/tracker.d.ts.map +1 -0
  4. package/dist/bin/tracker.js +45 -0
  5. package/dist/bin/tracker.js.map +1 -0
  6. package/dist/src/client/pagination.d.ts +7 -0
  7. package/dist/src/client/pagination.d.ts.map +1 -0
  8. package/dist/src/client/pagination.js +31 -0
  9. package/dist/src/client/pagination.js.map +1 -0
  10. package/dist/src/client/tracker-client.d.ts +31 -0
  11. package/dist/src/client/tracker-client.d.ts.map +1 -0
  12. package/dist/src/client/tracker-client.js +148 -0
  13. package/dist/src/client/tracker-client.js.map +1 -0
  14. package/dist/src/client/types.d.ts +143 -0
  15. package/dist/src/client/types.d.ts.map +1 -0
  16. package/dist/src/client/types.js +2 -0
  17. package/dist/src/client/types.js.map +1 -0
  18. package/dist/src/commands/checklist.d.ts +3 -0
  19. package/dist/src/commands/checklist.d.ts.map +1 -0
  20. package/dist/src/commands/checklist.js +72 -0
  21. package/dist/src/commands/checklist.js.map +1 -0
  22. package/dist/src/commands/comment.d.ts +3 -0
  23. package/dist/src/commands/comment.d.ts.map +1 -0
  24. package/dist/src/commands/comment.js +52 -0
  25. package/dist/src/commands/comment.js.map +1 -0
  26. package/dist/src/commands/create.d.ts +3 -0
  27. package/dist/src/commands/create.d.ts.map +1 -0
  28. package/dist/src/commands/create.js +50 -0
  29. package/dist/src/commands/create.js.map +1 -0
  30. package/dist/src/commands/init.d.ts +3 -0
  31. package/dist/src/commands/init.d.ts.map +1 -0
  32. package/dist/src/commands/init.js +59 -0
  33. package/dist/src/commands/init.js.map +1 -0
  34. package/dist/src/commands/link.d.ts +3 -0
  35. package/dist/src/commands/link.d.ts.map +1 -0
  36. package/dist/src/commands/link.js +43 -0
  37. package/dist/src/commands/link.js.map +1 -0
  38. package/dist/src/commands/sprint.d.ts +3 -0
  39. package/dist/src/commands/sprint.d.ts.map +1 -0
  40. package/dist/src/commands/sprint.js +54 -0
  41. package/dist/src/commands/sprint.js.map +1 -0
  42. package/dist/src/commands/status.d.ts +3 -0
  43. package/dist/src/commands/status.d.ts.map +1 -0
  44. package/dist/src/commands/status.js +40 -0
  45. package/dist/src/commands/status.js.map +1 -0
  46. package/dist/src/commands/tasks.d.ts +4 -0
  47. package/dist/src/commands/tasks.d.ts.map +1 -0
  48. package/dist/src/commands/tasks.js +63 -0
  49. package/dist/src/commands/tasks.js.map +1 -0
  50. package/dist/src/commands/time.d.ts +3 -0
  51. package/dist/src/commands/time.d.ts.map +1 -0
  52. package/dist/src/commands/time.js +149 -0
  53. package/dist/src/commands/time.js.map +1 -0
  54. package/dist/src/config/auth.d.ts +2 -0
  55. package/dist/src/config/auth.d.ts.map +1 -0
  56. package/dist/src/config/auth.js +9 -0
  57. package/dist/src/config/auth.js.map +1 -0
  58. package/dist/src/config/config.d.ts +10 -0
  59. package/dist/src/config/config.d.ts.map +1 -0
  60. package/dist/src/config/config.js +79 -0
  61. package/dist/src/config/config.js.map +1 -0
  62. package/dist/src/config/config.schema.d.ts +67 -0
  63. package/dist/src/config/config.schema.d.ts.map +1 -0
  64. package/dist/src/config/config.schema.js +22 -0
  65. package/dist/src/config/config.schema.js.map +1 -0
  66. package/dist/src/formatters/json.d.ts +3 -0
  67. package/dist/src/formatters/json.d.ts.map +1 -0
  68. package/dist/src/formatters/json.js +7 -0
  69. package/dist/src/formatters/json.js.map +1 -0
  70. package/dist/src/formatters/table.d.ts +9 -0
  71. package/dist/src/formatters/table.d.ts.map +1 -0
  72. package/dist/src/formatters/table.js +150 -0
  73. package/dist/src/formatters/table.js.map +1 -0
  74. package/dist/src/index.d.ts +5 -0
  75. package/dist/src/index.d.ts.map +1 -0
  76. package/dist/src/index.js +3 -0
  77. package/dist/src/index.js.map +1 -0
  78. package/dist/src/utils/error.d.ts +8 -0
  79. package/dist/src/utils/error.d.ts.map +1 -0
  80. package/dist/src/utils/error.js +52 -0
  81. package/dist/src/utils/error.js.map +1 -0
  82. package/dist/src/utils/key-resolver.d.ts +2 -0
  83. package/dist/src/utils/key-resolver.d.ts.map +1 -0
  84. package/dist/src/utils/key-resolver.js +10 -0
  85. package/dist/src/utils/key-resolver.js.map +1 -0
  86. package/package.json +45 -0
package/README.md ADDED
@@ -0,0 +1,140 @@
1
+ # yandex-tracker-cli
2
+
3
+ CLI для [Yandex Tracker](https://tracker.yandex.ru/) — для людей и AI-агентов.
4
+
5
+ Простой инструмент для работы с задачами из терминала. Поддерживает двойной вывод: цветные таблицы для людей, `--json` для AI-агентов (Claude Code, Cursor и др.).
6
+
7
+ ## Установка
8
+
9
+ ```bash
10
+ npm install -g yandex-tracker-cli
11
+ ```
12
+
13
+ Или из исходников:
14
+
15
+ ```bash
16
+ git clone https://github.com/polza-ai/yandex-tracker-cli.git
17
+ cd yandex-tracker-cli
18
+ npm install
19
+ npm run build
20
+ npm link
21
+ ```
22
+
23
+ ## Быстрый старт
24
+
25
+ ```bash
26
+ # Настройка подключения
27
+ tracker init
28
+
29
+ # Мои задачи
30
+ tracker tasks --assignee me
31
+
32
+ # Детали задачи
33
+ tracker task BACKEND-123
34
+
35
+ # Создать задачу
36
+ tracker create -s "Исправить баг в авторизации" -t bug -p critical
37
+
38
+ # Сменить статус
39
+ tracker status BACKEND-123 inProgress
40
+
41
+ # Комментарий
42
+ tracker comment BACKEND-123 "Взял в работу, MR будет через час"
43
+
44
+ # Залогировать время
45
+ tracker time BACKEND-123 log 2h30m
46
+ ```
47
+
48
+ ## Команды
49
+
50
+ | Команда | Описание |
51
+ |---------|----------|
52
+ | `tracker init` | Настройка подключения к Yandex Tracker |
53
+ | `tracker tasks` | Поиск и список задач |
54
+ | `tracker task <KEY>` | Детали задачи |
55
+ | `tracker create` | Создание задачи |
56
+ | `tracker status <KEY> <STATUS>` | Смена статуса (через transitions) |
57
+ | `tracker comment <KEY> [text]` | Комментарии |
58
+ | `tracker time <KEY> <action>` | Трекинг времени (start/stop/log/show) |
59
+ | `tracker sprint` | Текущий спринт |
60
+ | `tracker checklist <KEY>` | Чеклист задачи |
61
+ | `tracker link <KEY> [TARGET]` | Связи между задачами |
62
+
63
+ Все команды поддерживают `--json` для машинного вывода.
64
+
65
+ ## Конфигурация
66
+
67
+ ### Глобальная (`~/.tracker-cli/config.json`)
68
+
69
+ Создаётся через `tracker init`:
70
+
71
+ ```json
72
+ {
73
+ "token": "y0_AgAAAA...",
74
+ "tokenType": "oauth",
75
+ "orgId": "123456",
76
+ "defaultQueue": "BACKEND",
77
+ "apiBaseUrl": "https://api.tracker.yandex.net/v2"
78
+ }
79
+ ```
80
+
81
+ ### Проектная (`.tracker.json` в корне репо)
82
+
83
+ ```json
84
+ {
85
+ "queue": "BACKEND",
86
+ "boardId": 42,
87
+ "branchPrefix": "feature",
88
+ "statusMap": {
89
+ "open": "open",
90
+ "inProgress": "inProgress",
91
+ "review": "readyForReview",
92
+ "testing": "testing",
93
+ "closed": "closed"
94
+ }
95
+ }
96
+ ```
97
+
98
+ `statusMap` позволяет маппить каноничные имена статусов на реальные ключи вашего workflow.
99
+
100
+ ## Для AI-агентов
101
+
102
+ В комплекте идёт `SKILL.md` — инструкция для AI-агента, описывающая полный рабочий цикл:
103
+ задача → статус → ветка → код → коммит → MR → комментарий → review.
104
+
105
+ ### Claude Code
106
+
107
+ `CLAUDE.md` в корне проекта подхватывается автоматически.
108
+
109
+ ### Cursor
110
+
111
+ Скопируйте `SKILL.md` в `.cursor/rules/tracker-workflow.md`.
112
+
113
+ ## JSON-вывод
114
+
115
+ Все команды с `--json` возвращают структурированный ответ:
116
+
117
+ ```json
118
+ {
119
+ "ok": true,
120
+ "data": { ... }
121
+ }
122
+ ```
123
+
124
+ При ошибке:
125
+
126
+ ```json
127
+ {
128
+ "ok": false,
129
+ "error": { "code": "NOT_FOUND", "message": "Не найдено." }
130
+ }
131
+ ```
132
+
133
+ ## Требования
134
+
135
+ - Node.js 20+
136
+ - OAuth-токен Yandex Tracker (получить на [oauth.yandex.ru](https://oauth.yandex.ru/))
137
+
138
+ ## Лицензия
139
+
140
+ MIT
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../bin/tracker.ts"],"names":[],"mappings":""}
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ import { registerInitCommand } from '../src/commands/init.js';
4
+ import { registerTaskCommand, registerTasksCommand } from '../src/commands/tasks.js';
5
+ import { registerSprintCommand } from '../src/commands/sprint.js';
6
+ import { registerStatusCommand } from '../src/commands/status.js';
7
+ import { registerCreateCommand } from '../src/commands/create.js';
8
+ import { registerCommentCommand } from '../src/commands/comment.js';
9
+ import { registerTimeCommand } from '../src/commands/time.js';
10
+ import { registerChecklistCommand } from '../src/commands/checklist.js';
11
+ import { registerLinkCommand } from '../src/commands/link.js';
12
+ import { formatError } from '../src/utils/error.js';
13
+ const program = new Command();
14
+ program
15
+ .name('tracker')
16
+ .description('CLI для Yandex Tracker — для людей и AI-агентов')
17
+ .version('0.1.0');
18
+ registerInitCommand(program);
19
+ registerTaskCommand(program);
20
+ registerTasksCommand(program);
21
+ registerSprintCommand(program);
22
+ registerStatusCommand(program);
23
+ registerCreateCommand(program);
24
+ registerCommentCommand(program);
25
+ registerTimeCommand(program);
26
+ registerChecklistCommand(program);
27
+ registerLinkCommand(program);
28
+ program.hook('postAction', () => { });
29
+ // Global error handler
30
+ const originalParse = program.parseAsync.bind(program);
31
+ program.parseAsync = async (argv) => {
32
+ try {
33
+ return await originalParse(argv);
34
+ }
35
+ catch (error) {
36
+ const isJson = process.argv.includes('--json');
37
+ process.stderr.write(formatError(error, false) + '\n');
38
+ if (isJson) {
39
+ process.stdout.write(formatError(error, true) + '\n');
40
+ }
41
+ process.exit(error instanceof Error && 'exitCode' in error ? error.exitCode : 1);
42
+ }
43
+ };
44
+ program.parseAsync();
45
+ //# sourceMappingURL=tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../bin/tracker.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,iDAAiD,CAAC;KAC9D,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAE7B,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AAErC,uBAAuB;AACvB,MAAM,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACvD,OAAO,CAAC,UAAU,GAAG,KAAK,EAAE,IAAe,EAAE,EAAE;IAC7C,IAAI,CAAC;QACH,OAAO,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC/C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QACvD,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,KAAK,YAAY,KAAK,IAAI,UAAU,IAAI,KAAK,CAAC,CAAC,CAAE,KAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5F,CAAC;AACH,CAAC,CAAC;AAEF,OAAO,CAAC,UAAU,EAAE,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { AxiosInstance } from 'axios';
2
+ export interface PaginatedOptions {
3
+ perPage?: number;
4
+ }
5
+ export declare function paginate<T>(client: AxiosInstance, url: string, options?: PaginatedOptions, method?: 'get' | 'post', body?: unknown): AsyncGenerator<T[], void, undefined>;
6
+ export declare function collectAll<T>(generator: AsyncGenerator<T[], void, undefined>): Promise<T[]>;
7
+ //# sourceMappingURL=pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../../src/client/pagination.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAuB,QAAQ,CAAC,CAAC,EAC/B,MAAM,EAAE,aAAa,EACrB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,gBAAqB,EAC9B,MAAM,GAAE,KAAK,GAAG,MAAc,EAC9B,IAAI,CAAC,EAAE,OAAO,GACb,cAAc,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,CA0BtC;AAED,wBAAsB,UAAU,CAAC,CAAC,EAChC,SAAS,EAAE,cAAc,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,GAC9C,OAAO,CAAC,CAAC,EAAE,CAAC,CAMd"}
@@ -0,0 +1,31 @@
1
+ export async function* paginate(client, url, options = {}, method = 'get', body) {
2
+ const perPage = options.perPage ?? 50;
3
+ let page = 1;
4
+ let totalPages = 1;
5
+ do {
6
+ const params = { perPage, page };
7
+ const response = method === 'post'
8
+ ? await client.post(url, body, { params })
9
+ : await client.get(url, { params });
10
+ const items = Array.isArray(response.data) ? response.data : [];
11
+ const totalPagesHeader = response.headers['x-total-pages'];
12
+ if (totalPagesHeader) {
13
+ totalPages = parseInt(totalPagesHeader, 10);
14
+ }
15
+ else if (items.length < perPage) {
16
+ totalPages = page;
17
+ }
18
+ if (items.length > 0) {
19
+ yield items;
20
+ }
21
+ page++;
22
+ } while (page <= totalPages);
23
+ }
24
+ export async function collectAll(generator) {
25
+ const results = [];
26
+ for await (const page of generator) {
27
+ results.push(...page);
28
+ }
29
+ return results;
30
+ }
31
+ //# sourceMappingURL=pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../../src/client/pagination.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,QAAQ,CAC7B,MAAqB,EACrB,GAAW,EACX,UAA4B,EAAE,EAC9B,SAAyB,KAAK,EAC9B,IAAc;IAEd,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IACtC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,GAAG,CAAC;QACF,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,MAAM,KAAK,MAAM;YAChC,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC;YAC1C,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAEtC,MAAM,KAAK,GAAQ,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAErE,MAAM,gBAAgB,GAAG,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAC3D,IAAI,gBAAgB,EAAE,CAAC;YACrB,UAAU,GAAG,QAAQ,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;QAC9C,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;YAClC,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,KAAK,CAAC;QACd,CAAC;QAED,IAAI,EAAE,CAAC;IACT,CAAC,QAAQ,IAAI,IAAI,UAAU,EAAE;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,SAA+C;IAE/C,MAAM,OAAO,GAAQ,EAAE,CAAC;IACxB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { Issue, Transition, Comment, Worklog, ChecklistItem, IssueLink, CreateIssueParams, IssueFilter, WorklogParams, Sprint, UserRef } from './types.js';
2
+ export interface TrackerClientConfig {
3
+ token: string;
4
+ tokenType: 'oauth' | 'iam';
5
+ orgId?: string;
6
+ cloudOrgId?: string;
7
+ apiBaseUrl?: string;
8
+ }
9
+ export declare class TrackerClient {
10
+ private http;
11
+ constructor(config: TrackerClientConfig);
12
+ getIssue(key: string): Promise<Issue>;
13
+ searchIssues(filter: IssueFilter): Promise<Issue[]>;
14
+ createIssue(params: CreateIssueParams): Promise<Issue>;
15
+ updateIssue(key: string, params: Record<string, unknown>): Promise<Issue>;
16
+ getTransitions(key: string): Promise<Transition[]>;
17
+ executeTransition(key: string, transitionId: string, comment?: string): Promise<void>;
18
+ getComments(key: string): Promise<Comment[]>;
19
+ addComment(key: string, text: string): Promise<Comment>;
20
+ getWorklogs(key: string): Promise<Worklog[]>;
21
+ addWorklog(key: string, params: WorklogParams): Promise<Worklog>;
22
+ getSprints(boardId: number): Promise<Sprint[]>;
23
+ getCurrentSprint(boardId: number): Promise<Sprint | null>;
24
+ getChecklist(key: string): Promise<ChecklistItem[]>;
25
+ addChecklistItem(key: string, text: string): Promise<ChecklistItem>;
26
+ toggleChecklistItem(key: string, itemId: string, checked: boolean): Promise<void>;
27
+ getLinks(key: string): Promise<IssueLink[]>;
28
+ createLink(key: string, target: string, relationship: string): Promise<IssueLink>;
29
+ getMyself(): Promise<UserRef>;
30
+ }
31
+ //# sourceMappingURL=tracker-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracker-client.d.ts","sourceRoot":"","sources":["../../../src/client/tracker-client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAClD,SAAS,EAAE,iBAAiB,EAAE,WAAW,EAAE,aAAa,EACxD,MAAM,EAAE,OAAO,EAChB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,GAAG,KAAK,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,IAAI,CAAgB;gBAEhB,MAAM,EAAE,mBAAmB;IAkCjC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAKrC,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAsBnD,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC;IAiBtD,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;IAOzE,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAKlD,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrF,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAI5C,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAOvD,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAK5C,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAOhE,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAK9C,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAOzD,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAKnD,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAKnE,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAMjF,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAK3C,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAUjF,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;CAIpC"}
@@ -0,0 +1,148 @@
1
+ import axios from 'axios';
2
+ import { paginate, collectAll } from './pagination.js';
3
+ export class TrackerClient {
4
+ http;
5
+ constructor(config) {
6
+ const authHeader = config.tokenType === 'iam'
7
+ ? `Bearer ${config.token}`
8
+ : `OAuth ${config.token}`;
9
+ const headers = {
10
+ 'Authorization': authHeader,
11
+ 'Content-Type': 'application/json',
12
+ };
13
+ if (config.cloudOrgId) {
14
+ headers['X-Cloud-Org-ID'] = config.cloudOrgId;
15
+ }
16
+ else if (config.orgId) {
17
+ headers['X-Org-ID'] = config.orgId;
18
+ }
19
+ this.http = axios.create({
20
+ baseURL: config.apiBaseUrl ?? 'https://api.tracker.yandex.net/v2',
21
+ headers,
22
+ timeout: 30000,
23
+ });
24
+ this.http.interceptors.response.use(undefined, async (error) => {
25
+ if (error.response?.status === 429 && error.config) {
26
+ const retryAfter = parseInt(error.response.headers['retry-after'] ?? '2', 10);
27
+ await new Promise(r => setTimeout(r, retryAfter * 1000));
28
+ return this.http.request(error.config);
29
+ }
30
+ throw error;
31
+ });
32
+ }
33
+ // Issues
34
+ async getIssue(key) {
35
+ const { data } = await this.http.get(`/issues/${key}`);
36
+ return data;
37
+ }
38
+ async searchIssues(filter) {
39
+ if (filter.query) {
40
+ return collectAll(paginate(this.http, '/issues/_search', {}, 'post', {
41
+ query: filter.query,
42
+ }));
43
+ }
44
+ const conditions = [];
45
+ if (filter.queue)
46
+ conditions.push(`Queue: "${filter.queue}"`);
47
+ if (filter.assignee) {
48
+ conditions.push(filter.assignee === 'me' ? 'Assignee: me()' : `Assignee: "${filter.assignee}"`);
49
+ }
50
+ if (filter.status)
51
+ conditions.push(`Status: "${filter.status}"`);
52
+ if (filter.sprint)
53
+ conditions.push(`Sprint: "${filter.sprint}"`);
54
+ const query = conditions.length > 0 ? conditions.join(' AND ') : undefined;
55
+ return collectAll(paginate(this.http, '/issues/_search', {}, 'post', query ? { query } : {}));
56
+ }
57
+ async createIssue(params) {
58
+ const body = {
59
+ queue: params.queue,
60
+ summary: params.summary,
61
+ };
62
+ if (params.description)
63
+ body.description = params.description;
64
+ if (params.type)
65
+ body.type = params.type;
66
+ if (params.priority)
67
+ body.priority = params.priority;
68
+ if (params.assignee)
69
+ body.assignee = params.assignee;
70
+ if (params.sprint)
71
+ body.sprint = [{ id: params.sprint }];
72
+ if (params.parent)
73
+ body.parent = params.parent;
74
+ if (params.tags)
75
+ body.tags = params.tags;
76
+ const { data } = await this.http.post('/issues', body);
77
+ return data;
78
+ }
79
+ async updateIssue(key, params) {
80
+ const { data } = await this.http.patch(`/issues/${key}`, params);
81
+ return data;
82
+ }
83
+ // Transitions
84
+ async getTransitions(key) {
85
+ const { data } = await this.http.get(`/issues/${key}/transitions`);
86
+ return data;
87
+ }
88
+ async executeTransition(key, transitionId, comment) {
89
+ const body = comment ? { comment } : undefined;
90
+ await this.http.post(`/issues/${key}/transitions/${transitionId}/_execute`, body);
91
+ }
92
+ // Comments
93
+ async getComments(key) {
94
+ return collectAll(paginate(this.http, `/issues/${key}/comments`));
95
+ }
96
+ async addComment(key, text) {
97
+ const { data } = await this.http.post(`/issues/${key}/comments`, { text });
98
+ return data;
99
+ }
100
+ // Worklogs
101
+ async getWorklogs(key) {
102
+ const { data } = await this.http.get(`/issues/${key}/worklog`);
103
+ return data;
104
+ }
105
+ async addWorklog(key, params) {
106
+ const { data } = await this.http.post(`/issues/${key}/worklog`, params);
107
+ return data;
108
+ }
109
+ // Sprints
110
+ async getSprints(boardId) {
111
+ const { data } = await this.http.get(`/boards/${boardId}/sprints`);
112
+ return data;
113
+ }
114
+ async getCurrentSprint(boardId) {
115
+ const sprints = await this.getSprints(boardId);
116
+ return sprints.find(s => s.status === 'in_progress') ?? null;
117
+ }
118
+ // Checklists
119
+ async getChecklist(key) {
120
+ const { data } = await this.http.get(`/issues/${key}/checklistItems`);
121
+ return Array.isArray(data) ? data : [];
122
+ }
123
+ async addChecklistItem(key, text) {
124
+ const { data } = await this.http.post(`/issues/${key}/checklistItems`, { text });
125
+ return data;
126
+ }
127
+ async toggleChecklistItem(key, itemId, checked) {
128
+ await this.http.patch(`/issues/${key}/checklistItems/${itemId}`, { checked });
129
+ }
130
+ // Links
131
+ async getLinks(key) {
132
+ const { data } = await this.http.get(`/issues/${key}/links`);
133
+ return data;
134
+ }
135
+ async createLink(key, target, relationship) {
136
+ const { data } = await this.http.post(`/issues/${key}/links`, {
137
+ relationship,
138
+ issue: target,
139
+ });
140
+ return data;
141
+ }
142
+ // User
143
+ async getMyself() {
144
+ const { data } = await this.http.get('/myself');
145
+ return data;
146
+ }
147
+ }
148
+ //# sourceMappingURL=tracker-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracker-client.js","sourceRoot":"","sources":["../../../src/client/tracker-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAA8C,MAAM,OAAO,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAevD,MAAM,OAAO,aAAa;IAChB,IAAI,CAAgB;IAE5B,YAAY,MAA2B;QACrC,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,KAAK,KAAK;YAC3C,CAAC,CAAC,UAAU,MAAM,CAAC,KAAK,EAAE;YAC1B,CAAC,CAAC,SAAS,MAAM,CAAC,KAAK,EAAE,CAAC;QAE5B,MAAM,OAAO,GAA2B;YACtC,eAAe,EAAE,UAAU;YAC3B,cAAc,EAAE,kBAAkB;SACnC,CAAC;QAEF,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC;QAChD,CAAC;aAAM,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACxB,OAAO,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;QACrC,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC;YACvB,OAAO,EAAE,MAAM,CAAC,UAAU,IAAI,mCAAmC;YACjE,OAAO;YACP,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,KAAiB,EAAE,EAAE;YACzE,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACnD,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAW,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;gBACxF,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC;gBACzD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzC,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS;IAET,KAAK,CAAC,QAAQ,CAAC,GAAW;QACxB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAQ,WAAW,GAAG,EAAE,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAmB;QACpC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,OAAO,UAAU,CAAC,QAAQ,CAAQ,IAAI,CAAC,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,MAAM,EAAE;gBAC1E,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB,CAAC,CAAC,CAAC;QACN,CAAC;QAED,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,IAAI,MAAM,CAAC,KAAK;YAAE,UAAU,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;QAC9D,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClG,CAAC;QACD,IAAI,MAAM,CAAC,MAAM;YAAE,UAAU,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QACjE,IAAI,MAAM,CAAC,MAAM;YAAE,UAAU,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QAEjE,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE3E,OAAO,UAAU,CAAC,QAAQ,CAAQ,IAAI,CAAC,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,MAAM,EACxE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CACvB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAyB;QACzC,MAAM,IAAI,GAA4B;YACpC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC;QACF,IAAI,MAAM,CAAC,WAAW;YAAE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QAC9D,IAAI,MAAM,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACzC,IAAI,MAAM,CAAC,QAAQ;YAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACrD,IAAI,MAAM,CAAC,QAAQ;YAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACrD,IAAI,MAAM,CAAC,MAAM;YAAE,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACzD,IAAI,MAAM,CAAC,MAAM;YAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC/C,IAAI,MAAM,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QAEzC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAQ,SAAS,EAAE,IAAI,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,GAAW,EAAE,MAA+B;QAC5D,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAQ,WAAW,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,cAAc;IAEd,KAAK,CAAC,cAAc,CAAC,GAAW;QAC9B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAe,WAAW,GAAG,cAAc,CAAC,CAAC;QACjF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,GAAW,EAAE,YAAoB,EAAE,OAAgB;QACzE,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/C,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,gBAAgB,YAAY,WAAW,EAAE,IAAI,CAAC,CAAC;IACpF,CAAC;IAED,WAAW;IAEX,KAAK,CAAC,WAAW,CAAC,GAAW;QAC3B,OAAO,UAAU,CAAC,QAAQ,CAAU,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAW,EAAE,IAAY;QACxC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAU,WAAW,GAAG,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACpF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW;IAEX,KAAK,CAAC,WAAW,CAAC,GAAW;QAC3B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAY,WAAW,GAAG,UAAU,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAW,EAAE,MAAqB;QACjD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAU,WAAW,GAAG,UAAU,EAAE,MAAM,CAAC,CAAC;QACjF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU;IAEV,KAAK,CAAC,UAAU,CAAC,OAAe;QAC9B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAW,WAAW,OAAO,UAAU,CAAC,CAAC;QAC7E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,OAAe;QACpC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC/C,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,IAAI,IAAI,CAAC;IAC/D,CAAC;IAED,aAAa;IAEb,KAAK,CAAC,YAAY,CAAC,GAAW;QAC5B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAkB,WAAW,GAAG,iBAAiB,CAAC,CAAC;QACvF,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,GAAW,EAAE,IAAY;QAC9C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAgB,WAAW,GAAG,iBAAiB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAChG,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,GAAW,EAAE,MAAc,EAAE,OAAgB;QACrE,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,mBAAmB,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,QAAQ;IAER,KAAK,CAAC,QAAQ,CAAC,GAAW;QACxB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAc,WAAW,GAAG,QAAQ,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAW,EAAE,MAAc,EAAE,YAAoB;QAChE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAY,WAAW,GAAG,QAAQ,EAAE;YACvE,YAAY;YACZ,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;IAEP,KAAK,CAAC,SAAS;QACb,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAU,SAAS,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -0,0 +1,143 @@
1
+ export interface UserRef {
2
+ self: string;
3
+ id: string;
4
+ display: string;
5
+ login?: string;
6
+ }
7
+ export interface Status {
8
+ self: string;
9
+ id: string;
10
+ key: string;
11
+ display: string;
12
+ }
13
+ export interface Priority {
14
+ self: string;
15
+ id: string;
16
+ key: string;
17
+ display: string;
18
+ }
19
+ export interface Queue {
20
+ self: string;
21
+ id: string;
22
+ key: string;
23
+ display: string;
24
+ }
25
+ export interface Sprint {
26
+ self: string;
27
+ id: number;
28
+ display: string;
29
+ board?: BoardRef;
30
+ status: 'draft' | 'in_progress' | 'closed';
31
+ startDate?: string;
32
+ endDate?: string;
33
+ }
34
+ export interface BoardRef {
35
+ self: string;
36
+ id: number;
37
+ display: string;
38
+ }
39
+ export interface Issue {
40
+ self: string;
41
+ id: string;
42
+ key: string;
43
+ summary: string;
44
+ description?: string;
45
+ type: {
46
+ self: string;
47
+ id: string;
48
+ key: string;
49
+ display: string;
50
+ };
51
+ status: Status;
52
+ priority: Priority;
53
+ queue: Queue;
54
+ assignee?: UserRef;
55
+ author: UserRef;
56
+ sprint?: Sprint[];
57
+ createdAt: string;
58
+ updatedAt: string;
59
+ deadline?: string;
60
+ storyPoints?: number;
61
+ commentWithoutExternalMessageCount?: number;
62
+ checklistDone?: number;
63
+ checklistTotal?: number;
64
+ tags?: string[];
65
+ }
66
+ export interface Transition {
67
+ self: string;
68
+ id: string;
69
+ display: string;
70
+ to: Status;
71
+ }
72
+ export interface Comment {
73
+ self: string;
74
+ id: number;
75
+ text: string;
76
+ createdAt: string;
77
+ updatedAt?: string;
78
+ createdBy: UserRef;
79
+ transport?: string;
80
+ }
81
+ export interface Worklog {
82
+ self: string;
83
+ id: number;
84
+ issue: {
85
+ self: string;
86
+ id: string;
87
+ key: string;
88
+ display: string;
89
+ };
90
+ duration: string;
91
+ start: string;
92
+ createdBy: UserRef;
93
+ comment?: string;
94
+ }
95
+ export interface ChecklistItem {
96
+ id: string;
97
+ text: string;
98
+ checked: boolean;
99
+ assignee?: UserRef;
100
+ deadline?: string;
101
+ }
102
+ export interface IssueLink {
103
+ self: string;
104
+ id: number;
105
+ type: {
106
+ self: string;
107
+ id: string;
108
+ inward: string;
109
+ outward: string;
110
+ };
111
+ direction: 'inward' | 'outward';
112
+ object: {
113
+ self: string;
114
+ id: string;
115
+ key: string;
116
+ display: string;
117
+ };
118
+ status: Status;
119
+ }
120
+ export interface CreateIssueParams {
121
+ queue: string;
122
+ summary: string;
123
+ description?: string;
124
+ type?: string;
125
+ priority?: string;
126
+ assignee?: string;
127
+ sprint?: number;
128
+ parent?: string;
129
+ tags?: string[];
130
+ }
131
+ export interface IssueFilter {
132
+ queue?: string;
133
+ assignee?: string;
134
+ status?: string;
135
+ sprint?: string;
136
+ query?: string;
137
+ }
138
+ export interface WorklogParams {
139
+ duration: string;
140
+ start?: string;
141
+ comment?: string;
142
+ }
143
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/client/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/client/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerChecklistCommand(program: Command): void;
3
+ //# sourceMappingURL=checklist.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checklist.d.ts","sourceRoot":"","sources":["../../../src/commands/checklist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+D/D"}