@wirecat/zoom-cli 0.13.0 → 0.15.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 +4 -4
- package/dist/answer-output.d.ts +21 -2
- package/dist/answer-output.d.ts.map +1 -1
- package/dist/answer-output.js +44 -37
- package/dist/answer-output.js.map +1 -1
- package/dist/answers.d.ts +2 -2
- package/dist/answers.d.ts.map +1 -1
- package/dist/answers.js +12 -43
- package/dist/answers.js.map +1 -1
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +20 -19
- package/dist/api.js.map +1 -1
- package/dist/archive-commands.d.ts +5 -4
- package/dist/archive-commands.d.ts.map +1 -1
- package/dist/archive-commands.js +31 -30
- package/dist/archive-commands.js.map +1 -1
- package/dist/archive-import.d.ts +2 -2
- package/dist/archive-import.d.ts.map +1 -1
- package/dist/archive-import.js +20 -30
- package/dist/archive-import.js.map +1 -1
- package/dist/archive-transcripts.d.ts.map +1 -1
- package/dist/archive-transcripts.js +22 -21
- package/dist/archive-transcripts.js.map +1 -1
- package/dist/bin/zm.js +2 -5
- package/dist/bin/zm.js.map +1 -1
- package/dist/command-effects.js +1 -1
- package/dist/command-effects.js.map +1 -1
- package/dist/commands.d.ts +2 -1
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +8 -8
- package/dist/commands.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +54 -37
- package/dist/config.js.map +1 -1
- package/dist/errors.d.ts +0 -4
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +2 -7
- package/dist/errors.js.map +1 -1
- package/dist/execution.d.ts.map +1 -1
- package/dist/execution.js +3 -4
- package/dist/execution.js.map +1 -1
- package/dist/files.d.ts.map +1 -1
- package/dist/files.js +9 -9
- package/dist/files.js.map +1 -1
- package/dist/folders.d.ts +2 -7
- package/dist/folders.d.ts.map +1 -1
- package/dist/folders.js +2 -35
- package/dist/folders.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/ingestion-search-commands.d.ts +3 -2
- package/dist/ingestion-search-commands.d.ts.map +1 -1
- package/dist/ingestion-search-commands.js +5 -5
- package/dist/ingestion-search-commands.js.map +1 -1
- package/dist/json-fields.d.ts +7 -0
- package/dist/json-fields.d.ts.map +1 -0
- package/dist/json-fields.js +23 -0
- package/dist/json-fields.js.map +1 -0
- package/dist/keys.d.ts +1 -1
- package/dist/keys.d.ts.map +1 -1
- package/dist/keys.js +7 -5
- package/dist/keys.js.map +1 -1
- package/dist/local-transcription-commands.d.ts +3 -2
- package/dist/local-transcription-commands.d.ts.map +1 -1
- package/dist/local-transcription-commands.js +6 -6
- package/dist/local-transcription-commands.js.map +1 -1
- package/dist/local-transcription.d.ts.map +1 -1
- package/dist/local-transcription.js +13 -12
- package/dist/local-transcription.js.map +1 -1
- package/dist/login.d.ts.map +1 -1
- package/dist/login.js +8 -7
- package/dist/login.js.map +1 -1
- package/dist/mcp-server.d.ts +2 -0
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +33 -42
- package/dist/mcp-server.js.map +1 -1
- package/dist/meeting-context-commands.d.ts +2 -1
- package/dist/meeting-context-commands.d.ts.map +1 -1
- package/dist/meeting-context-commands.js +10 -15
- package/dist/meeting-context-commands.js.map +1 -1
- package/dist/meeting-context.d.ts +6 -6
- package/dist/meeting-context.d.ts.map +1 -1
- package/dist/meeting-context.js +8 -21
- package/dist/meeting-context.js.map +1 -1
- package/dist/meeting-integration-commands.d.ts +3 -2
- package/dist/meeting-integration-commands.d.ts.map +1 -1
- package/dist/meeting-integration-commands.js +6 -6
- package/dist/meeting-integration-commands.js.map +1 -1
- package/dist/meeting-integration.d.ts.map +1 -1
- package/dist/meeting-integration.js +2 -2
- package/dist/meeting-integration.js.map +1 -1
- package/dist/meeting-mcp-command.d.ts +19 -0
- package/dist/meeting-mcp-command.d.ts.map +1 -0
- package/dist/meeting-mcp-command.js +41 -0
- package/dist/meeting-mcp-command.js.map +1 -0
- package/dist/meeting-preparation-mcp.d.ts +131 -0
- package/dist/meeting-preparation-mcp.d.ts.map +1 -0
- package/dist/meeting-preparation-mcp.js +20 -0
- package/dist/meeting-preparation-mcp.js.map +1 -0
- package/dist/meeting-preparation.d.ts +22 -0
- package/dist/meeting-preparation.d.ts.map +1 -0
- package/dist/meeting-preparation.js +29 -0
- package/dist/meeting-preparation.js.map +1 -0
- package/dist/meeting-project-evidence-commands.d.ts +1 -4
- package/dist/meeting-project-evidence-commands.d.ts.map +1 -1
- package/dist/meeting-project-evidence-commands.js +2 -6
- package/dist/meeting-project-evidence-commands.js.map +1 -1
- package/dist/meeting-project-evidence-mcp.d.ts.map +1 -1
- package/dist/meeting-project-evidence-mcp.js +2 -4
- package/dist/meeting-project-evidence-mcp.js.map +1 -1
- package/dist/meeting-read-command-bindings.d.ts +10 -0
- package/dist/meeting-read-command-bindings.d.ts.map +1 -0
- package/dist/meeting-read-command-bindings.js +13 -0
- package/dist/meeting-read-command-bindings.js.map +1 -0
- package/dist/meeting-search-commands.d.ts +3 -2
- package/dist/meeting-search-commands.d.ts.map +1 -1
- package/dist/meeting-search-commands.js +46 -38
- package/dist/meeting-search-commands.js.map +1 -1
- package/dist/meeting-semantic-commands.d.ts +3 -2
- package/dist/meeting-semantic-commands.d.ts.map +1 -1
- package/dist/meeting-semantic-commands.js +12 -12
- package/dist/meeting-semantic-commands.js.map +1 -1
- package/dist/meeting-semantic.d.ts.map +1 -1
- package/dist/meeting-semantic.js +3 -2
- package/dist/meeting-semantic.js.map +1 -1
- package/dist/occurrence-schedule.d.ts +3 -0
- package/dist/occurrence-schedule.d.ts.map +1 -0
- package/dist/occurrence-schedule.js +106 -0
- package/dist/occurrence-schedule.js.map +1 -0
- package/dist/output-file.js +3 -3
- package/dist/output-file.js.map +1 -1
- package/dist/program.d.ts +14 -28
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +152 -317
- package/dist/program.js.map +1 -1
- package/dist/recording-archive.d.ts +1 -1
- package/dist/recording-archive.d.ts.map +1 -1
- package/dist/recording-archive.js +99 -46
- package/dist/recording-archive.js.map +1 -1
- package/dist/recording-partial-store.d.ts.map +1 -1
- package/dist/recording-partial-store.js +11 -10
- package/dist/recording-partial-store.js.map +1 -1
- package/dist/recording-promotion-store.d.ts.map +1 -1
- package/dist/recording-promotion-store.js +4 -4
- package/dist/recording-promotion-store.js.map +1 -1
- package/dist/recording-schedule-commands.d.ts +3 -2
- package/dist/recording-schedule-commands.d.ts.map +1 -1
- package/dist/recording-schedule-commands.js +12 -12
- package/dist/recording-schedule-commands.js.map +1 -1
- package/dist/recording-schedule-store.d.ts.map +1 -1
- package/dist/recording-schedule-store.js +15 -14
- package/dist/recording-schedule-store.js.map +1 -1
- package/dist/recording-schedule-systemd.d.ts.map +1 -1
- package/dist/recording-schedule-systemd.js +16 -15
- package/dist/recording-schedule-systemd.js.map +1 -1
- package/dist/recording-schedule.d.ts +1 -1
- package/dist/recording-schedule.d.ts.map +1 -1
- package/dist/recording-schedule.js +15 -14
- package/dist/recording-schedule.js.map +1 -1
- package/dist/recording-sync-store.d.ts.map +1 -1
- package/dist/recording-sync-store.js +9 -9
- package/dist/recording-sync-store.js.map +1 -1
- package/dist/recording-sync.d.ts +1 -1
- package/dist/recording-sync.d.ts.map +1 -1
- package/dist/recording-sync.js +10 -19
- package/dist/recording-sync.js.map +1 -1
- package/dist/recordings.d.ts.map +1 -1
- package/dist/recordings.js +19 -18
- package/dist/recordings.js.map +1 -1
- package/dist/remote-http.d.ts +1 -0
- package/dist/remote-http.d.ts.map +1 -1
- package/dist/remote-http.js +26 -14
- package/dist/remote-http.js.map +1 -1
- package/dist/remote-meeting-id.d.ts +2 -0
- package/dist/remote-meeting-id.d.ts.map +1 -0
- package/dist/remote-meeting-id.js +7 -0
- package/dist/remote-meeting-id.js.map +1 -0
- package/dist/remote-meetings.d.ts.map +1 -1
- package/dist/remote-meetings.js +10 -13
- package/dist/remote-meetings.js.map +1 -1
- package/dist/store-connection.d.ts +1 -7
- package/dist/store-connection.d.ts.map +1 -1
- package/dist/store-connection.js +95 -176
- package/dist/store-connection.js.map +1 -1
- package/dist/streaming.js +3 -3
- package/dist/streaming.js.map +1 -1
- package/dist/tokens.d.ts.map +1 -1
- package/dist/tokens.js +10 -9
- package/dist/tokens.js.map +1 -1
- package/dist/unified-search.d.ts +1 -10
- package/dist/unified-search.d.ts.map +1 -1
- package/dist/unified-search.js +7 -6
- package/dist/unified-search.js.map +1 -1
- package/dist/upcoming-meetings.d.ts +10 -0
- package/dist/upcoming-meetings.d.ts.map +1 -0
- package/dist/upcoming-meetings.js +24 -0
- package/dist/upcoming-meetings.js.map +1 -0
- package/dist/watch-commands.d.ts +2 -1
- package/dist/watch-commands.d.ts.map +1 -1
- package/dist/watch-commands.js +8 -8
- package/dist/watch-commands.js.map +1 -1
- package/package.json +3 -3
- package/skills/zoom-cli/SKILL.md +127 -169
- package/dist/ordinary-file.d.ts +0 -3
- package/dist/ordinary-file.d.ts.map +0 -1
- package/dist/ordinary-file.js +0 -16
- package/dist/ordinary-file.js.map +0 -1
- package/dist/wav-audio.d.ts +0 -2
- package/dist/wav-audio.d.ts.map +0 -1
- package/dist/wav-audio.js +0 -2
- package/dist/wav-audio.js.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import { CliError } from "@wirecat/cli-base";
|
|
1
2
|
import { annotate } from "@wirecat/cli-base/commands";
|
|
2
|
-
import { LOCAL_READ } from "@wirecat/cli-core/cli";
|
|
3
|
+
import { itemOf, LOCAL_READ } from "@wirecat/cli-core/cli";
|
|
3
4
|
import { meetingHitsList } from "@wirecat/cli-core/meetings";
|
|
4
5
|
import { createMeetingSearchCommand, meetingHitSearchRequest, meetingSearchArguments, } from "@wirecat/cli-core/meetings/cli";
|
|
5
|
-
import { ZoomError } from "./errors.js";
|
|
6
6
|
import { bytes } from "./execution.js";
|
|
7
7
|
import { validateMeetingSemantic } from "./meeting-semantic-commands.js";
|
|
8
8
|
export { validateMeetingHitSearch, } from "@wirecat/cli-core/meetings/cli";
|
|
@@ -37,46 +37,39 @@ const FLAG = {
|
|
|
37
37
|
maxChunks: "--max-chunks",
|
|
38
38
|
maxRows: "--max-rows",
|
|
39
39
|
maxTextBytes: "--max-text-bytes",
|
|
40
|
-
uuid: "--uuid",
|
|
41
|
-
fileIds: "--file-ids",
|
|
42
|
-
maxBytes: "--max-bytes",
|
|
43
40
|
};
|
|
44
41
|
const refuse = (options, keys, mode) => {
|
|
45
42
|
const given = keys.filter((key) => options[key] !== undefined).map((key) => FLAG[key]);
|
|
46
43
|
if (given.length)
|
|
47
|
-
throw new
|
|
44
|
+
throw new CliError("validation_error", `${given.join(", ")} do not apply ${mode}`);
|
|
48
45
|
};
|
|
49
46
|
const chunkCursor = (cursor) => {
|
|
50
47
|
if (cursor === undefined)
|
|
51
48
|
return undefined;
|
|
52
49
|
if (!/^[1-9]\d*$/.test(cursor) || !Number.isSafeInteger(Number(cursor)))
|
|
53
|
-
throw new
|
|
50
|
+
throw new CliError("validation_error", "--cursor by meaning takes the previous page's next_cursor");
|
|
54
51
|
return Number(cursor);
|
|
55
52
|
};
|
|
56
|
-
/**
|
|
53
|
+
/** An archive cue as a `search all` hit: an archive has no store ids, so the ref names the asset and cue. */
|
|
54
|
+
const recordingHit = (directory) => (match) => {
|
|
55
|
+
const meetingStart = Date.parse(match.meeting.startedAt ?? "");
|
|
56
|
+
const assetStart = Date.parse(match.asset.startedAt ?? "");
|
|
57
|
+
const lead = assetStart - meetingStart;
|
|
58
|
+
return {
|
|
59
|
+
kind: "meeting",
|
|
60
|
+
ref: `recording:${match.asset.id}/${match.position}`,
|
|
61
|
+
provider: "zoom",
|
|
62
|
+
account: directory,
|
|
63
|
+
title: match.meeting.title,
|
|
64
|
+
timestamp: Number.isFinite(meetingStart) ? new Date(meetingStart).toISOString() : null,
|
|
65
|
+
excerpt: match.text,
|
|
66
|
+
sender_name: match.speaker,
|
|
67
|
+
offset_ms: match.startMs + (Number.isFinite(lead) && lead > 0 ? lead : 0),
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
/** One meeting search: stored words by default, meaning with --model. */
|
|
57
71
|
export const addMeetingSearchCommands = (program, deps) => {
|
|
58
72
|
const execute = async (query, request, options) => {
|
|
59
|
-
if (options.archive !== undefined) {
|
|
60
|
-
refuse(options, [
|
|
61
|
-
...STORE_FILTERS,
|
|
62
|
-
"cursor",
|
|
63
|
-
"maxReadBytes",
|
|
64
|
-
"model",
|
|
65
|
-
"baseUrl",
|
|
66
|
-
"dims",
|
|
67
|
-
"maxChunks",
|
|
68
|
-
"maxRows",
|
|
69
|
-
"maxTextBytes",
|
|
70
|
-
], "to an archive folder");
|
|
71
|
-
return deps.archive(options.archive, query, {
|
|
72
|
-
uuid: options.uuid,
|
|
73
|
-
fileIds: options.fileIds?.split(",").map((id) => id.trim()),
|
|
74
|
-
maxBytes: options.maxBytes,
|
|
75
|
-
limit: options.limit,
|
|
76
|
-
signal: deps.signal(),
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
refuse(options, ["uuid", "fileIds", "maxBytes"], "without --archive");
|
|
80
73
|
if (options.model !== undefined) {
|
|
81
74
|
refuse(options, [...STORE_FILTERS, "maxReadBytes"], "to a search by meaning");
|
|
82
75
|
const meaning = {
|
|
@@ -93,9 +86,9 @@ export const addMeetingSearchCommands = (program, deps) => {
|
|
|
93
86
|
};
|
|
94
87
|
validateMeetingSemantic(query, meaning);
|
|
95
88
|
if (meaning.baseUrl !== undefined && deps.offline())
|
|
96
|
-
throw new
|
|
89
|
+
throw new CliError("configuration_error", "remote embeddings require network access; remove --offline");
|
|
97
90
|
const found = (await (await deps.meaning()).search(query, meaning));
|
|
98
|
-
return { ...found, nextCursor: found.nextChunkId === undefined ? null : String(found.nextChunkId) };
|
|
91
|
+
return itemOf({ ...found, nextCursor: found.nextChunkId === undefined ? null : String(found.nextChunkId) });
|
|
99
92
|
}
|
|
100
93
|
refuse(options, ["baseUrl", "dims", "maxChunks", "maxRows", "maxTextBytes"], "without --model");
|
|
101
94
|
return meetingHitsList(await (await deps.words())(query, request), request.limit ?? 100, "search meetings", meetingSearchArguments(query, options));
|
|
@@ -105,25 +98,40 @@ export const addMeetingSearchCommands = (program, deps) => {
|
|
|
105
98
|
deps.output(await execute(query, request, options));
|
|
106
99
|
});
|
|
107
100
|
command
|
|
108
|
-
.description("find words in stored meetings, by meaning with --model
|
|
101
|
+
.description("find words in stored meetings, or by meaning with --model")
|
|
109
102
|
.option("--model <model>", "search by meaning with this embedding model, building missing vectors first")
|
|
110
103
|
.option("--base-url <url>", "remote embedding service for --model; OpenAI reads OPENAI_API_KEY")
|
|
111
104
|
.option("--dims <n>", "vector size the remote service returns, in dimensions", bytes)
|
|
112
105
|
.option("--max-chunks <n>", "by meaning: most stored passages to compare", bytes)
|
|
113
106
|
.option("--max-rows <n>", "by meaning: most transcript lines to read, 1 through 100000", bytes)
|
|
114
|
-
.option("--max-text-bytes <bytes>", "by meaning: most transcript text to read (default 4 MiB)", bytes)
|
|
115
|
-
.option("--archive <directory>", "search the transcripts of this archive folder, before any import")
|
|
116
|
-
.option("--uuid <uuid>", "with --archive: only this occurrence UUID")
|
|
117
|
-
.option("--file-ids <ids>", "with --archive: only these comma-separated transcript asset ids")
|
|
118
|
-
.option("--max-bytes <bytes>", "with --archive: largest transcript file to read (default 8 MiB)", bytes);
|
|
107
|
+
.option("--max-text-bytes <bytes>", "by meaning: most transcript text to read (default 4 MiB)", bytes);
|
|
119
108
|
annotate(command, {
|
|
120
109
|
origin: "handwritten",
|
|
121
110
|
effects: LOCAL_READ,
|
|
122
111
|
examples: [
|
|
123
112
|
'zm search meetings "example plan" --since-time 2026-09-01 --json',
|
|
124
113
|
'zm search meetings "example plan" --model e5-small --json',
|
|
125
|
-
'zm search meetings "example plan" --archive ./zoom-archive --offline --json',
|
|
126
114
|
],
|
|
127
115
|
});
|
|
116
|
+
const search = program.commands.find((child) => child.name() === "search") ?? program.command("search");
|
|
117
|
+
const recordings = search
|
|
118
|
+
.command("recordings")
|
|
119
|
+
.description("find words in the transcripts of a downloaded archive folder, before any import")
|
|
120
|
+
.argument("<directory>", "archive folder")
|
|
121
|
+
.argument("<query...>", "words to find as one phrase, ignoring case")
|
|
122
|
+
.option("--limit <n>", "how many hits, 1 through 1000 (default 100)", bytes)
|
|
123
|
+
.action(async (directory, words, options) => {
|
|
124
|
+
const found = await deps.archive(directory, words.join(" "), { limit: options.limit, signal: deps.signal() });
|
|
125
|
+
deps.output({
|
|
126
|
+
items: found.items.map(recordingHit(directory)),
|
|
127
|
+
page: { mode: "page", limit: found.limit, has_more: found.hasMore },
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
annotate(recordings, {
|
|
131
|
+
origin: "handwritten",
|
|
132
|
+
effects: LOCAL_READ,
|
|
133
|
+
output: { entity: "hit" },
|
|
134
|
+
examples: ['zm search recordings ./zoom-archive "example plan" --limit 100 --offline --json'],
|
|
135
|
+
});
|
|
128
136
|
};
|
|
129
137
|
//# 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":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"meeting-search-commands.js","sourceRoot":"","sources":["../src/meeting-search-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type Body } from "@wirecat/cli-core/cli";
|
|
1
2
|
import type { Command } from "commander";
|
|
2
3
|
export interface MeetingModelOptions {
|
|
3
4
|
model: string;
|
|
@@ -34,7 +35,7 @@ export declare const addMeetingEmbeddingCommand: (program: Command, deps: {
|
|
|
34
35
|
capabilities: () => Promise<MeetingSemanticCapabilities>;
|
|
35
36
|
signal: () => AbortSignal | undefined;
|
|
36
37
|
offline: () => boolean;
|
|
37
|
-
output: (
|
|
38
|
-
receipt: (
|
|
38
|
+
output: (body: Body) => void;
|
|
39
|
+
receipt: (body: Body) => Promise<void>;
|
|
39
40
|
}) => void;
|
|
40
41
|
//# sourceMappingURL=meeting-semantic-commands.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meeting-semantic-commands.d.ts","sourceRoot":"","sources":["../src/meeting-semantic-commands.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"meeting-semantic-commands.d.ts","sourceRoot":"","sources":["../src/meeting-semantic-commands.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,IAAI,EAAuB,MAAM,uBAAuB,CAAA;AACtE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGxC,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AACD,MAAM,WAAW,sBAAuB,SAAQ,mBAAmB;IACjE,iGAAiG;IACjG,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AACD,MAAM,WAAW,uBAAwB,SAAQ,mBAAmB;IAClE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AACD,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAC5E,QAAQ,EAAE,CAAC,OAAO,EAAE,uBAAuB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CACjE;AAGD,eAAO,MAAM,oBAAoB,YAAa,mBAAmB,KAAG,IA4BnE,CAAA;AACD,eAAO,MAAM,uBAAuB,UAAW,MAAM,WAAW,sBAAsB,KAAG,IAgBxF,CAAA;AACD,eAAO,MAAM,yBAAyB,YAAa,uBAAuB,KAAG,IAU5E,CAAA;AACD,eAAO,MAAM,0BAA0B,YAC5B,OAAO,QACV;IACJ,YAAY,EAAE,MAAM,OAAO,CAAC,2BAA2B,CAAC,CAAA;IACxD,MAAM,EAAE,MAAM,WAAW,GAAG,SAAS,CAAA;IACrC,OAAO,EAAE,MAAM,OAAO,CAAA;IACtB,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAC5B,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACvC,KACA,IA+BF,CAAA"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
+
import { CliError } from "@wirecat/cli-base";
|
|
1
2
|
import { annotate } from "@wirecat/cli-base/commands";
|
|
2
|
-
import { LOCAL_WRITE } from "@wirecat/cli-core/cli";
|
|
3
|
-
import { ZoomError } from "./errors.js";
|
|
3
|
+
import { itemOf, LOCAL_WRITE } from "@wirecat/cli-core/cli";
|
|
4
4
|
import { bytes } from "./execution.js";
|
|
5
5
|
const bounded = (value, maximum) => value === undefined || (Number.isSafeInteger(value) && value > 0 && value <= maximum);
|
|
6
6
|
export const validateMeetingModel = (options) => {
|
|
7
7
|
if (typeof options.model !== "string" || !options.model.trim() || options.model.length > 1000)
|
|
8
|
-
throw new
|
|
8
|
+
throw new CliError("validation_error", "select an explicit embedding model");
|
|
9
9
|
if (options.baseUrl === undefined) {
|
|
10
10
|
if (options.dims !== undefined)
|
|
11
|
-
throw new
|
|
11
|
+
throw new CliError("validation_error", "dimensions require an explicit remote base URL");
|
|
12
12
|
return;
|
|
13
13
|
}
|
|
14
14
|
let url;
|
|
@@ -16,7 +16,7 @@ export const validateMeetingModel = (options) => {
|
|
|
16
16
|
url = new URL(options.baseUrl);
|
|
17
17
|
}
|
|
18
18
|
catch {
|
|
19
|
-
throw new
|
|
19
|
+
throw new CliError("validation_error", "embedding base URL must be an HTTP or HTTPS URL");
|
|
20
20
|
}
|
|
21
21
|
if (!["http:", "https:"].includes(url.protocol) ||
|
|
22
22
|
url.username ||
|
|
@@ -26,7 +26,7 @@ export const validateMeetingModel = (options) => {
|
|
|
26
26
|
!/^[\w./:-]{1,200}$/.test(options.model) ||
|
|
27
27
|
options.dims === undefined ||
|
|
28
28
|
!bounded(options.dims, 8192))
|
|
29
|
-
throw new
|
|
29
|
+
throw new CliError("validation_error", "remote embeddings require an HTTP base URL without credentials and explicit dimensions");
|
|
30
30
|
};
|
|
31
31
|
export const validateMeetingSemantic = (query, options) => {
|
|
32
32
|
validateMeetingModel(options);
|
|
@@ -38,7 +38,7 @@ export const validateMeetingSemantic = (query, options) => {
|
|
|
38
38
|
!bounded(options.afterChunkId, Number.MAX_SAFE_INTEGER) ||
|
|
39
39
|
!bounded(options.maxRows, 100000) ||
|
|
40
40
|
!bounded(options.maxTextBytes, 64 * 1024 * 1024))
|
|
41
|
-
throw new
|
|
41
|
+
throw new CliError("validation_error", "meeting semantic search requires a nonempty bounded query and positive limits");
|
|
42
42
|
};
|
|
43
43
|
export const validateMeetingEmbeddings = (options) => {
|
|
44
44
|
validateMeetingModel(options);
|
|
@@ -47,12 +47,12 @@ export const validateMeetingEmbeddings = (options) => {
|
|
|
47
47
|
!bounded(options.maxRows, 100000) ||
|
|
48
48
|
!bounded(options.maxTextBytes, 64 * 1024 * 1024) ||
|
|
49
49
|
(options.afterHash !== undefined && !/^[a-f0-9]{64}$/.test(options.afterHash)))
|
|
50
|
-
throw new
|
|
50
|
+
throw new CliError("validation_error", "meeting embedding generation requires valid bounded limits and cursors");
|
|
51
51
|
};
|
|
52
52
|
export const addMeetingEmbeddingCommand = (program, deps) => {
|
|
53
53
|
const meetings = program.commands.find((command) => command.name() === "meetings");
|
|
54
54
|
if (!meetings)
|
|
55
|
-
throw new
|
|
55
|
+
throw new CliError("configuration_error", "meeting command group is unavailable");
|
|
56
56
|
const model = (command) => command
|
|
57
57
|
.requiredOption("--model <model>", "embedding model: an installed local one, or one served at --base-url")
|
|
58
58
|
.option("--base-url <url>", "remote embedding service; OpenAI reads OPENAI_API_KEY")
|
|
@@ -68,13 +68,13 @@ export const addMeetingEmbeddingCommand = (program, deps) => {
|
|
|
68
68
|
.action(async (options) => {
|
|
69
69
|
validateMeetingEmbeddings(options);
|
|
70
70
|
if (options.baseUrl !== undefined && deps.offline())
|
|
71
|
-
throw new
|
|
71
|
+
throw new CliError("configuration_error", "remote embeddings require network access; remove --offline");
|
|
72
72
|
const api = await deps.capabilities();
|
|
73
73
|
const result = await api.generate({ ...options, signal: deps.signal() });
|
|
74
74
|
if (options.yes)
|
|
75
|
-
await deps.receipt(result);
|
|
75
|
+
await deps.receipt(itemOf(result));
|
|
76
76
|
else
|
|
77
|
-
deps.output(result);
|
|
77
|
+
deps.output(itemOf(result));
|
|
78
78
|
}), { origin: "handwritten", effects: LOCAL_WRITE, examples: ["zm meetings embeddings --model e5-small --json"] });
|
|
79
79
|
};
|
|
80
80
|
//# sourceMappingURL=meeting-semantic-commands.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meeting-semantic-commands.js","sourceRoot":"","sources":["../src/meeting-semantic-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"meeting-semantic-commands.js","sourceRoot":"","sources":["../src/meeting-semantic-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meeting-semantic.d.ts","sourceRoot":"","sources":["../src/meeting-semantic.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"meeting-semantic.d.ts","sourceRoot":"","sources":["../src/meeting-semantic.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAE7D,OAAO,EAGL,KAAK,2BAA2B,EAIjC,MAAM,gCAAgC,CAAA;AAEvC,KAAK,mBAAmB,GAAG,IAAI,CAC7B,cAAc,4BAA4B,CAAC,EACzC,uBAAuB,GACvB,0BAA0B,GAC1B,qBAAqB,GACrB,qBAAqB,GACrB,yBAAyB,GACzB,uBAAuB,CAC1B,CAAA;AAED,qFAAqF;AACrF,eAAO,MAAM,iCAAiC,YACnC,cAAc,aACZ,MAAM,YACR;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC,mBAAmB,CAAC,CAAA;CAAE,KAC9E,2BAuFF,CAAA"}
|
package/dist/meeting-semantic.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CliError } from "@wirecat/cli-base";
|
|
2
|
+
import { checkCancelled } from "./errors.js";
|
|
2
3
|
import { validateMeetingEmbeddings, validateMeetingSemantic, } from "./meeting-semantic-commands.js";
|
|
3
4
|
const loadProducer = async () => import("@wirecat/cli-core/services");
|
|
4
5
|
/** The connection selects the account; explicit command options select the model. */
|
|
5
6
|
export const createMeetingSemanticCapabilities = (vectors, accountId, options = {}) => {
|
|
6
7
|
if (!Number.isSafeInteger(accountId) || accountId < 1)
|
|
7
|
-
throw new
|
|
8
|
+
throw new CliError("validation_error", "meeting vectors require a selected positive account ID");
|
|
8
9
|
const load = options.load ?? loadProducer;
|
|
9
10
|
const choice = (api, input) => input.baseUrl === undefined
|
|
10
11
|
? input.model
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meeting-semantic.js","sourceRoot":"","sources":["../src/meeting-semantic.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"meeting-semantic.js","sourceRoot":"","sources":["../src/meeting-semantic.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"occurrence-schedule.d.ts","sourceRoot":"","sources":["../src/occurrence-schedule.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAqB,yBAAyB,EAAE,MAAM,4BAA4B,CAAA;AA+C9F,eAAO,MAAM,sBAAsB,UAAW,OAAO,aAAa,MAAM,SAAS,MAAM,KAAG,yBAoDzF,CAAA"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { CliError } from "@wirecat/cli-base";
|
|
2
|
+
import { object } from "./errors.js";
|
|
3
|
+
function invalid(field) {
|
|
4
|
+
throw new CliError("invalid_response", `Zoom meeting ${field} is invalid`);
|
|
5
|
+
}
|
|
6
|
+
const instant = (value) => {
|
|
7
|
+
if (value === undefined || value === null)
|
|
8
|
+
return null;
|
|
9
|
+
if (typeof value !== "string" ||
|
|
10
|
+
!/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,3})?(?:Z|[+-]\d{2}:\d{2})$/.test(value))
|
|
11
|
+
invalid("start_time");
|
|
12
|
+
const local = value.replace(/(?:Z|[+-]\d{2}:\d{2})$/, "Z");
|
|
13
|
+
const date = new Date(local);
|
|
14
|
+
if (!Number.isFinite(date.getTime()) || date.toISOString().slice(0, 19) !== local.slice(0, 19))
|
|
15
|
+
invalid("start_time");
|
|
16
|
+
const stamp = Date.parse(value);
|
|
17
|
+
if (!Number.isSafeInteger(stamp))
|
|
18
|
+
invalid("start_time");
|
|
19
|
+
return stamp;
|
|
20
|
+
};
|
|
21
|
+
const end = (start, value) => {
|
|
22
|
+
if (value === undefined || value === null)
|
|
23
|
+
return null;
|
|
24
|
+
if (typeof value !== "number" || !Number.isSafeInteger(value) || value < 0)
|
|
25
|
+
invalid("duration");
|
|
26
|
+
if (start === null || value === 0)
|
|
27
|
+
return null;
|
|
28
|
+
const stamp = start + value * 60000;
|
|
29
|
+
if (!Number.isSafeInteger(stamp) || Math.abs(stamp) > 8_640_000_000_000_000)
|
|
30
|
+
invalid("duration");
|
|
31
|
+
return stamp;
|
|
32
|
+
};
|
|
33
|
+
const occurrence = (value) => {
|
|
34
|
+
const row = object(value);
|
|
35
|
+
if (typeof row.occurrence_id !== "string" ||
|
|
36
|
+
!row.occurrence_id.trim() ||
|
|
37
|
+
row.occurrence_id.length > 1000 ||
|
|
38
|
+
/[\0\r\n]/.test(row.occurrence_id))
|
|
39
|
+
invalid("occurrence_id");
|
|
40
|
+
if (row.status !== "available" && row.status !== "deleted")
|
|
41
|
+
invalid("occurrence status");
|
|
42
|
+
const startAt = instant(row.start_time);
|
|
43
|
+
return {
|
|
44
|
+
id: row.occurrence_id,
|
|
45
|
+
startAt,
|
|
46
|
+
endAt: end(startAt, row.duration),
|
|
47
|
+
status: row.status === "deleted" ? "cancelled" : "scheduled",
|
|
48
|
+
verified: startAt !== null,
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
export const zoomOccurrenceSchedule = (value, meetingId, limit) => {
|
|
52
|
+
const row = object(value);
|
|
53
|
+
const id = typeof row.id === "number" && Number.isSafeInteger(row.id) ? String(row.id) : row.id;
|
|
54
|
+
if (id !== meetingId)
|
|
55
|
+
invalid("id");
|
|
56
|
+
if (row.timezone !== undefined && row.timezone !== null && typeof row.timezone !== "string")
|
|
57
|
+
invalid("timezone");
|
|
58
|
+
const timezone = typeof row.timezone === "string" ? row.timezone : null;
|
|
59
|
+
if (row.type === 2) {
|
|
60
|
+
const startAt = instant(row.start_time);
|
|
61
|
+
const known = startAt !== null && (row.status === undefined || row.status === "waiting");
|
|
62
|
+
return {
|
|
63
|
+
meetingId,
|
|
64
|
+
kind: "single",
|
|
65
|
+
timezone,
|
|
66
|
+
occurrences: [{ id: null, startAt, endAt: end(startAt, row.duration), status: "scheduled", verified: known }],
|
|
67
|
+
complete: known,
|
|
68
|
+
missing: known ? [] : ["occurrence-details"],
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
if (row.type === 3)
|
|
72
|
+
return {
|
|
73
|
+
meetingId,
|
|
74
|
+
kind: "unscheduled",
|
|
75
|
+
timezone,
|
|
76
|
+
occurrences: [],
|
|
77
|
+
complete: false,
|
|
78
|
+
missing: ["occurrence-details"],
|
|
79
|
+
};
|
|
80
|
+
if (row.type !== 8)
|
|
81
|
+
return { meetingId, kind: "unknown", timezone, occurrences: [], complete: false, missing: ["schedule-details"] };
|
|
82
|
+
if (row.occurrences === undefined || row.occurrences === null)
|
|
83
|
+
return { meetingId, kind: "recurring", timezone, occurrences: [], complete: false, missing: ["occurrence-details"] };
|
|
84
|
+
if (!Array.isArray(row.occurrences) || row.occurrences.length > limit)
|
|
85
|
+
invalid("occurrence row budget");
|
|
86
|
+
const occurrences = row.occurrences.map(occurrence);
|
|
87
|
+
const recurrence = row.recurrence === undefined || row.recurrence === null ? {} : object(row.recurrence);
|
|
88
|
+
const count = recurrence.end_times;
|
|
89
|
+
if (count !== undefined && (typeof count !== "number" || !Number.isSafeInteger(count) || count < 0))
|
|
90
|
+
invalid("recurrence end_times");
|
|
91
|
+
// An array alone does not prove the coverage of a date-ended or open series.
|
|
92
|
+
const complete = typeof count === "number" &&
|
|
93
|
+
count > 0 &&
|
|
94
|
+
count === occurrences.length &&
|
|
95
|
+
recurrence.end_date_time == null &&
|
|
96
|
+
occurrences.every((entry) => entry.startAt !== null);
|
|
97
|
+
return {
|
|
98
|
+
meetingId,
|
|
99
|
+
kind: "recurring",
|
|
100
|
+
timezone,
|
|
101
|
+
occurrences,
|
|
102
|
+
complete,
|
|
103
|
+
missing: complete ? [] : ["schedule-details"],
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
//# sourceMappingURL=occurrence-schedule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"occurrence-schedule.js","sourceRoot":"","sources":["../src/occurrence-schedule.ts"],"names":[],"mappings":"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"}
|
package/dist/output-file.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { randomUUID } from "node:crypto";
|
|
2
2
|
import { link, open, unlink } from "node:fs/promises";
|
|
3
|
-
import { isCliError } from "@wirecat/cli-base";
|
|
4
|
-
import { checkCancelled
|
|
3
|
+
import { CliError, isCliError } from "@wirecat/cli-base";
|
|
4
|
+
import { checkCancelled } from "./errors.js";
|
|
5
5
|
export const writeExportFile = async (path, content, options = {}) => {
|
|
6
6
|
checkCancelled(options.signal);
|
|
7
7
|
const temporary = `${path}.zm-${randomUUID()}.part`;
|
|
@@ -46,7 +46,7 @@ export const writeExportFile = async (path, content, options = {}) => {
|
|
|
46
46
|
if (isCliError(failure))
|
|
47
47
|
throw failure;
|
|
48
48
|
const code = typeof failure === "object" && failure !== null && "code" in failure ? failure.code : undefined;
|
|
49
|
-
throw new
|
|
49
|
+
throw new CliError(code === "EEXIST"
|
|
50
50
|
? "validation_error"
|
|
51
51
|
: code === "EACCES" || code === "EPERM"
|
|
52
52
|
? "permission_error"
|
package/dist/output-file.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output-file.js","sourceRoot":"","sources":["../src/output-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAmB,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"output-file.js","sourceRoot":"","sources":["../src/output-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAmB,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACtE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE5C,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAClC,IAAY,EACZ,OAAe,EACf,OAAO,GAA6B,EAAE,EACvB,EAAE;IACjB,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC9B,MAAM,SAAS,GAAG,GAAG,IAAI,OAAO,UAAU,EAAE,OAAO,CAAA;IACnD,IAAI,MAA8B,CAAA;IAClC,IAAI,OAAgB,CAAA;IACpB,IAAI,MAAM,GAAG,KAAK,CAAA;IAClB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;QAC3C,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QACvC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;QACnB,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAC9B,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,GAAG,IAAI,CAAA;QACb,OAAO,GAAG,KAAK,CAAA;IACjB,CAAC;YAAS,CAAC;QACT,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,GAAG,IAAI,CAAA;oBACb,OAAO,GAAG,KAAK,CAAA;gBACjB,CAAC;YACH,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,SAAS,CAAC,CAAA;YACzB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,GAAG,IAAI,CAAA;oBACb,OAAO,GAAG,KAAK,CAAA;gBACjB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,CAAC,MAAM;QAAE,OAAM;IACnB,IAAI,UAAU,CAAC,OAAO,CAAC;QAAE,MAAM,OAAO,CAAA;IACtC,MAAM,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;IAC5G,MAAM,IAAI,QAAQ,CAChB,IAAI,KAAK,QAAQ;QACf,CAAC,CAAC,kBAAkB;QACpB,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,OAAO;YACrC,CAAC,CAAC,kBAAkB;YACpB,CAAC,CAAC,qBAAqB,EAC3B,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,iDAAiD,CAAC,CAAC,CAAC,iCAAiC,CAC1G,CAAA;AACH,CAAC,CAAA"}
|
package/dist/program.d.ts
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { type SleepLike } from "@wirecat/cli-base";
|
|
2
|
-
import { type MeetingProjectDiscoveryReader, type MeetingSource, type MeetingStore, type MeetingTranscriptReceiptStore
|
|
2
|
+
import { type MeetingProjectDiscoveryReader, type MeetingSource, type MeetingStore, type MeetingTranscriptReceiptStore } from "@wirecat/cli-core/meetings";
|
|
3
3
|
import { Command } from "commander";
|
|
4
4
|
import { type ArchiveService, type ArchiveTranscriptService, type RecordingsService, type RemoteMeetingsService } from "./archive-commands.js";
|
|
5
5
|
import { readDownloadedFiles } from "./files.js";
|
|
6
6
|
import type { LocalTranscriptionCapabilities } from "./local-transcription.js";
|
|
7
7
|
import type { MeetingContextCapabilities } from "./meeting-context.js";
|
|
8
8
|
import type { MeetingIntegrationCapabilities } from "./meeting-integration.js";
|
|
9
|
+
import { type ZoomMcpServeOptions } from "./meeting-mcp-command.js";
|
|
10
|
+
import type { MeetingPreparationBinding } from "./meeting-preparation.js";
|
|
9
11
|
import { type MeetingHitSearch } from "./meeting-search-commands.js";
|
|
10
|
-
import { type
|
|
12
|
+
import { type MeetingSemanticCapabilities } from "./meeting-semantic-commands.js";
|
|
11
13
|
import { type RecordingScheduleService } from "./recording-schedule.js";
|
|
12
14
|
import { TokenManager } from "./tokens.js";
|
|
13
15
|
import { type UnifiedSearch } from "./unified-search.js";
|
|
@@ -15,21 +17,20 @@ export interface StoreConnection {
|
|
|
15
17
|
store: MeetingStore;
|
|
16
18
|
accountId: number;
|
|
17
19
|
close: () => Promise<void>;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
meetingProjectEvidence
|
|
23
|
-
meetingTranscription
|
|
24
|
-
unifiedSearch
|
|
25
|
-
meetingContext
|
|
26
|
-
meetingSemantic
|
|
20
|
+
appendTranscriptsWithReceipt: MeetingTranscriptReceiptStore["appendTranscriptsWithReceipt"];
|
|
21
|
+
meetingIntegration: MeetingIntegrationCapabilities;
|
|
22
|
+
meetingSearch: MeetingHitSearch;
|
|
23
|
+
meetingPreparation: MeetingPreparationBinding;
|
|
24
|
+
meetingProjectEvidence: MeetingProjectDiscoveryReader;
|
|
25
|
+
meetingTranscription: LocalTranscriptionCapabilities;
|
|
26
|
+
unifiedSearch: UnifiedSearch;
|
|
27
|
+
meetingContext: MeetingContextCapabilities;
|
|
28
|
+
meetingSemantic: MeetingSemanticCapabilities;
|
|
27
29
|
}
|
|
28
30
|
export interface StoreConnectRequest {
|
|
29
31
|
profile: string;
|
|
30
32
|
externalId: string;
|
|
31
33
|
intent: "read" | "ingestion";
|
|
32
|
-
capability?: "transcript-append" | "meeting-integration" | "meeting-search" | "meeting-project-evidence";
|
|
33
34
|
}
|
|
34
35
|
export interface ProgramDeps {
|
|
35
36
|
configPath: string;
|
|
@@ -38,14 +39,6 @@ export interface ProgramDeps {
|
|
|
38
39
|
store?: MeetingStore;
|
|
39
40
|
accountId?: number;
|
|
40
41
|
connectStore?: (request: StoreConnectRequest) => Promise<StoreConnection>;
|
|
41
|
-
transcriptStore?: Partial<MeetingTranscriptStore & MeetingTranscriptReceiptStore>;
|
|
42
|
-
unifiedSearch?: UnifiedSearch;
|
|
43
|
-
meetingContext?: MeetingContextCapabilities;
|
|
44
|
-
meetingSemantic?: MeetingSemanticCapabilities;
|
|
45
|
-
meetingIntegration?: MeetingIntegrationCapabilities;
|
|
46
|
-
meetingSearch?: MeetingHitSearch;
|
|
47
|
-
meetingProjectEvidence?: MeetingProjectDiscoveryReader;
|
|
48
|
-
meetingTranscription?: LocalTranscriptionCapabilities;
|
|
49
42
|
source?: MeetingSource;
|
|
50
43
|
recordings?: RecordingsService;
|
|
51
44
|
recordingSchedule?: RecordingScheduleService;
|
|
@@ -73,14 +66,7 @@ export interface ProgramDeps {
|
|
|
73
66
|
}) => Promise<unknown>;
|
|
74
67
|
signal?: AbortSignal;
|
|
75
68
|
sleep?: SleepLike;
|
|
76
|
-
serveMcp?: (options:
|
|
77
|
-
signal: AbortSignal;
|
|
78
|
-
commandRegistry: Command;
|
|
79
|
-
maxResultBytes?: number;
|
|
80
|
-
includeUnifiedSearch?: boolean;
|
|
81
|
-
includeMeetingContext?: boolean;
|
|
82
|
-
semanticModel?: MeetingModelOptions;
|
|
83
|
-
}) => Promise<void>;
|
|
69
|
+
serveMcp?: (options: ZoomMcpServeOptions) => Promise<void>;
|
|
84
70
|
streamData?: (text: string, signal: AbortSignal) => Promise<void>;
|
|
85
71
|
}
|
|
86
72
|
export declare const createProgram: (deps: ProgramDeps) => Command;
|
package/dist/program.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"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"}
|