@wirecat/cli-base 0.77.1 → 0.79.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,34 @@ 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.79.0 — 06.11.2026
12
+
13
+ ### Added
14
+
15
+ - **`deals`, `leads`, `pipelines`, `stages`, `products` and `users` in the resource vocabulary:** the words a CRM
16
+ tool needs, first for the Bitrix24 CLI (`b24`) and then Pipedrive, HubSpot and amoCRM. A CRM's contacts are
17
+ `people` and its companies are `organizations`: `contacts` already means a messenger's contact list.
18
+
19
+ ## 0.78.0 — 05.11.2026
20
+
21
+ ### Added
22
+
23
+ - **`records`, `invoices`, `orders` and `payments` in the resource vocabulary, and `allocate` in the verbs:** memo's
24
+ finance commands (`invoices`, `orders`, `payments`, `records`, `payments allocate`) were listed in its lint baseline
25
+ because the word list lacked them. `unallocate` is not added: taking an allocation back is `payments unlink`.
26
+
27
+ ### Fixed
28
+
29
+ - **`re2js` is pinned to 2.8.7 (Dependabot alert 14, high):** versions 2.2.0 to 2.8.6 match lookbehind in quadratic time,
30
+ a denial of service. Only the dev tool `markdownlint` pulls it in, so no published package changes.
31
+ - **WC-SECR-25's known gaps no longer list drive and gcal:** both take `session start --client-id` and read the
32
+ per-account `google_client_id` key. The key name, shared with mail, is listed as a gap instead: cli-core's
33
+ settings take no dotted key, so it is not `google.client_id`. mail's missing `--client-id` is listed too.
34
+ - **WC-SECR-25 says how WireCat's shipped Google secret is kept: obscured in cli-core's `constants.json`**, revealed by
35
+ the schema, so the plain value is in no source file, commit or gitleaks allowlist. It said the allowlist named it by
36
+ value. Its known gaps now match cli-core 0.566.0 and the CLIs on it: gcal and mail sign in with WireCat's Google
37
+ app, `doctor` reports `source`, and the app is saved with the sign-in.
38
+
11
39
  ## 0.77.1 — 05.11.2026
12
40
 
13
41
  ### Added
@@ -149,6 +149,7 @@ const verbs = [
149
149
  // Only when someone asks, never from a matching name: WC-ACCT-11 in docs/standards/accounts.md.
150
150
  ["link", "record that two identities are one person"],
151
151
  ["unlink", "undo a link"],
152
+ ["allocate", "match a payment to the invoice or order it settles, in whole or in part"],
152
153
  ["lookup", "ask the messenger who is behind a phone number"],
153
154
  [
154
155
  "inspect",
@@ -249,6 +250,19 @@ const collections = [
249
250
  "derived records attached to a selected entity, with explicit coverage of included and omitted facets",
250
251
  ],
251
252
  ["organizations", "companies, teams, families or communities"],
253
+ [
254
+ "records",
255
+ "documents of the owner's business, such as an invoice or a receipt, kept with the things they are about",
256
+ ],
257
+ ["invoices", "bills the owner sends or receives, with their amounts and due dates"],
258
+ ["orders", "what a customer asked for and the owner owes or delivers"],
259
+ ["payments", "money that moved in or out, each one matched to the invoices it settles"],
260
+ ["deals", "sales the owner works on, each at a stage of a pipeline, with an amount and an outcome"],
261
+ ["leads", "possible customers not yet qualified into a deal"],
262
+ ["pipelines", "ordered sets of stages a deal moves through"],
263
+ ["stages", "steps of a pipeline, each open, won or lost"],
264
+ ["products", "goods and services the owner sells, with their prices"],
265
+ ["users", "people who work in the owner's account at a service, such as a CRM's employees"],
252
266
  [
253
267
  "identities",
254
268
  "ways to reach a person or an organization: an account in one messenger or mailbox, an e-mail address, a phone",
@@ -24,10 +24,11 @@ catalogue and parity manifest stay in cli-core
24
24
 
25
25
  ### Who follows these rules today
26
26
 
27
- WC-CMD-30: cli-core's shared settings declare every shared scalar setting and give `config migrate`, so tg, max, wa,
28
- mail and gcal follow once they take the cli-core release after 0.561.0. Their own settings (max's `serve` and
29
- `transcribe_model`, for example) are not declared yet. drive's first-run file holds them all, but drive's own
30
- `config` has no `migrate` and its writes do not fill the file. zm declares nothing yet.
27
+ WC-CMD-30: every CLI follows on its main branch, as of 2026-11-05, and for the owner from its next release. tg, max,
28
+ wa, mail and gcal take cli-core 0.563.0's shared settings and `config migrate`. max declares `serve` and
29
+ `transcribe_model`, drive `max_text_chars` beside its own `config migrate`, and zm its source and run-log settings in
30
+ its own file. mail's `session start` fills the file it writes. drive's `picture_search` stays undeclared: it is set
31
+ per profile, and only `defaults` is filled.
31
32
 
32
33
  ## Paths and words
33
34
 
@@ -391,25 +391,29 @@ cli-core's layer for Google and Microsoft, a tool's own layer for a provider onl
391
391
  "config" | "constants" | null }`. A null client comes with a one-line reason.
392
392
  - **Desktop.** A sign-in from wirecat-desktop offers WireCat's app, with a "Use my own app" choice that writes the same
393
393
  override as step 2 or 3.
394
- - **A shipped secret** is allowed only where the provider documents the client as public, and the tool's gitleaks
395
- allowlist names it by value ([WC-SECR-17](#wc-secr-17--a-gitleaks-rule-covers-each-secret-shape-a-cli-handles)).
396
- Google's token endpoint refuses a Desktop app client without its secret (tested 2026-11-04), although
394
+ - **A shipped secret** is allowed only where the provider documents the client as public. It is stored obscured in the
395
+ layer's `constants.json` and revealed by the schema (cli-core's `src/constants/obscure.ts`, as rclone does), so
396
+ the plain value is in no source file, commit or gitleaks allowlist, and secret scanners do not report it. That is
397
+ not protection: anyone with the package can reveal it. Google's token endpoint refuses a Desktop app client without
398
+ its secret (tested 2026-11-04), although
397
399
  [Google's guide](https://developers.google.com/identity/protocols/oauth2/native-app) calls desktop apps public
398
- clients that cannot keep secrets. So a Google app ships its id and secret; a Microsoft public client ships its id
399
- only.
400
+ clients that cannot keep secrets. So a Google app ships its id and secret, both obscured; a Microsoft public client
401
+ ships its id only.
400
402
  - **A provider with no WireCat app yet** says so in `doctor` (a null client and its reason) and in its docs, and still
401
403
  keeps the order, the stored app and the report above.
402
404
 
403
405
  - **Why:** an owner should sign in without creating an app first, and still be able to use their own; a token
404
406
  refreshed with a different app than the one that issued it fails.
405
- - **Enforced by:** `cli-core: src/oauth/client-file.test.ts`.
407
+ - **Enforced by:** `cli-core: src/oauth/client-file.test.ts` · `cli-core: src/constants/index.test.ts` ·
408
+ `cli-core: src/oauth/storage.test.ts`.
406
409
  - **Example:** `gcal personal session start` uses WireCat's Google app and `doctor` reports
407
410
  `{ client: "wirecat", source: "constants" }`; with `GCAL_GOOGLE_CLIENT_ID` and `GCAL_GOOGLE_CLIENT_SECRET` set it
408
411
  reports `{ client: "own", source: "env" }`.
409
- - **Exceptions:** known gaps, as of 2026-11-04: mail has no WireCat default for Google; zoom has no WireCat app until
410
- Zoom Marketplace approves one; no tool reads the per-account `google.client_id` key yet; mail's Microsoft key is
411
- named `microsoft_client_id`; `doctor` reports no `source` yet. gcal's default came from a file CI wrote from a
412
- secret; cli-core's `constants.json` replaces it from its next release.
412
+ - **Exceptions:** known gaps, as of 2026-11-05: zoom has no WireCat app until Zoom Marketplace approves one; the
413
+ per-account key is named `google_client_id` in drive, gcal and mail, and `microsoft_client_id` in mail, because
414
+ cli-core's settings take no dotted key outside `permissions.*` and `models.*`; mail takes no `--client-id`; and
415
+ Google has not reviewed WireCat's Google app for Gmail's restricted scope, so a Gmail sign-in with it may be
416
+ refused.
413
417
  - **Applies to:** every CLI that signs in with OAuth, and wirecat-desktop. **Since:** cli-base 0.76.1.
414
418
  **Rulings:** owner, 2026-11-04.
415
419
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wirecat/cli-base",
3
- "version": "0.77.1",
3
+ "version": "0.79.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",