@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.
Files changed (97) hide show
  1. package/dist/agent-skill.d.ts.map +1 -1
  2. package/dist/agent-skill.js +3 -1
  3. package/dist/agent-skill.js.map +1 -1
  4. package/dist/answer-entities.d.ts +740 -0
  5. package/dist/answer-entities.d.ts.map +1 -0
  6. package/dist/answer-entities.js +202 -0
  7. package/dist/answer-entities.js.map +1 -0
  8. package/dist/answer-output.d.ts +0 -1
  9. package/dist/answer-output.d.ts.map +1 -1
  10. package/dist/answer-output.js +2 -2
  11. package/dist/answer-output.js.map +1 -1
  12. package/dist/answer-policy.d.ts +0 -4
  13. package/dist/answer-policy.d.ts.map +1 -1
  14. package/dist/answer-policy.js +0 -16
  15. package/dist/answer-policy.js.map +1 -1
  16. package/dist/archive-commands.d.ts.map +1 -1
  17. package/dist/archive-commands.js +10 -7
  18. package/dist/archive-commands.js.map +1 -1
  19. package/dist/commands.d.ts +0 -2
  20. package/dist/commands.d.ts.map +1 -1
  21. package/dist/commands.js +6 -52
  22. package/dist/commands.js.map +1 -1
  23. package/dist/execution.d.ts +5 -10
  24. package/dist/execution.d.ts.map +1 -1
  25. package/dist/execution.js +11 -27
  26. package/dist/execution.js.map +1 -1
  27. package/dist/first-screen.d.ts +8 -0
  28. package/dist/first-screen.d.ts.map +1 -1
  29. package/dist/first-screen.js +18 -18
  30. package/dist/first-screen.js.map +1 -1
  31. package/dist/json-fields.d.ts +1 -6
  32. package/dist/json-fields.d.ts.map +1 -1
  33. package/dist/json-fields.js +2 -22
  34. package/dist/json-fields.js.map +1 -1
  35. package/dist/local-transcription-commands.d.ts.map +1 -1
  36. package/dist/local-transcription-commands.js +1 -1
  37. package/dist/local-transcription-commands.js.map +1 -1
  38. package/dist/mcp-command.d.ts +2 -1
  39. package/dist/mcp-command.d.ts.map +1 -1
  40. package/dist/mcp-command.js +12 -2
  41. package/dist/mcp-command.js.map +1 -1
  42. package/dist/mcp.d.ts +3 -1
  43. package/dist/mcp.d.ts.map +1 -1
  44. package/dist/mcp.js +12 -11
  45. package/dist/mcp.js.map +1 -1
  46. package/dist/models-commands.d.ts.map +1 -1
  47. package/dist/models-commands.js +7 -36
  48. package/dist/models-commands.js.map +1 -1
  49. package/dist/permissions.d.ts +1 -0
  50. package/dist/permissions.d.ts.map +1 -1
  51. package/dist/permissions.js +12 -8
  52. package/dist/permissions.js.map +1 -1
  53. package/dist/profile-word.d.ts +0 -15
  54. package/dist/profile-word.d.ts.map +1 -1
  55. package/dist/profile-word.js +0 -48
  56. package/dist/profile-word.js.map +1 -1
  57. package/dist/program-bindings.d.ts +5 -0
  58. package/dist/program-bindings.d.ts.map +1 -0
  59. package/dist/program-bindings.js +424 -0
  60. package/dist/program-bindings.js.map +1 -0
  61. package/dist/program.d.ts +8 -5
  62. package/dist/program.d.ts.map +1 -1
  63. package/dist/program.js +17 -417
  64. package/dist/program.js.map +1 -1
  65. package/dist/progress-commands.d.ts +9 -0
  66. package/dist/progress-commands.d.ts.map +1 -0
  67. package/dist/progress-commands.js +49 -0
  68. package/dist/progress-commands.js.map +1 -0
  69. package/dist/read-only.d.ts.map +1 -1
  70. package/dist/read-only.js +6 -17
  71. package/dist/read-only.js.map +1 -1
  72. package/dist/recording-schedule-commands.d.ts.map +1 -1
  73. package/dist/recording-schedule-commands.js +8 -8
  74. package/dist/recording-schedule-commands.js.map +1 -1
  75. package/dist/recording-sync-store.d.ts +2 -1
  76. package/dist/recording-sync-store.d.ts.map +1 -1
  77. package/dist/recording-sync-store.js +10 -0
  78. package/dist/recording-sync-store.js.map +1 -1
  79. package/dist/run.d.ts +8 -0
  80. package/dist/run.d.ts.map +1 -0
  81. package/dist/run.js +40 -0
  82. package/dist/run.js.map +1 -0
  83. package/dist/setup-commands.d.ts +0 -3
  84. package/dist/setup-commands.d.ts.map +1 -1
  85. package/dist/setup-commands.js +5 -11
  86. package/dist/setup-commands.js.map +1 -1
  87. package/dist/sync-progress.d.ts +11 -0
  88. package/dist/sync-progress.d.ts.map +1 -0
  89. package/dist/sync-progress.js +31 -0
  90. package/dist/sync-progress.js.map +1 -0
  91. package/dist/version.d.ts +1 -1
  92. package/dist/version.js +1 -1
  93. package/dist/watch-commands.d.ts.map +1 -1
  94. package/dist/watch-commands.js +1 -1
  95. package/dist/watch-commands.js.map +1 -1
  96. package/package.json +2 -2
  97. package/skills/zoom-cli/SKILL.md +2 -2
package/dist/execution.js CHANGED
@@ -1,12 +1,11 @@
1
- import { CliError, createDeadline, createOutputBuffer, } from "@wirecat/cli-base";
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 match = /^(\d+(?:\.\d+)?)(ms|s|m|h)?$/.exec(text);
6
- const unit = { ms: 1, s: 1000, m: 60000, h: 3600000 }[match?.[2] ?? "ms"];
7
- const value = Number(match?.[1]) * (unit ?? 1);
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 startExecution = (action, options) => {
32
- const flags = action.optsWithGlobals();
30
+ export const sharedExecution = (action, environment, now) => {
31
+ const max = action.optsWithGlobals().maxOutputBytes;
33
32
  return {
34
33
  action,
35
- meta: readMetadata(options.now),
36
- deadline: createDeadline({
37
- timeoutMs: flags.timeout ?? commandDeadline(action),
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
@@ -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":"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"}
@@ -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,IA2BrD,CAAA"}
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"}
@@ -1,5 +1,5 @@
1
1
  import { fileURLToPath } from "node:url";
2
- import { guideCommand, inSection, installHelp, MEMO_SCENARIOS } from "@wirecat/cli-core/cli";
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
- installHelp(program, {
40
- pitch: "your Zoom meetings for agents: transcripts and summaries in a local store, every answer pointing at its line.",
41
- can: [
42
- { command: "meetings sync", does: "meetings, transcripts and summaries into the store" },
43
- { command: 'search meetings "quote"', does: "words across every transcript, with line refs" },
44
- { command: "meetings context <person>", does: "what past meetings say about one person" },
45
- { command: "meetings prepare <series-id>", does: "a briefing with sources before a meeting" },
46
- { command: "meetings transcribe <meeting> <file>", does: "a recording turned into text on this machine" },
47
- { command: "recordings schedule create …", does: "a daily, checked archive of cloud recordings" },
48
- { command: "mcp", does: "commands for an MCP agent, limited by the profile’s permissions" },
49
- {
50
- command: "ZM_READ_ONLY=1 zm …",
51
- does: "blocks changes to Zoom, login, settings, files and the store; syncs run",
52
- },
53
- ],
54
- start: "zm personal session start",
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
@@ -1 +1 @@
1
- {"version":3,"file":"first-screen.js","sourceRoot":"","sources":["../src/first-screen.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"first-screen.js","sourceRoot":"","sources":["../src/first-screen.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,2 @@
1
- import type { Command } from "commander";
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":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAYxC,qHAAqH;AACrH,eAAO,MAAM,cAAc,YAChB,OAAO,oBACiB,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,KACjE;IAAE,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;CAOzE,CAAA"}
1
+ {"version":3,"file":"json-fields.d.ts","sourceRoot":"","sources":["../src/json-fields.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAA"}
@@ -1,23 +1,3 @@
1
- import { fieldsOf } from "@wirecat/cli-base";
2
- import { liftJson } from "@wirecat/cli-core/cli";
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
@@ -1 +1 @@
1
- {"version":3,"file":"json-fields.js","sourceRoot":"","sources":["../src/json-fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAGhD,MAAM,SAAS,GAAG,CAAC,IAAa,EAAE,KAAwB,EAAuB,EAAE;IACjF,IAAI,EAAE,GAAG,IAAI,CAAA;IACb,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAQ;QAClC,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;QACxG,IAAI,KAAK;YAAE,EAAE,GAAG,KAAK,CAAA;IACvB,CAAC;IACD,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAA;AACrC,CAAC,CAAA;AAED,qHAAqH;AACrH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,OAAgB,EAChB,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAoC,EACS,EAAE;IAC7E,MAAM,IAAI,GAAG,QAAQ,EAAE,IAAI,KAAK,MAAM,CAAA;IACtC,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;IAClG,OAAO;QACL,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;QAClF,MAAM,EAAE,SAAS,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC;KAChF,CAAA;AACH,CAAC,CAAA"}
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,IAoDF,CAAA"}
1
+ {"version":3,"file":"local-transcription-commands.d.ts","sourceRoot":"","sources":["../src/local-transcription-commands.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,IAAI,EAAuB,MAAM,uBAAuB,CAAA;AAEtE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAExC,OAAO,EAEL,KAAK,8BAA8B,EAGpC,MAAM,0BAA0B,CAAA;AAEjC,eAAO,MAAM,6BAA6B,YAC/B,OAAO,QACV;IACJ,YAAY,EAAE,MAAM,OAAO,CAAC,8BAA8B,CAAC,CAAA;IAC3D,MAAM,EAAE,MAAM,WAAW,GAAG,SAAS,CAAA;IACrC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAC5B,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACvC,KACA,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":"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"}
1
+ {"version":3,"file":"local-transcription-commands.js","sourceRoot":"","sources":["../src/local-transcription-commands.ts"],"names":[],"mappings":"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"}
@@ -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":"AAGA,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,IAiCvE,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;;;;EAalB,CAAA"}
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"}
@@ -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,
@@ -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,EAAE,MAAM,uBAAuB,CAAA;AAczD,mHAAmH;AACnH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAgB,EAAE,IAAoB,EAAQ,EAAE;IAC7E,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QAC/B,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,YAAY;QACtB,GAAG,EAAE,KAAK;QACV,QAAQ,EAAE,CAAC,iBAAiB,CAAC;KAC9B,CAAC;SACC,WAAW,CAAC,kFAAkF,CAAC;SAC/F,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAA;QAC3B,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK;YACzB,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,4DAA4D,CAAC,CAAA;QACtG,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAA;QACnE,MAAM,KAAK,CAAC;YACV,OAAO;YACP,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC;YAClC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;YAC5C,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACnE,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IACJ,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;SACtF,WAAW,CAAC,yBAAyB,CAAC;SACtC,kBAAkB,EAAE;SACpB,oBAAoB,EAAE;SACtB,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,IAAI,QAAQ,CAChB,kBAAkB,EAClB,qGAAqG;YACnG,8EAA8E,CACjF,CAAA;IACH,CAAC,CAAC,CAAA;AACN,CAAC,CAAA;AAED,gHAAgH;AAChH,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAC9B,GAA2D,EAC3D,IAAc,EACd,IAAiB,EACjB,EAAE;IACF,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAA;IAC/D,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE;QAC3B,GAAG,IAAI;QACP,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACjC,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACvC,WAAW,EAAE,KAAK;QAClB,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;KAC1B,CAAC,CAAA;IACF,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAA;AACnE,CAAC,CAAA"}
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;AAG7D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAIpD,uHAAuH;AACvH,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAEtG,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,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;AAwBD;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,YAAa,cAAc,KAAG,SA0D7D,CAAA;AAED,+EAA+E;AAC/E,eAAO,MAAM,YAAY,YAAmB,cAAc,KAAG,OAAO,CAAC,IAAI,CAgBxE,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 = (path) => path.join(".");
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
- agent.result(visible(JSON.parse(ran.stdout || "null")));
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 tools = toolsFromCommands(options.commands, {
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: changesAuthority,
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":"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"}
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":"AAMA,OAAO,EACL,KAAK,IAAI,EAUV,MAAM,uBAAuB,CAAA;AAc9B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAgDxC;;;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,IA2CF,CAAA"}
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"}
@@ -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, megabytes, modelPath, modelsDirectory, speechModel, VAD, vadPath, } from "@wirecat/cli-core/speech";
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"), { effects: FETCH, examples: ["zm models download parakeet-v3 --json"] })
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
- for (const file of await removeMismatched(model, directory))
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":"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"}
1
+ {"version":3,"file":"models-commands.js","sourceRoot":"","sources":["../src/models-commands.ts"],"names":[],"mappings":"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"}
@@ -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,EAAuB,KAAK,KAAK,EAAY,MAAM,yBAAyB,CAAA;AACnF,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,CAAgC,CAAA;AAKhG,eAAO,MAAM,MAAM,YAAa,OAAO,KAAG,MAAM,EAI/C,CAAA;AAED,wFAAwF;AACxF,eAAO,MAAM,eAAe,YAAa,OAAO,KAAG,MAAM,GAAG,IAG3D,CAAA;AAED,qFAAqF;AACrF,eAAO,MAAM,cAAc,YAAa,OAAO,KAAG,GAAG,CAAC,MAAM,CAS3D,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"}
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"}
@@ -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 = { "remote-meetings": "ask" };
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 permissionKeyOf = (command) => {
19
- const path = pathOf(command);
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
- keys.add(key);
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
  };