@wirecat/zoom-cli 0.24.0 → 0.26.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.
Files changed (97) hide show
  1. package/README.md +10 -3
  2. package/dist/agent-skill.js +2 -2
  3. package/dist/agent-skill.js.map +1 -1
  4. package/dist/archive-commands.d.ts.map +1 -1
  5. package/dist/archive-commands.js +24 -33
  6. package/dist/archive-commands.js.map +1 -1
  7. package/dist/commands.d.ts.map +1 -1
  8. package/dist/commands.js +8 -16
  9. package/dist/commands.js.map +1 -1
  10. package/dist/execution.d.ts +2 -0
  11. package/dist/execution.d.ts.map +1 -1
  12. package/dist/execution.js +10 -11
  13. package/dist/execution.js.map +1 -1
  14. package/dist/index.d.ts +1 -0
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +1 -0
  17. package/dist/index.js.map +1 -1
  18. package/dist/ingestion-search-commands.d.ts.map +1 -1
  19. package/dist/ingestion-search-commands.js +2 -2
  20. package/dist/ingestion-search-commands.js.map +1 -1
  21. package/dist/local-transcription-commands.d.ts.map +1 -1
  22. package/dist/local-transcription-commands.js +2 -3
  23. package/dist/local-transcription-commands.js.map +1 -1
  24. package/dist/mcp-server.d.ts +2 -20
  25. package/dist/mcp-server.d.ts.map +1 -1
  26. package/dist/mcp-server.js +18 -1
  27. package/dist/mcp-server.js.map +1 -1
  28. package/dist/meeting-commands.d.ts +5 -0
  29. package/dist/meeting-commands.d.ts.map +1 -0
  30. package/dist/meeting-commands.js +24 -0
  31. package/dist/meeting-commands.js.map +1 -0
  32. package/dist/meeting-inventory-mcp.d.ts +181 -0
  33. package/dist/meeting-inventory-mcp.d.ts.map +1 -0
  34. package/dist/meeting-inventory-mcp.js +12 -0
  35. package/dist/meeting-inventory-mcp.js.map +1 -0
  36. package/dist/meeting-inventory.d.ts +26 -0
  37. package/dist/meeting-inventory.d.ts.map +1 -0
  38. package/dist/meeting-inventory.js +41 -0
  39. package/dist/meeting-inventory.js.map +1 -0
  40. package/dist/meeting-mcp-command.d.ts +5 -0
  41. package/dist/meeting-mcp-command.d.ts.map +1 -1
  42. package/dist/meeting-mcp-command.js +10 -0
  43. package/dist/meeting-mcp-command.js.map +1 -1
  44. package/dist/meeting-mcp-options.d.ts +26 -0
  45. package/dist/meeting-mcp-options.d.ts.map +1 -0
  46. package/dist/meeting-mcp-options.js +2 -0
  47. package/dist/meeting-mcp-options.js.map +1 -0
  48. package/dist/meeting-project-candidates-mcp.d.ts +217 -0
  49. package/dist/meeting-project-candidates-mcp.d.ts.map +1 -0
  50. package/dist/meeting-project-candidates-mcp.js +16 -0
  51. package/dist/meeting-project-candidates-mcp.js.map +1 -0
  52. package/dist/meeting-project-candidates.d.ts +5 -0
  53. package/dist/meeting-project-candidates.d.ts.map +1 -0
  54. package/dist/meeting-project-candidates.js +20 -0
  55. package/dist/meeting-project-candidates.js.map +1 -0
  56. package/dist/meeting-project-evidence-commands.d.ts.map +1 -1
  57. package/dist/meeting-project-evidence-commands.js +16 -9
  58. package/dist/meeting-project-evidence-commands.js.map +1 -1
  59. package/dist/meeting-search-commands.d.ts.map +1 -1
  60. package/dist/meeting-search-commands.js +4 -3
  61. package/dist/meeting-search-commands.js.map +1 -1
  62. package/dist/meeting-semantic-commands.d.ts.map +1 -1
  63. package/dist/meeting-semantic-commands.js +2 -2
  64. package/dist/meeting-semantic-commands.js.map +1 -1
  65. package/dist/occurrence-schedule.d.ts +1 -0
  66. package/dist/occurrence-schedule.d.ts.map +1 -1
  67. package/dist/occurrence-schedule.js +3 -3
  68. package/dist/occurrence-schedule.js.map +1 -1
  69. package/dist/program.d.ts.map +1 -1
  70. package/dist/program.js +17 -3
  71. package/dist/program.js.map +1 -1
  72. package/dist/recording-schedule-commands.d.ts.map +1 -1
  73. package/dist/recording-schedule-commands.js +10 -11
  74. package/dist/recording-schedule-commands.js.map +1 -1
  75. package/dist/series-inventory.d.ts +8 -0
  76. package/dist/series-inventory.d.ts.map +1 -0
  77. package/dist/series-inventory.js +61 -0
  78. package/dist/series-inventory.js.map +1 -0
  79. package/dist/setup-commands.d.ts.map +1 -1
  80. package/dist/setup-commands.js +4 -6
  81. package/dist/setup-commands.js.map +1 -1
  82. package/dist/store-commands.d.ts.map +1 -1
  83. package/dist/store-commands.js +7 -1
  84. package/dist/store-commands.js.map +1 -1
  85. package/dist/store-connection.d.ts +2 -0
  86. package/dist/store-connection.d.ts.map +1 -1
  87. package/dist/store-connection.js +8 -0
  88. package/dist/store-connection.js.map +1 -1
  89. package/dist/watch-commands.d.ts.map +1 -1
  90. package/dist/watch-commands.js +2 -2
  91. package/dist/watch-commands.js.map +1 -1
  92. package/package.json +3 -3
  93. package/skills/zoom-cli/SKILL.md +39 -1
  94. package/dist/command-effects.d.ts +0 -5
  95. package/dist/command-effects.d.ts.map +0 -1
  96. package/dist/command-effects.js +0 -36
  97. package/dist/command-effects.js.map +0 -1
@@ -2,7 +2,7 @@
2
2
  name: zoom-cli
3
3
  description: Archive Zoom cloud recordings, read stored meeting transcripts and summaries, or manage a Zoom meeting through zm. Use for Zoom CLI workflows, not joining calls or operating the desktop video client.
4
4
  metadata:
5
- version: "0.24.0"
5
+ version: "0.26.0"
6
6
  ---
7
7
 
8
8
  # Zoom CLI
@@ -68,11 +68,37 @@ be explicit. Never infer that a linked participant spoke a particular cue.
68
68
  `meetings projects evidence <project>` searches one existing canonical project's name/key/aliases,
69
69
  including meetings without confirmed membership. Keep its coverage and frozen continuation; it
70
70
  reads the existing index and neither refreshes it nor assigns project membership.
71
+ When the project is unknown, use the search hit’s `meeting` field for the parent reference,
72
+ not its transcript-cue `ref`. `meetings projects scan <parent-ref> --json` compares one bounded
73
+ local evidence page with existing global project names/keys/aliases. This reads the shared project
74
+ catalog explicitly, never creates membership, and needs no model or network. Keep `metadata-title`
75
+ hints apart from transcript citations and retain ambiguity, fingerprints, omitted matches and both
76
+ candidate/evidence coverage. Defaults: 20 cues, 10 candidates, 128 projects/64 KiB catalog, 32 KiB
77
+ cue packet, 16 KiB item; hard maxima: 100 cues, 10 candidates, 64 KiB stored bytes per read and
78
+ 64 KiB item. Over-budget catalogs refuse; select a known project for evidence search instead.
79
+ Resume with `evidence.coverage.next_cursor`, the same parent ref and `--cursor`; a title/project may
80
+ repeat. Candidate truncation needs larger limit/bytes, separately from cue continuation. No cues
81
+ with byte truncation and no cursor means an oversized cue, not an absence of discussion. Native MCP
82
+ `meeting_project_candidates` requires `serve --mcp --meeting-project-candidates` and the same bounded
83
+ arguments. Confirm reviewed links through `memo projects meetings link` with the exact stored meeting ID
84
+ and `--account zoom:zm-profile:<label>`. An existing proposal needs its own Memo fingerprint;
85
+ candidate/vocabulary fingerprints do not substitute for it. The scan itself saves nothing.
86
+
71
87
  `search meetings` filters by dates, identity/person, event/series, project, tag or topic. Project
72
88
  filters require confirmed membership; tags/topics require explicit labels. Use memo for shared
73
89
  knowledge and project associations. `meetings context person:<id>` follows explicit identity links.
74
90
  `meetings task-proposal <ref> --type question|request|mention|promise` returns a proposal, not a saved task.
75
91
 
92
+ For tag suggestions, the agent selects evidence and proposes a small list; no built-in model is
93
+ invoked. Reuse Memo's released `vocabulary list 'kind:tag'`, `vocabulary check <name> --kind tag`
94
+ and `vocabulary check --kind tag` with explicit catalog/comparison bounds. Preflight reuses exact
95
+ canonical names/aliases and flags lexical alternatives; an incomplete audit is not uniqueness
96
+ proof, and `create` is not approval to create. Similarity is a review hint, not a reason to merge.
97
+ Keep supporting meeting/cue refs, vocabulary/creation fingerprints and uncertain synonyms. Apply
98
+ only reviewed existing labels through Memo with `--meeting <id> --account zoom:zm-profile:<label>`;
99
+ new names/aliases require the existing reviewed vocabulary workflow. Do not add another label
100
+ store or automatically accept a creation fingerprint. No tag write is part of Zoom preparation.
101
+
76
102
  `meetings list` takes metadata queries such as `started_at:[2026-09-01 TO 2026-10-01]`.
77
103
  `search all` defaults to meetings; broader messages/mail/notes selection is explicit with `--only`.
78
104
  Follow `item.meetings.next_cursor` as `--meeting-cursor` with the same query/account; unsupported
@@ -150,6 +176,18 @@ Tokens stay in the keyring. Missing scopes require app changes and a new login;
150
176
  is local, while `--check` verifies remotely. Browser consent needs interactive input; `--no-input`
151
177
  cannot approve it. `--timeout` bounds finite commands; watch/MCP are foreground lifetimes.
152
178
 
179
+ ## Discover candidate scheduled series
180
+
181
+ Use `meetings scheduled --limit 20 --json` when the provider series ID is unknown. It reads one
182
+ Zoom scheduled inventory page, needs `meeting:read:list_meetings` and network access, and opens no
183
+ store. Titles and old/undated recurring start hints do not prove a future occurrence or complete
184
+ calendar coverage. Preserve `coverage`, then verify a selected `meeting_id` with preparation.
185
+ Continue `item.page.next_cursor` with the returned `item.after`/`item.until` as explicit
186
+ `--since-time`/`--before-time`; cursors bind account/window. Input/output budgets refuse a whole
187
+ oversized page. MCP `meeting_series_inventory` requires explicit `--meeting-inventory` startup;
188
+ the server fixes its profile then, and callers cannot override it. Never auto-select an ambiguous
189
+ series or treat inventory hints as attendance/occurrence evidence.
190
+
153
191
  ## Prepare one upcoming series
154
192
 
155
193
  Use `meetings prepare <series-id> --json` with the exact provider series ID from remote meeting
@@ -1,5 +0,0 @@
1
- import type { Effects } from "@wirecat/cli-base/standards";
2
- import type { Command } from "commander";
3
- /** Flags can enable extra effects, so discovery declares the broadest supported invocation. */
4
- export declare const commandEffects: (command: Command) => Effects | undefined;
5
- //# sourceMappingURL=command-effects.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"command-effects.d.ts","sourceRoot":"","sources":["../src/command-effects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAE1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAExC,+FAA+F;AAC/F,eAAO,MAAM,cAAc,YAAa,OAAO,KAAG,OAAO,GAAG,SA2B3D,CAAA"}
@@ -1,36 +0,0 @@
1
- import { FETCH, LOCAL_READ, LOCAL_WRITE, NO_EFFECTS, REMOTE_READ, REMOTE_WRITE } from "@wirecat/cli-core/cli";
2
- /** Flags can enable extra effects, so discovery declares the broadest supported invocation. */
3
- export const commandEffects = (command) => {
4
- const parts = [];
5
- for (let current = command; current.parent; current = current.parent)
6
- parts.unshift(current.name());
7
- const path = parts.join(" ");
8
- if (command.commands.length || ["commands", "complete"].includes(path))
9
- return NO_EFFECTS;
10
- if (["config show", "doctor", "skill show"].includes(path))
11
- return LOCAL_READ;
12
- if ([
13
- "meetings list",
14
- "meetings show",
15
- "meetings transcript",
16
- "meetings summary",
17
- "meetings people",
18
- "meetings events list",
19
- "events list",
20
- "meetings passage",
21
- "meetings projects evidence",
22
- ].includes(path))
23
- return LOCAL_READ;
24
- if (["config set", "skill install", "meetings import", "meetings export"].includes(path))
25
- return LOCAL_WRITE;
26
- if (["meetings prepare", "session status", "recordings list", "recordings show"].includes(path))
27
- return REMOTE_READ;
28
- if (["watch", "meetings sync", "search meetings", "meetings embeddings"].includes(path))
29
- return FETCH;
30
- if (["recordings download", "recordings sync", "recordings schedule run"].includes(path))
31
- return FETCH;
32
- if (path.startsWith("remote-meetings "))
33
- return ["list", "show", "invitation"].includes(command.name()) ? REMOTE_READ : REMOTE_WRITE;
34
- return undefined;
35
- };
36
- //# sourceMappingURL=command-effects.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"command-effects.js","sourceRoot":"","sources":["../src/command-effects.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAG7G,+FAA+F;AAC/F,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAgB,EAAuB,EAAE;IACtE,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,IAAI,OAAO,GAAG,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM;QAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;IACnG,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC5B,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,UAAU,CAAA;IACzF,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,UAAU,CAAA;IAC7E,IACE;QACE,eAAe;QACf,eAAe;QACf,qBAAqB;QACrB,kBAAkB;QAClB,iBAAiB;QACjB,sBAAsB;QACtB,aAAa;QACb,kBAAkB;QAClB,4BAA4B;KAC7B,CAAC,QAAQ,CAAC,IAAI,CAAC;QAEhB,OAAO,UAAU,CAAA;IACnB,IAAI,CAAC,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,WAAW,CAAA;IAC5G,IAAI,CAAC,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,WAAW,CAAA;IACnH,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,qBAAqB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAA;IACrG,IAAI,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,yBAAyB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAA;IACtG,IAAI,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC;QACrC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAA;IAC7F,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA"}