larkup 0.2.9 → 0.2.10

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 (67) hide show
  1. package/.next/standalone/apps/web/.next/BUILD_ID +1 -1
  2. package/.next/standalone/apps/web/.next/app-path-routes-manifest.json +25 -25
  3. package/.next/standalone/apps/web/.next/build-manifest.json +2 -2
  4. package/.next/standalone/apps/web/.next/required-server-files.json +1 -1
  5. package/.next/standalone/apps/web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  6. package/.next/standalone/apps/web/.next/server/app/_global-error.html +1 -1
  7. package/.next/standalone/apps/web/.next/server/app/_global-error.rsc +1 -1
  8. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  10. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  11. package/.next/standalone/apps/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  12. package/.next/standalone/apps/web/.next/server/app/_not-found.html +1 -1
  13. package/.next/standalone/apps/web/.next/server/app/_not-found.rsc +10 -10
  14. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_full.segment.rsc +10 -10
  15. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +10 -10
  16. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  17. package/.next/standalone/apps/web/.next/server/app/add/page_client-reference-manifest.js +1 -1
  18. package/.next/standalone/apps/web/.next/server/app/add.html +1 -1
  19. package/.next/standalone/apps/web/.next/server/app/add.rsc +10 -10
  20. package/.next/standalone/apps/web/.next/server/app/add.segments/_full.segment.rsc +10 -10
  21. package/.next/standalone/apps/web/.next/server/app/add.segments/_tree.segment.rsc +1 -1
  22. package/.next/standalone/apps/web/.next/server/app/add.segments/add/__PAGE__.segment.rsc +10 -10
  23. package/.next/standalone/apps/web/.next/server/app/api/chat/route.js +1 -1
  24. package/.next/standalone/apps/web/.next/server/app/chat/[id]/page_client-reference-manifest.js +1 -1
  25. package/.next/standalone/apps/web/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  26. package/.next/standalone/apps/web/.next/server/app/chat.html +1 -1
  27. package/.next/standalone/apps/web/.next/server/app/chat.rsc +10 -10
  28. package/.next/standalone/apps/web/.next/server/app/chat.segments/_full.segment.rsc +10 -10
  29. package/.next/standalone/apps/web/.next/server/app/chat.segments/_tree.segment.rsc +1 -1
  30. package/.next/standalone/apps/web/.next/server/app/chat.segments/chat/__PAGE__.segment.rsc +10 -10
  31. package/.next/standalone/apps/web/.next/server/app/data/page_client-reference-manifest.js +1 -1
  32. package/.next/standalone/apps/web/.next/server/app/data.html +1 -1
  33. package/.next/standalone/apps/web/.next/server/app/data.rsc +10 -10
  34. package/.next/standalone/apps/web/.next/server/app/data.segments/_full.segment.rsc +10 -10
  35. package/.next/standalone/apps/web/.next/server/app/data.segments/_tree.segment.rsc +1 -1
  36. package/.next/standalone/apps/web/.next/server/app/data.segments/data/__PAGE__.segment.rsc +10 -10
  37. package/.next/standalone/apps/web/.next/server/app/index.html +1 -1
  38. package/.next/standalone/apps/web/.next/server/app/index.rsc +10 -10
  39. package/.next/standalone/apps/web/.next/server/app/index.segments/__PAGE__.segment.rsc +10 -10
  40. package/.next/standalone/apps/web/.next/server/app/index.segments/_full.segment.rsc +10 -10
  41. package/.next/standalone/apps/web/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  42. package/.next/standalone/apps/web/.next/server/app/page_client-reference-manifest.js +1 -1
  43. package/.next/standalone/apps/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  44. package/.next/standalone/apps/web/.next/server/app/settings.html +1 -1
  45. package/.next/standalone/apps/web/.next/server/app/settings.rsc +10 -10
  46. package/.next/standalone/apps/web/.next/server/app/settings.segments/_full.segment.rsc +10 -10
  47. package/.next/standalone/apps/web/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  48. package/.next/standalone/apps/web/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +10 -10
  49. package/.next/standalone/apps/web/.next/server/app/widget-demo/page_client-reference-manifest.js +1 -1
  50. package/.next/standalone/apps/web/.next/server/app/widget-demo.html +1 -1
  51. package/.next/standalone/apps/web/.next/server/app/widget-demo.rsc +10 -10
  52. package/.next/standalone/apps/web/.next/server/app/widget-demo.segments/_full.segment.rsc +10 -10
  53. package/.next/standalone/apps/web/.next/server/app/widget-demo.segments/_tree.segment.rsc +1 -1
  54. package/.next/standalone/apps/web/.next/server/app/widget-demo.segments/widget-demo/__PAGE__.segment.rsc +10 -10
  55. package/.next/standalone/apps/web/.next/server/app-paths-manifest.json +25 -25
  56. package/.next/standalone/apps/web/.next/server/chunks/7667.js +1 -1
  57. package/.next/standalone/apps/web/.next/server/chunks/8021.js +1 -1
  58. package/.next/standalone/apps/web/.next/server/middleware-build-manifest.js +1 -1
  59. package/.next/standalone/apps/web/.next/server/pages/404.html +1 -1
  60. package/.next/standalone/apps/web/.next/server/pages/500.html +1 -1
  61. package/.next/standalone/apps/web/.next/static/chunks/app/layout-eb9af9f94c483f59.js +1 -0
  62. package/.next/standalone/apps/web/package.json +1 -1
  63. package/.next/standalone/apps/web/server.js +1 -1
  64. package/package.json +1 -1
  65. package/.next/standalone/apps/web/.next/static/chunks/app/layout-dcd676a8f2f088b6.js +0 -1
  66. /package/.next/standalone/apps/web/.next/static/{_gTZ-VM9Vyte3AlHEetwr → 1soft7HLkhEb-1XnNXTB3}/_buildManifest.js +0 -0
  67. /package/.next/standalone/apps/web/.next/static/{_gTZ-VM9Vyte3AlHEetwr → 1soft7HLkhEb-1XnNXTB3}/_ssgManifest.js +0 -0
@@ -12,75 +12,76 @@
12
12
  "/api/vector-stores/install/route": "app/api/vector-stores/install/route.js",
13
13
  "/api/vector-stores/status/route": "app/api/vector-stores/status/route.js",
14
14
  "/favicon.ico/route": "app/favicon.ico/route.js",
15
+ "/api/chat/suggestions/route": "app/api/chat/suggestions/route.js",
15
16
  "/api/analytics/route": "app/api/analytics/route.js",
16
17
  "/api/chat/status/route": "app/api/chat/status/route.js",
17
- "/api/chat/suggestions/route": "app/api/chat/suggestions/route.js",
18
18
  "/api/config/test-embedding/route": "app/api/config/test-embedding/route.js",
19
- "/api/config/test-llm/route": "app/api/config/test-llm/route.js",
20
19
  "/api/config/test-provider/route": "app/api/config/test-provider/route.js",
20
+ "/api/config/test-llm/route": "app/api/config/test-llm/route.js",
21
21
  "/api/config/test/route": "app/api/config/test/route.js",
22
22
  "/api/connections/[channelId]/oauth/callback/route": "app/api/connections/[channelId]/oauth/callback/route.js",
23
- "/api/connections/[channelId]/oauth/start/route": "app/api/connections/[channelId]/oauth/start/route.js",
24
23
  "/api/config/route": "app/api/config/route.js",
25
- "/api/config/verify/route": "app/api/config/verify/route.js",
24
+ "/api/connections/[channelId]/oauth/start/route": "app/api/connections/[channelId]/oauth/start/route.js",
25
+ "/api/chat/route": "app/api/chat/route.js",
26
26
  "/api/connections/tunnel/route": "app/api/connections/tunnel/route.js",
27
+ "/api/config/verify/route": "app/api/config/verify/route.js",
27
28
  "/api/demo/route": "app/api/demo/route.js",
28
- "/api/connections/route": "app/api/connections/route.js",
29
- "/api/doc-editor/edit/route": "app/api/doc-editor/edit/route.js",
30
29
  "/api/describe-image/route": "app/api/describe-image/route.js",
31
30
  "/api/doc-editor/export/route": "app/api/doc-editor/export/route.js",
32
- "/api/deploy/ssh/route": "app/api/deploy/ssh/route.js",
33
31
  "/api/doc-editor/parse/route": "app/api/doc-editor/parse/route.js",
34
- "/api/gpu-activity/route": "app/api/gpu-activity/route.js",
32
+ "/api/doc-editor/edit/route": "app/api/doc-editor/edit/route.js",
33
+ "/api/connections/route": "app/api/connections/route.js",
35
34
  "/api/firecrawl/local/route": "app/api/firecrawl/local/route.js",
35
+ "/api/gpu-activity/route": "app/api/gpu-activity/route.js",
36
36
  "/api/groups/route": "app/api/groups/route.js",
37
+ "/api/deploy/ssh/route": "app/api/deploy/ssh/route.js",
37
38
  "/api/index/route": "app/api/index/route.js",
38
- "/api/integrations/[integration]/callback/route": "app/api/integrations/[integration]/callback/route.js",
39
- "/api/integrations/[integration]/route": "app/api/integrations/[integration]/route.js",
40
39
  "/api/documents/route": "app/api/documents/route.js",
40
+ "/api/integrations/[integration]/callback/route": "app/api/integrations/[integration]/callback/route.js",
41
41
  "/api/integrations/route": "app/api/integrations/route.js",
42
- "/api/integrations/notion/callback/route": "app/api/integrations/notion/callback/route.js",
42
+ "/api/integrations/[integration]/route": "app/api/integrations/[integration]/route.js",
43
43
  "/api/jobs/[id]/route": "app/api/jobs/[id]/route.js",
44
+ "/api/integrations/notion/callback/route": "app/api/integrations/notion/callback/route.js",
45
+ "/api/marketplace/route": "app/api/marketplace/route.js",
44
46
  "/api/jobs/route": "app/api/jobs/route.js",
45
47
  "/api/integrations/notion/route": "app/api/integrations/notion/route.js",
46
- "/api/marketplace/route": "app/api/marketplace/route.js",
47
- "/api/marketplace/[toolId]/route": "app/api/marketplace/[toolId]/route.js",
48
48
  "/api/media/[id]/route": "app/api/media/[id]/route.js",
49
49
  "/api/media/[id]/frame/route": "app/api/media/[id]/frame/route.js",
50
+ "/api/marketplace/[toolId]/route": "app/api/marketplace/[toolId]/route.js",
50
51
  "/api/media/jobs/[id]/approval/route": "app/api/media/jobs/[id]/approval/route.js",
51
52
  "/api/media/jobs/[id]/route": "app/api/media/jobs/[id]/route.js",
52
- "/api/chat/route": "app/api/chat/route.js",
53
53
  "/api/media/stream/route": "app/api/media/stream/route.js",
54
54
  "/api/models/route": "app/api/models/route.js",
55
55
  "/api/parse-file/route": "app/api/parse-file/route.js",
56
56
  "/api/pdf-page/route": "app/api/pdf-page/route.js",
57
- "/api/media/inspect/route": "app/api/media/inspect/route.js",
58
57
  "/api/media/route": "app/api/media/route.js",
59
58
  "/api/projects/route": "app/api/projects/route.js",
60
59
  "/api/projects/runtime/route": "app/api/projects/runtime/route.js",
61
- "/api/sandbox/route": "app/api/sandbox/route.js",
62
60
  "/api/proxy/verify/route": "app/api/proxy/verify/route.js",
61
+ "/api/sandbox/route": "app/api/sandbox/route.js",
62
+ "/api/media/inspect/route": "app/api/media/inspect/route.js",
63
63
  "/api/sandbox/verify/route": "app/api/sandbox/verify/route.js",
64
+ "/api/projects/deployments/route": "app/api/projects/deployments/route.js",
64
65
  "/api/search/bing/route": "app/api/search/bing/route.js",
65
66
  "/api/search/brave/route": "app/api/search/brave/route.js",
66
- "/api/search/exa/route": "app/api/search/exa/route.js",
67
67
  "/api/search/route": "app/api/search/route.js",
68
- "/api/search/google/route": "app/api/search/google/route.js",
69
- "/api/search/tavily/route": "app/api/search/tavily/route.js",
70
- "/api/projects/deployments/route": "app/api/projects/deployments/route.js",
68
+ "/api/search/exa/route": "app/api/search/exa/route.js",
71
69
  "/api/search/verify/route": "app/api/search/verify/route.js",
72
- "/api/system/cache/route": "app/api/system/cache/route.js",
70
+ "/api/search/tavily/route": "app/api/search/tavily/route.js",
73
71
  "/api/tabular/query/route": "app/api/tabular/query/route.js",
72
+ "/api/system/cache/route": "app/api/system/cache/route.js",
73
+ "/api/search/google/route": "app/api/search/google/route.js",
74
74
  "/api/tabular/route": "app/api/tabular/route.js",
75
75
  "/api/tools/[toolId]/host/route": "app/api/tools/[toolId]/host/route.js",
76
- "/api/tools/[toolId]/usage/route": "app/api/tools/[toolId]/usage/route.js",
77
76
  "/api/tools/[toolId]/runtime/route": "app/api/tools/[toolId]/runtime/route.js",
78
77
  "/api/tools/[toolId]/usage-request/route": "app/api/tools/[toolId]/usage-request/route.js",
79
- "/api/tools/video-intelligence/connection/route": "app/api/tools/video-intelligence/connection/route.js",
78
+ "/api/tools/[toolId]/usage/route": "app/api/tools/[toolId]/usage/route.js",
80
79
  "/api/tools/[toolId]/verify/route": "app/api/tools/[toolId]/verify/route.js",
80
+ "/api/tools/video-intelligence/connection/route": "app/api/tools/video-intelligence/connection/route.js",
81
81
  "/api/tools/video-intelligence/usage/route": "app/api/tools/video-intelligence/usage/route.js",
82
82
  "/api/tools/video-intelligence/usage-request/route": "app/api/tools/video-intelligence/usage-request/route.js",
83
83
  "/api/upload-file/route": "app/api/upload-file/route.js",
84
+ "/api/media/process/route": "app/api/media/process/route.js",
84
85
  "/api/uploads/[...slug]/route": "app/api/uploads/[...slug]/route.js",
85
86
  "/add/page": "app/add/page.js",
86
87
  "/chat/[id]/page": "app/chat/[id]/page.js",
@@ -88,6 +89,5 @@
88
89
  "/data/page": "app/data/page.js",
89
90
  "/page": "app/page.js",
90
91
  "/widget-demo/page": "app/widget-demo/page.js",
91
- "/settings/page": "app/settings/page.js",
92
- "/api/media/process/route": "app/api/media/process/route.js"
92
+ "/settings/page": "app/settings/page.js"
93
93
  }
@@ -1,5 +1,5 @@
1
1
  "use strict";exports.id=7667,exports.ids=[6929,7667,9310,9456],exports.modules={49310:(a,b,c)=>{c.d(b,{estimateCost:()=>n,t:()=>o,trackUsageEvent:()=>m});var d=c(73024),e=c(76760),f=c.n(e),g=c(77598),h=c(68295),i=c(44027);let j=Promise.resolve();async function k(a){let b=a?await (0,h.requireProjectDataDir)():await (0,h.getProjectDataDir)();return b?f().join(b,"analytics.json"):null}async function l(){let a=await k(!1);if(!a)return[];try{let b=await d.promises.readFile(a,"utf8");return JSON.parse(b)}catch{return[]}}function m(a){var b;let c;return b=async()=>{let b=await l(),c={...a,id:(0,g.randomUUID)()};b.push(c);let e=await k(!0);return e&&await d.promises.writeFile(e,JSON.stringify(b,null,2),"utf8"),c},j=(c=j.then(b,b)).catch(()=>{}),c}function n(a,b,c){if(a.startsWith("custom:"))return 0;let d=i.P.find(b=>b.id===a);return d&&d.pricing?b*parseFloat(d.pricing.input||"0")+c*parseFloat(d.pricing.output||"0"):0}async function o(a,b="all"){let c=await l(),d=new Date,e=new Date(a>0?d.getTime()-24*a*36e5:0),f=c.filter(a=>new Date(a.timestamp)<e||"all"===b?new Date(a.timestamp)>=e:(a.runtime??(/(localhost|127\.0\.0\.1|\[::1\])/.test(a.endpoint??"")?"local":"remote"))===b),g={totalChatTokens:0,totalEmbeddingTokens:0,totalCost:0,totalRequests:0,chatTimeSeries:[],embeddingTimeSeries:[],serverTimeSeries:[],modelBreakdown:[]},h=new Map,i=new Map,j=new Map,k=new Map;for(let a of f){let b=new Date(a.timestamp).toISOString().split("T")[0];if("chat"===a.type){g.totalChatTokens+=a.totalTokens||0,g.totalCost+=a.estimatedCost||0;let c=h.get(b)||{tokens:0,cost:0,requests:0};if(c.tokens+=a.totalTokens||0,c.cost+=a.estimatedCost||0,c.requests+=1,h.set(b,c),a.modelId){let b=k.get(a.modelId)||{type:"chat",tokens:0,cost:0,requests:0};b.tokens+=a.totalTokens||0,b.cost+=a.estimatedCost||0,b.requests+=1,k.set(a.modelId,b)}}else if("embedding"===a.type){g.totalEmbeddingTokens+=a.embeddingTokens||0,g.totalCost+=a.estimatedCost||0;let c=i.get(b)||{tokens:0,cost:0,requests:0};if(c.tokens+=a.embeddingTokens||0,c.cost+=a.estimatedCost||0,c.requests+=1,i.set(b,c),a.embeddingModelId){let b=k.get(a.embeddingModelId)||{type:"embedding",tokens:0,cost:0,requests:0};b.tokens+=a.embeddingTokens||0,b.cost+=a.estimatedCost||0,b.requests+=1,k.set(a.embeddingModelId,b)}}else if("media_processing"===a.type||"media_vision_analysis"===a.type||"media_ocr"===a.type){g.totalCost+=a.estimatedCost||0;let b=a.modelId||"media-processing",c=k.get(b)||{type:a.type,tokens:0,cost:0,requests:0};c.tokens+=a.totalTokens||0,c.cost+=a.estimatedCost||0,c.requests+=1,k.set(b,c)}else if("server_request"===a.type){g.totalRequests+=1;let c=j.get(b)||{requests:0,totalLatency:0};c.requests+=1,c.totalLatency+=a.latencyMs||0,j.set(b,c)}}return g.chatTimeSeries=Array.from(h.entries()).map(([a,b])=>({date:a,...b})).sort((a,b)=>a.date.localeCompare(b.date)),g.embeddingTimeSeries=Array.from(i.entries()).map(([a,b])=>({date:a,...b})).sort((a,b)=>a.date.localeCompare(b.date)),g.serverTimeSeries=Array.from(j.entries()).map(([a,b])=>({date:a,requests:b.requests,avgLatencyMs:b.requests>0?Math.round(b.totalLatency/b.requests):0})).sort((a,b)=>a.date.localeCompare(b.date)),g.modelBreakdown=Array.from(k.entries()).map(([a,b])=>({modelId:a,...b})).sort((a,b)=>b.cost-a.cost||b.tokens-a.tokens),g}},50048:(a,b,c)=>{c.d(b,{Vg:()=>k,A9:()=>r,IF:()=>p,uT:()=>x,ZW:()=>y,pE:()=>C,Qp:()=>n,qw:()=>m,LH:()=>l,us:()=>q,iC:()=>s,V_:()=>o});var d=c(73024),e=c(65635),f=c(73210),g=c(49310),h=c(54833);function i(a){return a.activeJobs<Math.max(1,a.concurrentJobsLimit||1)}async function j(a){let b=a.initialUsage??await a.getUsage();if(i(b))return b;let c=new Map(a.assets.filter(a=>"video"===a.type&&a.activeVideoIntelligenceJobId).map(a=>[a.activeVideoIntelligenceJobId,a])),d=!1;for(let e of new Set(b.activeJobIds??[])){let b=c.get(e);if(!(!b||"video"===b.type&&("processing"===b.processingStatus||"pending"===b.processingStatus&&b.processingMessage)))try{d=!0;let b=await a.getJob(e);("queued"===b.status||"running"===b.status)&&await a.cancelJob(e)}catch{}}if(d&&i(b=await a.getUsage()))return b;let e=a.wait??(a=>new Promise(b=>setTimeout(b,a)));for(let c of a.retryDelaysMs??[350,900])if(c>0&&await e(c),i(b=await a.getUsage()))break;return b}class k extends Error{constructor(a){super(`The video analysis worker did not respond in time (last status: ${a}).`),this.lastJobStatus=a,this.name="VideoWorkerTimeoutError"}}async function l(){let a=await (0,e.F6)("video-intelligence");if(!a)return!1;let b=await (0,f.CC)("video-intelligence");if(!b)return!1;let{config:c}=await (0,h.P)(b,a.config),d=b.createClient({config:c,fetch:globalThis.fetch}),g=await d.getUsage();return g.concurrentJobsLimit>0&&g.activeJobs<g.concurrentJobsLimit&&(null===g.sourceMinutesLimit||g.sourceMinutesUsed<g.sourceMinutesLimit)}async function m(){let a=await (0,e.F6)("video-intelligence");if(!a)throw Error("Video Intelligence is not installed.");let b=await (0,f.CC)("video-intelligence");if(!b)throw Error("The installed Video Intelligence tool could not be loaded.");let{config:c}=await (0,h.P)(b,a.config);return b.createClient({config:c,fetch:globalThis.fetch}).getUsage()}async function n(a){let b=await (0,e.F6)("video-intelligence");if(!b)throw Error("Video Intelligence is not installed.");let c=await (0,f.CC)("video-intelligence");if(!c)throw Error("The installed Video Intelligence tool could not be loaded.");let{config:d}=await (0,h.P)(c,b.config),g=c.createClient({config:d,fetch:globalThis.fetch});return j({assets:a,getUsage:()=>g.getUsage(),getJob:a=>g.getJob(a),cancelJob:a=>g.cancelJob(a)})}async function o(){let a=await (0,e.F6)("video-intelligence");if(!a)throw Error("Install Video Intelligence before indexing this video.");let b=await (0,f.CC)("video-intelligence");if(!b)throw Error("The installed Video Intelligence tool could not be loaded.");let{config:c}=await (0,h.P)(b,a.config);t(c)}async function p(a){let b=await (0,e.F6)("video-intelligence");if(!b)return;let c=await (0,f.CC)("video-intelligence");if(!c)return;let{config:d}=await (0,h.P)(c,b.config),g=c.createClient({config:d,fetch:globalThis.fetch}),i=await g.getJob(a);("queued"===i.status||"running"===i.status)&&await g.cancelJob(a)}async function q(a){let b=await (0,e.F6)("video-intelligence");if(!b)return;let c=await (0,f.CC)("video-intelligence");if(!c)return;let{config:d}=await (0,h.P)(c,b.config);if("local"!==v(d))return;let g=c.createClient({config:d,fetch:globalThis.fetch});"function"==typeof g.purgeJobData&&await g.purgeJobData(a)}async function r(){let a=await (0,e.F6)("video-intelligence");if(!a)throw Error("Video Intelligence is not installed.");let b=await (0,f.CC)("video-intelligence");if(!b)throw Error("The installed Video Intelligence tool could not be loaded.");let{config:c}=await (0,h.P)(b,a.config),d=b.createClient({config:c,fetch:globalThis.fetch});if("function"!=typeof d.cancelOnlyActiveJob)throw Error("Update Video Intelligence before stopping an orphaned cloud job.");await d.cancelOnlyActiveJob()}async function s(a){var b,c,i,j,l,m,n,o,p,q;let r,s,x,y,z,C,D=await (0,e.F6)("video-intelligence");if(!D)throw Error("Install Video Intelligence (New) before indexing this video.");let E=await (0,f.CC)("video-intelligence");if(!E)throw Error("The installed Video Intelligence tool could not be loaded.");let{config:F}=await (0,h.P)(E,D.config);t(F);let G={config:F,fetch:globalThis.fetch};await a.reportStage("extract",{status:"running",percent:1,message:"Connecting to the configured Video Intelligence runtime..."});let H=E.createClient(G);try{await E.ensureRuntime?.(G),await H.health()}catch(a){throw Error(`Video Intelligence connection check failed: ${a instanceof Error?a.message:"unknown error"}`)}let I=a.sourceUrl?null:await H.upload(await (0,d.openAsBlob)(a.mediaPath,{type:a.asset.mimeType}),a.asset.fileName),J=(n=F,o={...(b=a.asset,y=["fast","balanced","thorough"].includes(x=String((s=(r=b.toolInputs?.["video-intelligence"])&&"object"==typeof r?r:{}).indexingMode))?x:"balanced",{goal:"string"==typeof s.goal?s.goal.slice(0,4e3):void 0,contentType:"string"==typeof s.contentType&&s.contentType.trim()?s.contentType.trim().slice(0,120):"general",knownEntities:A(s.knownEntities,50),expectedQuestions:A(s.expectedQuestions,20),language:"string"==typeof s.language&&s.language.trim()&&"auto"!==s.language?s.language.slice(0,32):function(a){let b=b=>a.match(b)?.length??0,c=b(/\p{Script=Arabic}/gu),d=b(/\p{Script=Cyrillic}/gu),[e,f]=[[/[ٹڈڑںھ]/u.test(a)?"ur":/[گچپژ]/u.test(a)?"fa":"ar",c],[/[іїєґ]/iu.test(a)?"uk":"ru",d],["he",b(/\p{Script=Hebrew}/gu)],["ko",b(/\p{Script=Hangul}/gu)],["ja",b(/[\p{Script=Hiragana}\p{Script=Katakana}]/gu)],["th",b(/\p{Script=Thai}/gu)],["el",b(/\p{Script=Greek}/gu)],["hi",b(/\p{Script=Devanagari}/gu)]].sort((a,b)=>b[1]-a[1])[0]??[];return f>=3?e:void 0}(b.fileName)??"auto",importantRanges:Array.isArray(s.importantRanges)?s.importantRanges.slice(0,20):[],indexingMode:y,processingAuthorityConfirmed:!0===s.processingAuthorityConfirmed,retainSourceHours:Number.isFinite(z=Number(s.retainSourceHours))?Math.max(0,Math.min(720,Math.round(z))):72}),...a.briefOverride??{},skipHeavyOperators:(c=a.briefOverride,"boolean"==typeof c?.skipHeavyOperators&&c.skipHeavyOperators),...(i=a.briefOverride,j=a.asset,i?.skipTranscription===!0)?{skipTranscription:!0}:{},...(l=a.briefOverride,m=a.asset,l?.skipVideoEmbeddings===!0)?{skipVideoEmbeddings:!0}:{}},"local"===v(n)?o:{...o,requireSemanticVision:!0}),K=a.sourceDurationSecs??a.asset.durationSecs;(!Array.isArray(J.importantRanges)||0===J.importantRanges.length)&&Number.isFinite(K)&&Number(K)>0&&(J.importantRanges=[{startSecs:0,endSecs:Number(K),note:"full-index-normalization"}]),await a.assertStillActive?.();try{C=await H.submitJob({source:(p={source:{...a.sourceUrl?{url:a.sourceUrl}:{uploadId:I.uploadId},fileName:a.asset.fileName,mimeType:a.asset.mimeType,...Number.isFinite(a.asset.durationSecs)&&Number(a.asset.durationSecs)>0?{timelineDurationSecs:Number(a.asset.durationSecs)}:{},durationSecs:K},brief:J,config:F}).source,brief:p.brief,...p.config&&"local"!==v(p.config)?{modelConfiguration:u(p.config)}:{}})}catch(a){throw Error(`Video Intelligence job submission failed: ${a instanceof Error?a.message:"unknown error"}`)}try{await a.onJobSubmitted?.(C.id)}catch(a){throw await H.cancelJob(C.id).catch(()=>void 0),a}let L=a.maxWaitMs??216e5,M=Date.now()+L,N=C.status,O="",P=Date.now(),Q="",R=Date.now(),S=Math.min(L,18e4);for(;"queued"===C.status||"running"===C.status;){if(Date.now()>=M)throw await H.cancelJob(C.id).catch(()=>void 0),new k(C.status);let b=JSON.stringify({status:C.status,stage:C.progress.stage,percent:C.progress.percent,stagePercent:C.progress.stagePercent,sequence:C.progress.sequence,current:C.progress.current,total:C.progress.total,message:C.progress.message}),c=b!==Q;if(c)Q=b,R=Date.now();else if("running"===C.status&&Date.now()-R>=S)throw await H.cancelJob(C.id).catch(()=>void 0),Error("The video analysis worker stopped reporting progress for 3 minutes. The job was cancelled safely; retry to use a fresh worker.");if(C.progress.stage!==O&&(await B(O,a.reportStage),O=C.progress.stage,P=Date.now()),c){let b=function(a){let b={...Number.isFinite(a.sequence)?{sequence:a.sequence}:{},...Number.isFinite(a.elapsedSeconds)?{elapsedSeconds:a.elapsedSeconds}:{},...Number.isFinite(a.estimatedRemainingSeconds)?{estimatedRemainingSeconds:a.estimatedRemainingSeconds}:{}};if("prepare"===a.stage)return{percent:w("prepare",a.percent,a.stagePercent),...Number.isFinite(a.current)?{current:a.current}:{},...Number.isFinite(a.total)?{total:a.total}:{},...a.unit?{unit:a.unit}:{},...b};if("synthesize"===a.stage){let c,d,e,f,g=(d=(c=[...a.message.matchAll(/(\d[\d,]*)\s*\/\s*(\d[\d,]*)\s+(captions|described|indexed|search clips|clips)\b/gi)].map(a=>({current:Number(a[1].replaceAll(",","")),total:Number(a[2].replaceAll(",","")),kind:a[3].toLowerCase()})).filter(a=>Number.isFinite(a.current)&&Number.isFinite(a.total))).reduce((a,b)=>({current:(a?.current??0)+Math.min(b.current,b.total),total:(a?.total??0)+b.total}),void 0),e=c.find(a=>"captions"===a.kind||"described"===a.kind),f=c.find(a=>"search clips"===a.kind||"clips"===a.kind||"indexed"===a.kind),{captions:e&&{current:e.current,total:e.total},searchClips:f&&{current:f.current,total:f.total},combined:d});if(g.combined&&g.combined.total>0){let c=g.captions&&g.captions.current<g.captions.total?g.captions:g.searchClips;return{percent:w(a.stage,a.percent,a.stagePercent),current:c?.current??g.combined.current,total:c?.total??g.combined.total,unit:c===g.captions?"captions":"search clips",...b}}return{percent:w(a.stage,a.percent,a.stagePercent),...b}}return{percent:w(a.stage,a.percent,a.stagePercent),...Number.isFinite(a.current)?{current:a.current}:{},...Number.isFinite(a.total)?{total:a.total}:{},...a.unit?{unit:a.unit}:{},...b}}(C.progress);await a.reportStage("prepare"===(q=C.progress.stage)?"prepare":"transcribe"===q?"transcribe":"synthesize"===q?"synthesize":"complete"===q||"detect"===q||"ocr"===q?"vision":"extract",{status:"running",jobStatus:"queued"===C.status?"queued":"running",...b,..."synthesize"===C.progress.stage?{startedAt:new Date(P).toISOString()}:{},message:C.progress.message})}await new Promise(a=>setTimeout(a,2500)),"running"===(C=await H.getJob(C.id)).status&&"running"!==N&&(M=Date.now()+L),N=C.status}if("completed"!==C.status||!C.result)throw Error(C.error||`Video indexing ended with status ${C.status}.`);let T=C.result.semanticDiagnostics;if(function(a,b,c=[]){let d=c.some(a=>a.text.trim());return"local"!==v(a)&&(!b?.attempted||!d)}(F,T,C.result.semanticObservations)){let a=T?.error?`: ${T.error}`:T?"":": the Larkup Cloud worker returned an incomplete semantic-evidence result. Retry after updating the Cloud worker.";throw Error(`Video semantic analysis did not return validated evidence${a}`)}let U=C.result.agentDiagnostics;if(U?.attempted&&U.model){let a=U.promptTokens??0,b=U.completionTokens??0;(0,g.trackUsageEvent)({type:"media_processing",mediaType:"video",mediaOperation:"extraction",modelId:U.model,provider:U.provider,promptTokens:a,completionTokens:b,totalTokens:a+b,latencyMs:U.latencyMs,durationSecs:C.result.durationMs/1e3,frameCount:C.result.coverage?.analyzedFrames,observationCount:C.result.visualObservations.length+(C.result.semanticObservations?.length??0),runtime:"local"===v(F)?"local":"remote",timestamp:new Date().toISOString()})}return"function"==typeof H.acknowledgeJobResult&&await H.acknowledgeJobResult(C.id).catch(()=>void 0),await a.reportStage("vision",{status:"completed",percent:100,message:`Analyzed ${C.result.visualObservations.length} timestamped visual observations.`}),await a.reportStage("transcribe",{status:"completed",percent:100,message:`Transcribed ${C.result.transcript.length} timestamped speech sections.`}),await a.reportStage("extract",{status:"completed",percent:100,message:"Video evidence selected."}),{evidence:C.result,segments:function(a){let b=new Map,c=c=>{let d=Math.floor(c/30),e=b.get(d);if(e)return e;let f={speech:[],story:[],visual:[],startSecs:30*d,endSecs:Math.min((d+1)*30,a.durationMs/1e3)};return b.set(d,f),f};for(let b of a.transcript)c(b.startMs/1e3).speech.push(b.text);for(let b of a.visualObservations){let a=b.ocr.filter(a=>a.confidence>=.75&&a.text.trim().length>=2).map(a=>a.text.trim());a.length&&c(b.timeMs/1e3).visual.push(`On screen: ${[...new Set(a)].join(" | ")}`)}for(let b of a.semanticObservations??[]){let d=b.text.trim();if(!d)continue;let e=c(b.startMs/1e3);e.endSecs=Math.max(e.endSecs,Math.min(a.durationMs/1e3,b.endMs/1e3)),e.visual.push(d)}let d=a.knowledgeSummary;for(let a of(d?.overview&&c(0).visual.push(`Indexed overview: ${d.overview}`),d?.participants??[]))for(let b of a.evidence)c(b.startMs/1e3).visual.push(`Indexed participant: ${a.name} — ${a.role}.`);for(let a of d?.stateHistory??[])c(a.startMs/1e3).visual.push(`Indexed state (${a.confidence}): ${a.state}`);for(let a of d?.keyEvents??[])c(a.startMs/1e3).visual.push(`Indexed event (${a.confidence}): ${a.event}`);for(let a of d?.narrative??[])c(a.startMs/1e3).story.push(a.text);for(let a of d?.context??[])for(let b of a.evidence)c(b.startMs/1e3).visual.push(`Indexed context: ${a.fact}`);for(let a of d?.sourceItems??[])c(a.startMs/1e3).visual.push("question"===a.kind?`Source question (${a.channel}): ${a.text}${a.answer?`
2
2
  Source answer: ${a.answer}`:""}`:`Source item (${a.kind}, ${a.channel}): ${a.text}`);let e=[a.answeringGuide.goal?`User indexing goal: ${a.answeringGuide.goal}`:"",a.answeringGuide.importantEntities.length?`Important entities: ${a.answeringGuide.importantEntities.join(", ")}`:"",a.answeringGuide.questionsToPrepareFor.length?`Expected questions: ${a.answeringGuide.questionsToPrepareFor.join(" | ")}`:""].filter(Boolean).join("\n");return[...b.entries()].sort(([a],[b])=>a-b).map(([,a],b)=>{let c=a.speech.join(" ").trim(),d=[...new Set([...a.story,...a.visual])].join("\n"),f=0===b&&e?`${e}
3
3
  `:"";return{text:`${f}${c?`Speech: ${c}
4
- `:""}${d}`.trim(),transcript:c,visualContext:d,startSecs:a.startSecs,endSecs:a.endSecs,sequence:b}}).filter(a=>a.text.length>0)}(C.result)}}function t(a){let b=u(a);if(!/gemini.*(?:flash|vision)|qwen.*vl|gpt-4o|gpt-4\.1/i.test(b.vision.model))throw Error(`Before indexing starts, choose a video-capable vision model. "${b.vision.model}" is not supported for video analysis.`)}function u(a){let b=a=>"string"==typeof a&&a.trim()?a.trim():void 0,c=b(a.videoVisionProvider),d=b(a.larkupVisionProvider),e=c&&"auto"!==c?c:d??"vercel_ai_gateway",f=(c&&"auto"!==c?b(a.videoVisionApiKey):void 0)??(d===e?b(a.larkupVisionApiKey):void 0)??b(a.visionGatewayApiKey),g=b(a.semanticVisionModel),h=(g&&"auto"!==g?g:void 0)??(d===e?b(a.larkupVisionModel):void 0)??("google"===e?"google/gemini-3.6-flash":"openai"===e?"openai/gpt-4o-mini":"google/gemini-3.6-flash"),i=b(a.videoAgentProvider),j=b(a.larkupAgentProvider),k=i&&"auto"!==i?i:j??"vercel_ai_gateway",l=(i&&"auto"!==i?b(a.videoAgentApiKey):void 0)??(j===k?b(a.larkupAgentApiKey):void 0)??(k===e?f:void 0),m=b(a.agentModel),n=(m&&"auto"!==m?m:void 0)??(j===k?b(a.larkupAgentModel):void 0)??("google"===k?"google/gemini-3.5-flash-lite":"openai/gpt-5-mini"),o=b(a.audioProvider)??"deepgram",p=b(a.audioApiKey),q={openai:"whisper-1",groq:"whisper-large-v3-turbo",deepgram:"nova-3",elevenlabs:"scribe_v2"}[o],r=new Set(["vercel_ai_gateway","google","openai"]),s=new Set(["vercel_ai_gateway","google","openai","deepseek","mistral","cohere","anthropic"]);if(!r.has(e))throw Error(`Video vision cannot use "${e}". Choose Google, OpenAI, or Vercel AI Gateway under Settings → AI Models → Vision Model.`);if(!s.has(k))throw Error(`Agent / tool-brain provider "${k}" is not supported.`);if(!new Set(["openai","groq","deepgram","elevenlabs"]).has(o))throw Error(`Audio provider "${o}" is not supported.`);if(!f)throw Error("Before indexing starts, configure a vision provider and API key in Video Intelligence or under Settings → AI Models → Vision Model. Text-only providers such as DeepSeek need a separate vision provider. The video was not uploaded or downloaded.");if(!l)throw Error("Before indexing starts, add the selected agent provider API key in Video Intelligence or under Settings → AI Models. The video was not uploaded or downloaded.");if(!p)throw Error("Before indexing starts, add the selected audio provider API key in Video Intelligence settings. The video was not uploaded or downloaded.");if(!q)throw Error(`Audio provider "${o}" has no automatic transcription model.`);return{audio:{provider:o,apiKey:p,model:q},brain:{provider:k,apiKey:l,model:n},vision:{provider:e,apiKey:f,model:h}}}function v(a){let b="string"==typeof a.runtimeMode?a.runtimeMode:"";return"local"===b||"local-docker"===b||"local-process"===b?"local":"custom-remote"===b?"custom-remote":"managed-cloud"}function w(a,b,c){return"number"==typeof c&&Number.isFinite(c)?Math.max(0,Math.min(99,Math.round(c))):"prepare"===a?Math.min(99,Math.round(b/25*100)):Math.max(0,Math.min(99,Math.round(b)))}function x(a){let b=[...a.visualObservations.flatMap(a=>{if(!a.objects.length)return[];let b=a.timeMs/1e3,c=a.objects.map(a=>({label:a.label,trackId:a.trackId,confidence:a.confidence}));return[{startSecs:b,endSecs:b,observations:[{kind:"object",value:`Detected objects: ${c.map(a=>`${a.label} (track ${a.trackId})`).join(", ")}`,frameTimestamps:[b],confidence:c.reduce((a,b)=>a+b.confidence,0)/Math.max(1,c.length),uncertaintyReasons:["Object labels are produced by the video detector."]}]}]}),...(a.recurringOverlayText??[]).map(a=>({startSecs:a.firstSeenMs/1e3,endSecs:a.lastSeenMs/1e3,observations:[{kind:"state",value:{subject:"on-screen-text",property:"recurring-overlay",value:a.text,observations:a.observations,firstSeenMs:a.firstSeenMs,lastSeenMs:a.lastSeenMs},frameTimestamps:(a.timestampsMs??[a.firstSeenMs]).map(a=>a/1e3),confidence:a.confidence,uncertaintyReasons:["Recurring on-screen text read by OCR. Use it to locate a source range for visual verification; it does not establish what the text refers to."]}]})),...(a.semanticObservations??[]).filter(a=>a.text.trim()).map(a=>({startSecs:a.startMs/1e3,endSecs:a.endMs/1e3,observations:[{kind:"action",value:a.text,frameTimestamps:[a.startMs/1e3,a.endMs/1e3],confidence:Math.min(1,Math.max(0,a.confidence)),uncertaintyReasons:["Semantic VLM interpretation is grounded in a bounded sequence of cloud-analyzed frames."]}]}))],c=a.visualObservations.flatMap(a=>{let b=a.timeMs/1e3;return a.ocr.filter(a=>a.text.trim()&&a.confidence>=.35).map(a=>({modality:"ocr",timeRange:{startSecs:b,endSecs:b,precision:"estimated"},payload:{text:a.text,blocks:[{text:a.text,confidence:a.confidence}]},source:{kind:"provider",provider:"video-intelligence-ocr"},confidence:{score:Math.min(1,Math.max(0,a.confidence)),source:"provider",calibrationStatus:"uncalibrated",uncertaintyReasons:["OCR derived from a timestamped cloud analysis frame."]},observation:{kind:"ocr",value:{text:a.text}}}))});return{transcriptChunks:a.transcript.map(a=>({text:a.text,startSecs:a.startMs/1e3,endSecs:a.endMs/1e3})),visualObservations:b,ocrEvidence:c,reconciledEvidence:z(a)}}function y(a){let b=x(a),c=b.transcriptChunks.map(a=>({modality:"transcript",timeRange:{startSecs:a.startSecs,endSecs:a.endSecs,precision:"segment"},payload:{text:a.text},source:{kind:"provider",provider:"video-intelligence-stt"},confidence:{score:.8,source:"provider",calibrationStatus:"uncalibrated",uncertaintyReasons:["Timestamped transcript returned by bounded cloud analysis."]},observation:{kind:"speech",value:{text:a.text}}})),d=b.visualObservations.flatMap(a=>(a.observations??[]).map(b=>({modality:"visual",timeRange:{startSecs:a.startSecs,endSecs:a.endSecs,precision:"estimated"},payload:{text:b.value},source:{kind:"provider",provider:"video-intelligence-vision"},confidence:{score:b.confidence,source:"provider",calibrationStatus:"uncalibrated",uncertaintyReasons:b.uncertaintyReasons},observation:{kind:b.kind,value:b.value}}))),e=a.tracks.filter(a=>"person"===a.label.toLowerCase()),f=e.length?[{modality:"computed",timeRange:{startSecs:Math.min(...e.map(a=>a.startMs/1e3)),endSecs:Math.max(...e.map(a=>a.endMs/1e3)),precision:"estimated"},payload:{method:"video-intelligence-anonymous-person-tracking",tracks:e.map(a=>({id:a.trackId,startSecs:a.startMs/1e3,endSecs:a.endMs/1e3,observations:a.observations,confidence:a.confidence??null}))},source:{kind:"provider",provider:"video-intelligence-tracking"},confidence:{score:e.reduce((a,b)=>a+(b.confidence??.65),0)/e.length,source:"provider",calibrationStatus:"uncalibrated",uncertaintyReasons:["This is an anonymous track count within the inspected range, not person identity.","Occlusion and re-entry can cause an undercount or duplicate track."]},observation:{kind:"computed",value:{count:e.length,label:"person",method:"anonymous-bounded-tracking"}}}]:[];return[...c,...d,...b.ocrEvidence,...f,...z(a)]}function z(a){let b=a.knowledgeSummary;if(!b)return[];let c=a.durationMs/1e3,d=(a,d,e,f)=>({modality:"computed",timeRange:{startSecs:Math.max(0,Math.min(c,a)),endSecs:Math.max(0,Math.min(c,Math.max(a,d))),precision:"estimated"},payload:{text:e},source:{kind:"provider",provider:"video-intelligence-index"},confidence:{score:f,source:"heuristic",calibrationStatus:"uncalibrated",uncertaintyReasons:["The index reconciled this across the whole timeline; it is not a single reading.",...(b.uncertainties??[]).slice(0,4)]},observation:{kind:"computed",value:{text:e}}}),e=a=>"direct"===a?.82:.6;return[...b.overview?[d(0,c,`Reconciled overview: ${b.overview}`,.75)]:[],...(b.stateHistory??[]).map(a=>d(a.startMs/1e3,a.endMs/1e3,`Reconciled state: ${a.state}`,e(a.confidence))),...(b.keyEvents??[]).map(a=>d(a.startMs/1e3,a.endMs/1e3,`Reconciled event: ${a.event}`,e(a.confidence))),...(b.narrative??[]).map(a=>d(a.startMs/1e3,a.endMs/1e3,`Chronological note: ${a.text}`,e(a.confidence))),...(b.participants??[]).flatMap(a=>a.evidence.slice(0,1).map(b=>d(b.startMs/1e3,b.endMs/1e3,`Reconciled participant: ${a.name} — ${a.role}`,.7))),...(b.context??[]).flatMap(a=>a.evidence.slice(0,1).map(b=>d(b.startMs/1e3,b.endMs/1e3,`Reconciled context: ${a.fact}`,.7))),...(b.sourceItems??[]).map(a=>d(a.startMs/1e3,a.endMs/1e3,"question"===a.kind?`Source question (${a.channel}): ${a.text}${a.answer?`
4
+ `:""}${d}`.trim(),transcript:c,visualContext:d,startSecs:a.startSecs,endSecs:a.endSecs,sequence:b}}).filter(a=>a.text.length>0)}(C.result)}}function t(a){let b=u(a);if(!/gemini.*(?:flash|vision)|qwen.*vl|gpt-4o|gpt-4\.1/i.test(b.vision.model))throw Error(`Before indexing starts, choose a video-capable vision model. "${b.vision.model}" is not supported for video analysis.`)}function u(a){let b=a=>"string"==typeof a&&a.trim()?a.trim():void 0,c=new Set(["vercel_ai_gateway","google","openai"]),d=new Set(["vercel_ai_gateway","google","openai","deepseek","mistral","cohere","anthropic"]),e=b(a.videoAgentProvider),f=b(a.larkupAgentProvider),g=e&&"auto"!==e?e:f??"vercel_ai_gateway",h=(e&&"auto"!==e?b(a.videoAgentApiKey):void 0)??(f===g?b(a.larkupAgentApiKey):void 0),i=b(a.videoVisionProvider),j=b(a.larkupVisionProvider),k=i&&"auto"!==i?i:j??(c.has(g)?g:"vercel_ai_gateway"),l=(i&&"auto"!==i?b(a.videoVisionApiKey):void 0)??(j===k?b(a.larkupVisionApiKey):void 0)??b(a.visionGatewayApiKey)??(k===g?h:void 0),m=b(a.semanticVisionModel),n=(m&&"auto"!==m?m:void 0)??(j===k?b(a.larkupVisionModel):void 0)??("google"===k?"google/gemini-3.6-flash":"openai"===k?"openai/gpt-4o-mini":"google/gemini-3.6-flash"),o=h??(g===k?l:void 0),p=b(a.agentModel),q=(p&&"auto"!==p?p:void 0)??(f===g?b(a.larkupAgentModel):void 0)??("google"===g?"google/gemini-3.5-flash-lite":"openai/gpt-5-mini"),r=b(a.audioProvider)??"deepgram",s=b(a.audioApiKey)??(r===g?h:void 0),t={openai:"whisper-1",groq:"whisper-large-v3-turbo",deepgram:"nova-3",elevenlabs:"scribe_v2"}[r];if(!c.has(k))throw Error(`Video vision cannot use "${k}". Choose Google, OpenAI, or Vercel AI Gateway under Settings → AI Models → Vision Model.`);if(!d.has(g))throw Error(`Agent / tool-brain provider "${g}" is not supported.`);if(!new Set(["openai","groq","deepgram","elevenlabs"]).has(r))throw Error(`Audio provider "${r}" is not supported.`);if(!l)throw Error("Before indexing starts, configure a vision provider and API key in Video Intelligence or under Settings → AI Models → Vision Model. Text-only providers such as DeepSeek need a separate vision provider. The video was not uploaded or downloaded.");if(!o)throw Error("Before indexing starts, add the selected agent provider API key in Video Intelligence or under Settings → AI Models. The video was not uploaded or downloaded.");if(!s)throw Error("Before indexing starts, add the selected audio provider API key in Video Intelligence settings. The video was not uploaded or downloaded.");if(!t)throw Error(`Audio provider "${r}" has no automatic transcription model.`);return{audio:{provider:r,apiKey:s,model:t},brain:{provider:g,apiKey:o,model:q},vision:{provider:k,apiKey:l,model:n}}}function v(a){let b="string"==typeof a.runtimeMode?a.runtimeMode:"";return"local"===b||"local-docker"===b||"local-process"===b?"local":"custom-remote"===b?"custom-remote":"managed-cloud"}function w(a,b,c){return"number"==typeof c&&Number.isFinite(c)?Math.max(0,Math.min(99,Math.round(c))):"prepare"===a?Math.min(99,Math.round(b/25*100)):Math.max(0,Math.min(99,Math.round(b)))}function x(a){let b=[...a.visualObservations.flatMap(a=>{if(!a.objects.length)return[];let b=a.timeMs/1e3,c=a.objects.map(a=>({label:a.label,trackId:a.trackId,confidence:a.confidence}));return[{startSecs:b,endSecs:b,observations:[{kind:"object",value:`Detected objects: ${c.map(a=>`${a.label} (track ${a.trackId})`).join(", ")}`,frameTimestamps:[b],confidence:c.reduce((a,b)=>a+b.confidence,0)/Math.max(1,c.length),uncertaintyReasons:["Object labels are produced by the video detector."]}]}]}),...(a.recurringOverlayText??[]).map(a=>({startSecs:a.firstSeenMs/1e3,endSecs:a.lastSeenMs/1e3,observations:[{kind:"state",value:{subject:"on-screen-text",property:"recurring-overlay",value:a.text,observations:a.observations,firstSeenMs:a.firstSeenMs,lastSeenMs:a.lastSeenMs},frameTimestamps:(a.timestampsMs??[a.firstSeenMs]).map(a=>a/1e3),confidence:a.confidence,uncertaintyReasons:["Recurring on-screen text read by OCR. Use it to locate a source range for visual verification; it does not establish what the text refers to."]}]})),...(a.semanticObservations??[]).filter(a=>a.text.trim()).map(a=>({startSecs:a.startMs/1e3,endSecs:a.endMs/1e3,observations:[{kind:"action",value:a.text,frameTimestamps:[a.startMs/1e3,a.endMs/1e3],confidence:Math.min(1,Math.max(0,a.confidence)),uncertaintyReasons:["Semantic VLM interpretation is grounded in a bounded sequence of cloud-analyzed frames."]}]}))],c=a.visualObservations.flatMap(a=>{let b=a.timeMs/1e3;return a.ocr.filter(a=>a.text.trim()&&a.confidence>=.35).map(a=>({modality:"ocr",timeRange:{startSecs:b,endSecs:b,precision:"estimated"},payload:{text:a.text,blocks:[{text:a.text,confidence:a.confidence}]},source:{kind:"provider",provider:"video-intelligence-ocr"},confidence:{score:Math.min(1,Math.max(0,a.confidence)),source:"provider",calibrationStatus:"uncalibrated",uncertaintyReasons:["OCR derived from a timestamped cloud analysis frame."]},observation:{kind:"ocr",value:{text:a.text}}}))});return{transcriptChunks:a.transcript.map(a=>({text:a.text,startSecs:a.startMs/1e3,endSecs:a.endMs/1e3})),visualObservations:b,ocrEvidence:c,reconciledEvidence:z(a)}}function y(a){let b=x(a),c=b.transcriptChunks.map(a=>({modality:"transcript",timeRange:{startSecs:a.startSecs,endSecs:a.endSecs,precision:"segment"},payload:{text:a.text},source:{kind:"provider",provider:"video-intelligence-stt"},confidence:{score:.8,source:"provider",calibrationStatus:"uncalibrated",uncertaintyReasons:["Timestamped transcript returned by bounded cloud analysis."]},observation:{kind:"speech",value:{text:a.text}}})),d=b.visualObservations.flatMap(a=>(a.observations??[]).map(b=>({modality:"visual",timeRange:{startSecs:a.startSecs,endSecs:a.endSecs,precision:"estimated"},payload:{text:b.value},source:{kind:"provider",provider:"video-intelligence-vision"},confidence:{score:b.confidence,source:"provider",calibrationStatus:"uncalibrated",uncertaintyReasons:b.uncertaintyReasons},observation:{kind:b.kind,value:b.value}}))),e=a.tracks.filter(a=>"person"===a.label.toLowerCase()),f=e.length?[{modality:"computed",timeRange:{startSecs:Math.min(...e.map(a=>a.startMs/1e3)),endSecs:Math.max(...e.map(a=>a.endMs/1e3)),precision:"estimated"},payload:{method:"video-intelligence-anonymous-person-tracking",tracks:e.map(a=>({id:a.trackId,startSecs:a.startMs/1e3,endSecs:a.endMs/1e3,observations:a.observations,confidence:a.confidence??null}))},source:{kind:"provider",provider:"video-intelligence-tracking"},confidence:{score:e.reduce((a,b)=>a+(b.confidence??.65),0)/e.length,source:"provider",calibrationStatus:"uncalibrated",uncertaintyReasons:["This is an anonymous track count within the inspected range, not person identity.","Occlusion and re-entry can cause an undercount or duplicate track."]},observation:{kind:"computed",value:{count:e.length,label:"person",method:"anonymous-bounded-tracking"}}}]:[];return[...c,...d,...b.ocrEvidence,...f,...z(a)]}function z(a){let b=a.knowledgeSummary;if(!b)return[];let c=a.durationMs/1e3,d=(a,d,e,f)=>({modality:"computed",timeRange:{startSecs:Math.max(0,Math.min(c,a)),endSecs:Math.max(0,Math.min(c,Math.max(a,d))),precision:"estimated"},payload:{text:e},source:{kind:"provider",provider:"video-intelligence-index"},confidence:{score:f,source:"heuristic",calibrationStatus:"uncalibrated",uncertaintyReasons:["The index reconciled this across the whole timeline; it is not a single reading.",...(b.uncertainties??[]).slice(0,4)]},observation:{kind:"computed",value:{text:e}}}),e=a=>"direct"===a?.82:.6;return[...b.overview?[d(0,c,`Reconciled overview: ${b.overview}`,.75)]:[],...(b.stateHistory??[]).map(a=>d(a.startMs/1e3,a.endMs/1e3,`Reconciled state: ${a.state}`,e(a.confidence))),...(b.keyEvents??[]).map(a=>d(a.startMs/1e3,a.endMs/1e3,`Reconciled event: ${a.event}`,e(a.confidence))),...(b.narrative??[]).map(a=>d(a.startMs/1e3,a.endMs/1e3,`Chronological note: ${a.text}`,e(a.confidence))),...(b.participants??[]).flatMap(a=>a.evidence.slice(0,1).map(b=>d(b.startMs/1e3,b.endMs/1e3,`Reconciled participant: ${a.name} — ${a.role}`,.7))),...(b.context??[]).flatMap(a=>a.evidence.slice(0,1).map(b=>d(b.startMs/1e3,b.endMs/1e3,`Reconciled context: ${a.fact}`,.7))),...(b.sourceItems??[]).map(a=>d(a.startMs/1e3,a.endMs/1e3,"question"===a.kind?`Source question (${a.channel}): ${a.text}${a.answer?`
5
5
  Source answer: ${a.answer}`:""}`:`Source item (${a.kind}, ${a.channel}): ${a.text}`,.82))]}function A(a,b){return Array.isArray(a)?[...new Set(a.filter(a=>"string"==typeof a).map(a=>a.trim()).filter(Boolean))].slice(0,b):[]}async function B(a,b){"prepare"===a&&await b("prepare",{status:"completed",percent:100,message:"Cloud video ready."}),"transcribe"===a&&await b("transcribe",{status:"completed",percent:100,message:"Speech timeline ready."}),"decode"===a&&await b("extract",{status:"completed",percent:100,message:"Video evidence selected."})}function C(a){let b=a.knowledgeSummary;if(!b?.overview)return null;let c=a=>{let b=Math.max(0,Math.floor(a/1e3)),c=Math.floor(b/3600),d=Math.floor(b%3600/60),e=b%60;return c>0?`${c}:${d.toString().padStart(2,"0")}:${e.toString().padStart(2,"0")}`:`${d}:${e.toString().padStart(2,"0")}`},d=[`Overview: ${b.overview}`];b.participants?.length&&d.push("Participants:",...b.participants.map(a=>{let b=a.evidence[0];return`- ${b?`[${c(b.startMs)}] `:""}${a.name}: ${a.role}`}));let e=[...(b.stateHistory??[]).map(a=>({startMs:a.startMs,endMs:a.endMs,text:a.state,kind:"State"})),...(b.keyEvents??[]).map(a=>({startMs:a.startMs,endMs:a.endMs,text:a.event,kind:"Event"}))].sort((a,b)=>a.startMs-b.startMs||a.endMs-b.endMs);return e.length&&d.push("Clean timeline:",...e.map(a=>`- [${c(a.startMs)}–${c(a.endMs)}] ${a.kind}: ${a.text}`)),b.narrative?.length&&d.push("Story notes:",...b.narrative.map(a=>`- [${c(a.startMs)}–${c(a.endMs)}] ${a.text}`)),b.context?.length&&d.push("Context:",...b.context.map(a=>{let b=a.evidence[0];return`- ${b?`[${c(b.startMs)}] `:""}${a.fact}`})),b.sourceItems?.length&&d.push("Source inventory:",...b.sourceItems.map(a=>`- [${c(a.startMs)}–${c(a.endMs)}] ${a.kind}: ${a.text}${a.answer?` — ${a.answer}`:""}`)),b.uncertainties?.length&&d.push("Uncertainties:",...b.uncertainties.map(a=>`- ${a}`)),d.join("\n")}},54833:(a,b,c)=>{c.d(b,{P:()=>g});var d=c(77598),e=c(59714),f=c(64086);async function g(a,b){let c=await (0,e.X)(),g=(0,f.U)({...b,...c.toolConfigs?.["video-intelligence"]??{}},c),i=!0===g.forceProvisionManagedCloud,{forceProvisionManagedCloud:j,...k}=g;if(k.runtimeMode&&"managed-cloud"!==k.runtimeMode)return{config:k,provisioned:!1};if(!i&&"string"==typeof k.cloudAccessKey&&k.cloudAccessKey.trim()){let b=a.createClient({config:k,fetch:globalThis.fetch});if("function"!=typeof b.getUsage)return{config:k,provisioned:!1};try{return await b.getUsage(),{config:k,provisioned:!1}}catch(b){let a=b instanceof Error?b.message:String(b);if(!/invalid api key|unauthorized|unauthorised/i.test(a))throw b}}let l="string"==typeof k.cloudInstallationId&&k.cloudInstallationId.length>=32?k.cloudInstallationId:(0,d.randomUUID)(),m=a.createClient({config:{...k,cloudInstallationId:l},fetch:globalThis.fetch});if("function"!=typeof m.provisionDeviceAccess){let a=process.env.LARKUP_VIDEO_INTELLIGENCE_CLOUD_ENDPOINT??"https://7w1bab08jf.execute-api.eu-central-1.amazonaws.com",b=await globalThis.fetch(`${a}/v1/device-keys`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({installationId:l})}),d=await b.json().catch(()=>({}));if(!b.ok||!d.apiKey||!d.entitlement)throw Error(d.error||"Could not create the managed Video Intelligence connection.");return h(c,k,l,{apiKey:d.apiKey,entitlement:d.entitlement})}let n=await m.provisionDeviceAccess(l);return h(c,k,l,n)}async function h(a,b,c,d){let{forceProvisionManagedCloud:f,...g}=a.toolConfigs?.["video-intelligence"]??{},h={...a.toolConfigs??{},"video-intelligence":{...g,cloudInstallationId:c,cloudAccessKey:d.apiKey}};return await (0,e.A)({...a,toolConfigs:h}),{config:{...b,...h["video-intelligence"]},provisioned:!0,entitlement:d.entitlement}}},59456:(a,b,c)=>{c.d(b,{$6:()=>l,unloadTool:()=>p});var d=c(73024),e=c(76760),f=c.n(e),g=c(73136),h=c(65635);let i=new Map,j=new Map;async function k(a){let b=`larkup-marketplace-tools${"fixed"===a?"":`-${a}`}`,c=j.get(b);if(c)return c;let{register:d}=await import("tsx/esm/api"),e=d({namespace:b}).import;return j.size>=8&&j.delete(j.keys().next().value),j.set(b,e),e}async function l(a){let b=await (0,h.F6)(a);if(!b)return null;let c=await n(b),d=await m(b,c),e=`${b.source}:${b.resolvedPath}:${b.version}:${b.installedAt}:${d}`,f=i.get(a);if(f?.installationKey===e)return f.module;try{let b=function(a,b){if(!a.startsWith("file:"))return a;let c=new URL(a);return c.searchParams.set("larkup-installation",b),c.href}(c,e),f=await k(d),g=await f(b,"file:///Users/abdelrahmanabounida/Desktop/my-ai-startup/larkup/larkup/packages/marketplace/src/tool-loader.ts");return i.set(a,{installationKey:e,module:g}),g}catch(b){return console.error(`[marketplace] Failed to load tool "${a}":`,b),null}}async function m(a,b){if("local"!==a.source||!b.startsWith("file:"))return"fixed";try{let a=f().dirname(new URL(b).pathname),c=await d.promises.readdir(a,{withFileTypes:!0}),e=0,g=0;for(let b of c){if(!b.isFile())continue;let{mtimeMs:c,size:h}=await d.promises.stat(f().join(a,b.name));e=Math.max(e,c),g+=h}return e>0?`${e}-${g}`:"fixed"}catch{return"fixed"}}async function n(a){switch(a.source){case"local":try{return await d.promises.access(f().join(a.resolvedPath,"package.json")),o(a.resolvedPath)}catch{let b=await (0,h.lS)(a.packageName);if(b)return o(b);return a.packageName}case"registry":case"sandbox":return o(a.resolvedPath);default:return a.packageName}}async function o(a){let b=f().join(a,"package.json"),c=JSON.parse(await d.promises.readFile(b,"utf8")),e="object"==typeof c.exports?c.exports["."]:c.exports,h=("object"==typeof e?e.import??e.default:e)??c.main??"index.js";return(0,g.pathToFileURL)(f().resolve(a,h)).href}function p(a){i.delete(a)}},64086:(a,b,c)=>{c.d(b,{U:()=>d});function d(a,b){let c=new Set(["vercel_ai_gateway","openai","google"]),d=("vercel_ai_gateway"===b.visionProvider?b.visionApiKey:void 0)||("vercel_ai_gateway"===b.chatProvider?b.chatApiKey:void 0)||("vercel_ai_gateway"===b.embeddingProvider?b.embeddingApiKey:void 0),e=b.visionProvider&&b.visionApiKey&&c.has(b.visionProvider)?b.visionProvider:void 0,f=b.chatProvider&&b.chatApiKey&&c.has(b.chatProvider)?b.chatProvider:void 0,g=e||f||(d?"vercel_ai_gateway":void 0),h=(e?b.visionApiKey:void 0)||(g===b.chatProvider?b.chatApiKey:void 0)||(g===b.embeddingProvider?b.embeddingApiKey:void 0)||("vercel_ai_gateway"===g?d:void 0),i=(e?b.visionModelId:void 0)||(f&&f===g?b.chatModelId:void 0)||("vercel_ai_gateway"===g&&"vercel_ai_gateway"===b.chatProvider?b.chatModelId:void 0),j=b.chatProvider,k=b.chatApiKey||("vercel_ai_gateway"===j?d:void 0);return{...a,larkupVisionProvider:g,larkupVisionApiKey:h,larkupVisionModel:i,larkupAgentProvider:j,larkupAgentApiKey:k,larkupAgentModel:b.chatModelId||("google"===j?"google/gemini-3.5-flash-lite":"openai"===j?"openai/gpt-5-mini":void 0)}}},73210:(a,b,c)=>{c.d(b,{CC:()=>e});var d=c(59456);async function e(a){let b=await (0,d.$6)(a);if(!b)return null;let c=b.TOOL_EXTENSION??b.default;if(!c||c.id!==a||"1"!==c.apiVersion||"function"!=typeof c.createClient)throw Error(`Installed tool "${a}" does not expose a valid ToolExtension v1.`);return c}}};