@wirecat/zoom-cli 0.4.0 → 0.5.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 (45) hide show
  1. package/README.md +76 -2
  2. package/dist/archive-import.d.ts +6 -2
  3. package/dist/archive-import.d.ts.map +1 -1
  4. package/dist/archive-import.js +32 -8
  5. package/dist/archive-import.js.map +1 -1
  6. package/dist/execution.d.ts.map +1 -1
  7. package/dist/execution.js +1 -0
  8. package/dist/execution.js.map +1 -1
  9. package/dist/index.d.ts +3 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +1 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/local-transcription-commands.d.ts +9 -0
  14. package/dist/local-transcription-commands.d.ts.map +1 -0
  15. package/dist/local-transcription-commands.js +51 -0
  16. package/dist/local-transcription-commands.js.map +1 -0
  17. package/dist/local-transcription.d.ts +52 -0
  18. package/dist/local-transcription.d.ts.map +1 -0
  19. package/dist/local-transcription.js +161 -0
  20. package/dist/local-transcription.js.map +1 -0
  21. package/dist/meeting-integration-commands.d.ts +9 -0
  22. package/dist/meeting-integration-commands.d.ts.map +1 -0
  23. package/dist/meeting-integration-commands.js +64 -0
  24. package/dist/meeting-integration-commands.js.map +1 -0
  25. package/dist/meeting-integration.d.ts +12 -0
  26. package/dist/meeting-integration.d.ts.map +1 -0
  27. package/dist/meeting-integration.js +9 -0
  28. package/dist/meeting-integration.js.map +1 -0
  29. package/dist/meeting-search-commands.d.ts +33 -0
  30. package/dist/meeting-search-commands.d.ts.map +1 -0
  31. package/dist/meeting-search-commands.js +85 -0
  32. package/dist/meeting-search-commands.js.map +1 -0
  33. package/dist/program.d.ts +15 -3
  34. package/dist/program.d.ts.map +1 -1
  35. package/dist/program.js +93 -4
  36. package/dist/program.js.map +1 -1
  37. package/dist/store-connection.d.ts +5 -1
  38. package/dist/store-connection.d.ts.map +1 -1
  39. package/dist/store-connection.js +145 -9
  40. package/dist/store-connection.js.map +1 -1
  41. package/dist/wav-audio.d.ts +28 -0
  42. package/dist/wav-audio.d.ts.map +1 -0
  43. package/dist/wav-audio.js +191 -0
  44. package/dist/wav-audio.js.map +1 -0
  45. package/package.json +3 -3
package/README.md CHANGED
@@ -47,6 +47,9 @@ is an error; tokens are never written to a config file.
47
47
  | `meetings summary <meeting>` | read stored summaries |
48
48
  | `meetings export <meeting> --format markdown\|vtt` | export stored meeting content |
49
49
  | `meetings search <query>`, `meetings people <query>` | find stored text or participants |
50
+ | `meetings search-page <query>`, `meetings search-index` | bounded hit continuation and explicit keyword indexing |
51
+ | `meetings link-event <reference>`, `meetings link-person <reference>` | preview or apply owner-selected stored links |
52
+ | `meetings transcribe <meeting> <file> --model <model>` | preview or locally recognize a WAV file into an independent transcript |
50
53
  | `meetings evidence <reference>`, `meetings context <person>` | read bounded evidence or identity-linked person context |
51
54
  | `meetings task-proposal <reference> --kind <kind>` | preview a task with meeting provenance |
52
55
  | `meetings semantic <query> --model <id>` | rank scanned stored vectors with an explicit query model |
@@ -150,7 +153,9 @@ occurrence with `--uuid`, or assets with comma-separated `--file-ids`. Each occu
150
153
  atomically by its raw Zoom UUID, preserving other transcripts, summaries, participants and the
151
154
  pull cursor. Corrected content retains earlier revisions; identical asset hashes are idempotent.
152
155
  An occurrence with no known start time can receive transcripts only if it already exists. Receipts
153
- report acknowledged or unavailable occurrences; they do not distinguish creation from replay.
156
+ report acknowledged or unavailable occurrences. When the exact receipt capability is available,
157
+ they also report meeting creation and inserted, replayed and superseded transcript counts from the
158
+ same transaction. Older adapters keep the acknowledgement without guessed counts.
154
159
  Earlier acknowledged occurrences can remain committed if a later append fails.
155
160
 
156
161
  Read or search archived transcripts directly:
@@ -254,9 +259,78 @@ credentials. Running a saved job requires its captured profile and client to rem
254
259
  Saved status describes the last acknowledged operation; list/show do not query live timer state.
255
260
  Disabling stops the timer and preserves job definitions and archived files.
256
261
 
262
+ ## Link meetings to shared context
263
+
264
+ Create an independent local transcript from an audio file for an existing stored meeting:
265
+
266
+ ```sh
267
+ zm meetings transcribe 1 ./AliceExample.wav --model parakeet-v3 --json
268
+ zm meetings transcribe 1 ./AliceExample.wav --model parakeet-v3 --yes --json
269
+ ```
270
+
271
+ Preview verifies the input and describes the chosen model without loading it. `--yes` recognizes
272
+ with an already installed local model and atomically appends the completed transcript; `--dry-run`
273
+ overrides it. No model is automatically installed. Input currently accepts PCM16 WAV, mono or stereo,
274
+ at 16 or 48 kHz. `--models-dir` selects an absolute installed model directory. Media, duration,
275
+ segment count and transcript text have explicit bounds through `--max-bytes`, `--max-duration`,
276
+ `--max-segments` and `--max-text-bytes`. Recognition uses fixed windows of up to 30 seconds, so
277
+ timestamps describe those windows. Speakers remain unknown. Provider transcripts and historical
278
+ revisions are preserved; the applied receipt gives transaction counts and provenance.
279
+
280
+ Stored meeting references use `meeting:<accountId>/<meetingId>`. A retained transcript appends its
281
+ revision id, and a cue appends its position. Event and person linking accept root references:
282
+
283
+ ```sh
284
+ zm meetings link-event meeting:1/1 --event-id 1 --expected-event-id none --json
285
+ zm meetings link-event meeting:1/1 --event-id 1 --expected-event-id none --yes --json
286
+ zm meetings link-person meeting:1/1 --participant-id 1 --person 1 --expected-person none --yes --json
287
+ ```
288
+
289
+ These local changes preview by default; `--yes` applies once and `--dry-run` overrides it. Expected
290
+ link options reject a stale decision. Use `--event-id none` to unlink an event. Person linking moves
291
+ only the selected participant's identity; it never guesses a person from a speaker name. Target
292
+ people must have authorized account observations. Explicit `--target-accounts <ids>` adds account
293
+ ids for that lookup. Profile labels group local data and do not authenticate a remote identity.
294
+
295
+ Use [memo](https://github.com/WireCatLabs/cli-memo) for the existing shared notes, tags and memories
296
+ interface. Both tools use the same store; point `MESSAGING_STORE` at the same file if it is overridden.
297
+ For a Zoom profile named `AliceExample`, its provider account key is `zm-profile:AliceExample`:
298
+
299
+ ```sh
300
+ memo tags add planning --meeting 1 --provider zoom --account zm-profile:AliceExample --json
301
+ memo tags remove planning --meeting 1 --provider zoom --account zm-profile:AliceExample --json
302
+ memo notes add --text "Alice Example follow-up" --about meeting:1/1 --json
303
+ memo notes list --about meeting:1/1 --json
304
+ memo memories add "Alice Example will review" --kind fact --scope work --subject meeting:1/1 --evidence meeting:1/1/1/0 --json
305
+ memo memories list --subject meeting:1/1 --scope work --json
306
+ ```
307
+
308
+ Memo's add/remove commands write directly to the local store. Owner-authored memories are confirmed;
309
+ agent-authored memories stay proposed until confirmed. Meeting revision and cue evidence remains
310
+ addressable after corrections. The references and ids above are invented examples; use ids from
311
+ your stored meetings and selected account.
312
+
257
313
  ## Search and read evidence
258
314
 
259
- `meetings search` keeps its existing literal transcript search. `search all` uses the shared search
315
+ For bounded text search, first index queued meeting records explicitly, then page through hits:
316
+
317
+ ```sh
318
+ zm meetings search-index --limit 100 --max-read-bytes 4194304 --json
319
+ zm meetings search-index --limit 100 --yes --json
320
+ zm meetings search-page "example plan" --limit 20 --json
321
+ zm meetings search-page "example plan" --limit 20 --after <nextCursor> --json
322
+ ```
323
+
324
+ Indexing previews by default; `--yes` applies one bounded batch and `--dry-run` overrides it.
325
+ Repeat until the applied receipt reports `remaining: 0`. A search read never processes indexing
326
+ work. Its coverage reports pending indexing and unknown index/archive completeness. All normalized
327
+ query words must match, through literal prefixes or the stored stemming configuration. The default
328
+ configuration adds English, Russian and Spanish word stems; a store can disable or customize it.
329
+ This is keyword search, with no semantic model or query operators. `--meeting-id`, `--since` and `--until`
330
+ narrow the selected account. The opaque cursor belongs to that account, query and filters; it can
331
+ continue inside a large transcript. JSONL preserves the complete page, including `nextCursor`.
332
+
333
+ `meetings search` keeps its existing literal prefix transcript search. `search all` uses the shared search
260
334
  service and searches only meetings by default:
261
335
 
262
336
  ```sh
@@ -1,4 +1,4 @@
1
- import type { MeetingTranscriptStore } from "@wirecat/cli-meetings";
1
+ import type { MeetingTranscriptReceiptStore, MeetingTranscriptStore } from "@wirecat/cli-meetings";
2
2
  import { type ArchiveTranscriptOptions } from "./archive-transcripts.js";
3
3
  export interface ArchiveImportOptions extends ArchiveTranscriptOptions {
4
4
  maxTotalBytes?: number;
@@ -13,13 +13,17 @@ export interface ArchiveImportReceipt {
13
13
  assetIds: string[];
14
14
  status: "acknowledged" | "unavailable";
15
15
  meetingId?: number;
16
+ created?: boolean;
17
+ insertedTranscripts?: number;
18
+ replayedTranscripts?: number;
19
+ supersededTranscripts?: number;
16
20
  /** The append port does not distinguish a missing occurrence from a deleted one. */
17
21
  reason?: "missing_or_deleted";
18
22
  }
19
23
  /** Complete verification and bounded preparation before the caller opens or registers an account. */
20
24
  export declare const preflightArchiveImport: (destination: string, options?: ArchiveImportOptions) => Promise<ArchiveImportPlan>;
21
25
  /** Atomic per occurrence, preserving an acknowledged receipt even when cancellation arrives during append. */
22
- export declare function applyArchiveImport(plan: ArchiveImportPlan, store: MeetingTranscriptStore, options: {
26
+ export declare function applyArchiveImport(plan: ArchiveImportPlan, store: Partial<MeetingTranscriptStore & MeetingTranscriptReceiptStore>, options: {
23
27
  accountId: number;
24
28
  now?: number;
25
29
  signal?: AbortSignal;
@@ -1 +1 @@
1
- {"version":3,"file":"archive-import.d.ts","sourceRoot":"","sources":["../src/archive-import.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAoB,MAAM,uBAAuB,CAAA;AACrF,OAAO,EAAE,KAAK,wBAAwB,EAA0B,MAAM,0BAA0B,CAAA;AAGhG,MAAM,WAAW,oBAAqB,SAAQ,wBAAwB;IACpE,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AACD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC5B;AACD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,MAAM,EAAE,cAAc,GAAG,aAAa,CAAA;IACtC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oFAAoF;IACpF,MAAM,CAAC,EAAE,oBAAoB,CAAA;CAC9B;AASD,qGAAqG;AACrG,eAAO,MAAM,sBAAsB,gBACpB,MAAM,YACV,oBAAoB,KAC5B,OAAO,CAAC,iBAAiB,CAyE3B,CAAA;AAED,8GAA8G;AAC9G,wBAAuB,kBAAkB,CACvC,IAAI,EAAE,iBAAiB,EACvB,KAAK,EAAE,sBAAsB,EAC7B,OAAO,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GACjE,cAAc,CAAC,oBAAoB,EAAE,IAAI,EAAE,IAAI,CAAC,CAqDlD"}
1
+ {"version":3,"file":"archive-import.d.ts","sourceRoot":"","sources":["../src/archive-import.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,6BAA6B,EAAE,sBAAsB,EAAoB,MAAM,uBAAuB,CAAA;AACpH,OAAO,EAAE,KAAK,wBAAwB,EAA0B,MAAM,0BAA0B,CAAA;AAGhG,MAAM,WAAW,oBAAqB,SAAQ,wBAAwB;IACpE,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AACD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC5B;AACD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,MAAM,EAAE,cAAc,GAAG,aAAa,CAAA;IACtC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,oFAAoF;IACpF,MAAM,CAAC,EAAE,oBAAoB,CAAA;CAC9B;AASD,qGAAqG;AACrG,eAAO,MAAM,sBAAsB,gBACpB,MAAM,YACV,oBAAoB,KAC5B,OAAO,CAAC,iBAAiB,CAyE3B,CAAA;AAED,8GAA8G;AAC9G,wBAAuB,kBAAkB,CACvC,IAAI,EAAE,iBAAiB,EACvB,KAAK,EAAE,OAAO,CAAC,sBAAsB,GAAG,6BAA6B,CAAC,EACtE,OAAO,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GACjE,cAAc,CAAC,oBAAoB,EAAE,IAAI,EAAE,IAAI,CAAC,CAmFlD"}
@@ -1,4 +1,5 @@
1
1
  import { createHash } from "node:crypto";
2
+ import { CliError } from "@wirecat/cli-core";
2
3
  import { readArchiveTranscripts } from "./archive-transcripts.js";
3
4
  import { checkCancelled, ZoomError } from "./errors.js";
4
5
  const plans = new WeakMap();
@@ -74,37 +75,60 @@ export const preflightArchiveImport = async (destination, options = {}) => {
74
75
  /** Atomic per occurrence, preserving an acknowledged receipt even when cancellation arrives during append. */
75
76
  export async function* applyArchiveImport(plan, store, options) {
76
77
  const prepared = plans.get(plan);
78
+ const { accountId, signal } = options;
77
79
  const now = options.now ?? Date.now();
78
- if (!prepared || !Number.isSafeInteger(options.accountId) || options.accountId < 1 || !Number.isSafeInteger(now))
80
+ const appendExact = store?.appendTranscriptsWithReceipt;
81
+ const appendLegacy = store?.appendTranscripts;
82
+ const useExact = typeof appendExact === "function";
83
+ if (!prepared || !Number.isSafeInteger(accountId) || accountId < 1 || !Number.isSafeInteger(now))
79
84
  throw new ZoomError("validation_error", "expected a verified archive plan, selected account and integer timestamp");
80
- if (typeof store?.appendTranscripts !== "function")
85
+ if (typeof appendLegacy !== "function" && !useExact)
81
86
  throw new ZoomError("configuration_error", "the installed meeting store does not support transcript append");
82
87
  for (const group of prepared) {
83
- checkCancelled(options.signal);
88
+ checkCancelled(signal);
84
89
  let receipt;
85
90
  try {
86
- const details = await store.appendTranscripts({
87
- accountId: options.accountId,
91
+ const input = {
92
+ accountId: accountId,
88
93
  externalId: group.uuid,
89
94
  create: group.create,
90
95
  transcripts: structuredClone(group.transcripts),
91
96
  now,
92
- });
97
+ };
98
+ const exact = useExact ? await appendExact.call(store, input) : undefined;
99
+ const details = useExact ? exact?.meeting : await appendLegacy?.call(store, input);
93
100
  if (!details?.meeting ||
94
- details.meeting.accountId !== options.accountId ||
101
+ details.meeting.accountId !== accountId ||
95
102
  details.meeting.externalId !== group.uuid ||
96
103
  !Number.isSafeInteger(details.meeting.id) ||
97
104
  details.meeting.id < 1 ||
98
105
  details.meeting.deletedAt !== null)
99
106
  throw new ZoomError("outcome_unknown", "archive append returned inconsistent ownership; verify stored state before retrying");
107
+ if (exact &&
108
+ (typeof exact.created !== "boolean" ||
109
+ exact.insertedTranscripts + exact.replayedTranscripts !== group.transcripts.length ||
110
+ [exact.insertedTranscripts, exact.replayedTranscripts, exact.supersededTranscripts].some((count) => !Number.isSafeInteger(count) || count < 0)))
111
+ throw new ZoomError("outcome_unknown", "archive append returned invalid counts; verify stored state before retrying");
100
112
  receipt = {
101
113
  uuid: group.uuid,
102
114
  assetIds: [...group.assetIds],
103
115
  status: "acknowledged",
104
116
  meetingId: details.meeting.id,
117
+ ...(exact
118
+ ? {
119
+ created: exact.created,
120
+ insertedTranscripts: exact.insertedTranscripts,
121
+ replayedTranscripts: exact.replayedTranscripts,
122
+ supersededTranscripts: exact.supersededTranscripts,
123
+ }
124
+ : {}),
105
125
  };
106
126
  }
107
127
  catch (error) {
128
+ if (error instanceof CliError && (error.code === "timeout" || error.code === "cancelled")) {
129
+ checkCancelled(signal);
130
+ throw error;
131
+ }
108
132
  if (error instanceof Error && "code" in error && error.code === "outcome_unknown")
109
133
  throw new ZoomError("outcome_unknown", "archive append outcome is unknown; verify stored state before retrying");
110
134
  if (error instanceof Error && "code" in error && error.code === "not_found")
@@ -115,7 +139,7 @@ export async function* applyArchiveImport(plan, store, options) {
115
139
  reason: "missing_or_deleted",
116
140
  };
117
141
  else {
118
- checkCancelled(options.signal);
142
+ checkCancelled(signal);
119
143
  throw new ZoomError("provider_error", "archive transcript append failed; earlier occurrences may be committed");
120
144
  }
121
145
  }
@@ -1 +1 @@
1
- {"version":3,"file":"archive-import.js","sourceRoot":"","sources":["../src/archive-import.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,EAAiC,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAChG,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAwBvD,MAAM,KAAK,GAAG,IAAI,OAAO,EAAiC,CAAA;AAE1D,qGAAqG;AACrG,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EACzC,WAAmB,EACnB,OAAO,GAAyB,EAAE,EACN,EAAE;IAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAA;IAC5F,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC;QAChD,MAAM,IAAI,SAAS,CAAC,kBAAkB,EAAE,4DAA4D,CAAC,CAAA;IACvG,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAA;IAC5C,IAAI,cAAc,GAAG,CAAC,CAAA;IACtB,IAAI,UAAU,GAAG,CAAC,CAAA;IAClB,IAAI,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,sBAAsB,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC;QAC1F,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAC9B,IACE,IAAI,CAAC,IAAI,CACP,CAAC,GAAG,EAAE,EAAE,CACN,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;YAClC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;YAChC,GAAG,CAAC,OAAO,GAAG,CAAC;YACf,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,OAAO,CAC1B;YAED,MAAM,IAAI,SAAS,CAAC,kBAAkB,EAAE,wEAAwE,CAAC,CAAA;QACnH,UAAU,IAAI,KAAK,CAAC,IAAI,CAAA;QACxB,IAAI,UAAU,GAAG,OAAO;YAAE,MAAM,IAAI,SAAS,CAAC,kBAAkB,EAAE,iDAAiD,CAAC,CAAA;QACpH,IAAI,SAAS,GAAkB,IAAI,CAAA;QACnC,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;YAC/B,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;YACzC,IACE,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC;gBAChC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,gBAAgB;gBACtC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,SAAS;gBAEvD,MAAM,IAAI,SAAS,CAAC,kBAAkB,EAAE,uDAAuD,CAAC,CAAA;QACpG,CAAC;QACD,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI;YAC1C,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,QAAQ,EAAE,EAAE;YACZ,WAAW,EAAE,EAAE;YACf,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/F,CAAA;QACD,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAC7B,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;YACrB,MAAM,EAAE,oBAAoB,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YACjF,WAAW,EAAE,KAAK,CAAC,MAAM;YACzB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,IAAI;YACd,iBAAiB,EAAE,IAAI;YACvB,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE;gBACR,QAAQ,EAAE,MAAM;gBAChB,cAAc,EAAE,OAAO,CAAC,IAAI;gBAC5B,eAAe,EAAE,KAAK,CAAC,EAAE;gBACzB,WAAW,EAAE,KAAK,CAAC,IAAI;gBACvB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,sBAAsB,EAAE,CAAC;gBACzB,aAAa,EAAE,KAAK,CAAC,IAAI;gBACzB,eAAe,EAAE,KAAK,CAAC,MAAM;gBAC7B,kBAAkB,EAAE,KAAK,CAAC,SAAS;gBACnC,gBAAgB,EAAE,KAAK,CAAC,OAAO;aAChC;YACD,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;gBACjC,QAAQ;gBACR,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,WAAW,EAAE,GAAG,CAAC,OAAO;gBACxB,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,cAAc,EAAE,IAAI;gBACpB,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC;SACJ,CAAC,CAAA;QACF,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QACjC,cAAc,EAAE,CAAA;IAClB,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAA;IACtF,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IACvC,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,8GAA8G;AAC9G,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,kBAAkB,CACvC,IAAuB,EACvB,KAA6B,EAC7B,OAAkE;IAElE,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAChC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAA;IACrC,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC;QAC9G,MAAM,IAAI,SAAS,CAAC,kBAAkB,EAAE,0EAA0E,CAAC,CAAA;IACrH,IAAI,OAAO,KAAK,EAAE,iBAAiB,KAAK,UAAU;QAChD,MAAM,IAAI,SAAS,CAAC,qBAAqB,EAAE,gEAAgE,CAAC,CAAA;IAC9G,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAC9B,IAAI,OAA6B,CAAA;QACjC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAC;gBAC5C,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,UAAU,EAAE,KAAK,CAAC,IAAI;gBACtB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,WAAW,EAAE,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC;gBAC/C,GAAG;aACJ,CAAC,CAAA;YACF,IACE,CAAC,OAAO,EAAE,OAAO;gBACjB,OAAO,CAAC,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS;gBAC/C,OAAO,CAAC,OAAO,CAAC,UAAU,KAAK,KAAK,CAAC,IAAI;gBACzC,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzC,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC;gBACtB,OAAO,CAAC,OAAO,CAAC,SAAS,KAAK,IAAI;gBAElC,MAAM,IAAI,SAAS,CACjB,iBAAiB,EACjB,qFAAqF,CACtF,CAAA;YACH,OAAO,GAAG;gBACR,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC;gBAC7B,MAAM,EAAE,cAAc;gBACtB,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;aAC9B,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB;gBAC/E,MAAM,IAAI,SAAS,CAAC,iBAAiB,EAAE,wEAAwE,CAAC,CAAA;YAClH,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;gBACzE,OAAO,GAAG;oBACR,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC;oBAC7B,MAAM,EAAE,aAAa;oBACrB,MAAM,EAAE,oBAAoB;iBAC7B,CAAA;iBACE,CAAC;gBACJ,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;gBAC9B,MAAM,IAAI,SAAS,CAAC,gBAAgB,EAAE,wEAAwE,CAAC,CAAA;YACjH,CAAC;QACH,CAAC;QACD,MAAM,OAAO,CAAA;IACf,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"archive-import.js","sourceRoot":"","sources":["../src/archive-import.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE5C,OAAO,EAAiC,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAChG,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AA4BvD,MAAM,KAAK,GAAG,IAAI,OAAO,EAAiC,CAAA;AAE1D,qGAAqG;AACrG,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EACzC,WAAmB,EACnB,OAAO,GAAyB,EAAE,EACN,EAAE;IAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAA;IAC5F,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC;QAChD,MAAM,IAAI,SAAS,CAAC,kBAAkB,EAAE,4DAA4D,CAAC,CAAA;IACvG,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAA;IAC5C,IAAI,cAAc,GAAG,CAAC,CAAA;IACtB,IAAI,UAAU,GAAG,CAAC,CAAA;IAClB,IAAI,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,sBAAsB,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC;QAC1F,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAC9B,IACE,IAAI,CAAC,IAAI,CACP,CAAC,GAAG,EAAE,EAAE,CACN,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;YAClC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;YAChC,GAAG,CAAC,OAAO,GAAG,CAAC;YACf,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,OAAO,CAC1B;YAED,MAAM,IAAI,SAAS,CAAC,kBAAkB,EAAE,wEAAwE,CAAC,CAAA;QACnH,UAAU,IAAI,KAAK,CAAC,IAAI,CAAA;QACxB,IAAI,UAAU,GAAG,OAAO;YAAE,MAAM,IAAI,SAAS,CAAC,kBAAkB,EAAE,iDAAiD,CAAC,CAAA;QACpH,IAAI,SAAS,GAAkB,IAAI,CAAA;QACnC,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;YAC/B,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;YACzC,IACE,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC;gBAChC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,gBAAgB;gBACtC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,SAAS;gBAEvD,MAAM,IAAI,SAAS,CAAC,kBAAkB,EAAE,uDAAuD,CAAC,CAAA;QACpG,CAAC;QACD,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI;YAC1C,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,QAAQ,EAAE,EAAE;YACZ,WAAW,EAAE,EAAE;YACf,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/F,CAAA;QACD,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAC7B,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;YACrB,MAAM,EAAE,oBAAoB,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YACjF,WAAW,EAAE,KAAK,CAAC,MAAM;YACzB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,IAAI;YACd,iBAAiB,EAAE,IAAI;YACvB,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE;gBACR,QAAQ,EAAE,MAAM;gBAChB,cAAc,EAAE,OAAO,CAAC,IAAI;gBAC5B,eAAe,EAAE,KAAK,CAAC,EAAE;gBACzB,WAAW,EAAE,KAAK,CAAC,IAAI;gBACvB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,sBAAsB,EAAE,CAAC;gBACzB,aAAa,EAAE,KAAK,CAAC,IAAI;gBACzB,eAAe,EAAE,KAAK,CAAC,MAAM;gBAC7B,kBAAkB,EAAE,KAAK,CAAC,SAAS;gBACnC,gBAAgB,EAAE,KAAK,CAAC,OAAO;aAChC;YACD,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;gBACjC,QAAQ;gBACR,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,WAAW,EAAE,GAAG,CAAC,OAAO;gBACxB,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,cAAc,EAAE,IAAI;gBACpB,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC;SACJ,CAAC,CAAA;QACF,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QACjC,cAAc,EAAE,CAAA;IAClB,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAA;IACtF,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IACvC,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,8GAA8G;AAC9G,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,kBAAkB,CACvC,IAAuB,EACvB,KAAsE,EACtE,OAAkE;IAElE,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAChC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IACrC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAA;IACrC,MAAM,WAAW,GAAG,KAAK,EAAE,4BAA4B,CAAA;IACvD,MAAM,YAAY,GAAG,KAAK,EAAE,iBAAiB,CAAA;IAC7C,MAAM,QAAQ,GAAG,OAAO,WAAW,KAAK,UAAU,CAAA;IAClD,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC;QAC9F,MAAM,IAAI,SAAS,CAAC,kBAAkB,EAAE,0EAA0E,CAAC,CAAA;IACrH,IAAI,OAAO,YAAY,KAAK,UAAU,IAAI,CAAC,QAAQ;QACjD,MAAM,IAAI,SAAS,CAAC,qBAAqB,EAAE,gEAAgE,CAAC,CAAA;IAC9G,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,cAAc,CAAC,MAAM,CAAC,CAAA;QACtB,IAAI,OAA6B,CAAA;QACjC,IAAI,CAAC;YACH,MAAM,KAAK,GAAqB;gBAC9B,SAAS,EAAE,SAAS;gBACpB,UAAU,EAAE,KAAK,CAAC,IAAI;gBACtB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,WAAW,EAAE,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC;gBAC/C,GAAG;aACJ,CAAA;YACD,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;YACzE,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;YAClF,IACE,CAAC,OAAO,EAAE,OAAO;gBACjB,OAAO,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS;gBACvC,OAAO,CAAC,OAAO,CAAC,UAAU,KAAK,KAAK,CAAC,IAAI;gBACzC,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzC,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC;gBACtB,OAAO,CAAC,OAAO,CAAC,SAAS,KAAK,IAAI;gBAElC,MAAM,IAAI,SAAS,CACjB,iBAAiB,EACjB,qFAAqF,CACtF,CAAA;YACH,IACE,KAAK;gBACL,CAAC,OAAO,KAAK,CAAC,OAAO,KAAK,SAAS;oBACjC,KAAK,CAAC,mBAAmB,GAAG,KAAK,CAAC,mBAAmB,KAAK,KAAK,CAAC,WAAW,CAAC,MAAM;oBAClF,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAC,IAAI,CACtF,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CACrD,CAAC;gBAEJ,MAAM,IAAI,SAAS,CACjB,iBAAiB,EACjB,6EAA6E,CAC9E,CAAA;YACH,OAAO,GAAG;gBACR,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC;gBAC7B,MAAM,EAAE,cAAc;gBACtB,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC7B,GAAG,CAAC,KAAK;oBACP,CAAC,CAAC;wBACE,OAAO,EAAE,KAAK,CAAC,OAAO;wBACtB,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;wBAC9C,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;wBAC9C,qBAAqB,EAAE,KAAK,CAAC,qBAAqB;qBACnD;oBACH,CAAC,CAAC,EAAE,CAAC;aACR,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,EAAE,CAAC;gBAC1F,cAAc,CAAC,MAAM,CAAC,CAAA;gBACtB,MAAM,KAAK,CAAA;YACb,CAAC;YACD,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB;gBAC/E,MAAM,IAAI,SAAS,CAAC,iBAAiB,EAAE,wEAAwE,CAAC,CAAA;YAClH,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;gBACzE,OAAO,GAAG;oBACR,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC;oBAC7B,MAAM,EAAE,aAAa;oBACrB,MAAM,EAAE,oBAAoB;iBAC7B,CAAA;iBACE,CAAC;gBACJ,cAAc,CAAC,MAAM,CAAC,CAAA;gBACtB,MAAM,IAAI,SAAS,CAAC,gBAAgB,EAAE,wEAAwE,CAAC,CAAA;YACjH,CAAC;QACH,CAAC;QACD,MAAM,OAAO,CAAA;IACf,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../src/execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACxH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGxC,eAAO,MAAM,QAAQ,SAAU,MAAM,KAAG,MAOvC,CAAA;AACD,eAAO,MAAM,KAAK,SAAU,MAAM,KAAG,MAIpC,CAAA;AACD,eAAO,MAAM,eAAe,WAAY,OAAO,KAAG,MAAM,GAAG,SAa1D,CAAA;AACD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB;AACD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,QAAQ,CAAA;IAClB,MAAM,EAAE,YAAY,CAAA;CACrB;AACD,eAAO,MAAM,cAAc,WAAY,OAAO,WAAW,gBAAgB,KAAG,cAU3E,CAAA;AAED,eAAO,MAAM,eAAe,SAAU,OAAO,KAAG,IAS/C,CAAA"}
1
+ {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../src/execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACxH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGxC,eAAO,MAAM,QAAQ,SAAU,MAAM,KAAG,MAOvC,CAAA;AACD,eAAO,MAAM,KAAK,SAAU,MAAM,KAAG,MAIpC,CAAA;AACD,eAAO,MAAM,eAAe,WAAY,OAAO,KAAG,MAAM,GAAG,SAc1D,CAAA;AACD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB;AACD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,QAAQ,CAAA;IAClB,MAAM,EAAE,YAAY,CAAA;CACrB;AACD,eAAO,MAAM,cAAc,WAAY,OAAO,WAAW,gBAAgB,KAAG,cAU3E,CAAA;AAED,eAAO,MAAM,eAAe,SAAU,OAAO,KAAG,IAS/C,CAAA"}
package/dist/execution.js CHANGED
@@ -20,6 +20,7 @@ export const commandDeadline = (action) => {
20
20
  return 300000;
21
21
  if (action.name() === "download" ||
22
22
  action.name() === "sync" ||
23
+ (action.name() === "transcribe" && action.parent?.name() === "meetings") ||
23
24
  (action.name() === "run" &&
24
25
  action.parent?.name() === "schedule" &&
25
26
  action.parent.parent?.name() === "recordings") ||
@@ -1 +1 @@
1
- {"version":3,"file":"execution.js","sourceRoot":"","sources":["../src/execution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execution.js","sourceRoot":"","sources":["../src/execution.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -4,9 +4,12 @@ export { type ArchiveTranscript, type ArchiveTranscriptMatch, type ArchiveTransc
4
4
  export { profileAccountKey, readConfig, setConfig, type ZoomConfig } from "./config.js";
5
5
  export { ZoomError } from "./errors.js";
6
6
  export { type DownloadedFile, FilesSource, fileMeeting, importFile, readDownloadedFiles, validateDownloadedFiles, } from "./files.js";
7
+ export { createLocalTranscriptionCapabilities, createWavTranscriptionSource, type LocalSpeechPort, type LocalTranscriptionCapabilities, type LocalTranscriptionOptions, type LocalTranscriptionTarget, } from "./local-transcription.js";
7
8
  export { type LoginOptions, login, REDIRECT } from "./login.js";
8
9
  export { createMeetingMcpServer, type MeetingMcpOptions, serveMeetingMcp } from "./mcp-server.js";
9
10
  export { createMeetingContextCapabilities, type EvidenceOptions, type MeetingContextCapabilities, type MeetingTaskKind, type PersonContextOptions, } from "./meeting-context.js";
11
+ export type { MeetingIntegrationCapabilities, MeetingLinkChange } from "./meeting-integration.js";
12
+ export type { MeetingHitSearch, MeetingHitSearchOptions, MeetingSearchIndex } from "./meeting-search-commands.js";
10
13
  export { createMeetingSemanticCapabilities } from "./meeting-semantic.js";
11
14
  export type { MeetingEmbeddingOptions, MeetingModelOptions, MeetingSemanticCapabilities, MeetingSemanticOptions, } from "./meeting-semantic-commands.js";
12
15
  export { createProgram, type ProgramDeps, run, type StoreConnection, type StoreConnectRequest } from "./program.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -4,6 +4,7 @@ export { readArchiveTranscripts, searchArchiveTranscripts, } from "./archive-tra
4
4
  export { profileAccountKey, readConfig, setConfig } from "./config.js";
5
5
  export { ZoomError } from "./errors.js";
6
6
  export { FilesSource, fileMeeting, importFile, readDownloadedFiles, validateDownloadedFiles, } from "./files.js";
7
+ export { createLocalTranscriptionCapabilities, createWavTranscriptionSource, } from "./local-transcription.js";
7
8
  export { login, REDIRECT } from "./login.js";
8
9
  export { createMeetingMcpServer, serveMeetingMcp } from "./mcp-server.js";
9
10
  export { createMeetingContextCapabilities, } from "./meeting-context.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACpD,OAAO,EAIL,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAML,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,SAAS,EAAmB,MAAM,aAAa,CAAA;AACvF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAEL,WAAW,EACX,WAAW,EACX,UAAU,EACV,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAqB,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC/D,OAAO,EAAE,sBAAsB,EAA0B,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjG,OAAO,EACL,gCAAgC,GAKjC,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,iCAAiC,EAAE,MAAM,uBAAuB,CAAA;AAOzE,OAAO,EAAE,aAAa,EAAoB,GAAG,EAAkD,MAAM,cAAc,CAAA;AACnH,OAAO,EACL,8BAA8B,EAC9B,yBAAyB,EASzB,gCAAgC,EAChC,2BAA2B,GAC5B,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAA;AAC1E,OAAO,EAAE,sCAAsC,EAAkC,MAAM,iCAAiC,CAAA;AACxH,OAAO,EAAoD,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC5G,OAAO,EAOL,cAAc,EACd,cAAc,EACd,mBAAmB,EAInB,mBAAmB,EACnB,aAAa,EAEb,cAAc,GACf,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,2BAA2B,EAK3B,kBAAkB,GACnB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,oBAAoB,EAA+B,MAAM,uBAAuB,CAAA;AACzF,OAAO,EAAE,YAAY,EAAkC,MAAM,aAAa,CAAA;AAE1E,OAAO,EAAE,gBAAgB,EAAiD,MAAM,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACpD,OAAO,EAIL,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAML,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,SAAS,EAAmB,MAAM,aAAa,CAAA;AACvF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAEL,WAAW,EACX,WAAW,EACX,UAAU,EACV,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,oCAAoC,EACpC,4BAA4B,GAK7B,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAqB,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC/D,OAAO,EAAE,sBAAsB,EAA0B,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjG,OAAO,EACL,gCAAgC,GAKjC,MAAM,sBAAsB,CAAA;AAG7B,OAAO,EAAE,iCAAiC,EAAE,MAAM,uBAAuB,CAAA;AAOzE,OAAO,EAAE,aAAa,EAAoB,GAAG,EAAkD,MAAM,cAAc,CAAA;AACnH,OAAO,EACL,8BAA8B,EAC9B,yBAAyB,EASzB,gCAAgC,EAChC,2BAA2B,GAC5B,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAA;AAC1E,OAAO,EAAE,sCAAsC,EAAkC,MAAM,iCAAiC,CAAA;AACxH,OAAO,EAAoD,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC5G,OAAO,EAOL,cAAc,EACd,cAAc,EACd,mBAAmB,EAInB,mBAAmB,EACnB,aAAa,EAEb,cAAc,GACf,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,2BAA2B,EAK3B,kBAAkB,GACnB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,oBAAoB,EAA+B,MAAM,uBAAuB,CAAA;AACzF,OAAO,EAAE,YAAY,EAAkC,MAAM,aAAa,CAAA;AAE1E,OAAO,EAAE,gBAAgB,EAAiD,MAAM,qBAAqB,CAAA"}
@@ -0,0 +1,9 @@
1
+ import type { Command } from "commander";
2
+ import { type LocalTranscriptionCapabilities } from "./local-transcription.js";
3
+ export declare const addLocalTranscriptionCommands: (program: Command, deps: {
4
+ capabilities: () => Promise<LocalTranscriptionCapabilities>;
5
+ signal: () => AbortSignal | undefined;
6
+ output: (value: unknown) => void;
7
+ receipt: (value: unknown) => Promise<void>;
8
+ }) => void;
9
+ //# sourceMappingURL=local-transcription-commands.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,51 @@
1
+ import { annotate } from "@wirecat/cli-core/commands";
2
+ import { speechModel } from "@wirecat/cli-messaging/speech";
3
+ import { ZoomError } from "./errors.js";
4
+ import { bytes, duration } from "./execution.js";
5
+ import { compactLocalTranscriptionReceipt, validateLocalTranscriptionOptions, } from "./local-transcription.js";
6
+ export const addLocalTranscriptionCommands = (program, deps) => {
7
+ const meetings = program.commands.find((command) => command.name() === "meetings");
8
+ if (!meetings)
9
+ throw new ZoomError("configuration_error", "meeting command group is unavailable");
10
+ annotate(meetings
11
+ .command("transcribe")
12
+ .description("preview local PCM WAV transcription; --yes recognizes and appends an independent transcript")
13
+ .argument("<meeting>", "selected-account stored meeting id or meeting reference")
14
+ .argument("<file>", "local PCM16 WAV file (16 or 48 kHz, mono/stereo)")
15
+ .requiredOption("--model <model>", "explicit installed speech model")
16
+ .option("--models-dir <directory>", "shared installed speech-model directory")
17
+ .option("--max-bytes <bytes>", "bounded media input bytes (default 1 GiB)", bytes)
18
+ .option("--max-duration <duration>", "bounded audio duration (default 4h)", duration)
19
+ .option("--max-segments <count>", "recognized segment limit (default 10000)", bytes)
20
+ .option("--max-text-bytes <bytes>", "aggregate transcript text limit (default 4 MiB)", bytes)
21
+ .option("--yes", "recognize locally and append to the existing meeting")
22
+ .option("--dry-run", "preview even when --yes is present")
23
+ .action(async (reference, file, options) => {
24
+ const request = validateLocalTranscriptionOptions({
25
+ model: options.model,
26
+ modelsDirectory: options.modelsDir,
27
+ maxBytes: options.maxBytes,
28
+ maxDurationMs: options.maxDuration,
29
+ maxSegments: options.maxSegments,
30
+ maxTextBytes: options.maxTextBytes,
31
+ apply: options.yes,
32
+ dryRun: options.dryRun,
33
+ signal: deps.signal(),
34
+ });
35
+ speechModel(request.model);
36
+ if (typeof file !== "string" || !file.trim() || file.includes("\0"))
37
+ throw new ZoomError("validation_error", "local audio file is required");
38
+ const capabilities = await deps.capabilities();
39
+ const receipt = await capabilities.transcribe(reference, file, request);
40
+ if (receipt.applied)
41
+ await deps.receipt(compactLocalTranscriptionReceipt(receipt));
42
+ else
43
+ deps.output(receipt);
44
+ }), {
45
+ origin: "handwritten",
46
+ mutates: true,
47
+ local: true,
48
+ examples: ["zm meetings transcribe meeting:3/12 ./AliceExample.wav --model parakeet-v3 --json"],
49
+ });
50
+ };
51
+ //# sourceMappingURL=local-transcription-commands.js.map
@@ -0,0 +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,+BAA+B,CAAA;AAE3D,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,6FAA6F,CAAC;SAC1G,QAAQ,CAAC,WAAW,EAAE,yDAAyD,CAAC;SAChF,QAAQ,CAAC,QAAQ,EAAE,kDAAkD,CAAC;SACtE,cAAc,CAAC,iBAAiB,EAAE,iCAAiC,CAAC;SACpE,MAAM,CAAC,0BAA0B,EAAE,yCAAyC,CAAC;SAC7E,MAAM,CAAC,qBAAqB,EAAE,2CAA2C,EAAE,KAAK,CAAC;SACjF,MAAM,CAAC,2BAA2B,EAAE,qCAAqC,EAAE,QAAQ,CAAC;SACpF,MAAM,CAAC,wBAAwB,EAAE,0CAA0C,EAAE,KAAK,CAAC;SACnF,MAAM,CAAC,0BAA0B,EAAE,iDAAiD,EAAE,KAAK,CAAC;SAC5F,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"}
@@ -0,0 +1,52 @@
1
+ import type { MeetingMediaDescriptor, MeetingTranscriptionOptions, MeetingTranscriptionReceipt, MeetingTranscriptionSource, MeetingTranscriptReceiptStore } from "@wirecat/cli-meetings";
2
+ import type { LocalSpeechRecognitionModel, LocalSpeechRecognizer, LocalSpeechRecognizerOptions } from "@wirecat/cli-messaging/speech";
3
+ export interface LocalSpeechPort {
4
+ describe(model: string): Readonly<LocalSpeechRecognitionModel>;
5
+ open(model: string, options: LocalSpeechRecognizerOptions): Promise<LocalSpeechRecognizer>;
6
+ }
7
+ export interface LocalTranscriptionOptions extends MeetingTranscriptionOptions {
8
+ model: string;
9
+ modelsDirectory?: string;
10
+ }
11
+ export interface LocalTranscriptionTarget {
12
+ accountId: number;
13
+ meetingId: number;
14
+ externalId: string;
15
+ }
16
+ export interface LocalTranscriptionCapabilities {
17
+ transcribe(reference: string, file: string, options: LocalTranscriptionOptions): Promise<MeetingTranscriptionReceipt>;
18
+ }
19
+ export declare const validateLocalTranscriptionOptions: (input: LocalTranscriptionOptions) => LocalTranscriptionOptions;
20
+ export declare const compactLocalTranscriptionReceipt: (receipt: MeetingTranscriptionReceipt) => {
21
+ applied: true;
22
+ accountId: number;
23
+ externalId: string;
24
+ meetingId: number;
25
+ created: boolean;
26
+ insertedTranscripts: number;
27
+ replayedTranscripts: number;
28
+ supersededTranscripts: number;
29
+ segments: number;
30
+ mediaSha256: string;
31
+ engine: string;
32
+ model: string;
33
+ modelVersion: string | null;
34
+ timing: "fixed-windows" | "recognition-segments";
35
+ };
36
+ export declare const createWavTranscriptionSource: (file: string, options: {
37
+ model: string;
38
+ modelsDirectory?: string;
39
+ env?: NodeJS.ProcessEnv;
40
+ speech?: () => Promise<LocalSpeechPort>;
41
+ }) => MeetingTranscriptionSource;
42
+ export declare const createLocalTranscriptionCapabilities: (store: {
43
+ accountId: number;
44
+ resolveMeeting(reference: string, signal?: AbortSignal): Promise<LocalTranscriptionTarget | null>;
45
+ appendTranscriptsWithReceipt: MeetingTranscriptReceiptStore["appendTranscriptsWithReceipt"];
46
+ }, input?: {
47
+ env?: NodeJS.ProcessEnv;
48
+ now?: () => number;
49
+ speech?: () => Promise<LocalSpeechPort>;
50
+ }) => LocalTranscriptionCapabilities;
51
+ export type { MeetingMediaDescriptor };
52
+ //# sourceMappingURL=local-transcription.d.ts.map
@@ -0,0 +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,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EACV,2BAA2B,EAC3B,qBAAqB,EACrB,4BAA4B,EAC7B,MAAM,+BAA+B,CAAA;AAItC,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"}
@@ -0,0 +1,161 @@
1
+ import { isAbsolute } from "node:path";
2
+ import { checkCancelled, ZoomError } from "./errors.js";
3
+ import { openWavAudio, preflightWavAudio } from "./wav-audio.js";
4
+ export const validateLocalTranscriptionOptions = (input) => {
5
+ const options = { ...input };
6
+ if (typeof options.model !== "string" ||
7
+ !options.model.trim() ||
8
+ options.model.length > 200 ||
9
+ /[\0\r\n]/.test(options.model))
10
+ throw new ZoomError("validation_error", "local transcription requires an explicit speech model");
11
+ if (options.modelsDirectory !== undefined &&
12
+ (typeof options.modelsDirectory !== "string" ||
13
+ !isAbsolute(options.modelsDirectory) ||
14
+ options.modelsDirectory.length > 4096 ||
15
+ /[\0\r\n]/.test(options.modelsDirectory)))
16
+ throw new ZoomError("validation_error", "speech model directory must be an absolute bounded path");
17
+ for (const [value, max, label] of [
18
+ [options.maxBytes, 4 * 1024 ** 3, "media bytes"],
19
+ [options.maxDurationMs, 24 * 3600_000, "media duration"],
20
+ [options.maxSegments, 100000, "segment count"],
21
+ [options.maxTextBytes, 64 * 1024 ** 2, "transcript text bytes"],
22
+ ])
23
+ if (value !== undefined && (!Number.isSafeInteger(value) || value < 1 || value > max))
24
+ throw new ZoomError("validation_error", `invalid ${label} budget`);
25
+ for (const value of [options.apply, options.dryRun])
26
+ if (value !== undefined && typeof value !== "boolean")
27
+ throw new ZoomError("validation_error", "transcription apply and dry-run options must be booleans");
28
+ return options;
29
+ };
30
+ export const compactLocalTranscriptionReceipt = (receipt) => {
31
+ const append = receipt.append;
32
+ 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
+ return {
35
+ applied: true,
36
+ accountId: receipt.accountId,
37
+ externalId: receipt.externalId,
38
+ meetingId: append.meeting.meeting.id,
39
+ created: append.created,
40
+ insertedTranscripts: append.insertedTranscripts,
41
+ replayedTranscripts: append.replayedTranscripts,
42
+ supersededTranscripts: append.supersededTranscripts,
43
+ segments: receipt.segments,
44
+ mediaSha256: receipt.media.contentHash,
45
+ engine: receipt.media.recognition.engine,
46
+ model: receipt.media.recognition.model,
47
+ modelVersion: receipt.media.recognition.version ?? null,
48
+ timing: receipt.media.recognition.timing ?? "recognition-segments",
49
+ };
50
+ };
51
+ const loadSpeech = async () => {
52
+ const speech = await import("@wirecat/cli-messaging/speech");
53
+ return { describe: speech.localSpeechRecognitionModel, open: speech.openLocalSpeechRecognizer };
54
+ };
55
+ export const createWavTranscriptionSource = (file, options) => {
56
+ const selected = { ...options, ...(options.env ? { env: { ...options.env } } : {}) };
57
+ let plan;
58
+ let recognition;
59
+ let speech;
60
+ return {
61
+ async describe(context) {
62
+ checkCancelled(context.signal);
63
+ speech = await (selected.speech ?? loadSpeech)();
64
+ recognition = Object.freeze({ ...speech.describe(selected.model) });
65
+ plan = await preflightWavAudio(file, context);
66
+ return Object.freeze({
67
+ ...plan.media,
68
+ recognition: Object.freeze({
69
+ engine: recognition.engine,
70
+ model: recognition.model,
71
+ version: recognition.version,
72
+ timing: "fixed-windows",
73
+ }),
74
+ });
75
+ },
76
+ async *segments(media, context) {
77
+ if (!plan ||
78
+ !recognition ||
79
+ !speech ||
80
+ media.contentHash !== plan.media.contentHash ||
81
+ media.id !== plan.media.id ||
82
+ media.size !== plan.media.size ||
83
+ media.durationMs !== plan.media.durationMs ||
84
+ media.recognition.engine !== recognition.engine ||
85
+ media.recognition.model !== recognition.model ||
86
+ media.recognition.version !== recognition.version)
87
+ throw new ZoomError("validation_error", "transcription media descriptor does not match its prepared audio and model");
88
+ const audio = await openWavAudio(plan, context);
89
+ let model;
90
+ try {
91
+ checkCancelled(context.signal);
92
+ model = await speech.open(recognition.model, {
93
+ directory: selected.modelsDirectory,
94
+ env: selected.env,
95
+ signal: context.signal,
96
+ });
97
+ if (model.engine !== recognition.engine ||
98
+ model.model !== recognition.model ||
99
+ model.version !== recognition.version)
100
+ throw new ZoomError("validation_error", "installed speech recognizer changed after the media preview");
101
+ for await (const window of audio.windows()) {
102
+ checkCancelled(context.signal);
103
+ const text = await model.recognize(window.samples, { signal: context.signal });
104
+ checkCancelled(context.signal);
105
+ yield { startMs: window.startMs, endMs: window.endMs, text };
106
+ }
107
+ }
108
+ finally {
109
+ try {
110
+ await model?.close();
111
+ }
112
+ finally {
113
+ await audio.close();
114
+ }
115
+ }
116
+ },
117
+ };
118
+ };
119
+ export const createLocalTranscriptionCapabilities = (store, input = {}) => {
120
+ const accountId = store.accountId;
121
+ if (!Number.isSafeInteger(accountId) || accountId < 1)
122
+ throw new ZoomError("validation_error", "local transcription requires a selected existing account");
123
+ const options = { ...input, ...(input.env ? { env: { ...input.env } } : {}) };
124
+ const resolveMeeting = store.resolveMeeting.bind(store);
125
+ const appendTranscriptsWithReceipt = store.appendTranscriptsWithReceipt.bind(store);
126
+ return {
127
+ async transcribe(reference, file, raw) {
128
+ const request = validateLocalTranscriptionOptions(raw);
129
+ checkCancelled(request.signal);
130
+ const resolved = await resolveMeeting(reference, request.signal);
131
+ const found = resolved && {
132
+ accountId: resolved.accountId,
133
+ meetingId: resolved.meetingId,
134
+ externalId: resolved.externalId,
135
+ };
136
+ if (!found ||
137
+ found.accountId !== accountId ||
138
+ !Number.isSafeInteger(found.meetingId) ||
139
+ found.meetingId < 1 ||
140
+ typeof found.externalId !== "string" ||
141
+ !found.externalId.trim())
142
+ throw new ZoomError("not_found", "meeting was not found in the selected account");
143
+ const target = Object.freeze({ accountId, externalId: found.externalId, now: options.now?.() ?? Date.now() });
144
+ const source = createWavTranscriptionSource(file, {
145
+ model: request.model,
146
+ modelsDirectory: request.modelsDirectory,
147
+ env: options.env,
148
+ speech: options.speech,
149
+ });
150
+ const { transcribeMeeting } = await import("@wirecat/cli-meetings");
151
+ return transcribeMeeting(source, {
152
+ appendTranscriptsWithReceipt(value) {
153
+ if (value.accountId !== accountId || value.externalId !== target.externalId)
154
+ throw new ZoomError("validation_error", "transcription append must retain its selected target");
155
+ return appendTranscriptsWithReceipt(value);
156
+ },
157
+ }, target, request);
158
+ },
159
+ };
160
+ };
161
+ //# sourceMappingURL=local-transcription.js.map