larkup 0.1.36 → 0.1.38

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 (282) 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 +12 -12
  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 +18 -18
  17. package/.next/server/app/_not-found.segments/_full.segment.rsc +18 -18
  18. package/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  19. package/.next/server/app/_not-found.segments/_index.segment.rsc +12 -12
  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 +2 -2
  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 +19 -19
  26. package/.next/server/app/analytics.segments/_full.segment.rsc +19 -19
  27. package/.next/server/app/analytics.segments/_head.segment.rsc +4 -4
  28. package/.next/server/app/analytics.segments/_index.segment.rsc +12 -12
  29. package/.next/server/app/analytics.segments/_tree.segment.rsc +2 -2
  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/api/analytics/route.js.nft.json +1 -1
  33. package/.next/server/app/api/chat/route.js.nft.json +1 -1
  34. package/.next/server/app/api/chat/status/route.js.nft.json +1 -1
  35. package/.next/server/app/api/chat/suggestions/route.js.nft.json +1 -1
  36. package/.next/server/app/api/config/route.js.nft.json +1 -1
  37. package/.next/server/app/api/config/test/route.js.nft.json +1 -1
  38. package/.next/server/app/api/connections/route.js.nft.json +1 -1
  39. package/.next/server/app/api/connections/webhook/route.js.nft.json +1 -1
  40. package/.next/server/app/api/demo/route.js.nft.json +1 -1
  41. package/.next/server/app/api/deploy/cloud-project/route.js.nft.json +1 -1
  42. package/.next/server/app/api/deploy/ssh/route.js.nft.json +1 -1
  43. package/.next/server/app/api/deployment/blob-setup/route.js.nft.json +1 -1
  44. package/.next/server/app/api/deployment/config/route.js.nft.json +1 -1
  45. package/.next/server/app/api/describe-image/route.js.nft.json +1 -1
  46. package/.next/server/app/api/documents/route.js.nft.json +1 -1
  47. package/.next/server/app/api/firecrawl/local/route.js.nft.json +1 -1
  48. package/.next/server/app/api/index/route.js.nft.json +1 -1
  49. package/.next/server/app/api/jobs/[id]/route.js.nft.json +1 -1
  50. package/.next/server/app/api/jobs/route.js.nft.json +1 -1
  51. package/.next/server/app/api/media/[id]/route.js.nft.json +1 -1
  52. package/.next/server/app/api/media/process/route.js.nft.json +1 -1
  53. package/.next/server/app/api/media/route.js.nft.json +1 -1
  54. package/.next/server/app/api/media/stream/route.js.nft.json +1 -1
  55. package/.next/server/app/api/search/bing/route.js.nft.json +1 -1
  56. package/.next/server/app/api/search/brave/route.js.nft.json +1 -1
  57. package/.next/server/app/api/search/exa/route.js.nft.json +1 -1
  58. package/.next/server/app/api/search/google/route.js.nft.json +1 -1
  59. package/.next/server/app/api/search/route.js.nft.json +1 -1
  60. package/.next/server/app/api/search/tavily/route.js.nft.json +1 -1
  61. package/.next/server/app/api/server/agent/route.js.nft.json +1 -1
  62. package/.next/server/app/api/server/download/route.js.nft.json +1 -1
  63. package/.next/server/app/api/server/generate/route.js.nft.json +1 -1
  64. package/.next/server/app/api/server/local/route.js.nft.json +1 -1
  65. package/.next/server/app/api/servers/route.js.nft.json +1 -1
  66. package/.next/server/app/api/tabular/query/route.js.nft.json +1 -1
  67. package/.next/server/app/api/tabular/route.js.nft.json +1 -1
  68. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  69. package/.next/server/app/chat.html +1 -1
  70. package/.next/server/app/chat.rsc +19 -19
  71. package/.next/server/app/chat.segments/_full.segment.rsc +19 -19
  72. package/.next/server/app/chat.segments/_head.segment.rsc +4 -4
  73. package/.next/server/app/chat.segments/_index.segment.rsc +12 -12
  74. package/.next/server/app/chat.segments/_tree.segment.rsc +2 -2
  75. package/.next/server/app/chat.segments/chat/__PAGE__.segment.rsc +3 -3
  76. package/.next/server/app/chat.segments/chat.segment.rsc +3 -3
  77. package/.next/server/app/data/page_client-reference-manifest.js +1 -1
  78. package/.next/server/app/data.html +1 -1
  79. package/.next/server/app/data.rsc +19 -19
  80. package/.next/server/app/data.segments/_full.segment.rsc +19 -19
  81. package/.next/server/app/data.segments/_head.segment.rsc +4 -4
  82. package/.next/server/app/data.segments/_index.segment.rsc +12 -12
  83. package/.next/server/app/data.segments/_tree.segment.rsc +2 -2
  84. package/.next/server/app/data.segments/data/__PAGE__.segment.rsc +3 -3
  85. package/.next/server/app/data.segments/data.segment.rsc +3 -3
  86. package/.next/server/app/index.html +1 -1
  87. package/.next/server/app/index.rsc +17 -17
  88. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  89. package/.next/server/app/index.segments/_full.segment.rsc +17 -17
  90. package/.next/server/app/index.segments/_head.segment.rsc +4 -4
  91. package/.next/server/app/index.segments/_index.segment.rsc +12 -12
  92. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  93. package/.next/server/app/page_client-reference-manifest.js +1 -1
  94. package/.next/server/app/settings/page.js.nft.json +1 -1
  95. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  96. package/.next/server/app/settings.html +1 -1
  97. package/.next/server/app/settings.rsc +19 -19
  98. package/.next/server/app/settings.segments/_full.segment.rsc +19 -19
  99. package/.next/server/app/settings.segments/_head.segment.rsc +4 -4
  100. package/.next/server/app/settings.segments/_index.segment.rsc +12 -12
  101. package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  102. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
  103. package/.next/server/app/settings.segments/settings.segment.rsc +3 -3
  104. package/.next/server/chunks/0598_next_dist_esm_build_templates_app-route_0kbcuk-.js +23 -24
  105. package/.next/server/chunks/0598_next_dist_esm_build_templates_app-route_0sbf4ny.js +1 -1
  106. package/.next/server/chunks/[root-of-the-server]__1jc54o2._.js +1 -1
  107. package/.next/server/chunks/_1twj5f0._.js +3 -3
  108. package/.next/server/chunks/packages_marketplace_src_125_g2p._.js +1 -1
  109. package/.next/server/chunks/packages_scraper_src_0kkcv_v._.js +1 -1
  110. package/.next/server/chunks/ssr/_169pdlf._.js +1 -1
  111. package/.next/server/chunks/ssr/_18jagqc._.js +2 -2
  112. package/.next/server/chunks/ssr/_1hetwwu._.js +1 -1
  113. package/.next/server/chunks/ssr/_1yqlx1m._.js +1 -1
  114. package/.next/server/middleware-build-manifest.js +3 -3
  115. package/.next/server/pages/404.html +1 -1
  116. package/.next/server/pages/500.html +1 -1
  117. package/.next/standalone/apps/web/.next/BUILD_ID +1 -1
  118. package/.next/standalone/apps/web/.next/build-manifest.json +3 -3
  119. package/.next/standalone/apps/web/.next/required-server-files.json +1 -1
  120. package/.next/standalone/apps/web/.next/server/app/_global-error.html +1 -1
  121. package/.next/standalone/apps/web/.next/server/app/_global-error.rsc +1 -1
  122. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  123. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  124. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  125. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  126. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  127. package/.next/standalone/apps/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  128. package/.next/standalone/apps/web/.next/server/app/_not-found.html +1 -1
  129. package/.next/standalone/apps/web/.next/server/app/_not-found.rsc +18 -18
  130. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_full.segment.rsc +18 -18
  131. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  132. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_index.segment.rsc +12 -12
  133. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  134. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  135. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  136. package/.next/standalone/apps/web/.next/server/app/analytics/page_client-reference-manifest.js +1 -1
  137. package/.next/standalone/apps/web/.next/server/app/analytics.html +1 -1
  138. package/.next/standalone/apps/web/.next/server/app/analytics.rsc +19 -19
  139. package/.next/standalone/apps/web/.next/server/app/analytics.segments/_full.segment.rsc +19 -19
  140. package/.next/standalone/apps/web/.next/server/app/analytics.segments/_head.segment.rsc +4 -4
  141. package/.next/standalone/apps/web/.next/server/app/analytics.segments/_index.segment.rsc +12 -12
  142. package/.next/standalone/apps/web/.next/server/app/analytics.segments/_tree.segment.rsc +2 -2
  143. package/.next/standalone/apps/web/.next/server/app/analytics.segments/analytics/__PAGE__.segment.rsc +3 -3
  144. package/.next/standalone/apps/web/.next/server/app/analytics.segments/analytics.segment.rsc +3 -3
  145. package/.next/standalone/apps/web/.next/server/app/api/analytics/route.js.nft.json +1 -1
  146. package/.next/standalone/apps/web/.next/server/app/api/chat/route.js.nft.json +1 -1
  147. package/.next/standalone/apps/web/.next/server/app/api/chat/status/route.js.nft.json +1 -1
  148. package/.next/standalone/apps/web/.next/server/app/api/chat/suggestions/route.js.nft.json +1 -1
  149. package/.next/standalone/apps/web/.next/server/app/api/config/route.js.nft.json +1 -1
  150. package/.next/standalone/apps/web/.next/server/app/api/config/test/route.js.nft.json +1 -1
  151. package/.next/standalone/apps/web/.next/server/app/api/connections/route.js.nft.json +1 -1
  152. package/.next/standalone/apps/web/.next/server/app/api/connections/webhook/route.js.nft.json +1 -1
  153. package/.next/standalone/apps/web/.next/server/app/api/demo/route.js.nft.json +1 -1
  154. package/.next/standalone/apps/web/.next/server/app/api/deploy/cloud-project/route.js.nft.json +1 -1
  155. package/.next/standalone/apps/web/.next/server/app/api/deploy/ssh/route.js.nft.json +1 -1
  156. package/.next/standalone/apps/web/.next/server/app/api/deployment/blob-setup/route.js.nft.json +1 -1
  157. package/.next/standalone/apps/web/.next/server/app/api/deployment/config/route.js.nft.json +1 -1
  158. package/.next/standalone/apps/web/.next/server/app/api/describe-image/route.js.nft.json +1 -1
  159. package/.next/standalone/apps/web/.next/server/app/api/documents/route.js.nft.json +1 -1
  160. package/.next/standalone/apps/web/.next/server/app/api/firecrawl/local/route.js.nft.json +1 -1
  161. package/.next/standalone/apps/web/.next/server/app/api/index/route.js.nft.json +1 -1
  162. package/.next/standalone/apps/web/.next/server/app/api/jobs/[id]/route.js.nft.json +1 -1
  163. package/.next/standalone/apps/web/.next/server/app/api/jobs/route.js.nft.json +1 -1
  164. package/.next/standalone/apps/web/.next/server/app/api/media/[id]/route.js.nft.json +1 -1
  165. package/.next/standalone/apps/web/.next/server/app/api/media/process/route.js.nft.json +1 -1
  166. package/.next/standalone/apps/web/.next/server/app/api/media/route.js.nft.json +1 -1
  167. package/.next/standalone/apps/web/.next/server/app/api/media/stream/route.js.nft.json +1 -1
  168. package/.next/standalone/apps/web/.next/server/app/api/search/bing/route.js.nft.json +1 -1
  169. package/.next/standalone/apps/web/.next/server/app/api/search/brave/route.js.nft.json +1 -1
  170. package/.next/standalone/apps/web/.next/server/app/api/search/exa/route.js.nft.json +1 -1
  171. package/.next/standalone/apps/web/.next/server/app/api/search/google/route.js.nft.json +1 -1
  172. package/.next/standalone/apps/web/.next/server/app/api/search/route.js.nft.json +1 -1
  173. package/.next/standalone/apps/web/.next/server/app/api/search/tavily/route.js.nft.json +1 -1
  174. package/.next/standalone/apps/web/.next/server/app/api/server/agent/route.js.nft.json +1 -1
  175. package/.next/standalone/apps/web/.next/server/app/api/server/download/route.js.nft.json +1 -1
  176. package/.next/standalone/apps/web/.next/server/app/api/server/generate/route.js.nft.json +1 -1
  177. package/.next/standalone/apps/web/.next/server/app/api/server/local/route.js.nft.json +1 -1
  178. package/.next/standalone/apps/web/.next/server/app/api/servers/route.js.nft.json +1 -1
  179. package/.next/standalone/apps/web/.next/server/app/api/tabular/query/route.js.nft.json +1 -1
  180. package/.next/standalone/apps/web/.next/server/app/api/tabular/route.js.nft.json +1 -1
  181. package/.next/standalone/apps/web/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  182. package/.next/standalone/apps/web/.next/server/app/chat.html +1 -1
  183. package/.next/standalone/apps/web/.next/server/app/chat.rsc +19 -19
  184. package/.next/standalone/apps/web/.next/server/app/chat.segments/_full.segment.rsc +19 -19
  185. package/.next/standalone/apps/web/.next/server/app/chat.segments/_head.segment.rsc +4 -4
  186. package/.next/standalone/apps/web/.next/server/app/chat.segments/_index.segment.rsc +12 -12
  187. package/.next/standalone/apps/web/.next/server/app/chat.segments/_tree.segment.rsc +2 -2
  188. package/.next/standalone/apps/web/.next/server/app/chat.segments/chat/__PAGE__.segment.rsc +3 -3
  189. package/.next/standalone/apps/web/.next/server/app/chat.segments/chat.segment.rsc +3 -3
  190. package/.next/standalone/apps/web/.next/server/app/data/page_client-reference-manifest.js +1 -1
  191. package/.next/standalone/apps/web/.next/server/app/data.html +1 -1
  192. package/.next/standalone/apps/web/.next/server/app/data.rsc +19 -19
  193. package/.next/standalone/apps/web/.next/server/app/data.segments/_full.segment.rsc +19 -19
  194. package/.next/standalone/apps/web/.next/server/app/data.segments/_head.segment.rsc +4 -4
  195. package/.next/standalone/apps/web/.next/server/app/data.segments/_index.segment.rsc +12 -12
  196. package/.next/standalone/apps/web/.next/server/app/data.segments/_tree.segment.rsc +2 -2
  197. package/.next/standalone/apps/web/.next/server/app/data.segments/data/__PAGE__.segment.rsc +3 -3
  198. package/.next/standalone/apps/web/.next/server/app/data.segments/data.segment.rsc +3 -3
  199. package/.next/standalone/apps/web/.next/server/app/index.html +1 -1
  200. package/.next/standalone/apps/web/.next/server/app/index.rsc +17 -17
  201. package/.next/standalone/apps/web/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  202. package/.next/standalone/apps/web/.next/server/app/index.segments/_full.segment.rsc +17 -17
  203. package/.next/standalone/apps/web/.next/server/app/index.segments/_head.segment.rsc +4 -4
  204. package/.next/standalone/apps/web/.next/server/app/index.segments/_index.segment.rsc +12 -12
  205. package/.next/standalone/apps/web/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  206. package/.next/standalone/apps/web/.next/server/app/page_client-reference-manifest.js +1 -1
  207. package/.next/standalone/apps/web/.next/server/app/settings/page.js.nft.json +1 -1
  208. package/.next/standalone/apps/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  209. package/.next/standalone/apps/web/.next/server/app/settings.html +1 -1
  210. package/.next/standalone/apps/web/.next/server/app/settings.rsc +19 -19
  211. package/.next/standalone/apps/web/.next/server/app/settings.segments/_full.segment.rsc +19 -19
  212. package/.next/standalone/apps/web/.next/server/app/settings.segments/_head.segment.rsc +4 -4
  213. package/.next/standalone/apps/web/.next/server/app/settings.segments/_index.segment.rsc +12 -12
  214. package/.next/standalone/apps/web/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  215. package/.next/standalone/apps/web/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
  216. package/.next/standalone/apps/web/.next/server/app/settings.segments/settings.segment.rsc +3 -3
  217. package/.next/standalone/apps/web/.next/server/chunks/0598_next_dist_esm_build_templates_app-route_0kbcuk-.js +23 -24
  218. package/.next/standalone/apps/web/.next/server/chunks/0598_next_dist_esm_build_templates_app-route_0sbf4ny.js +1 -1
  219. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__1jc54o2._.js +1 -1
  220. package/.next/standalone/apps/web/.next/server/chunks/_1twj5f0._.js +3 -3
  221. package/.next/standalone/apps/web/.next/server/chunks/packages_marketplace_src_125_g2p._.js +1 -1
  222. package/.next/standalone/apps/web/.next/server/chunks/packages_scraper_src_0kkcv_v._.js +1 -1
  223. package/.next/standalone/apps/web/.next/server/chunks/ssr/_169pdlf._.js +1 -1
  224. package/.next/standalone/apps/web/.next/server/chunks/ssr/_18jagqc._.js +2 -2
  225. package/.next/standalone/apps/web/.next/server/chunks/ssr/_1hetwwu._.js +1 -1
  226. package/.next/standalone/apps/web/.next/server/chunks/ssr/_1yqlx1m._.js +1 -1
  227. package/.next/standalone/apps/web/.next/server/middleware-build-manifest.js +3 -3
  228. package/.next/standalone/apps/web/.next/server/pages/404.html +1 -1
  229. package/.next/standalone/apps/web/.next/server/pages/500.html +1 -1
  230. package/.next/standalone/apps/web/.next/static/chunks/{2-st4vd5971ry.js → 06u04tzgkz4_f.js} +1 -1
  231. package/.next/standalone/apps/web/.next/static/chunks/{3q4k1i384p4oi.js → 19k_g3af0cf7b.js} +1 -1
  232. package/.next/standalone/apps/web/.next/static/chunks/{3mp3jya53i-g-.js → 19krxv-ou9c8c.js} +6 -6
  233. package/.next/standalone/apps/web/.next/static/chunks/1_nk3imchwn8a.css +1 -0
  234. package/.next/standalone/apps/web/.next/static/chunks/{0qyuw19snetjl.js → 2ljwki2xxnblc.js} +2 -2
  235. package/.next/standalone/apps/web/CHANGELOG.md +17 -0
  236. package/.next/standalone/apps/web/app/api/chat/route.ts +62 -33
  237. package/.next/standalone/apps/web/app/api/media/process/route.ts +6 -0
  238. package/.next/standalone/apps/web/app/api/media/route.ts +3 -2
  239. package/.next/standalone/apps/web/app/api/media/stream/route.ts +19 -3
  240. package/.next/standalone/apps/web/app/settings/page.tsx +8 -17
  241. package/.next/standalone/apps/web/components/chat/chat-workspace.tsx +11 -4
  242. package/.next/standalone/apps/web/components/chat/message-item.tsx +18 -6
  243. package/.next/standalone/apps/web/components/chat/tools/knowledge-base-result.tsx +3 -4
  244. package/.next/standalone/apps/web/components/data/data-workspace.tsx +6 -2
  245. package/.next/standalone/apps/web/components/data/jobs-panel.tsx +22 -2
  246. package/.next/standalone/apps/web/components/data/media-panel.tsx +117 -91
  247. package/.next/standalone/apps/web/components/settings/marketplace-section.tsx +5 -0
  248. package/.next/standalone/apps/web/components/settings/prompts-section.tsx +13 -3
  249. package/.next/standalone/apps/web/package.json +1 -1
  250. package/.next/standalone/apps/web/server.js +1 -1
  251. package/.next/standalone/packages/tools/video-audio/CHANGELOG.md +6 -0
  252. package/.next/standalone/packages/tools/video-audio/dist/url-importer.js +34 -8
  253. package/.next/standalone/packages/tools/video-audio/package.json +1 -1
  254. package/.next/standalone/packages/tools/video-audio/src/url-importer.ts +56 -21
  255. package/.next/static/chunks/{2-st4vd5971ry.js → 06u04tzgkz4_f.js} +1 -1
  256. package/.next/static/chunks/{3q4k1i384p4oi.js → 19k_g3af0cf7b.js} +1 -1
  257. package/.next/static/chunks/{3mp3jya53i-g-.js → 19krxv-ou9c8c.js} +6 -6
  258. package/.next/static/chunks/1_nk3imchwn8a.css +1 -0
  259. package/.next/static/chunks/{0qyuw19snetjl.js → 2ljwki2xxnblc.js} +2 -2
  260. package/CHANGELOG.md +17 -0
  261. package/app/api/chat/route.ts +62 -33
  262. package/app/api/media/process/route.ts +6 -0
  263. package/app/api/media/route.ts +3 -2
  264. package/app/api/media/stream/route.ts +19 -3
  265. package/app/settings/page.tsx +8 -17
  266. package/components/chat/chat-workspace.tsx +11 -4
  267. package/components/chat/message-item.tsx +18 -6
  268. package/components/chat/tools/knowledge-base-result.tsx +3 -4
  269. package/components/data/data-workspace.tsx +6 -2
  270. package/components/data/jobs-panel.tsx +22 -2
  271. package/components/data/media-panel.tsx +117 -91
  272. package/components/settings/marketplace-section.tsx +5 -0
  273. package/components/settings/prompts-section.tsx +13 -3
  274. package/package.json +6 -6
  275. package/.next/standalone/apps/web/.next/static/chunks/0fa79dhcoeytz.css +0 -1
  276. package/.next/static/chunks/0fa79dhcoeytz.css +0 -1
  277. /package/.next/standalone/apps/web/.next/static/{ZV6fJc5ZoZ_a-UPNhgKZS → IOngxM7BWde96UQMAebFB}/_buildManifest.js +0 -0
  278. /package/.next/standalone/apps/web/.next/static/{ZV6fJc5ZoZ_a-UPNhgKZS → IOngxM7BWde96UQMAebFB}/_clientMiddlewareManifest.js +0 -0
  279. /package/.next/standalone/apps/web/.next/static/{ZV6fJc5ZoZ_a-UPNhgKZS → IOngxM7BWde96UQMAebFB}/_ssgManifest.js +0 -0
  280. /package/.next/static/{ZV6fJc5ZoZ_a-UPNhgKZS → IOngxM7BWde96UQMAebFB}/_buildManifest.js +0 -0
  281. /package/.next/static/{ZV6fJc5ZoZ_a-UPNhgKZS → IOngxM7BWde96UQMAebFB}/_clientMiddlewareManifest.js +0 -0
  282. /package/.next/static/{ZV6fJc5ZoZ_a-UPNhgKZS → IOngxM7BWde96UQMAebFB}/_ssgManifest.js +0 -0
@@ -428,6 +428,9 @@ function InstallPrompt({
428
428
 
429
429
  const handleInstall = async () => {
430
430
  setInstalling(true);
431
+ const toastId = toast.loading('Downloading and installing tool…', {
432
+ description: 'This may take a moment on first install.',
433
+ });
431
434
  try {
432
435
  const res = await fetch(`/api/marketplace/${toolId}`, {
433
436
  method: 'POST',
@@ -436,6 +439,7 @@ function InstallPrompt({
436
439
  const err = await res.json();
437
440
  throw new Error(err.error || 'Install failed');
438
441
  }
442
+ toast.dismiss(toastId);
439
443
  toast.success('Video & Audio installed', {
440
444
  description: 'Choose an audio provider before indexing video or audio.',
441
445
  action: {
@@ -445,6 +449,7 @@ function InstallPrompt({
445
449
  });
446
450
  onInstallComplete();
447
451
  } catch (err) {
452
+ toast.dismiss(toastId);
448
453
  toast.error(err instanceof Error ? err.message : 'Failed to install tool');
449
454
  } finally {
450
455
  setInstalling(false);
@@ -772,7 +777,7 @@ function MediaContent({
772
777
 
773
778
  async function handleDelete(assetId: string) {
774
779
  try {
775
- const query = new URLSearchParams({ id: assetId });
780
+ const query = new URLSearchParams({ id: assetId, force: 'true' });
776
781
  if (serverId) query.set('serverId', serverId);
777
782
  const response = await fetch(`/api/media?${query.toString()}`, { method: 'DELETE' });
778
783
  if (!response.ok) {
@@ -912,93 +917,114 @@ function MediaContent({
912
917
  {mediaType === 'video' ? ', YouTube videos, or playlists' : ''}. Add up to 10 URLs
913
918
  separated by commas.
914
919
  </p>
915
- {remoteEstimates ? (
916
- <div className="mt-4 flex flex-col gap-4 border-t border-border/70 pt-4">
917
- <div className="grid gap-2 sm:grid-cols-3">
918
- <EstimateMetric
919
- label="Media"
920
- value={`${remoteEstimates.reduce(
921
- (sum: any, item: any) => sum + (item.entryCount ?? 1),
922
- 0,
923
- )} item(s) · ${
924
- remoteDuration ? formatDuration(remoteDuration) : 'duration unavailable'
925
- }`}
926
- />
927
- <EstimateMetric
928
- label="Expected time"
929
- value={
930
- remoteDuration
931
- ? `~${remoteEstimate.processingMinutes} min`
932
- : 'Calculated during import'
933
- }
934
- />
935
- <EstimateMetric
936
- label="Estimated API cost"
937
- value={
938
- remoteDuration
939
- ? `~$${remoteEstimate.transcriptionCost.toFixed(2)} +`
940
- : 'Model-dependent'
941
- }
942
- />
943
- </div>
944
-
945
- {(mediaType === 'audio'
946
- ? remoteEstimates.slice(0, 1)
947
- : remoteEstimates.filter((est: any) => est.mediaType === 'video').slice(0, 1)
948
- ).map((est: any, i: number) => {
949
- if (mediaType === 'audio') {
950
- return (
951
- <div key={i} className="rounded-xl border border-border/70 bg-muted/20 p-3">
952
- <p className="mb-2 truncate text-[11px] font-medium text-foreground">
953
- Preview before importing
954
- </p>
955
- <audio
956
- controls
957
- preload="metadata"
958
- src={est.originalUrl}
959
- className="h-9 w-full"
920
+ {remoteEstimates
921
+ ? (() => {
922
+ const totalEntries = remoteEstimates.reduce(
923
+ (sum: number, item: any) => sum + (item.entryCount ?? 1),
924
+ 0,
925
+ );
926
+ const isPlaylist = totalEntries > 1;
927
+ return (
928
+ <div className="mt-4 flex flex-col gap-4 border-t border-border/70 pt-4">
929
+ <div className="grid gap-2 sm:grid-cols-3">
930
+ <EstimateMetric
931
+ label="Media"
932
+ value={`${totalEntries} item(s) · ${
933
+ remoteDuration ? formatDuration(remoteDuration) : 'duration unavailable'
934
+ }`}
960
935
  />
961
- </div>
962
- );
963
- }
964
- let embedUrl = est.originalUrl;
965
- if (est.isYouTube) {
966
- try {
967
- const u = new URL(est.originalUrl);
968
- const v = u.hostname.includes('youtu.be')
969
- ? u.pathname.slice(1)
970
- : u.searchParams.get('v');
971
- embedUrl = `https://www.youtube.com/embed/${v}`;
972
- } catch (e) {
973
- // ignore
974
- }
975
- return (
976
- <div
977
- key={i}
978
- className="relative w-full overflow-hidden rounded-xl aspect-video shadow-md border border-border/50 ring-1 ring-border/20 bg-black"
979
- >
980
- <iframe
981
- src={embedUrl}
982
- className="absolute inset-0 w-full h-full"
983
- frameBorder="0"
984
- allowFullScreen
985
- allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
936
+ <EstimateMetric
937
+ label="Expected time"
938
+ value={
939
+ remoteDuration
940
+ ? `~${remoteEstimate.processingMinutes} min`
941
+ : 'Calculated during import'
942
+ }
943
+ />
944
+ <EstimateMetric
945
+ label="Estimated API cost"
946
+ value={
947
+ remoteDuration
948
+ ? `~$${remoteEstimate.transcriptionCost.toFixed(2)} +`
949
+ : 'Model-dependent'
950
+ }
986
951
  />
987
952
  </div>
988
- );
989
- } else {
990
- return (
991
- <video
992
- key={i}
993
- src={embedUrl}
994
- controls
995
- className="w-full max-w-sm rounded-md aspect-video bg-muted object-cover shadow-sm border border-border"
996
- />
997
- );
998
- }
999
- })}
1000
- </div>
1001
- ) : null}
953
+
954
+ {isPlaylist ? (
955
+ <div className="flex items-start gap-2 rounded-lg border border-amber-200 bg-amber-50/60 dark:border-amber-800/50 dark:bg-amber-950/30 px-3 py-2.5">
956
+ <AlertCircle className="size-3.5 shrink-0 mt-0.5 text-amber-600 dark:text-amber-400" />
957
+ <p className="text-[11px] text-amber-800 dark:text-amber-300 leading-relaxed">
958
+ <span className="font-medium">Playlist detected</span> — this will
959
+ download and index{' '}
960
+ <span className="font-semibold">{totalEntries} items</span> (max 10). Each
961
+ item is transcribed and analyzed separately.
962
+ </p>
963
+ </div>
964
+ ) : null}
965
+
966
+ {(mediaType === 'audio'
967
+ ? remoteEstimates.slice(0, 1)
968
+ : remoteEstimates.filter((est: any) => est.mediaType === 'video').slice(0, 1)
969
+ ).map((est: any, i: number) => {
970
+ if (mediaType === 'audio') {
971
+ return (
972
+ <div
973
+ key={i}
974
+ className="rounded-xl border border-border/70 bg-muted/20 p-3"
975
+ >
976
+ <p className="mb-2 truncate text-[11px] font-medium text-foreground">
977
+ Preview before importing
978
+ </p>
979
+ <audio
980
+ controls
981
+ preload="metadata"
982
+ src={est.originalUrl}
983
+ className="h-9 w-full"
984
+ />
985
+ </div>
986
+ );
987
+ }
988
+ let embedUrl = est.originalUrl;
989
+ if (est.isYouTube) {
990
+ try {
991
+ const u = new URL(est.originalUrl);
992
+ const v = u.hostname.includes('youtu.be')
993
+ ? u.pathname.slice(1)
994
+ : u.searchParams.get('v');
995
+ embedUrl = `https://www.youtube.com/embed/${v}`;
996
+ } catch (e) {
997
+ // ignore
998
+ }
999
+ return (
1000
+ <div
1001
+ key={i}
1002
+ className="relative w-full overflow-hidden rounded-xl aspect-video shadow-md border border-border/50 ring-1 ring-border/20 bg-black"
1003
+ >
1004
+ <iframe
1005
+ src={embedUrl}
1006
+ className="absolute inset-0 w-full h-full"
1007
+ frameBorder="0"
1008
+ allowFullScreen
1009
+ allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
1010
+ />
1011
+ </div>
1012
+ );
1013
+ } else {
1014
+ return (
1015
+ <video
1016
+ key={i}
1017
+ src={embedUrl}
1018
+ controls
1019
+ className="w-full max-w-sm rounded-md aspect-video bg-muted object-cover shadow-sm border border-border"
1020
+ />
1021
+ );
1022
+ }
1023
+ })}
1024
+ </div>
1025
+ );
1026
+ })()
1027
+ : null}
1002
1028
  </div>
1003
1029
  ) : (
1004
1030
  <div
@@ -1233,7 +1259,7 @@ function MediaContent({
1233
1259
  ) : null}
1234
1260
 
1235
1261
  {/* Storage warning */}
1236
- {storageUsedBytes > 1024 * 1024 * 1024 && (
1262
+ {/* {storageUsedBytes > 1024 * 1024 * 1024 && (
1237
1263
  <div className="flex items-start gap-2.5 rounded-lg border border-amber-200 bg-amber-50 px-3.5 py-3">
1238
1264
  <AlertCircle className="size-4 mt-0.5 shrink-0 text-amber-600" />
1239
1265
  <div>
@@ -1245,7 +1271,7 @@ function MediaContent({
1245
1271
  </p>
1246
1272
  </div>
1247
1273
  </div>
1248
- )}
1274
+ )} */}
1249
1275
  </div>
1250
1276
  );
1251
1277
  }
@@ -1582,7 +1608,7 @@ function ActiveIndexingList({
1582
1608
  <section
1583
1609
  aria-live="polite"
1584
1610
  aria-label="Active media indexing jobs"
1585
- className="space-y-3 rounded-xl border border-emerald-300 bg-emerald-50/20 p-3 dark:border-emerald-700/60 dark:bg-emerald-950/20"
1611
+ className="space-y-3 rounded-xl border border-emerald-500 bg-emerald-50/20 p-3 dark:border-emerald-700/60 dark:bg-emerald-950/20"
1586
1612
  >
1587
1613
  <div className="flex items-center gap-2">
1588
1614
  <Loader2 className="size-3.5 animate-spin text-emerald-600 dark:text-emerald-400" />
@@ -1634,9 +1660,9 @@ function ActiveIndexingList({
1634
1660
  {asset.processingMessage || 'Preparing media indexing...'}
1635
1661
  </p>
1636
1662
  </div>
1637
- {asset.processingSteps?.length ? (
1663
+ {/* {asset.processingSteps?.length ? (
1638
1664
  <PipelineSteps steps={asset.processingSteps} />
1639
- ) : null}
1665
+ ) : null} */}
1640
1666
  </div>
1641
1667
  );
1642
1668
  })}
@@ -1671,7 +1697,7 @@ function PipelineSteps({ steps }: { steps: MediaProcessingStep[] }) {
1671
1697
  className={cn(
1672
1698
  'flex min-w-0 items-center gap-1.5 rounded-md border px-2 py-1 text-[9px]',
1673
1699
  isRunning
1674
- ? 'border-emerald-300 bg-emerald-50/70 text-emerald-700 dark:border-emerald-700/70 dark:bg-emerald-950/40 dark:text-emerald-300'
1700
+ ? 'border-emerald-500 bg-emerald-50/70 text-emerald-700 dark:border-emerald-700/70 dark:bg-emerald-950/40 dark:text-emerald-300'
1675
1701
  : 'border-border/60 bg-background/40 text-muted-foreground',
1676
1702
  )}
1677
1703
  >
@@ -98,6 +98,9 @@ export function MarketplaceSection() {
98
98
  const handleInstall = useCallback(
99
99
  async (toolId: string) => {
100
100
  setInstalling(toolId);
101
+ const toastId = toast.loading('Downloading and installing tool…', {
102
+ description: 'This may take a moment on first install.',
103
+ });
101
104
  try {
102
105
  const res = await fetch(`/api/marketplace/${toolId}`, {
103
106
  method: 'POST',
@@ -106,6 +109,7 @@ export function MarketplaceSection() {
106
109
  const err = await res.json();
107
110
  throw new Error(err.error || 'Install failed');
108
111
  }
112
+ toast.dismiss(toastId);
109
113
  if (toolId === 'video-audio') {
110
114
  toast.success('Video & Audio installed', {
111
115
  description: 'Choose an audio provider before you index media.',
@@ -119,6 +123,7 @@ export function MarketplaceSection() {
119
123
  }
120
124
  mutate();
121
125
  } catch (err) {
126
+ toast.dismiss(toastId);
122
127
  toast.error(err instanceof Error ? err.message : 'Failed to install tool');
123
128
  } finally {
124
129
  setInstalling(null);
@@ -36,13 +36,22 @@ export function PromptsSection() {
36
36
  if (data?.config) {
37
37
  setForm({
38
38
  ...data.config,
39
- systemPrompt: data.config.systemPrompt || DEFAULT_SYSTEM_PROMPT,
39
+ // The generated prompt (tools, retrieval policy, and safety rules) is
40
+ // an implementation detail. This editor contains only the user's
41
+ // optional addition, so first use starts with a clean canvas.
42
+ systemPrompt:
43
+ data.config.systemPrompt && data.config.systemPrompt !== DEFAULT_SYSTEM_PROMPT
44
+ ? data.config.systemPrompt
45
+ : '',
40
46
  });
41
47
  }
42
48
  }, [data]);
43
49
 
44
50
  const dirty =
45
- (form.systemPrompt || '') !== (data?.config?.systemPrompt || '') ||
51
+ (form.systemPrompt || '') !==
52
+ (data?.config?.systemPrompt === DEFAULT_SYSTEM_PROMPT
53
+ ? ''
54
+ : data?.config?.systemPrompt || '') ||
46
55
  JSON.stringify(form.enabledTools || []) !== JSON.stringify(data?.config?.enabledTools || []);
47
56
 
48
57
  async function handleSave() {
@@ -92,7 +101,8 @@ export function PromptsSection() {
92
101
  <CardHeader className="pb-3">
93
102
  <CardTitle className="text-sm">System Prompt</CardTitle>
94
103
  <CardDescription className="text-xs">
95
- Override the default instructions given to the AI. Leave blank for the default behavior.
104
+ Add your own instructions. Larkup keeps its generated tool and retrieval instructions
105
+ separate and combines them automatically.
96
106
  </CardDescription>
97
107
  </CardHeader>
98
108
  <CardContent>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "larkup",
3
- "version": "0.1.36",
3
+ "version": "0.1.38",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "larkup": "./bin/larkup.js"
@@ -54,12 +54,12 @@
54
54
  "zod": "^4.4.3",
55
55
  "zustand": "^5.0.14",
56
56
  "@larkup/core": "0.2.4",
57
- "@larkup/marketplace": "0.1.9",
58
- "@larkup/sandbox": "0.1.2",
59
- "@larkup/scraper": "0.1.26",
60
- "@larkup/tool-video-audio": "0.2.2",
57
+ "@larkup/marketplace": "0.1.10",
58
+ "@larkup/tool-doc-editor": "0.2.5",
61
59
  "@larkup/vector-stores": "0.1.23",
62
- "@larkup/tool-doc-editor": "0.2.5"
60
+ "@larkup/scraper": "0.1.27",
61
+ "@larkup/tool-video-audio": "0.2.3",
62
+ "@larkup/sandbox": "0.1.2"
63
63
  },
64
64
  "devDependencies": {
65
65
  "@tailwindcss/postcss": "^4.2.0",