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.
Files changed (390) hide show
  1. package/README.md +166 -33
  2. package/dist/brain-schemas.d.ts +502 -0
  3. package/dist/brain-schemas.d.ts.map +1 -0
  4. package/dist/brain-schemas.js +109 -0
  5. package/dist/brain-schemas.js.map +1 -0
  6. package/dist/http/app.d.ts +16 -0
  7. package/dist/http/app.d.ts.map +1 -0
  8. package/dist/http/app.js +176 -0
  9. package/dist/http/app.js.map +1 -0
  10. package/dist/http/auth.d.ts +38 -0
  11. package/dist/http/auth.d.ts.map +1 -0
  12. package/dist/http/auth.js +79 -0
  13. package/dist/http/auth.js.map +1 -0
  14. package/dist/http/config.d.ts +41 -0
  15. package/dist/http/config.d.ts.map +1 -0
  16. package/dist/http/config.js +65 -0
  17. package/dist/http/config.js.map +1 -0
  18. package/dist/http/rate-limiter.d.ts +24 -0
  19. package/dist/http/rate-limiter.d.ts.map +1 -0
  20. package/dist/http/rate-limiter.js +55 -0
  21. package/dist/http/rate-limiter.js.map +1 -0
  22. package/dist/http/sessions.d.ts +34 -0
  23. package/dist/http/sessions.d.ts.map +1 -0
  24. package/dist/http/sessions.js +62 -0
  25. package/dist/http/sessions.js.map +1 -0
  26. package/dist/http.d.ts +6 -48
  27. package/dist/http.d.ts.map +1 -1
  28. package/dist/http.js +35 -252
  29. package/dist/http.js.map +1 -1
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +11 -431
  32. package/dist/index.js.map +1 -1
  33. package/dist/prompts-brain.d.ts +4 -0
  34. package/dist/prompts-brain.d.ts.map +1 -0
  35. package/dist/prompts-brain.js +48 -0
  36. package/dist/prompts-brain.js.map +1 -0
  37. package/dist/prompts-research.d.ts +4 -0
  38. package/dist/prompts-research.d.ts.map +1 -0
  39. package/dist/prompts-research.js +74 -0
  40. package/dist/prompts-research.js.map +1 -0
  41. package/dist/prompts-shared.d.ts +13 -0
  42. package/dist/prompts-shared.d.ts.map +1 -0
  43. package/dist/prompts-shared.js +7 -0
  44. package/dist/prompts-shared.js.map +1 -0
  45. package/dist/prompts.d.ts.map +1 -1
  46. package/dist/prompts.js +5 -58
  47. package/dist/prompts.js.map +1 -1
  48. package/dist/registry/brain-tools.d.ts +4 -0
  49. package/dist/registry/brain-tools.d.ts.map +1 -0
  50. package/dist/registry/brain-tools.js +104 -0
  51. package/dist/registry/brain-tools.js.map +1 -0
  52. package/dist/registry/channel-tools.d.ts +4 -0
  53. package/dist/registry/channel-tools.d.ts.map +1 -0
  54. package/dist/registry/channel-tools.js +53 -0
  55. package/dist/registry/channel-tools.js.map +1 -0
  56. package/dist/registry/health-tools.d.ts +4 -0
  57. package/dist/registry/health-tools.d.ts.map +1 -0
  58. package/dist/registry/health-tools.js +21 -0
  59. package/dist/registry/health-tools.js.map +1 -0
  60. package/dist/registry/index.d.ts +8 -0
  61. package/dist/registry/index.d.ts.map +1 -0
  62. package/dist/registry/index.js +27 -0
  63. package/dist/registry/index.js.map +1 -0
  64. package/dist/registry/library-tools.d.ts +4 -0
  65. package/dist/registry/library-tools.d.ts.map +1 -0
  66. package/dist/registry/library-tools.js +116 -0
  67. package/dist/registry/library-tools.js.map +1 -0
  68. package/dist/registry/media-tools.d.ts +4 -0
  69. package/dist/registry/media-tools.d.ts.map +1 -0
  70. package/dist/registry/media-tools.js +100 -0
  71. package/dist/registry/media-tools.js.map +1 -0
  72. package/dist/registry/thumbnail-tools.d.ts +7 -0
  73. package/dist/registry/thumbnail-tools.d.ts.map +1 -0
  74. package/dist/registry/thumbnail-tools.js +72 -0
  75. package/dist/registry/thumbnail-tools.js.map +1 -0
  76. package/dist/registry/transcript-tools.d.ts +4 -0
  77. package/dist/registry/transcript-tools.d.ts.map +1 -0
  78. package/dist/registry/transcript-tools.js +68 -0
  79. package/dist/registry/transcript-tools.js.map +1 -0
  80. package/dist/registry/types.d.ts +41 -0
  81. package/dist/registry/types.d.ts.map +1 -0
  82. package/dist/registry/types.js +17 -0
  83. package/dist/registry/types.js.map +1 -0
  84. package/dist/registry/video-tools.d.ts +4 -0
  85. package/dist/registry/video-tools.d.ts.map +1 -0
  86. package/dist/registry/video-tools.js +101 -0
  87. package/dist/registry/video-tools.js.map +1 -0
  88. package/dist/resources.d.ts.map +1 -1
  89. package/dist/resources.js +75 -6
  90. package/dist/resources.js.map +1 -1
  91. package/dist/schemas.d.ts +74 -54
  92. package/dist/schemas.d.ts.map +1 -1
  93. package/dist/schemas.js +30 -4
  94. package/dist/schemas.js.map +1 -1
  95. package/dist/thumbnail-resource.d.ts +8 -0
  96. package/dist/thumbnail-resource.d.ts.map +1 -0
  97. package/dist/thumbnail-resource.js +38 -0
  98. package/dist/thumbnail-resource.js.map +1 -0
  99. package/dist/thumbnail-schemas.d.ts +512 -0
  100. package/dist/thumbnail-schemas.d.ts.map +1 -0
  101. package/dist/thumbnail-schemas.js +95 -0
  102. package/dist/thumbnail-schemas.js.map +1 -0
  103. package/dist/tools/ask-brain.d.ts +62 -0
  104. package/dist/tools/ask-brain.d.ts.map +1 -0
  105. package/dist/tools/ask-brain.js +70 -0
  106. package/dist/tools/ask-brain.js.map +1 -0
  107. package/dist/tools/batch.d.ts +10 -10
  108. package/dist/tools/batch.js +3 -3
  109. package/dist/tools/batch.js.map +1 -1
  110. package/dist/tools/brain-info.d.ts +180 -0
  111. package/dist/tools/brain-info.d.ts.map +1 -0
  112. package/dist/tools/brain-info.js +108 -0
  113. package/dist/tools/brain-info.js.map +1 -0
  114. package/dist/tools/build-brain.d.ts +120 -0
  115. package/dist/tools/build-brain.d.ts.map +1 -0
  116. package/dist/tools/build-brain.js +123 -0
  117. package/dist/tools/build-brain.js.map +1 -0
  118. package/dist/tools/check-health.d.ts +2 -0
  119. package/dist/tools/check-health.d.ts.map +1 -1
  120. package/dist/tools/check-health.js +9 -0
  121. package/dist/tools/check-health.js.map +1 -1
  122. package/dist/tools/clips.d.ts +13 -45
  123. package/dist/tools/clips.d.ts.map +1 -1
  124. package/dist/tools/clips.js +52 -128
  125. package/dist/tools/clips.js.map +1 -1
  126. package/dist/tools/fetch-channel-thumbnails.d.ts +179 -0
  127. package/dist/tools/fetch-channel-thumbnails.d.ts.map +1 -0
  128. package/dist/tools/fetch-channel-thumbnails.js +123 -0
  129. package/dist/tools/fetch-channel-thumbnails.js.map +1 -0
  130. package/dist/tools/fetch-videos.d.ts +11 -8
  131. package/dist/tools/fetch-videos.d.ts.map +1 -1
  132. package/dist/tools/fetch-videos.js +3 -0
  133. package/dist/tools/fetch-videos.js.map +1 -1
  134. package/dist/tools/frames-subtitles.d.ts +44 -0
  135. package/dist/tools/frames-subtitles.d.ts.map +1 -0
  136. package/dist/tools/frames-subtitles.js +104 -0
  137. package/dist/tools/frames-subtitles.js.map +1 -0
  138. package/dist/tools/get-channel-info.d.ts +2 -0
  139. package/dist/tools/get-channel-info.d.ts.map +1 -1
  140. package/dist/tools/get-channel-info.js +8 -1
  141. package/dist/tools/get-channel-info.js.map +1 -1
  142. package/dist/tools/get-chapters.d.ts +2 -2
  143. package/dist/tools/get-comments.d.ts +2 -2
  144. package/dist/tools/get-playlist-info.d.ts.map +1 -1
  145. package/dist/tools/get-playlist-info.js +1 -0
  146. package/dist/tools/get-playlist-info.js.map +1 -1
  147. package/dist/tools/get-thumbnail.d.ts +38 -0
  148. package/dist/tools/get-thumbnail.d.ts.map +1 -0
  149. package/dist/tools/get-thumbnail.js +152 -0
  150. package/dist/tools/get-thumbnail.js.map +1 -0
  151. package/dist/tools/get-transcript.d.ts +2 -2
  152. package/dist/tools/get-transcript.d.ts.map +1 -1
  153. package/dist/tools/get-transcript.js +2 -14
  154. package/dist/tools/get-transcript.js.map +1 -1
  155. package/dist/tools/library.d.ts +9 -7
  156. package/dist/tools/library.d.ts.map +1 -1
  157. package/dist/tools/library.js +23 -7
  158. package/dist/tools/library.js.map +1 -1
  159. package/dist/tools/list-channel-thumbnails.d.ts +235 -0
  160. package/dist/tools/list-channel-thumbnails.d.ts.map +1 -0
  161. package/dist/tools/list-channel-thumbnails.js +79 -0
  162. package/dist/tools/list-channel-thumbnails.js.map +1 -0
  163. package/dist/tools/list-library.d.ts +4 -4
  164. package/dist/tools/manage-brain.d.ts +39 -0
  165. package/dist/tools/manage-brain.d.ts.map +1 -0
  166. package/dist/tools/manage-brain.js +53 -0
  167. package/dist/tools/manage-brain.js.map +1 -0
  168. package/dist/tools/save-to-library.d.ts.map +1 -1
  169. package/dist/tools/save-to-library.js +5 -1
  170. package/dist/tools/save-to-library.js.map +1 -1
  171. package/dist/tools/search-channels.d.ts +10 -4
  172. package/dist/tools/search-channels.d.ts.map +1 -1
  173. package/dist/tools/search-transcript.d.ts +2 -2
  174. package/dist/tools/search-transcript.d.ts.map +1 -1
  175. package/dist/tools/search-transcript.js +6 -13
  176. package/dist/tools/search-transcript.js.map +1 -1
  177. package/dist/tools/search-videos.d.ts +11 -8
  178. package/dist/tools/search-videos.d.ts.map +1 -1
  179. package/dist/utils/batches.d.ts +15 -0
  180. package/dist/utils/batches.d.ts.map +1 -0
  181. package/dist/utils/batches.js +31 -0
  182. package/dist/utils/batches.js.map +1 -0
  183. package/dist/utils/brain-build.d.ts +40 -0
  184. package/dist/utils/brain-build.d.ts.map +1 -0
  185. package/dist/utils/brain-build.js +200 -0
  186. package/dist/utils/brain-build.js.map +1 -0
  187. package/dist/utils/brain-chunks.d.ts +33 -0
  188. package/dist/utils/brain-chunks.d.ts.map +1 -0
  189. package/dist/utils/brain-chunks.js +87 -0
  190. package/dist/utils/brain-chunks.js.map +1 -0
  191. package/dist/utils/brain-index.d.ts +27 -0
  192. package/dist/utils/brain-index.d.ts.map +1 -0
  193. package/dist/utils/brain-index.js +101 -0
  194. package/dist/utils/brain-index.js.map +1 -0
  195. package/dist/utils/brain-ingest.d.ts +57 -0
  196. package/dist/utils/brain-ingest.d.ts.map +1 -0
  197. package/dist/utils/brain-ingest.js +127 -0
  198. package/dist/utils/brain-ingest.js.map +1 -0
  199. package/dist/utils/brain-lock.d.ts +4 -0
  200. package/dist/utils/brain-lock.d.ts.map +1 -0
  201. package/dist/utils/brain-lock.js +17 -0
  202. package/dist/utils/brain-lock.js.map +1 -0
  203. package/dist/utils/brain-lookup.d.ts +11 -0
  204. package/dist/utils/brain-lookup.d.ts.map +1 -0
  205. package/dist/utils/brain-lookup.js +36 -0
  206. package/dist/utils/brain-lookup.js.map +1 -0
  207. package/dist/utils/brain-paths.d.ts +19 -0
  208. package/dist/utils/brain-paths.d.ts.map +1 -0
  209. package/dist/utils/brain-paths.js +34 -0
  210. package/dist/utils/brain-paths.js.map +1 -0
  211. package/dist/utils/brain-phrases.d.ts +31 -0
  212. package/dist/utils/brain-phrases.d.ts.map +1 -0
  213. package/dist/utils/brain-phrases.js +116 -0
  214. package/dist/utils/brain-phrases.js.map +1 -0
  215. package/dist/utils/brain-stats.d.ts +25 -0
  216. package/dist/utils/brain-stats.d.ts.map +1 -0
  217. package/dist/utils/brain-stats.js +64 -0
  218. package/dist/utils/brain-stats.js.map +1 -0
  219. package/dist/utils/brain-storage.d.ts +28 -0
  220. package/dist/utils/brain-storage.d.ts.map +1 -0
  221. package/dist/utils/brain-storage.js +87 -0
  222. package/dist/utils/brain-storage.js.map +1 -0
  223. package/dist/utils/caption-probe.d.ts +7 -0
  224. package/dist/utils/caption-probe.d.ts.map +1 -0
  225. package/dist/utils/caption-probe.js +36 -0
  226. package/dist/utils/caption-probe.js.map +1 -0
  227. package/dist/utils/channel-images.d.ts +16 -0
  228. package/dist/utils/channel-images.d.ts.map +1 -0
  229. package/dist/utils/channel-images.js +35 -0
  230. package/dist/utils/channel-images.js.map +1 -0
  231. package/dist/utils/channel-lookup.d.ts +5 -0
  232. package/dist/utils/channel-lookup.d.ts.map +1 -0
  233. package/dist/utils/channel-lookup.js +37 -0
  234. package/dist/utils/channel-lookup.js.map +1 -0
  235. package/dist/utils/chapters.d.ts +11 -0
  236. package/dist/utils/chapters.d.ts.map +1 -0
  237. package/dist/utils/chapters.js +24 -0
  238. package/dist/utils/chapters.js.map +1 -0
  239. package/dist/utils/clips.d.ts.map +1 -1
  240. package/dist/utils/clips.js +22 -30
  241. package/dist/utils/clips.js.map +1 -1
  242. package/dist/utils/env.d.ts +26 -0
  243. package/dist/utils/env.d.ts.map +1 -0
  244. package/dist/utils/env.js +72 -0
  245. package/dist/utils/env.js.map +1 -0
  246. package/dist/utils/errors.d.ts +1 -1
  247. package/dist/utils/errors.d.ts.map +1 -1
  248. package/dist/utils/errors.js +20 -2
  249. package/dist/utils/errors.js.map +1 -1
  250. package/dist/utils/file-lock.d.ts +34 -0
  251. package/dist/utils/file-lock.d.ts.map +1 -0
  252. package/dist/utils/file-lock.js +91 -0
  253. package/dist/utils/file-lock.js.map +1 -0
  254. package/dist/utils/flat-listing.d.ts +89 -0
  255. package/dist/utils/flat-listing.d.ts.map +1 -0
  256. package/dist/utils/flat-listing.js +68 -0
  257. package/dist/utils/flat-listing.js.map +1 -0
  258. package/dist/utils/format.d.ts +1 -3
  259. package/dist/utils/format.d.ts.map +1 -1
  260. package/dist/utils/format.js +1 -5
  261. package/dist/utils/format.js.map +1 -1
  262. package/dist/utils/guard.d.ts +21 -0
  263. package/dist/utils/guard.d.ts.map +1 -0
  264. package/dist/utils/guard.js +105 -0
  265. package/dist/utils/guard.js.map +1 -0
  266. package/dist/utils/image-dimensions.d.ts +19 -0
  267. package/dist/utils/image-dimensions.d.ts.map +1 -0
  268. package/dist/utils/image-dimensions.js +93 -0
  269. package/dist/utils/image-dimensions.js.map +1 -0
  270. package/dist/utils/image-fetch.d.ts +31 -0
  271. package/dist/utils/image-fetch.d.ts.map +1 -0
  272. package/dist/utils/image-fetch.js +141 -0
  273. package/dist/utils/image-fetch.js.map +1 -0
  274. package/dist/utils/json-file.d.ts +45 -0
  275. package/dist/utils/json-file.d.ts.map +1 -0
  276. package/dist/utils/json-file.js +60 -0
  277. package/dist/utils/json-file.js.map +1 -0
  278. package/dist/utils/paths.d.ts +19 -0
  279. package/dist/utils/paths.d.ts.map +1 -0
  280. package/dist/utils/paths.js +27 -0
  281. package/dist/utils/paths.js.map +1 -0
  282. package/dist/utils/pattern.d.ts +30 -0
  283. package/dist/utils/pattern.d.ts.map +1 -0
  284. package/dist/utils/pattern.js +130 -0
  285. package/dist/utils/pattern.js.map +1 -0
  286. package/dist/utils/search-index.d.ts +22 -7
  287. package/dist/utils/search-index.d.ts.map +1 -1
  288. package/dist/utils/search-index.js +26 -8
  289. package/dist/utils/search-index.js.map +1 -1
  290. package/dist/utils/storage.d.ts +14 -44
  291. package/dist/utils/storage.d.ts.map +1 -1
  292. package/dist/utils/storage.js +47 -84
  293. package/dist/utils/storage.js.map +1 -1
  294. package/dist/utils/subtitles.d.ts +7 -0
  295. package/dist/utils/subtitles.d.ts.map +1 -0
  296. package/dist/utils/subtitles.js +30 -0
  297. package/dist/utils/subtitles.js.map +1 -0
  298. package/dist/utils/thumbnail-entry.d.ts +19 -0
  299. package/dist/utils/thumbnail-entry.d.ts.map +1 -0
  300. package/dist/utils/thumbnail-entry.js +119 -0
  301. package/dist/utils/thumbnail-entry.js.map +1 -0
  302. package/dist/utils/thumbnail-fetch.d.ts +37 -0
  303. package/dist/utils/thumbnail-fetch.d.ts.map +1 -0
  304. package/dist/utils/thumbnail-fetch.js +89 -0
  305. package/dist/utils/thumbnail-fetch.js.map +1 -0
  306. package/dist/utils/thumbnail-ladder.d.ts +44 -0
  307. package/dist/utils/thumbnail-ladder.d.ts.map +1 -0
  308. package/dist/utils/thumbnail-ladder.js +68 -0
  309. package/dist/utils/thumbnail-ladder.js.map +1 -0
  310. package/dist/utils/thumbnail-listing.d.ts +16 -0
  311. package/dist/utils/thumbnail-listing.d.ts.map +1 -0
  312. package/dist/utils/thumbnail-listing.js +26 -0
  313. package/dist/utils/thumbnail-listing.js.map +1 -0
  314. package/dist/utils/thumbnail-paths.d.ts +20 -0
  315. package/dist/utils/thumbnail-paths.d.ts.map +1 -0
  316. package/dist/utils/thumbnail-paths.js +35 -0
  317. package/dist/utils/thumbnail-paths.js.map +1 -0
  318. package/dist/utils/thumbnail-store.d.ts +19 -0
  319. package/dist/utils/thumbnail-store.d.ts.map +1 -0
  320. package/dist/utils/thumbnail-store.js +125 -0
  321. package/dist/utils/thumbnail-store.js.map +1 -0
  322. package/dist/utils/transcript-cache.d.ts +20 -0
  323. package/dist/utils/transcript-cache.d.ts.map +1 -0
  324. package/dist/utils/transcript-cache.js +127 -0
  325. package/dist/utils/transcript-cache.js.map +1 -0
  326. package/dist/utils/transcript-search.d.ts +20 -0
  327. package/dist/utils/transcript-search.d.ts.map +1 -0
  328. package/dist/utils/transcript-search.js +35 -0
  329. package/dist/utils/transcript-search.js.map +1 -0
  330. package/dist/utils/transcript.d.ts +14 -34
  331. package/dist/utils/transcript.d.ts.map +1 -1
  332. package/dist/utils/transcript.js +5 -64
  333. package/dist/utils/transcript.js.map +1 -1
  334. package/dist/utils/validate-youtube.d.ts +35 -0
  335. package/dist/utils/validate-youtube.d.ts.map +1 -0
  336. package/dist/utils/validate-youtube.js +87 -0
  337. package/dist/utils/validate-youtube.js.map +1 -0
  338. package/dist/utils/validate.d.ts +11 -3
  339. package/dist/utils/validate.d.ts.map +1 -1
  340. package/dist/utils/validate.js +43 -18
  341. package/dist/utils/validate.js.map +1 -1
  342. package/dist/utils/version.d.ts +2 -0
  343. package/dist/utils/version.d.ts.map +1 -0
  344. package/dist/utils/version.js +19 -0
  345. package/dist/utils/version.js.map +1 -0
  346. package/dist/utils/youtube-channel.d.ts +44 -0
  347. package/dist/utils/youtube-channel.d.ts.map +1 -0
  348. package/dist/utils/youtube-channel.js +61 -0
  349. package/dist/utils/youtube-channel.js.map +1 -0
  350. package/dist/utils/youtube-download.d.ts +27 -0
  351. package/dist/utils/youtube-download.d.ts.map +1 -0
  352. package/dist/utils/youtube-download.js +118 -0
  353. package/dist/utils/youtube-download.js.map +1 -0
  354. package/dist/utils/youtube-schemas.d.ts +394 -0
  355. package/dist/utils/youtube-schemas.d.ts.map +1 -0
  356. package/dist/utils/youtube-schemas.js +118 -0
  357. package/dist/utils/youtube-schemas.js.map +1 -0
  358. package/dist/utils/youtube-search.d.ts +14 -0
  359. package/dist/utils/youtube-search.d.ts.map +1 -0
  360. package/dist/utils/youtube-search.js +39 -0
  361. package/dist/utils/youtube-search.js.map +1 -0
  362. package/dist/utils/youtube-url.d.ts +25 -0
  363. package/dist/utils/youtube-url.d.ts.map +1 -0
  364. package/dist/utils/youtube-url.js +75 -0
  365. package/dist/utils/youtube-url.js.map +1 -0
  366. package/dist/utils/youtube-video.d.ts +47 -0
  367. package/dist/utils/youtube-video.d.ts.map +1 -0
  368. package/dist/utils/youtube-video.js +98 -0
  369. package/dist/utils/youtube-video.js.map +1 -0
  370. package/dist/utils/youtube.d.ts +13 -111
  371. package/dist/utils/youtube.d.ts.map +1 -1
  372. package/dist/utils/youtube.js +11 -480
  373. package/dist/utils/youtube.js.map +1 -1
  374. package/dist/utils/ytdlp-env.d.ts +33 -0
  375. package/dist/utils/ytdlp-env.d.ts.map +1 -0
  376. package/dist/utils/ytdlp-env.js +121 -0
  377. package/dist/utils/ytdlp-env.js.map +1 -0
  378. package/dist/utils/ytdlp-limiter.d.ts +24 -0
  379. package/dist/utils/ytdlp-limiter.d.ts.map +1 -0
  380. package/dist/utils/ytdlp-limiter.js +69 -0
  381. package/dist/utils/ytdlp-limiter.js.map +1 -0
  382. package/dist/utils/ytdlp-parse.d.ts +13 -0
  383. package/dist/utils/ytdlp-parse.d.ts.map +1 -0
  384. package/dist/utils/ytdlp-parse.js +48 -0
  385. package/dist/utils/ytdlp-parse.js.map +1 -0
  386. package/dist/utils/ytdlp.d.ts +13 -18
  387. package/dist/utils/ytdlp.d.ts.map +1 -1
  388. package/dist/utils/ytdlp.js +21 -110
  389. package/dist/utils/ytdlp.js.map +1 -1
  390. package/package.json +2 -1
@@ -0,0 +1,502 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * The shapes a channel brain is made of.
4
+ *
5
+ * Split from `schemas.ts` only for size; the rule there applies here too — a
6
+ * shape is declared once and used by both the persistence layer and the tools
7
+ * that report it, so the file on disk and the tool result cannot drift apart.
8
+ */
9
+ /** Why a video is, or is not, part of the corpus. */
10
+ export declare const brainVideoStateSchema: z.ZodObject<{
11
+ videoId: z.ZodString;
12
+ title: z.ZodString;
13
+ url: z.ZodString;
14
+ uploadDate: z.ZodString;
15
+ durationSeconds: z.ZodNumber;
16
+ state: z.ZodEnum<["pending", "indexed", "no-captions", "failed", "excluded"]>;
17
+ chunkCount: z.ZodNumber;
18
+ wordCount: z.ZodNumber;
19
+ error: z.ZodOptional<z.ZodString>;
20
+ }, "strip", z.ZodTypeAny, {
21
+ title: string;
22
+ durationSeconds: number;
23
+ url: string;
24
+ uploadDate: string;
25
+ videoId: string;
26
+ state: "pending" | "indexed" | "no-captions" | "failed" | "excluded";
27
+ chunkCount: number;
28
+ wordCount: number;
29
+ error?: string | undefined;
30
+ }, {
31
+ title: string;
32
+ durationSeconds: number;
33
+ url: string;
34
+ uploadDate: string;
35
+ videoId: string;
36
+ state: "pending" | "indexed" | "no-captions" | "failed" | "excluded";
37
+ chunkCount: number;
38
+ wordCount: number;
39
+ error?: string | undefined;
40
+ }>;
41
+ export type BrainVideoState = z.infer<typeof brainVideoStateSchema>;
42
+ /** One passage of speech, addressable by timestamp. */
43
+ export declare const brainChunkSchema: z.ZodObject<{
44
+ id: z.ZodString;
45
+ videoId: z.ZodString;
46
+ title: z.ZodString;
47
+ startSeconds: z.ZodNumber;
48
+ endSeconds: z.ZodNumber;
49
+ text: z.ZodString;
50
+ }, "strip", z.ZodTypeAny, {
51
+ id: string;
52
+ title: string;
53
+ startSeconds: number;
54
+ endSeconds: number;
55
+ text: string;
56
+ videoId: string;
57
+ }, {
58
+ id: string;
59
+ title: string;
60
+ startSeconds: number;
61
+ endSeconds: number;
62
+ text: string;
63
+ videoId: string;
64
+ }>;
65
+ export type BrainChunk = z.infer<typeof brainChunkSchema>;
66
+ export declare const brainChunkFileSchema: z.ZodObject<{
67
+ version: z.ZodNumber;
68
+ chunks: z.ZodArray<z.ZodObject<{
69
+ id: z.ZodString;
70
+ videoId: z.ZodString;
71
+ title: z.ZodString;
72
+ startSeconds: z.ZodNumber;
73
+ endSeconds: z.ZodNumber;
74
+ text: z.ZodString;
75
+ }, "strip", z.ZodTypeAny, {
76
+ id: string;
77
+ title: string;
78
+ startSeconds: number;
79
+ endSeconds: number;
80
+ text: string;
81
+ videoId: string;
82
+ }, {
83
+ id: string;
84
+ title: string;
85
+ startSeconds: number;
86
+ endSeconds: number;
87
+ text: string;
88
+ videoId: string;
89
+ }>, "many">;
90
+ }, "strip", z.ZodTypeAny, {
91
+ version: number;
92
+ chunks: {
93
+ id: string;
94
+ title: string;
95
+ startSeconds: number;
96
+ endSeconds: number;
97
+ text: string;
98
+ videoId: string;
99
+ }[];
100
+ }, {
101
+ version: number;
102
+ chunks: {
103
+ id: string;
104
+ title: string;
105
+ startSeconds: number;
106
+ endSeconds: number;
107
+ text: string;
108
+ videoId: string;
109
+ }[];
110
+ }>;
111
+ export declare const brainPhraseSchema: z.ZodObject<{
112
+ phrase: z.ZodString;
113
+ videoCount: z.ZodNumber;
114
+ occurrences: z.ZodNumber;
115
+ }, "strip", z.ZodTypeAny, {
116
+ videoCount: number;
117
+ phrase: string;
118
+ occurrences: number;
119
+ }, {
120
+ videoCount: number;
121
+ phrase: string;
122
+ occurrences: number;
123
+ }>;
124
+ export declare const brainMonthlyUploadsSchema: z.ZodObject<{
125
+ month: z.ZodString;
126
+ videos: z.ZodNumber;
127
+ }, "strip", z.ZodTypeAny, {
128
+ month: string;
129
+ videos: number;
130
+ }, {
131
+ month: string;
132
+ videos: number;
133
+ }>;
134
+ /**
135
+ * What the server can state about a channel without inferring anything.
136
+ *
137
+ * Everything here is counted or measured. Claims about what a creator thinks
138
+ * belong in the profile, which a model writes from quotes it can cite.
139
+ */
140
+ export declare const brainStatsSchema: z.ZodObject<{
141
+ videoCount: z.ZodNumber;
142
+ excludedCount: z.ZodNumber;
143
+ indexedCount: z.ZodNumber;
144
+ noCaptionsCount: z.ZodNumber;
145
+ failedCount: z.ZodNumber;
146
+ pendingCount: z.ZodNumber;
147
+ chunkCount: z.ZodNumber;
148
+ totalWords: z.ZodNumber;
149
+ medianWordsPerMinute: z.ZodNumber;
150
+ firstUpload: z.ZodOptional<z.ZodString>;
151
+ lastUpload: z.ZodOptional<z.ZodString>;
152
+ uploadsPerMonth: z.ZodArray<z.ZodObject<{
153
+ month: z.ZodString;
154
+ videos: z.ZodNumber;
155
+ }, "strip", z.ZodTypeAny, {
156
+ month: string;
157
+ videos: number;
158
+ }, {
159
+ month: string;
160
+ videos: number;
161
+ }>, "many">;
162
+ recurringPhrases: z.ZodOptional<z.ZodArray<z.ZodObject<{
163
+ phrase: z.ZodString;
164
+ videoCount: z.ZodNumber;
165
+ occurrences: z.ZodNumber;
166
+ }, "strip", z.ZodTypeAny, {
167
+ videoCount: number;
168
+ phrase: string;
169
+ occurrences: number;
170
+ }, {
171
+ videoCount: number;
172
+ phrase: string;
173
+ occurrences: number;
174
+ }>, "many">>;
175
+ }, "strip", z.ZodTypeAny, {
176
+ videoCount: number;
177
+ chunkCount: number;
178
+ excludedCount: number;
179
+ indexedCount: number;
180
+ noCaptionsCount: number;
181
+ failedCount: number;
182
+ pendingCount: number;
183
+ totalWords: number;
184
+ medianWordsPerMinute: number;
185
+ uploadsPerMonth: {
186
+ month: string;
187
+ videos: number;
188
+ }[];
189
+ firstUpload?: string | undefined;
190
+ lastUpload?: string | undefined;
191
+ recurringPhrases?: {
192
+ videoCount: number;
193
+ phrase: string;
194
+ occurrences: number;
195
+ }[] | undefined;
196
+ }, {
197
+ videoCount: number;
198
+ chunkCount: number;
199
+ excludedCount: number;
200
+ indexedCount: number;
201
+ noCaptionsCount: number;
202
+ failedCount: number;
203
+ pendingCount: number;
204
+ totalWords: number;
205
+ medianWordsPerMinute: number;
206
+ uploadsPerMonth: {
207
+ month: string;
208
+ videos: number;
209
+ }[];
210
+ firstUpload?: string | undefined;
211
+ lastUpload?: string | undefined;
212
+ recurringPhrases?: {
213
+ videoCount: number;
214
+ phrase: string;
215
+ occurrences: number;
216
+ }[] | undefined;
217
+ }>;
218
+ export type BrainStats = z.infer<typeof brainStatsSchema>;
219
+ /** The on-disk document. */
220
+ export declare const brainManifestSchema: z.ZodObject<{
221
+ version: z.ZodNumber;
222
+ channel: z.ZodObject<{
223
+ name: z.ZodString;
224
+ channelId: z.ZodString;
225
+ handle: z.ZodString;
226
+ subscriberCount: z.ZodNumber;
227
+ channelUrl: z.ZodString;
228
+ description: z.ZodString;
229
+ avatarUrl: z.ZodOptional<z.ZodString>;
230
+ bannerUrl: z.ZodOptional<z.ZodString>;
231
+ }, "strip", z.ZodTypeAny, {
232
+ description: string;
233
+ name: string;
234
+ channelId: string;
235
+ handle: string;
236
+ subscriberCount: number;
237
+ channelUrl: string;
238
+ avatarUrl?: string | undefined;
239
+ bannerUrl?: string | undefined;
240
+ }, {
241
+ description: string;
242
+ name: string;
243
+ channelId: string;
244
+ handle: string;
245
+ subscriberCount: number;
246
+ channelUrl: string;
247
+ avatarUrl?: string | undefined;
248
+ bannerUrl?: string | undefined;
249
+ }>;
250
+ /**
251
+ * A brain is built from one caption language. Defaulted rather than required
252
+ * so a manifest written before this existed still reads back.
253
+ */
254
+ language: z.ZodDefault<z.ZodString>;
255
+ createdAt: z.ZodString;
256
+ updatedAt: z.ZodString;
257
+ videos: z.ZodType<Record<string, {
258
+ title: string;
259
+ durationSeconds: number;
260
+ url: string;
261
+ uploadDate: string;
262
+ videoId: string;
263
+ state: "pending" | "indexed" | "no-captions" | "failed" | "excluded";
264
+ chunkCount: number;
265
+ wordCount: number;
266
+ error?: string | undefined;
267
+ }>, z.ZodTypeDef, Record<string, unknown>>;
268
+ stats: z.ZodObject<{
269
+ videoCount: z.ZodNumber;
270
+ excludedCount: z.ZodNumber;
271
+ indexedCount: z.ZodNumber;
272
+ noCaptionsCount: z.ZodNumber;
273
+ failedCount: z.ZodNumber;
274
+ pendingCount: z.ZodNumber;
275
+ chunkCount: z.ZodNumber;
276
+ totalWords: z.ZodNumber;
277
+ medianWordsPerMinute: z.ZodNumber;
278
+ firstUpload: z.ZodOptional<z.ZodString>;
279
+ lastUpload: z.ZodOptional<z.ZodString>;
280
+ uploadsPerMonth: z.ZodArray<z.ZodObject<{
281
+ month: z.ZodString;
282
+ videos: z.ZodNumber;
283
+ }, "strip", z.ZodTypeAny, {
284
+ month: string;
285
+ videos: number;
286
+ }, {
287
+ month: string;
288
+ videos: number;
289
+ }>, "many">;
290
+ recurringPhrases: z.ZodOptional<z.ZodArray<z.ZodObject<{
291
+ phrase: z.ZodString;
292
+ videoCount: z.ZodNumber;
293
+ occurrences: z.ZodNumber;
294
+ }, "strip", z.ZodTypeAny, {
295
+ videoCount: number;
296
+ phrase: string;
297
+ occurrences: number;
298
+ }, {
299
+ videoCount: number;
300
+ phrase: string;
301
+ occurrences: number;
302
+ }>, "many">>;
303
+ }, "strip", z.ZodTypeAny, {
304
+ videoCount: number;
305
+ chunkCount: number;
306
+ excludedCount: number;
307
+ indexedCount: number;
308
+ noCaptionsCount: number;
309
+ failedCount: number;
310
+ pendingCount: number;
311
+ totalWords: number;
312
+ medianWordsPerMinute: number;
313
+ uploadsPerMonth: {
314
+ month: string;
315
+ videos: number;
316
+ }[];
317
+ firstUpload?: string | undefined;
318
+ lastUpload?: string | undefined;
319
+ recurringPhrases?: {
320
+ videoCount: number;
321
+ phrase: string;
322
+ occurrences: number;
323
+ }[] | undefined;
324
+ }, {
325
+ videoCount: number;
326
+ chunkCount: number;
327
+ excludedCount: number;
328
+ indexedCount: number;
329
+ noCaptionsCount: number;
330
+ failedCount: number;
331
+ pendingCount: number;
332
+ totalWords: number;
333
+ medianWordsPerMinute: number;
334
+ uploadsPerMonth: {
335
+ month: string;
336
+ videos: number;
337
+ }[];
338
+ firstUpload?: string | undefined;
339
+ lastUpload?: string | undefined;
340
+ recurringPhrases?: {
341
+ videoCount: number;
342
+ phrase: string;
343
+ occurrences: number;
344
+ }[] | undefined;
345
+ }>;
346
+ }, "strip", z.ZodTypeAny, {
347
+ channel: {
348
+ description: string;
349
+ name: string;
350
+ channelId: string;
351
+ handle: string;
352
+ subscriberCount: number;
353
+ channelUrl: string;
354
+ avatarUrl?: string | undefined;
355
+ bannerUrl?: string | undefined;
356
+ };
357
+ version: number;
358
+ videos: Record<string, {
359
+ title: string;
360
+ durationSeconds: number;
361
+ url: string;
362
+ uploadDate: string;
363
+ videoId: string;
364
+ state: "pending" | "indexed" | "no-captions" | "failed" | "excluded";
365
+ chunkCount: number;
366
+ wordCount: number;
367
+ error?: string | undefined;
368
+ }>;
369
+ language: string;
370
+ createdAt: string;
371
+ updatedAt: string;
372
+ stats: {
373
+ videoCount: number;
374
+ chunkCount: number;
375
+ excludedCount: number;
376
+ indexedCount: number;
377
+ noCaptionsCount: number;
378
+ failedCount: number;
379
+ pendingCount: number;
380
+ totalWords: number;
381
+ medianWordsPerMinute: number;
382
+ uploadsPerMonth: {
383
+ month: string;
384
+ videos: number;
385
+ }[];
386
+ firstUpload?: string | undefined;
387
+ lastUpload?: string | undefined;
388
+ recurringPhrases?: {
389
+ videoCount: number;
390
+ phrase: string;
391
+ occurrences: number;
392
+ }[] | undefined;
393
+ };
394
+ }, {
395
+ channel: {
396
+ description: string;
397
+ name: string;
398
+ channelId: string;
399
+ handle: string;
400
+ subscriberCount: number;
401
+ channelUrl: string;
402
+ avatarUrl?: string | undefined;
403
+ bannerUrl?: string | undefined;
404
+ };
405
+ version: number;
406
+ videos: Record<string, unknown>;
407
+ createdAt: string;
408
+ updatedAt: string;
409
+ stats: {
410
+ videoCount: number;
411
+ chunkCount: number;
412
+ excludedCount: number;
413
+ indexedCount: number;
414
+ noCaptionsCount: number;
415
+ failedCount: number;
416
+ pendingCount: number;
417
+ totalWords: number;
418
+ medianWordsPerMinute: number;
419
+ uploadsPerMonth: {
420
+ month: string;
421
+ videos: number;
422
+ }[];
423
+ firstUpload?: string | undefined;
424
+ lastUpload?: string | undefined;
425
+ recurringPhrases?: {
426
+ videoCount: number;
427
+ phrase: string;
428
+ occurrences: number;
429
+ }[] | undefined;
430
+ };
431
+ language?: string | undefined;
432
+ }>;
433
+ export type BrainManifest = z.infer<typeof brainManifestSchema>;
434
+ /** A retrieval result: a moment in a video, with the link that opens it. */
435
+ export declare const brainPassageSchema: z.ZodObject<{
436
+ videoId: z.ZodString;
437
+ title: z.ZodString;
438
+ startSeconds: z.ZodNumber;
439
+ startFormatted: z.ZodString;
440
+ endSeconds: z.ZodNumber;
441
+ score: z.ZodNumber;
442
+ text: z.ZodString;
443
+ url: z.ZodString;
444
+ }, "strip", z.ZodTypeAny, {
445
+ title: string;
446
+ url: string;
447
+ startSeconds: number;
448
+ startFormatted: string;
449
+ endSeconds: number;
450
+ text: string;
451
+ videoId: string;
452
+ score: number;
453
+ }, {
454
+ title: string;
455
+ url: string;
456
+ startSeconds: number;
457
+ startFormatted: string;
458
+ endSeconds: number;
459
+ text: string;
460
+ videoId: string;
461
+ score: number;
462
+ }>;
463
+ export type BrainPassage = z.infer<typeof brainPassageSchema>;
464
+ /** One row of list_brains. */
465
+ export declare const brainSummarySchema: z.ZodObject<{
466
+ channelId: z.ZodString;
467
+ name: z.ZodString;
468
+ handle: z.ZodString;
469
+ channelUrl: z.ZodString;
470
+ language: z.ZodString;
471
+ createdAt: z.ZodString;
472
+ updatedAt: z.ZodString;
473
+ hasProfile: z.ZodBoolean;
474
+ videoCount: z.ZodNumber;
475
+ indexedCount: z.ZodNumber;
476
+ chunkCount: z.ZodNumber;
477
+ }, "strip", z.ZodTypeAny, {
478
+ name: string;
479
+ channelId: string;
480
+ handle: string;
481
+ channelUrl: string;
482
+ videoCount: number;
483
+ chunkCount: number;
484
+ indexedCount: number;
485
+ language: string;
486
+ createdAt: string;
487
+ updatedAt: string;
488
+ hasProfile: boolean;
489
+ }, {
490
+ name: string;
491
+ channelId: string;
492
+ handle: string;
493
+ channelUrl: string;
494
+ videoCount: number;
495
+ chunkCount: number;
496
+ indexedCount: number;
497
+ language: string;
498
+ createdAt: string;
499
+ updatedAt: string;
500
+ hasProfile: boolean;
501
+ }>;
502
+ //# sourceMappingURL=brain-schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brain-schemas.d.ts","sourceRoot":"","sources":["../src/brain-schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;;GAMG;AAEH,qDAAqD;AACrD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAchC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,uDAAuD;AACvD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;EAO3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAG/B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;EAI5B,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;EAGpC,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmB3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,4BAA4B;AAC5B,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAG9B;;;OAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMH,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,4EAA4E;AAC5E,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAS7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,8BAA8B;AAC9B,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAY7B,CAAC"}
@@ -0,0 +1,109 @@
1
+ import { z } from 'zod';
2
+ import { channelInfoSchema, recordOfValid } from './schemas.js';
3
+ /**
4
+ * The shapes a channel brain is made of.
5
+ *
6
+ * Split from `schemas.ts` only for size; the rule there applies here too — a
7
+ * shape is declared once and used by both the persistence layer and the tools
8
+ * that report it, so the file on disk and the tool result cannot drift apart.
9
+ */
10
+ /** Why a video is, or is not, part of the corpus. */
11
+ export const brainVideoStateSchema = z.object({
12
+ videoId: z.string(),
13
+ title: z.string(),
14
+ url: z.string(),
15
+ uploadDate: z.string().describe('YYYY-MM-DD, or empty when YouTube did not report one'),
16
+ durationSeconds: z.number(),
17
+ state: z
18
+ .enum(['pending', 'indexed', 'no-captions', 'failed', 'excluded'])
19
+ .describe('pending and failed videos are retried by the next build_brain call; excluded ones were ruled out by since or minDurationSeconds and return if those change'),
20
+ chunkCount: z.number().int(),
21
+ wordCount: z.number().int(),
22
+ error: z.string().optional().describe('Failure code, when state is failed'),
23
+ });
24
+ /** One passage of speech, addressable by timestamp. */
25
+ export const brainChunkSchema = z.object({
26
+ id: z.string().describe('videoId:startSeconds'),
27
+ videoId: z.string(),
28
+ title: z.string(),
29
+ startSeconds: z.number(),
30
+ endSeconds: z.number(),
31
+ text: z.string(),
32
+ });
33
+ export const brainChunkFileSchema = z.object({
34
+ version: z.number().int(),
35
+ chunks: z.array(brainChunkSchema),
36
+ });
37
+ export const brainPhraseSchema = z.object({
38
+ phrase: z.string(),
39
+ videoCount: z.number().int().describe('Distinct videos the phrase appears in'),
40
+ occurrences: z.number().int(),
41
+ });
42
+ export const brainMonthlyUploadsSchema = z.object({
43
+ month: z.string().describe('YYYY-MM'),
44
+ videos: z.number().int(),
45
+ });
46
+ /**
47
+ * What the server can state about a channel without inferring anything.
48
+ *
49
+ * Everything here is counted or measured. Claims about what a creator thinks
50
+ * belong in the profile, which a model writes from quotes it can cite.
51
+ */
52
+ export const brainStatsSchema = z.object({
53
+ videoCount: z.number().int().describe('Videos in the brain; excluded ones are not among them'),
54
+ excludedCount: z.number().int().describe('Videos ruled out by since or minDurationSeconds'),
55
+ indexedCount: z.number().int(),
56
+ noCaptionsCount: z.number().int(),
57
+ failedCount: z.number().int(),
58
+ pendingCount: z.number().int(),
59
+ chunkCount: z.number().int(),
60
+ totalWords: z.number().int(),
61
+ medianWordsPerMinute: z.number(),
62
+ firstUpload: z.string().optional(),
63
+ lastUpload: z.string().optional(),
64
+ uploadsPerMonth: z.array(brainMonthlyUploadsSchema),
65
+ recurringPhrases: z
66
+ .array(brainPhraseSchema)
67
+ .optional()
68
+ .describe('Phrases repeated across several videos, which is what a catchphrase is. Absent while a build is unfinished: the pass reads the whole corpus, so it runs once at the end rather than at every checkpoint. An empty array means none recur; absent means not yet measured.'),
69
+ });
70
+ /** The on-disk document. */
71
+ export const brainManifestSchema = z.object({
72
+ version: z.number().int(),
73
+ channel: channelInfoSchema,
74
+ /**
75
+ * A brain is built from one caption language. Defaulted rather than required
76
+ * so a manifest written before this existed still reads back.
77
+ */
78
+ language: z.string().default('en'),
79
+ createdAt: z.string(),
80
+ updatedAt: z.string(),
81
+ videos: recordOfValid(brainVideoStateSchema),
82
+ stats: brainStatsSchema,
83
+ });
84
+ /** A retrieval result: a moment in a video, with the link that opens it. */
85
+ export const brainPassageSchema = z.object({
86
+ videoId: z.string(),
87
+ title: z.string(),
88
+ startSeconds: z.number(),
89
+ startFormatted: z.string(),
90
+ endSeconds: z.number(),
91
+ score: z.number(),
92
+ text: z.string(),
93
+ url: z.string().describe('Link that opens the video at this moment'),
94
+ });
95
+ /** One row of list_brains. */
96
+ export const brainSummarySchema = z.object({
97
+ channelId: z.string(),
98
+ name: z.string(),
99
+ handle: z.string(),
100
+ channelUrl: z.string(),
101
+ language: z.string(),
102
+ createdAt: z.string(),
103
+ updatedAt: z.string(),
104
+ hasProfile: z.boolean(),
105
+ videoCount: z.number().int(),
106
+ indexedCount: z.number().int(),
107
+ chunkCount: z.number().int(),
108
+ });
109
+ //# sourceMappingURL=brain-schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brain-schemas.js","sourceRoot":"","sources":["../src/brain-schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { Express } from 'express';
2
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
+ import { type HttpConfig } from './config.js';
4
+ import type { RateLimiter } from './rate-limiter.js';
5
+ import type { SessionStore } from './sessions.js';
6
+ /** The Express application: routes, authentication and rate limiting. */
7
+ export interface AppDependencies {
8
+ createServer: (mode: 'http') => McpServer;
9
+ sessions: SessionStore;
10
+ limiter: RateLimiter;
11
+ /** The bound port, known only once listening; read lazily for that reason. */
12
+ port: () => number;
13
+ startedAt: number;
14
+ }
15
+ export declare function buildApp(config: HttpConfig, deps: AppDependencies): Express;
16
+ //# sourceMappingURL=app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/http/app.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAmC,MAAM,SAAS,CAAC;AAOxE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAYzE,OAAO,EAAc,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,yEAAyE;AAEzE,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC;IAC1C,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,WAAW,CAAC;IACrB,8EAA8E;IAC9E,IAAI,EAAE,MAAM,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAqK3E"}