@pachca/cli 2026.7.1 → 2026.7.2

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 (87) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +1 -1
  3. package/README.template.md +1 -1
  4. package/dist/base-command.js +2 -0
  5. package/dist/client.js +51 -17
  6. package/dist/commands/bots/create.js +4 -4
  7. package/dist/commands/bots/delete.js +1 -1
  8. package/dist/commands/bots/get.js +1 -1
  9. package/dist/commands/bots/list-events.js +2 -2
  10. package/dist/commands/bots/list.js +2 -2
  11. package/dist/commands/bots/recreate-token-self.js +2 -2
  12. package/dist/commands/bots/recreate-token.js +2 -2
  13. package/dist/commands/bots/remove-event.js +1 -1
  14. package/dist/commands/bots/update-webhook.js +2 -2
  15. package/dist/commands/bots/update.js +3 -3
  16. package/dist/commands/chats/archive.js +3 -3
  17. package/dist/commands/chats/create.js +3 -3
  18. package/dist/commands/chats/download-export.js +2 -2
  19. package/dist/commands/chats/get.js +1 -1
  20. package/dist/commands/chats/list.js +4 -4
  21. package/dist/commands/chats/request-export.js +2 -2
  22. package/dist/commands/chats/unarchive.js +2 -2
  23. package/dist/commands/chats/update.js +2 -2
  24. package/dist/commands/custom-properties/list.js +2 -2
  25. package/dist/commands/files/direct-url.js +12 -12
  26. package/dist/commands/files/uploads.js +2 -2
  27. package/dist/commands/group-tags/create.js +2 -2
  28. package/dist/commands/group-tags/get.js +1 -1
  29. package/dist/commands/group-tags/list-users.js +2 -2
  30. package/dist/commands/group-tags/list.js +2 -2
  31. package/dist/commands/group-tags/update.js +1 -1
  32. package/dist/commands/members/add-group-tags.js +1 -1
  33. package/dist/commands/members/add.js +4 -4
  34. package/dist/commands/members/leave.js +1 -1
  35. package/dist/commands/members/list.js +3 -2
  36. package/dist/commands/members/remove.js +1 -1
  37. package/dist/commands/members/update.js +2 -2
  38. package/dist/commands/messages/create.js +4 -4
  39. package/dist/commands/messages/delete.js +1 -1
  40. package/dist/commands/messages/get.js +4 -4
  41. package/dist/commands/messages/list.js +2 -2
  42. package/dist/commands/messages/pin.js +2 -2
  43. package/dist/commands/messages/unfurl.js +4 -4
  44. package/dist/commands/messages/unpin.js +1 -1
  45. package/dist/commands/messages/update.js +4 -4
  46. package/dist/commands/oauth/token-info.js +2 -2
  47. package/dist/commands/profile/delete-avatar.js +1 -1
  48. package/dist/commands/profile/delete-status.js +1 -1
  49. package/dist/commands/profile/get-status.js +1 -1
  50. package/dist/commands/profile/get.js +3 -3
  51. package/dist/commands/profile/update-avatar.js +2 -2
  52. package/dist/commands/profile/update-status.js +2 -2
  53. package/dist/commands/reactions/add.js +2 -2
  54. package/dist/commands/reactions/list.js +1 -1
  55. package/dist/commands/reactions/remove.js +1 -1
  56. package/dist/commands/read-member/list-readers.js +2 -2
  57. package/dist/commands/search/list-chats.js +3 -3
  58. package/dist/commands/search/list-messages.js +2 -2
  59. package/dist/commands/search/list-users.js +4 -4
  60. package/dist/commands/security/list.js +5 -5
  61. package/dist/commands/tasks/create.js +5 -5
  62. package/dist/commands/tasks/delete.js +1 -1
  63. package/dist/commands/tasks/get.js +2 -2
  64. package/dist/commands/tasks/list.js +2 -2
  65. package/dist/commands/tasks/update.js +4 -4
  66. package/dist/commands/threads/add.js +3 -3
  67. package/dist/commands/threads/create.js +1 -1
  68. package/dist/commands/threads/get.js +1 -1
  69. package/dist/commands/threads/list.js +3 -2
  70. package/dist/commands/users/create.js +4 -4
  71. package/dist/commands/users/delete.js +1 -1
  72. package/dist/commands/users/get-status.js +2 -2
  73. package/dist/commands/users/get.js +2 -2
  74. package/dist/commands/users/list.js +4 -4
  75. package/dist/commands/users/remove-avatar.js +1 -1
  76. package/dist/commands/users/remove-status.js +1 -1
  77. package/dist/commands/users/update-avatar.js +2 -2
  78. package/dist/commands/users/update-status.js +2 -2
  79. package/dist/commands/users/update.js +3 -3
  80. package/dist/commands/views/open.js +4 -4
  81. package/dist/data/changelog.json +51 -0
  82. package/dist/data/endpoints.json +1 -1
  83. package/dist/data/workflows.json +2 -2
  84. package/dist/output.js +10 -2
  85. package/dist/profiles.js +7 -3
  86. package/oclif.manifest.json +1 -1
  87. package/package.json +1 -1
@@ -4,8 +4,8 @@ import { BaseCommand } from '../../base-command.js';
4
4
  export default class TasksUpdate extends BaseCommand {
5
5
  static description = "Редактирование напоминания";
6
6
  static examples = [
7
- "Отметить задачу выполненной:\n $ pachca tasks update",
8
- "Обновить задачу (перенести срок, сменить ответственных):\n $ pachca tasks update"
7
+ "Отметить задачу выполненной — Обнови статус задачи:\n $ pachca tasks update",
8
+ "Обновить задачу (перенести срок, сменить ответственных) — Обнови нужные поля задачи:\n $ pachca tasks update"
9
9
  ];
10
10
  static scope = "tasks:update";
11
11
  static apiMethod = "PUT";
@@ -29,7 +29,7 @@ export default class TasksUpdate extends BaseCommand {
29
29
  description: "Срок выполнения напоминания (ISO-8601) в формате YYYY-MM-DDThh:mm:ss.sssTZD. Если указано время 23:59:59.000, то напоминание будет создано на весь день (без указания времени).",
30
30
  }),
31
31
  'priority': Flags.integer({
32
- description: "Приоритет: 1, 2 (важно) или 3 (очень важно).",
32
+ description: "Приоритет: 1, 2 (важно) или 3 (очень важно)",
33
33
  }),
34
34
  'performer-ids': Flags.string({
35
35
  description: "Массив идентификаторов пользователей, привязываемых к напоминанию как «ответственные»",
@@ -84,7 +84,7 @@ export default class TasksUpdate extends BaseCommand {
84
84
  path: `/tasks/${args.id}`,
85
85
  body,
86
86
  });
87
- const responseBody = data;
87
+ const responseBody = (data ?? {});
88
88
  const result = responseBody.data ?? responseBody;
89
89
  this.output(result);
90
90
  }
@@ -4,8 +4,8 @@ import { BaseCommand } from '../../base-command.js';
4
4
  export default class ThreadsAdd extends BaseCommand {
5
5
  static description = "Новый тред";
6
6
  static examples = [
7
- "Ответить в тред (комментарий к сообщению):\n $ pachca thread add",
8
- "Подписаться на тред сообщения:\n $ pachca thread add"
7
+ "Ответить в тред (комментарий к сообщению) — Получи или создай тред, возьми `thread.id` из ответа:\n $ pachca threads add",
8
+ "Подписаться на тред сообщения — Получи или создай тред, возьми `chat_id` из ответа:\n $ pachca threads add"
9
9
  ];
10
10
  static scope = "threads:create";
11
11
  static apiMethod = "POST";
@@ -27,7 +27,7 @@ export default class ThreadsAdd extends BaseCommand {
27
27
  method: 'POST',
28
28
  path: `/messages/${args.id}/thread`,
29
29
  });
30
- const responseBody = data;
30
+ const responseBody = (data ?? {});
31
31
  const result = responseBody.data ?? responseBody;
32
32
  this.output(result);
33
33
  }
@@ -16,7 +16,7 @@ export default class ThreadsCreate extends BaseCommand {
16
16
  method: 'POST',
17
17
  path: '/threads',
18
18
  });
19
- const responseBody = data;
19
+ const responseBody = (data ?? {});
20
20
  const result = responseBody.data ?? responseBody;
21
21
  this.output(result);
22
22
  }
@@ -23,7 +23,7 @@ export default class ThreadsGet extends BaseCommand {
23
23
  method: 'GET',
24
24
  path: `/threads/${args.id}`,
25
25
  });
26
- const responseBody = data;
26
+ const responseBody = (data ?? {});
27
27
  const result = responseBody.data ?? responseBody;
28
28
  this.output(result);
29
29
  }
@@ -4,7 +4,8 @@ import { BaseCommand } from '../../base-command.js';
4
4
  export default class ThreadsList extends BaseCommand {
5
5
  static description = "Список тредов";
6
6
  static examples = [
7
- "Получить список активных тредов за период:\n $ pachca threads list"
7
+ "Получить список активных тредов за период — Запроси список тредов с фильтром по времени последнего сообщения и нужным `--limit`:\n $ pachca threads list",
8
+ "Получить список активных тредов за период — Если в ответе `meta.paginate.next_page` — пройди по страницам через `--cursor`:\n $ pachca threads list"
8
9
  ];
9
10
  static scope = "threads:read";
10
11
  static apiMethod = "GET";
@@ -95,7 +96,7 @@ export default class ThreadsList extends BaseCommand {
95
96
  cursor: flags.cursor,
96
97
  },
97
98
  });
98
- const responseBody = data;
99
+ const responseBody = (data ?? {});
99
100
  const items = responseBody.data ?? responseBody;
100
101
  this.output(items);
101
102
  }
@@ -5,9 +5,9 @@ import * as clack from '@clack/prompts';
5
5
  export default class UsersCreate extends BaseCommand {
6
6
  static description = "Новый сотрудник";
7
7
  static examples = [
8
- "Массовое создание сотрудников с тегами:\n $ pachca users create",
9
- "Создать гостя в чат:\n $ pachca users create",
10
- "Онбординг нового сотрудника:\n $ pachca users create"
8
+ "Массовое создание сотрудников с тегами — Для каждого сотрудника: создай аккаунт с тегами:\n $ pachca users create",
9
+ "Создать гостя в чат — Создай гостя: роль `guest` и ровно один чат в `--chat-ids`:\n $ pachca users create",
10
+ "Онбординг нового сотрудника — Создай аккаунт:\n $ pachca users create"
11
11
  ];
12
12
  static scope = "users:create";
13
13
  static apiMethod = "POST";
@@ -142,7 +142,7 @@ export default class UsersCreate extends BaseCommand {
142
142
  path: '/users',
143
143
  body,
144
144
  });
145
- const responseBody = data;
145
+ const responseBody = (data ?? {});
146
146
  const result = responseBody.data ?? responseBody;
147
147
  this.output(result);
148
148
  }
@@ -5,7 +5,7 @@ import * as clack from '@clack/prompts';
5
5
  export default class UsersDelete extends BaseCommand {
6
6
  static description = "Удаление сотрудника";
7
7
  static examples = [
8
- "Offboarding сотрудника:\n $ pachca users delete"
8
+ "Offboarding сотрудника — Опционально: удалить аккаунт полностью:\n $ pachca users delete"
9
9
  ];
10
10
  static scope = "users:delete";
11
11
  static apiMethod = "DELETE";
@@ -4,7 +4,7 @@ import { BaseCommand } from '../../base-command.js';
4
4
  export default class UsersGetStatus extends BaseCommand {
5
5
  static description = "Статус сотрудника";
6
6
  static examples = [
7
- "Управление статусом сотрудника:\n $ pachca users get-status"
7
+ "Управление статусом сотрудника — Получить текущий статус:\n $ pachca users get-status"
8
8
  ];
9
9
  static scope = "user_status:read";
10
10
  static apiMethod = "GET";
@@ -26,7 +26,7 @@ export default class UsersGetStatus extends BaseCommand {
26
26
  method: 'GET',
27
27
  path: `/users/${args.user_id}/status`,
28
28
  });
29
- const responseBody = data;
29
+ const responseBody = (data ?? {});
30
30
  const result = responseBody.data ?? responseBody;
31
31
  this.output(result);
32
32
  }
@@ -4,7 +4,7 @@ import { BaseCommand } from '../../base-command.js';
4
4
  export default class UsersGet extends BaseCommand {
5
5
  static description = "Информация о сотруднике";
6
6
  static examples = [
7
- "Получить сотрудника по ID:\n $ pachca users get"
7
+ "Получить сотрудника по ID — Получи информацию о сотруднике:\n $ pachca users get"
8
8
  ];
9
9
  static scope = "users:read";
10
10
  static apiMethod = "GET";
@@ -26,7 +26,7 @@ export default class UsersGet extends BaseCommand {
26
26
  method: 'GET',
27
27
  path: `/users/${args.id}`,
28
28
  });
29
- const responseBody = data;
29
+ const responseBody = (data ?? {});
30
30
  const result = responseBody.data ?? responseBody;
31
31
  this.output(result);
32
32
  }
@@ -4,9 +4,9 @@ import { BaseCommand } from '../../base-command.js';
4
4
  export default class UsersList extends BaseCommand {
5
5
  static description = "Список сотрудников";
6
6
  static examples = [
7
- "Проверить, кто прочитал сообщение:\n $ pachca users list",
8
- "Разослать уведомление нескольким пользователям:\n $ pachca users list",
9
- "Найти сотрудника по имени или email:\n $ pachca users list"
7
+ "Проверить, кто прочитал сообщение — При необходимости сопоставь с именами сотрудников:\n $ pachca users list",
8
+ "Разослать уведомление нескольким пользователям — Определи список `user_id` получателей:\n $ pachca users list",
9
+ "Найти сотрудника по имени или email — Поиск по имени/email (частичное совпадение):\n $ pachca users list"
10
10
  ];
11
11
  static scope = "users:read";
12
12
  static apiMethod = "GET";
@@ -92,7 +92,7 @@ export default class UsersList extends BaseCommand {
92
92
  cursor: flags.cursor,
93
93
  },
94
94
  });
95
- const responseBody = data;
95
+ const responseBody = (data ?? {});
96
96
  const items = responseBody.data ?? responseBody;
97
97
  this.output(items);
98
98
  }
@@ -5,7 +5,7 @@ import * as clack from '@clack/prompts';
5
5
  export default class UsersRemoveAvatar extends BaseCommand {
6
6
  static description = "Удаление аватара сотрудника";
7
7
  static examples = [
8
- "Удалить аватар сотрудника:\n $ pachca users remove-avatar"
8
+ "Удалить аватар сотрудника — Удали аватар сотрудника:\n $ pachca users remove-avatar"
9
9
  ];
10
10
  static scope = "user_avatar:write";
11
11
  static apiMethod = "DELETE";
@@ -5,7 +5,7 @@ import * as clack from '@clack/prompts';
5
5
  export default class UsersRemoveStatus extends BaseCommand {
6
6
  static description = "Удаление статуса сотрудника";
7
7
  static examples = [
8
- "Управление статусом сотрудника:\n $ pachca users remove-status"
8
+ "Управление статусом сотрудника — Удалить статус:\n $ pachca users remove-status"
9
9
  ];
10
10
  static scope = "user_status:write";
11
11
  static apiMethod = "DELETE";
@@ -6,7 +6,7 @@ import * as path from 'node:path';
6
6
  export default class UsersUpdateAvatar extends BaseCommand {
7
7
  static description = "Загрузка аватара сотрудника";
8
8
  static examples = [
9
- "Загрузить аватар сотрудника:\n $ pachca users update-avatar"
9
+ "Загрузить аватар сотрудника — Загрузи аватар сотруднику:\n $ pachca users update-avatar"
10
10
  ];
11
11
  static scope = "user_avatar:write";
12
12
  static apiMethod = "PUT";
@@ -47,7 +47,7 @@ export default class UsersUpdateAvatar extends BaseCommand {
47
47
  path: `/users/${args.user_id}/avatar`,
48
48
  formData,
49
49
  });
50
- const responseBody = data;
50
+ const responseBody = (data ?? {});
51
51
  const result = responseBody.data ?? responseBody;
52
52
  this.output(result);
53
53
  }
@@ -5,7 +5,7 @@ import * as clack from '@clack/prompts';
5
5
  export default class UsersUpdateStatus extends BaseCommand {
6
6
  static description = "Новый статус сотрудника";
7
7
  static examples = [
8
- "Управление статусом сотрудника:\n $ pachca users update-status"
8
+ "Управление статусом сотрудника — Установить статус:\n $ pachca users update-status"
9
9
  ];
10
10
  static scope = "user_status:write";
11
11
  static apiMethod = "PUT";
@@ -98,7 +98,7 @@ export default class UsersUpdateStatus extends BaseCommand {
98
98
  path: `/users/${args.user_id}/status`,
99
99
  body,
100
100
  });
101
- const responseBody = data;
101
+ const responseBody = (data ?? {});
102
102
  const result = responseBody.data ?? responseBody;
103
103
  this.output(result);
104
104
  }
@@ -4,8 +4,8 @@ import { BaseCommand } from '../../base-command.js';
4
4
  export default class UsersUpdate extends BaseCommand {
5
5
  static description = "Редактирование сотрудника";
6
6
  static examples = [
7
- "Массовое создание сотрудников с тегами:\n $ pachca users update",
8
- "Offboarding сотрудника:\n $ pachca users update"
7
+ "Массовое создание сотрудников с тегами — Или обнови существующего:\n $ pachca users update",
8
+ "Offboarding сотрудника — Заблокировать доступ:\n $ pachca users update"
9
9
  ];
10
10
  static scope = "users:update";
11
11
  static apiMethod = "PUT";
@@ -106,7 +106,7 @@ export default class UsersUpdate extends BaseCommand {
106
106
  path: `/users/${args.id}`,
107
107
  body,
108
108
  });
109
- const responseBody = data;
109
+ const responseBody = (data ?? {});
110
110
  const result = responseBody.data ?? responseBody;
111
111
  this.output(result);
112
112
  }
@@ -5,9 +5,9 @@ import * as clack from '@clack/prompts';
5
5
  export default class ViewsOpen extends BaseCommand {
6
6
  static description = "Открытие представления";
7
7
  static examples = [
8
- "Показать интерактивную форму пользователю:\n $ pachca views open",
9
- "Опрос сотрудников через форму:\n $ pachca views open",
10
- "Форма заявки/запроса:\n $ pachca views open"
8
+ "Показать интерактивную форму пользователю — Немедленно открой форму:\n $ pachca views open",
9
+ "Опрос сотрудников через форму — Открой форму с полями опроса:\n $ pachca views open",
10
+ "Форма заявки/запроса — При нажатии открой форму с полями: тема, описание, приоритет:\n $ pachca views open"
11
11
  ];
12
12
  static scope = "views:write";
13
13
  static apiMethod = "POST";
@@ -123,7 +123,7 @@ export default class ViewsOpen extends BaseCommand {
123
123
  path: '/views/open',
124
124
  body,
125
125
  });
126
- const responseBody = data;
126
+ const responseBody = (data ?? {});
127
127
  const result = responseBody.data ?? responseBody;
128
128
  this.output(result);
129
129
  }
@@ -1,4 +1,55 @@
1
1
  [
2
+ {
3
+ "version": "2026.7.2",
4
+ "date": "27 июля 2026",
5
+ "changes": [
6
+ {
7
+ "type": "-",
8
+ "command": "files direct-url",
9
+ "description": "Файл теперь добавляется в форму последним — S3 игнорирует поля после файла, из-за чего загрузка отклонялась с 400"
10
+ },
11
+ {
12
+ "type": "-",
13
+ "command": "",
14
+ "description": "Явный `--profile` больше не перебивается переменной `PACHCA_TOKEN` — команда с указанным профилем не уйдёт в чужое пространство"
15
+ },
16
+ {
17
+ "type": "-",
18
+ "command": "",
19
+ "description": "Запись (`POST`/`DELETE`/`PATCH`) больше не повторяется автоматически при 503 — повтор мог создать дубль сообщения"
20
+ },
21
+ {
22
+ "type": "-",
23
+ "command": "",
24
+ "description": "`Retry-After` в формате даты больше не игнорируется, значение ограничено разумным пределом"
25
+ },
26
+ {
27
+ "type": "-",
28
+ "command": "chats download-export",
29
+ "description": "Имя файла из `Content-Disposition` больше не может увести запись за пределы указанной папки"
30
+ },
31
+ {
32
+ "type": "-",
33
+ "command": "",
34
+ "description": "Вывод `-o csv`: ячейки, начинающиеся с `=`, `+`, `-` или `@`, экранируются; объекты и массивы выводятся как JSON, а не `[object Object]`"
35
+ },
36
+ {
37
+ "type": "-",
38
+ "command": "",
39
+ "description": "`--timeout` меньше 1 отклоняется, а не приводит к мгновенной отмене запроса"
40
+ },
41
+ {
42
+ "type": "-",
43
+ "command": "",
44
+ "description": "Примеры в `--help` подписаны шагом сценария, а не общим заголовком (`reactions remove` больше не подписан «Добавить реакцию»)"
45
+ },
46
+ {
47
+ "type": "-",
48
+ "command": "files direct-url",
49
+ "description": "Команда больше не падает с TypeError при успешной загрузке: S3 отвечает 204 с пустым телом, а команда пыталась прочитать из него поле"
50
+ }
51
+ ]
52
+ },
2
53
  {
3
54
  "version": "2026.7.1",
4
55
  "date": "24 июля 2026",