@wirecat/zoom-cli 0.12.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 (220) hide show
  1. package/README.md +5 -5
  2. package/dist/agent-skill.d.ts.map +1 -1
  3. package/dist/agent-skill.js +2 -2
  4. package/dist/agent-skill.js.map +1 -1
  5. package/dist/answer-output.d.ts +23 -0
  6. package/dist/answer-output.d.ts.map +1 -0
  7. package/dist/answer-output.js +52 -0
  8. package/dist/answer-output.js.map +1 -0
  9. package/dist/answer-policy.d.ts +11 -0
  10. package/dist/answer-policy.d.ts.map +1 -0
  11. package/dist/answer-policy.js +8 -0
  12. package/dist/answer-policy.js.map +1 -0
  13. package/dist/answers.d.ts +105 -42
  14. package/dist/answers.d.ts.map +1 -1
  15. package/dist/answers.js +23 -34
  16. package/dist/answers.js.map +1 -1
  17. package/dist/api.d.ts.map +1 -1
  18. package/dist/api.js +20 -19
  19. package/dist/api.js.map +1 -1
  20. package/dist/archive-commands.d.ts +5 -4
  21. package/dist/archive-commands.d.ts.map +1 -1
  22. package/dist/archive-commands.js +32 -31
  23. package/dist/archive-commands.js.map +1 -1
  24. package/dist/archive-import.d.ts +2 -2
  25. package/dist/archive-import.d.ts.map +1 -1
  26. package/dist/archive-import.js +20 -30
  27. package/dist/archive-import.js.map +1 -1
  28. package/dist/archive-transcripts.d.ts.map +1 -1
  29. package/dist/archive-transcripts.js +22 -21
  30. package/dist/archive-transcripts.js.map +1 -1
  31. package/dist/bin/zm.js +1 -2
  32. package/dist/bin/zm.js.map +1 -1
  33. package/dist/command-effects.d.ts +5 -0
  34. package/dist/command-effects.d.ts.map +1 -0
  35. package/dist/command-effects.js +38 -0
  36. package/dist/command-effects.js.map +1 -0
  37. package/dist/commands.d.ts +2 -1
  38. package/dist/commands.d.ts.map +1 -1
  39. package/dist/commands.js +21 -18
  40. package/dist/commands.js.map +1 -1
  41. package/dist/config.d.ts.map +1 -1
  42. package/dist/config.js +54 -37
  43. package/dist/config.js.map +1 -1
  44. package/dist/errors.d.ts +0 -4
  45. package/dist/errors.d.ts.map +1 -1
  46. package/dist/errors.js +2 -7
  47. package/dist/errors.js.map +1 -1
  48. package/dist/execution.d.ts +1 -0
  49. package/dist/execution.d.ts.map +1 -1
  50. package/dist/execution.js +4 -4
  51. package/dist/execution.js.map +1 -1
  52. package/dist/files.d.ts.map +1 -1
  53. package/dist/files.js +9 -9
  54. package/dist/files.js.map +1 -1
  55. package/dist/index.d.ts +2 -1
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +2 -1
  58. package/dist/index.js.map +1 -1
  59. package/dist/ingestion-search-commands.d.ts +3 -2
  60. package/dist/ingestion-search-commands.d.ts.map +1 -1
  61. package/dist/ingestion-search-commands.js +9 -8
  62. package/dist/ingestion-search-commands.js.map +1 -1
  63. package/dist/json-fields.d.ts +7 -0
  64. package/dist/json-fields.d.ts.map +1 -0
  65. package/dist/json-fields.js +23 -0
  66. package/dist/json-fields.js.map +1 -0
  67. package/dist/keys.d.ts +1 -1
  68. package/dist/keys.d.ts.map +1 -1
  69. package/dist/keys.js +7 -5
  70. package/dist/keys.js.map +1 -1
  71. package/dist/local-transcription-commands.d.ts +3 -2
  72. package/dist/local-transcription-commands.d.ts.map +1 -1
  73. package/dist/local-transcription-commands.js +7 -7
  74. package/dist/local-transcription-commands.js.map +1 -1
  75. package/dist/local-transcription.d.ts.map +1 -1
  76. package/dist/local-transcription.js +13 -12
  77. package/dist/local-transcription.js.map +1 -1
  78. package/dist/login.d.ts.map +1 -1
  79. package/dist/login.js +8 -7
  80. package/dist/login.js.map +1 -1
  81. package/dist/mcp-server.d.ts +4 -0
  82. package/dist/mcp-server.d.ts.map +1 -1
  83. package/dist/mcp-server.js +40 -48
  84. package/dist/mcp-server.js.map +1 -1
  85. package/dist/meeting-context-commands.d.ts +2 -1
  86. package/dist/meeting-context-commands.d.ts.map +1 -1
  87. package/dist/meeting-context-commands.js +11 -15
  88. package/dist/meeting-context-commands.js.map +1 -1
  89. package/dist/meeting-context.d.ts +6 -6
  90. package/dist/meeting-context.d.ts.map +1 -1
  91. package/dist/meeting-context.js +8 -21
  92. package/dist/meeting-context.js.map +1 -1
  93. package/dist/meeting-integration-commands.d.ts +3 -2
  94. package/dist/meeting-integration-commands.d.ts.map +1 -1
  95. package/dist/meeting-integration-commands.js +7 -7
  96. package/dist/meeting-integration-commands.js.map +1 -1
  97. package/dist/meeting-integration.d.ts.map +1 -1
  98. package/dist/meeting-integration.js +2 -2
  99. package/dist/meeting-integration.js.map +1 -1
  100. package/dist/meeting-mcp-command.d.ts +19 -0
  101. package/dist/meeting-mcp-command.d.ts.map +1 -0
  102. package/dist/meeting-mcp-command.js +41 -0
  103. package/dist/meeting-mcp-command.js.map +1 -0
  104. package/dist/meeting-preparation-mcp.d.ts +131 -0
  105. package/dist/meeting-preparation-mcp.d.ts.map +1 -0
  106. package/dist/meeting-preparation-mcp.js +20 -0
  107. package/dist/meeting-preparation-mcp.js.map +1 -0
  108. package/dist/meeting-preparation.d.ts +22 -0
  109. package/dist/meeting-preparation.d.ts.map +1 -0
  110. package/dist/meeting-preparation.js +29 -0
  111. package/dist/meeting-preparation.js.map +1 -0
  112. package/dist/meeting-project-evidence-commands.d.ts +1 -4
  113. package/dist/meeting-project-evidence-commands.d.ts.map +1 -1
  114. package/dist/meeting-project-evidence-commands.js +2 -6
  115. package/dist/meeting-project-evidence-commands.js.map +1 -1
  116. package/dist/meeting-project-evidence-mcp.d.ts +76 -83
  117. package/dist/meeting-project-evidence-mcp.d.ts.map +1 -1
  118. package/dist/meeting-project-evidence-mcp.js +7 -8
  119. package/dist/meeting-project-evidence-mcp.js.map +1 -1
  120. package/dist/meeting-read-command-bindings.d.ts +10 -0
  121. package/dist/meeting-read-command-bindings.d.ts.map +1 -0
  122. package/dist/meeting-read-command-bindings.js +13 -0
  123. package/dist/meeting-read-command-bindings.js.map +1 -0
  124. package/dist/meeting-search-commands.d.ts +3 -2
  125. package/dist/meeting-search-commands.d.ts.map +1 -1
  126. package/dist/meeting-search-commands.js +47 -38
  127. package/dist/meeting-search-commands.js.map +1 -1
  128. package/dist/meeting-semantic-commands.d.ts +3 -2
  129. package/dist/meeting-semantic-commands.d.ts.map +1 -1
  130. package/dist/meeting-semantic-commands.js +13 -12
  131. package/dist/meeting-semantic-commands.js.map +1 -1
  132. package/dist/meeting-semantic.d.ts.map +1 -1
  133. package/dist/meeting-semantic.js +3 -2
  134. package/dist/meeting-semantic.js.map +1 -1
  135. package/dist/occurrence-schedule.d.ts +3 -0
  136. package/dist/occurrence-schedule.d.ts.map +1 -0
  137. package/dist/occurrence-schedule.js +106 -0
  138. package/dist/occurrence-schedule.js.map +1 -0
  139. package/dist/output-file.js +3 -3
  140. package/dist/output-file.js.map +1 -1
  141. package/dist/program.d.ts +15 -28
  142. package/dist/program.d.ts.map +1 -1
  143. package/dist/program.js +163 -333
  144. package/dist/program.js.map +1 -1
  145. package/dist/recording-archive.d.ts +1 -1
  146. package/dist/recording-archive.d.ts.map +1 -1
  147. package/dist/recording-archive.js +99 -46
  148. package/dist/recording-archive.js.map +1 -1
  149. package/dist/recording-partial-store.d.ts.map +1 -1
  150. package/dist/recording-partial-store.js +11 -10
  151. package/dist/recording-partial-store.js.map +1 -1
  152. package/dist/recording-promotion-store.d.ts.map +1 -1
  153. package/dist/recording-promotion-store.js +4 -4
  154. package/dist/recording-promotion-store.js.map +1 -1
  155. package/dist/recording-schedule-commands.d.ts +3 -2
  156. package/dist/recording-schedule-commands.d.ts.map +1 -1
  157. package/dist/recording-schedule-commands.js +13 -12
  158. package/dist/recording-schedule-commands.js.map +1 -1
  159. package/dist/recording-schedule-store.d.ts.map +1 -1
  160. package/dist/recording-schedule-store.js +15 -14
  161. package/dist/recording-schedule-store.js.map +1 -1
  162. package/dist/recording-schedule-systemd.d.ts.map +1 -1
  163. package/dist/recording-schedule-systemd.js +16 -15
  164. package/dist/recording-schedule-systemd.js.map +1 -1
  165. package/dist/recording-schedule.d.ts +1 -1
  166. package/dist/recording-schedule.d.ts.map +1 -1
  167. package/dist/recording-schedule.js +15 -14
  168. package/dist/recording-schedule.js.map +1 -1
  169. package/dist/recording-sync-store.d.ts.map +1 -1
  170. package/dist/recording-sync-store.js +9 -9
  171. package/dist/recording-sync-store.js.map +1 -1
  172. package/dist/recording-sync.d.ts +1 -1
  173. package/dist/recording-sync.d.ts.map +1 -1
  174. package/dist/recording-sync.js +10 -19
  175. package/dist/recording-sync.js.map +1 -1
  176. package/dist/recordings.d.ts.map +1 -1
  177. package/dist/recordings.js +19 -18
  178. package/dist/recordings.js.map +1 -1
  179. package/dist/remote-http.d.ts +1 -0
  180. package/dist/remote-http.d.ts.map +1 -1
  181. package/dist/remote-http.js +26 -14
  182. package/dist/remote-http.js.map +1 -1
  183. package/dist/remote-meeting-id.d.ts +2 -0
  184. package/dist/remote-meeting-id.d.ts.map +1 -0
  185. package/dist/remote-meeting-id.js +7 -0
  186. package/dist/remote-meeting-id.js.map +1 -0
  187. package/dist/remote-meetings.d.ts.map +1 -1
  188. package/dist/remote-meetings.js +10 -13
  189. package/dist/remote-meetings.js.map +1 -1
  190. package/dist/store-connection.d.ts +1 -7
  191. package/dist/store-connection.d.ts.map +1 -1
  192. package/dist/store-connection.js +95 -176
  193. package/dist/store-connection.js.map +1 -1
  194. package/dist/streaming.js +3 -3
  195. package/dist/streaming.js.map +1 -1
  196. package/dist/tokens.d.ts.map +1 -1
  197. package/dist/tokens.js +10 -9
  198. package/dist/tokens.js.map +1 -1
  199. package/dist/unified-search.d.ts +1 -0
  200. package/dist/unified-search.d.ts.map +1 -1
  201. package/dist/unified-search.js +18 -3
  202. package/dist/unified-search.js.map +1 -1
  203. package/dist/upcoming-meetings.d.ts +10 -0
  204. package/dist/upcoming-meetings.d.ts.map +1 -0
  205. package/dist/upcoming-meetings.js +24 -0
  206. package/dist/upcoming-meetings.js.map +1 -0
  207. package/dist/watch-commands.d.ts +2 -1
  208. package/dist/watch-commands.d.ts.map +1 -1
  209. package/dist/watch-commands.js +9 -9
  210. package/dist/watch-commands.js.map +1 -1
  211. package/package.json +5 -4
  212. package/skills/zoom-cli/SKILL.md +32 -12
  213. package/dist/ordinary-file.d.ts +0 -3
  214. package/dist/ordinary-file.d.ts.map +0 -1
  215. package/dist/ordinary-file.js +0 -16
  216. package/dist/ordinary-file.js.map +0 -1
  217. package/dist/wav-audio.d.ts +0 -2
  218. package/dist/wav-audio.d.ts.map +0 -1
  219. package/dist/wav-audio.js +0 -2
  220. package/dist/wav-audio.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,SAAS,UANZ,OAAO,KAAG,OAM4E,CAAA;AAChG,eAAO,MAAM,SAAS,UAPZ,OAAO,KAAG,OAO4F,CAAA"}
1
+ {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"AAMA,4GAA4G;AAC5G,eAAO,MAAM,SAAS,UAAW,OAAO,KAAG,OAS1C,CAAA"}
package/dist/keys.js CHANGED
@@ -4,13 +4,15 @@ const plain = (value) => {
4
4
  const prototype = Object.getPrototypeOf(value);
5
5
  return prototype === Object.prototype || prototype === null;
6
6
  };
7
- const deep = (name) => (value) => {
7
+ /** Turns snake_case input that agents send back, such as a cursor, into the camelCase the services take. */
8
+ export const camelKeys = (value) => {
8
9
  if (Array.isArray(value))
9
- return value.map(deep(name));
10
+ return value.map(camelKeys);
10
11
  if (!plain(value))
11
12
  return value;
12
- return Object.fromEntries(Object.entries(value).map(([key, item]) => [name(key), deep(name)(item)]));
13
+ return Object.fromEntries(Object.entries(value).map(([key, item]) => [
14
+ key.replace(/_([a-z0-9])/g, (_, letter) => letter.toUpperCase()),
15
+ camelKeys(item),
16
+ ]));
13
17
  };
14
- export const snakeKeys = deep((key) => key.replace(/([a-z0-9])([A-Z])/g, "$1_$2").toLowerCase());
15
- export const camelKeys = deep((key) => key.replace(/_([a-z0-9])/g, (_, letter) => letter.toUpperCase()));
16
18
  //# sourceMappingURL=keys.js.map
package/dist/keys.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"keys.js","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"AAAA,MAAM,KAAK,GAAG,CAAC,KAAc,EAAoC,EAAE;IACjE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IAC7D,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;IAC9C,OAAO,SAAS,KAAK,MAAM,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI,CAAA;AAC7D,CAAC,CAAA;AAED,MAAM,IAAI,GACR,CAAC,IAA6B,EAAE,EAAE,CAClC,CAAC,KAAc,EAAW,EAAE;IAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACtD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAC/B,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AACtG,CAAC,CAAA;AAEH,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;AAChG,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,MAAc,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"keys.js","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"AAAA,MAAM,KAAK,GAAG,CAAC,KAAc,EAAoC,EAAE;IACjE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IAC7D,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;IAC9C,OAAO,SAAS,KAAK,MAAM,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI,CAAA;AAC7D,CAAC,CAAA;AAED,4GAA4G;AAC5G,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAc,EAAW,EAAE;IACnD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IACrD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAC/B,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;QACzC,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,MAAc,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QACxE,SAAS,CAAC,IAAI,CAAC;KAChB,CAAC,CACH,CAAA;AACH,CAAC,CAAA"}
@@ -1,9 +1,10 @@
1
+ import { type Body } from "@wirecat/cli-core/cli";
1
2
  import type { Command } from "commander";
2
3
  import { type LocalTranscriptionCapabilities } from "./local-transcription.js";
3
4
  export declare const addLocalTranscriptionCommands: (program: Command, deps: {
4
5
  capabilities: () => Promise<LocalTranscriptionCapabilities>;
5
6
  signal: () => AbortSignal | undefined;
6
- output: (value: unknown) => void;
7
- receipt: (value: unknown) => Promise<void>;
7
+ output: (body: Body) => void;
8
+ receipt: (body: Body) => Promise<void>;
8
9
  }) => void;
9
10
  //# sourceMappingURL=local-transcription-commands.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"local-transcription-commands.d.ts","sourceRoot":"","sources":["../src/local-transcription-commands.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGxC,OAAO,EAEL,KAAK,8BAA8B,EAGpC,MAAM,0BAA0B,CAAA;AAEjC,eAAO,MAAM,6BAA6B,YAC/B,OAAO,QACV;IACJ,YAAY,EAAE,MAAM,OAAO,CAAC,8BAA8B,CAAC,CAAA;IAC3D,MAAM,EAAE,MAAM,WAAW,GAAG,SAAS,CAAA;IACrC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAChC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3C,KACA,IAsDF,CAAA"}
1
+ {"version":3,"file":"local-transcription-commands.d.ts","sourceRoot":"","sources":["../src/local-transcription-commands.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,IAAI,EAAuB,MAAM,uBAAuB,CAAA;AAEtE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAExC,OAAO,EAEL,KAAK,8BAA8B,EAGpC,MAAM,0BAA0B,CAAA;AAEjC,eAAO,MAAM,6BAA6B,YAC/B,OAAO,QACV;IACJ,YAAY,EAAE,MAAM,OAAO,CAAC,8BAA8B,CAAC,CAAA;IAC3D,MAAM,EAAE,MAAM,WAAW,GAAG,SAAS,CAAA;IACrC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAC5B,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACvC,KACA,IAqDF,CAAA"}
@@ -1,12 +1,13 @@
1
+ import { CliError } from "@wirecat/cli-base";
1
2
  import { annotate } from "@wirecat/cli-base/commands";
3
+ import { itemOf, LOCAL_WRITE } from "@wirecat/cli-core/cli";
2
4
  import { speechModel } from "@wirecat/cli-core/speech";
3
- import { ZoomError } from "./errors.js";
4
5
  import { bytes, duration } from "./execution.js";
5
6
  import { compactLocalTranscriptionReceipt, validateLocalTranscriptionOptions, } from "./local-transcription.js";
6
7
  export const addLocalTranscriptionCommands = (program, deps) => {
7
8
  const meetings = program.commands.find((command) => command.name() === "meetings");
8
9
  if (!meetings)
9
- throw new ZoomError("configuration_error", "meeting command group is unavailable");
10
+ throw new CliError("configuration_error", "meeting command group is unavailable");
10
11
  annotate(meetings
11
12
  .command("transcribe")
12
13
  .description("preview transcribing a recording on this machine; --yes adds the transcript")
@@ -34,17 +35,16 @@ export const addLocalTranscriptionCommands = (program, deps) => {
34
35
  });
35
36
  speechModel(request.model);
36
37
  if (typeof file !== "string" || !file.trim() || file.includes("\0"))
37
- throw new ZoomError("validation_error", "local audio file is required");
38
+ throw new CliError("validation_error", "local audio file is required");
38
39
  const capabilities = await deps.capabilities();
39
40
  const receipt = await capabilities.transcribe(reference, file, request);
40
41
  if (receipt.applied)
41
- await deps.receipt(compactLocalTranscriptionReceipt(receipt));
42
+ await deps.receipt(itemOf(compactLocalTranscriptionReceipt(receipt)));
42
43
  else
43
- deps.output(receipt);
44
+ deps.output(itemOf(receipt));
44
45
  }), {
45
46
  origin: "handwritten",
46
- mutates: true,
47
- local: true,
47
+ effects: LOCAL_WRITE,
48
48
  examples: ["zm meetings transcribe meeting:3/12 ./AliceExample.wav --model parakeet-v3 --json"],
49
49
  });
50
50
  };
@@ -1 +1 @@
1
- {"version":3,"file":"local-transcription-commands.js","sourceRoot":"","sources":["../src/local-transcription-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAEtD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EACL,gCAAgC,EAGhC,iCAAiC,GAClC,MAAM,0BAA0B,CAAA;AAEjC,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC3C,OAAgB,EAChB,IAKC,EACK,EAAE;IACR,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,UAAU,CAAC,CAAA;IAClF,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,SAAS,CAAC,qBAAqB,EAAE,sCAAsC,CAAC,CAAA;IACjG,QAAQ,CACN,QAAQ;SACL,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,6EAA6E,CAAC;SAC1F,QAAQ,CAAC,WAAW,EAAE,wCAAwC,CAAC;SAC/D,QAAQ,CAAC,QAAQ,EAAE,kDAAkD,CAAC;SACtE,cAAc,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;SAC3D,MAAM,CAAC,0BAA0B,EAAE,yCAAyC,CAAC;SAC7E,MAAM,CAAC,qBAAqB,EAAE,sDAAsD,EAAE,KAAK,CAAC;SAC5F,MAAM,CAAC,2BAA2B,EAAE,0CAA0C,EAAE,QAAQ,CAAC;SACzF,MAAM,CAAC,oBAAoB,EAAE,0CAA0C,EAAE,KAAK,CAAC;SAC/E,MAAM,CAAC,0BAA0B,EAAE,gDAAgD,EAAE,KAAK,CAAC;SAC3F,MAAM,CAAC,OAAO,EAAE,sDAAsD,CAAC;SACvE,MAAM,CAAC,WAAW,EAAE,oCAAoC,CAAC;SACzD,MAAM,CACL,KAAK,EACH,SAAiB,EACjB,IAAY,EACZ,OAIC,EACD,EAAE;QACF,MAAM,OAAO,GAAG,iCAAiC,CAAC;YAChD,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,eAAe,EAAE,OAAO,CAAC,SAAS;YAClC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,aAAa,EAAE,OAAO,CAAC,WAAW;YAClC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,KAAK,EAAE,OAAO,CAAC,GAAG;YAClB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;SACtB,CAAC,CAAA;QACF,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAC1B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACjE,MAAM,IAAI,SAAS,CAAC,kBAAkB,EAAE,8BAA8B,CAAC,CAAA;QACzE,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;QAC9C,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;QACvE,IAAI,OAAO,CAAC,OAAO;YAAE,MAAM,IAAI,CAAC,OAAO,CAAC,gCAAgC,CAAC,OAAO,CAAC,CAAC,CAAA;;YAC7E,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAC3B,CAAC,CACF,EACH;QACE,MAAM,EAAE,aAAa;QACrB,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,CAAC,mFAAmF,CAAC;KAChG,CACF,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"local-transcription-commands.js","sourceRoot":"","sources":["../src/local-transcription-commands.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"local-transcription.d.ts","sourceRoot":"","sources":["../src/local-transcription.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,sBAAsB,EACtB,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,6BAA6B,EAC9B,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EACV,2BAA2B,EAC3B,qBAAqB,EACrB,4BAA4B,EAC7B,MAAM,0BAA0B,CAAA;AAIjC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC,2BAA2B,CAAC,CAAA;IAC9D,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAA;CAC3F;AACD,MAAM,WAAW,yBAA0B,SAAQ,2BAA2B;IAC5E,KAAK,EAAE,MAAM,CAAA;IACb,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AACD,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;CACnB;AACD,MAAM,WAAW,8BAA8B;IAC7C,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAA;CACtH;AACD,eAAO,MAAM,iCAAiC,UAAW,yBAAyB,KAAG,yBA6BpF,CAAA;AACD,eAAO,MAAM,gCAAgC,YAAa,2BAA2B;IAKjF,OAAO;IACP,SAAS;IACT,UAAU;IACV,SAAS;IACT,OAAO;IACP,mBAAmB;IACnB,mBAAmB;IACnB,qBAAqB;IACrB,QAAQ;IACR,WAAW;IACX,MAAM;IACN,KAAK;IACL,YAAY;IACZ,MAAM;CAET,CAAA;AAKD,eAAO,MAAM,4BAA4B,SACjC,MAAM,WACH;IACP,KAAK,EAAE,MAAM,CAAA;IACb,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,CAAA;CACxC,KACA,0BAoEF,CAAA;AACD,eAAO,MAAM,oCAAoC,UACxC;IACL,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC,CAAA;IACjG,4BAA4B,EAAE,6BAA6B,CAAC,8BAA8B,CAAC,CAAA;CAC5F,UACM;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,CAAA;CAAE,KAC9F,8BAgDF,CAAA;AACD,YAAY,EAAE,sBAAsB,EAAE,CAAA"}
1
+ {"version":3,"file":"local-transcription.d.ts","sourceRoot":"","sources":["../src/local-transcription.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,sBAAsB,EACtB,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,6BAA6B,EAC9B,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EACV,2BAA2B,EAC3B,qBAAqB,EACrB,4BAA4B,EAC7B,MAAM,0BAA0B,CAAA;AAIjC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC,2BAA2B,CAAC,CAAA;IAC9D,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAA;CAC3F;AACD,MAAM,WAAW,yBAA0B,SAAQ,2BAA2B;IAC5E,KAAK,EAAE,MAAM,CAAA;IACb,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AACD,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;CACnB;AACD,MAAM,WAAW,8BAA8B;IAC7C,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAA;CACtH;AACD,eAAO,MAAM,iCAAiC,UAAW,yBAAyB,KAAG,yBA6BpF,CAAA;AACD,eAAO,MAAM,gCAAgC,YAAa,2BAA2B;IAKjF,OAAO;IACP,SAAS;IACT,UAAU;IACV,SAAS;IACT,OAAO;IACP,mBAAmB;IACnB,mBAAmB;IACnB,qBAAqB;IACrB,QAAQ;IACR,WAAW;IACX,MAAM;IACN,KAAK;IACL,YAAY;IACZ,MAAM;CAET,CAAA;AAKD,eAAO,MAAM,4BAA4B,SACjC,MAAM,WACH;IACP,KAAK,EAAE,MAAM,CAAA;IACb,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,CAAA;CACxC,KACA,0BAoEF,CAAA;AACD,eAAO,MAAM,oCAAoC,UACxC;IACL,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC,CAAA;IACjG,4BAA4B,EAAE,6BAA6B,CAAC,8BAA8B,CAAC,CAAA;CAC5F,UACM;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,CAAA;CAAE,KAC9F,8BAgDF,CAAA;AACD,YAAY,EAAE,sBAAsB,EAAE,CAAA"}
@@ -1,19 +1,20 @@
1
1
  import { isAbsolute } from "node:path";
2
- import { checkCancelled, ZoomError } from "./errors.js";
3
- import { openWavAudio, preflightWavAudio } from "./wav-audio.js";
2
+ import { CliError } from "@wirecat/cli-base";
3
+ import { openWavAudio, preflightWavAudio } from "@wirecat/cli-core/speech/wav";
4
+ import { checkCancelled } from "./errors.js";
4
5
  export const validateLocalTranscriptionOptions = (input) => {
5
6
  const options = { ...input };
6
7
  if (typeof options.model !== "string" ||
7
8
  !options.model.trim() ||
8
9
  options.model.length > 200 ||
9
10
  /[\0\r\n]/.test(options.model))
10
- throw new ZoomError("validation_error", "local transcription requires an explicit speech model");
11
+ throw new CliError("validation_error", "local transcription requires an explicit speech model");
11
12
  if (options.modelsDirectory !== undefined &&
12
13
  (typeof options.modelsDirectory !== "string" ||
13
14
  !isAbsolute(options.modelsDirectory) ||
14
15
  options.modelsDirectory.length > 4096 ||
15
16
  /[\0\r\n]/.test(options.modelsDirectory)))
16
- throw new ZoomError("validation_error", "speech model directory must be an absolute bounded path");
17
+ throw new CliError("validation_error", "speech model directory must be an absolute bounded path");
17
18
  for (const [value, max, label] of [
18
19
  [options.maxBytes, 4 * 1024 ** 3, "media bytes"],
19
20
  [options.maxDurationMs, 24 * 3600_000, "media duration"],
@@ -21,16 +22,16 @@ export const validateLocalTranscriptionOptions = (input) => {
21
22
  [options.maxTextBytes, 64 * 1024 ** 2, "transcript text bytes"],
22
23
  ])
23
24
  if (value !== undefined && (!Number.isSafeInteger(value) || value < 1 || value > max))
24
- throw new ZoomError("validation_error", `invalid ${label} budget`);
25
+ throw new CliError("validation_error", `invalid ${label} budget`);
25
26
  for (const value of [options.apply, options.dryRun])
26
27
  if (value !== undefined && typeof value !== "boolean")
27
- throw new ZoomError("validation_error", "transcription apply and dry-run options must be booleans");
28
+ throw new CliError("validation_error", "transcription apply and dry-run options must be booleans");
28
29
  return options;
29
30
  };
30
31
  export const compactLocalTranscriptionReceipt = (receipt) => {
31
32
  const append = receipt.append;
32
33
  if (!receipt.applied || !append || !Number.isSafeInteger(append.meeting.meeting.id) || append.meeting.meeting.id < 1)
33
- throw new ZoomError("outcome_unknown", "transcription did not return a usable committed acknowledgement");
34
+ throw new CliError("outcome_unknown", "transcription did not return a usable committed acknowledgement");
34
35
  return {
35
36
  applied: true,
36
37
  accountId: receipt.accountId,
@@ -84,7 +85,7 @@ export const createWavTranscriptionSource = (file, options) => {
84
85
  media.recognition.engine !== recognition.engine ||
85
86
  media.recognition.model !== recognition.model ||
86
87
  media.recognition.version !== recognition.version)
87
- throw new ZoomError("validation_error", "transcription media descriptor does not match its prepared audio and model");
88
+ throw new CliError("validation_error", "transcription media descriptor does not match its prepared audio and model");
88
89
  const audio = await openWavAudio(plan, context);
89
90
  let model;
90
91
  try {
@@ -97,7 +98,7 @@ export const createWavTranscriptionSource = (file, options) => {
97
98
  if (model.engine !== recognition.engine ||
98
99
  model.model !== recognition.model ||
99
100
  model.version !== recognition.version)
100
- throw new ZoomError("validation_error", "installed speech recognizer changed after the media preview");
101
+ throw new CliError("validation_error", "installed speech recognizer changed after the media preview");
101
102
  for await (const window of audio.windows()) {
102
103
  checkCancelled(context.signal);
103
104
  const text = await model.recognize(window.samples, { signal: context.signal });
@@ -119,7 +120,7 @@ export const createWavTranscriptionSource = (file, options) => {
119
120
  export const createLocalTranscriptionCapabilities = (store, input = {}) => {
120
121
  const accountId = store.accountId;
121
122
  if (!Number.isSafeInteger(accountId) || accountId < 1)
122
- throw new ZoomError("validation_error", "local transcription requires a selected existing account");
123
+ throw new CliError("validation_error", "local transcription requires a selected existing account");
123
124
  const options = { ...input, ...(input.env ? { env: { ...input.env } } : {}) };
124
125
  const resolveMeeting = store.resolveMeeting.bind(store);
125
126
  const appendTranscriptsWithReceipt = store.appendTranscriptsWithReceipt.bind(store);
@@ -139,7 +140,7 @@ export const createLocalTranscriptionCapabilities = (store, input = {}) => {
139
140
  found.meetingId < 1 ||
140
141
  typeof found.externalId !== "string" ||
141
142
  !found.externalId.trim())
142
- throw new ZoomError("not_found", "meeting was not found in the selected account");
143
+ throw new CliError("not_found", "meeting was not found in the selected account");
143
144
  const target = Object.freeze({ accountId, externalId: found.externalId, now: options.now?.() ?? Date.now() });
144
145
  const source = createWavTranscriptionSource(file, {
145
146
  model: request.model,
@@ -151,7 +152,7 @@ export const createLocalTranscriptionCapabilities = (store, input = {}) => {
151
152
  return transcribeMeeting(source, {
152
153
  appendTranscriptsWithReceipt(value) {
153
154
  if (value.accountId !== accountId || value.externalId !== target.externalId)
154
- throw new ZoomError("validation_error", "transcription append must retain its selected target");
155
+ throw new CliError("validation_error", "transcription append must retain its selected target");
155
156
  return appendTranscriptsWithReceipt(value);
156
157
  },
157
158
  }, target, request);
@@ -1 +1 @@
1
- {"version":3,"file":"local-transcription.js","sourceRoot":"","sources":["../src/local-transcription.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local-transcription.js","sourceRoot":"","sources":["../src/local-transcription.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,eAAO,MAAM,QAAQ,sCAAsC,CAAA;AAC3D,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,YAAY,CAAA;IACpB,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3C,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IACpD,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AACD,eAAO,MAAM,KAAK,YAAmB,YAAY;;;EA0FhD,CAAA"}
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,eAAO,MAAM,QAAQ,sCAAsC,CAAA;AAC3D,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,YAAY,CAAA;IACpB,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3C,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IACpD,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AACD,eAAO,MAAM,KAAK,YAAmB,YAAY;;;EA0FhD,CAAA"}
package/dist/login.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { createHash, randomBytes } from "node:crypto";
2
2
  import { createServer } from "node:http";
3
- import { checkCancelled, ZoomError } from "./errors.js";
3
+ import { CliError } from "@wirecat/cli-base";
4
+ import { checkCancelled } from "./errors.js";
4
5
  export const REDIRECT = "https://wirecat.dev/zoom-callback";
5
6
  export const login = async (options) => {
6
7
  checkCancelled(options.signal);
@@ -19,7 +20,7 @@ export const login = async (options) => {
19
20
  checkCancelled(options.signal);
20
21
  }
21
22
  catch (error) {
22
- fail(error instanceof Error ? error : new ZoomError("cancelled", "command cancelled"));
23
+ fail(error instanceof Error ? error : new CliError("cancelled", "command cancelled"));
23
24
  }
24
25
  };
25
26
  options.signal?.addEventListener("abort", onAbort, { once: true });
@@ -40,9 +41,9 @@ export const login = async (options) => {
40
41
  if (code)
41
42
  accept(code);
42
43
  else
43
- fail(new ZoomError("authentication_error", "Zoom login was not approved"));
44
+ fail(new CliError("authentication_error", "Zoom login was not approved"));
44
45
  });
45
- const timer = setTimeout(() => fail(new ZoomError("authentication_error", "Zoom login timed out")), options.timeoutMs ?? 300000);
46
+ const timer = setTimeout(() => fail(new CliError("authentication_error", "Zoom login timed out")), options.timeoutMs ?? 300000);
46
47
  try {
47
48
  await new Promise((resolve, reject) => {
48
49
  server.once("error", reject);
@@ -50,7 +51,7 @@ export const login = async (options) => {
50
51
  });
51
52
  const address = server.address();
52
53
  if (!address || typeof address === "string")
53
- throw new ZoomError("configuration_error", "could not start the local login listener");
54
+ throw new CliError("configuration_error", "could not start the local login listener");
54
55
  state = `${address.port}.${randomBytes(24).toString("base64url")}`;
55
56
  const authorize = new URL("https://zoom.us/oauth/authorize");
56
57
  authorize.search = new URLSearchParams({
@@ -66,7 +67,7 @@ export const login = async (options) => {
66
67
  const pastePromise = options.readPaste?.(controller.signal).then((text) => {
67
68
  const query = new URLSearchParams(text.includes("?") ? text.slice(text.indexOf("?") + 1) : text);
68
69
  if (query.get("state") !== state || !query.get("code"))
69
- throw new ZoomError("authentication_error", "pasted login must contain the matching code and state");
70
+ throw new CliError("authentication_error", "pasted login must contain the matching code and state");
70
71
  return query.get("code") ?? "";
71
72
  });
72
73
  // Paste remains available if the browser cannot start or the callback cannot reach loopback.
@@ -74,7 +75,7 @@ export const login = async (options) => {
74
75
  .then(() => options.openBrowser(authorize.toString()))
75
76
  .catch(() => {
76
77
  if (!options.readPaste)
77
- fail(new ZoomError("configuration_error", "could not open the browser; retry with --browser <program>"));
78
+ fail(new CliError("configuration_error", "could not open the browser; retry with --browser <program>"));
78
79
  });
79
80
  const code = await (pastePromise ? Promise.race([codePromise, pastePromise]) : codePromise);
80
81
  controller.abort();
package/dist/login.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,13 @@
1
1
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
2
2
  import type { Transport } from "@modelcontextprotocol/sdk/shared/transport.js";
3
+ import type { Command } from "commander";
4
+ import type { ZoomPreparationOptions } from "./meeting-preparation.js";
3
5
  import { type MeetingModelOptions } from "./meeting-semantic-commands.js";
4
6
  import type { StoreConnection } from "./program.js";
5
7
  export interface MeetingMcpOptions {
6
8
  /** Resolve the selected profile with read intent; each call owns a fresh connection. */
7
9
  connectStore: () => Promise<StoreConnection>;
10
+ commandRegistry?: Command;
8
11
  version?: string;
9
12
  now?: () => number;
10
13
  signal?: AbortSignal;
@@ -14,6 +17,7 @@ export interface MeetingMcpOptions {
14
17
  includeUnifiedSearch?: boolean;
15
18
  includeMeetingContext?: boolean;
16
19
  /** Server-selected model for search_meetings by_meaning; tool callers cannot select models or generate vectors. */
20
+ preparation?: ZoomPreparationOptions;
17
21
  semanticModel?: MeetingModelOptions;
18
22
  }
19
23
  /** Embedding seam. Caller owns transport shutdown; each tool call closes its read connection. */
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAA;AAElE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAA;AA2B9E,OAAO,EAAE,KAAK,mBAAmB,EAAiD,MAAM,gCAAgC,CAAA;AACxH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAInD,MAAM,WAAW,iBAAiB;IAChC,wFAAwF;IACxF,YAAY,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,CAAA;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,wGAAwG;IACxG,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,wFAAwF;IACxF,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,mHAAmH;IACnH,aAAa,CAAC,EAAE,mBAAmB,CAAA;CACpC;AA+VD,iGAAiG;AACjG,eAAO,MAAM,sBAAsB,YAAa,iBAAiB,KAAG,MAAqC,CAAA;AAEzG,6FAA6F;AAC7F,eAAO,MAAM,eAAe,YAAmB,iBAAiB,cAAc,SAAS,KAAG,OAAO,CAAC,IAAI,CAkDrG,CAAA"}
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAA;AAElE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAA;AAgB9E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAWxC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAGtE,OAAO,EAAE,KAAK,mBAAmB,EAAiD,MAAM,gCAAgC,CAAA;AACxH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAInD,MAAM,WAAW,iBAAiB;IAChC,wFAAwF;IACxF,YAAY,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,CAAA;IAC5C,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,wGAAwG;IACxG,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,wFAAwF;IACxF,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,mHAAmH;IACnH,WAAW,CAAC,EAAE,sBAAsB,CAAA;IACpC,aAAa,CAAC,EAAE,mBAAmB,CAAA;CACpC;AAgWD,iGAAiG;AACjG,eAAO,MAAM,sBAAsB,YAAa,iBAAiB,KAAG,MAAqC,CAAA;AAEzG,6FAA6F;AAC7F,eAAO,MAAM,eAAe,YAAmB,iBAAiB,cAAc,SAAS,KAAG,OAAO,CAAC,IAAI,CAkDrG,CAAA"}
@@ -2,26 +2,27 @@ 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 { errorObjectOf, isCliError, mcpErrorResult } from "@wirecat/cli-base";
6
- import { failureContext } from "@wirecat/cli-core";
5
+ import { CliError, errorObjectOf, isCliError, mcpErrorResult } from "@wirecat/cli-base";
6
+ import { LOCAL_READ, meetingPreparationTool, snakeKeys } from "@wirecat/cli-core/cli";
7
7
  import { SAVE_INSTRUCTION } from "@wirecat/cli-core/meetings";
8
8
  import { callMeetingPassageTool, callMeetingSearchTool, callMeetingTool, meetingPassageTool, meetingProjectEvidenceTool, meetingSearchTool, meetingTools, } from "@wirecat/cli-core/meetings/mcp";
9
- import { meetingAnswer, readMetadata, toolAnswerSchema } from "./answers.js";
10
- import { ZoomError } from "./errors.js";
11
- import { camelKeys, snakeKeys } from "./keys.js";
9
+ import { hostFailureContext } from "./answer-policy.js";
10
+ import { readMetadata, toolAnswer, toolAnswerSchema } from "./answers.js";
11
+ import { camelKeys } from "./keys.js";
12
12
  import { validateEvidenceOptions, validatePersonContext, validateTaskKind, validateTaskProposal, } from "./meeting-context.js";
13
+ import { readPreparationTool } from "./meeting-preparation-mcp.js";
13
14
  import { readProjectEvidenceTool } from "./meeting-project-evidence-mcp.js";
14
15
  import { validateMeetingModel, validateMeetingSemantic } from "./meeting-semantic-commands.js";
15
- import { runUnifiedSearch } from "./unified-search.js";
16
+ import { runUnifiedSearch, unifiedSearchAnswer } from "./unified-search.js";
16
17
  import { VERSION } from "./version.js";
17
- const failure = (code, message) => mcpErrorResult(errorObjectOf(new ZoomError(code, message), failureContext()));
18
- const crashed = () => mcpErrorResult(errorObjectOf(undefined, failureContext()));
18
+ const failure = (code, message) => mcpErrorResult(errorObjectOf(new CliError(code, message), hostFailureContext(undefined, LOCAL_READ)));
19
+ const crashed = () => mcpErrorResult(errorObjectOf(undefined, hostFailureContext(undefined, LOCAL_READ)));
19
20
  /** SDK protocol handling; shared meeting tools own all read behavior and validation. */
20
21
  const buildServer = (options) => {
21
22
  const semanticModel = options.semanticModel ? Object.freeze({ ...options.semanticModel }) : undefined;
22
23
  const maxResultBytes = options.maxResultBytes ?? 4 * 1024 * 1024;
23
24
  if (!Number.isSafeInteger(maxResultBytes) || maxResultBytes < 0)
24
- throw new ZoomError("validation_error", "maxResultBytes must be a nonnegative safe integer");
25
+ throw new CliError("validation_error", "maxResultBytes must be a nonnegative safe integer");
25
26
  const running = new Set();
26
27
  let stopping = false;
27
28
  const validator = new AjvJsonSchemaValidator();
@@ -30,6 +31,8 @@ const buildServer = (options) => {
30
31
  return { ...tool, inputSchema: { ...tool.inputSchema, type: "object", properties } };
31
32
  });
32
33
  tools.push(meetingProjectEvidenceTool);
34
+ if (options.preparation)
35
+ tools.push(meetingPreparationTool);
33
36
  const meaningArguments = {
34
37
  by_meaning: { type: "boolean" },
35
38
  max_chunks: { type: "integer", minimum: 1, maximum: 10000 },
@@ -163,6 +166,10 @@ const buildServer = (options) => {
163
166
  const checked = validate(args);
164
167
  if (!checked.valid)
165
168
  return failure("validation_error", `invalid meeting tool arguments: ${checked.errorMessage}`);
169
+ if (request.params.name === "meeting_prepare") {
170
+ const result = await readPreparationTool(options, args, signal);
171
+ return cancelled() ? failure("cancelled", "meeting read was cancelled") : bounded(result);
172
+ }
166
173
  if (request.params.name === "meeting_project_evidence") {
167
174
  const result = await readProjectEvidenceTool(options, args, signal);
168
175
  return cancelled() ? failure("cancelled", "meeting read was cancelled") : bounded(result);
@@ -189,21 +196,21 @@ const buildServer = (options) => {
189
196
  return typeof value === "function"
190
197
  ? (...args) => {
191
198
  if (cancelled())
192
- throw new ZoomError("cancelled", "meeting read was cancelled");
199
+ throw new CliError("cancelled", "meeting read was cancelled");
193
200
  return Reflect.apply(value, target, args);
194
201
  }
195
202
  : value;
196
203
  },
197
204
  });
198
205
  if (request.params.name === "search_meetings" && args.by_meaning === true) {
199
- if (!semanticModel || !connection.meetingSemantic)
200
- throw new ZoomError("configuration_error", "meeting search by meaning is unavailable");
206
+ if (!semanticModel)
207
+ throw new CliError("configuration_error", "meeting search by meaning is unavailable");
201
208
  const wordsOnly = Object.keys(args).filter((key) => !["query", "limit", "cursor", ...Object.keys(meaningArguments)].includes(key));
202
209
  if (wordsOnly.length)
203
- throw new ZoomError("validation_error", `${wordsOnly.join(", ")} do not apply to a search by meaning`);
210
+ throw new CliError("validation_error", `${wordsOnly.join(", ")} do not apply to a search by meaning`);
204
211
  const cursor = args.cursor;
205
212
  if (cursor !== undefined && !/^[1-9]\d{0,15}$/.test(cursor))
206
- throw new ZoomError("validation_error", "cursor by meaning takes the previous page's next_cursor");
213
+ throw new CliError("validation_error", "cursor by meaning takes the previous page's next_cursor");
207
214
  const request = {
208
215
  ...semanticModel,
209
216
  limit: args.limit,
@@ -216,22 +223,17 @@ const buildServer = (options) => {
216
223
  validateMeetingSemantic(args.query, request);
217
224
  const value = await connection.meetingSemantic.search(args.query, request);
218
225
  if (typeof value !== "object" || value === null || Array.isArray(value))
219
- throw new ZoomError("invalid_response", "meeting search by meaning returned an invalid report");
226
+ throw new CliError("invalid_response", "meeting search by meaning returned an invalid report");
220
227
  const next = value.nextChunkId;
221
228
  const found = snakeKeys({ ...value, nextCursor: next === undefined ? null : String(next) });
222
229
  result = { content: [{ type: "text", text: JSON.stringify(found) }], structuredContent: found };
223
230
  }
224
231
  else if (request.params.name === "meeting_passage") {
225
- const passage = connection.meetingContext?.passage;
226
- if (!passage)
227
- throw new ZoomError("configuration_error", "meeting passage capability is unavailable");
228
- result = await callMeetingPassageTool(passage, args, signal, failureContext());
232
+ result = await callMeetingPassageTool(connection.meetingContext.passage, args, signal, hostFailureContext(options.commandRegistry, LOCAL_READ));
229
233
  }
230
234
  else if (request.params.name === "search_meetings") {
231
- if (!connection.meetingSearch)
232
- throw new ZoomError("configuration_error", "meeting search is unavailable");
233
235
  const words = Object.fromEntries(Object.entries(args).filter(([key]) => !(key === "by_meaning" && args.by_meaning === false)));
234
- result = await callMeetingSearchTool(connection.meetingSearch, words, signal, failureContext());
236
+ result = await callMeetingSearchTool(connection.meetingSearch, words, signal, hostFailureContext(options.commandRegistry, LOCAL_READ));
235
237
  }
236
238
  else if (["meeting_evidence", "person_meeting_context", "meeting_task_proposal"].includes(request.params.name)) {
237
239
  const context = connection.meetingContext;
@@ -247,8 +249,6 @@ const buildServer = (options) => {
247
249
  signal,
248
250
  };
249
251
  validateEvidenceOptions(options);
250
- if (!context?.evidence)
251
- throw new ZoomError("configuration_error", "meeting evidence capability is unavailable");
252
252
  value = await context.evidence(args.reference, options);
253
253
  }
254
254
  else if (request.params.name === "person_meeting_context") {
@@ -261,44 +261,36 @@ const buildServer = (options) => {
261
261
  signal,
262
262
  };
263
263
  validatePersonContext(args.person, options);
264
- if (!context?.personContext)
265
- throw new ZoomError("configuration_error", "person meeting context capability is unavailable");
266
264
  value = await context.personContext(args.person, options);
267
265
  }
268
266
  else {
269
267
  validateTaskKind(args.kind);
270
- if (!context?.taskProposal)
271
- throw new ZoomError("configuration_error", "meeting task proposal capability is unavailable");
272
268
  value = await context.taskProposal(args.reference, args.kind, signal);
273
269
  validateTaskProposal(value);
274
270
  }
275
271
  if (typeof value !== "object" || value === null || Array.isArray(value))
276
- throw new ZoomError("invalid_response", "meeting context returned an invalid report");
272
+ throw new CliError("invalid_response", "meeting context returned an invalid report");
277
273
  const found = snakeKeys(value);
278
274
  result = { content: [{ type: "text", text: JSON.stringify(found) }], structuredContent: found };
279
275
  }
280
276
  else if (request.params.name === "search_all") {
281
- if (!connection.unifiedSearch)
282
- result = failure("configuration_error", "unified meeting search is unavailable");
283
- else {
284
- const found = await runUnifiedSearch(connection.unifiedSearch, {
285
- text: args.query,
286
- limit: args.limit ?? 100,
287
- maxMeetings: args.max_meetings,
288
- exact: args.exact,
289
- meetingCursor: camelKeys(args.meeting_cursor),
290
- only: ["meetings"],
291
- signal,
292
- }, true);
293
- const snake = snakeKeys(found);
294
- result = { content: [{ type: "text", text: JSON.stringify(snake) }], structuredContent: snake };
295
- }
277
+ const found = await runUnifiedSearch(connection.unifiedSearch, {
278
+ text: args.query,
279
+ limit: args.limit ?? 100,
280
+ maxMeetings: args.max_meetings,
281
+ exact: args.exact,
282
+ meetingCursor: camelKeys(args.meeting_cursor),
283
+ only: ["meetings"],
284
+ signal,
285
+ }, true);
286
+ const snake = snakeKeys(unifiedSearchAnswer(found));
287
+ result = { content: [{ type: "text", text: JSON.stringify(snake) }], structuredContent: snake };
296
288
  }
297
289
  else
298
290
  result = await callMeetingTool(store, request.params.name, {
299
291
  ...args,
300
292
  account_id: connection.accountId,
301
- }, failureContext());
293
+ }, hostFailureContext(options.commandRegistry, LOCAL_READ));
302
294
  }
303
295
  }
304
296
  catch (error) {
@@ -311,7 +303,7 @@ const buildServer = (options) => {
311
303
  "person_meeting_context",
312
304
  "meeting_task_proposal",
313
305
  ].includes(request.params.name) && isCliError(error)
314
- ? mcpErrorResult(errorObjectOf(error, failureContext()))
306
+ ? mcpErrorResult(errorObjectOf(error, hostFailureContext(undefined, LOCAL_READ)))
315
307
  : crashed();
316
308
  }
317
309
  finally {
@@ -326,11 +318,11 @@ const buildServer = (options) => {
326
318
  return failure("cancelled", "meeting read was cancelled");
327
319
  if (!result.isError) {
328
320
  try {
329
- const answer = meetingAnswer(result.structuredContent, meta());
321
+ const answer = toolAnswer(result.structuredContent, meta(), options.commandRegistry);
330
322
  result = { content: [{ type: "text", text: JSON.stringify(answer) }], structuredContent: answer };
331
323
  }
332
324
  catch (error) {
333
- result = mcpErrorResult(errorObjectOf(error, failureContext()));
325
+ result = mcpErrorResult(errorObjectOf(error, hostFailureContext(undefined, LOCAL_READ)));
334
326
  }
335
327
  }
336
328
  return bounded(result);