@wirecat/zoom-cli 0.40.0 → 0.41.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/agent-skill.d.ts.map +1 -1
- package/dist/agent-skill.js +3 -1
- package/dist/agent-skill.js.map +1 -1
- package/dist/answer-entities.d.ts +740 -0
- package/dist/answer-entities.d.ts.map +1 -0
- package/dist/answer-entities.js +202 -0
- package/dist/answer-entities.js.map +1 -0
- package/dist/answer-output.d.ts +0 -1
- package/dist/answer-output.d.ts.map +1 -1
- package/dist/answer-output.js +2 -2
- package/dist/answer-output.js.map +1 -1
- package/dist/answer-policy.d.ts +0 -4
- package/dist/answer-policy.d.ts.map +1 -1
- package/dist/answer-policy.js +0 -16
- package/dist/answer-policy.js.map +1 -1
- package/dist/archive-commands.d.ts.map +1 -1
- package/dist/archive-commands.js +10 -7
- package/dist/archive-commands.js.map +1 -1
- package/dist/commands.d.ts +0 -2
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +6 -52
- package/dist/commands.js.map +1 -1
- package/dist/execution.d.ts +5 -10
- package/dist/execution.d.ts.map +1 -1
- package/dist/execution.js +11 -27
- package/dist/execution.js.map +1 -1
- package/dist/first-screen.d.ts +8 -0
- package/dist/first-screen.d.ts.map +1 -1
- package/dist/first-screen.js +18 -18
- package/dist/first-screen.js.map +1 -1
- package/dist/json-fields.d.ts +1 -6
- package/dist/json-fields.d.ts.map +1 -1
- package/dist/json-fields.js +2 -22
- package/dist/json-fields.js.map +1 -1
- package/dist/local-transcription-commands.d.ts.map +1 -1
- package/dist/local-transcription-commands.js +1 -1
- package/dist/local-transcription-commands.js.map +1 -1
- package/dist/mcp-command.d.ts +2 -1
- package/dist/mcp-command.d.ts.map +1 -1
- package/dist/mcp-command.js +12 -2
- package/dist/mcp-command.js.map +1 -1
- package/dist/mcp.d.ts +3 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +12 -11
- package/dist/mcp.js.map +1 -1
- package/dist/models-commands.d.ts.map +1 -1
- package/dist/models-commands.js +7 -36
- package/dist/models-commands.js.map +1 -1
- package/dist/permissions.d.ts +1 -0
- package/dist/permissions.d.ts.map +1 -1
- package/dist/permissions.js +12 -8
- package/dist/permissions.js.map +1 -1
- package/dist/profile-word.d.ts +0 -15
- package/dist/profile-word.d.ts.map +1 -1
- package/dist/profile-word.js +0 -48
- package/dist/profile-word.js.map +1 -1
- package/dist/program-bindings.d.ts +5 -0
- package/dist/program-bindings.d.ts.map +1 -0
- package/dist/program-bindings.js +424 -0
- package/dist/program-bindings.js.map +1 -0
- package/dist/program.d.ts +8 -5
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +17 -417
- package/dist/program.js.map +1 -1
- package/dist/progress-commands.d.ts +9 -0
- package/dist/progress-commands.d.ts.map +1 -0
- package/dist/progress-commands.js +49 -0
- package/dist/progress-commands.js.map +1 -0
- package/dist/read-only.d.ts.map +1 -1
- package/dist/read-only.js +6 -17
- package/dist/read-only.js.map +1 -1
- package/dist/recording-schedule-commands.d.ts.map +1 -1
- package/dist/recording-schedule-commands.js +8 -8
- package/dist/recording-schedule-commands.js.map +1 -1
- package/dist/recording-sync-store.d.ts +2 -1
- package/dist/recording-sync-store.d.ts.map +1 -1
- package/dist/recording-sync-store.js +10 -0
- package/dist/recording-sync-store.js.map +1 -1
- package/dist/run.d.ts +8 -0
- package/dist/run.d.ts.map +1 -0
- package/dist/run.js +40 -0
- package/dist/run.js.map +1 -0
- package/dist/setup-commands.d.ts +0 -3
- package/dist/setup-commands.d.ts.map +1 -1
- package/dist/setup-commands.js +5 -11
- package/dist/setup-commands.js.map +1 -1
- package/dist/sync-progress.d.ts +11 -0
- package/dist/sync-progress.d.ts.map +1 -0
- package/dist/sync-progress.js +31 -0
- package/dist/sync-progress.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/watch-commands.d.ts.map +1 -1
- package/dist/watch-commands.js +1 -1
- package/dist/watch-commands.js.map +1 -1
- package/package.json +2 -2
- package/skills/zoom-cli/SKILL.md +2 -2
package/dist/execution.js
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import { CliError,
|
|
1
|
+
import { CliError, createOutputBuffer } from "@wirecat/cli-base";
|
|
2
2
|
import { metaOf } from "@wirecat/cli-base/commands";
|
|
3
|
+
import { parseDuration } from "@wirecat/cli-core/cli";
|
|
3
4
|
import { readMetadata } from "./answers.js";
|
|
4
|
-
export const duration = (text) => {
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
if (!match || !Number.isSafeInteger(value) || value <= 0 || value > 2147483647)
|
|
9
|
-
throw new CliError("validation_error", "expected a positive duration such as 30s, 5m or 1h");
|
|
5
|
+
export const duration = (text, source = "duration") => {
|
|
6
|
+
const value = parseDuration(text, source);
|
|
7
|
+
if (!Number.isSafeInteger(value) || value > 2147483647)
|
|
8
|
+
throw new CliError("validation_error", "duration exceeds the supported timer range");
|
|
10
9
|
return value;
|
|
11
10
|
};
|
|
12
11
|
export const bytes = (text) => {
|
|
@@ -28,28 +27,13 @@ export const commandDeadline = (action) => {
|
|
|
28
27
|
return 300000;
|
|
29
28
|
return longRunning.has(action) ? 3600000 : 30000;
|
|
30
29
|
};
|
|
31
|
-
export const
|
|
32
|
-
const
|
|
30
|
+
export const sharedExecution = (action, environment, now) => {
|
|
31
|
+
const max = action.optsWithGlobals().maxOutputBytes;
|
|
33
32
|
return {
|
|
34
33
|
action,
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
signal: options.signal,
|
|
39
|
-
sleep: options.sleep,
|
|
40
|
-
}),
|
|
41
|
-
output: createOutputBuffer({ maxOutputBytes: flags.maxOutputBytes }),
|
|
34
|
+
signal: environment.signal,
|
|
35
|
+
meta: readMetadata(now),
|
|
36
|
+
output: createOutputBuffer({ maxOutputBytes: max === undefined ? undefined : Number(max) }),
|
|
42
37
|
};
|
|
43
38
|
};
|
|
44
|
-
export const resetCliOptions = (root) => {
|
|
45
|
-
for (const command of [root, ...root.commands]) {
|
|
46
|
-
for (const option of command.options) {
|
|
47
|
-
const name = option.attributeName();
|
|
48
|
-
if (command.getOptionValueSource(name) === "cli")
|
|
49
|
-
command.setOptionValueWithSource(name, option.defaultValue ?? (option.negate ? true : undefined), "default");
|
|
50
|
-
}
|
|
51
|
-
if (command !== root && command.commands.length)
|
|
52
|
-
resetCliOptions(command);
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
39
|
//# sourceMappingURL=execution.js.map
|
package/dist/execution.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../src/execution.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../src/execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAqB,MAAM,mBAAmB,CAAA;AACnF,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAEnD,OAAO,EAAwB,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAE3E,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE3C,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,MAAM,GAAG,UAAU,EAAU,EAAE;IACpE,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACzC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,UAAU;QACpD,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,4CAA4C,CAAC,CAAA;IACtF,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AACD,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,IAAY,EAAU,EAAE;IAC5C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,yCAAyC,CAAC,CAAA;IACnF,OAAO,MAAM,CAAC,IAAI,CAAC,CAAA;AACrB,CAAC,CAAA;AACD,MAAM,WAAW,GAAG,IAAI,OAAO,EAAW,CAAA;AAC1C,uHAAuH;AACvH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,OAAgB,EAAW,EAAE;IACpD,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACxB,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AACD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAe,EAAsB,EAAE;IACrE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;IACnC,IAAI,QAAQ,KAAK,YAAY;QAAE,OAAO,SAAS,CAAA;IAC/C,IAAI,QAAQ,KAAK,aAAa;QAAE,OAAO,MAAM,CAAA;IAC7C,OAAO,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAA;AAClD,CAAC,CAAA;AAQD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAe,EAAE,WAA4B,EAAE,GAAkB,EAAkB,EAAE;IACnH,MAAM,GAAG,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC,cAAc,CAAA;IACnD,OAAO;QACL,MAAM;QACN,MAAM,EAAE,WAAW,CAAC,MAAqB;QACzC,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC;QACvB,MAAM,EAAE,kBAAkB,CAAC,EAAE,cAAc,EAAE,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;KAC5F,CAAA;AACH,CAAC,CAAA"}
|
package/dist/first-screen.d.ts
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
import type { Command } from "commander";
|
|
2
2
|
/** After every other command: the first screen's pointers name only commands that exist. */
|
|
3
3
|
export declare const installFirstScreen: (program: Command) => void;
|
|
4
|
+
export declare const ZOOM_FIRST_SCREEN: {
|
|
5
|
+
pitch: string;
|
|
6
|
+
can: {
|
|
7
|
+
command: string;
|
|
8
|
+
does: string;
|
|
9
|
+
}[];
|
|
10
|
+
start: string;
|
|
11
|
+
};
|
|
4
12
|
//# sourceMappingURL=first-screen.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"first-screen.d.ts","sourceRoot":"","sources":["../src/first-screen.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA4BxC,4FAA4F;AAC5F,eAAO,MAAM,kBAAkB,YAAa,OAAO,KAAG,
|
|
1
|
+
{"version":3,"file":"first-screen.d.ts","sourceRoot":"","sources":["../src/first-screen.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA4BxC,4FAA4F;AAC5F,eAAO,MAAM,kBAAkB,YAAa,OAAO,KAAG,IASrD,CAAA;AAED,eAAO,MAAM,iBAAiB;;;;;;;CAiB7B,CAAA"}
|
package/dist/first-screen.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { fileURLToPath } from "node:url";
|
|
2
|
-
import { guideCommand, inSection,
|
|
2
|
+
import { guideCommand, inSection, MEMO_SCENARIOS } from "@wirecat/cli-core/cli";
|
|
3
3
|
import { ZM } from "./read-only.js";
|
|
4
4
|
// cli-core places its own groups (meetings, search, watch, serve, config, skill…); these are zm's.
|
|
5
5
|
const SECTIONS = [
|
|
@@ -36,22 +36,22 @@ export const installFirstScreen = (program) => {
|
|
|
36
36
|
});
|
|
37
37
|
// addCommand, unlike command(), leaves out the exit override: `guide --help` called process.exit itself.
|
|
38
38
|
program.addCommand(guide.copyInheritedSettings(program));
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
39
|
+
};
|
|
40
|
+
export const ZOOM_FIRST_SCREEN = {
|
|
41
|
+
pitch: "your Zoom meetings for agents: transcripts and summaries in a local store, every answer pointing at its line.",
|
|
42
|
+
can: [
|
|
43
|
+
{ command: "meetings sync", does: "meetings, transcripts and summaries into the store" },
|
|
44
|
+
{ command: 'search meetings "quote"', does: "words across every transcript, with line refs" },
|
|
45
|
+
{ command: "meetings context <person>", does: "what past meetings say about one person" },
|
|
46
|
+
{ command: "meetings prepare <series-id>", does: "a briefing with sources before a meeting" },
|
|
47
|
+
{ command: "meetings transcribe <meeting> <file>", does: "a recording turned into text on this machine" },
|
|
48
|
+
{ command: "recordings schedule create …", does: "a daily, checked archive of cloud recordings" },
|
|
49
|
+
{ command: "mcp", does: "commands for an MCP agent, limited by the profile’s permissions" },
|
|
50
|
+
{
|
|
51
|
+
command: "ZM_READ_ONLY=1 zm …",
|
|
52
|
+
does: "blocks changes to Zoom, login, settings, files and the store; syncs run",
|
|
53
|
+
},
|
|
54
|
+
],
|
|
55
|
+
start: "zm personal session start",
|
|
56
56
|
};
|
|
57
57
|
//# sourceMappingURL=first-screen.js.map
|
package/dist/first-screen.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"first-screen.js","sourceRoot":"","sources":["../src/first-screen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,YAAY,EAAoB,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"first-screen.js","sourceRoot":"","sources":["../src/first-screen.ts"],"names":[],"mappings":"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"}
|
package/dist/json-fields.d.ts
CHANGED
|
@@ -1,7 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
/** `--json=a,b` or `--json a,b`, read the way tg and max read it: the arguments Commander parses, and the fields. */
|
|
3
|
-
export declare const liftJsonFields: (program: Command, [argv, settings]: Parameters<Command["parseAsync"]>) => {
|
|
4
|
-
args: Parameters<Command["parseAsync"]>;
|
|
5
|
-
fields: string[] | undefined;
|
|
6
|
-
};
|
|
1
|
+
export {};
|
|
7
2
|
//# sourceMappingURL=json-fields.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-fields.d.ts","sourceRoot":"","sources":["../src/json-fields.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"json-fields.d.ts","sourceRoot":"","sources":["../src/json-fields.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAA"}
|
package/dist/json-fields.js
CHANGED
|
@@ -1,23 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const commandIn = (root, words) => {
|
|
4
|
-
let at = root;
|
|
5
|
-
for (const word of words) {
|
|
6
|
-
if (word.startsWith("-"))
|
|
7
|
-
continue;
|
|
8
|
-
const child = at.commands.find((command) => command.name() === word || command.aliases().includes(word));
|
|
9
|
-
if (child)
|
|
10
|
-
at = child;
|
|
11
|
-
}
|
|
12
|
-
return at === root ? undefined : at;
|
|
13
|
-
};
|
|
14
|
-
/** `--json=a,b` or `--json a,b`, read the way tg and max read it: the arguments Commander parses, and the fields. */
|
|
15
|
-
export const liftJsonFields = (program, [argv = process.argv, settings]) => {
|
|
16
|
-
const user = settings?.from === "user";
|
|
17
|
-
const requested = liftJson(user ? [...argv] : argv.slice(2), (words) => commandIn(program, words));
|
|
18
|
-
return {
|
|
19
|
-
args: [user ? requested.argv : [...argv.slice(0, 2), ...requested.argv], settings],
|
|
20
|
-
fields: requested.fields === undefined ? undefined : fieldsOf(requested.fields),
|
|
21
|
-
};
|
|
22
|
-
};
|
|
1
|
+
// Retired: Core’s program runner owns JSON field parsing. File removal is deferred to cleanup.
|
|
2
|
+
export {};
|
|
23
3
|
//# sourceMappingURL=json-fields.js.map
|
package/dist/json-fields.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-fields.js","sourceRoot":"","sources":["../src/json-fields.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"json-fields.js","sourceRoot":"","sources":["../src/json-fields.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,OAAO,EAAE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-transcription-commands.d.ts","sourceRoot":"","sources":["../src/local-transcription-commands.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,IAAI,EAAuB,MAAM,uBAAuB,CAAA;AAEtE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAExC,OAAO,EAEL,KAAK,8BAA8B,EAGpC,MAAM,0BAA0B,CAAA;AAEjC,eAAO,MAAM,6BAA6B,YAC/B,OAAO,QACV;IACJ,YAAY,EAAE,MAAM,OAAO,CAAC,8BAA8B,CAAC,CAAA;IAC3D,MAAM,EAAE,MAAM,WAAW,GAAG,SAAS,CAAA;IACrC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAC5B,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACvC,KACA,
|
|
1
|
+
{"version":3,"file":"local-transcription-commands.d.ts","sourceRoot":"","sources":["../src/local-transcription-commands.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,IAAI,EAAuB,MAAM,uBAAuB,CAAA;AAEtE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAExC,OAAO,EAEL,KAAK,8BAA8B,EAGpC,MAAM,0BAA0B,CAAA;AAEjC,eAAO,MAAM,6BAA6B,YAC/B,OAAO,QACV;IACJ,YAAY,EAAE,MAAM,OAAO,CAAC,8BAA8B,CAAC,CAAA;IAC3D,MAAM,EAAE,MAAM,WAAW,GAAG,SAAS,CAAA;IACrC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAC5B,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACvC,KACA,IAsDF,CAAA"}
|
|
@@ -15,7 +15,7 @@ export const addLocalTranscriptionCommands = (program, deps) => {
|
|
|
15
15
|
.requiredOption("--model <model>", "installed speech model")
|
|
16
16
|
.option("--models-dir <dir>", "shared installed speech-model directory")
|
|
17
17
|
.option("--max-bytes <bytes>", "largest audio file to read, in bytes (default 1 GiB)", bytes)
|
|
18
|
-
.option("--max-duration <duration>", "longest audio to transcribe (default 4h)", duration)
|
|
18
|
+
.option("--max-duration <duration>", "longest audio to transcribe (default 4h)", (text) => duration(text, "--max-duration"))
|
|
19
19
|
.option("--max-segments <n>", "most recognized segments (default 10000)", bytes)
|
|
20
20
|
.option("--max-text-bytes <bytes>", "most transcript text, in bytes (default 4 MiB)", bytes)
|
|
21
21
|
.option("--yes", "recognize locally and append to the existing meeting")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-transcription-commands.js","sourceRoot":"","sources":["../src/local-transcription-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AACrD,OAAO,EAAa,MAAM,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAEtD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC1D,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,QAAQ,CAAC,qBAAqB,EAAE,sCAAsC,CAAC,CAAA;IAChG,QAAQ,CACN,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;SACrC,WAAW,CAAC,6EAA6E,CAAC;SAC1F,QAAQ,CAAC,WAAW,EAAE,wCAAwC,CAAC;SAC/D,QAAQ,CAAC,QAAQ,EAAE,0FAA0F,CAAC;SAC9G,cAAc,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;SAC3D,MAAM,CAAC,oBAAoB,EAAE,yCAAyC,CAAC;SACvE,MAAM,CAAC,qBAAqB,EAAE,sDAAsD,EAAE,KAAK,CAAC;SAC5F,MAAM,CAAC,2BAA2B,EAAE,0CAA0C,EAAE,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"local-transcription-commands.js","sourceRoot":"","sources":["../src/local-transcription-commands.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp-command.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type RunOptions } from "@wirecat/cli-core/cli";
|
|
1
2
|
import type { Level } from "@wirecat/cli-core/sends";
|
|
2
3
|
import type { Command } from "commander";
|
|
3
4
|
import type { RunCommand, ZoomMcpOptions } from "./mcp.js";
|
|
@@ -12,7 +13,7 @@ export interface McpCommandDeps {
|
|
|
12
13
|
/** `zm <profile> mcp`: the shared three-tool MCP server over stdio, for the named profile (WC-CMD-5, WC-MCP-9). */
|
|
13
14
|
export declare const addMcpCommands: (program: Command, deps: McpCommandDeps) => void;
|
|
14
15
|
/** A run for an MCP agent: the answer and the error captured, nothing at a terminal, and `ask` taken as yes. */
|
|
15
|
-
export declare const runForAgent: (run: (argv: string[], deps: ProgramDeps) => Promise<number>, argv: string[], deps: ProgramDeps) => Promise<{
|
|
16
|
+
export declare const runForAgent: (run: (argv: string[], deps: ProgramDeps) => Promise<number>, argv: string[], deps: ProgramDeps, environment?: RunOptions) => Promise<{
|
|
16
17
|
code: number;
|
|
17
18
|
stdout: string;
|
|
18
19
|
stderr: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-command.d.ts","sourceRoot":"","sources":["../src/mcp-command.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcp-command.d.ts","sourceRoot":"","sources":["../src/mcp-command.ts"],"names":[],"mappings":"AAEA,OAAO,EAAyC,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAC9F,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE/C,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,MAAM,CAAA;IACrB,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;IACjE,GAAG,EAAE,UAAU,CAAA;IACf,MAAM,EAAE,MAAM,WAAW,GAAG,SAAS,CAAA;IACrC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACnD;AAED,mHAAmH;AACnH,eAAO,MAAM,cAAc,YAAa,OAAO,QAAQ,cAAc,KAAG,IAkCvE,CAAA;AAED,gHAAgH;AAChH,eAAO,MAAM,WAAW,QACjB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,QACrD,MAAM,EAAE,QACR,WAAW,gBACH,UAAU;;;;EAsBzB,CAAA"}
|
package/dist/mcp-command.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CliError } from "@wirecat/cli-base";
|
|
2
2
|
import { annotate, describeProgram } from "@wirecat/cli-base/commands";
|
|
3
|
-
import { FETCH, NO_EFFECTS } from "@wirecat/cli-core/cli";
|
|
3
|
+
import { changesAuthorityAt, FETCH, NO_EFFECTS } from "@wirecat/cli-core/cli";
|
|
4
4
|
/** `zm <profile> mcp`: the shared three-tool MCP server over stdio, for the named profile (WC-CMD-5, WC-MCP-9). */
|
|
5
5
|
export const addMcpCommands = (program, deps) => {
|
|
6
6
|
annotate(program.command("mcp"), {
|
|
@@ -19,6 +19,7 @@ export const addMcpCommands = (program, deps) => {
|
|
|
19
19
|
await serve({
|
|
20
20
|
profile,
|
|
21
21
|
commands: describeProgram(program),
|
|
22
|
+
authority: changesAuthorityAt(program),
|
|
22
23
|
permissions: () => deps.permissions(profile),
|
|
23
24
|
run: deps.run,
|
|
24
25
|
...(deps.signal() ? { signal: deps.signal() } : {}),
|
|
@@ -34,12 +35,21 @@ export const addMcpCommands = (program, deps) => {
|
|
|
34
35
|
});
|
|
35
36
|
};
|
|
36
37
|
/** A run for an MCP agent: the answer and the error captured, nothing at a terminal, and `ask` taken as yes. */
|
|
37
|
-
export const runForAgent = async (run, argv, deps) => {
|
|
38
|
+
export const runForAgent = async (run, argv, deps, environment) => {
|
|
38
39
|
const stdout = [];
|
|
39
40
|
const stderr = [];
|
|
40
41
|
const { serveMcp: _serve, streamData: _stream, ...rest } = deps;
|
|
41
42
|
const code = await run(argv, {
|
|
42
43
|
...rest,
|
|
44
|
+
...(environment?.agent
|
|
45
|
+
? {
|
|
46
|
+
agent: {
|
|
47
|
+
...environment.agent,
|
|
48
|
+
result: (value) => stdout.push(JSON.stringify(value)),
|
|
49
|
+
failure: (value) => stderr.push(JSON.stringify(value)),
|
|
50
|
+
},
|
|
51
|
+
}
|
|
52
|
+
: {}),
|
|
43
53
|
data: (text) => stdout.push(text),
|
|
44
54
|
diagnostic: (text) => stderr.push(text),
|
|
45
55
|
outputIsTTY: false,
|
package/dist/mcp-command.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-command.js","sourceRoot":"","sources":["../src/mcp-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AACtE,OAAO,EAAE,KAAK,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"mcp-command.js","sourceRoot":"","sources":["../src/mcp-command.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/server";
|
|
2
2
|
import type { CommandInfo } from "@wirecat/cli-base/commands";
|
|
3
|
+
import type { RunOptions } from "@wirecat/cli-core/cli";
|
|
3
4
|
import type { Level } from "@wirecat/cli-core/sends";
|
|
4
5
|
/** One run of the CLI for an agent: its exit code and what it printed, the answer on stdout or the error on stderr. */
|
|
5
|
-
export type RunCommand = (argv: string[]) => Promise<{
|
|
6
|
+
export type RunCommand = (argv: string[], environment?: RunOptions) => Promise<{
|
|
6
7
|
code: number;
|
|
7
8
|
stdout: string;
|
|
8
9
|
stderr: string;
|
|
@@ -12,6 +13,7 @@ export interface ZoomMcpOptions {
|
|
|
12
13
|
commands: readonly CommandInfo[];
|
|
13
14
|
/** The profile's own levels, read on every call. */
|
|
14
15
|
permissions: () => Readonly<Record<string, Level>>;
|
|
16
|
+
authority: (path: readonly string[]) => boolean;
|
|
15
17
|
run: RunCommand;
|
|
16
18
|
signal?: AbortSignal;
|
|
17
19
|
/** Where the protocol runs; stdin and stdout when not given. */
|
package/dist/mcp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAGxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAGxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAE7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAGvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAIpD,uHAAuH;AACvH,MAAM,MAAM,UAAU,GAAG,CACvB,IAAI,EAAE,MAAM,EAAE,EACd,WAAW,CAAC,EAAE,UAAU,KACrB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAE9D,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAA;IAChC,oDAAoD;IACpD,WAAW,EAAE,MAAM,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;IAClD,SAAS,EAAE,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAA;IAC/C,GAAG,EAAE,UAAU,CAAA;IACf,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,gEAAgE;IAChE,SAAS,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;CAChD;AAoBD;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,YAAa,cAAc,KAAG,SA2D7D,CAAA;AAED,+EAA+E;AAC/E,eAAO,MAAM,YAAY,YAAmB,cAAc,KAAG,OAAO,CAAC,IAAI,CAgBxE,CAAA"}
|
package/dist/mcp.js
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/server";
|
|
2
2
|
import { StdioServerTransport } from "@modelcontextprotocol/server/stdio";
|
|
3
3
|
import { CliError, errorObjectOf, mcpErrorResult, visibleControls } from "@wirecat/cli-base";
|
|
4
|
+
import { isBody, itemAnswer } from "@wirecat/cli-core/cli";
|
|
4
5
|
import { registerCommands, runCommandForAgent, toolsFromCommands } from "@wirecat/cli-core/mcp";
|
|
5
|
-
import { DEFAULT_PERMISSIONS } from "./permissions.js";
|
|
6
|
+
import { DEFAULT_PERMISSIONS, permissionKeyForPath } from "./permissions.js";
|
|
6
7
|
import { VERSION } from "./version.js";
|
|
7
8
|
const EXCLUDED = [["mcp"], ["serve"], ["complete"], ["watch"]];
|
|
8
|
-
const authorityAllowed = (levels) => levels["mcp.authority"] === "allow" || levels["mcp.authority"] === "ask";
|
|
9
|
-
const changesAuthority = (path) => ["config set", "skill install", "session start"].includes(path.join(" "));
|
|
10
9
|
/** A remote embedding service is the owner's choice on the command line; over MCP only an installed model answers. */
|
|
11
10
|
const OMITTED = ["base_url", "dims"];
|
|
12
|
-
const keyOf =
|
|
11
|
+
const keyOf = permissionKeyForPath;
|
|
13
12
|
// Retrieved text reaches an agent; hidden control and direction characters are shown, not obeyed.
|
|
14
13
|
const visible = (value) => {
|
|
15
14
|
if (typeof value === "string")
|
|
@@ -37,21 +36,24 @@ export const createZoomMcpServer = (options) => {
|
|
|
37
36
|
commands: options.commands,
|
|
38
37
|
run: async (argv, environment) => {
|
|
39
38
|
const agent = environment.agent;
|
|
40
|
-
const ran = await options.run(argv);
|
|
41
|
-
if (ran.code === 0)
|
|
42
|
-
|
|
39
|
+
const ran = await options.run(argv, environment);
|
|
40
|
+
if (ran.code === 0) {
|
|
41
|
+
const packet = JSON.parse(ran.stdout || "null");
|
|
42
|
+
agent.result(visible(isBody(packet) ? packet : itemAnswer(packet)));
|
|
43
|
+
}
|
|
43
44
|
else
|
|
44
45
|
agent.failure(JSON.parse(ran.stderr || "{}"));
|
|
45
46
|
return ran.code;
|
|
46
47
|
},
|
|
47
48
|
};
|
|
48
|
-
const
|
|
49
|
+
const offered = () => toolsFromCommands(options.commands, {
|
|
49
50
|
exclude: EXCLUDED,
|
|
50
51
|
omit: OMITTED,
|
|
51
52
|
levels: levelsOf(options.permissions()),
|
|
52
53
|
keyOf,
|
|
53
|
-
authority:
|
|
54
|
+
authority: options.authority,
|
|
54
55
|
});
|
|
56
|
+
const tools = offered();
|
|
55
57
|
const commands = Object.fromEntries(tools.map((tool) => [
|
|
56
58
|
tool.command,
|
|
57
59
|
{
|
|
@@ -60,14 +62,13 @@ export const createZoomMcpServer = (options) => {
|
|
|
60
62
|
writes: tool.writes,
|
|
61
63
|
input: tool.input,
|
|
62
64
|
run: async (input) => {
|
|
63
|
-
if (changesAuthority(tool.path) && !authorityAllowed(levelsOf(options.permissions())))
|
|
64
|
-
return mcpErrorResult(errorObjectOf(new CliError("permission_error", "this command requires mcp.authority: allow")));
|
|
65
65
|
if (tool.command === "config set" && input.key === "permissions")
|
|
66
66
|
return mcpErrorResult(errorObjectOf(new CliError("permission_error", "change profile permissions in a terminal")));
|
|
67
67
|
const answer = await runCommandForAgent(program, tool.path, input, {
|
|
68
68
|
profile: options.profile,
|
|
69
69
|
levels: () => levelsOf(options.permissions()),
|
|
70
70
|
keyOf,
|
|
71
|
+
authority: options.authority,
|
|
71
72
|
});
|
|
72
73
|
if ("error" in answer)
|
|
73
74
|
return mcpErrorResult(answer.error);
|
package/dist/mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAA;AACzE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models-commands.d.ts","sourceRoot":"","sources":["../src/models-commands.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"models-commands.d.ts","sourceRoot":"","sources":["../src/models-commands.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,IAAI,EAUV,MAAM,uBAAuB,CAAA;AAU9B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAyBxC;;;GAGG;AACH,eAAO,MAAM,iBAAiB,YACnB,OAAO,QACV;IAAE,GAAG,EAAE,MAAM,MAAM,CAAC,UAAU,CAAC;IAAC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAAC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,KACvG,IAsCF,CAAA"}
|
package/dist/models-commands.js
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
import { createHash } from "node:crypto";
|
|
2
|
-
import { createReadStream, existsSync } from "node:fs";
|
|
3
|
-
import { rm } from "node:fs/promises";
|
|
4
1
|
import { join } from "node:path";
|
|
5
2
|
import { annotate } from "@wirecat/cli-base/commands";
|
|
6
3
|
import { defineQuery } from "@wirecat/cli-base/query";
|
|
7
4
|
import { FETCH, itemOf, LOCAL_READ, listOf, NO_EFFECTS, queryTerms, termField, typedQuery, withQuery, } from "@wirecat/cli-core/cli";
|
|
8
|
-
import { install, installedBytes, isInstalled, MODELS,
|
|
5
|
+
import { install, installedBytes, isInstalled, MODELS, modelsDirectory, speechModel, } from "@wirecat/cli-core/speech";
|
|
9
6
|
/** The shared `models list` fields; zm ships speech models only, so `kind:text` lists none. */
|
|
10
7
|
const MODELS_QUERY = defineQuery({
|
|
11
8
|
entity: "model",
|
|
@@ -27,27 +24,6 @@ const itemOfModel = (model, directory) => ({
|
|
|
27
24
|
default: false,
|
|
28
25
|
path: join(directory, model.id),
|
|
29
26
|
});
|
|
30
|
-
const sha256 = (path) => new Promise((resolve) => {
|
|
31
|
-
const hash = createHash("sha256");
|
|
32
|
-
createReadStream(path)
|
|
33
|
-
.on("data", (chunk) => hash.update(chunk))
|
|
34
|
-
.on("end", () => resolve(hash.digest("hex")))
|
|
35
|
-
.on("error", () => resolve(null));
|
|
36
|
-
});
|
|
37
|
-
/** A file of the right size can still be another version or broken, so its hash decides; a wrong one goes. */
|
|
38
|
-
const removeMismatched = async (model, directory) => {
|
|
39
|
-
const path = modelPath(directory, model);
|
|
40
|
-
const files = [...model.files.map((file) => [file.sha256, path(file.name)]), [VAD.sha256, vadPath(directory)]];
|
|
41
|
-
const removed = [];
|
|
42
|
-
for (const [expected, file] of files) {
|
|
43
|
-
const actual = await sha256(file);
|
|
44
|
-
if (actual === null || actual === expected)
|
|
45
|
-
continue;
|
|
46
|
-
await rm(file, { force: true });
|
|
47
|
-
removed.push(file);
|
|
48
|
-
}
|
|
49
|
-
return removed;
|
|
50
|
-
};
|
|
51
27
|
/**
|
|
52
28
|
* `models list|download`: the speech models `meetings transcribe` runs, in the folder every WireCat CLI shares,
|
|
53
29
|
* so a model downloaded by tg serves zm too. Downloading is the owner's command; transcription never downloads.
|
|
@@ -72,22 +48,17 @@ export const addModelsCommands = (program, deps) => {
|
|
|
72
48
|
.filter((item) => downloaded === undefined || item.downloaded === (downloaded === "true"));
|
|
73
49
|
deps.output(listOf("models list", { items, limit: Math.max(1, items.length), has_more: false }));
|
|
74
50
|
});
|
|
75
|
-
annotate(models.command("download"), {
|
|
51
|
+
annotate(models.command("download"), {
|
|
52
|
+
effects: FETCH,
|
|
53
|
+
output: { entity: "model" },
|
|
54
|
+
examples: ["zm models download parakeet-v3 --json"],
|
|
55
|
+
})
|
|
76
56
|
.argument("<model>", "a model id from `models list`")
|
|
77
57
|
.description("download a speech model, or repair one, checking every file's sha256")
|
|
78
58
|
.action(async (id) => {
|
|
79
59
|
const model = speechModel(id);
|
|
80
60
|
const directory = modelsDirectory(deps.env());
|
|
81
|
-
|
|
82
|
-
deps.diagnostic(`${file}: not the file this version expects, downloading it again\n`);
|
|
83
|
-
if (!isInstalled(model, directory)) {
|
|
84
|
-
const path = modelPath(directory, model);
|
|
85
|
-
const missing = [...model.files.map((file) => [file.bytes, path(file.name)]), [VAD.bytes, vadPath(directory)]]
|
|
86
|
-
.filter(([, file]) => !existsSync(file))
|
|
87
|
-
.reduce((sum, [bytes]) => sum + bytes, 0);
|
|
88
|
-
deps.diagnostic(`${model.id}: ${megabytes(missing)} to download\n`);
|
|
89
|
-
await install(model, directory, { progress: (line) => deps.diagnostic(`${line}\n`) });
|
|
90
|
-
}
|
|
61
|
+
await install(model, directory, { verifyExisting: true, progress: (line) => deps.diagnostic(`${line}\n`) });
|
|
91
62
|
deps.output(itemOf(itemOfModel(model, directory)));
|
|
92
63
|
});
|
|
93
64
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models-commands.js","sourceRoot":"","sources":["../src/models-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"models-commands.js","sourceRoot":"","sources":["../src/models-commands.ts"],"names":[],"mappings":"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"}
|
package/dist/permissions.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ import type { ZoomConfig } from "./config.js";
|
|
|
5
5
|
export declare const DEFAULT_PERMISSIONS: Readonly<Record<string, Level>>;
|
|
6
6
|
export declare const pathOf: (command: Command) => string[];
|
|
7
7
|
/** The command's path, dotted — `remote-meetings.cancel` — or null for housekeeping. */
|
|
8
|
+
export declare const permissionKeyForPath: (path: readonly string[]) => string | null;
|
|
8
9
|
export declare const permissionKeyOf: (command: Command) => string | null;
|
|
9
10
|
/** Every key a permission may name: each command's path and every group above it. */
|
|
10
11
|
export declare const permissionKeys: (program: Command) => Set<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,KAAK,EAGX,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAExC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAG7C,oGAAoG;AACpG,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAG/D,CAAA;AAKD,eAAO,MAAM,MAAM,YAAa,OAAO,KAAG,MAAM,EAI/C,CAAA;AAED,wFAAwF;AACxF,eAAO,MAAM,oBAAoB,SAAU,SAAS,MAAM,EAAE,KAAG,MAAM,GAAG,IAC4C,CAAA;AACpH,eAAO,MAAM,eAAe,YAAa,OAAO,KAAG,MAAM,GAAG,IAA6C,CAAA;AAEzG,qFAAqF;AACrF,eAAO,MAAM,cAAc,YAAa,OAAO,KAAG,GAAG,CAAC,MAAM,CAY3D,CAAA;AAED,eAAO,MAAM,gBAAgB,UAAW,MAAM,SAAS,WAAW,CAAC,MAAM,CAAC,KAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAkBhG,CAAA;AAED,MAAM,WAAW,iBAAiB;IAChC,kHAAkH;IAClH,OAAO,EAAE,MAAM,MAAM,GAAG,SAAS,CAAA;IACjC,MAAM,EAAE,MAAM,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;IAC7C,2EAA2E;IAC3E,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAChD,gEAAgE;IAChE,OAAO,CAAC,EAAE,KAAK,CAAA;CAChB;AASD;;;;GAIG;AACH,eAAO,MAAM,eAAe,YAAa,OAAO,WAAW,iBAAiB,KAAG,OAAO,CAAC,IAAI,CAAC,GAAG,SAoC9F,CAAA;AAED,yGAAyG;AACzG,eAAO,MAAM,YAAY,YACd,OAAO,OACX,MAAM,CAAC,UAAU,WACb,IAAI,CAAC,iBAAiB,EAAE,SAAS,CAAC,YACjC,iBAAiB,CAAC,SAAS,CAAC,KACrC,OAAO,CAAC,IAAI,CAAC,GAAG,SAIlB,CAAA"}
|
package/dist/permissions.js
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { CliError } from "@wirecat/cli-base";
|
|
2
2
|
import { metaOf } from "@wirecat/cli-base/commands";
|
|
3
3
|
import { setupPermissionCeiling } from "@wirecat/cli-core/cli";
|
|
4
|
-
import { CEILING_KEY, LEVELS, levelFor } from "@wirecat/cli-core/sends";
|
|
4
|
+
import { CEILING_KEY, keyForCommand, LEVELS, levelFor, DEFAULT_PERMISSIONS as SHARED_DEFAULT_PERMISSIONS, } from "@wirecat/cli-core/sends";
|
|
5
5
|
import { PROFILE_FREE } from "./commands.js";
|
|
6
6
|
import { refusalOf, refuseChangeWhenReadOnly } from "./read-only.js";
|
|
7
7
|
/** A change to Zoom asks first. A built-in default only tightens what the owner set (WC-PERM-7). */
|
|
8
|
-
export const DEFAULT_PERMISSIONS = {
|
|
8
|
+
export const DEFAULT_PERMISSIONS = {
|
|
9
|
+
...SHARED_DEFAULT_PERMISSIONS,
|
|
10
|
+
"remote-meetings": "ask",
|
|
11
|
+
};
|
|
9
12
|
/** Looking after the tool — its settings, its login, its help — is never gated (WC-PERM-5). */
|
|
10
13
|
const HOUSEKEEPING = new Set([...PROFILE_FREE, "session", "serve", "mcp"]);
|
|
11
14
|
export const pathOf = (command) => {
|
|
@@ -15,17 +18,18 @@ export const pathOf = (command) => {
|
|
|
15
18
|
return words;
|
|
16
19
|
};
|
|
17
20
|
/** The command's path, dotted — `remote-meetings.cancel` — or null for housekeeping. */
|
|
18
|
-
export const
|
|
19
|
-
|
|
20
|
-
return path.length === 0 || HOUSEKEEPING.has(path[0]) ? null : path.join(".");
|
|
21
|
-
};
|
|
21
|
+
export const permissionKeyForPath = (path) => path.length === 0 || (HOUSEKEEPING.has(path[0]) && keyForCommand(path) === null) ? null : path.join(".");
|
|
22
|
+
export const permissionKeyOf = (command) => permissionKeyForPath(pathOf(command));
|
|
22
23
|
/** Every key a permission may name: each command's path and every group above it. */
|
|
23
24
|
export const permissionKeys = (program) => {
|
|
24
25
|
const keys = new Set(["mcp.authority"]);
|
|
25
26
|
const walk = (command) => {
|
|
26
27
|
const key = permissionKeyOf(command);
|
|
27
|
-
if (key)
|
|
28
|
-
|
|
28
|
+
if (key) {
|
|
29
|
+
const parts = key.split(".");
|
|
30
|
+
for (let size = 1; size <= parts.length; size++)
|
|
31
|
+
keys.add(parts.slice(0, size).join("."));
|
|
32
|
+
}
|
|
29
33
|
for (const child of command.commands)
|
|
30
34
|
walk(child);
|
|
31
35
|
};
|