larkup 0.1.40 → 0.1.41

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 (176) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +3 -3
  3. package/.next/diagnostics/route-bundle-stats.json +8 -8
  4. package/.next/fallback-build-manifest.json +3 -3
  5. package/.next/required-server-files.js +1 -1
  6. package/.next/required-server-files.json +1 -1
  7. package/.next/server/app/_global-error.html +1 -1
  8. package/.next/server/app/_global-error.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  14. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  15. package/.next/server/app/_not-found.html +1 -1
  16. package/.next/server/app/_not-found.rsc +16 -16
  17. package/.next/server/app/_not-found.segments/_full.segment.rsc +16 -16
  18. package/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  19. package/.next/server/app/_not-found.segments/_index.segment.rsc +11 -11
  20. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  21. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  22. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  23. package/.next/server/app/analytics/page_client-reference-manifest.js +1 -1
  24. package/.next/server/app/analytics.html +1 -1
  25. package/.next/server/app/analytics.rsc +17 -17
  26. package/.next/server/app/analytics.segments/_full.segment.rsc +17 -17
  27. package/.next/server/app/analytics.segments/_head.segment.rsc +4 -4
  28. package/.next/server/app/analytics.segments/_index.segment.rsc +11 -11
  29. package/.next/server/app/analytics.segments/_tree.segment.rsc +1 -1
  30. package/.next/server/app/analytics.segments/analytics/__PAGE__.segment.rsc +3 -3
  31. package/.next/server/app/analytics.segments/analytics.segment.rsc +3 -3
  32. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  33. package/.next/server/app/chat.html +1 -1
  34. package/.next/server/app/chat.rsc +17 -17
  35. package/.next/server/app/chat.segments/_full.segment.rsc +17 -17
  36. package/.next/server/app/chat.segments/_head.segment.rsc +4 -4
  37. package/.next/server/app/chat.segments/_index.segment.rsc +11 -11
  38. package/.next/server/app/chat.segments/_tree.segment.rsc +1 -1
  39. package/.next/server/app/chat.segments/chat/__PAGE__.segment.rsc +3 -3
  40. package/.next/server/app/chat.segments/chat.segment.rsc +3 -3
  41. package/.next/server/app/data/page_client-reference-manifest.js +1 -1
  42. package/.next/server/app/data.html +1 -1
  43. package/.next/server/app/data.rsc +17 -17
  44. package/.next/server/app/data.segments/_full.segment.rsc +17 -17
  45. package/.next/server/app/data.segments/_head.segment.rsc +4 -4
  46. package/.next/server/app/data.segments/_index.segment.rsc +11 -11
  47. package/.next/server/app/data.segments/_tree.segment.rsc +1 -1
  48. package/.next/server/app/data.segments/data/__PAGE__.segment.rsc +3 -3
  49. package/.next/server/app/data.segments/data.segment.rsc +3 -3
  50. package/.next/server/app/index.html +1 -1
  51. package/.next/server/app/index.rsc +16 -16
  52. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  53. package/.next/server/app/index.segments/_full.segment.rsc +16 -16
  54. package/.next/server/app/index.segments/_head.segment.rsc +4 -4
  55. package/.next/server/app/index.segments/_index.segment.rsc +11 -11
  56. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  57. package/.next/server/app/page_client-reference-manifest.js +1 -1
  58. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  59. package/.next/server/app/settings.html +1 -1
  60. package/.next/server/app/settings.rsc +18 -18
  61. package/.next/server/app/settings.segments/_full.segment.rsc +18 -18
  62. package/.next/server/app/settings.segments/_head.segment.rsc +4 -4
  63. package/.next/server/app/settings.segments/_index.segment.rsc +11 -11
  64. package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  65. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
  66. package/.next/server/app/settings.segments/settings.segment.rsc +3 -3
  67. package/.next/server/chunks/0598_next_dist_esm_build_templates_app-route_0kbcuk-.js +8 -7
  68. package/.next/server/chunks/[root-of-the-server]__0j2l54r._.js +1 -1
  69. package/.next/server/chunks/packages_scraper_src_0kkcv_v._.js +1 -1
  70. package/.next/server/chunks/ssr/_169pdlf._.js +5 -5
  71. package/.next/server/chunks/ssr/_1yqlx1m._.js +1 -1
  72. package/.next/server/middleware-build-manifest.js +3 -3
  73. package/.next/server/pages/404.html +1 -1
  74. package/.next/server/pages/500.html +1 -1
  75. package/.next/standalone/apps/web/.next/BUILD_ID +1 -1
  76. package/.next/standalone/apps/web/.next/build-manifest.json +3 -3
  77. package/.next/standalone/apps/web/.next/required-server-files.json +1 -1
  78. package/.next/standalone/apps/web/.next/server/app/_global-error.html +1 -1
  79. package/.next/standalone/apps/web/.next/server/app/_global-error.rsc +1 -1
  80. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  81. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  82. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  83. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  84. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  85. package/.next/standalone/apps/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  86. package/.next/standalone/apps/web/.next/server/app/_not-found.html +1 -1
  87. package/.next/standalone/apps/web/.next/server/app/_not-found.rsc +16 -16
  88. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_full.segment.rsc +16 -16
  89. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  90. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_index.segment.rsc +11 -11
  91. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  92. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  93. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  94. package/.next/standalone/apps/web/.next/server/app/analytics/page_client-reference-manifest.js +1 -1
  95. package/.next/standalone/apps/web/.next/server/app/analytics.html +1 -1
  96. package/.next/standalone/apps/web/.next/server/app/analytics.rsc +17 -17
  97. package/.next/standalone/apps/web/.next/server/app/analytics.segments/_full.segment.rsc +17 -17
  98. package/.next/standalone/apps/web/.next/server/app/analytics.segments/_head.segment.rsc +4 -4
  99. package/.next/standalone/apps/web/.next/server/app/analytics.segments/_index.segment.rsc +11 -11
  100. package/.next/standalone/apps/web/.next/server/app/analytics.segments/_tree.segment.rsc +1 -1
  101. package/.next/standalone/apps/web/.next/server/app/analytics.segments/analytics/__PAGE__.segment.rsc +3 -3
  102. package/.next/standalone/apps/web/.next/server/app/analytics.segments/analytics.segment.rsc +3 -3
  103. package/.next/standalone/apps/web/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  104. package/.next/standalone/apps/web/.next/server/app/chat.html +1 -1
  105. package/.next/standalone/apps/web/.next/server/app/chat.rsc +17 -17
  106. package/.next/standalone/apps/web/.next/server/app/chat.segments/_full.segment.rsc +17 -17
  107. package/.next/standalone/apps/web/.next/server/app/chat.segments/_head.segment.rsc +4 -4
  108. package/.next/standalone/apps/web/.next/server/app/chat.segments/_index.segment.rsc +11 -11
  109. package/.next/standalone/apps/web/.next/server/app/chat.segments/_tree.segment.rsc +1 -1
  110. package/.next/standalone/apps/web/.next/server/app/chat.segments/chat/__PAGE__.segment.rsc +3 -3
  111. package/.next/standalone/apps/web/.next/server/app/chat.segments/chat.segment.rsc +3 -3
  112. package/.next/standalone/apps/web/.next/server/app/data/page_client-reference-manifest.js +1 -1
  113. package/.next/standalone/apps/web/.next/server/app/data.html +1 -1
  114. package/.next/standalone/apps/web/.next/server/app/data.rsc +17 -17
  115. package/.next/standalone/apps/web/.next/server/app/data.segments/_full.segment.rsc +17 -17
  116. package/.next/standalone/apps/web/.next/server/app/data.segments/_head.segment.rsc +4 -4
  117. package/.next/standalone/apps/web/.next/server/app/data.segments/_index.segment.rsc +11 -11
  118. package/.next/standalone/apps/web/.next/server/app/data.segments/_tree.segment.rsc +1 -1
  119. package/.next/standalone/apps/web/.next/server/app/data.segments/data/__PAGE__.segment.rsc +3 -3
  120. package/.next/standalone/apps/web/.next/server/app/data.segments/data.segment.rsc +3 -3
  121. package/.next/standalone/apps/web/.next/server/app/index.html +1 -1
  122. package/.next/standalone/apps/web/.next/server/app/index.rsc +16 -16
  123. package/.next/standalone/apps/web/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  124. package/.next/standalone/apps/web/.next/server/app/index.segments/_full.segment.rsc +16 -16
  125. package/.next/standalone/apps/web/.next/server/app/index.segments/_head.segment.rsc +4 -4
  126. package/.next/standalone/apps/web/.next/server/app/index.segments/_index.segment.rsc +11 -11
  127. package/.next/standalone/apps/web/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  128. package/.next/standalone/apps/web/.next/server/app/page_client-reference-manifest.js +1 -1
  129. package/.next/standalone/apps/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  130. package/.next/standalone/apps/web/.next/server/app/settings.html +1 -1
  131. package/.next/standalone/apps/web/.next/server/app/settings.rsc +18 -18
  132. package/.next/standalone/apps/web/.next/server/app/settings.segments/_full.segment.rsc +18 -18
  133. package/.next/standalone/apps/web/.next/server/app/settings.segments/_head.segment.rsc +4 -4
  134. package/.next/standalone/apps/web/.next/server/app/settings.segments/_index.segment.rsc +11 -11
  135. package/.next/standalone/apps/web/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  136. package/.next/standalone/apps/web/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
  137. package/.next/standalone/apps/web/.next/server/app/settings.segments/settings.segment.rsc +3 -3
  138. package/.next/standalone/apps/web/.next/server/chunks/0598_next_dist_esm_build_templates_app-route_0kbcuk-.js +8 -7
  139. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__0j2l54r._.js +1 -1
  140. package/.next/standalone/apps/web/.next/server/chunks/packages_scraper_src_0kkcv_v._.js +1 -1
  141. package/.next/standalone/apps/web/.next/server/chunks/ssr/_169pdlf._.js +5 -5
  142. package/.next/standalone/apps/web/.next/server/chunks/ssr/_1yqlx1m._.js +1 -1
  143. package/.next/standalone/apps/web/.next/server/middleware-build-manifest.js +3 -3
  144. package/.next/standalone/apps/web/.next/server/pages/404.html +1 -1
  145. package/.next/standalone/apps/web/.next/server/pages/500.html +1 -1
  146. package/.next/standalone/apps/web/.next/static/chunks/{2_qbhu4zxkm7j.js → 2dvtyg2k2op4x.js} +5 -5
  147. package/.next/{static/chunks/1b9srvyupwcjz.js → standalone/apps/web/.next/static/chunks/2x1t8sqst0ipu.js} +1 -1
  148. package/.next/standalone/apps/web/CHANGELOG.md +9 -0
  149. package/.next/standalone/apps/web/app/api/chat/route.ts +9 -2
  150. package/.next/standalone/apps/web/app/api/chat/tools.ts +10 -1
  151. package/.next/standalone/apps/web/components/data/firecrawl-notice.tsx +3 -3
  152. package/.next/standalone/apps/web/components/data/media-panel.tsx +3 -8
  153. package/.next/standalone/apps/web/components/data/scrape-panel.tsx +3 -11
  154. package/.next/standalone/apps/web/components/index/index-workspace.tsx +1 -1
  155. package/.next/standalone/apps/web/package.json +1 -1
  156. package/.next/standalone/apps/web/server.js +1 -1
  157. package/.next/standalone/packages/tools/video-audio/CHANGELOG.md +6 -0
  158. package/.next/standalone/packages/tools/video-audio/dist/url-importer.js +37 -5
  159. package/.next/standalone/packages/tools/video-audio/package.json +1 -1
  160. package/.next/standalone/packages/tools/video-audio/src/url-importer.ts +61 -25
  161. package/.next/static/chunks/{2_qbhu4zxkm7j.js → 2dvtyg2k2op4x.js} +5 -5
  162. package/.next/{standalone/apps/web/.next/static/chunks/1b9srvyupwcjz.js → static/chunks/2x1t8sqst0ipu.js} +1 -1
  163. package/CHANGELOG.md +9 -0
  164. package/app/api/chat/route.ts +9 -2
  165. package/app/api/chat/tools.ts +10 -1
  166. package/components/data/firecrawl-notice.tsx +3 -3
  167. package/components/data/media-panel.tsx +3 -8
  168. package/components/data/scrape-panel.tsx +3 -11
  169. package/components/index/index-workspace.tsx +1 -1
  170. package/package.json +6 -6
  171. /package/.next/standalone/apps/web/.next/static/{7yuxi3XYqMr4kxUl6T-qk → whR5PvI0kapiCtaze5Lb0}/_buildManifest.js +0 -0
  172. /package/.next/standalone/apps/web/.next/static/{7yuxi3XYqMr4kxUl6T-qk → whR5PvI0kapiCtaze5Lb0}/_clientMiddlewareManifest.js +0 -0
  173. /package/.next/standalone/apps/web/.next/static/{7yuxi3XYqMr4kxUl6T-qk → whR5PvI0kapiCtaze5Lb0}/_ssgManifest.js +0 -0
  174. /package/.next/static/{7yuxi3XYqMr4kxUl6T-qk → whR5PvI0kapiCtaze5Lb0}/_buildManifest.js +0 -0
  175. /package/.next/static/{7yuxi3XYqMr4kxUl6T-qk → whR5PvI0kapiCtaze5Lb0}/_clientMiddlewareManifest.js +0 -0
  176. /package/.next/static/{7yuxi3XYqMr4kxUl6T-qk → whR5PvI0kapiCtaze5Lb0}/_ssgManifest.js +0 -0
@@ -99,31 +99,53 @@ export async function importMediaUrl(
99
99
  const template = path.join(options.outputDir, '%(title).120B [%(id)s].%(ext)s');
100
100
  const print =
101
101
  '{"path":%(filepath)j,"title":%(title)j,"originalUrl":%(webpage_url)j,"ext":%(ext)j}';
102
- const output = await runYtDlp(
103
- [
104
- '--no-playlist',
105
- '--playlist-end',
106
- String(options.playlistMax ?? 10),
107
- '--socket-timeout',
108
- '20',
109
- '--retries',
110
- '2',
111
- '--fragment-retries',
112
- '2',
113
- '--concurrent-fragments',
114
- '4',
115
- '--format',
116
- 'best[height<=360]/bestvideo[height<=360]+bestaudio/best',
117
- '--merge-output-format',
118
- 'mp4',
119
- '-o',
120
- template,
121
- '--print',
122
- `after_move:${print}`,
123
- url,
124
- ],
125
- options.onProgress,
126
- );
102
+ const commonArgs = [
103
+ '--no-playlist',
104
+ '--playlist-end',
105
+ String(options.playlistMax ?? 10),
106
+ '--socket-timeout',
107
+ '20',
108
+ '--retries',
109
+ '2',
110
+ '--fragment-retries',
111
+ '2',
112
+ '--format',
113
+ 'best[height<=360]/bestvideo[height<=360]+bestaudio/best',
114
+ '--merge-output-format',
115
+ 'mp4',
116
+ '-o',
117
+ template,
118
+ '--print',
119
+ `after_move:${print}`,
120
+ ];
121
+ let output: string;
122
+ try {
123
+ output = await runYtDlp(
124
+ [...commonArgs, '--concurrent-fragments', '4', url],
125
+ options.onProgress,
126
+ );
127
+ } catch (error) {
128
+ if (!isVideoHostForbidden(error)) throw error;
129
+ // Video hosts occasionally reject a freshly-issued media URL. Re-extract
130
+ // it with a conservative one-fragment retry before failing the asset.
131
+ options.onProgress?.({ message: 'Source rejected the download; refreshing the video link…' });
132
+ try {
133
+ output = await runYtDlp(
134
+ [
135
+ ...commonArgs,
136
+ '--force-ipv4',
137
+ '--extractor-retries',
138
+ '3',
139
+ '--concurrent-fragments',
140
+ '1',
141
+ url,
142
+ ],
143
+ options.onProgress,
144
+ );
145
+ } catch (retryError) {
146
+ throw friendlyVideoDownloadError(retryError);
147
+ }
148
+ }
127
149
  const imported = output
128
150
  .split('\n')
129
151
  .filter(Boolean)
@@ -186,6 +208,20 @@ export async function importMediaUrl(
186
208
  ];
187
209
  }
188
210
 
211
+ function isVideoHostForbidden(error: unknown): boolean {
212
+ return error instanceof Error && /\b(?:403|forbidden)\b/i.test(error.message);
213
+ }
214
+
215
+ /** Keep upstream yt-dlp output out of the end-user status while retaining a useful cause. */
216
+ function friendlyVideoDownloadError(error: unknown): Error {
217
+ if (isVideoHostForbidden(error)) {
218
+ return new Error(
219
+ 'The video host refused this download (HTTP 403) after a safe retry. This is a temporary source restriction, not a problem with your existing index. Try again later, or upload the original video file directly.',
220
+ );
221
+ }
222
+ return error instanceof Error ? error : new Error('Video download failed. Please try again.');
223
+ }
224
+
189
225
  /**
190
226
  * Read the video's own manual or automatic captions through yt-dlp. This is
191
227
  * both faster and usually more accurate than transcribing compressed audio,