@polza-ai/yandex-tracker-cli 0.4.1 → 0.4.3

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 CHANGED
@@ -1,72 +1,82 @@
1
- # yandex-tracker-cli
1
+ <h1 align="center">tracker</h1>
2
2
 
3
- CLI для [Yandex Tracker](https://tracker.yandex.ru/) — для людей и AI-агентов.
3
+ <p align="center">
4
+ CLI для Яндекс Трекера — для людей и AI-агентов
5
+ </p>
4
6
 
5
- Простой инструмент для работы с задачами из терминала. Поддерживает двойной вывод: цветные таблицы для людей, `--json` для AI-агентов (Claude Code, Cursor и др.).
7
+ <p align="center">
8
+ <a href="https://www.npmjs.com/package/@polza-ai/yandex-tracker-cli"><img src="https://img.shields.io/npm/v/@polza-ai/yandex-tracker-cli?color=blue" alt="npm version"></a>
9
+ <a href="https://github.com/polza-ai/yandex-tracker-cli/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="license"></a>
10
+ <img src="https://img.shields.io/badge/node-%3E%3D20-brightgreen" alt="node version">
11
+ <img src="https://img.shields.io/badge/TypeScript-strict-blue?logo=typescript&logoColor=white" alt="TypeScript">
12
+ </p>
6
13
 
7
- ## Установка
14
+ <p align="center">
15
+ <img src="./demo.gif" alt="tracker demo" width="720">
16
+ </p>
8
17
 
9
- ```bash
10
- npm install -g @polza-ai/yandex-tracker-cli
11
- ```
18
+ ---
12
19
 
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
- ```
20
+ - **Для людей** — цветные таблицы, спиннеры, интерактивная настройка
21
+ - **Для AI-агентов** — `--json` на каждой команде, готовый [SKILL.md](./SKILL.md) с воркфлоу
22
+ - **Полный цикл** — 13 команд: от создания задачи до аттачей и учёта времени
22
23
 
23
24
  ## Быстрый старт
24
25
 
25
26
  ```bash
26
- # Настройка подключения
27
- tracker init
27
+ npm i -g @polza-ai/yandex-tracker-cli
28
+
29
+ tracker init # интерактивная настройка
30
+ tracker tasks --assignee me # мои задачи
31
+ tracker task PROJ-1 # детали задачи
32
+ tracker create -s "Исправить баг" -t bug -p critical
33
+ ```
28
34
 
29
- # Мои задачи
30
- tracker tasks --assignee me
35
+ ## Команды
31
36
 
32
- # Детали задачи
33
- tracker task BACKEND-123
37
+ | Команда | Описание | Пример |
38
+ |---------|----------|--------|
39
+ | `init` | Настроить подключение | `tracker init` |
40
+ | `tasks` | Поиск и список задач | `tracker tasks -a me -s open` |
41
+ | `task` | Детали задачи | `tracker task PROJ-123` |
42
+ | `create` | Создать задачу | `tracker create -s "Название" -t bug` |
43
+ | `status` | Изменить статус | `tracker status PROJ-123 inProgress` |
44
+ | `comment` | Комментарии | `tracker comment PROJ-123 "Готово"` |
45
+ | `time` | Учёт времени | `tracker time PROJ-123 log 2h30m` |
46
+ | `sprint` | Текущий спринт | `tracker sprint --tasks` |
47
+ | `checklist` | Чеклист задачи | `tracker checklist PROJ-123 add "Тесты"` |
48
+ | `link` | Связи между задачами | `tracker link PROJ-123 PROJ-456 --type blocks` |
49
+ | `update` | Обновить поля задачи | `tracker update PROJ-123 -p critical` |
50
+ | `transitions` | Доступные переходы | `tracker transitions PROJ-123` |
51
+ | `attach` | Аттачи | `tracker attach PROJ-123 report.pdf` |
34
52
 
35
- # Создать задачу
36
- tracker create -s "Исправить баг в авторизации" -t bug -p critical
53
+ > Все команды поддерживают `--json` для машинного вывода.
37
54
 
38
- # Сменить статус
39
- tracker status BACKEND-123 inProgress
55
+ ## Интеграция с AI-агентами
40
56
 
41
- # Комментарий
42
- tracker comment BACKEND-123 "Взял в работу, MR будет через час"
57
+ `tracker` спроектирован как инструмент для AI-агентов: данные идут в stdout (JSON/таблица), логи и спиннеры — в stderr. Флаг `--json` возвращает стабильный конверт:
43
58
 
44
- # Залогировать время
45
- tracker time BACKEND-123 log 2h30m
59
+ ```json
60
+ { "ok": true, "data": { "key": "PROJ-123", "summary": "..." } }
61
+ { "ok": false, "error": { "code": "NOT_FOUND", "message": "Задача не найдена" } }
46
62
  ```
47
63
 
48
- ## Команды
64
+ ### Подключение
65
+
66
+ **Claude Code** — положите [SKILL.md](./SKILL.md) в корень проекта. `CLAUDE.md` подхватится автоматически.
67
+
68
+ **Cursor / Windsurf** — скопируйте SKILL.md:
69
+ ```bash
70
+ cp SKILL.md .cursor/rules/tracker-workflow.md
71
+ ```
49
72
 
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` для машинного вывода.
73
+ **Любой агент** используйте `--json` и парсите `{ ok, data }` / `{ ok, error }`.
64
74
 
65
75
  ## Конфигурация
66
76
 
67
- ### Глобальная (`~/.tracker-cli/config.json`)
77
+ ### Глобальный конфиг
68
78
 
69
- Создаётся через `tracker init`:
79
+ `~/.tracker-cli/config.json` — создаётся через `tracker init`:
70
80
 
71
81
  ```json
72
82
  {
@@ -78,13 +88,14 @@ tracker time BACKEND-123 log 2h30m
78
88
  }
79
89
  ```
80
90
 
81
- ### Проектная (`.tracker.json` в корне репо)
91
+ ### Проектный конфиг
92
+
93
+ `.tracker.json` — переопределяет настройки для конкретного проекта:
82
94
 
83
95
  ```json
84
96
  {
85
97
  "queue": "BACKEND",
86
98
  "boardId": 42,
87
- "branchPrefix": "feature",
88
99
  "statusMap": {
89
100
  "open": "open",
90
101
  "inProgress": "inProgress",
@@ -95,56 +106,198 @@ tracker time BACKEND-123 log 2h30m
95
106
  }
96
107
  ```
97
108
 
98
- `statusMap` позволяет маппить каноничные имена статусов на реальные ключи вашего workflow.
109
+ `statusMap` маппит каноничные имена статусов на реальные ключи вашего workflow.
99
110
 
100
- ## Для AI-агентов
111
+ Поддерживаются организации **Яндекс 360** (OAuth) и **Yandex Cloud** (IAM-токен, флаг `--iam` при `init`).
101
112
 
102
- В комплекте идёт `SKILL.md` — инструкция для AI-агента, описывающая полный рабочий цикл:
103
- задача статус → ветка → код → коммит → MR → комментарий → review.
113
+ <details>
114
+ <summary><strong>Полный справочник команд</strong></summary>
104
115
 
105
- ### Claude Code
116
+ ### init
106
117
 
107
- `CLAUDE.md` в корне проекта подхватывается автоматически.
118
+ ```
119
+ tracker init [--iam] [--project]
120
+ ```
108
121
 
109
- ### Cursor
122
+ | Флаг | Описание |
123
+ |------|----------|
124
+ | `--iam` | Использовать IAM-токен (Yandex Cloud) |
125
+ | `--project` | Создать `.tracker.json` в текущей директории |
110
126
 
111
- Скопируйте `SKILL.md` в `.cursor/rules/tracker-workflow.md`.
127
+ ### tasks
112
128
 
113
- ## JSON-вывод
129
+ ```
130
+ tracker tasks [опции]
131
+ ```
114
132
 
115
- Все команды с `--json` возвращают структурированный ответ:
133
+ | Флаг | Описание |
134
+ |------|----------|
135
+ | `-q, --queue <queue>` | Очередь |
136
+ | `-a, --assignee <login>` | Исполнитель (`me` — текущий пользователь) |
137
+ | `-s, --status <status>` | Статус |
138
+ | `--sprint <sprint>` | Спринт |
139
+ | `--query <tql>` | Произвольный TQL-запрос |
140
+ | `--all` | Включить закрытые задачи |
141
+ | `-l, --limit <n>` | Максимум задач (по умолчанию: 50) |
142
+ | `--sort <field>` | Сортировка: `updated`, `created`, `priority` |
143
+ | `--json` | JSON-вывод |
116
144
 
117
- ```json
118
- {
119
- "ok": true,
120
- "data": { ... }
121
- }
145
+ ### task
146
+
147
+ ```
148
+ tracker task <key> [--json]
122
149
  ```
123
150
 
124
- При ошибке:
151
+ Выводит полную информацию о задаче: название, описание, статус, исполнитель, приоритет, тип, теги, связи, чеклист, комментарии, залогированное время.
125
152
 
126
- ```json
127
- {
128
- "ok": false,
129
- "error": { "code": "NOT_FOUND", "message": "Не найдено." }
130
- }
153
+ ### create
154
+
155
+ ```
156
+ tracker create -s "Название" [опции]
157
+ ```
158
+
159
+ | Флаг | Описание |
160
+ |------|----------|
161
+ | `-s, --summary <text>` | Название задачи **(обязательно)** |
162
+ | `-d, --description <text>` | Описание |
163
+ | `-q, --queue <queue>` | Очередь |
164
+ | `-t, --type <type>` | Тип: `task`, `bug`, `story`... (по умолчанию: `task`) |
165
+ | `-p, --priority <priority>` | `blocker`, `critical`, `major`, `normal`, `minor` |
166
+ | `-a, --assignee <login>` | Исполнитель |
167
+ | `--parent <key>` | Родительская задача (для подзадач) |
168
+ | `--tag <tags...>` | Теги |
169
+ | `--json` | JSON-вывод |
170
+
171
+ ### status
172
+
173
+ ```
174
+ tracker status <key> <status> [-c "комментарий"] [--json]
175
+ ```
176
+
177
+ Статусы: `open`, `inProgress`, `review`, `testing`, `closed` (маппятся через `statusMap` в конфиге).
178
+
179
+ ### comment
180
+
181
+ ```
182
+ tracker comment <key> [text] [опции]
131
183
  ```
132
184
 
185
+ | Флаг | Описание |
186
+ |------|----------|
187
+ | `-f, --file <path>` | Текст комментария из файла |
188
+ | `-l, --list` | Показать все комментарии |
189
+ | `--json` | JSON-вывод |
190
+
191
+ ### time
192
+
193
+ ```
194
+ tracker time <key> <action> [duration] [опции]
195
+ ```
196
+
197
+ **Действия:** `start`, `stop`, `log <duration>`, `show`
198
+
199
+ **Формат длительности:** `15m`, `1h`, `2h30m`, `1d` (1 день = 8 часов)
200
+
201
+ | Флаг | Описание |
202
+ |------|----------|
203
+ | `-c, --comment <text>` | Комментарий к записи |
204
+ | `--json` | JSON-вывод |
205
+
206
+ ### sprint
207
+
208
+ ```
209
+ tracker sprint [-b <id>] [--tasks] [--json]
210
+ ```
211
+
212
+ | Флаг | Описание |
213
+ |------|----------|
214
+ | `-b, --board <id>` | ID доски (или `boardId` из `.tracker.json`) |
215
+ | `--tasks` | Показать задачи спринта |
216
+ | `--json` | JSON-вывод |
217
+
218
+ ### checklist
219
+
220
+ ```
221
+ tracker checklist <key> [action] [text] [--json]
222
+ ```
223
+
224
+ **Действия:** без аргументов — показать, `add <text>` — добавить, `check <номер>` — отметить.
225
+
226
+ ### link
227
+
228
+ ```
229
+ tracker link <key> [target] [-t <type>] [--json]
230
+ ```
231
+
232
+ **Типы связей:** `relates` (по умолчанию), `blocks`, `depends`, `duplicates`, `parent`, `subtask`.
233
+
234
+ Без `target` — показывает существующие связи.
235
+
236
+ ### update
237
+
238
+ ```
239
+ tracker update <key> [опции]
240
+ ```
241
+
242
+ | Флаг | Описание |
243
+ |------|----------|
244
+ | `-s, --summary <text>` | Новое название |
245
+ | `-d, --description <text>` | Новое описание |
246
+ | `-a, --assignee <login>` | Новый исполнитель |
247
+ | `-p, --priority <priority>` | Новый приоритет |
248
+ | `--tag <tags...>` | Теги |
249
+ | `--json` | JSON-вывод |
250
+
251
+ ### transitions
252
+
253
+ ```
254
+ tracker transitions <key> [--json]
255
+ ```
256
+
257
+ Показывает текущий статус и все доступные переходы.
258
+
259
+ ### attach
260
+
261
+ ```
262
+ tracker attach <key> [file] [опции]
263
+ ```
264
+
265
+ | Флаг | Описание |
266
+ |------|----------|
267
+ | `-l, --list` | Список аттачей |
268
+ | `--download <id>` | Скачать аттач по ID |
269
+ | `-o, --output <path>` | Путь для сохранения |
270
+ | `--json` | JSON-вывод |
271
+
272
+ </details>
273
+
274
+ <details>
275
+ <summary><strong>Разработка</strong></summary>
276
+
277
+ ```bash
278
+ git clone https://github.com/polza-ai/yandex-tracker-cli.git
279
+ cd yandex-tracker-cli
280
+ npm install
281
+
282
+ npm run dev -- tasks --assignee me # запуск через tsx
283
+ npm run build # компиляция в dist/
284
+ npm run typecheck # проверка типов
285
+ npm test # тесты (Vitest)
286
+ ```
287
+
288
+ </details>
289
+
133
290
  ## Требования
134
291
 
135
- - Node.js 20+
136
- - OAuth-токен Yandex Tracker (получить на [oauth.yandex.ru](https://oauth.yandex.ru/))
292
+ - **Node.js** 20+
293
+ - **Токен** Яндекс Трекера OAuth или [IAM](https://yandex.cloud/docs/iam/concepts/authorization/iam-token) (для Yandex Cloud)
137
294
 
138
295
  ## Лицензия
139
296
 
140
- MIT
297
+ [MIT](./LICENSE)
141
298
 
142
299
  ---
143
300
 
144
301
  <p align="center">
145
- Сделано в <a href="https://polza.ai">polza.ai</a> — №1 LLM агрегатор в России.
146
- <br>
147
- Генерируйте текст, код, изображения, видео и аудио через один API —
148
- <br>
149
- экономьте время и деньги с оплатой по токенам.
302
+ Сделано в <a href="https://polza.ai">polza.ai</a> — №1 LLM агрегатор в России
150
303
  </p>
@@ -1,4 +1,5 @@
1
1
  import axios from 'axios';
2
+ import { createReadStream } from 'node:fs';
2
3
  import { paginate, collectAll } from './pagination.js';
3
4
  export class TrackerClient {
4
5
  http;
@@ -152,11 +153,10 @@ export class TrackerClient {
152
153
  return data;
153
154
  }
154
155
  async uploadAttachment(key, filePath, filename) {
155
- const { readFileSync } = await import('node:fs');
156
- const blob = new Blob([readFileSync(filePath)]);
156
+ const FormData = (await import('form-data')).default;
157
157
  const form = new FormData();
158
- form.append('file', blob, filename);
159
- const { data } = await this.http.post(`/issues/${key}/attachments`, form);
158
+ form.append('file', createReadStream(filePath), filename);
159
+ const { data } = await this.http.post(`/issues/${key}/attachments`, form, { headers: { ...form.getHeaders() } });
160
160
  return data;
161
161
  }
162
162
  async downloadAttachment(key, attachmentId) {
@@ -1 +1 @@
1
- {"version":3,"file":"tracker-client.js","sourceRoot":"","sources":["../../../src/client/tracker-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tracker-client.js","sourceRoot":"","sources":["../../../src/client/tracker-client.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"comment.d.ts","sourceRoot":"","sources":["../../../src/commands/comment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4C7D"}
1
+ {"version":3,"file":"comment.d.ts","sourceRoot":"","sources":["../../../src/commands/comment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiE7D"}
@@ -1,4 +1,5 @@
1
1
  import { readFile } from 'node:fs/promises';
2
+ import { basename } from 'node:path';
2
3
  import { loadConfig } from '../config/config.js';
3
4
  import { TrackerClient } from '../client/tracker-client.js';
4
5
  import { resolveKey } from '../utils/key-resolver.js';
@@ -6,11 +7,17 @@ import { handleApiError } from '../utils/error.js';
6
7
  import { jsonOutput } from '../formatters/json.js';
7
8
  import { formatComments } from '../formatters/table.js';
8
9
  import chalk from 'chalk';
10
+ const imageExts = new Set(['.png', '.jpg', '.jpeg', '.gif', '.webp', '.svg', '.bmp']);
11
+ function isImage(filename) {
12
+ const ext = filename.toLowerCase().slice(filename.lastIndexOf('.'));
13
+ return imageExts.has(ext);
14
+ }
9
15
  export function registerCommentCommand(program) {
10
16
  program
11
17
  .command('comment <key> [text]')
12
18
  .description('Добавить или показать комментарии')
13
19
  .option('-f, --file <path>', 'Текст комментария из файла')
20
+ .option('-a, --attach <files...>', 'Прикрепить файлы к комментарию')
14
21
  .option('-l, --list', 'Показать все комментарии')
15
22
  .option('--json', 'Вывод в JSON')
16
23
  .action(async (key, text, opts) => {
@@ -18,7 +25,7 @@ export function registerCommentCommand(program) {
18
25
  const config = await loadConfig();
19
26
  const client = new TrackerClient(config);
20
27
  const resolvedKey = resolveKey(key, config.queue);
21
- if (opts.list || (!text && !opts.file)) {
28
+ if (opts.list || (!text && !opts.file && !opts.attach)) {
22
29
  const comments = await client.getComments(resolvedKey);
23
30
  if (opts.json) {
24
31
  process.stdout.write(jsonOutput(comments) + '\n');
@@ -28,20 +35,39 @@ export function registerCommentCommand(program) {
28
35
  }
29
36
  return;
30
37
  }
31
- let commentText = text;
38
+ let commentText = text ?? '';
32
39
  if (opts.file) {
33
40
  commentText = await readFile(opts.file, 'utf-8');
34
41
  }
35
- if (!commentText) {
36
- console.error('Укажите текст комментария или используйте --file.');
42
+ // Upload attachments and append links to comment text
43
+ const attachments = [];
44
+ if (opts.attach) {
45
+ for (const filePath of opts.attach) {
46
+ const filename = basename(filePath);
47
+ const attachment = await client.uploadAttachment(resolvedKey, filePath, filename);
48
+ attachments.push(attachment);
49
+ const url = attachment.content;
50
+ if (isImage(filename)) {
51
+ commentText += `\n![${filename}](${url})`;
52
+ }
53
+ else {
54
+ commentText += `\n[${filename}](${url})`;
55
+ }
56
+ }
57
+ }
58
+ if (!commentText.trim()) {
59
+ console.error('Укажите текст комментария, --file или --attach.');
37
60
  process.exit(1);
38
61
  }
39
62
  const comment = await client.addComment(resolvedKey, commentText);
40
63
  if (opts.json) {
41
- process.stdout.write(jsonOutput(comment) + '\n');
64
+ process.stdout.write(jsonOutput({ comment, attachments }) + '\n');
42
65
  }
43
66
  else {
44
67
  console.log(`${chalk.green('✓')} Комментарий добавлен к ${resolvedKey}`);
68
+ if (attachments.length > 0) {
69
+ console.log(` ${attachments.length} файл(ов) прикреплено`);
70
+ }
45
71
  }
46
72
  }
47
73
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"comment.js","sourceRoot":"","sources":["../../../src/commands/comment.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,sBAAsB,CAAC;SAC/B,WAAW,CAAC,mCAAmC,CAAC;SAChD,MAAM,CAAC,mBAAmB,EAAE,4BAA4B,CAAC;SACzD,MAAM,CAAC,YAAY,EAAE,0BAA0B,CAAC;SAChD,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC;SAChC,MAAM,CAAC,KAAK,EAAE,GAAW,EAAE,IAAwB,EAAE,IAAI,EAAE,EAAE;QAC5D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;YACzC,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAElD,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;gBACvD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;gBACpD,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACxC,CAAC;gBACD,OAAO;YACT,CAAC;YAED,IAAI,WAAW,GAAG,IAAI,CAAC;YACvB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,WAAW,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACnD,CAAC;YAED,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;gBACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAElE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;YACnD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,2BAA2B,WAAW,EAAE,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,cAAc,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"comment.js","sourceRoot":"","sources":["../../../src/commands/comment.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAEtF,SAAS,OAAO,CAAC,QAAgB;IAC/B,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IACpE,OAAO,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,sBAAsB,CAAC;SAC/B,WAAW,CAAC,mCAAmC,CAAC;SAChD,MAAM,CAAC,mBAAmB,EAAE,4BAA4B,CAAC;SACzD,MAAM,CAAC,yBAAyB,EAAE,gCAAgC,CAAC;SACnE,MAAM,CAAC,YAAY,EAAE,0BAA0B,CAAC;SAChD,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC;SAChC,MAAM,CAAC,KAAK,EAAE,GAAW,EAAE,IAAwB,EAAE,IAAI,EAAE,EAAE;QAC5D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;YACzC,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAElD,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;gBACvD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;gBACpD,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACxC,CAAC;gBACD,OAAO;YACT,CAAC;YAED,IAAI,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,WAAW,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACnD,CAAC;YAED,sDAAsD;YACtD,MAAM,WAAW,GAAc,EAAE,CAAC;YAClC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,MAAkB,EAAE,CAAC;oBAC/C,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBACpC,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;oBAClF,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBAE7B,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC;oBAC/B,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACtB,WAAW,IAAI,OAAO,QAAQ,KAAK,GAAG,GAAG,CAAC;oBAC5C,CAAC;yBAAM,CAAC;wBACN,WAAW,IAAI,MAAM,QAAQ,KAAK,GAAG,GAAG,CAAC;oBAC3C,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;gBACxB,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;gBACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAElE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YACpE,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,2BAA2B,WAAW,EAAE,CAAC,CAAC;gBACzE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,WAAW,CAAC,MAAM,uBAAuB,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,cAAc,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@polza-ai/yandex-tracker-cli",
3
- "version": "0.4.1",
3
+ "version": "0.4.3",
4
4
  "description": "CLI tool for Yandex Tracker — for humans and AI agents",
5
5
  "license": "MIT",
6
6
  "repository": {