@wirecat/zoom-cli 0.39.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/README.md +5 -3
- 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 +25 -22
- 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 +14 -54
- 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 +19 -19
- package/dist/first-screen.js.map +1 -1
- package/dist/ingestion-search-commands.d.ts.map +1 -1
- package/dist/ingestion-search-commands.js +6 -2
- package/dist/ingestion-search-commands.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/local-transcription.js +1 -1
- package/dist/local-transcription.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 +16 -21
- package/dist/mcp.js.map +1 -1
- package/dist/meeting-context-commands.js +3 -3
- package/dist/meeting-context-commands.js.map +1 -1
- package/dist/meeting-integration-commands.js +2 -2
- package/dist/meeting-integration-commands.js.map +1 -1
- package/dist/meeting-search-commands.js +3 -3
- package/dist/meeting-search-commands.js.map +1 -1
- package/dist/meeting-semantic-commands.js +1 -1
- package/dist/meeting-semantic-commands.js.map +1 -1
- package/dist/models-commands.d.ts +1 -1
- package/dist/models-commands.d.ts.map +1 -1
- package/dist/models-commands.js +40 -46
- 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 +13 -9
- 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 +13 -13
- 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 +30 -13
- 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 +5 -2
- package/dist/watch-commands.js.map +1 -1
- package/package.json +2 -2
- package/scenarios/archive-recordings.md +5 -5
- package/scenarios/catch-up.md +4 -4
- package/scenarios/find-quote.md +3 -3
- package/scenarios/person-in-meetings.md +4 -4
- package/scenarios/prepare-meeting.md +3 -3
- package/skills/zoom-cli/SKILL.md +2 -2
package/dist/program.js
CHANGED
|
@@ -1,431 +1,31 @@
|
|
|
1
|
-
import { CliError
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
import { addZoomSkillCommands } from "./agent-skill.js";
|
|
6
|
-
import { bodyOf, renderBody, usageMessage, wholeList } from "./answer-output.js";
|
|
7
|
-
import { commandSelection, hostFailureContext, reportFailure } from "./answer-policy.js";
|
|
8
|
-
import { addArchiveCommands, } from "./archive-commands.js";
|
|
9
|
-
import { readArchiveTranscripts, searchArchiveTranscripts } from "./archive-transcripts.js";
|
|
10
|
-
import { annotateMeetingCommands } from "./commands.js";
|
|
11
|
-
import { filesZone, profileAccountKey, readConfig } from "./config.js";
|
|
12
|
-
import { cancellableStore, checkCancelled, ZoneAssumptions } from "./errors.js";
|
|
13
|
-
import { bytes, duration, resetCliOptions, startExecution } from "./execution.js";
|
|
14
|
-
import { fileNamesHelp, importFile, readDownloadedFiles, validateDownloadedFiles } from "./files.js";
|
|
15
|
-
import { installFirstScreen } from "./first-screen.js";
|
|
16
|
-
import { liftJsonFields } from "./json-fields.js";
|
|
17
|
-
import { addMcpCommands, runForAgent } from "./mcp-command.js";
|
|
18
|
-
import { addZoomMeetingCommands } from "./meeting-commands.js";
|
|
19
|
-
import { captureContextSources } from "./meeting-communications-binding.js";
|
|
20
|
-
import { addZoomInventoryCommand } from "./meeting-inventory.js";
|
|
21
|
-
import { configuredMeetingSource } from "./meeting-source.js";
|
|
22
|
-
import { guardCommand } from "./permissions.js";
|
|
23
|
-
import { PROFILE_HELP, profileSelection, recordProfile, showProfileInUsage } from "./profile-word.js";
|
|
24
|
-
import { addRecordingScheduleCommands } from "./recording-schedule-commands.js";
|
|
25
|
-
import { zoomRecordingSchedule } from "./recording-schedule-setup.js";
|
|
26
|
-
import { inspectArchive, inspectArchiveLocks, recoverArchiveLocks, verifyArchive, ZoomRecordings, } from "./recordings.js";
|
|
27
|
-
import { ZoomRemoteMeetings } from "./remote-meetings.js";
|
|
28
|
-
import { addConfigCommands, addSessionCommands } from "./setup-commands.js";
|
|
29
|
-
import { addStoreCommands } from "./store-commands.js";
|
|
30
|
-
import { connectSelectedProfile, storeUnavailable, unavailableStore, } from "./store-connection.js";
|
|
31
|
-
import { emitReceipt } from "./streaming.js";
|
|
32
|
-
import { VERSION } from "./version.js";
|
|
33
|
-
import { addWatchCommand } from "./watch-commands.js";
|
|
34
|
-
import { createWatchService } from "./watch-service.js";
|
|
35
|
-
const answerExitCodes = new WeakMap();
|
|
36
|
-
const HELP_EXITS = new Set(["commander.helpDisplayed", "commander.help", "commander.version"]);
|
|
1
|
+
import { CliError } from "@wirecat/cli-base";
|
|
2
|
+
import { createProgram as sharedProgram } from "@wirecat/cli-core/cli";
|
|
3
|
+
import { runCommand, zoomDefinition } from "./run.js";
|
|
4
|
+
export const run = runCommand;
|
|
37
5
|
export const createProgram = (deps) => {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
let parsing = false;
|
|
42
|
-
let execution;
|
|
43
|
-
let fields;
|
|
44
|
-
let activeTokens;
|
|
45
|
-
const selection = profileSelection(deps.env ?? process.env, () => getConfig().profiles);
|
|
46
|
-
const profile = selection.profile;
|
|
47
|
-
const currentExecution = () => execution;
|
|
48
|
-
const signal = () => currentExecution()?.deadline.signal ?? deps.signal;
|
|
49
|
-
const fetchWithSignal = (fetcher) => (input, init) => {
|
|
50
|
-
checkCancelled(signal());
|
|
51
|
-
if (program.opts().offline)
|
|
52
|
-
throw new CliError("configuration_error", "the command requires network access; remove --offline");
|
|
53
|
-
const operation = signal();
|
|
54
|
-
return fetcher(input, {
|
|
55
|
-
...init,
|
|
56
|
-
signal: operation && init?.signal ? AbortSignal.any([operation, init.signal]) : (operation ?? init?.signal),
|
|
57
|
-
});
|
|
58
|
-
};
|
|
59
|
-
const tokens = () => (activeTokens ??= deps.tokens
|
|
60
|
-
.forProfile(profile(), getConfig().legacyProfile)
|
|
61
|
-
.withSignal(signal(), fetchWithSignal(deps.tokens.options.fetch)));
|
|
62
|
-
const buffer = (text) => {
|
|
63
|
-
if (!execution)
|
|
64
|
-
throw new CliError("configuration_error", "command execution is not initialized");
|
|
65
|
-
execution.output.data(text);
|
|
66
|
-
};
|
|
67
|
-
const guardedStore = (store) => cancellableStore(store, signal);
|
|
68
|
-
let selectedStore = deps.store;
|
|
69
|
-
let selectedAccountId = deps.accountId;
|
|
70
|
-
const requireAccount = () => {
|
|
71
|
-
if (!Number.isSafeInteger(selectedAccountId) || !selectedAccountId || selectedAccountId < 1)
|
|
72
|
-
throw new CliError("configuration_error", "the selected meeting account is unavailable");
|
|
73
|
-
return selectedAccountId;
|
|
74
|
-
};
|
|
75
|
-
const openStore = async (intent, context) => {
|
|
76
|
-
if (!deps.connectStore)
|
|
77
|
-
return storeUnavailable();
|
|
78
|
-
const selected = profile();
|
|
79
|
-
if (intent === "ingestion")
|
|
80
|
-
recordProfile(deps.configPath, selected);
|
|
81
|
-
try {
|
|
82
|
-
return await connectSelectedProfile(deps.connectStore, selected, intent, context);
|
|
83
|
-
}
|
|
84
|
-
catch (error) {
|
|
85
|
-
if (isCliError(error))
|
|
86
|
-
throw error;
|
|
87
|
-
throw new CliError("configuration_error", "could not open the shared meeting store");
|
|
88
|
-
}
|
|
89
|
-
};
|
|
90
|
-
const connected = (intent = "read") => (connecting ??= openStore(intent));
|
|
91
|
-
const zones = new ZoneAssumptions();
|
|
92
|
-
const ask = () => (program.opts().input === false ? undefined : deps.confirm);
|
|
93
|
-
const program = new Command()
|
|
94
|
-
.name("zm")
|
|
95
|
-
.version(VERSION)
|
|
96
|
-
.usage("[profile] [options] <command>")
|
|
97
|
-
.description(`Zoom meeting transcripts and summaries\n\n${PROFILE_HELP}`)
|
|
98
|
-
.option("--json", "one JSON value; --json=id,title keeps only those fields")
|
|
99
|
-
.option("--jsonl", "one JSON object per item")
|
|
100
|
-
.option("--no-input", "disable interactive login")
|
|
101
|
-
.option("--quiet", "suppress non-error diagnostics")
|
|
102
|
-
.option("--timeout <duration>", "command deadline: reads 30s, login 5m, downloads/transcription 1h; watch/MCP have no default", duration)
|
|
103
|
-
.option("--max-output-bytes <bytes>", "bound rendered result bytes (default 4194304; zero is unlimited)", bytes)
|
|
104
|
-
.option("--offline", "refuse network requests")
|
|
105
|
-
.option("--debug", "on a failure, its whole record — cause and stack — in place of the short line")
|
|
106
|
-
.exitOverride()
|
|
107
|
-
.configureOutput({ writeOut: deps.data, writeErr: deps.diagnostic, outputError: () => { } });
|
|
108
|
-
const formatOf = () => program.opts().jsonl ? "jsonl" : program.opts().json || !deps.outputIsTTY ? "json" : "pretty";
|
|
109
|
-
const rendered = (body, format = formatOf(), selectFields = true) => {
|
|
110
|
-
if (!execution)
|
|
111
|
-
throw new CliError("configuration_error", "command execution is not initialized");
|
|
112
|
-
const answer = renderBody(execution.action, body, {
|
|
113
|
-
format,
|
|
114
|
-
warnings: zones.take(),
|
|
115
|
-
meta: execution.meta(),
|
|
116
|
-
fields: selectFields ? fields : undefined,
|
|
117
|
-
quiet: Boolean(program.opts().quiet),
|
|
118
|
-
diagnostic: deps.diagnostic,
|
|
119
|
-
});
|
|
120
|
-
answerExitCodes.set(program, Math.max(answerExitCodes.get(program) ?? 0, answer.exitCode));
|
|
121
|
-
return answer.text;
|
|
6
|
+
const program = sharedProgram(zoomDefinition(deps));
|
|
7
|
+
program.parse = () => {
|
|
8
|
+
throw new CliError("validation_error", "use parseAsync so command guards and cleanup run before returning");
|
|
122
9
|
};
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
throw new CliError("configuration_error", "the command requires network access; remove --offline");
|
|
126
|
-
if (!getConfig().clientId)
|
|
127
|
-
throw new CliError("configuration_error", "run zm config set zoom.client_id <Public Client ID> first");
|
|
128
|
-
};
|
|
129
|
-
program.hook("preAction", async (_root, action) => {
|
|
130
|
-
if (deps.atStart)
|
|
131
|
-
await deps.atStart(action);
|
|
132
|
-
const asking = guardCommand(action, deps.env ?? process.env, { profile: selection.named, config: getConfig }, ask());
|
|
133
|
-
if (asking)
|
|
134
|
-
await asking;
|
|
135
|
-
const opts = action.optsWithGlobals();
|
|
136
|
-
if (opts.json && opts.jsonl)
|
|
137
|
-
throw new CliError("validation_error", "choose --json or --jsonl");
|
|
138
|
-
checkJson(action, { json: opts.json === true, ...(fields ? { fields: fields.join(",") } : {}) }, false);
|
|
139
|
-
execution = startExecution(action, { signal: deps.signal, sleep: deps.sleep, now: deps.now });
|
|
140
|
-
checkCancelled(signal());
|
|
141
|
-
if (!storeCommands.has(action))
|
|
142
|
-
return;
|
|
143
|
-
const config = getConfig();
|
|
144
|
-
const ingestion = action.parent?.name() === "meetings" && ["sync", "import"].includes(action.name());
|
|
145
|
-
if (opts.offline && ingestion && action.name() !== "import" && config.source === "api" && !deps.source)
|
|
146
|
-
throw new CliError("configuration_error", "API sync requires network access; remove --offline");
|
|
147
|
-
if (!selectedStore) {
|
|
148
|
-
const connection = await connected(ingestion ? "ingestion" : "read");
|
|
149
|
-
selectedStore = connection.store;
|
|
150
|
-
selectedAccountId = connection.accountId;
|
|
151
|
-
}
|
|
152
|
-
requireAccount();
|
|
153
|
-
});
|
|
154
|
-
const output = (body) => buffer(rendered(body));
|
|
155
|
-
const outputItems = async (values) => {
|
|
156
|
-
const items = [];
|
|
157
|
-
// Fails on the row that crosses --max-output-bytes, so a long iterator stops reading there.
|
|
158
|
-
const measured = createOutputBuffer({ maxOutputBytes: program.opts().maxOutputBytes });
|
|
159
|
-
for await (const value of values) {
|
|
160
|
-
checkCancelled(signal());
|
|
161
|
-
const item = snakeKeys(value);
|
|
162
|
-
measured.data(JSON.stringify(fields ? projectFields(item, fields) : item));
|
|
163
|
-
items.push(item);
|
|
164
|
-
}
|
|
165
|
-
output(wholeList("list", items));
|
|
166
|
-
};
|
|
167
|
-
addConfigCommands(program, { configPath: deps.configPath, getConfig, output, profile });
|
|
168
|
-
const fetchApi = () => fetchWithSignal(deps.fetch);
|
|
169
|
-
const configured = configuredMeetingSource({ deps, getConfig, tokens, fetch: fetchApi, zones });
|
|
170
|
-
const source = configured.source;
|
|
171
|
-
const meetingCommands = {
|
|
172
|
-
get store() {
|
|
173
|
-
return guardedStore(selectedStore ?? unavailableStore);
|
|
174
|
-
},
|
|
175
|
-
get accountId() {
|
|
176
|
-
return requireAccount();
|
|
177
|
-
},
|
|
178
|
-
source,
|
|
179
|
-
importHelp: fileNamesHelp(() => getConfig()),
|
|
180
|
-
readFiles: async (folder) => {
|
|
181
|
-
const config = getConfig();
|
|
182
|
-
return validateDownloadedFiles(await (deps.readFiles ?? readDownloadedFiles)(folder), filesZone(config)).map((file) => importFile(file, requireAccount(), filesZone(config)));
|
|
183
|
-
},
|
|
184
|
-
now: deps.now,
|
|
185
|
-
write: (value) => output(bodyOf(value)),
|
|
186
|
-
writeFile: deps.writeFile
|
|
187
|
-
? async (path, content) => {
|
|
188
|
-
checkCancelled(signal());
|
|
189
|
-
await deps.writeFile?.(path, content, { signal: signal() });
|
|
190
|
-
checkCancelled(signal());
|
|
191
|
-
}
|
|
192
|
-
: undefined,
|
|
193
|
-
};
|
|
194
|
-
const before = new Set(program.commands);
|
|
195
|
-
addZoomMeetingCommands(program, meetingCommands);
|
|
196
|
-
const leaves = (command) => command.commands.length ? command.commands.flatMap(leaves) : [command];
|
|
197
|
-
// The meeting reads cli-core mounts read the store opened before their action; zoom's own commands open it lazily.
|
|
198
|
-
const storeCommands = new Set(program.commands.filter((group) => !before.has(group)).flatMap(leaves));
|
|
199
|
-
addSessionCommands(program, {
|
|
200
|
-
deps,
|
|
201
|
-
getConfig,
|
|
202
|
-
output,
|
|
203
|
-
buffer,
|
|
204
|
-
formatOf,
|
|
205
|
-
fields: () => fields,
|
|
206
|
-
api,
|
|
207
|
-
profile,
|
|
208
|
-
tokens,
|
|
209
|
-
fetch: () => fetchWithSignal(deps.fetch),
|
|
210
|
-
signal,
|
|
211
|
-
});
|
|
212
|
-
const watch = createWatchService({
|
|
213
|
-
deps,
|
|
214
|
-
getConfig,
|
|
215
|
-
profile,
|
|
216
|
-
tokens,
|
|
217
|
-
fetch: () => fetchWithSignal(deps.fetch),
|
|
218
|
-
offline: () => Boolean(program.opts().offline),
|
|
219
|
-
openStore,
|
|
220
|
-
guardedStore,
|
|
221
|
-
zones,
|
|
222
|
-
});
|
|
223
|
-
const receipt = async (body) => {
|
|
224
|
-
const text = rendered(body);
|
|
225
|
-
const operation = signal();
|
|
226
|
-
const grace = operation.aborted ? createDeadline({ timeoutMs: 1000 }) : undefined;
|
|
227
|
-
try {
|
|
228
|
-
await emitReceipt(text, program.opts().maxOutputBytes, async (serialized) => {
|
|
229
|
-
if (deps.streamData)
|
|
230
|
-
await deps.streamData(serialized, grace?.signal ?? operation);
|
|
231
|
-
else
|
|
232
|
-
deps.data(serialized);
|
|
233
|
-
});
|
|
234
|
-
}
|
|
235
|
-
finally {
|
|
236
|
-
grace?.dispose();
|
|
237
|
-
}
|
|
238
|
-
};
|
|
239
|
-
const retrySleep = deps.sleep;
|
|
240
|
-
const remoteOptions = {
|
|
241
|
-
now: deps.now,
|
|
242
|
-
sleep: retrySleep ? (ms, abort) => retrySleep(ms, abort, "retry") : undefined,
|
|
243
|
-
};
|
|
244
|
-
addWatchCommand(program, {
|
|
245
|
-
signal: () => signal(),
|
|
246
|
-
receipt,
|
|
247
|
-
outputIsTTY: deps.outputIsTTY,
|
|
248
|
-
sleep: remoteOptions.sleep,
|
|
249
|
-
prepare: watch.prepare,
|
|
250
|
-
ingest: watch.ingest,
|
|
251
|
-
});
|
|
252
|
-
addArchiveCommands(program, {
|
|
253
|
-
output,
|
|
254
|
-
outputItems,
|
|
255
|
-
transcripts: deps.archiveTranscripts ?? { read: readArchiveTranscripts, search: searchArchiveTranscripts },
|
|
256
|
-
receipt,
|
|
257
|
-
outputIsTTY: deps.outputIsTTY,
|
|
258
|
-
api,
|
|
259
|
-
account: () => profileAccountKey(profile()),
|
|
260
|
-
signal,
|
|
261
|
-
now: deps.now ?? Date.now,
|
|
262
|
-
recordings: () => deps.recordings ?? new ZoomRecordings(tokens(), fetchWithSignal(deps.fetch), remoteOptions, zones),
|
|
263
|
-
remoteMeetings: () => deps.remoteMeetings ?? new ZoomRemoteMeetings(tokens(), fetchWithSignal(deps.fetch), remoteOptions),
|
|
264
|
-
archive: deps.archive ?? {
|
|
265
|
-
inspect: inspectArchive,
|
|
266
|
-
verify: verifyArchive,
|
|
267
|
-
locks: inspectArchiveLocks,
|
|
268
|
-
recover: recoverArchiveLocks,
|
|
269
|
-
},
|
|
270
|
-
});
|
|
271
|
-
addRecordingScheduleCommands(program, {
|
|
272
|
-
...zoomRecordingSchedule({ deps, getConfig, profile, withSignal: fetchWithSignal, signal, remoteOptions, zones }),
|
|
273
|
-
offline: () => Boolean(program.opts().offline),
|
|
274
|
-
signal,
|
|
275
|
-
output,
|
|
276
|
-
receipt,
|
|
277
|
-
outputIsTTY: deps.outputIsTTY,
|
|
278
|
-
});
|
|
279
|
-
addZoomSkillCommands(program, () => {
|
|
280
|
-
const renderer = createRenderer({
|
|
281
|
-
format: formatOf(),
|
|
282
|
-
color: false,
|
|
283
|
-
quiet: Boolean(program.opts().quiet),
|
|
284
|
-
streams: { data: buffer, diagnostic: deps.diagnostic },
|
|
285
|
-
});
|
|
286
|
-
return {
|
|
287
|
-
renderer: {
|
|
288
|
-
...renderer,
|
|
289
|
-
result: (value) => output(bodyOf(value)),
|
|
290
|
-
stream: (items) => output(wholeList("skill", [...items])),
|
|
291
|
-
},
|
|
292
|
-
streams: { data: (text) => buffer(`${text}\n`), diagnostic: deps.diagnostic },
|
|
293
|
-
env: deps.env,
|
|
294
|
-
};
|
|
295
|
-
});
|
|
296
|
-
let capturedContext;
|
|
297
|
-
const preparationOptions = {
|
|
298
|
-
context: () => {
|
|
299
|
-
capturedContext ??= captureContextSources(getConfig().contextSources, profile());
|
|
300
|
-
return capturedContext;
|
|
301
|
-
},
|
|
302
|
-
credentials: () => {
|
|
303
|
-
api();
|
|
304
|
-
return tokens();
|
|
305
|
-
},
|
|
306
|
-
fetch: fetchWithSignal(deps.fetch),
|
|
307
|
-
remoteOptions,
|
|
308
|
-
};
|
|
309
|
-
addZoomInventoryCommand(program, {
|
|
310
|
-
profile,
|
|
311
|
-
...preparationOptions,
|
|
312
|
-
signal,
|
|
313
|
-
now: deps.now,
|
|
314
|
-
output: (value) => output(bodyOf(value)),
|
|
315
|
-
});
|
|
316
|
-
addMcpCommands(program, {
|
|
317
|
-
profile,
|
|
318
|
-
permissions: (name) => readConfig(deps.configPath).permissions[name] ?? {},
|
|
319
|
-
run: (argv) => runForAgent(run, argv, deps),
|
|
320
|
-
signal,
|
|
321
|
-
serve: deps.serveMcp,
|
|
322
|
-
});
|
|
323
|
-
addStoreCommands(program, {
|
|
324
|
-
deps,
|
|
325
|
-
connected,
|
|
326
|
-
openStore,
|
|
327
|
-
preparation: preparationOptions,
|
|
328
|
-
signal,
|
|
329
|
-
output,
|
|
330
|
-
outputItems,
|
|
331
|
-
receipt,
|
|
332
|
-
buffer,
|
|
333
|
-
rendered,
|
|
334
|
-
fields: () => fields,
|
|
335
|
-
meta: () => {
|
|
336
|
-
if (!execution)
|
|
337
|
-
throw new CliError("configuration_error", "command execution is not initialized");
|
|
338
|
-
return execution.meta();
|
|
339
|
-
},
|
|
340
|
-
});
|
|
341
|
-
annotateMeetingCommands(program);
|
|
342
|
-
installFirstScreen(program);
|
|
343
|
-
showProfileInUsage(program);
|
|
344
|
-
const parseAsync = program.parseAsync.bind(program);
|
|
345
|
-
program.parseAsync = async (...args) => {
|
|
10
|
+
let parsing = false;
|
|
11
|
+
program.parseAsync = async (argv = process.argv, options) => {
|
|
346
12
|
if (parsing)
|
|
347
13
|
throw new CliError("validation_error", "concurrent command parsing is unavailable");
|
|
348
|
-
resetCliOptions(program);
|
|
349
14
|
parsing = true;
|
|
350
|
-
answerExitCodes.set(program, 0);
|
|
351
|
-
config = undefined;
|
|
352
|
-
configured.reset();
|
|
353
|
-
execution = undefined;
|
|
354
|
-
activeTokens = undefined;
|
|
355
|
-
watch.reset();
|
|
356
|
-
const lifted = liftJsonFields(program, selection.lift(program, args));
|
|
357
|
-
fields = lifted.fields;
|
|
358
|
-
let result = program;
|
|
359
|
-
let failed = false;
|
|
360
15
|
let failure;
|
|
361
|
-
const running = parseAsync(...lifted.args);
|
|
362
|
-
void running.catch(() => { });
|
|
363
16
|
try {
|
|
364
|
-
const
|
|
365
|
-
|
|
366
|
-
}
|
|
367
|
-
catch (error) {
|
|
368
|
-
await running.catch(() => { });
|
|
369
|
-
failed = true;
|
|
370
|
-
failure = error;
|
|
371
|
-
}
|
|
372
|
-
finally {
|
|
373
|
-
if (connecting) {
|
|
374
|
-
const closing = connecting;
|
|
375
|
-
connecting = undefined;
|
|
376
|
-
selectedStore = deps.store;
|
|
377
|
-
selectedAccountId = deps.accountId;
|
|
378
|
-
try {
|
|
379
|
-
await (await closing.catch(() => undefined))?.close();
|
|
380
|
-
}
|
|
381
|
-
catch {
|
|
382
|
-
if (!failed) {
|
|
383
|
-
failed = true;
|
|
384
|
-
failure = new CliError("configuration_error", "could not close the shared meeting store");
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
}
|
|
388
|
-
}
|
|
389
|
-
if (!failed) {
|
|
390
|
-
try {
|
|
391
|
-
checkCancelled(signal());
|
|
392
|
-
}
|
|
393
|
-
catch (error) {
|
|
394
|
-
failed = true;
|
|
17
|
+
const args = options?.from === "user" ? argv : argv.slice(2);
|
|
18
|
+
await runCommand([...args], deps, (error) => {
|
|
395
19
|
failure = error;
|
|
396
|
-
}
|
|
20
|
+
});
|
|
21
|
+
if (failure)
|
|
22
|
+
throw failure;
|
|
23
|
+
return program;
|
|
397
24
|
}
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
if (failed) {
|
|
401
|
-
currentExecution()?.output.discard();
|
|
402
|
-
throw failure;
|
|
25
|
+
finally {
|
|
26
|
+
parsing = false;
|
|
403
27
|
}
|
|
404
|
-
currentExecution()?.output.flush(deps.data);
|
|
405
|
-
execution = undefined;
|
|
406
|
-
return result;
|
|
407
28
|
};
|
|
408
29
|
return program;
|
|
409
30
|
};
|
|
410
|
-
export const run = async (args, deps) => {
|
|
411
|
-
const program = createProgram(deps);
|
|
412
|
-
try {
|
|
413
|
-
await program.parseAsync(args, { from: "user" });
|
|
414
|
-
return answerExitCodes.get(program) ?? 0;
|
|
415
|
-
}
|
|
416
|
-
catch (error) {
|
|
417
|
-
if (error instanceof CommanderError && HELP_EXITS.has(error.code))
|
|
418
|
-
return 0;
|
|
419
|
-
const unknownOutcome = error instanceof Error && "code" in error && error.code === "outcome_unknown";
|
|
420
|
-
const failure = isCliError(error)
|
|
421
|
-
? error
|
|
422
|
-
: unknownOutcome
|
|
423
|
-
? new CliError("outcome_unknown", "operation outcome is unknown; verify stored state before retrying")
|
|
424
|
-
: error instanceof CommanderError
|
|
425
|
-
? new CliError("validation_error", usageMessage(error))
|
|
426
|
-
: error;
|
|
427
|
-
const selected = commandSelection(program, args);
|
|
428
|
-
return reportFailure(failure, args, deps, selected.path, hostFailureContext(program, metaOf(selected.action).effects));
|
|
429
|
-
}
|
|
430
|
-
};
|
|
431
31
|
//# sourceMappingURL=program.js.map
|
package/dist/program.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAkB,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAwB,aAAa,IAAI,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAY5F,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAuCrD,MAAM,CAAC,MAAM,GAAG,GAAG,UAAU,CAAA;AAE7B,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAiB,EAAW,EAAE;IAC1D,MAAM,OAAO,GAAG,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAA;IACnD,OAAO,CAAC,KAAK,GAAG,GAAG,EAAE;QACnB,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,mEAAmE,CAAC,CAAA;IAC7G,CAAC,CAAA;IACD,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,OAAO,CAAC,UAAU,GAAG,KAAK,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;QAC1D,IAAI,OAAO;YAAE,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,2CAA2C,CAAC,CAAA;QAChG,OAAO,GAAG,IAAI,CAAA;QACd,IAAI,OAAgB,CAAA;QACpB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAC5D,MAAM,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC1C,OAAO,GAAG,KAAK,CAAA;YACjB,CAAC,CAAC,CAAA;YACF,IAAI,OAAO;gBAAE,MAAM,OAAO,CAAA;YAC1B,OAAO,OAAO,CAAA;QAChB,CAAC;gBAAS,CAAC;YACT,OAAO,GAAG,KAAK,CAAA;QACjB,CAAC;IACH,CAAC,CAAA;IACD,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type Body } from "@wirecat/cli-core/cli";
|
|
2
|
+
import type { Command } from "commander";
|
|
3
|
+
export declare const addProgressCommands: (program: Command, deps: {
|
|
4
|
+
profile: () => string;
|
|
5
|
+
env: NodeJS.ProcessEnv;
|
|
6
|
+
now?: () => number;
|
|
7
|
+
output: (body: Body) => void;
|
|
8
|
+
}) => void;
|
|
9
|
+
//# sourceMappingURL=progress-commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress-commands.d.ts","sourceRoot":"","sources":["../src/progress-commands.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,IAAI,EAAsB,MAAM,uBAAuB,CAAA;AACrE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKxC,eAAO,MAAM,mBAAmB,YACrB,OAAO,QACV;IACJ,OAAO,EAAE,MAAM,MAAM,CAAA;IACrB,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;IACtB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAClB,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;CAC7B,SA8CF,CAAA"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { join } from "node:path";
|
|
2
|
+
import { CliError } from "@wirecat/cli-base";
|
|
3
|
+
import { annotate } from "@wirecat/cli-base/commands";
|
|
4
|
+
import { progressOf } from "@wirecat/cli-core/background";
|
|
5
|
+
import { itemOf, LOCAL_READ } from "@wirecat/cli-core/cli";
|
|
6
|
+
import { profileAccountKey } from "./config.js";
|
|
7
|
+
import { inspectRecordingSyncCheckpoint } from "./recording-sync-store.js";
|
|
8
|
+
import { meetingProgress } from "./sync-progress.js";
|
|
9
|
+
export const addProgressCommands = (program, deps) => {
|
|
10
|
+
const meetings = program.commands.find((command) => command.name() === "meetings");
|
|
11
|
+
const recordings = program.commands.find((command) => command.name() === "recordings");
|
|
12
|
+
if (!meetings || !recordings)
|
|
13
|
+
throw new CliError("configuration_error", "the meeting command groups are missing");
|
|
14
|
+
annotate(meetings.command("status"), {
|
|
15
|
+
effects: LOCAL_READ,
|
|
16
|
+
output: { entity: "sync_progress" },
|
|
17
|
+
examples: ["zm personal meetings status --json"],
|
|
18
|
+
})
|
|
19
|
+
.description("the last meeting ingestion pass: confirmed count, completion and checkpoint age")
|
|
20
|
+
.action(() => deps.output(itemOf(meetingProgress(deps.profile(), deps.env, deps.now).read())));
|
|
21
|
+
annotate(recordings.command("status"), {
|
|
22
|
+
effects: LOCAL_READ,
|
|
23
|
+
output: { entity: "sync_progress" },
|
|
24
|
+
examples: ["zm personal recordings status ./zoom-archive --json"],
|
|
25
|
+
})
|
|
26
|
+
.description("confirmed archived assets and pending discovery in one archive checkpoint")
|
|
27
|
+
.argument("<directory>", "archive folder")
|
|
28
|
+
.option("--checkpoint <file>", "an explicit archive checkpoint path")
|
|
29
|
+
.action(async (directory, options) => {
|
|
30
|
+
const profile = deps.profile();
|
|
31
|
+
const saved = await inspectRecordingSyncCheckpoint(options.checkpoint ?? join(directory, ".zoom-archive-sync.json"));
|
|
32
|
+
if (saved && (saved.scope.provider !== "zoom" || saved.scope.account !== profileAccountKey(profile)))
|
|
33
|
+
throw new CliError("permission_error", "the archive checkpoint belongs to another profile");
|
|
34
|
+
const done = saved?.entries.reduce((sum, entry) => sum + entry.acknowledged.length, 0) ?? 0;
|
|
35
|
+
const total = saved?.pendingWindows.length === 0
|
|
36
|
+
? saved.entries.reduce((sum, entry) => sum + entry.assets.length, 0)
|
|
37
|
+
: undefined;
|
|
38
|
+
deps.output(itemOf(progressOf({
|
|
39
|
+
job: "recordings",
|
|
40
|
+
profile,
|
|
41
|
+
done,
|
|
42
|
+
total,
|
|
43
|
+
complete: total !== undefined && done === total,
|
|
44
|
+
updatedAt: saved ? new Date(saved.updatedAt).toISOString() : undefined,
|
|
45
|
+
now: new Date(deps.now?.() ?? Date.now()),
|
|
46
|
+
})));
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=progress-commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress-commands.js","sourceRoot":"","sources":["../src/progress-commands.ts"],"names":[],"mappings":"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"}
|
package/dist/read-only.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-only.d.ts","sourceRoot":"","sources":["../src/read-only.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"read-only.d.ts","sourceRoot":"","sources":["../src/read-only.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,WAAW,EAMjB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGxC,eAAO,MAAM,EAAE,EAAE,WAMhB,CAAA;AAgBD,eAAO,MAAM,SAAS,YAAa,OAAO,KAAG,MAAM,GAAG,SASrD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,wBAAwB,YAAa,OAAO,OAAO,MAAM,CAAC,UAAU,KAAG,IAInF,CAAA"}
|
package/dist/read-only.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { metaOf } from "@wirecat/cli-base/commands";
|
|
2
|
-
import { readOnlyLockOf, readOnlyRefusal } from "@wirecat/cli-core/cli";
|
|
2
|
+
import { changesAuthorityNow, isLogin, isStoreChange, readOnlyLockOf, readOnlyRefusal, } from "@wirecat/cli-core/cli";
|
|
3
3
|
import { VERSION } from "./version.js";
|
|
4
4
|
export const ZM = {
|
|
5
5
|
command: "zm",
|
|
@@ -8,19 +8,6 @@ export const ZM = {
|
|
|
8
8
|
description: "Zoom meeting transcripts and summaries",
|
|
9
9
|
version: VERSION,
|
|
10
10
|
};
|
|
11
|
-
// Mirrors copy the configured source (Zoom or its downloads folder) into the store or an archive, as tg's sync keeps
|
|
12
|
-
// receiving under its lock. The rest write only the word index or open the store read-only. Any other write, one
|
|
13
|
-
// added later too, is refused.
|
|
14
|
-
const RUNS_UNDER_LOCK = new Set([
|
|
15
|
-
"meetings sync",
|
|
16
|
-
"watch",
|
|
17
|
-
"recordings sync",
|
|
18
|
-
"recordings download",
|
|
19
|
-
"recordings schedule run",
|
|
20
|
-
"search meetings",
|
|
21
|
-
"batch",
|
|
22
|
-
"mcp",
|
|
23
|
-
]);
|
|
24
11
|
const pathOf = (command) => {
|
|
25
12
|
const words = [];
|
|
26
13
|
for (let at = command; at?.parent; at = at.parent)
|
|
@@ -38,14 +25,16 @@ const usesEmbeddings = (command, path) => {
|
|
|
38
25
|
export const refusalOf = (command) => {
|
|
39
26
|
const effects = metaOf(command).effects;
|
|
40
27
|
const path = pathOf(command);
|
|
41
|
-
if (
|
|
28
|
+
if (isLogin(command))
|
|
42
29
|
return "log in or out";
|
|
43
30
|
if (effects?.remote === "write")
|
|
44
31
|
return "change Zoom";
|
|
45
32
|
if (usesEmbeddings(command, path))
|
|
46
33
|
return "build meeting vectors or send text to an embedding service";
|
|
47
|
-
if (
|
|
48
|
-
return "change
|
|
34
|
+
if (changesAuthorityNow(command))
|
|
35
|
+
return "change what a later run may do";
|
|
36
|
+
if (!effects || isStoreChange(command))
|
|
37
|
+
return "change the message store or local files";
|
|
49
38
|
return undefined;
|
|
50
39
|
};
|
|
51
40
|
/**
|
package/dist/read-only.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-only.js","sourceRoot":"","sources":["../src/read-only.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACnD,OAAO,
|
|
1
|
+
{"version":3,"file":"read-only.js","sourceRoot":"","sources":["../src/read-only.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACnD,OAAO,EAEL,mBAAmB,EACnB,OAAO,EACP,aAAa,EACb,cAAc,EACd,eAAe,GAChB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,MAAM,CAAC,MAAM,EAAE,GAAgB;IAC7B,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,UAAU;IACnB,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,wCAAwC;IACrD,OAAO,EAAE,OAAO;CACjB,CAAA;AAED,MAAM,MAAM,GAAG,CAAC,OAAgB,EAAU,EAAE;IAC1C,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,IAAI,EAAE,GAAmB,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM;QAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAA;IAC3F,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACxB,CAAC,CAAA;AAED,qHAAqH;AACrH,iEAAiE;AACjE,MAAM,cAAc,GAAG,CAAC,OAAgB,EAAE,IAAY,EAAW,EAAE;IACjE,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAA;IAC9B,IAAI,IAAI,KAAK,qBAAqB;QAAE,OAAO,IAAI,CAAA;IAC/C,OAAO,IAAI,KAAK,iBAAiB,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,CAAA;AAClE,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAsB,EAAE;IAChE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAA;IACvC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;IAC5B,IAAI,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,eAAe,CAAA;IAC5C,IAAI,OAAO,EAAE,MAAM,KAAK,OAAO;QAAE,OAAO,aAAa,CAAA;IACrD,IAAI,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC;QAAE,OAAO,4DAA4D,CAAA;IACtG,IAAI,mBAAmB,CAAC,OAAO,CAAC;QAAE,OAAO,gCAAgC,CAAA;IACzE,IAAI,CAAC,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC;QAAE,OAAO,yCAAyC,CAAA;IACxF,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,OAAgB,EAAE,GAAsB,EAAQ,EAAE;IACzF,MAAM,IAAI,GAAG,cAAc,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;IACpC,MAAM,OAAO,GAAG,IAAI,IAAI,SAAS,CAAC,OAAO,CAAC,CAAA;IAC1C,IAAI,IAAI,IAAI,OAAO;QAAE,MAAM,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AAC3D,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recording-schedule-commands.d.ts","sourceRoot":"","sources":["../src/recording-schedule-commands.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"recording-schedule-commands.d.ts","sourceRoot":"","sources":["../src/recording-schedule-commands.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,IAAI,EAWV,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAIxC,OAAO,KAAK,EACV,wBAAwB,EAExB,wBAAwB,EACzB,MAAM,yBAAyB,CAAA;AAEhC,eAAO,MAAM,4BAA4B,YAC9B,OAAO,QACV;IACJ,OAAO,EAAE,MAAM,wBAAwB,CAAA;IACvC,OAAO,EAAE,MAAM,wBAAwB,CAAA;IACvC,OAAO,EAAE,MAAM,OAAO,CAAA;IACtB,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;IACtC,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB,KACA,IA+GF,CAAA"}
|