@wirecat/cli-base 0.78.0 → 0.80.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/CHANGELOG.md CHANGED
@@ -8,6 +8,23 @@ Versions before 0.8.0 are in the [git tags](https://github.com/WireCatLabs/cli-b
8
8
  Every entry says what changed as a caller sees it, why, and what to watch for — the rules are
9
9
  [`docs/dev/CONVENTIONS.md`](docs/dev/CONVENTIONS.md#the-changelog).
10
10
 
11
+ ## 0.80.0 — 06.11.2026
12
+
13
+ ### Added
14
+
15
+ - **`--write <id>` is a vocabulary flag** (role `target`): one write of a run, by the `operation_id` the run's answer
16
+ listed under `writes`, to undo or act on that write alone. mail's `messages restore --run <id> --write <id>` undoes
17
+ one write of a change run and leaves its others. It is not `--operation-id`, which repeats a write whose outcome was
18
+ unknown (WC-CMD-10).
19
+
20
+ ## 0.79.0 — 06.11.2026
21
+
22
+ ### Added
23
+
24
+ - **`deals`, `leads`, `pipelines`, `stages`, `products` and `users` in the resource vocabulary:** the words a CRM
25
+ tool needs, first for the Bitrix24 CLI (`b24`) and then Pipedrive, HubSpot and amoCRM. A CRM's contacts are
26
+ `people` and its companies are `organizations`: `contacts` already means a messenger's contact list.
27
+
11
28
  ## 0.78.0 — 05.11.2026
12
29
 
13
30
  ### Added
@@ -0,0 +1,3 @@
1
+ import type { VocabularyFlag } from "./vocabulary.js";
2
+ /** Who may see or reach the account, as a messenger's privacy settings take it. */
3
+ export declare const PRIVACY_FLAGS: VocabularyFlag[];
@@ -0,0 +1,60 @@
1
+ /** Who may see or reach the account, as a messenger's privacy settings take it. */
2
+ export const PRIVACY_FLAGS = [
3
+ {
4
+ name: "--about-text",
5
+ value: "<who>",
6
+ role: "value",
7
+ type: "choice",
8
+ meaning: "who sees the about text: everyone, contacts or nobody",
9
+ },
10
+ {
11
+ name: "--calls",
12
+ value: "<who>",
13
+ role: "value",
14
+ type: "choice",
15
+ meaning: "whose calls ring: everyone, contacts or nobody",
16
+ },
17
+ {
18
+ name: "--chat-invites",
19
+ value: "<who>",
20
+ role: "value",
21
+ type: "choice",
22
+ meaning: "who may add the account to groups and channels: everyone, contacts or nobody",
23
+ },
24
+ {
25
+ name: "--find-by-phone",
26
+ value: "<who>",
27
+ role: "value",
28
+ type: "choice",
29
+ meaning: "who finds the account by its number: everyone, contacts or nobody",
30
+ },
31
+ {
32
+ name: "--hide-online",
33
+ value: "<on|off>",
34
+ role: "value",
35
+ type: "choice",
36
+ meaning: "hide online status and last seen",
37
+ },
38
+ {
39
+ name: "--last-seen",
40
+ value: "<who>",
41
+ role: "value",
42
+ type: "choice",
43
+ meaning: "who sees when the account was last online: everyone, contacts or nobody",
44
+ },
45
+ {
46
+ name: "--phone-number",
47
+ value: "<who>",
48
+ role: "value",
49
+ type: "choice",
50
+ meaning: "who sees the number: everyone, contacts or nobody",
51
+ },
52
+ {
53
+ name: "--profile-photo",
54
+ value: "<who>",
55
+ role: "value",
56
+ type: "choice",
57
+ meaning: "who sees the profile photo: everyone, contacts or nobody",
58
+ },
59
+ { name: "--read-receipts", value: "<on|off>", role: "value", type: "choice", meaning: "send read receipts" },
60
+ ];
@@ -420,6 +420,13 @@ export const WHAT_FLAGS = [
420
420
  meaning: "look again from this day, for what arrived late",
421
421
  },
422
422
  { name: "--run", value: "<id>", role: "target", type: "id", meaning: "the run it is about" },
423
+ {
424
+ name: "--write",
425
+ value: "<id>",
426
+ role: "target",
427
+ type: "id",
428
+ meaning: "one write of a run, by the operation_id its answer listed: undo or act on that write alone",
429
+ },
423
430
  {
424
431
  name: "--target",
425
432
  value: "<ref>",
@@ -622,63 +629,6 @@ export const WHAT_FLAGS = [
622
629
  type: "path",
623
630
  meaning: "an Ogg Opus file sent as a voice message",
624
631
  },
625
- {
626
- name: "--about-text",
627
- value: "<who>",
628
- role: "value",
629
- type: "choice",
630
- meaning: "who sees the about text: everyone, contacts or nobody",
631
- },
632
- {
633
- name: "--calls",
634
- value: "<who>",
635
- role: "value",
636
- type: "choice",
637
- meaning: "whose calls ring: everyone, contacts or nobody",
638
- },
639
- {
640
- name: "--chat-invites",
641
- value: "<who>",
642
- role: "value",
643
- type: "choice",
644
- meaning: "who may add the account to groups and channels: everyone, contacts or nobody",
645
- },
646
- {
647
- name: "--find-by-phone",
648
- value: "<who>",
649
- role: "value",
650
- type: "choice",
651
- meaning: "who finds the account by its number: everyone, contacts or nobody",
652
- },
653
- {
654
- name: "--hide-online",
655
- value: "<on|off>",
656
- role: "value",
657
- type: "choice",
658
- meaning: "hide online status and last seen",
659
- },
660
- {
661
- name: "--last-seen",
662
- value: "<who>",
663
- role: "value",
664
- type: "choice",
665
- meaning: "who sees when the account was last online: everyone, contacts or nobody",
666
- },
667
- {
668
- name: "--phone-number",
669
- value: "<who>",
670
- role: "value",
671
- type: "choice",
672
- meaning: "who sees the number: everyone, contacts or nobody",
673
- },
674
- {
675
- name: "--profile-photo",
676
- value: "<who>",
677
- role: "value",
678
- type: "choice",
679
- meaning: "who sees the profile photo: everyone, contacts or nobody",
680
- },
681
- { name: "--read-receipts", value: "<on|off>", role: "value", type: "choice", meaning: "send read receipts" },
682
632
  {
683
633
  name: "--until",
684
634
  value: "<time>",
@@ -2,6 +2,7 @@ import * as v from "valibot";
2
2
  import { CALENDAR_FLAGS } from "./flags-calendar.js";
3
3
  import { HOW_FLAGS } from "./flags-how.js";
4
4
  import { MAIL_FLAGS } from "./flags-mail.js";
5
+ import { PRIVACY_FLAGS } from "./flags-privacy.js";
5
6
  import { WHAT_FLAGS } from "./flags-what.js";
6
7
  import { duplicates, parseRegistry, text, word } from "./registry.js";
7
8
  export const FLAG_TYPES = [
@@ -257,6 +258,12 @@ const collections = [
257
258
  ["invoices", "bills the owner sends or receives, with their amounts and due dates"],
258
259
  ["orders", "what a customer asked for and the owner owes or delivers"],
259
260
  ["payments", "money that moved in or out, each one matched to the invoices it settles"],
261
+ ["deals", "sales the owner works on, each at a stage of a pipeline, with an amount and an outcome"],
262
+ ["leads", "possible customers not yet qualified into a deal"],
263
+ ["pipelines", "ordered sets of stages a deal moves through"],
264
+ ["stages", "steps of a pipeline, each open, won or lost"],
265
+ ["products", "goods and services the owner sells, with their prices"],
266
+ ["users", "people who work in the owner's account at a service, such as a CRM's employees"],
260
267
  [
261
268
  "identities",
262
269
  "ways to reach a person or an organization: an account in one messenger or mailbox, an e-mail address, a phone",
@@ -387,5 +394,5 @@ export const VOCABULARY = defineVocabulary({
387
394
  ],
388
395
  views: views.map(([entry, meaning]) => ({ word: entry, meaning })),
389
396
  roots: roots.map(([entry, meaning]) => ({ word: entry, meaning })),
390
- flags: [...HOW_FLAGS, ...WHAT_FLAGS, ...CALENDAR_FLAGS, ...MAIL_FLAGS],
397
+ flags: [...HOW_FLAGS, ...WHAT_FLAGS, ...PRIVACY_FLAGS, ...CALENDAR_FLAGS, ...MAIL_FLAGS],
391
398
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wirecat/cli-base",
3
- "version": "0.78.0",
3
+ "version": "0.80.0",
4
4
  "description": "The parts every command line tool needs: output modes, terminal rendering, error model, exit codes, credentials, clocks",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Viacheslav Ptsarev",