youtube-knowledge-mcp 2.0.2 → 2.2.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 +166 -33
- package/dist/brain-schemas.d.ts +502 -0
- package/dist/brain-schemas.d.ts.map +1 -0
- package/dist/brain-schemas.js +109 -0
- package/dist/brain-schemas.js.map +1 -0
- package/dist/http/app.d.ts +16 -0
- package/dist/http/app.d.ts.map +1 -0
- package/dist/http/app.js +176 -0
- package/dist/http/app.js.map +1 -0
- package/dist/http/auth.d.ts +38 -0
- package/dist/http/auth.d.ts.map +1 -0
- package/dist/http/auth.js +79 -0
- package/dist/http/auth.js.map +1 -0
- package/dist/http/config.d.ts +41 -0
- package/dist/http/config.d.ts.map +1 -0
- package/dist/http/config.js +65 -0
- package/dist/http/config.js.map +1 -0
- package/dist/http/rate-limiter.d.ts +24 -0
- package/dist/http/rate-limiter.d.ts.map +1 -0
- package/dist/http/rate-limiter.js +55 -0
- package/dist/http/rate-limiter.js.map +1 -0
- package/dist/http/sessions.d.ts +34 -0
- package/dist/http/sessions.d.ts.map +1 -0
- package/dist/http/sessions.js +62 -0
- package/dist/http/sessions.js.map +1 -0
- package/dist/http.d.ts +6 -48
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +35 -252
- package/dist/http.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -431
- package/dist/index.js.map +1 -1
- package/dist/prompts-brain.d.ts +4 -0
- package/dist/prompts-brain.d.ts.map +1 -0
- package/dist/prompts-brain.js +48 -0
- package/dist/prompts-brain.js.map +1 -0
- package/dist/prompts-research.d.ts +4 -0
- package/dist/prompts-research.d.ts.map +1 -0
- package/dist/prompts-research.js +74 -0
- package/dist/prompts-research.js.map +1 -0
- package/dist/prompts-shared.d.ts +13 -0
- package/dist/prompts-shared.d.ts.map +1 -0
- package/dist/prompts-shared.js +7 -0
- package/dist/prompts-shared.js.map +1 -0
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +5 -58
- package/dist/prompts.js.map +1 -1
- package/dist/registry/brain-tools.d.ts +4 -0
- package/dist/registry/brain-tools.d.ts.map +1 -0
- package/dist/registry/brain-tools.js +104 -0
- package/dist/registry/brain-tools.js.map +1 -0
- package/dist/registry/channel-tools.d.ts +4 -0
- package/dist/registry/channel-tools.d.ts.map +1 -0
- package/dist/registry/channel-tools.js +53 -0
- package/dist/registry/channel-tools.js.map +1 -0
- package/dist/registry/health-tools.d.ts +4 -0
- package/dist/registry/health-tools.d.ts.map +1 -0
- package/dist/registry/health-tools.js +21 -0
- package/dist/registry/health-tools.js.map +1 -0
- package/dist/registry/index.d.ts +8 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +27 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/registry/library-tools.d.ts +4 -0
- package/dist/registry/library-tools.d.ts.map +1 -0
- package/dist/registry/library-tools.js +116 -0
- package/dist/registry/library-tools.js.map +1 -0
- package/dist/registry/media-tools.d.ts +4 -0
- package/dist/registry/media-tools.d.ts.map +1 -0
- package/dist/registry/media-tools.js +100 -0
- package/dist/registry/media-tools.js.map +1 -0
- package/dist/registry/thumbnail-tools.d.ts +7 -0
- package/dist/registry/thumbnail-tools.d.ts.map +1 -0
- package/dist/registry/thumbnail-tools.js +72 -0
- package/dist/registry/thumbnail-tools.js.map +1 -0
- package/dist/registry/transcript-tools.d.ts +4 -0
- package/dist/registry/transcript-tools.d.ts.map +1 -0
- package/dist/registry/transcript-tools.js +68 -0
- package/dist/registry/transcript-tools.js.map +1 -0
- package/dist/registry/types.d.ts +41 -0
- package/dist/registry/types.d.ts.map +1 -0
- package/dist/registry/types.js +17 -0
- package/dist/registry/types.js.map +1 -0
- package/dist/registry/video-tools.d.ts +4 -0
- package/dist/registry/video-tools.d.ts.map +1 -0
- package/dist/registry/video-tools.js +101 -0
- package/dist/registry/video-tools.js.map +1 -0
- package/dist/resources.d.ts.map +1 -1
- package/dist/resources.js +75 -6
- package/dist/resources.js.map +1 -1
- package/dist/schemas.d.ts +74 -54
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +30 -4
- package/dist/schemas.js.map +1 -1
- package/dist/thumbnail-resource.d.ts +8 -0
- package/dist/thumbnail-resource.d.ts.map +1 -0
- package/dist/thumbnail-resource.js +38 -0
- package/dist/thumbnail-resource.js.map +1 -0
- package/dist/thumbnail-schemas.d.ts +512 -0
- package/dist/thumbnail-schemas.d.ts.map +1 -0
- package/dist/thumbnail-schemas.js +95 -0
- package/dist/thumbnail-schemas.js.map +1 -0
- package/dist/tools/ask-brain.d.ts +62 -0
- package/dist/tools/ask-brain.d.ts.map +1 -0
- package/dist/tools/ask-brain.js +70 -0
- package/dist/tools/ask-brain.js.map +1 -0
- package/dist/tools/batch.d.ts +10 -10
- package/dist/tools/batch.js +3 -3
- package/dist/tools/batch.js.map +1 -1
- package/dist/tools/brain-info.d.ts +180 -0
- package/dist/tools/brain-info.d.ts.map +1 -0
- package/dist/tools/brain-info.js +108 -0
- package/dist/tools/brain-info.js.map +1 -0
- package/dist/tools/build-brain.d.ts +120 -0
- package/dist/tools/build-brain.d.ts.map +1 -0
- package/dist/tools/build-brain.js +123 -0
- package/dist/tools/build-brain.js.map +1 -0
- package/dist/tools/check-health.d.ts +2 -0
- package/dist/tools/check-health.d.ts.map +1 -1
- package/dist/tools/check-health.js +9 -0
- package/dist/tools/check-health.js.map +1 -1
- package/dist/tools/clips.d.ts +13 -45
- package/dist/tools/clips.d.ts.map +1 -1
- package/dist/tools/clips.js +52 -128
- package/dist/tools/clips.js.map +1 -1
- package/dist/tools/fetch-channel-thumbnails.d.ts +179 -0
- package/dist/tools/fetch-channel-thumbnails.d.ts.map +1 -0
- package/dist/tools/fetch-channel-thumbnails.js +123 -0
- package/dist/tools/fetch-channel-thumbnails.js.map +1 -0
- package/dist/tools/fetch-videos.d.ts +11 -8
- package/dist/tools/fetch-videos.d.ts.map +1 -1
- package/dist/tools/fetch-videos.js +3 -0
- package/dist/tools/fetch-videos.js.map +1 -1
- package/dist/tools/frames-subtitles.d.ts +44 -0
- package/dist/tools/frames-subtitles.d.ts.map +1 -0
- package/dist/tools/frames-subtitles.js +104 -0
- package/dist/tools/frames-subtitles.js.map +1 -0
- package/dist/tools/get-channel-info.d.ts +2 -0
- package/dist/tools/get-channel-info.d.ts.map +1 -1
- package/dist/tools/get-channel-info.js +8 -1
- package/dist/tools/get-channel-info.js.map +1 -1
- package/dist/tools/get-chapters.d.ts +2 -2
- package/dist/tools/get-comments.d.ts +2 -2
- package/dist/tools/get-playlist-info.d.ts.map +1 -1
- package/dist/tools/get-playlist-info.js +1 -0
- package/dist/tools/get-playlist-info.js.map +1 -1
- package/dist/tools/get-thumbnail.d.ts +38 -0
- package/dist/tools/get-thumbnail.d.ts.map +1 -0
- package/dist/tools/get-thumbnail.js +152 -0
- package/dist/tools/get-thumbnail.js.map +1 -0
- package/dist/tools/get-transcript.d.ts +2 -2
- package/dist/tools/get-transcript.d.ts.map +1 -1
- package/dist/tools/get-transcript.js +2 -14
- package/dist/tools/get-transcript.js.map +1 -1
- package/dist/tools/library.d.ts +9 -7
- package/dist/tools/library.d.ts.map +1 -1
- package/dist/tools/library.js +23 -7
- package/dist/tools/library.js.map +1 -1
- package/dist/tools/list-channel-thumbnails.d.ts +235 -0
- package/dist/tools/list-channel-thumbnails.d.ts.map +1 -0
- package/dist/tools/list-channel-thumbnails.js +79 -0
- package/dist/tools/list-channel-thumbnails.js.map +1 -0
- package/dist/tools/list-library.d.ts +4 -4
- package/dist/tools/manage-brain.d.ts +39 -0
- package/dist/tools/manage-brain.d.ts.map +1 -0
- package/dist/tools/manage-brain.js +53 -0
- package/dist/tools/manage-brain.js.map +1 -0
- package/dist/tools/save-to-library.d.ts.map +1 -1
- package/dist/tools/save-to-library.js +5 -1
- package/dist/tools/save-to-library.js.map +1 -1
- package/dist/tools/search-channels.d.ts +10 -4
- package/dist/tools/search-channels.d.ts.map +1 -1
- package/dist/tools/search-transcript.d.ts +2 -2
- package/dist/tools/search-transcript.d.ts.map +1 -1
- package/dist/tools/search-transcript.js +6 -13
- package/dist/tools/search-transcript.js.map +1 -1
- package/dist/tools/search-videos.d.ts +11 -8
- package/dist/tools/search-videos.d.ts.map +1 -1
- package/dist/utils/batches.d.ts +15 -0
- package/dist/utils/batches.d.ts.map +1 -0
- package/dist/utils/batches.js +31 -0
- package/dist/utils/batches.js.map +1 -0
- package/dist/utils/brain-build.d.ts +40 -0
- package/dist/utils/brain-build.d.ts.map +1 -0
- package/dist/utils/brain-build.js +200 -0
- package/dist/utils/brain-build.js.map +1 -0
- package/dist/utils/brain-chunks.d.ts +33 -0
- package/dist/utils/brain-chunks.d.ts.map +1 -0
- package/dist/utils/brain-chunks.js +87 -0
- package/dist/utils/brain-chunks.js.map +1 -0
- package/dist/utils/brain-index.d.ts +27 -0
- package/dist/utils/brain-index.d.ts.map +1 -0
- package/dist/utils/brain-index.js +101 -0
- package/dist/utils/brain-index.js.map +1 -0
- package/dist/utils/brain-ingest.d.ts +57 -0
- package/dist/utils/brain-ingest.d.ts.map +1 -0
- package/dist/utils/brain-ingest.js +127 -0
- package/dist/utils/brain-ingest.js.map +1 -0
- package/dist/utils/brain-lock.d.ts +4 -0
- package/dist/utils/brain-lock.d.ts.map +1 -0
- package/dist/utils/brain-lock.js +17 -0
- package/dist/utils/brain-lock.js.map +1 -0
- package/dist/utils/brain-lookup.d.ts +11 -0
- package/dist/utils/brain-lookup.d.ts.map +1 -0
- package/dist/utils/brain-lookup.js +36 -0
- package/dist/utils/brain-lookup.js.map +1 -0
- package/dist/utils/brain-paths.d.ts +19 -0
- package/dist/utils/brain-paths.d.ts.map +1 -0
- package/dist/utils/brain-paths.js +34 -0
- package/dist/utils/brain-paths.js.map +1 -0
- package/dist/utils/brain-phrases.d.ts +31 -0
- package/dist/utils/brain-phrases.d.ts.map +1 -0
- package/dist/utils/brain-phrases.js +116 -0
- package/dist/utils/brain-phrases.js.map +1 -0
- package/dist/utils/brain-stats.d.ts +25 -0
- package/dist/utils/brain-stats.d.ts.map +1 -0
- package/dist/utils/brain-stats.js +64 -0
- package/dist/utils/brain-stats.js.map +1 -0
- package/dist/utils/brain-storage.d.ts +28 -0
- package/dist/utils/brain-storage.d.ts.map +1 -0
- package/dist/utils/brain-storage.js +87 -0
- package/dist/utils/brain-storage.js.map +1 -0
- package/dist/utils/caption-probe.d.ts +7 -0
- package/dist/utils/caption-probe.d.ts.map +1 -0
- package/dist/utils/caption-probe.js +36 -0
- package/dist/utils/caption-probe.js.map +1 -0
- package/dist/utils/channel-images.d.ts +16 -0
- package/dist/utils/channel-images.d.ts.map +1 -0
- package/dist/utils/channel-images.js +35 -0
- package/dist/utils/channel-images.js.map +1 -0
- package/dist/utils/channel-lookup.d.ts +5 -0
- package/dist/utils/channel-lookup.d.ts.map +1 -0
- package/dist/utils/channel-lookup.js +37 -0
- package/dist/utils/channel-lookup.js.map +1 -0
- package/dist/utils/chapters.d.ts +11 -0
- package/dist/utils/chapters.d.ts.map +1 -0
- package/dist/utils/chapters.js +24 -0
- package/dist/utils/chapters.js.map +1 -0
- package/dist/utils/clips.d.ts.map +1 -1
- package/dist/utils/clips.js +22 -30
- package/dist/utils/clips.js.map +1 -1
- package/dist/utils/env.d.ts +26 -0
- package/dist/utils/env.d.ts.map +1 -0
- package/dist/utils/env.js +72 -0
- package/dist/utils/env.js.map +1 -0
- package/dist/utils/errors.d.ts +1 -1
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +20 -2
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/file-lock.d.ts +34 -0
- package/dist/utils/file-lock.d.ts.map +1 -0
- package/dist/utils/file-lock.js +91 -0
- package/dist/utils/file-lock.js.map +1 -0
- package/dist/utils/flat-listing.d.ts +89 -0
- package/dist/utils/flat-listing.d.ts.map +1 -0
- package/dist/utils/flat-listing.js +68 -0
- package/dist/utils/flat-listing.js.map +1 -0
- package/dist/utils/format.d.ts +1 -3
- package/dist/utils/format.d.ts.map +1 -1
- package/dist/utils/format.js +1 -5
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/guard.d.ts +21 -0
- package/dist/utils/guard.d.ts.map +1 -0
- package/dist/utils/guard.js +105 -0
- package/dist/utils/guard.js.map +1 -0
- package/dist/utils/image-dimensions.d.ts +19 -0
- package/dist/utils/image-dimensions.d.ts.map +1 -0
- package/dist/utils/image-dimensions.js +93 -0
- package/dist/utils/image-dimensions.js.map +1 -0
- package/dist/utils/image-fetch.d.ts +31 -0
- package/dist/utils/image-fetch.d.ts.map +1 -0
- package/dist/utils/image-fetch.js +141 -0
- package/dist/utils/image-fetch.js.map +1 -0
- package/dist/utils/json-file.d.ts +45 -0
- package/dist/utils/json-file.d.ts.map +1 -0
- package/dist/utils/json-file.js +60 -0
- package/dist/utils/json-file.js.map +1 -0
- package/dist/utils/paths.d.ts +19 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +27 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/pattern.d.ts +30 -0
- package/dist/utils/pattern.d.ts.map +1 -0
- package/dist/utils/pattern.js +130 -0
- package/dist/utils/pattern.js.map +1 -0
- package/dist/utils/search-index.d.ts +22 -7
- package/dist/utils/search-index.d.ts.map +1 -1
- package/dist/utils/search-index.js +26 -8
- package/dist/utils/search-index.js.map +1 -1
- package/dist/utils/storage.d.ts +14 -44
- package/dist/utils/storage.d.ts.map +1 -1
- package/dist/utils/storage.js +47 -84
- package/dist/utils/storage.js.map +1 -1
- package/dist/utils/subtitles.d.ts +7 -0
- package/dist/utils/subtitles.d.ts.map +1 -0
- package/dist/utils/subtitles.js +30 -0
- package/dist/utils/subtitles.js.map +1 -0
- package/dist/utils/thumbnail-entry.d.ts +19 -0
- package/dist/utils/thumbnail-entry.d.ts.map +1 -0
- package/dist/utils/thumbnail-entry.js +119 -0
- package/dist/utils/thumbnail-entry.js.map +1 -0
- package/dist/utils/thumbnail-fetch.d.ts +37 -0
- package/dist/utils/thumbnail-fetch.d.ts.map +1 -0
- package/dist/utils/thumbnail-fetch.js +89 -0
- package/dist/utils/thumbnail-fetch.js.map +1 -0
- package/dist/utils/thumbnail-ladder.d.ts +44 -0
- package/dist/utils/thumbnail-ladder.d.ts.map +1 -0
- package/dist/utils/thumbnail-ladder.js +68 -0
- package/dist/utils/thumbnail-ladder.js.map +1 -0
- package/dist/utils/thumbnail-listing.d.ts +16 -0
- package/dist/utils/thumbnail-listing.d.ts.map +1 -0
- package/dist/utils/thumbnail-listing.js +26 -0
- package/dist/utils/thumbnail-listing.js.map +1 -0
- package/dist/utils/thumbnail-paths.d.ts +20 -0
- package/dist/utils/thumbnail-paths.d.ts.map +1 -0
- package/dist/utils/thumbnail-paths.js +35 -0
- package/dist/utils/thumbnail-paths.js.map +1 -0
- package/dist/utils/thumbnail-store.d.ts +19 -0
- package/dist/utils/thumbnail-store.d.ts.map +1 -0
- package/dist/utils/thumbnail-store.js +125 -0
- package/dist/utils/thumbnail-store.js.map +1 -0
- package/dist/utils/transcript-cache.d.ts +20 -0
- package/dist/utils/transcript-cache.d.ts.map +1 -0
- package/dist/utils/transcript-cache.js +127 -0
- package/dist/utils/transcript-cache.js.map +1 -0
- package/dist/utils/transcript-search.d.ts +20 -0
- package/dist/utils/transcript-search.d.ts.map +1 -0
- package/dist/utils/transcript-search.js +35 -0
- package/dist/utils/transcript-search.js.map +1 -0
- package/dist/utils/transcript.d.ts +14 -34
- package/dist/utils/transcript.d.ts.map +1 -1
- package/dist/utils/transcript.js +5 -64
- package/dist/utils/transcript.js.map +1 -1
- package/dist/utils/validate-youtube.d.ts +35 -0
- package/dist/utils/validate-youtube.d.ts.map +1 -0
- package/dist/utils/validate-youtube.js +87 -0
- package/dist/utils/validate-youtube.js.map +1 -0
- package/dist/utils/validate.d.ts +11 -3
- package/dist/utils/validate.d.ts.map +1 -1
- package/dist/utils/validate.js +43 -18
- package/dist/utils/validate.js.map +1 -1
- package/dist/utils/version.d.ts +2 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/dist/utils/version.js +19 -0
- package/dist/utils/version.js.map +1 -0
- package/dist/utils/youtube-channel.d.ts +44 -0
- package/dist/utils/youtube-channel.d.ts.map +1 -0
- package/dist/utils/youtube-channel.js +61 -0
- package/dist/utils/youtube-channel.js.map +1 -0
- package/dist/utils/youtube-download.d.ts +27 -0
- package/dist/utils/youtube-download.d.ts.map +1 -0
- package/dist/utils/youtube-download.js +118 -0
- package/dist/utils/youtube-download.js.map +1 -0
- package/dist/utils/youtube-schemas.d.ts +394 -0
- package/dist/utils/youtube-schemas.d.ts.map +1 -0
- package/dist/utils/youtube-schemas.js +118 -0
- package/dist/utils/youtube-schemas.js.map +1 -0
- package/dist/utils/youtube-search.d.ts +14 -0
- package/dist/utils/youtube-search.d.ts.map +1 -0
- package/dist/utils/youtube-search.js +39 -0
- package/dist/utils/youtube-search.js.map +1 -0
- package/dist/utils/youtube-url.d.ts +25 -0
- package/dist/utils/youtube-url.d.ts.map +1 -0
- package/dist/utils/youtube-url.js +75 -0
- package/dist/utils/youtube-url.js.map +1 -0
- package/dist/utils/youtube-video.d.ts +47 -0
- package/dist/utils/youtube-video.d.ts.map +1 -0
- package/dist/utils/youtube-video.js +98 -0
- package/dist/utils/youtube-video.js.map +1 -0
- package/dist/utils/youtube.d.ts +13 -111
- package/dist/utils/youtube.d.ts.map +1 -1
- package/dist/utils/youtube.js +11 -480
- package/dist/utils/youtube.js.map +1 -1
- package/dist/utils/ytdlp-env.d.ts +33 -0
- package/dist/utils/ytdlp-env.d.ts.map +1 -0
- package/dist/utils/ytdlp-env.js +121 -0
- package/dist/utils/ytdlp-env.js.map +1 -0
- package/dist/utils/ytdlp-limiter.d.ts +24 -0
- package/dist/utils/ytdlp-limiter.d.ts.map +1 -0
- package/dist/utils/ytdlp-limiter.js +69 -0
- package/dist/utils/ytdlp-limiter.js.map +1 -0
- package/dist/utils/ytdlp-parse.d.ts +13 -0
- package/dist/utils/ytdlp-parse.d.ts.map +1 -0
- package/dist/utils/ytdlp-parse.js +48 -0
- package/dist/utils/ytdlp-parse.js.map +1 -0
- package/dist/utils/ytdlp.d.ts +13 -18
- package/dist/utils/ytdlp.d.ts.map +1 -1
- package/dist/utils/ytdlp.js +21 -110
- package/dist/utils/ytdlp.js.map +1 -1
- package/package.json +2 -1
package/dist/schemas.d.ts
CHANGED
|
@@ -1,11 +1,22 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Domain schemas.
|
|
4
4
|
*
|
|
5
|
-
* Every tool declares
|
|
6
|
-
* alongside the readable text rather than having to parse
|
|
7
|
-
* shapes live here because several tools return the same ones
|
|
5
|
+
* Every tool declares an output schema, so a client receives typed
|
|
6
|
+
* `structuredContent` alongside the readable text rather than having to parse
|
|
7
|
+
* prose. The shapes live here because several tools return the same ones, and
|
|
8
|
+
* because the documents this server writes to disk are read back through the
|
|
9
|
+
* same definitions — a persisted shape and the shape a tool reports are the
|
|
10
|
+
* same shape, and declaring them twice is how they drift.
|
|
8
11
|
*/
|
|
12
|
+
/**
|
|
13
|
+
* A record whose unreadable values are dropped rather than failing the parse.
|
|
14
|
+
*
|
|
15
|
+
* These describe files this process wrote but does not own: they survive
|
|
16
|
+
* upgrades, get synced between machines, and are plain JSON anyone can edit. A
|
|
17
|
+
* single corrupt entry should cost that one entry, not the whole document.
|
|
18
|
+
*/
|
|
19
|
+
export declare function recordOfValid<T>(schema: z.ZodType<T, z.ZodTypeDef, unknown>): z.ZodType<Record<string, T>, z.ZodTypeDef, Record<string, unknown>>;
|
|
9
20
|
export declare const paginationShape: {
|
|
10
21
|
total: z.ZodNumber;
|
|
11
22
|
count: z.ZodNumber;
|
|
@@ -22,24 +33,27 @@ export declare const videoSummarySchema: z.ZodObject<{
|
|
|
22
33
|
channel: z.ZodOptional<z.ZodString>;
|
|
23
34
|
viewCount: z.ZodOptional<z.ZodNumber>;
|
|
24
35
|
uploadDate: z.ZodOptional<z.ZodString>;
|
|
36
|
+
thumbnailUrl: z.ZodOptional<z.ZodString>;
|
|
25
37
|
}, "strip", z.ZodTypeAny, {
|
|
26
|
-
url: string;
|
|
27
|
-
title: string;
|
|
28
38
|
id: string;
|
|
29
|
-
|
|
39
|
+
title: string;
|
|
30
40
|
durationSeconds: number;
|
|
41
|
+
durationFormatted: string;
|
|
42
|
+
url: string;
|
|
31
43
|
channel?: string | undefined;
|
|
32
|
-
uploadDate?: string | undefined;
|
|
33
44
|
viewCount?: number | undefined;
|
|
45
|
+
uploadDate?: string | undefined;
|
|
46
|
+
thumbnailUrl?: string | undefined;
|
|
34
47
|
}, {
|
|
35
|
-
url: string;
|
|
36
|
-
title: string;
|
|
37
48
|
id: string;
|
|
38
|
-
|
|
49
|
+
title: string;
|
|
39
50
|
durationSeconds: number;
|
|
51
|
+
durationFormatted: string;
|
|
52
|
+
url: string;
|
|
40
53
|
channel?: string | undefined;
|
|
41
|
-
uploadDate?: string | undefined;
|
|
42
54
|
viewCount?: number | undefined;
|
|
55
|
+
uploadDate?: string | undefined;
|
|
56
|
+
thumbnailUrl?: string | undefined;
|
|
43
57
|
}>;
|
|
44
58
|
export declare const videoInfoSchema: z.ZodObject<{
|
|
45
59
|
id: z.ZodString;
|
|
@@ -56,33 +70,33 @@ export declare const videoInfoSchema: z.ZodObject<{
|
|
|
56
70
|
likeCount: z.ZodNumber;
|
|
57
71
|
commentCount: z.ZodNumber;
|
|
58
72
|
}, "strip", z.ZodTypeAny, {
|
|
59
|
-
url: string;
|
|
60
|
-
description: string;
|
|
61
|
-
title: string;
|
|
62
73
|
id: string;
|
|
74
|
+
title: string;
|
|
75
|
+
durationSeconds: number;
|
|
76
|
+
durationFormatted: string;
|
|
77
|
+
url: string;
|
|
63
78
|
channel: string;
|
|
79
|
+
viewCount: number;
|
|
64
80
|
uploadDate: string;
|
|
65
81
|
thumbnailUrl: string;
|
|
82
|
+
description: string;
|
|
66
83
|
tags: string[];
|
|
67
|
-
durationFormatted: string;
|
|
68
|
-
viewCount: number;
|
|
69
84
|
likeCount: number;
|
|
70
85
|
commentCount: number;
|
|
71
|
-
durationSeconds: number;
|
|
72
86
|
}, {
|
|
73
|
-
url: string;
|
|
74
|
-
description: string;
|
|
75
|
-
title: string;
|
|
76
87
|
id: string;
|
|
88
|
+
title: string;
|
|
89
|
+
durationSeconds: number;
|
|
90
|
+
durationFormatted: string;
|
|
91
|
+
url: string;
|
|
77
92
|
channel: string;
|
|
93
|
+
viewCount: number;
|
|
78
94
|
uploadDate: string;
|
|
79
95
|
thumbnailUrl: string;
|
|
96
|
+
description: string;
|
|
80
97
|
tags: string[];
|
|
81
|
-
durationFormatted: string;
|
|
82
|
-
viewCount: number;
|
|
83
98
|
likeCount: number;
|
|
84
99
|
commentCount: number;
|
|
85
|
-
durationSeconds: number;
|
|
86
100
|
}>;
|
|
87
101
|
export declare const chapterSchema: z.ZodObject<{
|
|
88
102
|
title: z.ZodString;
|
|
@@ -92,15 +106,15 @@ export declare const chapterSchema: z.ZodObject<{
|
|
|
92
106
|
endFormatted: z.ZodString;
|
|
93
107
|
url: z.ZodString;
|
|
94
108
|
}, "strip", z.ZodTypeAny, {
|
|
95
|
-
url: string;
|
|
96
109
|
title: string;
|
|
110
|
+
url: string;
|
|
97
111
|
startSeconds: number;
|
|
98
112
|
startFormatted: string;
|
|
99
113
|
endSeconds: number;
|
|
100
114
|
endFormatted: string;
|
|
101
115
|
}, {
|
|
102
|
-
url: string;
|
|
103
116
|
title: string;
|
|
117
|
+
url: string;
|
|
104
118
|
startSeconds: number;
|
|
105
119
|
startFormatted: string;
|
|
106
120
|
endSeconds: number;
|
|
@@ -112,14 +126,14 @@ export declare const commentSchema: z.ZodObject<{
|
|
|
112
126
|
likeCount: z.ZodNumber;
|
|
113
127
|
isPinned: z.ZodBoolean;
|
|
114
128
|
}, "strip", z.ZodTypeAny, {
|
|
115
|
-
text: string;
|
|
116
129
|
likeCount: number;
|
|
117
130
|
author: string;
|
|
131
|
+
text: string;
|
|
118
132
|
isPinned: boolean;
|
|
119
133
|
}, {
|
|
120
|
-
text: string;
|
|
121
134
|
likeCount: number;
|
|
122
135
|
author: string;
|
|
136
|
+
text: string;
|
|
123
137
|
isPinned: boolean;
|
|
124
138
|
}>;
|
|
125
139
|
export declare const channelInfoSchema: z.ZodObject<{
|
|
@@ -129,20 +143,26 @@ export declare const channelInfoSchema: z.ZodObject<{
|
|
|
129
143
|
subscriberCount: z.ZodNumber;
|
|
130
144
|
channelUrl: z.ZodString;
|
|
131
145
|
description: z.ZodString;
|
|
146
|
+
avatarUrl: z.ZodOptional<z.ZodString>;
|
|
147
|
+
bannerUrl: z.ZodOptional<z.ZodString>;
|
|
132
148
|
}, "strip", z.ZodTypeAny, {
|
|
133
149
|
description: string;
|
|
134
150
|
name: string;
|
|
135
|
-
handle: string;
|
|
136
|
-
channelUrl: string;
|
|
137
151
|
channelId: string;
|
|
152
|
+
handle: string;
|
|
138
153
|
subscriberCount: number;
|
|
154
|
+
channelUrl: string;
|
|
155
|
+
avatarUrl?: string | undefined;
|
|
156
|
+
bannerUrl?: string | undefined;
|
|
139
157
|
}, {
|
|
140
158
|
description: string;
|
|
141
159
|
name: string;
|
|
142
|
-
handle: string;
|
|
143
|
-
channelUrl: string;
|
|
144
160
|
channelId: string;
|
|
161
|
+
handle: string;
|
|
145
162
|
subscriberCount: number;
|
|
163
|
+
channelUrl: string;
|
|
164
|
+
avatarUrl?: string | undefined;
|
|
165
|
+
bannerUrl?: string | undefined;
|
|
146
166
|
}>;
|
|
147
167
|
export declare const playlistInfoSchema: z.ZodObject<{
|
|
148
168
|
id: z.ZodString;
|
|
@@ -155,25 +175,25 @@ export declare const playlistInfoSchema: z.ZodObject<{
|
|
|
155
175
|
url: z.ZodString;
|
|
156
176
|
description: z.ZodString;
|
|
157
177
|
}, "strip", z.ZodTypeAny, {
|
|
158
|
-
url: string;
|
|
159
|
-
lastModified: string;
|
|
160
|
-
description: string;
|
|
161
|
-
title: string;
|
|
162
178
|
id: string;
|
|
179
|
+
title: string;
|
|
180
|
+
url: string;
|
|
163
181
|
channel: string;
|
|
182
|
+
description: string;
|
|
164
183
|
handle: string;
|
|
165
184
|
channelUrl: string;
|
|
166
185
|
videoCount: number;
|
|
167
|
-
}, {
|
|
168
|
-
url: string;
|
|
169
186
|
lastModified: string;
|
|
170
|
-
|
|
171
|
-
title: string;
|
|
187
|
+
}, {
|
|
172
188
|
id: string;
|
|
189
|
+
title: string;
|
|
190
|
+
url: string;
|
|
173
191
|
channel: string;
|
|
192
|
+
description: string;
|
|
174
193
|
handle: string;
|
|
175
194
|
channelUrl: string;
|
|
176
195
|
videoCount: number;
|
|
196
|
+
lastModified: string;
|
|
177
197
|
}>;
|
|
178
198
|
export declare const videoFormatSchema: z.ZodObject<{
|
|
179
199
|
formatId: z.ZodString;
|
|
@@ -211,13 +231,13 @@ export declare const transcriptSegmentSchema: z.ZodObject<{
|
|
|
211
231
|
endSeconds: z.ZodNumber;
|
|
212
232
|
text: z.ZodString;
|
|
213
233
|
}, "strip", z.ZodTypeAny, {
|
|
214
|
-
text: string;
|
|
215
234
|
startSeconds: number;
|
|
216
235
|
endSeconds: number;
|
|
217
|
-
}, {
|
|
218
236
|
text: string;
|
|
237
|
+
}, {
|
|
219
238
|
startSeconds: number;
|
|
220
239
|
endSeconds: number;
|
|
240
|
+
text: string;
|
|
221
241
|
}>;
|
|
222
242
|
export declare const transcriptMatchSchema: z.ZodObject<{
|
|
223
243
|
startSeconds: z.ZodNumber;
|
|
@@ -226,14 +246,14 @@ export declare const transcriptMatchSchema: z.ZodObject<{
|
|
|
226
246
|
url: z.ZodString;
|
|
227
247
|
}, "strip", z.ZodTypeAny, {
|
|
228
248
|
url: string;
|
|
229
|
-
text: string;
|
|
230
249
|
startSeconds: number;
|
|
231
250
|
startFormatted: string;
|
|
251
|
+
text: string;
|
|
232
252
|
}, {
|
|
233
253
|
url: string;
|
|
234
|
-
text: string;
|
|
235
254
|
startSeconds: number;
|
|
236
255
|
startFormatted: string;
|
|
256
|
+
text: string;
|
|
237
257
|
}>;
|
|
238
258
|
export declare const libraryMetadataSchema: z.ZodObject<{
|
|
239
259
|
videoId: z.ZodString;
|
|
@@ -246,21 +266,21 @@ export declare const libraryMetadataSchema: z.ZodObject<{
|
|
|
246
266
|
hasSummary: z.ZodBoolean;
|
|
247
267
|
hasSkill: z.ZodBoolean;
|
|
248
268
|
}, "strip", z.ZodTypeAny, {
|
|
249
|
-
url: string;
|
|
250
269
|
title: string;
|
|
251
|
-
|
|
270
|
+
url: string;
|
|
252
271
|
channel: string;
|
|
253
272
|
tags: string[];
|
|
273
|
+
videoId: string;
|
|
254
274
|
dateSaved: string;
|
|
255
275
|
hasTranscript: boolean;
|
|
256
276
|
hasSummary: boolean;
|
|
257
277
|
hasSkill: boolean;
|
|
258
278
|
}, {
|
|
259
|
-
url: string;
|
|
260
279
|
title: string;
|
|
261
|
-
|
|
280
|
+
url: string;
|
|
262
281
|
channel: string;
|
|
263
282
|
tags: string[];
|
|
283
|
+
videoId: string;
|
|
264
284
|
dateSaved: string;
|
|
265
285
|
hasTranscript: boolean;
|
|
266
286
|
hasSummary: boolean;
|
|
@@ -274,14 +294,14 @@ export declare const librarySearchHitSchema: z.ZodObject<{
|
|
|
274
294
|
excerpt: z.ZodString;
|
|
275
295
|
}, "strip", z.ZodTypeAny, {
|
|
276
296
|
title: string;
|
|
277
|
-
videoId: string;
|
|
278
297
|
kind: string;
|
|
298
|
+
videoId: string;
|
|
279
299
|
score: number;
|
|
280
300
|
excerpt: string;
|
|
281
301
|
}, {
|
|
282
302
|
title: string;
|
|
283
|
-
videoId: string;
|
|
284
303
|
kind: string;
|
|
304
|
+
videoId: string;
|
|
285
305
|
score: number;
|
|
286
306
|
excerpt: string;
|
|
287
307
|
}>;
|
|
@@ -294,18 +314,18 @@ export declare const clipResultSchema: z.ZodObject<{
|
|
|
294
314
|
durationSeconds: z.ZodNumber;
|
|
295
315
|
}, "strip", z.ZodTypeAny, {
|
|
296
316
|
title: string;
|
|
297
|
-
videoId: string;
|
|
298
|
-
filePath: string;
|
|
299
317
|
durationSeconds: number;
|
|
300
318
|
startSeconds: number;
|
|
301
319
|
endSeconds: number;
|
|
302
|
-
}, {
|
|
303
|
-
title: string;
|
|
304
320
|
videoId: string;
|
|
305
321
|
filePath: string;
|
|
322
|
+
}, {
|
|
323
|
+
title: string;
|
|
306
324
|
durationSeconds: number;
|
|
307
325
|
startSeconds: number;
|
|
308
326
|
endSeconds: number;
|
|
327
|
+
videoId: string;
|
|
328
|
+
filePath: string;
|
|
309
329
|
}>;
|
|
310
330
|
export declare const binaryStatusSchema: z.ZodObject<{
|
|
311
331
|
name: z.ZodString;
|
package/dist/schemas.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;GASG;AAEH;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAC7B,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,GAC1C,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CASrE;AAED,eAAO,MAAM,eAAe;;;;;;CAM3B,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU7B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAc1B,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;EAOxB,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;EAKxB,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW5B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU7B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU5B,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;EAIlC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;EAKhC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUhC,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;EAMjC,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;EAO3B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;EAK7B,CAAC"}
|
package/dist/schemas.js
CHANGED
|
@@ -1,11 +1,32 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Domain schemas.
|
|
4
4
|
*
|
|
5
|
-
* Every tool declares
|
|
6
|
-
* alongside the readable text rather than having to parse
|
|
7
|
-
* shapes live here because several tools return the same ones
|
|
5
|
+
* Every tool declares an output schema, so a client receives typed
|
|
6
|
+
* `structuredContent` alongside the readable text rather than having to parse
|
|
7
|
+
* prose. The shapes live here because several tools return the same ones, and
|
|
8
|
+
* because the documents this server writes to disk are read back through the
|
|
9
|
+
* same definitions — a persisted shape and the shape a tool reports are the
|
|
10
|
+
* same shape, and declaring them twice is how they drift.
|
|
8
11
|
*/
|
|
12
|
+
/**
|
|
13
|
+
* A record whose unreadable values are dropped rather than failing the parse.
|
|
14
|
+
*
|
|
15
|
+
* These describe files this process wrote but does not own: they survive
|
|
16
|
+
* upgrades, get synced between machines, and are plain JSON anyone can edit. A
|
|
17
|
+
* single corrupt entry should cost that one entry, not the whole document.
|
|
18
|
+
*/
|
|
19
|
+
export function recordOfValid(schema) {
|
|
20
|
+
return z.record(z.string(), z.unknown()).transform((entries) => {
|
|
21
|
+
const valid = {};
|
|
22
|
+
for (const [key, value] of Object.entries(entries)) {
|
|
23
|
+
const parsed = schema.safeParse(value);
|
|
24
|
+
if (parsed.success)
|
|
25
|
+
valid[key] = parsed.data;
|
|
26
|
+
}
|
|
27
|
+
return valid;
|
|
28
|
+
});
|
|
29
|
+
}
|
|
9
30
|
export const paginationShape = {
|
|
10
31
|
total: z.number().int().describe('Total items available'),
|
|
11
32
|
count: z.number().int().describe('Items in this response'),
|
|
@@ -22,6 +43,7 @@ export const videoSummarySchema = z.object({
|
|
|
22
43
|
channel: z.string().optional(),
|
|
23
44
|
viewCount: z.number().optional(),
|
|
24
45
|
uploadDate: z.string().optional(),
|
|
46
|
+
thumbnailUrl: z.string().optional().describe('The largest thumbnail the listing offered'),
|
|
25
47
|
});
|
|
26
48
|
export const videoInfoSchema = z.object({
|
|
27
49
|
id: z.string(),
|
|
@@ -59,6 +81,10 @@ export const channelInfoSchema = z.object({
|
|
|
59
81
|
subscriberCount: z.number(),
|
|
60
82
|
channelUrl: z.string(),
|
|
61
83
|
description: z.string(),
|
|
84
|
+
// Optional because this shape is embedded in every brain manifest on disk,
|
|
85
|
+
// written before the images were read.
|
|
86
|
+
avatarUrl: z.string().optional().describe("The channel's uncropped avatar image"),
|
|
87
|
+
bannerUrl: z.string().optional().describe("The channel's uncropped banner image"),
|
|
62
88
|
});
|
|
63
89
|
export const playlistInfoSchema = z.object({
|
|
64
90
|
id: z.string(),
|
package/dist/schemas.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
/**
|
|
3
|
+
* A channel's saved thumbnails as a resource: the manifest only. The images
|
|
4
|
+
* themselves are files the manifest points at; a client that wants to see one
|
|
5
|
+
* calls get_thumbnail.
|
|
6
|
+
*/
|
|
7
|
+
export declare function registerThumbnailResource(server: McpServer): void;
|
|
8
|
+
//# sourceMappingURL=thumbnail-resource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thumbnail-resource.d.ts","sourceRoot":"","sources":["../src/thumbnail-resource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA8BjE"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import { guardedResource } from './utils/guard.js';
|
|
3
|
+
import { listThumbnailManifests, requireThumbnailManifest } from './utils/thumbnail-store.js';
|
|
4
|
+
/**
|
|
5
|
+
* A channel's saved thumbnails as a resource: the manifest only. The images
|
|
6
|
+
* themselves are files the manifest points at; a client that wants to see one
|
|
7
|
+
* calls get_thumbnail.
|
|
8
|
+
*/
|
|
9
|
+
export function registerThumbnailResource(server) {
|
|
10
|
+
server.registerResource('thumbnails', new ResourceTemplate('youtube://thumbnails/{channelId}/manifest', {
|
|
11
|
+
list: guardedResource(async () => {
|
|
12
|
+
const sets = await listThumbnailManifests();
|
|
13
|
+
return {
|
|
14
|
+
resources: sets.map((set) => ({
|
|
15
|
+
uri: `youtube://thumbnails/${set.channel.channelId}/manifest`,
|
|
16
|
+
name: `${set.channel.name} (thumbnails)`,
|
|
17
|
+
mimeType: 'application/json',
|
|
18
|
+
})),
|
|
19
|
+
};
|
|
20
|
+
}),
|
|
21
|
+
}), {
|
|
22
|
+
title: 'Saved channel thumbnails',
|
|
23
|
+
description: 'What fetch_channel_thumbnails saved for a channel: every image, its decoded size, and where it is on disk.',
|
|
24
|
+
mimeType: 'application/json',
|
|
25
|
+
}, guardedResource(async (uri, { channelId }) => {
|
|
26
|
+
const manifest = await requireThumbnailManifest(first(channelId));
|
|
27
|
+
return {
|
|
28
|
+
contents: [
|
|
29
|
+
{ uri: uri.href, mimeType: 'application/json', text: JSON.stringify(manifest, null, 2) },
|
|
30
|
+
],
|
|
31
|
+
};
|
|
32
|
+
}));
|
|
33
|
+
}
|
|
34
|
+
/** Template variables arrive as a string or, for a repeated segment, an array. */
|
|
35
|
+
function first(value) {
|
|
36
|
+
return (Array.isArray(value) ? value[0] : value) ?? '';
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=thumbnail-resource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thumbnail-resource.js","sourceRoot":"","sources":["../src/thumbnail-resource.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAE9F;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,MAAiB;IACzD,MAAM,CAAC,gBAAgB,CACrB,YAAY,EACZ,IAAI,gBAAgB,CAAC,2CAA2C,EAAE;QAChE,IAAI,EAAE,eAAe,CAAC,KAAK,IAAI,EAAE;YAC/B,MAAM,IAAI,GAAG,MAAM,sBAAsB,EAAE,CAAC;YAC5C,OAAO;gBACL,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBAC5B,GAAG,EAAE,wBAAwB,GAAG,CAAC,OAAO,CAAC,SAAS,WAAW;oBAC7D,IAAI,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,eAAe;oBACxC,QAAQ,EAAE,kBAAkB;iBAC7B,CAAC,CAAC;aACJ,CAAC;QACJ,CAAC,CAAC;KACH,CAAC,EACF;QACE,KAAK,EAAE,0BAA0B;QACjC,WAAW,EACT,4GAA4G;QAC9G,QAAQ,EAAE,kBAAkB;KAC7B,EACD,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QAC3C,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;QAClE,OAAO;YACL,QAAQ,EAAE;gBACR,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;aACzF;SACF,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAED,kFAAkF;AAClF,SAAS,KAAK,CAAC,KAAoC;IACjD,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AACzD,CAAC"}
|