@wirecat/zoom-cli 0.13.0 → 0.14.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 (209) hide show
  1. package/README.md +4 -4
  2. package/dist/answer-output.d.ts +21 -2
  3. package/dist/answer-output.d.ts.map +1 -1
  4. package/dist/answer-output.js +48 -37
  5. package/dist/answer-output.js.map +1 -1
  6. package/dist/answers.d.ts +2 -2
  7. package/dist/answers.d.ts.map +1 -1
  8. package/dist/answers.js +12 -43
  9. package/dist/answers.js.map +1 -1
  10. package/dist/api.d.ts.map +1 -1
  11. package/dist/api.js +20 -19
  12. package/dist/api.js.map +1 -1
  13. package/dist/archive-commands.d.ts +5 -4
  14. package/dist/archive-commands.d.ts.map +1 -1
  15. package/dist/archive-commands.js +31 -30
  16. package/dist/archive-commands.js.map +1 -1
  17. package/dist/archive-import.d.ts +2 -2
  18. package/dist/archive-import.d.ts.map +1 -1
  19. package/dist/archive-import.js +20 -30
  20. package/dist/archive-import.js.map +1 -1
  21. package/dist/archive-transcripts.d.ts.map +1 -1
  22. package/dist/archive-transcripts.js +22 -21
  23. package/dist/archive-transcripts.js.map +1 -1
  24. package/dist/bin/zm.js +1 -2
  25. package/dist/bin/zm.js.map +1 -1
  26. package/dist/command-effects.js +1 -1
  27. package/dist/command-effects.js.map +1 -1
  28. package/dist/commands.d.ts +2 -1
  29. package/dist/commands.d.ts.map +1 -1
  30. package/dist/commands.js +8 -8
  31. package/dist/commands.js.map +1 -1
  32. package/dist/config.d.ts.map +1 -1
  33. package/dist/config.js +54 -37
  34. package/dist/config.js.map +1 -1
  35. package/dist/errors.d.ts +0 -4
  36. package/dist/errors.d.ts.map +1 -1
  37. package/dist/errors.js +2 -7
  38. package/dist/errors.js.map +1 -1
  39. package/dist/execution.d.ts.map +1 -1
  40. package/dist/execution.js +3 -4
  41. package/dist/execution.js.map +1 -1
  42. package/dist/files.d.ts.map +1 -1
  43. package/dist/files.js +9 -9
  44. package/dist/files.js.map +1 -1
  45. package/dist/index.d.ts +2 -1
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +2 -1
  48. package/dist/index.js.map +1 -1
  49. package/dist/ingestion-search-commands.d.ts +3 -2
  50. package/dist/ingestion-search-commands.d.ts.map +1 -1
  51. package/dist/ingestion-search-commands.js +5 -5
  52. package/dist/ingestion-search-commands.js.map +1 -1
  53. package/dist/json-fields.d.ts +7 -0
  54. package/dist/json-fields.d.ts.map +1 -0
  55. package/dist/json-fields.js +23 -0
  56. package/dist/json-fields.js.map +1 -0
  57. package/dist/keys.d.ts +1 -1
  58. package/dist/keys.d.ts.map +1 -1
  59. package/dist/keys.js +7 -5
  60. package/dist/keys.js.map +1 -1
  61. package/dist/local-transcription-commands.d.ts +3 -2
  62. package/dist/local-transcription-commands.d.ts.map +1 -1
  63. package/dist/local-transcription-commands.js +6 -6
  64. package/dist/local-transcription-commands.js.map +1 -1
  65. package/dist/local-transcription.d.ts.map +1 -1
  66. package/dist/local-transcription.js +13 -12
  67. package/dist/local-transcription.js.map +1 -1
  68. package/dist/login.d.ts.map +1 -1
  69. package/dist/login.js +8 -7
  70. package/dist/login.js.map +1 -1
  71. package/dist/mcp-server.d.ts +2 -0
  72. package/dist/mcp-server.d.ts.map +1 -1
  73. package/dist/mcp-server.js +33 -42
  74. package/dist/mcp-server.js.map +1 -1
  75. package/dist/meeting-context-commands.d.ts +2 -1
  76. package/dist/meeting-context-commands.d.ts.map +1 -1
  77. package/dist/meeting-context-commands.js +10 -15
  78. package/dist/meeting-context-commands.js.map +1 -1
  79. package/dist/meeting-context.d.ts +6 -6
  80. package/dist/meeting-context.d.ts.map +1 -1
  81. package/dist/meeting-context.js +8 -21
  82. package/dist/meeting-context.js.map +1 -1
  83. package/dist/meeting-integration-commands.d.ts +3 -2
  84. package/dist/meeting-integration-commands.d.ts.map +1 -1
  85. package/dist/meeting-integration-commands.js +6 -6
  86. package/dist/meeting-integration-commands.js.map +1 -1
  87. package/dist/meeting-integration.d.ts.map +1 -1
  88. package/dist/meeting-integration.js +2 -2
  89. package/dist/meeting-integration.js.map +1 -1
  90. package/dist/meeting-mcp-command.d.ts +19 -0
  91. package/dist/meeting-mcp-command.d.ts.map +1 -0
  92. package/dist/meeting-mcp-command.js +41 -0
  93. package/dist/meeting-mcp-command.js.map +1 -0
  94. package/dist/meeting-preparation-mcp.d.ts +131 -0
  95. package/dist/meeting-preparation-mcp.d.ts.map +1 -0
  96. package/dist/meeting-preparation-mcp.js +20 -0
  97. package/dist/meeting-preparation-mcp.js.map +1 -0
  98. package/dist/meeting-preparation.d.ts +22 -0
  99. package/dist/meeting-preparation.d.ts.map +1 -0
  100. package/dist/meeting-preparation.js +29 -0
  101. package/dist/meeting-preparation.js.map +1 -0
  102. package/dist/meeting-project-evidence-commands.d.ts +1 -4
  103. package/dist/meeting-project-evidence-commands.d.ts.map +1 -1
  104. package/dist/meeting-project-evidence-commands.js +2 -6
  105. package/dist/meeting-project-evidence-commands.js.map +1 -1
  106. package/dist/meeting-project-evidence-mcp.d.ts.map +1 -1
  107. package/dist/meeting-project-evidence-mcp.js +2 -4
  108. package/dist/meeting-project-evidence-mcp.js.map +1 -1
  109. package/dist/meeting-read-command-bindings.d.ts +10 -0
  110. package/dist/meeting-read-command-bindings.d.ts.map +1 -0
  111. package/dist/meeting-read-command-bindings.js +13 -0
  112. package/dist/meeting-read-command-bindings.js.map +1 -0
  113. package/dist/meeting-search-commands.d.ts +3 -2
  114. package/dist/meeting-search-commands.d.ts.map +1 -1
  115. package/dist/meeting-search-commands.js +46 -38
  116. package/dist/meeting-search-commands.js.map +1 -1
  117. package/dist/meeting-semantic-commands.d.ts +3 -2
  118. package/dist/meeting-semantic-commands.d.ts.map +1 -1
  119. package/dist/meeting-semantic-commands.js +12 -12
  120. package/dist/meeting-semantic-commands.js.map +1 -1
  121. package/dist/meeting-semantic.d.ts.map +1 -1
  122. package/dist/meeting-semantic.js +3 -2
  123. package/dist/meeting-semantic.js.map +1 -1
  124. package/dist/occurrence-schedule.d.ts +3 -0
  125. package/dist/occurrence-schedule.d.ts.map +1 -0
  126. package/dist/occurrence-schedule.js +106 -0
  127. package/dist/occurrence-schedule.js.map +1 -0
  128. package/dist/output-file.js +3 -3
  129. package/dist/output-file.js.map +1 -1
  130. package/dist/program.d.ts +14 -28
  131. package/dist/program.d.ts.map +1 -1
  132. package/dist/program.js +152 -317
  133. package/dist/program.js.map +1 -1
  134. package/dist/recording-archive.d.ts +1 -1
  135. package/dist/recording-archive.d.ts.map +1 -1
  136. package/dist/recording-archive.js +99 -46
  137. package/dist/recording-archive.js.map +1 -1
  138. package/dist/recording-partial-store.d.ts.map +1 -1
  139. package/dist/recording-partial-store.js +11 -10
  140. package/dist/recording-partial-store.js.map +1 -1
  141. package/dist/recording-promotion-store.d.ts.map +1 -1
  142. package/dist/recording-promotion-store.js +4 -4
  143. package/dist/recording-promotion-store.js.map +1 -1
  144. package/dist/recording-schedule-commands.d.ts +3 -2
  145. package/dist/recording-schedule-commands.d.ts.map +1 -1
  146. package/dist/recording-schedule-commands.js +12 -12
  147. package/dist/recording-schedule-commands.js.map +1 -1
  148. package/dist/recording-schedule-store.d.ts.map +1 -1
  149. package/dist/recording-schedule-store.js +15 -14
  150. package/dist/recording-schedule-store.js.map +1 -1
  151. package/dist/recording-schedule-systemd.d.ts.map +1 -1
  152. package/dist/recording-schedule-systemd.js +16 -15
  153. package/dist/recording-schedule-systemd.js.map +1 -1
  154. package/dist/recording-schedule.d.ts +1 -1
  155. package/dist/recording-schedule.d.ts.map +1 -1
  156. package/dist/recording-schedule.js +15 -14
  157. package/dist/recording-schedule.js.map +1 -1
  158. package/dist/recording-sync-store.d.ts.map +1 -1
  159. package/dist/recording-sync-store.js +9 -9
  160. package/dist/recording-sync-store.js.map +1 -1
  161. package/dist/recording-sync.d.ts +1 -1
  162. package/dist/recording-sync.d.ts.map +1 -1
  163. package/dist/recording-sync.js +10 -19
  164. package/dist/recording-sync.js.map +1 -1
  165. package/dist/recordings.d.ts.map +1 -1
  166. package/dist/recordings.js +19 -18
  167. package/dist/recordings.js.map +1 -1
  168. package/dist/remote-http.d.ts +1 -0
  169. package/dist/remote-http.d.ts.map +1 -1
  170. package/dist/remote-http.js +26 -14
  171. package/dist/remote-http.js.map +1 -1
  172. package/dist/remote-meeting-id.d.ts +2 -0
  173. package/dist/remote-meeting-id.d.ts.map +1 -0
  174. package/dist/remote-meeting-id.js +7 -0
  175. package/dist/remote-meeting-id.js.map +1 -0
  176. package/dist/remote-meetings.d.ts.map +1 -1
  177. package/dist/remote-meetings.js +10 -13
  178. package/dist/remote-meetings.js.map +1 -1
  179. package/dist/store-connection.d.ts +1 -7
  180. package/dist/store-connection.d.ts.map +1 -1
  181. package/dist/store-connection.js +95 -176
  182. package/dist/store-connection.js.map +1 -1
  183. package/dist/streaming.js +3 -3
  184. package/dist/streaming.js.map +1 -1
  185. package/dist/tokens.d.ts.map +1 -1
  186. package/dist/tokens.js +10 -9
  187. package/dist/tokens.js.map +1 -1
  188. package/dist/unified-search.d.ts +1 -10
  189. package/dist/unified-search.d.ts.map +1 -1
  190. package/dist/unified-search.js +7 -6
  191. package/dist/unified-search.js.map +1 -1
  192. package/dist/upcoming-meetings.d.ts +10 -0
  193. package/dist/upcoming-meetings.d.ts.map +1 -0
  194. package/dist/upcoming-meetings.js +24 -0
  195. package/dist/upcoming-meetings.js.map +1 -0
  196. package/dist/watch-commands.d.ts +2 -1
  197. package/dist/watch-commands.d.ts.map +1 -1
  198. package/dist/watch-commands.js +8 -8
  199. package/dist/watch-commands.js.map +1 -1
  200. package/package.json +5 -4
  201. package/skills/zoom-cli/SKILL.md +25 -8
  202. package/dist/ordinary-file.d.ts +0 -3
  203. package/dist/ordinary-file.d.ts.map +0 -1
  204. package/dist/ordinary-file.js +0 -16
  205. package/dist/ordinary-file.js.map +0 -1
  206. package/dist/wav-audio.d.ts +0 -2
  207. package/dist/wav-audio.d.ts.map +0 -1
  208. package/dist/wav-audio.js +0 -2
  209. package/dist/wav-audio.js.map +0 -1
@@ -0,0 +1,24 @@
1
+ import { CliError } from "@wirecat/cli-base";
2
+ import { createUpcomingMeetingReader } from "@wirecat/cli-core/meetings";
3
+ import { zoomOccurrenceSchedule } from "./occurrence-schedule.js";
4
+ import { ZoomRemote } from "./remote-http.js";
5
+ import { zoomMeetingPath } from "./remote-meeting-id.js";
6
+ export const createZoomUpcomingMeetingReader = (account, credentials, fetcher, options = {}) => {
7
+ if (typeof credentials?.withSignal !== "function")
8
+ throw new CliError("configuration_error", "Zoom credential scope is unavailable");
9
+ const scopedCredentials = credentials.withSignal.bind(credentials);
10
+ const remoteOptions = { ...options };
11
+ return createUpcomingMeetingReader({ provider: "zoom", account }, {
12
+ read: async (id, context) => {
13
+ const path = zoomMeetingPath(id);
14
+ const auth = scopedCredentials(context.signal);
15
+ const remote = new ZoomRemote({ tokens: auth.tokens.bind(auth) }, fetcher, remoteOptions);
16
+ const value = await remote.request(path, "meeting:read:meeting", {
17
+ signal: context.signal,
18
+ maxResponseBytes: context.maxReadBytes,
19
+ });
20
+ return zoomOccurrenceSchedule(value, id, context.limit);
21
+ },
22
+ });
23
+ };
24
+ //# sourceMappingURL=upcoming-meetings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upcoming-meetings.js","sourceRoot":"","sources":["../src/upcoming-meetings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAA;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAsB,UAAU,EAAE,MAAM,kBAAkB,CAAA;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAOxD,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAC7C,OAAe,EACf,WAAoC,EACpC,OAAqB,EACrB,OAAO,GAAkB,EAAE,EAC3B,EAAE;IACF,IAAI,OAAO,WAAW,EAAE,UAAU,KAAK,UAAU;QAC/C,MAAM,IAAI,QAAQ,CAAC,qBAAqB,EAAE,sCAAsC,CAAC,CAAA;IACnF,MAAM,iBAAiB,GAAG,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAClE,MAAM,aAAa,GAAG,EAAE,GAAG,OAAO,EAAE,CAAA;IACpC,OAAO,2BAA2B,CAChC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAC7B;QACE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE;YAC1B,MAAM,IAAI,GAAG,eAAe,CAAC,EAAE,CAAC,CAAA;YAChC,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;YAC9C,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,aAAa,CAAC,CAAA;YACzF,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,sBAAsB,EAAE;gBAC/D,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,gBAAgB,EAAE,OAAO,CAAC,YAAY;aACvC,CAAC,CAAA;YACF,OAAO,sBAAsB,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;QACzD,CAAC;KACF,CACF,CAAA;AACH,CAAC,CAAA"}
@@ -1,3 +1,4 @@
1
+ import { type Body } from "@wirecat/cli-core/cli";
1
2
  import { type RunReport, type WatchSleep } from "@wirecat/cli-core/meetings";
2
3
  import { type Command } from "commander";
3
4
  export type WatchTarget = "api" | "files";
@@ -17,7 +18,7 @@ export interface WatchCommandDeps {
17
18
  signal: () => AbortSignal;
18
19
  prepare: (target: WatchTarget | undefined, folder: string | undefined, flags: WatchFlags) => WatchPlan;
19
20
  ingest: (plan: WatchPlan, signal: AbortSignal) => Promise<RunReport>;
20
- receipt: (report: RunReport) => Promise<void>;
21
+ receipt: (body: Body) => Promise<void>;
21
22
  sleep?: WatchSleep;
22
23
  outputIsTTY?: boolean;
23
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"watch-commands.d.ts","sourceRoot":"","sources":["../src/watch-commands.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EAAyB,MAAM,4BAA4B,CAAA;AACnG,OAAO,EAAY,KAAK,OAAO,EAAE,MAAM,WAAW,CAAA;AAIlD,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,OAAO,CAAA;AACzC,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;CACjB;AACD,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,KAAK,GAAG,OAAO,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;CACnB;AACD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,WAAW,CAAA;IACzB,OAAO,EAAE,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,UAAU,KAAK,SAAS,CAAA;IACtG,MAAM,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,SAAS,CAAC,CAAA;IACpE,OAAO,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7C,KAAK,CAAC,EAAE,UAAU,CAAA;IAClB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAkBD,eAAO,MAAM,eAAe,YAAa,OAAO,QAAQ,gBAAgB,KAAG,IA4B1E,CAAA"}
1
+ {"version":3,"file":"watch-commands.d.ts","sourceRoot":"","sources":["../src/watch-commands.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,IAAI,EAAuB,MAAM,uBAAuB,CAAA;AACtE,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EAAyB,MAAM,4BAA4B,CAAA;AACnG,OAAO,EAAY,KAAK,OAAO,EAAE,MAAM,WAAW,CAAA;AAGlD,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,OAAO,CAAA;AACzC,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;CACjB;AACD,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,KAAK,GAAG,OAAO,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;CACnB;AACD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,WAAW,CAAA;IACzB,OAAO,EAAE,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,UAAU,KAAK,SAAS,CAAA;IACtG,MAAM,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,SAAS,CAAC,CAAA;IACpE,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACtC,KAAK,CAAC,EAAE,UAAU,CAAA;IAClB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAkBD,eAAO,MAAM,eAAe,YAAa,OAAO,QAAQ,gBAAgB,KAAG,IA4B1E,CAAA"}
@@ -1,12 +1,12 @@
1
+ import { CliError } from "@wirecat/cli-base";
1
2
  import { annotate } from "@wirecat/cli-base/commands";
2
- import { LOCAL_WRITE } from "@wirecat/cli-core/cli";
3
+ import { itemOf, LOCAL_WRITE } from "@wirecat/cli-core/cli";
3
4
  import { watchMeetingIngestion } from "@wirecat/cli-core/meetings";
4
5
  import { Argument } from "commander";
5
- import { ZoomError } from "./errors.js";
6
6
  import { duration } from "./execution.js";
7
7
  const days = (value) => {
8
8
  if (!/^\d+$/.test(value) || Number(value) > 31)
9
- throw new ZoomError("validation_error", "lookback days must be an integer from 0 through 31");
9
+ throw new CliError("validation_error", "lookback days must be an integer from 0 through 31");
10
10
  return Number(value);
11
11
  };
12
12
  const since = (value) => {
@@ -16,7 +16,7 @@ const since = (value) => {
16
16
  !Number.isFinite(Date.parse(value)) ||
17
17
  !Number.isFinite(dayTime) ||
18
18
  new Date(dayTime).toISOString().slice(0, 10) !== day)
19
- throw new ZoomError("validation_error", "--since-time must be a real ISO 8601 time with a time zone");
19
+ throw new CliError("validation_error", "--since-time must be a real ISO 8601 time with a time zone");
20
20
  return value;
21
21
  };
22
22
  export const addWatchCommand = (program, deps) => {
@@ -30,18 +30,18 @@ export const addWatchCommand = (program, deps) => {
30
30
  .option("--interval <duration>", "delay after each completed receipt (1s through 24h)", duration, 10000)
31
31
  .action(async (target, folder, options) => {
32
32
  if (!program.opts().jsonl && !deps.outputIsTTY)
33
- throw new ZoomError("validation_error", "headless watch requires --jsonl");
33
+ throw new CliError("validation_error", "headless watch requires --jsonl");
34
34
  if (program.opts().json)
35
- throw new ZoomError("validation_error", "watch streams receipts; use --jsonl");
35
+ throw new CliError("validation_error", "watch streams receipts; use --jsonl");
36
36
  if (options.interval < 1000 || options.interval > 86400000)
37
- throw new ZoomError("validation_error", "watch interval must be from 1s through 24h");
37
+ throw new CliError("validation_error", "watch interval must be from 1s through 24h");
38
38
  const plan = deps.prepare(target, folder, options);
39
39
  for await (const report of watchMeetingIngestion((signal) => deps.ingest(plan, signal), {
40
40
  signal: deps.signal(),
41
41
  intervalMs: plan.intervalMs,
42
42
  sleep: deps.sleep,
43
43
  }))
44
- await deps.receipt(report);
44
+ await deps.receipt(itemOf(report));
45
45
  });
46
46
  annotate(command, {
47
47
  origin: "handwritten",
@@ -1 +1 @@
1
- {"version":3,"file":"watch-commands.js","sourceRoot":"","sources":["../src/watch-commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"watch-commands.js","sourceRoot":"","sources":["../src/watch-commands.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wirecat/zoom-cli",
3
- "version": "0.13.0",
3
+ "version": "0.14.0",
4
4
  "description": "Zoom cloud recording archives, persistent transcripts and meeting tools",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -46,15 +46,15 @@
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
- "lint:commands": "node node_modules/@wirecat/cli-base/dist/dev/bin.js lint --cli dist/bin/zm.js",
49
+ "lint:commands": "node node_modules/@wirecat/cli-base-dev/dist/dev/bin.js lint --cli dist/bin/zm.js",
50
50
  "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",
51
51
  "contracts:upgrade": "pnpm --dir contracts/previous install --frozen-lockfile --ignore-scripts && cli-contract contracts/upgrade.json",
52
52
  "security:no-leak": "cli-testing security no-leak . contracts/no-leak.json"
53
53
  },
54
54
  "dependencies": {
55
55
  "@modelcontextprotocol/sdk": "1.32.1",
56
- "@wirecat/cli-base": "0.28.0",
57
- "@wirecat/cli-core": "0.273.0",
56
+ "@wirecat/cli-base": "0.28.2",
57
+ "@wirecat/cli-core": "0.280.0",
58
58
  "commander": "15.0.0",
59
59
  "valibot": "1.5.0"
60
60
  },
@@ -65,6 +65,7 @@
65
65
  "@cspell/dict-ru_ru": "2.3.3",
66
66
  "@types/node": "^22.20.5",
67
67
  "@vitest/coverage-v8": "^5.0.3",
68
+ "@wirecat/cli-base-dev": "npm:@wirecat/cli-base@0.30.0",
68
69
  "@wirecat/cli-testing": "0.4.0",
69
70
  "cspell": "10.3.6",
70
71
  "lefthook": "2.1.16",
@@ -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.13.0"
5
+ version: "0.14.0"
6
6
  ---
7
7
 
8
8
  # Zoom CLI
@@ -15,7 +15,7 @@ Detailed reports (participants, evidence, semantic/unified search) live in `item
15
15
  use `page.mode` and optional `page.next_cursor`. JSONL emits typed item records with `data`,
16
16
  then an end record with page/completeness. For reports, read the report inside the item record’s
17
17
  `data`. Discovery uses contract 3 with separate local/remote effects.
18
- Use `--fields` to limit returned content. `zm doctor --json` checks local setup without login.
18
+ Use `--json=id,title` to keep only those fields. `zm doctor --json` checks local setup without login.
19
19
 
20
20
  ## Recording archives
21
21
 
@@ -32,12 +32,12 @@ unavailable assets. A failed transfer can leave earlier completed files; retry s
32
32
  file again. Existing files are never overwritten. Do not infer HTTP byte-range resume.
33
33
 
34
34
  Read cues with `recordings archive transcript <directory>` or search their text with
35
- `search meetings <query> --archive <directory> --limit 100`. Both work offline without configuration,
35
+ `search recordings <directory> <query> --limit 100`. Both work offline without configuration,
36
36
  login or a database and verify each WebVTT file they read before returning results. Search can stop
37
- before reading later files once it proves another match beyond the limit. Select `--uuid` or
38
- comma-separated `--file-ids`; `--max-bytes` defaults to 8 MiB per file. Search is literal, normalized
39
- and case-insensitive, with a maximum of 1000 matches. When `page.has_more` is true, increase the limit or
40
- narrow the occurrence, file or query selection;
37
+ before reading later files once it proves another match beyond the limit. `recordings archive transcript`
38
+ selects with `--uuid` or comma-separated `--file-ids`; `--max-bytes` defaults to 8 MiB per file. Search is
39
+ literal, normalized and case-insensitive, with a maximum of 1000 matches, and answers `search all`'s hits.
40
+ When `page.has_more` is true, increase the limit or narrow the query;
41
41
  there is no continuation cursor. These reads do not import archive assets into the database.
42
42
 
43
43
  Use `recordings archive import <directory> --offline --jsonl` to append verified VTT assets to the
@@ -80,7 +80,8 @@ The selected overlap also subtracts from the initial bound.
80
80
 
81
81
  `zm serve --mcp` provides eight read-only stored meeting tools. Discovery opens no database; reads
82
82
  use the selected account. MCP uses its own framing, so omit JSON/JSONL/field-selection flags. `--meeting-context` adds four
83
- read-only context tools; `--unified-search` adds one meetings-only shared search tool;
83
+ read-only context tools; `--meeting-preparation` adds the remote schedule plus cited-context
84
+ `meeting_prepare` tool; `--unified-search` adds one meetings-only shared search tool;
84
85
  `--semantic --model <model>` lets `search_meetings` rank existing vectors with `by_meaning`. Remote model selection also requires
85
86
  `--base-url` and `--dims`. The server fixes the model at startup and the profile on its first read.
86
87
  Clients cannot select another model or account. Generation and task creation are not MCP tools.
@@ -175,3 +176,19 @@ List-only `--since-time` and `--until-time` have become query fields; transcript
175
176
  ## Bounded context-filtered search
176
177
 
177
178
  Use `search meetings <query>` with `--since-time`/`--until-time` and optionally `--identity-id`, `--person-id`, `--event-id`, `--series-id`, `--project`, `--tag` or `--topic`. It indexes newly stored meetings before reading; there is no separate index step. Identity IDs come from observed participant results; person IDs follow explicit identity links. Filters select meetings, never attribute cue speech. Project names, keys and aliases resolve existing vocabulary and require confirmed membership; labels require explicit meeting taggings. Do not silently infer membership from matching words or merge similar participant names. Missing or ambiguous names fail. Inspect pending indexing and unknown archive coverage even for empty pages. `search_meetings` exposes the same selected-account MCP read.
179
+
180
+ ## Prepare one upcoming series
181
+
182
+ Use `meetings prepare <series-id> --json` with the exact provider series ID from remote meeting
183
+ listing, rather than an internal stored meeting ID. This reads Zoom's schedule and stored history,
184
+ requiring `meeting:read:meeting`; it does not start login, change scopes or import missing text.
185
+ Default windows look seven days ahead and thirty days back. Use ISO `--since-time`, `--before-time` and
186
+ `--history-since-time` for a fixed window; keep the returned absolute windows when replaying.
187
+
188
+ Preserve candidate/verified-next distinction and all meeting/cue references, fingerprints, stored
189
+ person links, confirmed project links, accepted facts and directly sourced tasks. Past attendees do
190
+ not establish future attendance. Coverage states live reads and unknown archive completeness, plus
191
+ unqueried person-history, project-wide context and project-alias candidates. Stored fact evidence
192
+ is not revalidated. Inspect skipped-source metadata and truncation before relying on the brief.
193
+ This command does not summarize, accept findings or create tasks. Use existing Memo workflows for
194
+ reviewed writes, retaining meeting evidence and preconditions.
@@ -1,3 +0,0 @@
1
- export declare const openOrdinaryFile: (path: string) => Promise<import("fs/promises").FileHandle>;
2
- export declare const syncDirectory: (path: string) => Promise<void>;
3
- //# sourceMappingURL=ordinary-file.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ordinary-file.d.ts","sourceRoot":"","sources":["../src/ordinary-file.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,gBAAgB,SAAU,MAAM,8CAA2C,CAAA;AACxF,eAAO,MAAM,aAAa,SAAU,MAAM,kBAA2C,CAAA"}
@@ -1,16 +0,0 @@
1
- import { isCliError } from "@wirecat/cli-base";
2
- import { openOrdinaryFile as sharedOpen, syncDirectory as sharedSync } from "@wirecat/cli-core/files";
3
- import { ZoomError } from "./errors.js";
4
- const withZoomErrors = async (operation) => {
5
- try {
6
- return await operation();
7
- }
8
- catch (error) {
9
- if (isCliError(error))
10
- throw new ZoomError(error.code, error.message);
11
- throw error;
12
- }
13
- };
14
- export const openOrdinaryFile = (path) => withZoomErrors(() => sharedOpen(path));
15
- export const syncDirectory = (path) => withZoomErrors(() => sharedSync(path));
16
- //# sourceMappingURL=ordinary-file.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ordinary-file.js","sourceRoot":"","sources":["../src/ordinary-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,gBAAgB,IAAI,UAAU,EAAE,aAAa,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACrG,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,MAAM,cAAc,GAAG,KAAK,EAAK,SAA2B,EAAc,EAAE;IAC1E,IAAI,CAAC;QACH,OAAO,MAAM,SAAS,EAAE,CAAA;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,UAAU,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;QACrE,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;AACxF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export { openWavAudio, preflightWavAudio, type WavAudioDescriptor, type WavAudioOptions, type WavAudioPlan, type WavPcmWindow, } from "@wirecat/cli-core/speech/wav";
2
- //# sourceMappingURL=wav-audio.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wav-audio.d.ts","sourceRoot":"","sources":["../src/wav-audio.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,YAAY,GAClB,MAAM,8BAA8B,CAAA"}
package/dist/wav-audio.js DELETED
@@ -1,2 +0,0 @@
1
- export { openWavAudio, preflightWavAudio, } from "@wirecat/cli-core/speech/wav";
2
- //# sourceMappingURL=wav-audio.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wav-audio.js","sourceRoot":"","sources":["../src/wav-audio.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,iBAAiB,GAKlB,MAAM,8BAA8B,CAAA"}