@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.
- package/README.md +140 -0
- package/dist/bin/tracker.d.ts +3 -0
- package/dist/bin/tracker.d.ts.map +1 -0
- package/dist/bin/tracker.js +45 -0
- package/dist/bin/tracker.js.map +1 -0
- package/dist/src/client/pagination.d.ts +7 -0
- package/dist/src/client/pagination.d.ts.map +1 -0
- package/dist/src/client/pagination.js +31 -0
- package/dist/src/client/pagination.js.map +1 -0
- package/dist/src/client/tracker-client.d.ts +31 -0
- package/dist/src/client/tracker-client.d.ts.map +1 -0
- package/dist/src/client/tracker-client.js +148 -0
- package/dist/src/client/tracker-client.js.map +1 -0
- package/dist/src/client/types.d.ts +143 -0
- package/dist/src/client/types.d.ts.map +1 -0
- package/dist/src/client/types.js +2 -0
- package/dist/src/client/types.js.map +1 -0
- package/dist/src/commands/checklist.d.ts +3 -0
- package/dist/src/commands/checklist.d.ts.map +1 -0
- package/dist/src/commands/checklist.js +72 -0
- package/dist/src/commands/checklist.js.map +1 -0
- package/dist/src/commands/comment.d.ts +3 -0
- package/dist/src/commands/comment.d.ts.map +1 -0
- package/dist/src/commands/comment.js +52 -0
- package/dist/src/commands/comment.js.map +1 -0
- package/dist/src/commands/create.d.ts +3 -0
- package/dist/src/commands/create.d.ts.map +1 -0
- package/dist/src/commands/create.js +50 -0
- package/dist/src/commands/create.js.map +1 -0
- package/dist/src/commands/init.d.ts +3 -0
- package/dist/src/commands/init.d.ts.map +1 -0
- package/dist/src/commands/init.js +59 -0
- package/dist/src/commands/init.js.map +1 -0
- package/dist/src/commands/link.d.ts +3 -0
- package/dist/src/commands/link.d.ts.map +1 -0
- package/dist/src/commands/link.js +43 -0
- package/dist/src/commands/link.js.map +1 -0
- package/dist/src/commands/sprint.d.ts +3 -0
- package/dist/src/commands/sprint.d.ts.map +1 -0
- package/dist/src/commands/sprint.js +54 -0
- package/dist/src/commands/sprint.js.map +1 -0
- package/dist/src/commands/status.d.ts +3 -0
- package/dist/src/commands/status.d.ts.map +1 -0
- package/dist/src/commands/status.js +40 -0
- package/dist/src/commands/status.js.map +1 -0
- package/dist/src/commands/tasks.d.ts +4 -0
- package/dist/src/commands/tasks.d.ts.map +1 -0
- package/dist/src/commands/tasks.js +63 -0
- package/dist/src/commands/tasks.js.map +1 -0
- package/dist/src/commands/time.d.ts +3 -0
- package/dist/src/commands/time.d.ts.map +1 -0
- package/dist/src/commands/time.js +149 -0
- package/dist/src/commands/time.js.map +1 -0
- package/dist/src/config/auth.d.ts +2 -0
- package/dist/src/config/auth.d.ts.map +1 -0
- package/dist/src/config/auth.js +9 -0
- package/dist/src/config/auth.js.map +1 -0
- package/dist/src/config/config.d.ts +10 -0
- package/dist/src/config/config.d.ts.map +1 -0
- package/dist/src/config/config.js +79 -0
- package/dist/src/config/config.js.map +1 -0
- package/dist/src/config/config.schema.d.ts +67 -0
- package/dist/src/config/config.schema.d.ts.map +1 -0
- package/dist/src/config/config.schema.js +22 -0
- package/dist/src/config/config.schema.js.map +1 -0
- package/dist/src/formatters/json.d.ts +3 -0
- package/dist/src/formatters/json.d.ts.map +1 -0
- package/dist/src/formatters/json.js +7 -0
- package/dist/src/formatters/json.js.map +1 -0
- package/dist/src/formatters/table.d.ts +9 -0
- package/dist/src/formatters/table.d.ts.map +1 -0
- package/dist/src/formatters/table.js +150 -0
- package/dist/src/formatters/table.js.map +1 -0
- package/dist/src/index.d.ts +5 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +3 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/utils/error.d.ts +8 -0
- package/dist/src/utils/error.d.ts.map +1 -0
- package/dist/src/utils/error.js +52 -0
- package/dist/src/utils/error.js.map +1 -0
- package/dist/src/utils/key-resolver.d.ts +2 -0
- package/dist/src/utils/key-resolver.d.ts.map +1 -0
- package/dist/src/utils/key-resolver.js +10 -0
- package/dist/src/utils/key-resolver.js.map +1 -0
- 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 @@
|
|
|
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":"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"}
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/client/types.ts"],"names":[],"mappings":""}
|
|
@@ -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"}
|