@wirecat/zoom-cli 0.21.2 → 0.22.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/dist/api.d.ts +1 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +18 -7
- package/dist/api.js.map +1 -1
- package/dist/bin/main.d.ts +2 -0
- package/dist/bin/main.d.ts.map +1 -0
- package/dist/bin/main.js +138 -0
- package/dist/bin/main.js.map +1 -0
- package/dist/bin/zm.js +4 -126
- package/dist/bin/zm.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +12 -4
- package/dist/config.js.map +1 -1
- package/dist/meeting-preparation-mcp.d.ts +2 -1
- package/dist/meeting-preparation-mcp.d.ts.map +1 -1
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +17 -1
- package/dist/program.js.map +1 -1
- package/dist/recording-archive.d.ts.map +1 -1
- package/dist/recording-archive.js +15 -22
- package/dist/recording-archive.js.map +1 -1
- package/dist/recording-promotion-store.d.ts +3 -2
- package/dist/recording-promotion-store.d.ts.map +1 -1
- package/dist/recording-promotion-store.js +53 -82
- package/dist/recording-promotion-store.js.map +1 -1
- package/dist/run-log.d.ts +17 -0
- package/dist/run-log.d.ts.map +1 -0
- package/dist/run-log.js +50 -0
- package/dist/run-log.js.map +1 -0
- package/dist/tokens.d.ts +5 -1
- package/dist/tokens.d.ts.map +1 -1
- package/dist/tokens.js +33 -4
- package/dist/tokens.js.map +1 -1
- package/package.json +2 -2
- package/skills/zoom-cli/SKILL.md +5 -3
package/dist/run-log.js
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { join } from "node:path";
|
|
2
|
+
import { createRecordLog } from "@wirecat/cli-base";
|
|
3
|
+
import { startRun } from "@wirecat/cli-core/cli";
|
|
4
|
+
// Opens the run on its first event, so a command that logs nothing leaves no run directory behind.
|
|
5
|
+
// startRun's own logger allows only cli-core's keys, so zm's records go through createRecordLog with
|
|
6
|
+
// zm's allow-list, into the same events.jsonl.
|
|
7
|
+
export const lazyRunLog = (options) => {
|
|
8
|
+
let opened;
|
|
9
|
+
let failed = false;
|
|
10
|
+
const open = () => {
|
|
11
|
+
if (failed)
|
|
12
|
+
return undefined;
|
|
13
|
+
try {
|
|
14
|
+
if (!opened) {
|
|
15
|
+
const resource = { service: "zm", version: options.version };
|
|
16
|
+
const run = startRun({
|
|
17
|
+
runsDir: options.runsDir,
|
|
18
|
+
command: options.command,
|
|
19
|
+
profile: "",
|
|
20
|
+
service: resource.service,
|
|
21
|
+
cliVersion: options.version,
|
|
22
|
+
...(options.onError ? { onError: options.onError } : {}),
|
|
23
|
+
});
|
|
24
|
+
const log = createRecordLog({
|
|
25
|
+
to: join(run.dir, "events.jsonl"),
|
|
26
|
+
runId: run.id,
|
|
27
|
+
command: options.command,
|
|
28
|
+
resource,
|
|
29
|
+
allow: options.allow,
|
|
30
|
+
...(options.onError ? { onError: options.onError } : {}),
|
|
31
|
+
});
|
|
32
|
+
opened = { finish: (status) => run.finish(status), log };
|
|
33
|
+
}
|
|
34
|
+
return opened.log;
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
failed = true;
|
|
38
|
+
options.onError?.(error instanceof Error ? error : new Error("could not open the run log"));
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
const at = (level) => (event) => open()?.[level](event);
|
|
43
|
+
return {
|
|
44
|
+
log: { debug: at("debug"), info: at("info"), warn: at("warn"), error: at("error") },
|
|
45
|
+
finish: async (status) => {
|
|
46
|
+
await opened?.finish(status);
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=run-log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-log.js","sourceRoot":"","sources":["../src/run-log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,eAAe,EAAe,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAgBhD,mGAAmG;AACnG,qGAAqG;AACrG,+CAA+C;AAC/C,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAsB,EAAU,EAAE;IAC3D,IAAI,MAAiF,CAAA;IACrF,IAAI,MAAM,GAAG,KAAK,CAAA;IAClB,MAAM,IAAI,GAAG,GAAuB,EAAE;QACpC,IAAI,MAAM;YAAE,OAAO,SAAS,CAAA;QAC5B,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,QAAQ,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAA;gBAC5D,MAAM,GAAG,GAAG,QAAQ,CAAC;oBACnB,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,OAAO,EAAE,EAAE;oBACX,OAAO,EAAE,QAAQ,CAAC,OAAO;oBACzB,UAAU,EAAE,OAAO,CAAC,OAAO;oBAC3B,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACzD,CAAC,CAAA;gBACF,MAAM,GAAG,GAAG,eAAe,CAAC;oBAC1B,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,cAAc,CAAC;oBACjC,KAAK,EAAE,GAAG,CAAC,EAAE;oBACb,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,QAAQ;oBACR,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACzD,CAAC,CAAA;gBACF,MAAM,GAAG,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAA;YAC1D,CAAC;YACD,OAAO,MAAM,CAAC,GAAG,CAAA;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,IAAI,CAAA;YACb,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAA;YAC3F,OAAO,SAAS,CAAA;QAClB,CAAC;IACH,CAAC,CAAA;IACD,MAAM,EAAE,GACN,CAAC,KAAmB,EAAE,EAAE,CACxB,CAAC,KAAa,EAAQ,EAAE,CACtB,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAA;IAC1B,OAAO;QACL,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE;QACnF,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACvB,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;QAC9B,CAAC;KACF,CAAA;AACH,CAAC,CAAA"}
|
package/dist/tokens.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { KeyringStore } from "@wirecat/cli-base";
|
|
1
|
+
import type { KeyringStore, Logger } from "@wirecat/cli-base";
|
|
2
2
|
export interface Tokens {
|
|
3
3
|
accessToken: string;
|
|
4
4
|
refreshToken: string;
|
|
@@ -12,7 +12,11 @@ export interface TokenOptions {
|
|
|
12
12
|
fetch: typeof fetch;
|
|
13
13
|
now?: () => number;
|
|
14
14
|
signal?: AbortSignal;
|
|
15
|
+
log?: Logger;
|
|
15
16
|
}
|
|
17
|
+
/** Keys a token record carries beyond cli-base's own; names only, nothing from the token itself. */
|
|
18
|
+
export declare const TOKEN_LOG_ALLOW: readonly ["rotated", "saved", "pid"];
|
|
19
|
+
export declare const TOKEN_LOG_EVENT = "zoom.token.exchange";
|
|
16
20
|
export declare class TokenManager {
|
|
17
21
|
readonly options: TokenOptions;
|
|
18
22
|
private refreshState;
|
package/dist/tokens.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAI7D,MAAM,WAAW,MAAM;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AACD,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,YAAY,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,OAAO,KAAK,CAAA;IACnB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AACD,oGAAoG;AACpG,eAAO,MAAM,eAAe,YAAI,SAAS,EAAE,OAAO,EAAE,KAAK,CAAU,CAAA;AACnE,eAAO,MAAM,eAAe,wBAAwB,CAAA;AAKpD,qBAAa,YAAY;IAEX,QAAQ,CAAC,OAAO,EAAE,YAAY;IAD1C,OAAO,CAAC,YAAY,CAAqC;IACzD,YAAqB,OAAO,EAAE,YAAY,EAAI;IAC9C,UAAU,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,OAAO,GAAE,OAAO,KAA0B,GAAG,YAAY,CAiBzF;IACD,IAAI,CAAC,QAAQ,SAAwB,GAAG,MAAM,GAAG,IAAI,CA8BpD;IACD,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,SAAwB,GAAG,IAAI,CAM3D;IACK,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,SAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgFnH;IACK,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAoB9B;CACF"}
|
package/dist/tokens.js
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
|
-
import { CliError } from "@wirecat/cli-base";
|
|
1
|
+
import { CliError, isCliError } from "@wirecat/cli-base";
|
|
2
2
|
import { checkCancelled, object } from "./errors.js";
|
|
3
|
+
/** Keys a token record carries beyond cli-base's own; names only, nothing from the token itself. */
|
|
4
|
+
export const TOKEN_LOG_ALLOW = ["rotated", "saved", "pid"];
|
|
5
|
+
export const TOKEN_LOG_EVENT = "zoom.token.exchange";
|
|
6
|
+
// The command deadline aborts with a "timeout" CliError and Ctrl-C with "cancelled"; without a
|
|
7
|
+
// parent abort, only the request's own 30 s limit can have fired.
|
|
8
|
+
const abortReason = (parent) => !parent?.aborted ? "timeout" : isCliError(parent.reason) ? parent.reason.code : "cancelled";
|
|
3
9
|
export class TokenManager {
|
|
4
10
|
options;
|
|
5
11
|
refreshState = new Map();
|
|
@@ -18,6 +24,7 @@ export class TokenManager {
|
|
|
18
24
|
service: parent.service,
|
|
19
25
|
fetch: fetcher,
|
|
20
26
|
now: parent.now,
|
|
27
|
+
log: parent.log,
|
|
21
28
|
signal: signal && parent.signal ? AbortSignal.any([signal, parent.signal]) : (signal ?? parent.signal),
|
|
22
29
|
});
|
|
23
30
|
scoped.refreshState = this.refreshState;
|
|
@@ -68,6 +75,14 @@ export class TokenManager {
|
|
|
68
75
|
const signal = this.options.signal
|
|
69
76
|
? AbortSignal.any([this.options.signal, AbortSignal.timeout(30000)])
|
|
70
77
|
: AbortSignal.timeout(30000);
|
|
78
|
+
const parent = this.options.signal;
|
|
79
|
+
const record = (level, fields) => this.options.log?.[level]({
|
|
80
|
+
event: TOKEN_LOG_EVENT,
|
|
81
|
+
operation: params.grant_type ?? "unknown",
|
|
82
|
+
pid: process.pid,
|
|
83
|
+
...(signal.aborted ? { reason: abortReason(parent) } : {}),
|
|
84
|
+
...fields,
|
|
85
|
+
});
|
|
71
86
|
let response;
|
|
72
87
|
try {
|
|
73
88
|
response = await this.options.fetch("https://zoom.us/oauth/token", {
|
|
@@ -79,15 +94,19 @@ export class TokenManager {
|
|
|
79
94
|
});
|
|
80
95
|
}
|
|
81
96
|
catch {
|
|
97
|
+
record("warn", { outcome: "no_response" });
|
|
82
98
|
throw new CliError("outcome_unknown", "Zoom token exchange did not finish; run zm session start again before retrying");
|
|
83
99
|
}
|
|
84
|
-
if (!response.ok)
|
|
100
|
+
if (!response.ok) {
|
|
101
|
+
record("warn", { outcome: "rejected", status: response.status });
|
|
85
102
|
throw new CliError("authentication_error", `Zoom token request failed (HTTP ${response.status}); run zm session start again`);
|
|
103
|
+
}
|
|
86
104
|
let body;
|
|
87
105
|
try {
|
|
88
106
|
body = object(await response.json());
|
|
89
107
|
}
|
|
90
108
|
catch {
|
|
109
|
+
record("error", { outcome: "unreadable_response", status: response.status });
|
|
91
110
|
throw new CliError("outcome_unknown", "Zoom returned an invalid token response; run zm session start again before retrying");
|
|
92
111
|
}
|
|
93
112
|
const refreshToken = typeof body.refresh_token === "string" ? body.refresh_token : previous?.refreshToken;
|
|
@@ -99,15 +118,25 @@ export class TokenManager {
|
|
|
99
118
|
body.expires_in <= 0 ||
|
|
100
119
|
!Number.isFinite((this.options.now?.() ?? Date.now()) + body.expires_in * 1000) ||
|
|
101
120
|
(body.scope !== undefined && typeof body.scope !== "string") ||
|
|
102
|
-
(body.refresh_token !== undefined && typeof body.refresh_token !== "string"))
|
|
121
|
+
(body.refresh_token !== undefined && typeof body.refresh_token !== "string")) {
|
|
122
|
+
record("error", { outcome: "invalid_response", status: response.status });
|
|
103
123
|
throw new CliError("outcome_unknown", "Zoom returned an invalid token response; run zm session start again before retrying");
|
|
124
|
+
}
|
|
125
|
+
const rotated = previous ? { rotated: refreshToken !== previous.refreshToken } : {};
|
|
104
126
|
const tokens = {
|
|
105
127
|
accessToken: body.access_token,
|
|
106
128
|
refreshToken,
|
|
107
129
|
expiresAt: (this.options.now?.() ?? Date.now()) + body.expires_in * 1000,
|
|
108
130
|
scopes: typeof body.scope === "string" ? body.scope.split(/\s+/).filter(Boolean) : (previous?.scopes ?? []),
|
|
109
131
|
};
|
|
110
|
-
|
|
132
|
+
try {
|
|
133
|
+
this.save(tokens, clientId);
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
record("error", { outcome: "save_failed", status: response.status, ...rotated, saved: false });
|
|
137
|
+
throw error;
|
|
138
|
+
}
|
|
139
|
+
record("info", { outcome: "saved", status: response.status, ...rotated, saved: true });
|
|
111
140
|
return tokens;
|
|
112
141
|
}
|
|
113
142
|
async tokens() {
|
package/dist/tokens.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.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.22.0",
|
|
4
4
|
"description": "Zoom cloud recording archives, persistent transcripts and meeting tools",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"dependencies": {
|
|
55
55
|
"@modelcontextprotocol/sdk": "1.32.1",
|
|
56
56
|
"@wirecat/cli-base": "0.40.0",
|
|
57
|
-
"@wirecat/cli-core": "0.
|
|
57
|
+
"@wirecat/cli-core": "0.306.0",
|
|
58
58
|
"commander": "15.0.0",
|
|
59
59
|
"valibot": "1.5.0"
|
|
60
60
|
},
|
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.22.0"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Zoom CLI
|
|
@@ -150,8 +150,10 @@ refs and association flags; inspect `knowledge.coverage.has_more` and `knowledge
|
|
|
150
150
|
yield bytes to meeting evidence and their source evidence is not revalidated. Coverage keeps
|
|
151
151
|
imported documents, mail, messages and project-alias candidates
|
|
152
152
|
unqueried; without usable anchors, related history is unqueried too. Archive completeness stays
|
|
153
|
-
unknown. `notes.items` contains bounded owner notes and annotations
|
|
154
|
-
|
|
153
|
+
unknown. `notes.items` contains bounded owner notes and annotations about included earlier calls
|
|
154
|
+
and through explicit person/project associations. Retain note refs, meeting/person/project refs,
|
|
155
|
+
revision and update time. Meeting-scoped notes require an included same-account anchor; a shared
|
|
156
|
+
project alone cannot include another meeting's notes. These comments are separate from accepted
|
|
155
157
|
facts. Inspect `notes.coverage` for lookahead, truncation and sources that were not rechecked. Imported/file
|
|
156
158
|
notes are outside that selection. Stored fact evidence is not revalidated. Inspect skipped sources and truncation.
|
|
157
159
|
This command does not summarize, accept findings or create tasks. Use existing Memo workflows for
|