@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.
- package/README.md +5 -5
- package/dist/agent-skill.d.ts.map +1 -1
- package/dist/agent-skill.js +2 -2
- package/dist/agent-skill.js.map +1 -1
- package/dist/answer-output.d.ts +23 -0
- package/dist/answer-output.d.ts.map +1 -0
- package/dist/answer-output.js +52 -0
- package/dist/answer-output.js.map +1 -0
- package/dist/answer-policy.d.ts +11 -0
- package/dist/answer-policy.d.ts.map +1 -0
- package/dist/answer-policy.js +8 -0
- package/dist/answer-policy.js.map +1 -0
- package/dist/answers.d.ts +105 -42
- package/dist/answers.d.ts.map +1 -1
- package/dist/answers.js +23 -34
- package/dist/answers.js.map +1 -1
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +20 -19
- package/dist/api.js.map +1 -1
- package/dist/archive-commands.d.ts +5 -4
- package/dist/archive-commands.d.ts.map +1 -1
- package/dist/archive-commands.js +32 -31
- package/dist/archive-commands.js.map +1 -1
- package/dist/archive-import.d.ts +2 -2
- package/dist/archive-import.d.ts.map +1 -1
- package/dist/archive-import.js +20 -30
- package/dist/archive-import.js.map +1 -1
- package/dist/archive-transcripts.d.ts.map +1 -1
- package/dist/archive-transcripts.js +22 -21
- package/dist/archive-transcripts.js.map +1 -1
- package/dist/bin/zm.js +1 -2
- package/dist/bin/zm.js.map +1 -1
- package/dist/command-effects.d.ts +5 -0
- package/dist/command-effects.d.ts.map +1 -0
- package/dist/command-effects.js +38 -0
- package/dist/command-effects.js.map +1 -0
- package/dist/commands.d.ts +2 -1
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +21 -18
- package/dist/commands.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +54 -37
- package/dist/config.js.map +1 -1
- package/dist/errors.d.ts +0 -4
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +2 -7
- package/dist/errors.js.map +1 -1
- package/dist/execution.d.ts +1 -0
- package/dist/execution.d.ts.map +1 -1
- package/dist/execution.js +4 -4
- package/dist/execution.js.map +1 -1
- package/dist/files.d.ts.map +1 -1
- package/dist/files.js +9 -9
- package/dist/files.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/ingestion-search-commands.d.ts +3 -2
- package/dist/ingestion-search-commands.d.ts.map +1 -1
- package/dist/ingestion-search-commands.js +9 -8
- package/dist/ingestion-search-commands.js.map +1 -1
- package/dist/json-fields.d.ts +7 -0
- package/dist/json-fields.d.ts.map +1 -0
- package/dist/json-fields.js +23 -0
- package/dist/json-fields.js.map +1 -0
- package/dist/keys.d.ts +1 -1
- package/dist/keys.d.ts.map +1 -1
- package/dist/keys.js +7 -5
- package/dist/keys.js.map +1 -1
- package/dist/local-transcription-commands.d.ts +3 -2
- package/dist/local-transcription-commands.d.ts.map +1 -1
- package/dist/local-transcription-commands.js +7 -7
- package/dist/local-transcription-commands.js.map +1 -1
- package/dist/local-transcription.d.ts.map +1 -1
- package/dist/local-transcription.js +13 -12
- package/dist/local-transcription.js.map +1 -1
- package/dist/login.d.ts.map +1 -1
- package/dist/login.js +8 -7
- package/dist/login.js.map +1 -1
- package/dist/mcp-server.d.ts +4 -0
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +40 -48
- package/dist/mcp-server.js.map +1 -1
- package/dist/meeting-context-commands.d.ts +2 -1
- package/dist/meeting-context-commands.d.ts.map +1 -1
- package/dist/meeting-context-commands.js +11 -15
- package/dist/meeting-context-commands.js.map +1 -1
- package/dist/meeting-context.d.ts +6 -6
- package/dist/meeting-context.d.ts.map +1 -1
- package/dist/meeting-context.js +8 -21
- package/dist/meeting-context.js.map +1 -1
- package/dist/meeting-integration-commands.d.ts +3 -2
- package/dist/meeting-integration-commands.d.ts.map +1 -1
- package/dist/meeting-integration-commands.js +7 -7
- package/dist/meeting-integration-commands.js.map +1 -1
- package/dist/meeting-integration.d.ts.map +1 -1
- package/dist/meeting-integration.js +2 -2
- package/dist/meeting-integration.js.map +1 -1
- package/dist/meeting-mcp-command.d.ts +19 -0
- package/dist/meeting-mcp-command.d.ts.map +1 -0
- package/dist/meeting-mcp-command.js +41 -0
- package/dist/meeting-mcp-command.js.map +1 -0
- package/dist/meeting-preparation-mcp.d.ts +131 -0
- package/dist/meeting-preparation-mcp.d.ts.map +1 -0
- package/dist/meeting-preparation-mcp.js +20 -0
- package/dist/meeting-preparation-mcp.js.map +1 -0
- package/dist/meeting-preparation.d.ts +22 -0
- package/dist/meeting-preparation.d.ts.map +1 -0
- package/dist/meeting-preparation.js +29 -0
- package/dist/meeting-preparation.js.map +1 -0
- package/dist/meeting-project-evidence-commands.d.ts +1 -4
- package/dist/meeting-project-evidence-commands.d.ts.map +1 -1
- package/dist/meeting-project-evidence-commands.js +2 -6
- package/dist/meeting-project-evidence-commands.js.map +1 -1
- package/dist/meeting-project-evidence-mcp.d.ts +76 -83
- package/dist/meeting-project-evidence-mcp.d.ts.map +1 -1
- package/dist/meeting-project-evidence-mcp.js +7 -8
- package/dist/meeting-project-evidence-mcp.js.map +1 -1
- package/dist/meeting-read-command-bindings.d.ts +10 -0
- package/dist/meeting-read-command-bindings.d.ts.map +1 -0
- package/dist/meeting-read-command-bindings.js +13 -0
- package/dist/meeting-read-command-bindings.js.map +1 -0
- package/dist/meeting-search-commands.d.ts +3 -2
- package/dist/meeting-search-commands.d.ts.map +1 -1
- package/dist/meeting-search-commands.js +47 -38
- package/dist/meeting-search-commands.js.map +1 -1
- package/dist/meeting-semantic-commands.d.ts +3 -2
- package/dist/meeting-semantic-commands.d.ts.map +1 -1
- package/dist/meeting-semantic-commands.js +13 -12
- package/dist/meeting-semantic-commands.js.map +1 -1
- package/dist/meeting-semantic.d.ts.map +1 -1
- package/dist/meeting-semantic.js +3 -2
- package/dist/meeting-semantic.js.map +1 -1
- package/dist/occurrence-schedule.d.ts +3 -0
- package/dist/occurrence-schedule.d.ts.map +1 -0
- package/dist/occurrence-schedule.js +106 -0
- package/dist/occurrence-schedule.js.map +1 -0
- package/dist/output-file.js +3 -3
- package/dist/output-file.js.map +1 -1
- package/dist/program.d.ts +15 -28
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +163 -333
- package/dist/program.js.map +1 -1
- package/dist/recording-archive.d.ts +1 -1
- package/dist/recording-archive.d.ts.map +1 -1
- package/dist/recording-archive.js +99 -46
- package/dist/recording-archive.js.map +1 -1
- package/dist/recording-partial-store.d.ts.map +1 -1
- package/dist/recording-partial-store.js +11 -10
- package/dist/recording-partial-store.js.map +1 -1
- package/dist/recording-promotion-store.d.ts.map +1 -1
- package/dist/recording-promotion-store.js +4 -4
- package/dist/recording-promotion-store.js.map +1 -1
- package/dist/recording-schedule-commands.d.ts +3 -2
- package/dist/recording-schedule-commands.d.ts.map +1 -1
- package/dist/recording-schedule-commands.js +13 -12
- package/dist/recording-schedule-commands.js.map +1 -1
- package/dist/recording-schedule-store.d.ts.map +1 -1
- package/dist/recording-schedule-store.js +15 -14
- package/dist/recording-schedule-store.js.map +1 -1
- package/dist/recording-schedule-systemd.d.ts.map +1 -1
- package/dist/recording-schedule-systemd.js +16 -15
- package/dist/recording-schedule-systemd.js.map +1 -1
- package/dist/recording-schedule.d.ts +1 -1
- package/dist/recording-schedule.d.ts.map +1 -1
- package/dist/recording-schedule.js +15 -14
- package/dist/recording-schedule.js.map +1 -1
- package/dist/recording-sync-store.d.ts.map +1 -1
- package/dist/recording-sync-store.js +9 -9
- package/dist/recording-sync-store.js.map +1 -1
- package/dist/recording-sync.d.ts +1 -1
- package/dist/recording-sync.d.ts.map +1 -1
- package/dist/recording-sync.js +10 -19
- package/dist/recording-sync.js.map +1 -1
- package/dist/recordings.d.ts.map +1 -1
- package/dist/recordings.js +19 -18
- package/dist/recordings.js.map +1 -1
- package/dist/remote-http.d.ts +1 -0
- package/dist/remote-http.d.ts.map +1 -1
- package/dist/remote-http.js +26 -14
- package/dist/remote-http.js.map +1 -1
- package/dist/remote-meeting-id.d.ts +2 -0
- package/dist/remote-meeting-id.d.ts.map +1 -0
- package/dist/remote-meeting-id.js +7 -0
- package/dist/remote-meeting-id.js.map +1 -0
- package/dist/remote-meetings.d.ts.map +1 -1
- package/dist/remote-meetings.js +10 -13
- package/dist/remote-meetings.js.map +1 -1
- package/dist/store-connection.d.ts +1 -7
- package/dist/store-connection.d.ts.map +1 -1
- package/dist/store-connection.js +95 -176
- package/dist/store-connection.js.map +1 -1
- package/dist/streaming.js +3 -3
- package/dist/streaming.js.map +1 -1
- package/dist/tokens.d.ts.map +1 -1
- package/dist/tokens.js +10 -9
- package/dist/tokens.js.map +1 -1
- package/dist/unified-search.d.ts +1 -0
- package/dist/unified-search.d.ts.map +1 -1
- package/dist/unified-search.js +18 -3
- package/dist/unified-search.js.map +1 -1
- package/dist/upcoming-meetings.d.ts +10 -0
- package/dist/upcoming-meetings.d.ts.map +1 -0
- package/dist/upcoming-meetings.js +24 -0
- package/dist/upcoming-meetings.js.map +1 -0
- package/dist/watch-commands.d.ts +2 -1
- package/dist/watch-commands.d.ts.map +1 -1
- package/dist/watch-commands.js +9 -9
- package/dist/watch-commands.js.map +1 -1
- package/package.json +5 -4
- package/skills/zoom-cli/SKILL.md +32 -12
- package/dist/ordinary-file.d.ts +0 -3
- package/dist/ordinary-file.d.ts.map +0 -1
- package/dist/ordinary-file.js +0 -16
- package/dist/ordinary-file.js.map +0 -1
- package/dist/wav-audio.d.ts +0 -2
- package/dist/wav-audio.d.ts.map +0 -1
- package/dist/wav-audio.js +0 -2
- package/dist/wav-audio.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upcoming-meetings.js","sourceRoot":"","sources":["../src/upcoming-meetings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAA;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAsB,UAAU,EAAE,MAAM,kBAAkB,CAAA;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAOxD,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAC7C,OAAe,EACf,WAAoC,EACpC,OAAqB,EACrB,OAAO,GAAkB,EAAE,EAC3B,EAAE;IACF,IAAI,OAAO,WAAW,EAAE,UAAU,KAAK,UAAU;QAC/C,MAAM,IAAI,QAAQ,CAAC,qBAAqB,EAAE,sCAAsC,CAAC,CAAA;IACnF,MAAM,iBAAiB,GAAG,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAClE,MAAM,aAAa,GAAG,EAAE,GAAG,OAAO,EAAE,CAAA;IACpC,OAAO,2BAA2B,CAChC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAC7B;QACE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE;YAC1B,MAAM,IAAI,GAAG,eAAe,CAAC,EAAE,CAAC,CAAA;YAChC,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;YAC9C,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,aAAa,CAAC,CAAA;YACzF,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,sBAAsB,EAAE;gBAC/D,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,gBAAgB,EAAE,OAAO,CAAC,YAAY;aACvC,CAAC,CAAA;YACF,OAAO,sBAAsB,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;QACzD,CAAC;KACF,CACF,CAAA;AACH,CAAC,CAAA"}
|
package/dist/watch-commands.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type Body } from "@wirecat/cli-core/cli";
|
|
1
2
|
import { type RunReport, type WatchSleep } from "@wirecat/cli-core/meetings";
|
|
2
3
|
import { type Command } from "commander";
|
|
3
4
|
export type WatchTarget = "api" | "files";
|
|
@@ -17,7 +18,7 @@ export interface WatchCommandDeps {
|
|
|
17
18
|
signal: () => AbortSignal;
|
|
18
19
|
prepare: (target: WatchTarget | undefined, folder: string | undefined, flags: WatchFlags) => WatchPlan;
|
|
19
20
|
ingest: (plan: WatchPlan, signal: AbortSignal) => Promise<RunReport>;
|
|
20
|
-
receipt: (
|
|
21
|
+
receipt: (body: Body) => Promise<void>;
|
|
21
22
|
sleep?: WatchSleep;
|
|
22
23
|
outputIsTTY?: boolean;
|
|
23
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch-commands.d.ts","sourceRoot":"","sources":["../src/watch-commands.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"watch-commands.d.ts","sourceRoot":"","sources":["../src/watch-commands.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,IAAI,EAAuB,MAAM,uBAAuB,CAAA;AACtE,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EAAyB,MAAM,4BAA4B,CAAA;AACnG,OAAO,EAAY,KAAK,OAAO,EAAE,MAAM,WAAW,CAAA;AAGlD,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,OAAO,CAAA;AACzC,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;CACjB;AACD,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,KAAK,GAAG,OAAO,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;CACnB;AACD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,WAAW,CAAA;IACzB,OAAO,EAAE,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,UAAU,KAAK,SAAS,CAAA;IACtG,MAAM,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,SAAS,CAAC,CAAA;IACpE,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACtC,KAAK,CAAC,EAAE,UAAU,CAAA;IAClB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAkBD,eAAO,MAAM,eAAe,YAAa,OAAO,QAAQ,gBAAgB,KAAG,IA4B1E,CAAA"}
|
package/dist/watch-commands.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
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 { watchMeetingIngestion } from "@wirecat/cli-core/meetings";
|
|
3
5
|
import { Argument } from "commander";
|
|
4
|
-
import { ZoomError } from "./errors.js";
|
|
5
6
|
import { duration } from "./execution.js";
|
|
6
7
|
const days = (value) => {
|
|
7
8
|
if (!/^\d+$/.test(value) || Number(value) > 31)
|
|
8
|
-
throw new
|
|
9
|
+
throw new CliError("validation_error", "lookback days must be an integer from 0 through 31");
|
|
9
10
|
return Number(value);
|
|
10
11
|
};
|
|
11
12
|
const since = (value) => {
|
|
@@ -15,7 +16,7 @@ const since = (value) => {
|
|
|
15
16
|
!Number.isFinite(Date.parse(value)) ||
|
|
16
17
|
!Number.isFinite(dayTime) ||
|
|
17
18
|
new Date(dayTime).toISOString().slice(0, 10) !== day)
|
|
18
|
-
throw new
|
|
19
|
+
throw new CliError("validation_error", "--since-time must be a real ISO 8601 time with a time zone");
|
|
19
20
|
return value;
|
|
20
21
|
};
|
|
21
22
|
export const addWatchCommand = (program, deps) => {
|
|
@@ -29,23 +30,22 @@ export const addWatchCommand = (program, deps) => {
|
|
|
29
30
|
.option("--interval <duration>", "delay after each completed receipt (1s through 24h)", duration, 10000)
|
|
30
31
|
.action(async (target, folder, options) => {
|
|
31
32
|
if (!program.opts().jsonl && !deps.outputIsTTY)
|
|
32
|
-
throw new
|
|
33
|
+
throw new CliError("validation_error", "headless watch requires --jsonl");
|
|
33
34
|
if (program.opts().json)
|
|
34
|
-
throw new
|
|
35
|
+
throw new CliError("validation_error", "watch streams receipts; use --jsonl");
|
|
35
36
|
if (options.interval < 1000 || options.interval > 86400000)
|
|
36
|
-
throw new
|
|
37
|
+
throw new CliError("validation_error", "watch interval must be from 1s through 24h");
|
|
37
38
|
const plan = deps.prepare(target, folder, options);
|
|
38
39
|
for await (const report of watchMeetingIngestion((signal) => deps.ingest(plan, signal), {
|
|
39
40
|
signal: deps.signal(),
|
|
40
41
|
intervalMs: plan.intervalMs,
|
|
41
42
|
sleep: deps.sleep,
|
|
42
43
|
}))
|
|
43
|
-
await deps.receipt(report);
|
|
44
|
+
await deps.receipt(itemOf(report));
|
|
44
45
|
});
|
|
45
46
|
annotate(command, {
|
|
46
47
|
origin: "handwritten",
|
|
47
|
-
|
|
48
|
-
local: true,
|
|
48
|
+
effects: LOCAL_WRITE,
|
|
49
49
|
examples: ["zm watch files ./downloads --interval 10s --jsonl", "zm watch api --lookback-days 2 --jsonl"],
|
|
50
50
|
});
|
|
51
51
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch-commands.js","sourceRoot":"","sources":["../src/watch-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"watch-commands.js","sourceRoot":"","sources":["../src/watch-commands.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wirecat/zoom-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.0",
|
|
4
4
|
"description": "Zoom cloud recording archives, persistent transcripts and meeting tools",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -46,15 +46,15 @@
|
|
|
46
46
|
"generate": "pnpm build && node scripts/commands.ts",
|
|
47
47
|
"generate:check": "pnpm build && node scripts/commands.ts --check",
|
|
48
48
|
"test:matrix": "pnpm test --maxWorkers 2 && pnpm build && pnpm test:matrix:check",
|
|
49
|
-
"lint:commands": "node node_modules/@wirecat/cli-base/dist/dev/bin.js lint --cli dist/bin/zm.js",
|
|
49
|
+
"lint:commands": "node node_modules/@wirecat/cli-base-dev/dist/dev/bin.js lint --cli dist/bin/zm.js",
|
|
50
50
|
"test:matrix:check": "node node_modules/@wirecat/cli-base/dist/dev/bin.js test-matrix --program scripts/command-program.ts --untested scripts/test-matrix-untested.ts --name zm --check",
|
|
51
51
|
"contracts:upgrade": "pnpm --dir contracts/previous install --frozen-lockfile --ignore-scripts && cli-contract contracts/upgrade.json",
|
|
52
52
|
"security:no-leak": "cli-testing security no-leak . contracts/no-leak.json"
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
55
|
"@modelcontextprotocol/sdk": "1.32.1",
|
|
56
|
-
"@wirecat/cli-base": "0.
|
|
57
|
-
"@wirecat/cli-core": "0.
|
|
56
|
+
"@wirecat/cli-base": "0.28.2",
|
|
57
|
+
"@wirecat/cli-core": "0.280.0",
|
|
58
58
|
"commander": "15.0.0",
|
|
59
59
|
"valibot": "1.5.0"
|
|
60
60
|
},
|
|
@@ -65,6 +65,7 @@
|
|
|
65
65
|
"@cspell/dict-ru_ru": "2.3.3",
|
|
66
66
|
"@types/node": "^22.20.5",
|
|
67
67
|
"@vitest/coverage-v8": "^5.0.3",
|
|
68
|
+
"@wirecat/cli-base-dev": "npm:@wirecat/cli-base@0.30.0",
|
|
68
69
|
"@wirecat/cli-testing": "0.4.0",
|
|
69
70
|
"cspell": "10.3.6",
|
|
70
71
|
"lefthook": "2.1.16",
|
package/skills/zoom-cli/SKILL.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: zoom-cli
|
|
3
3
|
description: Archive Zoom cloud recordings, read stored meeting transcripts and summaries, or manage a Zoom meeting through zm. Use for Zoom CLI workflows, not joining calls or operating the desktop video client.
|
|
4
4
|
metadata:
|
|
5
|
-
version: "0.
|
|
5
|
+
version: "0.14.0"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Zoom CLI
|
|
@@ -11,8 +11,11 @@ Use `zm commands <resource> --json` and `zm <resource> --help` for the installed
|
|
|
11
11
|
Use JSON for finite reads and JSONL for foreground watches or batch synchronization. Keep diagnostics
|
|
12
12
|
on stderr. Successful replies use `{item,meta}` or `{items,page,meta}` with snake_case keys.
|
|
13
13
|
Detailed reports (participants, evidence, semantic/unified search) live in `item`. Preserve
|
|
14
|
-
`meta.run_id`, `meta.duration_ms`, report coverage and continuation.
|
|
15
|
-
|
|
14
|
+
`meta.run_id`, `meta.duration_ms`, `meta.complete`, report coverage and continuation. JSON lists
|
|
15
|
+
use `page.mode` and optional `page.next_cursor`. JSONL emits typed item records with `data`,
|
|
16
|
+
then an end record with page/completeness. For reports, read the report inside the item record’s
|
|
17
|
+
`data`. Discovery uses contract 3 with separate local/remote effects.
|
|
18
|
+
Use `--json=id,title` to keep only those fields. `zm doctor --json` checks local setup without login.
|
|
16
19
|
|
|
17
20
|
## Recording archives
|
|
18
21
|
|
|
@@ -29,12 +32,12 @@ unavailable assets. A failed transfer can leave earlier completed files; retry s
|
|
|
29
32
|
file again. Existing files are never overwritten. Do not infer HTTP byte-range resume.
|
|
30
33
|
|
|
31
34
|
Read cues with `recordings archive transcript <directory>` or search their text with
|
|
32
|
-
`search
|
|
35
|
+
`search recordings <directory> <query> --limit 100`. Both work offline without configuration,
|
|
33
36
|
login or a database and verify each WebVTT file they read before returning results. Search can stop
|
|
34
|
-
before reading later files once it proves another match beyond the limit.
|
|
35
|
-
comma-separated `--file-ids`; `--max-bytes` defaults to 8 MiB per file. Search is
|
|
36
|
-
and case-insensitive, with a maximum of 1000 matches
|
|
37
|
-
|
|
37
|
+
before reading later files once it proves another match beyond the limit. `recordings archive transcript`
|
|
38
|
+
selects with `--uuid` or comma-separated `--file-ids`; `--max-bytes` defaults to 8 MiB per file. Search is
|
|
39
|
+
literal, normalized and case-insensitive, with a maximum of 1000 matches, and answers `search all`'s hits.
|
|
40
|
+
When `page.has_more` is true, increase the limit or narrow the query;
|
|
38
41
|
there is no continuation cursor. These reads do not import archive assets into the database.
|
|
39
42
|
|
|
40
43
|
Use `recordings archive import <directory> --offline --jsonl` to append verified VTT assets to the
|
|
@@ -77,7 +80,8 @@ The selected overlap also subtracts from the initial bound.
|
|
|
77
80
|
|
|
78
81
|
`zm serve --mcp` provides eight read-only stored meeting tools. Discovery opens no database; reads
|
|
79
82
|
use the selected account. MCP uses its own framing, so omit JSON/JSONL/field-selection flags. `--meeting-context` adds four
|
|
80
|
-
read-only context tools; `--
|
|
83
|
+
read-only context tools; `--meeting-preparation` adds the remote schedule plus cited-context
|
|
84
|
+
`meeting_prepare` tool; `--unified-search` adds one meetings-only shared search tool;
|
|
81
85
|
`--semantic --model <model>` lets `search_meetings` rank existing vectors with `by_meaning`. Remote model selection also requires
|
|
82
86
|
`--base-url` and `--dims`. The server fixes the model at startup and the profile on its first read.
|
|
83
87
|
Clients cannot select another model or account. Generation and task creation are not MCP tools.
|
|
@@ -109,8 +113,8 @@ is read-only: `applied: false` and `persistence: "proposal-only"` do not mean a
|
|
|
109
113
|
is explicit. Messages use the selected local account, mail includes stored email accounts, and
|
|
110
114
|
notes are store-global. Meetings use word prefixes; unsupported syntax or exact queries
|
|
111
115
|
are reported as skipped. Resume meetings-only results using the returned `item.meetings.next_cursor` as
|
|
112
|
-
`--meeting-cursor '<json>'`, bound to account and query. JSONL retains the entire report, including
|
|
113
|
-
|
|
116
|
+
`--meeting-cursor '<json>'`, bound to account and query. JSONL retains the entire report inside one item record, including coverage, skips and cursors,
|
|
117
|
+
followed by an end record. Skipped sources add issues and set completeness false; search exits zero.
|
|
114
118
|
|
|
115
119
|
## Explicit vector work
|
|
116
120
|
|
|
@@ -162,7 +166,7 @@ MCP `meeting_project_evidence` has the same registered packet and strict account
|
|
|
162
166
|
Use `meetings people <name-or-email>` before selecting `--identity-id`. Reads inspect bounded
|
|
163
167
|
observations in the selected account; use `--limit`, `--scan-limit`, `--max-read-bytes` and `--cursor`.
|
|
164
168
|
Results expose `identity_id` with page-local ambiguity, not a proven person association. Follow
|
|
165
|
-
the report's `item.next` / `item.page.
|
|
169
|
+
the report's `item.next` / `item.page.next_cursor` even when `item.items` is empty. JSONL retains the report and coverage inside its item record.
|
|
166
170
|
MCP `meeting_people` takes the equivalent snake_case arguments and cannot change accounts.
|
|
167
171
|
|
|
168
172
|
`meetings list [query...]` filters metadata, for example `started_at:[2026-09-01 TO 2026-10-01]`.
|
|
@@ -172,3 +176,19 @@ List-only `--since-time` and `--until-time` have become query fields; transcript
|
|
|
172
176
|
## Bounded context-filtered search
|
|
173
177
|
|
|
174
178
|
Use `search meetings <query>` with `--since-time`/`--until-time` and optionally `--identity-id`, `--person-id`, `--event-id`, `--series-id`, `--project`, `--tag` or `--topic`. It indexes newly stored meetings before reading; there is no separate index step. Identity IDs come from observed participant results; person IDs follow explicit identity links. Filters select meetings, never attribute cue speech. Project names, keys and aliases resolve existing vocabulary and require confirmed membership; labels require explicit meeting taggings. Do not silently infer membership from matching words or merge similar participant names. Missing or ambiguous names fail. Inspect pending indexing and unknown archive coverage even for empty pages. `search_meetings` exposes the same selected-account MCP read.
|
|
179
|
+
|
|
180
|
+
## Prepare one upcoming series
|
|
181
|
+
|
|
182
|
+
Use `meetings prepare <series-id> --json` with the exact provider series ID from remote meeting
|
|
183
|
+
listing, rather than an internal stored meeting ID. This reads Zoom's schedule and stored history,
|
|
184
|
+
requiring `meeting:read:meeting`; it does not start login, change scopes or import missing text.
|
|
185
|
+
Default windows look seven days ahead and thirty days back. Use ISO `--since-time`, `--before-time` and
|
|
186
|
+
`--history-since-time` for a fixed window; keep the returned absolute windows when replaying.
|
|
187
|
+
|
|
188
|
+
Preserve candidate/verified-next distinction and all meeting/cue references, fingerprints, stored
|
|
189
|
+
person links, confirmed project links, accepted facts and directly sourced tasks. Past attendees do
|
|
190
|
+
not establish future attendance. Coverage states live reads and unknown archive completeness, plus
|
|
191
|
+
unqueried person-history, project-wide context and project-alias candidates. Stored fact evidence
|
|
192
|
+
is not revalidated. Inspect skipped-source metadata and truncation before relying on the brief.
|
|
193
|
+
This command does not summarize, accept findings or create tasks. Use existing Memo workflows for
|
|
194
|
+
reviewed writes, retaining meeting evidence and preconditions.
|
package/dist/ordinary-file.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ordinary-file.d.ts","sourceRoot":"","sources":["../src/ordinary-file.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,gBAAgB,SAAU,MAAM,8CAA2C,CAAA;AACxF,eAAO,MAAM,aAAa,SAAU,MAAM,kBAA2C,CAAA"}
|
package/dist/ordinary-file.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { isCliError } from "@wirecat/cli-base";
|
|
2
|
-
import { openOrdinaryFile as sharedOpen, syncDirectory as sharedSync } from "@wirecat/cli-core/files";
|
|
3
|
-
import { ZoomError } from "./errors.js";
|
|
4
|
-
const withZoomErrors = async (operation) => {
|
|
5
|
-
try {
|
|
6
|
-
return await operation();
|
|
7
|
-
}
|
|
8
|
-
catch (error) {
|
|
9
|
-
if (isCliError(error))
|
|
10
|
-
throw new ZoomError(error.code, error.message);
|
|
11
|
-
throw error;
|
|
12
|
-
}
|
|
13
|
-
};
|
|
14
|
-
export const openOrdinaryFile = (path) => withZoomErrors(() => sharedOpen(path));
|
|
15
|
-
export const syncDirectory = (path) => withZoomErrors(() => sharedSync(path));
|
|
16
|
-
//# sourceMappingURL=ordinary-file.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ordinary-file.js","sourceRoot":"","sources":["../src/ordinary-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,gBAAgB,IAAI,UAAU,EAAE,aAAa,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACrG,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,MAAM,cAAc,GAAG,KAAK,EAAK,SAA2B,EAAc,EAAE;IAC1E,IAAI,CAAC;QACH,OAAO,MAAM,SAAS,EAAE,CAAA;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,UAAU,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;QACrE,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;AACxF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA"}
|
package/dist/wav-audio.d.ts
DELETED
package/dist/wav-audio.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wav-audio.d.ts","sourceRoot":"","sources":["../src/wav-audio.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,YAAY,GAClB,MAAM,8BAA8B,CAAA"}
|
package/dist/wav-audio.js
DELETED
package/dist/wav-audio.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wav-audio.js","sourceRoot":"","sources":["../src/wav-audio.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,iBAAiB,GAKlB,MAAM,8BAA8B,CAAA"}
|