@larkup/workspace-server 0.0.0-stage → 0.2.1

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 (180) hide show
  1. package/LICENSE +176 -0
  2. package/README.md +2 -2
  3. package/dist-types/app/api/chat/feedback/route.d.ts +4 -0
  4. package/dist-types/app/api/chat/feedback/route.d.ts.map +1 -0
  5. package/dist-types/app/api/chat/route.d.ts +3 -0
  6. package/dist-types/app/api/chat/route.d.ts.map +1 -0
  7. package/dist-types/app/api/chat/tools.d.ts +67 -0
  8. package/dist-types/app/api/chat/tools.d.ts.map +1 -0
  9. package/dist-types/app/api/config/test-embedding/route.d.ts +3 -0
  10. package/dist-types/app/api/config/test-embedding/route.d.ts.map +1 -0
  11. package/dist-types/app/api/config/verify/route.d.ts +3 -0
  12. package/dist-types/app/api/config/verify/route.d.ts.map +1 -0
  13. package/dist-types/app/api/describe-image/route.d.ts +4 -0
  14. package/dist-types/app/api/describe-image/route.d.ts.map +1 -0
  15. package/dist-types/app/api/doc-editor/edit/route.d.ts +10 -0
  16. package/dist-types/app/api/doc-editor/edit/route.d.ts.map +1 -0
  17. package/dist-types/app/api/doc-editor/export/route.d.ts +9 -0
  18. package/dist-types/app/api/doc-editor/export/route.d.ts.map +1 -0
  19. package/dist-types/app/api/doc-editor/parse/route.d.ts +10 -0
  20. package/dist-types/app/api/doc-editor/parse/route.d.ts.map +1 -0
  21. package/dist-types/app/api/doc-editor/restore/route.d.ts +2 -0
  22. package/dist-types/app/api/doc-editor/restore/route.d.ts.map +1 -0
  23. package/dist-types/app/api/document/sign/route.d.ts +2 -0
  24. package/dist-types/app/api/document/sign/route.d.ts.map +1 -0
  25. package/dist-types/app/api/files/remote/route.d.ts +5 -0
  26. package/dist-types/app/api/files/remote/route.d.ts.map +1 -0
  27. package/dist-types/app/api/mcp/[connectionId]/route.d.ts +9 -0
  28. package/dist-types/app/api/mcp/[connectionId]/route.d.ts.map +1 -0
  29. package/dist-types/app/api/mcp/[connectionId]/test/route.d.ts +8 -0
  30. package/dist-types/app/api/mcp/[connectionId]/test/route.d.ts.map +1 -0
  31. package/dist-types/app/api/mcp/route.d.ts +4 -0
  32. package/dist-types/app/api/mcp/route.d.ts.map +1 -0
  33. package/dist-types/app/api/parse-file/route.d.ts +6 -0
  34. package/dist-types/app/api/parse-file/route.d.ts.map +1 -0
  35. package/dist-types/app/api/pdf-page/route.d.ts +4 -0
  36. package/dist-types/app/api/pdf-page/route.d.ts.map +1 -0
  37. package/dist-types/app/api/proxy/verify/route.d.ts +4 -0
  38. package/dist-types/app/api/proxy/verify/route.d.ts.map +1 -0
  39. package/dist-types/app/api/search/bing/route.d.ts +5 -0
  40. package/dist-types/app/api/search/bing/route.d.ts.map +1 -0
  41. package/dist-types/app/api/search/brave/route.d.ts +5 -0
  42. package/dist-types/app/api/search/brave/route.d.ts.map +1 -0
  43. package/dist-types/app/api/search/exa/route.d.ts +5 -0
  44. package/dist-types/app/api/search/exa/route.d.ts.map +1 -0
  45. package/dist-types/app/api/search/google/route.d.ts +30 -0
  46. package/dist-types/app/api/search/google/route.d.ts.map +1 -0
  47. package/dist-types/app/api/search/route.d.ts +7 -0
  48. package/dist-types/app/api/search/route.d.ts.map +1 -0
  49. package/dist-types/app/api/search/tavily/route.d.ts +5 -0
  50. package/dist-types/app/api/search/tavily/route.d.ts.map +1 -0
  51. package/dist-types/app/api/search/verify/route.d.ts +4 -0
  52. package/dist-types/app/api/search/verify/route.d.ts.map +1 -0
  53. package/dist-types/app/api/tabular/route.d.ts +9 -0
  54. package/dist-types/app/api/tabular/route.d.ts.map +1 -0
  55. package/dist-types/lib/chat/assistant-source-scope.d.ts +10 -0
  56. package/dist-types/lib/chat/assistant-source-scope.d.ts.map +1 -0
  57. package/dist-types/lib/chat/conversation-memory.d.ts +80 -0
  58. package/dist-types/lib/chat/conversation-memory.d.ts.map +1 -0
  59. package/dist-types/lib/chat/gateway-fallbacks.d.ts +7 -0
  60. package/dist-types/lib/chat/gateway-fallbacks.d.ts.map +1 -0
  61. package/dist-types/lib/chat/image-description.d.ts +10 -0
  62. package/dist-types/lib/chat/image-description.d.ts.map +1 -0
  63. package/dist-types/lib/chat/media-retrieval-routing.d.ts +14 -0
  64. package/dist-types/lib/chat/media-retrieval-routing.d.ts.map +1 -0
  65. package/dist-types/lib/chat/media-source-routing.d.ts +53 -0
  66. package/dist-types/lib/chat/media-source-routing.d.ts.map +1 -0
  67. package/dist-types/lib/chat/message-input.d.ts +8 -0
  68. package/dist-types/lib/chat/message-input.d.ts.map +1 -0
  69. package/dist-types/lib/chat/model-provider.d.ts +23 -0
  70. package/dist-types/lib/chat/model-provider.d.ts.map +1 -0
  71. package/dist-types/lib/chat/response-style.d.ts +2 -0
  72. package/dist-types/lib/chat/response-style.d.ts.map +1 -0
  73. package/dist-types/lib/chat/retrieval-ranking.d.ts +32 -0
  74. package/dist-types/lib/chat/retrieval-ranking.d.ts.map +1 -0
  75. package/dist-types/lib/chat/retrieval-routing.d.ts +39 -0
  76. package/dist-types/lib/chat/retrieval-routing.d.ts.map +1 -0
  77. package/dist-types/lib/chat/tabular-dataset-routing.d.ts +15 -0
  78. package/dist-types/lib/chat/tabular-dataset-routing.d.ts.map +1 -0
  79. package/dist-types/lib/chat/tabular-query-plan.d.ts +12 -0
  80. package/dist-types/lib/chat/tabular-query-plan.d.ts.map +1 -0
  81. package/dist-types/lib/chat/tabular-routing.d.ts +41 -0
  82. package/dist-types/lib/chat/tabular-routing.d.ts.map +1 -0
  83. package/dist-types/lib/chat/tabular-sandbox-files.d.ts +33 -0
  84. package/dist-types/lib/chat/tabular-sandbox-files.d.ts.map +1 -0
  85. package/dist-types/lib/chat/tabular-visualization.d.ts +31 -0
  86. package/dist-types/lib/chat/tabular-visualization.d.ts.map +1 -0
  87. package/dist-types/lib/chat/tool-call-repair.d.ts +11 -0
  88. package/dist-types/lib/chat/tool-call-repair.d.ts.map +1 -0
  89. package/dist-types/lib/chat/tool-context.d.ts +72 -0
  90. package/dist-types/lib/chat/tool-context.d.ts.map +1 -0
  91. package/dist-types/lib/chat/tool-registry.d.ts +3 -0
  92. package/dist-types/lib/chat/tool-registry.d.ts.map +1 -0
  93. package/dist-types/lib/chat/video-rag-routing.d.ts +33 -0
  94. package/dist-types/lib/chat/video-rag-routing.d.ts.map +1 -0
  95. package/dist-types/lib/chat/visual-routing.d.ts +53 -0
  96. package/dist-types/lib/chat/visual-routing.d.ts.map +1 -0
  97. package/dist-types/lib/enterprise-client.d.ts +31 -0
  98. package/dist-types/lib/enterprise-client.d.ts.map +1 -0
  99. package/dist-types/lib/marketplace/tool-runtime-config.d.ts +7 -0
  100. package/dist-types/lib/marketplace/tool-runtime-config.d.ts.map +1 -0
  101. package/dist-types/lib/media/knowledge.d.ts +47 -0
  102. package/dist-types/lib/media/knowledge.d.ts.map +1 -0
  103. package/dist-types/lib/media/pdf-inspection.d.ts +30 -0
  104. package/dist-types/lib/media/pdf-inspection.d.ts.map +1 -0
  105. package/dist-types/lib/media/source-identity.d.ts +12 -0
  106. package/dist-types/lib/media/source-identity.d.ts.map +1 -0
  107. package/dist-types/lib/media/source-utils.d.ts +157 -0
  108. package/dist-types/lib/media/source-utils.d.ts.map +1 -0
  109. package/dist-types/lib/media/video/quick-look.d.ts +60 -0
  110. package/dist-types/lib/media/video/quick-look.d.ts.map +1 -0
  111. package/dist-types/lib/media/video-intelligence-adapter.d.ts +521 -0
  112. package/dist-types/lib/media/video-intelligence-adapter.d.ts.map +1 -0
  113. package/dist-types/lib/media/video-intelligence-connection.d.ts +32 -0
  114. package/dist-types/lib/media/video-intelligence-connection.d.ts.map +1 -0
  115. package/dist-types/lib/remote-files.d.ts +12 -0
  116. package/dist-types/lib/remote-files.d.ts.map +1 -0
  117. package/dist-types/lib/search/provider-verification.d.ts +5 -0
  118. package/dist-types/lib/search/provider-verification.d.ts.map +1 -0
  119. package/dist-types/runtime-host.d.ts +20 -0
  120. package/dist-types/runtime-host.d.ts.map +1 -0
  121. package/package.json +338 -3
  122. package/src/app/api/chat/feedback/route.ts +77 -0
  123. package/src/app/api/chat/route.ts +2277 -0
  124. package/src/app/api/chat/tools.ts +3563 -0
  125. package/src/app/api/config/test-embedding/route.ts +39 -0
  126. package/src/app/api/config/verify/route.ts +309 -0
  127. package/src/app/api/describe-image/route.ts +108 -0
  128. package/src/app/api/doc-editor/edit/route.ts +87 -0
  129. package/src/app/api/doc-editor/export/route.ts +32 -0
  130. package/src/app/api/doc-editor/parse/route.ts +74 -0
  131. package/src/app/api/doc-editor/restore/route.ts +70 -0
  132. package/src/app/api/document/sign/route.ts +55 -0
  133. package/src/app/api/files/remote/route.ts +32 -0
  134. package/src/app/api/mcp/[connectionId]/route.ts +29 -0
  135. package/src/app/api/mcp/[connectionId]/test/route.ts +13 -0
  136. package/src/app/api/mcp/route.ts +22 -0
  137. package/src/app/api/parse-file/route.ts +86 -0
  138. package/src/app/api/pdf-page/route.ts +40 -0
  139. package/src/app/api/proxy/verify/route.ts +78 -0
  140. package/src/app/api/search/bing/route.ts +86 -0
  141. package/src/app/api/search/brave/route.ts +88 -0
  142. package/src/app/api/search/exa/route.ts +100 -0
  143. package/src/app/api/search/google/route.ts +147 -0
  144. package/src/app/api/search/route.ts +28 -0
  145. package/src/app/api/search/tavily/route.ts +93 -0
  146. package/src/app/api/search/verify/route.ts +27 -0
  147. package/src/app/api/tabular/route.ts +68 -0
  148. package/src/lib/chat/assistant-source-scope.ts +32 -0
  149. package/src/lib/chat/conversation-memory.ts +621 -0
  150. package/src/lib/chat/gateway-fallbacks.ts +12 -0
  151. package/src/lib/chat/image-description.ts +21 -0
  152. package/src/lib/chat/media-retrieval-routing.ts +37 -0
  153. package/src/lib/chat/media-source-routing.ts +100 -0
  154. package/src/lib/chat/message-input.ts +48 -0
  155. package/src/lib/chat/model-provider.ts +157 -0
  156. package/src/lib/chat/response-style.ts +3 -0
  157. package/src/lib/chat/retrieval-ranking.ts +126 -0
  158. package/src/lib/chat/retrieval-routing.ts +221 -0
  159. package/src/lib/chat/tabular-dataset-routing.ts +93 -0
  160. package/src/lib/chat/tabular-query-plan.ts +195 -0
  161. package/src/lib/chat/tabular-routing.ts +122 -0
  162. package/src/lib/chat/tabular-sandbox-files.ts +78 -0
  163. package/src/lib/chat/tabular-visualization.ts +165 -0
  164. package/src/lib/chat/tool-call-repair.ts +84 -0
  165. package/src/lib/chat/tool-context.ts +1222 -0
  166. package/src/lib/chat/tool-registry.ts +6 -0
  167. package/src/lib/chat/video-rag-routing.ts +149 -0
  168. package/src/lib/chat/visual-routing.ts +225 -0
  169. package/src/lib/enterprise-client.ts +96 -0
  170. package/src/lib/marketplace/tool-runtime-config.ts +155 -0
  171. package/src/lib/media/knowledge.ts +489 -0
  172. package/src/lib/media/pdf-inspection.ts +280 -0
  173. package/src/lib/media/source-identity.ts +50 -0
  174. package/src/lib/media/source-utils.ts +1156 -0
  175. package/src/lib/media/video/quick-look.ts +368 -0
  176. package/src/lib/media/video-intelligence-adapter.ts +1946 -0
  177. package/src/lib/media/video-intelligence-connection.ts +151 -0
  178. package/src/lib/remote-files.ts +182 -0
  179. package/src/lib/search/provider-verification.ts +95 -0
  180. package/src/runtime-host.ts +31 -0
@@ -0,0 +1,521 @@
1
+ import type { MediaAsset, MediaPipelineStage } from '@larkup/core/types';
2
+ import type { OfflineKnowledgeEvidenceInput } from '@larkup/core/video-knowledge/knowledge-builder';
3
+ import type { MediaEvidenceSegment } from './knowledge';
4
+ import { type VideoIntelligenceUsageSnapshot } from '@larkup/core/video-intelligence-capacity';
5
+ /**
6
+ * Distinguishes "the GPU provider never picked this job up in time" from
7
+ * every other failure -- callers use this to tell the model/user the
8
+ * analysis service didn't respond, instead of implying the video itself
9
+ * doesn't show the answer.
10
+ */
11
+ export declare class VideoWorkerTimeoutError extends Error {
12
+ readonly lastJobStatus: string;
13
+ constructor(lastJobStatus: string);
14
+ }
15
+ /**
16
+ * A terminal managed-worker failure has already released its concurrency and
17
+ * source-minute reservation, so a fresh worker can safely retry it. Keep this
18
+ * deliberately narrow: transport errors may leave the original job running,
19
+ * while configuration, quota, and evidence errors need user action instead.
20
+ *
21
+ * Safe to retry:
22
+ * - Larkup Cloud wrapper messages (previous-generation worker responses)
23
+ * - Model API overload / capacity errors from the upstream vision/LLM gateway
24
+ * - Stall-timeout: the job was explicitly cancelled before throwing, so no
25
+ * duplicate run is left alive on the worker
26
+ * - Source ingestion failures where the worker dropped the job before ingesting
27
+ * (status === 'failed' at the prepare stage, not a user-data error)
28
+ */
29
+ export declare function isRetryableManagedVideoWorkerFailure(error: unknown): boolean;
30
+ interface VideoMaterializationJob {
31
+ id: string;
32
+ status: 'queued' | 'running' | 'completed' | 'failed' | 'cancelled';
33
+ progress: {
34
+ stage: string;
35
+ percent: number;
36
+ message: string;
37
+ current?: number;
38
+ total?: number;
39
+ unit?: string;
40
+ elapsedSeconds?: number;
41
+ estimatedRemainingSeconds?: number;
42
+ };
43
+ source: {
44
+ url: string;
45
+ fileName: string;
46
+ mimeType: string;
47
+ sizeBytes: number;
48
+ durationSecs: number;
49
+ } | null;
50
+ error: string | null;
51
+ }
52
+ /**
53
+ * The control plane owns the source-minute allowance. A managed entitlement
54
+ * with remaining capacity may run its bounded inspection directly; a second
55
+ * host-side budget must not turn a valid paid allowance into an unnecessary
56
+ * browser approval flow.
57
+ */
58
+ export declare function hasVideoIntelligenceCapacity(): Promise<boolean>;
59
+ export declare function getVideoIntelligenceUsage(): Promise<{
60
+ sourceMinutesLimit: number | null;
61
+ sourceMinutesUsed: number;
62
+ activeJobs: number;
63
+ concurrentJobsLimit: number;
64
+ activeJobIds?: string[];
65
+ }>;
66
+ export declare function getReconciledVideoIntelligenceUsage(assets: MediaAsset[]): Promise<VideoIntelligenceUsageSnapshot>;
67
+ /**
68
+ * Checks credentials and a video-capable model before a source is uploaded,
69
+ * downloaded, or queued. This keeps configuration mistakes out of long-running
70
+ * media jobs and gives the settings screen a useful, actionable error.
71
+ */
72
+ export declare function validateVideoIntelligenceConfiguration(): Promise<void>;
73
+ /**
74
+ * Uses the configured managed service only as a short-lived remote-source
75
+ * bridge. The host must immediately copy the returned URL into its own
76
+ * canonical storage, then acknowledge it so the managed copy is deleted.
77
+ */
78
+ export declare function materializeInstalledRemoteVideo(input: {
79
+ sourceUrl: string;
80
+ fileName?: string;
81
+ durationSecs?: number;
82
+ maxWaitMs?: number;
83
+ assertStillActive?: () => Promise<void>;
84
+ reportProgress?: (progress: VideoMaterializationJob['progress']) => Promise<void>;
85
+ }): Promise<{
86
+ jobId: string;
87
+ source: NonNullable<VideoMaterializationJob['source']>;
88
+ }>;
89
+ export declare function acknowledgeInstalledRemoteVideoMaterialization(jobId: string): Promise<void>;
90
+ /** Cancels the managed job before its MediaAsset is deleted. */
91
+ export declare function cancelVideoIntelligenceJob(jobId: string): Promise<void>;
92
+ /** Removes the local runtime's retained source/result after its host asset is deleted. */
93
+ export declare function purgeLocalVideoIntelligenceJobData(jobId: string): Promise<void>;
94
+ /** Stops exactly one orphaned cloud job. The service rejects multiple jobs. */
95
+ export declare function cancelOnlyActiveVideoIntelligenceJob(): Promise<void>;
96
+ interface VideoJob {
97
+ id: string;
98
+ status: 'queued' | 'running' | 'completed' | 'failed' | 'cancelled';
99
+ progress: {
100
+ stage: string;
101
+ percent: number;
102
+ message: string;
103
+ stagePercent?: number;
104
+ sequence?: number;
105
+ elapsedSeconds?: number;
106
+ estimatedRemainingSeconds?: number;
107
+ current?: number;
108
+ total?: number;
109
+ unit?: string;
110
+ };
111
+ result: VideoEvidence | null;
112
+ error: string | null;
113
+ }
114
+ interface VideoEvidence {
115
+ durationMs: number;
116
+ video: {
117
+ width: number;
118
+ height: number;
119
+ fps: number;
120
+ };
121
+ transcript: Array<{
122
+ startMs: number;
123
+ endMs: number;
124
+ text: string;
125
+ }>;
126
+ visualObservations: Array<{
127
+ timeMs: number;
128
+ objects: Array<{
129
+ label: string;
130
+ trackId: number;
131
+ confidence: number;
132
+ }>;
133
+ ocr: Array<{
134
+ text: string;
135
+ confidence: number;
136
+ }>;
137
+ }>;
138
+ tracks: Array<{
139
+ trackId: number;
140
+ label: string;
141
+ startMs: number;
142
+ endMs: number;
143
+ observations: number;
144
+ confidence?: number;
145
+ }>;
146
+ anonymousPresenceLedger?: {
147
+ method: 'object-detection-anonymous-tracking';
148
+ sampledFrames: number;
149
+ sampleIntervalSecs?: number;
150
+ tracks: Array<{
151
+ trackId: number;
152
+ label: string;
153
+ startMs: number;
154
+ endMs: number;
155
+ observations: number;
156
+ confidence?: number;
157
+ timestampsMs: number[];
158
+ }>;
159
+ labels: Array<{
160
+ label: string;
161
+ distinctTrackCount: number;
162
+ maximumSimultaneous: number;
163
+ simultaneousTimestampsMs: number[];
164
+ }>;
165
+ };
166
+ recurringOverlayText?: Array<{
167
+ text: string;
168
+ firstSeenMs: number;
169
+ lastSeenMs: number;
170
+ observations: number;
171
+ timestampsMs?: number[];
172
+ confidence: number;
173
+ }>;
174
+ semanticObservations?: Array<{
175
+ startMs: number;
176
+ endMs: number;
177
+ text: string;
178
+ confidence: number;
179
+ }>;
180
+ semanticDiagnostics?: {
181
+ attempted?: boolean;
182
+ error?: string | null;
183
+ };
184
+ agentDiagnostics?: {
185
+ attempted?: boolean;
186
+ provider?: string;
187
+ model?: string;
188
+ requests?: number;
189
+ latencyMs?: number;
190
+ fallback?: boolean;
191
+ error?: string | null;
192
+ promptTokens?: number;
193
+ completionTokens?: number;
194
+ };
195
+ processingDiagnostics?: {
196
+ estimatedTotalSeconds?: number;
197
+ elapsedSeconds?: number;
198
+ estimateErrorSeconds?: number;
199
+ };
200
+ transcriptionDiagnostics?: {
201
+ provider?: string | null;
202
+ fallbackProvider?: string | null;
203
+ fallbackUsed?: boolean;
204
+ chunkCount?: number;
205
+ completedChunks?: number;
206
+ chunkErrors?: number;
207
+ error?: string | null;
208
+ };
209
+ knowledgeSummary?: {
210
+ overview?: string;
211
+ participants?: Array<{
212
+ name: string;
213
+ role: string;
214
+ evidence: Array<{
215
+ startMs: number;
216
+ endMs: number;
217
+ }>;
218
+ }>;
219
+ visibleSubjects?: Array<{
220
+ identity: string;
221
+ identityBasis: 'source-named' | 'source-described' | 'unresolved';
222
+ appearances: Array<{
223
+ startMs: number;
224
+ endMs: number;
225
+ confidence: 'direct' | 'partial';
226
+ }>;
227
+ }>;
228
+ stateHistory?: Array<{
229
+ startMs: number;
230
+ endMs: number;
231
+ state: string;
232
+ confidence: 'direct' | 'partial';
233
+ }>;
234
+ keyEvents?: Array<{
235
+ startMs: number;
236
+ endMs: number;
237
+ event: string;
238
+ confidence: 'direct' | 'partial';
239
+ }>;
240
+ narrative?: Array<{
241
+ startMs: number;
242
+ endMs: number;
243
+ text: string;
244
+ confidence: 'direct' | 'partial';
245
+ }>;
246
+ context?: Array<{
247
+ fact: string;
248
+ evidence: Array<{
249
+ startMs: number;
250
+ endMs: number;
251
+ }>;
252
+ }>;
253
+ sourceItems?: Array<{
254
+ kind: 'question' | 'clue' | 'heading' | 'slide-item' | 'board-item' | 'list-item';
255
+ channel: 'spoken' | 'visible';
256
+ questionRole?: 'primary' | 'interactional' | 'rhetorical' | 'not-question';
257
+ text: string;
258
+ answer: string;
259
+ respondent?: string;
260
+ startMs: number;
261
+ endMs: number;
262
+ }>;
263
+ sourceActivityStructures?: Array<{
264
+ kind: 'grid' | 'sequence' | 'collection';
265
+ label: string;
266
+ dimensions: Array<{
267
+ label: string;
268
+ values: string[];
269
+ }>;
270
+ promptCount?: number;
271
+ startMs: number;
272
+ endMs: number;
273
+ }>;
274
+ sourceTaskInstances?: Array<{
275
+ id: string;
276
+ prompt: string;
277
+ channel: 'spoken' | 'visible';
278
+ answer: string;
279
+ respondent?: string;
280
+ startMs: number;
281
+ endMs: number;
282
+ }>;
283
+ sourceInventoryCoverage?: {
284
+ complete: boolean;
285
+ totalWindows: number;
286
+ processedWindows: number;
287
+ reason?: string;
288
+ };
289
+ uncertainties?: string[];
290
+ };
291
+ coverage?: {
292
+ requested?: 'fast' | 'balanced' | 'thorough';
293
+ sourceFrames?: number;
294
+ decodedFrames?: number;
295
+ analyzedFrames?: number;
296
+ semanticClips?: number;
297
+ };
298
+ videoEmbeddings?: Array<{
299
+ clipId: string;
300
+ startMs: number;
301
+ endMs: number;
302
+ vector: number[];
303
+ dimensions: number;
304
+ provider: string;
305
+ }>;
306
+ videoEmbeddingDiagnostics?: {
307
+ attempted?: boolean;
308
+ provider?: string;
309
+ error?: string | null;
310
+ };
311
+ detectedLanguage?: string;
312
+ answeringGuide: {
313
+ goal?: string;
314
+ importantEntities: string[];
315
+ questionsToPrepareFor: string[];
316
+ instruction: string;
317
+ };
318
+ }
319
+ export declare function createVideoIntelligenceSubmitRequest(input: {
320
+ source: Record<string, unknown>;
321
+ brief: Record<string, unknown>;
322
+ config?: Record<string, unknown>;
323
+ }): Record<string, unknown>;
324
+ type ReportStage = (stage: MediaPipelineStage, patch: {
325
+ status: 'running' | 'completed';
326
+ percent?: number;
327
+ current?: number;
328
+ total?: number;
329
+ unit?: string;
330
+ sequence?: number;
331
+ elapsedSeconds?: number;
332
+ estimatedRemainingSeconds?: number;
333
+ message: string;
334
+ startedAt?: string;
335
+ /**
336
+ * The dispatched job's own status, when known. 'queued' means the GPU
337
+ * worker hasn't picked the job up yet (cold start) -- distinct from
338
+ * `status` above, which is about this reporting call's own stage, not
339
+ * the underlying job.
340
+ */
341
+ jobStatus?: 'queued' | 'running';
342
+ }) => Promise<void>;
343
+ export declare function runInstalledVideoIntelligence(input: {
344
+ asset: MediaAsset;
345
+ mediaPath: string;
346
+ reportStage: ReportStage;
347
+ briefOverride?: Record<string, unknown>;
348
+ /** Bounded cloud inspection reserves only the requested source range. */
349
+ sourceDurationSecs?: number;
350
+ /**
351
+ * A presigned HTTPS URL to an already-durable canonical copy (the web
352
+ * app's own S3StorageProvider). When set, this skips openAsBlob + the
353
+ * client.upload() multipart round-trip entirely -- the control plane
354
+ * dispatches the GPU worker straight at this URL, which is what lets
355
+ * watch_original re-inspect a video long after its original upload
356
+ * expired without ever re-transferring the file through this process.
357
+ */
358
+ sourceUrl?: string;
359
+ /** Persists the managed job ID immediately so deletion can cancel it. */
360
+ onJobSubmitted?: (jobId: string) => Promise<void>;
361
+ /** Prevents a removed asset from submitting a new managed job. */
362
+ assertStillActive?: () => Promise<void>;
363
+ /**
364
+ * How long to wait for the dispatched job before giving up. Full-video
365
+ * indexing runs unattended, so it keeps the long default; a chat-triggered
366
+ * bounded inspection has a live user waiting on a response and must fail
367
+ * fast (with a clear timeout error the caller can distinguish from "the
368
+ * video doesn't show this") if the GPU provider never picks the job up,
369
+ * rather than hang for hours.
370
+ */
371
+ maxWaitMs?: number;
372
+ }): Promise<{
373
+ evidence: VideoEvidence;
374
+ segments: MediaEvidenceSegment[];
375
+ }>;
376
+ export declare function shouldRequireSemanticVideoEvidence(config: Record<string, unknown>, diagnostics: VideoEvidence['semanticDiagnostics'], observations?: VideoEvidence['semanticObservations']): boolean;
377
+ /** Managed indexes must contain actual visual-language evidence, not speech/OCR alone. */
378
+ export declare function enforceManagedSemanticBrief(config: Record<string, unknown>, brief: Record<string, unknown>): Record<string, unknown>;
379
+ export declare function shouldSkipHeavyVideoOperators(_config: Record<string, unknown>, briefOverride?: Record<string, unknown>): boolean;
380
+ export declare function shouldSkipCloudTranscription(_config: Record<string, unknown>, briefOverride: Record<string, unknown> | undefined, _asset: MediaAsset): boolean;
381
+ export declare function shouldSkipCloudVideoEmbeddings(_config: Record<string, unknown>, briefOverride: Record<string, unknown> | undefined, _asset: MediaAsset): boolean;
382
+ export declare function assertVideoIntelligenceConfiguration(config: Record<string, unknown>): void;
383
+ export declare function resolveVideoJobModelConfiguration(config: Record<string, unknown>): {
384
+ audio: {
385
+ provider: string;
386
+ apiKey: string;
387
+ model: string;
388
+ };
389
+ brain: {
390
+ provider: string;
391
+ apiKey: string;
392
+ model: string;
393
+ };
394
+ vision: {
395
+ provider: string;
396
+ apiKey: string;
397
+ model: string;
398
+ };
399
+ };
400
+ /**
401
+ * Translate the worker's overall percent into the mapped UI step's own band,
402
+ * preferring its true completed/total clip units whenever it reports them.
403
+ */
404
+ export declare function cloudStageProgress(progress: VideoJob['progress']): {
405
+ percent: number;
406
+ current?: number;
407
+ total?: number;
408
+ unit?: string;
409
+ sequence?: number;
410
+ elapsedSeconds?: number;
411
+ estimatedRemainingSeconds?: number;
412
+ };
413
+ /**
414
+ * Convert the worker's overall percent into progress within the mapped UI
415
+ * step, from the phase table the worker itself reports against. The worker
416
+ * already advances that percent smoothly and monotonically, so there is
417
+ * nothing left for the host to smooth or guess at.
418
+ */
419
+ export declare function cloudOverallToStagePercent(stage: string, overallPercent: number, stagePercent?: number): number;
420
+ /**
421
+ * Preserve source-level cloud observations for the investigation engine. The
422
+ * 30-second RAG segments above are useful navigation projections, but they
423
+ * must never be the only evidence used for an exact score or count.
424
+ */
425
+ export declare function evidenceToKnowledgeInputs(evidence: VideoEvidence): {
426
+ transcriptChunks: {
427
+ text: string;
428
+ startSecs: number;
429
+ endSecs: number;
430
+ }[];
431
+ visualObservations: ({
432
+ startSecs: number;
433
+ endSecs: number;
434
+ observations: {
435
+ kind: "object";
436
+ value: string;
437
+ frameTimestamps: number[];
438
+ confidence: number;
439
+ uncertaintyReasons: string[];
440
+ }[];
441
+ } | {
442
+ startSecs: number;
443
+ endSecs: number;
444
+ observations: {
445
+ kind: "state";
446
+ value: {
447
+ subject: string;
448
+ property: string;
449
+ value: string;
450
+ observations: number;
451
+ firstSeenMs: number;
452
+ lastSeenMs: number;
453
+ };
454
+ frameTimestamps: number[];
455
+ confidence: number;
456
+ uncertaintyReasons: string[];
457
+ }[];
458
+ } | {
459
+ startSecs: number;
460
+ endSecs: number;
461
+ observations: {
462
+ kind: "action";
463
+ value: string;
464
+ frameTimestamps: number[];
465
+ confidence: number;
466
+ uncertaintyReasons: string[];
467
+ }[];
468
+ })[];
469
+ ocrEvidence: {
470
+ modality: "ocr";
471
+ timeRange: {
472
+ startSecs: number;
473
+ endSecs: number;
474
+ precision: "estimated";
475
+ };
476
+ payload: {
477
+ text: string;
478
+ blocks: {
479
+ text: string;
480
+ confidence: number;
481
+ }[];
482
+ };
483
+ source: {
484
+ kind: "provider";
485
+ provider: string;
486
+ };
487
+ confidence: {
488
+ score: number;
489
+ source: "provider";
490
+ calibrationStatus: "uncalibrated";
491
+ uncertaintyReasons: string[];
492
+ };
493
+ observation: {
494
+ kind: "ocr";
495
+ value: {
496
+ text: string;
497
+ };
498
+ };
499
+ }[];
500
+ reconciledEvidence: OfflineKnowledgeEvidenceInput[];
501
+ };
502
+ /** Converts a bounded cloud re-analysis result into immutable refinement evidence. */
503
+ export declare function evidenceToRefinementInputs(evidence: VideoEvidence): OfflineKnowledgeEvidenceInput[];
504
+ /**
505
+ * Resolve the uploader's free-form focus once, then use it everywhere that
506
+ * creates or audits a video index. It is deliberately opaque text: neither
507
+ * the host nor the worker infers a genre or applies subject-specific rules.
508
+ */
509
+ export declare function resolveVideoIndexingHint(asset: MediaAsset): string | undefined;
510
+ export declare function createAssetVideoIndexingBrief(asset: MediaAsset): Record<string, unknown>;
511
+ /**
512
+ * Infer only languages whose writing system makes the hint high-confidence.
513
+ * Latin titles stay automatic because their script is shared by too many
514
+ * languages. This avoids a second AI request and remains content-agnostic.
515
+ */
516
+ export declare function inferLanguageHintFromTitle(title: string): string | undefined;
517
+ export declare function evidenceToSegments(evidence: VideoEvidence): MediaEvidenceSegment[];
518
+ /** Render the runtime's already-audited account without paying for a second LLM pass. */
519
+ export declare function formatVideoKnowledgeSummary(evidence: VideoEvidence): string | null;
520
+ export {};
521
+ //# sourceMappingURL=video-intelligence-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video-intelligence-adapter.d.ts","sourceRoot":"","sources":["../../../src/lib/media/video-intelligence-adapter.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEzE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,gDAAgD,CAAC;AACpG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,EAEL,KAAK,8BAA8B,EACpC,MAAM,0CAA0C,CAAC;AAElD;;;;;GAKG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;aACpB,aAAa,EAAE,MAAM;gBAArB,aAAa,EAAE,MAAM;CAIlD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAe5E;AAoCD,UAAU,uBAAuB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IACpE,QAAQ,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,yBAAyB,CAAC,EAAE,MAAM,CAAC;KACpC,CAAC;IACF,MAAM,EAAE;QACN,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;KACtB,GAAG,IAAI,CAAC;IACT,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAsB,4BAA4B,IAAI,OAAO,CAAC,OAAO,CAAC,CAcrE;AAED,wBAAsB,yBAAyB,IAAI,OAAO,CAAC;IACzD,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB,CAAC,CAOD;AAED,wBAAsB,mCAAmC,CACvD,MAAM,EAAE,UAAU,EAAE,GACnB,OAAO,CAAC,8BAA8B,CAAC,CAazC;AAED;;;;GAIG;AACH,wBAAsB,sCAAsC,IAAI,OAAO,CAAC,IAAI,CAAC,CAO5E;AAED;;;;GAIG;AACH,wBAAsB,+BAA+B,CAAC,KAAK,EAAE;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,uBAAuB,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACnF,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC,CAAA;CAAE,CAAC,CA4CrF;AAED,wBAAsB,8CAA8C,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQjG;AAED,gEAAgE;AAChE,wBAAsB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS7E;AAED,0FAA0F;AAC1F,wBAAsB,kCAAkC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUrF;AAED,+EAA+E;AAC/E,wBAAsB,oCAAoC,IAAI,OAAO,CAAC,IAAI,CAAC,CAW1E;AAED,UAAU,QAAQ;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IACpE,QAAQ,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,yBAAyB,CAAC,EAAE,MAAM,CAAC;QACnC,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAaD,UAAU,aAAa;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACtD,UAAU,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpE,kBAAkB,EAAE,KAAK,CAAC;QACxB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACvE,GAAG,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAClD,CAAC,CAAC;IACH,MAAM,EAAE,KAAK,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;IACH,uBAAuB,CAAC,EAAE;QACxB,MAAM,EAAE,qCAAqC,CAAC;QAC9C,aAAa,EAAE,MAAM,CAAC;QACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,MAAM,EAAE,KAAK,CAAC;YACZ,OAAO,EAAE,MAAM,CAAC;YAChB,KAAK,EAAE,MAAM,CAAC;YACd,OAAO,EAAE,MAAM,CAAC;YAChB,KAAK,EAAE,MAAM,CAAC;YACd,YAAY,EAAE,MAAM,CAAC;YACrB,UAAU,CAAC,EAAE,MAAM,CAAC;YACpB,YAAY,EAAE,MAAM,EAAE,CAAC;SACxB,CAAC,CAAC;QACH,MAAM,EAAE,KAAK,CAAC;YACZ,KAAK,EAAE,MAAM,CAAC;YACd,kBAAkB,EAAE,MAAM,CAAC;YAC3B,mBAAmB,EAAE,MAAM,CAAC;YAC5B,wBAAwB,EAAE,MAAM,EAAE,CAAC;SACpC,CAAC,CAAC;KACJ,CAAC;IACF,oBAAoB,CAAC,EAAE,KAAK,CAAC;QAC3B,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;IACH,oBAAoB,CAAC,EAAE,KAAK,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;IACH,mBAAmB,CAAC,EAAE;QACpB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACvB,CAAC;IACF,gBAAgB,CAAC,EAAE;QACjB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,qBAAqB,CAAC,EAAE;QACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;QAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;KAC/B,CAAC;IACF,wBAAwB,CAAC,EAAE;QACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACjC,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACvB,CAAC;IACF,gBAAgB,CAAC,EAAE;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,KAAK,CAAC;YACnB,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,MAAM,CAAC;YACb,QAAQ,EAAE,KAAK,CAAC;gBAAE,OAAO,EAAE,MAAM,CAAC;gBAAC,KAAK,EAAE,MAAM,CAAA;aAAE,CAAC,CAAC;SACrD,CAAC,CAAC;QACH,eAAe,CAAC,EAAE,KAAK,CAAC;YACtB,QAAQ,EAAE,MAAM,CAAC;YACjB,aAAa,EAAE,cAAc,GAAG,kBAAkB,GAAG,YAAY,CAAC;YAClE,WAAW,EAAE,KAAK,CAAC;gBACjB,OAAO,EAAE,MAAM,CAAC;gBAChB,KAAK,EAAE,MAAM,CAAC;gBACd,UAAU,EAAE,QAAQ,GAAG,SAAS,CAAC;aAClC,CAAC,CAAC;SACJ,CAAC,CAAC;QACH,YAAY,CAAC,EAAE,KAAK,CAAC;YACnB,OAAO,EAAE,MAAM,CAAC;YAChB,KAAK,EAAE,MAAM,CAAC;YACd,KAAK,EAAE,MAAM,CAAC;YACd,UAAU,EAAE,QAAQ,GAAG,SAAS,CAAC;SAClC,CAAC,CAAC;QACH,SAAS,CAAC,EAAE,KAAK,CAAC;YAChB,OAAO,EAAE,MAAM,CAAC;YAChB,KAAK,EAAE,MAAM,CAAC;YACd,KAAK,EAAE,MAAM,CAAC;YACd,UAAU,EAAE,QAAQ,GAAG,SAAS,CAAC;SAClC,CAAC,CAAC;QACH,SAAS,CAAC,EAAE,KAAK,CAAC;YAChB,OAAO,EAAE,MAAM,CAAC;YAChB,KAAK,EAAE,MAAM,CAAC;YACd,IAAI,EAAE,MAAM,CAAC;YACb,UAAU,EAAE,QAAQ,GAAG,SAAS,CAAC;SAClC,CAAC,CAAC;QACH,OAAO,CAAC,EAAE,KAAK,CAAC;YACd,IAAI,EAAE,MAAM,CAAC;YACb,QAAQ,EAAE,KAAK,CAAC;gBAAE,OAAO,EAAE,MAAM,CAAC;gBAAC,KAAK,EAAE,MAAM,CAAA;aAAE,CAAC,CAAC;SACrD,CAAC,CAAC;QACH,WAAW,CAAC,EAAE,KAAK,CAAC;YAClB,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,YAAY,GAAG,YAAY,GAAG,WAAW,CAAC;YAClF,OAAO,EAAE,QAAQ,GAAG,SAAS,CAAC;YAC9B,YAAY,CAAC,EAAE,SAAS,GAAG,eAAe,GAAG,YAAY,GAAG,cAAc,CAAC;YAC3E,IAAI,EAAE,MAAM,CAAC;YACb,MAAM,EAAE,MAAM,CAAC;YACf,UAAU,CAAC,EAAE,MAAM,CAAC;YACpB,OAAO,EAAE,MAAM,CAAC;YAChB,KAAK,EAAE,MAAM,CAAC;SACf,CAAC,CAAC;QACH,wBAAwB,CAAC,EAAE,KAAK,CAAC;YAC/B,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,YAAY,CAAC;YACzC,KAAK,EAAE,MAAM,CAAC;YACd,UAAU,EAAE,KAAK,CAAC;gBAAE,KAAK,EAAE,MAAM,CAAC;gBAAC,MAAM,EAAE,MAAM,EAAE,CAAA;aAAE,CAAC,CAAC;YACvD,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,OAAO,EAAE,MAAM,CAAC;YAChB,KAAK,EAAE,MAAM,CAAC;SACf,CAAC,CAAC;QACH,mBAAmB,CAAC,EAAE,KAAK,CAAC;YAC1B,EAAE,EAAE,MAAM,CAAC;YACX,MAAM,EAAE,MAAM,CAAC;YACf,OAAO,EAAE,QAAQ,GAAG,SAAS,CAAC;YAC9B,MAAM,EAAE,MAAM,CAAC;YACf,UAAU,CAAC,EAAE,MAAM,CAAC;YACpB,OAAO,EAAE,MAAM,CAAC;YAChB,KAAK,EAAE,MAAM,CAAC;SACf,CAAC,CAAC;QACH,uBAAuB,CAAC,EAAE;YACxB,QAAQ,EAAE,OAAO,CAAC;YAClB,YAAY,EAAE,MAAM,CAAC;YACrB,gBAAgB,EAAE,MAAM,CAAC;YACzB,MAAM,CAAC,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;KAC1B,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,SAAS,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;QAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,eAAe,CAAC,EAAE,KAAK,CAAC;QACtB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;IACH,yBAAyB,CAAC,EAAE;QAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACvB,CAAC;IACF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,iBAAiB,EAAE,MAAM,EAAE,CAAC;QAC5B,qBAAqB,EAAE,MAAM,EAAE,CAAC;QAChC,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,wBAAgB,oCAAoC,CAAC,KAAK,EAAE;IAC1D,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQ1B;AAED,KAAK,WAAW,GAAG,CACjB,KAAK,EAAE,kBAAkB,EACzB,KAAK,EAAE;IACL,MAAM,EAAE,SAAS,GAAG,WAAW,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CAClC,KACE,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB,wBAAsB,6BAA6B,CAAC,KAAK,EAAE;IACzD,KAAK,EAAE,UAAU,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,yEAAyE;IACzE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC;IACV,QAAQ,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,oBAAoB,EAAE,CAAC;CAClC,CAAC,CA0OD;AAED,wBAAgB,kCAAkC,CAChD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,WAAW,EAAE,aAAa,CAAC,qBAAqB,CAAC,EACjD,YAAY,GAAE,aAAa,CAAC,sBAAsB,CAAM,GACvD,OAAO,CAGT;AAED,0FAA0F;AAC1F,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzB;AAED,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACtC,OAAO,CAKT;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAClD,MAAM,EAAE,UAAU,GACjB,OAAO,CAET;AAED,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAClD,MAAM,EAAE,UAAU,GACjB,OAAO,CAET;AAED,wBAAgB,oCAAoC,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAO1F;AAED,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;;;;;;EAsGhF;AA0CD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG;IAClE,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACpC,CAqDA;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,MAAM,EACtB,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM,CAWR;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkHhE;AA2DD,sFAAsF;AACtF,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,aAAa,GACtB,6BAA6B,EAAE,CAsHjC;AAwLD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAQ9E;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAyBxF;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAgB5E;AAgED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,aAAa,GAAG,oBAAoB,EAAE,CAkJlF;AAED,yFAAyF;AACzF,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CA6FlF"}
@@ -0,0 +1,32 @@
1
+ type ProvisioningClient = {
2
+ getUsage?: () => Promise<unknown>;
3
+ provisionDeviceAccess?: (installationId: string) => Promise<{
4
+ apiKey: string;
5
+ entitlement: {
6
+ plan: string;
7
+ sourceMinutesPerMonth: number | null;
8
+ maxConcurrentJobs: number;
9
+ };
10
+ }>;
11
+ };
12
+ type VideoExtension = {
13
+ createClient(context: {
14
+ config: Record<string, unknown>;
15
+ fetch?: typeof globalThis.fetch;
16
+ }): ProvisioningClient;
17
+ };
18
+ /**
19
+ * Creates a per-installation cloud credential once, then keeps it in this
20
+ * project's local config. The cloud stores hashes of both identifiers only.
21
+ */
22
+ export declare function resolveVideoIntelligenceConnection(extension: VideoExtension, installedConfig: Record<string, unknown>): Promise<{
23
+ config: Record<string, unknown>;
24
+ provisioned: boolean;
25
+ entitlement?: {
26
+ plan: string;
27
+ sourceMinutesPerMonth: number | null;
28
+ maxConcurrentJobs: number;
29
+ };
30
+ }>;
31
+ export {};
32
+ //# sourceMappingURL=video-intelligence-connection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video-intelligence-connection.d.ts","sourceRoot":"","sources":["../../../src/lib/media/video-intelligence-connection.ts"],"names":[],"mappings":"AAIA,KAAK,kBAAkB,GAAG;IACxB,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,qBAAqB,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC;QAC1D,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE;YACX,IAAI,EAAE,MAAM,CAAC;YACb,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;YACrC,iBAAiB,EAAE,MAAM,CAAC;SAC3B,CAAC;KACH,CAAC,CAAC;CACJ,CAAC;AAEF,KAAK,cAAc,GAAG;IACpB,YAAY,CAAC,OAAO,EAAE;QACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;KACjC,GAAG,kBAAkB,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,kCAAkC,CACtD,SAAS,EAAE,cAAc,EACzB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvC,OAAO,CAAC;IACT,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;QACrC,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH,CAAC,CAiFD"}
@@ -0,0 +1,12 @@
1
+ export declare const MAX_REMOTE_FILE_BYTES: number;
2
+ export interface RemoteFileDownload {
3
+ bytes: Buffer;
4
+ contentType: string;
5
+ fileName: string;
6
+ sourceUrl: string;
7
+ }
8
+ export declare function normalizeRemoteFileUrl(value: string): URL;
9
+ export declare function isPrivateAddress(address: string): boolean;
10
+ export declare function getRemoteFileName(response: Response, sourceUrl: URL, contentType: string): string;
11
+ export declare function downloadRemoteFile(value: string): Promise<RemoteFileDownload>;
12
+ //# sourceMappingURL=remote-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-files.d.ts","sourceRoot":"","sources":["../../src/lib/remote-files.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,qBAAqB,QAAmB,CAAC;AAgCtD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAqBzD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,WAyB/C;AAWD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,UAuBxF;AA6BD,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA4BnF"}
@@ -0,0 +1,5 @@
1
+ export declare const SEARCH_VERIFICATION_PROVIDERS: readonly ["serper", "google", "tavily", "brave", "bing", "exa", "firecrawl"];
2
+ export type SearchVerificationProvider = (typeof SEARCH_VERIFICATION_PROVIDERS)[number];
3
+ export declare function isSearchVerificationProvider(provider: string): provider is SearchVerificationProvider;
4
+ export declare function verifySearchProvider(provider: SearchVerificationProvider, apiKey: string, fetcher?: typeof fetch): Promise<void>;
5
+ //# sourceMappingURL=provider-verification.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-verification.d.ts","sourceRoot":"","sources":["../../../src/lib/search/provider-verification.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,6BAA6B,8EAQhC,CAAC;AAEX,MAAM,MAAM,0BAA0B,GAAG,CAAC,OAAO,6BAA6B,CAAC,CAAC,MAAM,CAAC,CAAC;AAExF,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,GACf,QAAQ,IAAI,0BAA0B,CAExC;AAED,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,0BAA0B,EACpC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,OAAO,KAAa,GAC5B,OAAO,CAAC,IAAI,CAAC,CAwEf"}
@@ -0,0 +1,20 @@
1
+ import { SandboxManager } from '@larkup/sandbox';
2
+ import type { SandboxConfig } from '@larkup/sandbox/types';
3
+ export interface WorkspaceRuntimeHost {
4
+ readBinary?: (source: {
5
+ id: string;
6
+ url?: string;
7
+ }) => Promise<Uint8Array>;
8
+ apiUrl?: (path: string) => string;
9
+ fetch?: typeof globalThis.fetch;
10
+ sandbox: Pick<SandboxManager, 'execute' | 'healthCheck'>;
11
+ }
12
+ export declare function runWithWorkspaceRuntime<T>(host: WorkspaceRuntimeHost, operation: () => T): T;
13
+ export declare function workspaceSandbox(config: SandboxConfig): Pick<SandboxManager, 'execute' | 'healthCheck'>;
14
+ export declare function workspaceServerUrl(path: string): string;
15
+ export declare const workspaceServerFetch: typeof globalThis.fetch;
16
+ export declare function workspaceReadBinary(source: {
17
+ id: string;
18
+ url?: string;
19
+ }): Promise<Uint8Array> | undefined;
20
+ //# sourceMappingURL=runtime-host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-host.d.ts","sourceRoot":"","sources":["../src/runtime-host.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3E,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAClC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAChC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,aAAa,CAAC,CAAC;CAC1D;AAED,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,CAE5F;AACD,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,aAAa,GACpB,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,aAAa,CAAC,CAEjD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AACD,eAAO,MAAM,oBAAoB,EAAE,OAAO,UAAU,CAAC,KACS,CAAC;AAE/D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,SAAS,CAElC"}