@wirecat/zoom-cli 0.36.0 → 0.38.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 (58) hide show
  1. package/dist/api.d.ts +4 -2
  2. package/dist/api.d.ts.map +1 -1
  3. package/dist/api.js +40 -14
  4. package/dist/api.js.map +1 -1
  5. package/dist/chat-file.d.ts +7 -0
  6. package/dist/chat-file.d.ts.map +1 -0
  7. package/dist/chat-file.js +29 -0
  8. package/dist/chat-file.js.map +1 -0
  9. package/dist/ingestion-search-commands.d.ts +1 -0
  10. package/dist/ingestion-search-commands.d.ts.map +1 -1
  11. package/dist/ingestion-search-commands.js +30 -16
  12. package/dist/ingestion-search-commands.js.map +1 -1
  13. package/dist/meeting-context-commands.d.ts.map +1 -1
  14. package/dist/meeting-context-commands.js +14 -10
  15. package/dist/meeting-context-commands.js.map +1 -1
  16. package/dist/meeting-context.d.ts +3 -3
  17. package/dist/meeting-context.d.ts.map +1 -1
  18. package/dist/meeting-context.js.map +1 -1
  19. package/dist/meeting-review-commands.d.ts +21 -0
  20. package/dist/meeting-review-commands.d.ts.map +1 -0
  21. package/dist/meeting-review-commands.js +85 -0
  22. package/dist/meeting-review-commands.js.map +1 -0
  23. package/dist/meeting-search-commands.d.ts +17 -3
  24. package/dist/meeting-search-commands.d.ts.map +1 -1
  25. package/dist/meeting-search-commands.js +21 -12
  26. package/dist/meeting-search-commands.js.map +1 -1
  27. package/dist/meeting-searches-commands.d.ts +11 -0
  28. package/dist/meeting-searches-commands.d.ts.map +1 -0
  29. package/dist/meeting-searches-commands.js +107 -0
  30. package/dist/meeting-searches-commands.js.map +1 -0
  31. package/dist/meeting-selection-options.d.ts +30 -0
  32. package/dist/meeting-selection-options.d.ts.map +1 -0
  33. package/dist/meeting-selection-options.js +27 -0
  34. package/dist/meeting-selection-options.js.map +1 -0
  35. package/dist/meeting-stats-commands.d.ts +1 -1
  36. package/dist/meeting-stats-commands.d.ts.map +1 -1
  37. package/dist/meeting-stats-commands.js +11 -47
  38. package/dist/meeting-stats-commands.js.map +1 -1
  39. package/dist/store-commands.d.ts +1 -1
  40. package/dist/store-commands.d.ts.map +1 -1
  41. package/dist/store-commands.js +29 -1
  42. package/dist/store-commands.js.map +1 -1
  43. package/dist/store-connection.d.ts +5 -1
  44. package/dist/store-connection.d.ts.map +1 -1
  45. package/dist/store-connection.js +12 -0
  46. package/dist/store-connection.js.map +1 -1
  47. package/dist/unified-search.d.ts +1 -2
  48. package/dist/unified-search.d.ts.map +1 -1
  49. package/dist/unified-search.js +4 -19
  50. package/dist/unified-search.js.map +1 -1
  51. package/dist/version.d.ts +1 -1
  52. package/dist/version.js +1 -1
  53. package/package.json +4 -4
  54. package/skills/zoom-cli/SKILL.md +4 -2
  55. package/dist/keys.d.ts +0 -3
  56. package/dist/keys.d.ts.map +0 -1
  57. package/dist/keys.js +0 -18
  58. package/dist/keys.js.map +0 -1
@@ -0,0 +1,85 @@
1
+ import { annotate } from "@wirecat/cli-base/commands";
2
+ import { LOCAL_READ, listOf, NO_EFFECTS } from "@wirecat/cli-core/cli";
3
+ import { meetingLinkItem, meetingReviewItem } from "@wirecat/cli-core/meetings";
4
+ import { bytes } from "./execution.js";
5
+ import { selectionOf, selectionOptions } from "./meeting-selection-options.js";
6
+ /** Fewer words than this is a transcript that holds next to nothing: a few lines before the recording stopped. */
7
+ const NEAR_EMPTY_WORDS = 50;
8
+ const REVIEW_SINCE = "7d";
9
+ /**
10
+ * `review`: the meetings since a point, each with what was decided and who talked — tg's `review` for meetings.
11
+ * `mentions list`: the links shared in the chat of those meetings.
12
+ */
13
+ export const addMeetingReviewCommands = (program, deps) => {
14
+ annotate(selectionOptions(program.command("review")), {
15
+ effects: LOCAL_READ,
16
+ output: { entity: "meeting_review" },
17
+ examples: ["zm personal review --json", "zm personal review --since-time 30d --project RES --json"],
18
+ })
19
+ .description("meetings since a point: summary, next steps and who talked how long")
20
+ .option("--limit <n>", "most meetings, newest first (default 50, at most 200)", bytes)
21
+ .action(async (flags) => {
22
+ const { request, meta } = selectionOf(flags, deps.signal(), REVIEW_SINCE);
23
+ const limit = flags.limit ?? 50;
24
+ const found = await (await deps.review())({ ...request, limit });
25
+ const unsummarized = found.items.filter((one) => one.summary === null).length;
26
+ const nearEmpty = found.items.filter((one) => one.transcript && one.transcript.words < NEAR_EMPTY_WORDS).length;
27
+ deps.output(listOf("review", {
28
+ items: found.items.map(meetingReviewItem),
29
+ limit,
30
+ has_more: found.hasMore,
31
+ meta,
32
+ missing: [
33
+ ...(unsummarized
34
+ ? [
35
+ {
36
+ field: "items[].summary",
37
+ why: `${unsummarized} meetings have no summary: Zoom writes one only when AI Companion summarised the meeting, and imported transcripts carry none — read them with meetings transcript`,
38
+ },
39
+ ]
40
+ : []),
41
+ ...(nearEmpty
42
+ ? [
43
+ {
44
+ field: "items[].transcript",
45
+ why: `${nearEmpty} transcripts hold fewer than ${NEAR_EMPTY_WORDS} words: an empty search there means it was not recorded, not that it was not said`,
46
+ },
47
+ ]
48
+ : []),
49
+ ],
50
+ }));
51
+ });
52
+ const mentions = program.commands.find((command) => command.name() === "mentions") ??
53
+ annotate(program.command("mentions"), { effects: NO_EFFECTS }).description("what the stored meetings point to: links shared in their chat");
54
+ annotate(selectionOptions(mentions.command("list")), {
55
+ effects: LOCAL_READ,
56
+ output: { entity: "meeting_link" },
57
+ examples: ["zm personal mentions list --since-time 30d --json"],
58
+ })
59
+ .description("links shared in meeting chat, most shared first, by whom and where")
60
+ .option("--limit <n>", "how many links (default 100)", bytes)
61
+ .option("--max-messages <n>", "most chat messages to read (default and at most 100000)", bytes)
62
+ .action(async (flags) => {
63
+ const { request, meta } = selectionOf(flags, deps.signal());
64
+ const limit = flags.limit ?? 100;
65
+ const found = await (await deps.links())({
66
+ ...request,
67
+ ...(flags.maxMessages === undefined ? {} : { maxMessages: flags.maxMessages }),
68
+ });
69
+ deps.output(listOf("mentions list", {
70
+ items: found.items.slice(0, limit).map(meetingLinkItem),
71
+ limit,
72
+ has_more: found.items.length > limit,
73
+ meta,
74
+ missing: found.messages === 0
75
+ ? [
76
+ {
77
+ field: "items",
78
+ why: "no meeting chat is stored for these meetings: zm reads the chat Zoom saves with a cloud recording, at meetings sync",
79
+ },
80
+ ]
81
+ : [],
82
+ }));
83
+ });
84
+ };
85
+ //# sourceMappingURL=meeting-review-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meeting-review-commands.js","sourceRoot":"","sources":["../src/meeting-review-commands.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,23 @@
1
1
  import { type Body } from "@wirecat/cli-core/cli";
2
- import { type MeetingHitSearch } from "@wirecat/cli-core/meetings/cli";
3
- import type { Command } from "commander";
2
+ import { type MeetingHitSearch, type MeetingSearchFlags } from "@wirecat/cli-core/meetings/cli";
3
+ import { Command } from "commander";
4
4
  import type { ArchiveTranscriptService } from "./archive-commands.js";
5
5
  import { type MeetingSemanticCapabilities } from "./meeting-semantic-commands.js";
6
6
  export { type MeetingHitSearch, type MeetingHitSearchOptions, validateMeetingHitSearch, } from "@wirecat/cli-core/meetings/cli";
7
+ interface SearchOptions extends MeetingSearchFlags {
8
+ model?: string;
9
+ baseUrl?: string;
10
+ dims?: number;
11
+ maxChunks?: number;
12
+ maxRows?: number;
13
+ maxTextBytes?: number;
14
+ }
15
+ /** A fresh `search meetings` to read saved options with: the same flags, parsers and checks as the real one. */
16
+ export declare const meetingSearchDefinition: () => {
17
+ program: Command;
18
+ command: Command;
19
+ };
20
+ export type MeetingSearchRun = (query: string, options: SearchOptions) => Promise<Body>;
7
21
  /** One meeting search: stored words by default, words and meaning ranked together with --model. */
8
22
  export declare const addMeetingSearchCommands: (program: Command, deps: {
9
23
  words: () => Promise<MeetingHitSearch>;
@@ -12,5 +26,5 @@ export declare const addMeetingSearchCommands: (program: Command, deps: {
12
26
  offline: () => boolean;
13
27
  signal: () => AbortSignal | undefined;
14
28
  output: (body: Body) => void;
15
- }) => void;
29
+ }) => MeetingSearchRun;
16
30
  //# sourceMappingURL=meeting-search-commands.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"meeting-search-commands.d.ts","sourceRoot":"","sources":["../src/meeting-search-commands.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,IAAI,EAAyC,MAAM,uBAAuB,CAAA;AAExF,OAAO,EAEL,KAAK,gBAAgB,EAMtB,MAAM,gCAAgC,CAAA;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAGrE,OAAO,EAAE,KAAK,2BAA2B,EAA2B,MAAM,gCAAgC,CAAA;AAE1G,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAC5B,wBAAwB,GACzB,MAAM,gCAAgC,CAAA;AAwFvC,mGAAmG;AACnG,eAAO,MAAM,wBAAwB,YAC1B,OAAO,QACV;IACJ,KAAK,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAA;IACtC,OAAO,EAAE,MAAM,OAAO,CAAC,2BAA2B,CAAC,CAAA;IACnD,OAAO,EAAE,wBAAwB,CAAC,QAAQ,CAAC,CAAA;IAC3C,OAAO,EAAE,MAAM,OAAO,CAAA;IACtB,MAAM,EAAE,MAAM,WAAW,GAAG,SAAS,CAAA;IACrC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;CAC7B,KACA,IAiFF,CAAA"}
1
+ {"version":3,"file":"meeting-search-commands.d.ts","sourceRoot":"","sources":["../src/meeting-search-commands.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,IAAI,EAAyC,MAAM,uBAAuB,CAAA;AAExF,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EAIxB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAGrE,OAAO,EAAE,KAAK,2BAA2B,EAA2B,MAAM,gCAAgC,CAAA;AAE1G,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAC5B,wBAAwB,GACzB,MAAM,gCAAgC,CAAA;AAEvC,UAAU,aAAc,SAAQ,kBAAkB;IAChD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AA6FD,gHAAgH;AAChH,eAAO,MAAM,uBAAuB,QAAO;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAI9E,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAEvF,mGAAmG;AACnG,eAAO,MAAM,wBAAwB,YAC1B,OAAO,QACV;IACJ,KAAK,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAA;IACtC,OAAO,EAAE,MAAM,OAAO,CAAC,2BAA2B,CAAC,CAAA;IACnD,OAAO,EAAE,wBAAwB,CAAC,QAAQ,CAAC,CAAA;IAC3C,OAAO,EAAE,MAAM,OAAO,CAAA;IACtB,MAAM,EAAE,MAAM,WAAW,GAAG,SAAS,CAAA;IACrC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;CAC7B,KACA,gBAyEF,CAAA"}
@@ -3,6 +3,7 @@ import { annotate } from "@wirecat/cli-base/commands";
3
3
  import { FETCH, LOCAL_READ, listOf, NO_EFFECTS } from "@wirecat/cli-core/cli";
4
4
  import { meetingHitsList } from "@wirecat/cli-core/meetings";
5
5
  import { createMeetingSearchCommand, meetingHitSearchRequest, meetingSearchArguments, meetingSearchMeta, } from "@wirecat/cli-core/meetings/cli";
6
+ import { Command } from "commander";
6
7
  import { bytes } from "./execution.js";
7
8
  import { validateMeetingSemantic } from "./meeting-semantic-commands.js";
8
9
  export { validateMeetingHitSearch, } from "@wirecat/cli-core/meetings/cli";
@@ -79,9 +80,25 @@ const combinedList = (found, limit, args) => listOf("search meetings", {
79
80
  ...(found.words.refused ? [{ field: "items", why: `found by meaning only: ${found.words.refused}` }] : []),
80
81
  ],
81
82
  });
83
+ /** zm's options beside the shared ones: by meaning, and the bounds of a search by meaning. */
84
+ const withMeaningOptions = (command) => command
85
+ .description("find words in stored meetings, or by meaning with --model")
86
+ .option("--model <model>", "rank words and meaning together with this embedding model, building missing vectors first")
87
+ .option("--base-url <url>", "remote embedding service for --model; OpenAI reads OPENAI_API_KEY")
88
+ .option("--dims <n>", "vector size the remote service returns, in dimensions", bytes)
89
+ .option("--max-chunks <n>", "by meaning: most stored passages to compare (default 10000)", bytes)
90
+ .option("--max-rows <n>", "by meaning: most transcript lines to read, 1 through 100000", bytes)
91
+ .option("--max-text-bytes <bytes>", "by meaning: most transcript text to read (default 4 MiB)", bytes);
92
+ /** A fresh `search meetings` to read saved options with: the same flags, parsers and checks as the real one. */
93
+ export const meetingSearchDefinition = () => {
94
+ const program = new Command();
95
+ const command = withMeaningOptions(createMeetingSearchCommand(program));
96
+ return { program, command };
97
+ };
82
98
  /** One meeting search: stored words by default, words and meaning ranked together with --model. */
83
99
  export const addMeetingSearchCommands = (program, deps) => {
84
- const execute = async (query, request, options) => {
100
+ const execute = async (query, options) => {
101
+ const request = meetingHitSearchRequest(query, options, deps.signal());
85
102
  if (options.model !== undefined) {
86
103
  refuse(options, ["maxReadBytes"], "to a search by meaning");
87
104
  const { limit, after, maxReadBytes: _bytes, signal, ...selection } = request;
@@ -106,18 +123,9 @@ export const addMeetingSearchCommands = (program, deps) => {
106
123
  refuse(options, ["baseUrl", "dims", "maxChunks", "maxRows", "maxTextBytes"], "without --model");
107
124
  return meetingHitsList(await (await deps.words())(query, request), request.limit ?? 100, "search meetings", meetingSearchArguments(query, options), meetingSearchMeta(options));
108
125
  };
109
- const command = createMeetingSearchCommand(program).action(async (query, options) => {
110
- const request = meetingHitSearchRequest(query, options, deps.signal());
111
- deps.output(await execute(query, request, options));
126
+ const command = withMeaningOptions(createMeetingSearchCommand(program)).action(async (query, options) => {
127
+ deps.output(await execute(query, options));
112
128
  });
113
- command
114
- .description("find words in stored meetings, or by meaning with --model")
115
- .option("--model <model>", "rank words and meaning together with this embedding model, building missing vectors first")
116
- .option("--base-url <url>", "remote embedding service for --model; OpenAI reads OPENAI_API_KEY")
117
- .option("--dims <n>", "vector size the remote service returns, in dimensions", bytes)
118
- .option("--max-chunks <n>", "by meaning: most stored passages to compare (default 10000)", bytes)
119
- .option("--max-rows <n>", "by meaning: most transcript lines to read, 1 through 100000", bytes)
120
- .option("--max-text-bytes <bytes>", "by meaning: most transcript text to read (default 4 MiB)", bytes);
121
129
  annotate(command, {
122
130
  origin: "handwritten",
123
131
  effects: FETCH,
@@ -147,5 +155,6 @@ export const addMeetingSearchCommands = (program, deps) => {
147
155
  output: { entity: "hit" },
148
156
  examples: ['zm search recordings ./zoom-archive "example plan" --limit 100 --offline --json'],
149
157
  });
158
+ return execute;
150
159
  };
151
160
  //# sourceMappingURL=meeting-search-commands.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"meeting-search-commands.js","sourceRoot":"","sources":["../src/meeting-search-commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"meeting-search-commands.js","sourceRoot":"","sources":["../src/meeting-search-commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { type Body } from "@wirecat/cli-core/cli";
2
+ import { type MeetingSearchesService } from "@wirecat/cli-core/services";
3
+ import { type Command } from "commander";
4
+ import { type MeetingSearchRun } from "./meeting-search-commands.js";
5
+ /** Saved meeting searches: a query with its options under a name, run again with `searches run`. */
6
+ export declare const addMeetingSearchesCommands: (program: Command, deps: {
7
+ searches: () => Promise<MeetingSearchesService>;
8
+ search: MeetingSearchRun;
9
+ output: (body: Body) => void;
10
+ }) => void;
11
+ //# sourceMappingURL=meeting-searches-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meeting-searches-commands.d.ts","sourceRoot":"","sources":["../src/meeting-searches-commands.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,IAAI,EAWV,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,KAAK,sBAAsB,EAAiC,MAAM,4BAA4B,CAAA;AACvG,OAAO,EAAE,KAAK,OAAO,EAA0B,MAAM,WAAW,CAAA;AAChE,OAAO,EAAE,KAAK,gBAAgB,EAA2B,MAAM,8BAA8B,CAAA;AAsC7F,oGAAoG;AACpG,eAAO,MAAM,0BAA0B,YAC5B,OAAO,QACV;IACJ,QAAQ,EAAE,MAAM,OAAO,CAAC,sBAAsB,CAAC,CAAA;IAC/C,MAAM,EAAE,gBAAgB,CAAA;IACxB,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;CAC7B,KACA,IA0EF,CAAA"}
@@ -0,0 +1,107 @@
1
+ import { CliError } from "@wirecat/cli-base";
2
+ import { annotate } from "@wirecat/cli-base/commands";
3
+ import { FETCH, itemOf, LOCAL_READ, LOCAL_WRITE, listOf, listQuery, NO_EFFECTS, SEARCHES_QUERY, typedQuery, withQuery, } from "@wirecat/cli-core/cli";
4
+ import { savedSearchItem as searchItem } from "@wirecat/cli-core/services";
5
+ import { CommanderError, Option } from "commander";
6
+ import { meetingSearchDefinition } from "./meeting-search-commands.js";
7
+ /**
8
+ * A page position belongs to one run; saved, it would point into a result that no longer exists. Store ids are left
9
+ * out too: a saved search names what lasts — dates, a project, a topic.
10
+ */
11
+ const UNSAVED = new Set(["cursor", "meetingId", "identityId", "personId", "seriesId", "tag"]);
12
+ const flagsOf = (typed) => {
13
+ const { command } = meetingSearchDefinition();
14
+ return command.options.flatMap((option) => {
15
+ const value = typed[option.attributeName()];
16
+ if (value === undefined || !option.long)
17
+ return [];
18
+ return value === true ? [option.long] : [option.long, String(value)];
19
+ });
20
+ };
21
+ /** The options as `search meetings` reads them, read again at each run. */
22
+ const parsed = async (query, typed) => {
23
+ const { program, command } = meetingSearchDefinition();
24
+ let found;
25
+ command.action((text, options) => {
26
+ found = { query: text, options };
27
+ });
28
+ for (const one of [program, ...program.commands, command])
29
+ one.exitOverride().configureOutput({ writeErr: () => { }, writeOut: () => { } });
30
+ try {
31
+ await program.parseAsync(["search", "meetings", query, ...flagsOf(typed)], { from: "user" });
32
+ }
33
+ catch (error) {
34
+ if (error instanceof CommanderError)
35
+ throw new CliError("validation_error", error.message.replace(/^error: /, ""));
36
+ throw error;
37
+ }
38
+ if (!found)
39
+ throw new CliError("validation_error", "the saved search could not be read");
40
+ return found;
41
+ };
42
+ /** Saved meeting searches: a query with its options under a name, run again with `searches run`. */
43
+ export const addMeetingSearchesCommands = (program, deps) => {
44
+ const searches = annotate(program.command("searches"), { effects: NO_EFFECTS }).description("saved meeting searches: a query and its options under a name");
45
+ const create = annotate(searches.command("create"), {
46
+ effects: LOCAL_WRITE,
47
+ output: { entity: "saved_search" },
48
+ examples: ['zm personal searches create weekly-plan "example plan date>=7d" --project RES --json'],
49
+ })
50
+ .description("save a search meetings query and its options without running it")
51
+ .argument("<name>", "up to 64 letters a–z, digits and hyphens, not only digits")
52
+ .argument("<query>", "the query, as search meetings takes it")
53
+ .option("--replace", "overwrite a saved search of the same name");
54
+ for (const option of meetingSearchDefinition().command.options)
55
+ if (!UNSAVED.has(option.attributeName()))
56
+ create.addOption(new Option(option.flags, option.description).hideHelp(option.hidden));
57
+ create.action(async (name, query, flags) => {
58
+ const { replace, ...typed } = flags;
59
+ await parsed(query, typed);
60
+ const saved = await (await deps.searches()).create(name, { query, options: typed }, { replace: replace === true });
61
+ deps.output(itemOf(searchItem(saved)));
62
+ });
63
+ annotate(searches.command("run"), {
64
+ effects: FETCH,
65
+ output: { entity: "meeting_hit" },
66
+ examples: ["zm personal searches run weekly-plan --json"],
67
+ })
68
+ .description("run a saved search; answers as search meetings does")
69
+ .argument("<name>", "a saved search's name")
70
+ .action(async (name) => {
71
+ const saved = await (await deps.searches()).run(name);
72
+ const { query, options } = await parsed(saved.query, saved.options);
73
+ deps.output(await deps.search(query, options));
74
+ });
75
+ withQuery(annotate(searches.command("list"), {
76
+ effects: LOCAL_READ,
77
+ output: { entity: "saved_search" },
78
+ examples: ["zm personal searches list --json"],
79
+ }), SEARCHES_QUERY)
80
+ .description("the saved meeting searches, by name")
81
+ .action(async (words) => {
82
+ listQuery(typedQuery(words), SEARCHES_QUERY, "searches list");
83
+ const found = await (await deps.searches()).list();
84
+ deps.output(listOf("searches list", { items: found.map(searchItem), limit: Math.max(1, found.length), has_more: false }));
85
+ });
86
+ annotate(searches.command("show"), {
87
+ effects: LOCAL_READ,
88
+ output: { entity: "saved_search" },
89
+ examples: ["zm personal searches show weekly-plan"],
90
+ })
91
+ .description("one saved search: its query, options and how often it ran")
92
+ .argument("<name>", "a saved search's name")
93
+ .action(async (name) => {
94
+ deps.output(itemOf(searchItem(await (await deps.searches()).show(name))));
95
+ });
96
+ annotate(searches.command("delete"), {
97
+ effects: LOCAL_WRITE,
98
+ output: { entity: "saved_search" },
99
+ examples: ["zm personal searches delete weekly-plan"],
100
+ })
101
+ .description("delete a saved search")
102
+ .argument("<name>", "a saved search's name")
103
+ .action(async (name) => {
104
+ deps.output(itemOf(searchItem(await (await deps.searches()).delete(name))));
105
+ });
106
+ };
107
+ //# sourceMappingURL=meeting-searches-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meeting-searches-commands.js","sourceRoot":"","sources":["../src/meeting-searches-commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { Command } from "commander";
2
+ export interface SelectionFlags {
3
+ eventId?: number;
4
+ project?: string;
5
+ topic?: string;
6
+ sinceTime?: string;
7
+ untilTime?: string;
8
+ timezone?: string;
9
+ }
10
+ /** The meetings a stats, review or links answer covers: the options and the request they become. */
11
+ export declare const selectionOptions: (command: Command) => Command;
12
+ export declare const selectionOf: (flags: SelectionFlags, signal?: AbortSignal, defaultSince?: string) => {
13
+ request: {
14
+ eventId?: number | undefined;
15
+ project?: string | undefined;
16
+ topic?: string | undefined;
17
+ since?: number | undefined;
18
+ until?: number | undefined;
19
+ signal?: AbortSignal | undefined;
20
+ };
21
+ zone: string;
22
+ meta: {
23
+ window?: {
24
+ since?: string;
25
+ until?: string;
26
+ };
27
+ timezone: string;
28
+ };
29
+ };
30
+ //# sourceMappingURL=meeting-selection-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meeting-selection-options.d.ts","sourceRoot":"","sources":["../src/meeting-selection-options.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGxC,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,oGAAoG;AACpG,eAAO,MAAM,gBAAgB,YAAa,OAAO,KAAG,OAOuB,CAAA;AAE3E,eAAO,MAAM,WAAW,UAAW,cAAc,WAAW,WAAW,iBAAiB,MAAM;;;;;;;;;;;;;;;;;CAe7F,CAAA"}
@@ -0,0 +1,27 @@
1
+ import { dateWindow } from "@wirecat/cli-core/cli";
2
+ import { bytes } from "./execution.js";
3
+ /** The meetings a stats, review or links answer covers: the options and the request they become. */
4
+ export const selectionOptions = (command) => command
5
+ .option("--since-time <time>", "meetings starting at or after this date or time (ISO 8601, or 30d ago)")
6
+ .option("--until-time <time>", "meetings starting at or before this date or time; a date alone is that whole day")
7
+ .option("--timezone <zone>", "the IANA zone dates and weeks are read in (default: this computer's)")
8
+ .option("--event-id <id>", "only meetings linked to this stored event", bytes)
9
+ .option("--project <name>", "meetings confirmed in this project, by name, key or alias")
10
+ .option("--topic <name>", "meetings with this topic, by name or alias");
11
+ export const selectionOf = (flags, signal, defaultSince) => {
12
+ const zone = flags.timezone ?? Intl.DateTimeFormat().resolvedOptions().timeZone;
13
+ const window = dateWindow({ sinceTime: flags.sinceTime ?? defaultSince, untilTime: flags.untilTime, zone });
14
+ return {
15
+ request: {
16
+ ...(flags.eventId === undefined ? {} : { eventId: flags.eventId }),
17
+ ...(flags.project === undefined ? {} : { project: flags.project }),
18
+ ...(flags.topic === undefined ? {} : { topic: flags.topic }),
19
+ ...(window.since === undefined ? {} : { since: window.since }),
20
+ ...(window.until === undefined ? {} : { until: window.until }),
21
+ ...(signal ? { signal } : {}),
22
+ },
23
+ zone,
24
+ meta: { ...window.meta, timezone: zone },
25
+ };
26
+ };
27
+ //# sourceMappingURL=meeting-selection-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meeting-selection-options.js","sourceRoot":"","sources":["../src/meeting-selection-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAWtC,oGAAoG;AACpG,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAgB,EAAW,EAAE,CAC5D,OAAO;KACJ,MAAM,CAAC,qBAAqB,EAAE,wEAAwE,CAAC;KACvG,MAAM,CAAC,qBAAqB,EAAE,kFAAkF,CAAC;KACjH,MAAM,CAAC,mBAAmB,EAAE,sEAAsE,CAAC;KACnG,MAAM,CAAC,iBAAiB,EAAE,2CAA2C,EAAE,KAAK,CAAC;KAC7E,MAAM,CAAC,kBAAkB,EAAE,2DAA2D,CAAC;KACvF,MAAM,CAAC,gBAAgB,EAAE,4CAA4C,CAAC,CAAA;AAE3E,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAqB,EAAE,MAAoB,EAAE,YAAqB,EAAE,EAAE;IAChG,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAA;IAC/E,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,YAAY,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC3G,OAAO;QACL,OAAO,EAAE;YACP,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;YAClE,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;YAClE,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;YAC5D,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;YAC9D,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;YAC9D,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9B;QACD,IAAI;QACJ,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;KACzC,CAAA;AACH,CAAC,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { type Body } from "@wirecat/cli-core/cli";
2
- import type { MeetingStats } from "@wirecat/cli-core/meetings";
2
+ import { type MeetingStats } from "@wirecat/cli-core/meetings";
3
3
  import type { MeetingStatsRequest } from "@wirecat/cli-core/services";
4
4
  import type { Command } from "commander";
5
5
  export type MeetingStatsRead = (request: Omit<MeetingStatsRequest, "accountId">) => Promise<MeetingStats>;
@@ -1 +1 @@
1
- {"version":3,"file":"meeting-stats-commands.d.ts","sourceRoot":"","sources":["../src/meeting-stats-commands.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAsD,MAAM,uBAAuB,CAAA;AACrG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AACrE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAcxC,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,WAAW,CAAC,KAAK,OAAO,CAAC,YAAY,CAAC,CAAA;AA0CzG;;;GAGG;AACH,eAAO,MAAM,uBAAuB,YACzB,OAAO,QACV;IAAE,IAAI,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,WAAW,GAAG,SAAS,CAAC;IAAC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;CAAE,KACnH,IAqDF,CAAA"}
1
+ {"version":3,"file":"meeting-stats-commands.d.ts","sourceRoot":"","sources":["../src/meeting-stats-commands.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAA0C,MAAM,uBAAuB,CAAA;AACzF,OAAO,EAAE,KAAK,YAAY,EAAwC,MAAM,4BAA4B,CAAA;AACpG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AACrE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AASxC,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,WAAW,CAAC,KAAK,OAAO,CAAC,YAAY,CAAC,CAAA;AAiBzG;;;GAGG;AACH,eAAO,MAAM,uBAAuB,YACzB,OAAO,QACV;IAAE,IAAI,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,WAAW,GAAG,SAAS,CAAC;IAAC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;CAAE,KACnH,IAsCF,CAAA"}
@@ -1,42 +1,16 @@
1
1
  import { annotate } from "@wirecat/cli-base/commands";
2
- import { dateWindow, itemOf, LOCAL_READ, listOf, NO_EFFECTS } from "@wirecat/cli-core/cli";
2
+ import { itemOf, LOCAL_READ, listOf, NO_EFFECTS } from "@wirecat/cli-core/cli";
3
+ import { meetingSpeakerItem, meetingStatsItem } from "@wirecat/cli-core/meetings";
3
4
  import { bytes } from "./execution.js";
4
- const filters = (command) => command
5
- .option("--since-time <time>", "meetings starting at or after this date or time (ISO 8601, or 30d ago)")
6
- .option("--until-time <time>", "meetings starting at or before this date or time; a date alone is that whole day")
7
- .option("--timezone <zone>", "the IANA zone dates and weeks are read in (default: this computer's)")
8
- .option("--event-id <id>", "only meetings linked to this stored event", bytes)
9
- .option("--project <name>", "meetings confirmed in this project, by name, key or alias")
10
- .option("--topic <name>", "meetings with this topic, by name or alias")
11
- .option("--max-rows <n>", "most transcript lines to read (default and at most 500000)", bytes);
5
+ import { selectionOf, selectionOptions } from "./meeting-selection-options.js";
6
+ const filters = (command) => selectionOptions(command).option("--max-rows <n>", "most transcript lines to read (default and at most 500000)", bytes);
12
7
  const requestOf = (flags, signal) => {
13
- const zone = flags.timezone ?? Intl.DateTimeFormat().resolvedOptions().timeZone;
14
- const window = dateWindow({ sinceTime: flags.sinceTime, untilTime: flags.untilTime, zone });
8
+ const { request, zone, meta } = selectionOf(flags, signal);
15
9
  return {
16
- request: {
17
- ...(flags.eventId === undefined ? {} : { eventId: flags.eventId }),
18
- ...(flags.project === undefined ? {} : { project: flags.project }),
19
- ...(flags.topic === undefined ? {} : { topic: flags.topic }),
20
- ...(window.since === undefined ? {} : { since: window.since }),
21
- ...(window.until === undefined ? {} : { until: window.until }),
22
- ...(flags.maxRows === undefined ? {} : { maxRows: flags.maxRows }),
23
- timeZone: zone,
24
- ...(signal ? { signal } : {}),
25
- },
26
- meta: { ...window.meta, timezone: zone },
10
+ request: { ...request, ...(flags.maxRows === undefined ? {} : { maxRows: flags.maxRows }), timeZone: zone },
11
+ meta,
27
12
  };
28
13
  };
29
- const speaker = (one) => ({
30
- key: one.key,
31
- name: one.name,
32
- person_id: one.personId,
33
- identity_id: one.identityId,
34
- meetings: one.meetings,
35
- lines: one.lines,
36
- words: one.words,
37
- talk_ms: one.talkMs,
38
- share: one.share,
39
- });
40
14
  /**
41
15
  * `stats meetings show|top`: how much was said, by whom, and in which weeks, over the meetings search would read.
42
16
  * Numbers only; no transcript text is read or shown.
@@ -47,28 +21,18 @@ export const addMeetingStatsCommands = (program, deps) => {
47
21
  const meetings = annotate(stats.command("meetings"), { effects: NO_EFFECTS }).description("talk time, lines and words, by speaker and by week");
48
22
  annotate(filters(meetings.command("show")), {
49
23
  effects: LOCAL_READ,
24
+ output: { entity: "meeting_stats" },
50
25
  examples: ["zm personal stats meetings show --since-time 30d --json"],
51
26
  })
52
27
  .description("meetings, lines, words and talk time by week, with the top speakers")
53
28
  .action(async (flags) => {
54
29
  const { request, meta } = requestOf(flags, deps.signal());
55
30
  const found = await (await deps.read())(request);
56
- deps.output(itemOf({
57
- time_zone: found.timeZone,
58
- meetings: found.meetings,
59
- lines: found.lines,
60
- words: found.words,
61
- talk_ms: found.talkMs,
62
- weeks: found.weeks.map((week) => ({
63
- week_start: week.weekStart,
64
- meetings: week.meetings,
65
- talk_ms: week.talkMs,
66
- })),
67
- top_speakers: found.speakers.slice(0, 10).map(speaker),
68
- }, { meta }));
31
+ deps.output(itemOf(meetingStatsItem(found), { meta }));
69
32
  });
70
33
  annotate(filters(meetings.command("top")), {
71
34
  effects: LOCAL_READ,
35
+ output: { entity: "meeting_speaker" },
72
36
  examples: ["zm personal stats meetings top --project RES --limit 5 --json"],
73
37
  })
74
38
  .description("speakers by talk time: lines, words, meetings and their share of the talk")
@@ -78,7 +42,7 @@ export const addMeetingStatsCommands = (program, deps) => {
78
42
  const found = await (await deps.read())(request);
79
43
  const limit = flags.limit ?? 20;
80
44
  deps.output(listOf("stats meetings top", {
81
- items: found.speakers.slice(0, limit).map(speaker),
45
+ items: found.speakers.slice(0, limit).map(meetingSpeakerItem),
82
46
  limit,
83
47
  has_more: found.speakers.length > limit,
84
48
  meta,
@@ -1 +1 @@
1
- {"version":3,"file":"meeting-stats-commands.js","sourceRoot":"","sources":["../src/meeting-stats-commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"meeting-stats-commands.js","sourceRoot":"","sources":["../src/meeting-stats-commands.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ import type { ZoomPreparationOptions } from "./meeting-preparation.js";
7
7
  import type { ProgramDeps } from "./program.js";
8
8
  import type { StoreConnection, StoreConnectRequest } from "./store-connection.js";
9
9
  export interface StoreCommandContext {
10
- deps: Pick<ProgramDeps, "now" | "archiveTranscripts" | "readBatchInput">;
10
+ deps: Pick<ProgramDeps, "now" | "archiveTranscripts" | "readBatchInput" | "diagnostic">;
11
11
  /** The one connection a command run shares; opened on first use. */
12
12
  connected: (intent?: StoreConnectRequest["intent"]) => Promise<StoreConnection>;
13
13
  /** A connection of its own, which the caller closes. */
@@ -1 +1 @@
1
- {"version":3,"file":"store-commands.d.ts","sourceRoot":"","sources":["../src/store-commands.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,IAAI,EAEV,MAAM,uBAAuB,CAAA;AAG9B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,KAAK,YAAY,EAAU,MAAM,oBAAoB,CAAA;AAG9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAGpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAA;AAGzE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAMtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAGjF,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,oBAAoB,GAAG,gBAAgB,CAAC,CAAA;IACxE,oEAAoE;IACpE,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,eAAe,CAAC,CAAA;IAC/E,wDAAwD;IACxD,SAAS,EAAE,CAAC,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC,eAAe,CAAC,CAAA;IACxG,WAAW,EAAE,sBAAsB,CAAA;IACnC,MAAM,EAAE,MAAM,WAAW,GAAG,SAAS,CAAA;IACrC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAC5B,WAAW,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9D,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACtC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,OAAO,KAAK,MAAM,CAAA;IAC/E,MAAM,EAAE,MAAM,MAAM,EAAE,GAAG,SAAS,CAAA;IAClC,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;CAC7B;AAED,gGAAgG;AAChG,eAAO,MAAM,gBAAgB,YAAa,OAAO,WAAW,mBAAmB,KAAG,IAyIjF,CAAA"}
1
+ {"version":3,"file":"store-commands.d.ts","sourceRoot":"","sources":["../src/store-commands.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,IAAI,EAEV,MAAM,uBAAuB,CAAA;AAG9B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,KAAK,YAAY,EAAU,MAAM,oBAAoB,CAAA;AAG9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAGpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAA;AAGzE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAQtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAGjF,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,oBAAoB,GAAG,gBAAgB,GAAG,YAAY,CAAC,CAAA;IACvF,oEAAoE;IACpE,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,eAAe,CAAC,CAAA;IAC/E,wDAAwD;IACxD,SAAS,EAAE,CAAC,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC,eAAe,CAAC,CAAA;IACxG,WAAW,EAAE,sBAAsB,CAAA;IACnC,MAAM,EAAE,MAAM,WAAW,GAAG,SAAS,CAAA;IACrC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAC5B,WAAW,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9D,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACtC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,OAAO,KAAK,MAAM,CAAA;IAC/E,MAAM,EAAE,MAAM,MAAM,EAAE,GAAG,SAAS,CAAA;IAClC,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;CAC7B;AAED,gGAAgG;AAChG,eAAO,MAAM,gBAAgB,YAAa,OAAO,WAAW,mBAAmB,KAAG,IAkKjF,CAAA"}