@wirecat/zoom-cli 0.7.1 → 0.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.
package/README.md CHANGED
@@ -39,9 +39,10 @@ zm meetings evidence meeting:1/42/57/118 --json # the exact passage
39
39
 
40
40
  ## Quick start
41
41
 
42
- You need Node 22.16+ (22.x) or 24+, a system keyring and **your own Zoom app** — Zoom lets a program
43
- read your meetings only through an app you register. [Creating it][docs/zoom-app.md]
44
- takes a few minutes and needs no client secret.
42
+ You need Node 22.16+ (22.x) or 24+, a system keyring and **a configured user-managed Zoom app**. Reuse one you already created or one your team
43
+ has made available to your user; otherwise [create your own][docs/zoom-app.md]. Use its Public
44
+ Client ID, not its regular Client ID or secret. The [installation guide][docs/installation.md]
45
+ walks through app settings, browser approval and callback completion.
45
46
 
46
47
  ```sh
47
48
  npm install -g @wirecat/zoom-cli
@@ -52,9 +53,9 @@ zm pull --lookback-days 7
52
53
  zm meetings list
53
54
  ```
54
55
 
55
- Turn on **Allow hosts to retain transcripts** in Zoom's settings first: Zoom returns transcripts only
56
- for meetings you hosted, and only when they were kept. For meetings you only attended, download the
57
- transcripts from Zoom and run `zm import <folder>`. Full guide:
56
+ Check Zoom's transcript generation and retention settings first: the API reads available hosted
57
+ meeting text, and permission does not create a transcript. For an attended meeting, obtain a VTT
58
+ file from the host or download one if allowed, then run `zm import <folder>`. Full guide:
58
59
  [installation][docs/installation.md].
59
60
 
60
61
  More: [installation][docs/installation.md] · [your Zoom app][docs/zoom-app.md] ·
@@ -396,7 +397,7 @@ More: [development setup][docs/dev/development.md] · [test matrix][docs/dev/tes
396
397
  [docs/troubleshooting.md]: https://github.com/WireCatLabs/zoom-cli/blob/main/docs/troubleshooting.md
397
398
  [docs/usage.md]: https://github.com/WireCatLabs/zoom-cli/blob/main/docs/usage.md
398
399
  [docs/zoom-app.md]: https://github.com/WireCatLabs/zoom-cli/blob/main/docs/zoom-app.md
399
- [gh/cli-meetings/blob/main/docs/dev/roadmap.md]: https://github.com/WireCatLabs/cli-meetings/blob/main/docs/dev/ROADMAP.md
400
+ [gh/cli-meetings/blob/main/docs/dev/roadmap.md]: https://github.com/WireCatLabs/cli-messaging/blob/main/docs/dev/MEETINGS.md#providers-next
400
401
  [license]: https://github.com/WireCatLabs/zoom-cli/blob/main/LICENSE
401
402
  [wirecat/en/docs/agents]: https://wirecat.dev/en/docs/agents
402
403
  [wirecat/en/docs/mcp]: https://wirecat.dev/en/docs/mcp
@@ -1,4 +1,4 @@
1
- import { type SkillEnvironment } from "@wirecat/cli-core/skill";
1
+ import { type SkillEnvironment } from "@wirecat/cli-base/skill";
2
2
  import type { Command } from "commander";
3
3
  export declare const addZoomSkillCommands: (program: Command, environment: SkillEnvironment, skill?: import("url").URL) => void;
4
4
  //# sourceMappingURL=agent-skill.d.ts.map
@@ -1,5 +1,5 @@
1
- import { annotate } from "@wirecat/cli-core/commands";
2
- import { skillCommand } from "@wirecat/cli-core/skill";
1
+ import { annotate } from "@wirecat/cli-base/commands";
2
+ import { skillCommand } from "@wirecat/cli-base/skill";
3
3
  import { VERSION } from "./version.js";
4
4
  export const addZoomSkillCommands = (program, environment, skill = new URL("../skills/zoom-cli/SKILL.md", import.meta.url)) => {
5
5
  const command = skillCommand({ command: "zm", appName: "zoom-cli", version: VERSION }, skill, environment);
package/dist/api.js CHANGED
@@ -1,4 +1,4 @@
1
- import { statusToCode } from "@wirecat/cli-core/http";
1
+ import { statusToCode } from "@wirecat/cli-base/http";
2
2
  import { parseVtt, } from "@wirecat/cli-messaging/meetings";
3
3
  import { number, object, string, ZoomError } from "./errors.js";
4
4
  import { ZoomRemote } from "./remote-http.js";
@@ -1,4 +1,4 @@
1
- import { annotate } from "@wirecat/cli-core/commands";
1
+ import { annotate } from "@wirecat/cli-base/commands";
2
2
  import { listed, recordingWindows } from "@wirecat/cli-messaging/meetings";
3
3
  import { ZoomError } from "./errors.js";
4
4
  import { bytes } from "./execution.js";
@@ -1,5 +1,5 @@
1
1
  import { createHash } from "node:crypto";
2
- import { CliError } from "@wirecat/cli-core";
2
+ import { CliError } from "@wirecat/cli-base";
3
3
  import { readArchiveTranscripts } from "./archive-transcripts.js";
4
4
  import { checkCancelled, ZoomError } from "./errors.js";
5
5
  const plans = new WeakMap();
package/dist/bin/zm.js CHANGED
@@ -3,7 +3,7 @@ import { spawn } from "node:child_process";
3
3
  import { join } from "node:path";
4
4
  import { createInterface } from "node:readline/promises";
5
5
  import { fileURLToPath } from "node:url";
6
- import { CliError, systemKeyring } from "@wirecat/cli-core";
6
+ import { CliError, systemKeyring } from "@wirecat/cli-base";
7
7
  import { profileAccountKey, readConfig } from "../config.js";
8
8
  import { ZoomError } from "../errors.js";
9
9
  import { loginService, zmPaths } from "../folders.js";
package/dist/commands.js CHANGED
@@ -1,6 +1,6 @@
1
- import { projectFields } from "@wirecat/cli-core";
2
- import { annotate, describeOptions, describeProgram, flatten, metaOf, } from "@wirecat/cli-core/commands";
3
- import { formatSuggestions, suggest } from "@wirecat/cli-core/completion";
1
+ import { projectFields } from "@wirecat/cli-base";
2
+ import { annotate, describeOptions, describeProgram, flatten, metaOf, } from "@wirecat/cli-base/commands";
3
+ import { formatSuggestions, suggest } from "@wirecat/cli-base/completion";
4
4
  import { ZoomError } from "./errors.js";
5
5
  export const addStandardCommands = (program, deps) => {
6
6
  annotate(program
package/dist/config.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { readFileSync } from "node:fs";
2
- import { saveConfigFile } from "@wirecat/cli-core";
2
+ import { saveConfigFile } from "@wirecat/cli-base";
3
3
  import { object, ZoomError } from "./errors.js";
4
4
  const profilePattern = /^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/;
5
5
  export const profileAccountKey = (profile) => `zm-profile:${profile}`;
package/dist/errors.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { CliError, type ErrorCode } from "@wirecat/cli-core";
1
+ import { CliError, type ErrorCode } from "@wirecat/cli-base";
2
2
  export declare class ZoomError extends CliError {
3
3
  constructor(code: ErrorCode, message: string);
4
4
  }
package/dist/errors.js CHANGED
@@ -1,4 +1,4 @@
1
- import { CliError } from "@wirecat/cli-core";
1
+ import { CliError } from "@wirecat/cli-base";
2
2
  export class ZoomError extends CliError {
3
3
  constructor(code, message) {
4
4
  super(code, message);
@@ -1,4 +1,4 @@
1
- import { type Deadline, type OutputBuffer, type SleepLike } from "@wirecat/cli-core";
1
+ import { type Deadline, type OutputBuffer, type SleepLike } from "@wirecat/cli-base";
2
2
  import type { Command } from "commander";
3
3
  export declare const duration: (text: string) => number;
4
4
  export declare const bytes: (text: string) => number;
package/dist/execution.js CHANGED
@@ -1,4 +1,4 @@
1
- import { createDeadline, createOutputBuffer } from "@wirecat/cli-core";
1
+ import { createDeadline, createOutputBuffer } from "@wirecat/cli-base";
2
2
  import { ZoomError } from "./errors.js";
3
3
  export const duration = (text) => {
4
4
  const match = /^(\d+(?:\.\d+)?)(ms|s|m|h)?$/.exec(text);
package/dist/folders.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { type KeyringStore, type MigrateLegacyPathsOptions, type Paths } from "@wirecat/cli-core";
1
+ import { type KeyringStore, type MigrateLegacyPathsOptions, type Paths } from "@wirecat/cli-base";
2
2
  /** The login lives in the keyring under the config folder's path, so it has to follow a moved folder. */
3
3
  export declare const loginService: (configDir: string) => string;
4
4
  /**
package/dist/folders.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { join } from "node:path";
2
- import { legacyMacPaths, migrateLegacyMacPaths, resolvePaths, } from "@wirecat/cli-core";
2
+ import { legacyMacPaths, migrateLegacyMacPaths, resolvePaths, } from "@wirecat/cli-base";
3
3
  import { readConfig } from "./config.js";
4
4
  /** The login lives in the keyring under the config folder's path, so it has to follow a moved folder. */
5
5
  export const loginService = (configDir) => `zoom-cli:${configDir}`;
@@ -1,4 +1,4 @@
1
- import { annotate } from "@wirecat/cli-core/commands";
1
+ import { annotate } from "@wirecat/cli-base/commands";
2
2
  import { ZoomError } from "./errors.js";
3
3
  import { bytes } from "./execution.js";
4
4
  import { validateUnifiedSearch } from "./unified-search.js";
@@ -1,4 +1,4 @@
1
- import { annotate } from "@wirecat/cli-core/commands";
1
+ import { annotate } from "@wirecat/cli-base/commands";
2
2
  import { speechModel } from "@wirecat/cli-messaging/speech";
3
3
  import { ZoomError } from "./errors.js";
4
4
  import { bytes, duration } from "./execution.js";
@@ -2,7 +2,7 @@ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
2
2
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
3
  import { CallToolRequestSchema, ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";
4
4
  import { AjvJsonSchemaValidator } from "@modelcontextprotocol/sdk/validation/ajv";
5
- import { CliError } from "@wirecat/cli-core";
5
+ import { CliError } from "@wirecat/cli-base";
6
6
  import { callMeetingTool, meetingTools } from "@wirecat/cli-messaging/meetings/mcp";
7
7
  import { ZoomError } from "./errors.js";
8
8
  import { validateEvidenceOptions, validatePersonContext, validateTaskKind, validateTaskProposal, } from "./meeting-context.js";
@@ -1,4 +1,4 @@
1
- import { annotate } from "@wirecat/cli-core/commands";
1
+ import { annotate } from "@wirecat/cli-base/commands";
2
2
  import { ZoomError } from "./errors.js";
3
3
  import { bytes } from "./execution.js";
4
4
  import { validateEvidenceOptions, validatePersonContext, validateTaskKind, validateTaskProposal, } from "./meeting-context.js";
@@ -1,4 +1,4 @@
1
- import { annotate } from "@wirecat/cli-core/commands";
1
+ import { annotate } from "@wirecat/cli-base/commands";
2
2
  import { validateMeetingContextChange } from "@wirecat/cli-messaging/meetings";
3
3
  import { ZoomError } from "./errors.js";
4
4
  import { bytes } from "./execution.js";
@@ -1,4 +1,4 @@
1
- import { annotate } from "@wirecat/cli-core/commands";
1
+ import { annotate } from "@wirecat/cli-base/commands";
2
2
  import { ZoomError } from "./errors.js";
3
3
  import { bytes } from "./execution.js";
4
4
  export const validateMeetingHitSearch = (query, options = {}) => {
@@ -1,4 +1,4 @@
1
- import { annotate } from "@wirecat/cli-core/commands";
1
+ import { annotate } from "@wirecat/cli-base/commands";
2
2
  import { ZoomError } from "./errors.js";
3
3
  import { bytes } from "./execution.js";
4
4
  const bounded = (value, maximum) => value === undefined || (Number.isSafeInteger(value) && value > 0 && value <= maximum);
@@ -1,4 +1,4 @@
1
- import { CliError } from "@wirecat/cli-core";
1
+ import { CliError } from "@wirecat/cli-base";
2
2
  import { openOrdinaryFile as sharedOpen, syncDirectory as sharedSync } from "@wirecat/cli-messaging/files";
3
3
  import { ZoomError } from "./errors.js";
4
4
  const withZoomErrors = async (operation) => {
@@ -1,6 +1,6 @@
1
1
  import { randomUUID } from "node:crypto";
2
2
  import { link, open, unlink } from "node:fs/promises";
3
- import { CliError } from "@wirecat/cli-core";
3
+ import { CliError } from "@wirecat/cli-base";
4
4
  import { checkCancelled, ZoomError } from "./errors.js";
5
5
  export const writeExportFile = async (path, content, options = {}) => {
6
6
  checkCancelled(options.signal);
package/dist/program.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { type SleepLike } from "@wirecat/cli-core";
1
+ import { type SleepLike } from "@wirecat/cli-base";
2
2
  import { type MeetingSource, type MeetingStore, type MeetingTranscriptReceiptStore, type MeetingTranscriptStore } from "@wirecat/cli-messaging/meetings";
3
3
  import { Command } from "commander";
4
4
  import { type ArchiveService, type ArchiveTranscriptService, type RecordingsService, type RemoteMeetingsService } from "./archive-commands.js";
package/dist/program.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { homedir } from "node:os";
2
2
  import { dirname, join } from "node:path";
3
- import { CliError, createDeadline, createRenderer, exitCodeFor, fieldsOf, GENERIC_FAILURE, projectFields, realSleep, } from "@wirecat/cli-core";
3
+ import { CliError, createDeadline, createRenderer, exitCodeFor, fieldsOf, GENERIC_FAILURE, projectFields, realSleep, } from "@wirecat/cli-base";
4
4
  import { importFiles, listed, MeetingError, pull, } from "@wirecat/cli-messaging/meetings";
5
5
  import { addMeetingCommands } from "@wirecat/cli-messaging/meetings/cli";
6
6
  import { Command, CommanderError } from "commander";
@@ -2,7 +2,7 @@ import { createHash, randomUUID } from "node:crypto";
2
2
  import { link, lstat, mkdir, open, readdir, realpath, rename, rmdir, unlink } from "node:fs/promises";
3
3
  import { hostname } from "node:os";
4
4
  import { join } from "node:path";
5
- import { retryableStatus, statusToCode } from "@wirecat/cli-core/http";
5
+ import { retryableStatus, statusToCode } from "@wirecat/cli-base/http";
6
6
  import { RecordingTransferError, transferRecording, } from "@wirecat/cli-messaging/meetings";
7
7
  import { checkCancelled, string, ZoomError } from "./errors.js";
8
8
  import { openOrdinaryFile, syncDirectory } from "./ordinary-file.js";
@@ -1,4 +1,4 @@
1
- import { annotate } from "@wirecat/cli-core/commands";
1
+ import { annotate } from "@wirecat/cli-base/commands";
2
2
  import { listed } from "@wirecat/cli-messaging/meetings";
3
3
  import { ZoomError } from "./errors.js";
4
4
  import { bytes } from "./execution.js";
@@ -1,5 +1,5 @@
1
1
  import { setTimeout } from "node:timers/promises";
2
- import { providerWaitMs, retryableStatus, statusToCode } from "@wirecat/cli-core/http";
2
+ import { providerWaitMs, retryableStatus, statusToCode } from "@wirecat/cli-base/http";
3
3
  import { checkCancelled, object, ZoomError } from "./errors.js";
4
4
  export const operationSignal = (signal) => signal ?? AbortSignal.timeout(3600000);
5
5
  export class ZoomRemote {
@@ -1,4 +1,4 @@
1
- import { CliError } from "@wirecat/cli-core";
1
+ import { CliError } from "@wirecat/cli-base";
2
2
  import { dispatchMeetingMutation, validateMeetingContextChange, } from "@wirecat/cli-messaging/meetings";
3
3
  import { profileAccountKey } from "./config.js";
4
4
  import { ZoomError } from "./errors.js";
package/dist/streaming.js CHANGED
@@ -1,4 +1,4 @@
1
- import { createOutputBuffer } from "@wirecat/cli-core";
1
+ import { createOutputBuffer } from "@wirecat/cli-base";
2
2
  import { checkCancelled, ZoomError } from "./errors.js";
3
3
  /** Await kernel-facing stdout backpressure before advancing another ingestion/download cycle. */
4
4
  export const writeStream = (stream, text, signal) => {
package/dist/tokens.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { KeyringStore } from "@wirecat/cli-core";
1
+ import type { KeyringStore } from "@wirecat/cli-base";
2
2
  export interface Tokens {
3
3
  accessToken: string;
4
4
  refreshToken: string;
@@ -1,4 +1,4 @@
1
- import { annotate } from "@wirecat/cli-core/commands";
1
+ import { annotate } from "@wirecat/cli-base/commands";
2
2
  import { watchMeetingIngestion } from "@wirecat/cli-messaging/meetings";
3
3
  import { Option } from "commander";
4
4
  import { ZoomError } from "./errors.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wirecat/zoom-cli",
3
- "version": "0.7.1",
3
+ "version": "0.7.2",
4
4
  "description": "Zoom cloud recording archives, persistent transcripts and meeting tools",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -28,7 +28,7 @@
28
28
  }
29
29
  },
30
30
  "scripts": {
31
- "build": "tsc --build",
31
+ "build": "tsc --build --force",
32
32
  "typecheck": "tsc --build --force --emitDeclarationOnly && tsc -p tsconfig.test.json && tsc -p tsconfig.scripts.json",
33
33
  "lint": "biome check .",
34
34
  "lint:fix": "biome check --write .",
@@ -36,7 +36,7 @@
36
36
  "test:coverage": "vitest run --coverage",
37
37
  "smoke:bun": "bun run scripts/smoke.ts",
38
38
  "prepublishOnly": "pnpm build",
39
- "docs:check": "node node_modules/@wirecat/cli-core/dist/dev/bin.js docs-check --rules scripts/docs-rules.ts && cspell --no-progress --no-summary README.md && node node_modules/rumdl/bin/rumdl check --config config/wirecat/rumdl.toml README.md CHANGELOG.md CLAUDE.md docs/*.md docs/dev/*.md",
39
+ "docs:check": "node node_modules/@wirecat/cli-base/dist/dev/bin.js docs-check --rules scripts/docs-rules.ts && cspell --no-progress --no-summary README.md && node node_modules/rumdl/bin/rumdl check --config config/wirecat/rumdl.toml README.md CHANGELOG.md CLAUDE.md docs/*.md docs/dev/*.md",
40
40
  "standards:check": "node config/wirecat/check.mjs",
41
41
  "docs:lint": "markdownlint-cli2",
42
42
  "docs:spell": "cspell lint --config cspell.json --no-progress README.md",
@@ -46,14 +46,14 @@
46
46
  "generate": "pnpm build && node scripts/commands.ts",
47
47
  "generate:check": "pnpm build && node scripts/commands.ts --check",
48
48
  "test:matrix": "pnpm test --maxWorkers 2 && pnpm build && pnpm test:matrix:check",
49
- "test:matrix:check": "node node_modules/@wirecat/cli-core/dist/dev/bin.js test-matrix --program scripts/command-program.ts --untested scripts/test-matrix-untested.ts --name zm --check",
49
+ "test:matrix:check": "node node_modules/@wirecat/cli-base/dist/dev/bin.js test-matrix --program scripts/command-program.ts --untested scripts/test-matrix-untested.ts --name zm --check",
50
50
  "contracts:upgrade": "pnpm --dir contracts/previous install --frozen-lockfile --ignore-scripts && cli-contract contracts/upgrade.json",
51
51
  "security:no-leak": "cli-testing security no-leak . contracts/no-leak.json"
52
52
  },
53
53
  "dependencies": {
54
54
  "@modelcontextprotocol/sdk": "1.32.1",
55
- "@wirecat/cli-core": "0.20.0",
56
- "@wirecat/cli-messaging": "0.248.0",
55
+ "@wirecat/cli-base": "0.21.0",
56
+ "@wirecat/cli-messaging": "0.253.0",
57
57
  "commander": "15.0.0"
58
58
  },
59
59
  "devDependencies": {
@@ -63,7 +63,7 @@
63
63
  "@cspell/dict-ru_ru": "2.3.3",
64
64
  "@types/node": "^22.20.5",
65
65
  "@vitest/coverage-v8": "^5.0.3",
66
- "@wirecat/cli-testing": "0.3.0",
66
+ "@wirecat/cli-testing": "0.4.0",
67
67
  "cspell": "10.3.6",
68
68
  "lefthook": "2.1.16",
69
69
  "markdownlint-cli2": "0.23.3",