@eyepop.ai/eyepop 3.16.0 → 3.17.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.
package/README.md CHANGED
@@ -50,7 +50,7 @@ Set `EYEPOP_API_KEY` in your server environment. API keys are secrets and must n
50
50
  export EYEPOP_API_KEY=<your_api_key>
51
51
  ```
52
52
 
53
- For provisioned persistent worker sessions, also set `EYEPOP_SESSION_UUID`.
53
+ Create transient sessions with a pop when the worker endpoint is constructed. This lets EyePop schedule the right compute before media is processed.
54
54
 
55
55
  ```typescript
56
56
  import { EyePop } from '@eyepop.ai/eyepop'
@@ -80,6 +80,27 @@ import { EyePop } from '@eyepop.ai/eyepop'
80
80
 
81
81
  For transient sessions, pass `pop` when creating the endpoint whenever possible. Use `endpoint.changePop(pop)` only when an already connected transient worker needs to switch Pops.
82
82
 
83
+ When `sessionUuid` is not provided, the SDK creates compute sessions with `POST /v1/sessions?wait=true`.
84
+
85
+ ModelLess CPU pops use the same constructor-pop path:
86
+
87
+ ```typescript
88
+ const endpoint = await EyePop.workerEndpoint({
89
+ pop: {
90
+ components: [
91
+ {
92
+ type: 'inference',
93
+ ability: 'eyepop.localize-objects:latest',
94
+ categoryName: 'objects',
95
+ params: {
96
+ prompts: [{ prompt: 'person' }],
97
+ },
98
+ },
99
+ ],
100
+ },
101
+ }).connect()
102
+ ```
103
+
83
104
  You can also pass the key explicitly from server-side configuration:
84
105
 
85
106
  ```typescript
@@ -118,6 +139,31 @@ import { EyePop } from '@eyepop.ai/eyepop'
118
139
 
119
140
  Persistent sessions are normally preconfigured. In that case, process media directly and do not call `changePop()` unless your deployment is meant to accept runtime Pop changes.
120
141
 
142
+ Persistent deployments are created through compute-api or EyePop tooling. For example, a trusted server can create a persistent deployment with an inline pop and then pass the returned `session_uuid` to the SDK:
143
+
144
+ ```shell
145
+ curl -sS -X POST "https://compute.eyepop.ai/v1/deployments?wait=true" \
146
+ -H "Authorization: Bearer $EYEPOP_API_KEY" \
147
+ -H "Content-Type: application/json" \
148
+ -d '{
149
+ "display_name": "node-modeless-deployment",
150
+ "pop": {
151
+ "components": [
152
+ {
153
+ "type": "inference",
154
+ "ability": "eyepop.localize-objects:latest",
155
+ "categoryName": "objects",
156
+ "params": {
157
+ "prompts": [{ "prompt": "person" }]
158
+ }
159
+ }
160
+ ]
161
+ }
162
+ }'
163
+ ```
164
+
165
+ The response includes `session_uuid`, `session_status`, `status_url`, and worker access metadata. Poll `status_url` until the deployment reaches `pipeline_ok`, then connect with `sessionUuid`.
166
+
121
167
  ### Browser and Mobile Clients
122
168
 
123
169
  Do not put `EYEPOP_API_KEY` in browser or mobile application code. Create EyePop sessions from a trusted backend, then pass only the session JSON to the client.
@@ -183,6 +229,33 @@ const results = await endpoint.process({
183
229
  })
184
230
  ```
185
231
 
232
+ ### Image Groups (multiple images, one result)
233
+
234
+ Send several images as a **single** source that the pop processes **together** as one inference unit — for example a multi-image VLM prompt. The group yields **one** prediction for the whole set, unlike batching below, where each image is an independent inference.
235
+
236
+ ```typescript
237
+ // Local files
238
+ const results = await endpoint.uploadGroup(['a.jpg', 'b.jpg', 'c.jpg'])
239
+ for await (const result of results) {
240
+ console.log(result)
241
+ }
242
+
243
+ // In-memory streams (optional parallel MIME types)
244
+ import fs from 'node:fs'
245
+ import { Readable } from 'node:stream'
246
+ const stream1 = Readable.toWeb(fs.createReadStream('a.jpg'))
247
+ const stream2 = Readable.toWeb(fs.createReadStream('b.jpg'))
248
+ const results = await endpoint.uploadStreamGroup([stream1, stream2], ['image/jpeg', 'image/jpeg'])
249
+
250
+ // Remote URLs (the server fetches each)
251
+ const results = await endpoint.loadFromGroup([
252
+ 'https://example.com/a.jpg',
253
+ 'https://example.com/b.jpg',
254
+ ])
255
+ ```
256
+
257
+ Image order is preserved end-to-end. A group may contain **up to 16 images** (enforced server-side). The pop's ability must be multi-image-capable; a single-image ability handed a group returns an error.
258
+
186
259
  ### Canceling Jobs
187
260
 
188
261
  Queued and in-progress jobs can be cancelled from the result iterator:
@@ -202,18 +275,18 @@ for await (const result of results) {
202
275
 
203
276
  ## Endpoint Options
204
277
 
205
- By default, `EyePop.workerEndpoint().connect()` starts a worker when needed and cancels queued jobs on that worker when it connects.
278
+ By default, `EyePop.workerEndpoint({ pop }).connect()` starts a transient worker when needed and cancels queued jobs on that worker when it connects.
206
279
 
207
280
  Disable worker startup:
208
281
 
209
282
  ```typescript
210
- const endpoint = await EyePop.workerEndpoint({ autoStart: false }).connect()
283
+ const endpoint = await EyePop.workerEndpoint({ pop, autoStart: false }).connect()
211
284
  ```
212
285
 
213
286
  Keep pending jobs:
214
287
 
215
288
  ```typescript
216
- const endpoint = await EyePop.workerEndpoint({ stopJobs: false }).connect()
289
+ const endpoint = await EyePop.workerEndpoint({ pop, stopJobs: false }).connect()
217
290
  ```
218
291
 
219
292
  ## Visualization
@@ -1099,19 +1099,6 @@ interface WorkerOptions extends Options {
1099
1099
  isLocalMode?: boolean;
1100
1100
  }
1101
1101
 
1102
- declare enum SessionStatus {
1103
- UNKNOWN = "unknown",
1104
- PENDING = "pending",
1105
- RUNNING = "running",
1106
- STOPPED = "stopped",
1107
- FAILED = "failed",
1108
- ERROR = "error",
1109
- PIPELINE_CREATING = "pipeline_creating",
1110
- PIPELINE_OK = "pipeline_ok",
1111
- PIPELINE_CHECKING = "pipeline_checking",
1112
- PIPELINE_ERROR = "pipeline_error",
1113
- UPGRADING = "upgrading"
1114
- }
1115
1102
  declare class WorkerEndpoint extends Endpoint<WorkerEndpoint> {
1116
1103
  private _baseUrl;
1117
1104
  private _pipelineId;
@@ -1153,6 +1140,9 @@ declare class WorkerEndpoint extends Endpoint<WorkerEndpoint> {
1153
1140
  process({ source, componentParams, motionDetect, roi }: ProcessRequest): Promise<ResultStream>;
1154
1141
  private processV1;
1155
1142
  private processV2;
1143
+ uploadGroup(paths: string[], params?: ProcessParams): Promise<ResultStream>;
1144
+ uploadStreamGroup(streams: Array<ReadableStream<Uint8Array> | Blob | BufferSource>, mimeTypes?: string[], params?: ProcessParams): Promise<ResultStream>;
1145
+ loadFromGroup(urls: string[], params?: ProcessParams): Promise<ResultStream>;
1156
1146
  private uploadFile;
1157
1147
  private uploadStream;
1158
1148
  private uploadPath;
@@ -1163,24 +1153,16 @@ declare class WorkerEndpoint extends Endpoint<WorkerEndpoint> {
1163
1153
  private jobStatus;
1164
1154
  protected reconnect(): Promise<WorkerEndpoint>;
1165
1155
  private startWebApiSessionWithPopId;
1166
- private static SESSION_DEAD;
1167
1156
  private static WAIT_FOR_IS_READY;
1168
- private static CHECK_FOR_IS_READY_INTERVAL;
1169
1157
  private sessionReadyTimeoutMs;
1170
- private sessionHealthReady;
1171
1158
  private getComputeSession;
1172
- private getOnDemandComputeSession;
1173
- private getPermanentComputeSession;
1174
1159
  private startTransientPipeline;
1175
1160
  private ensureTransientPipelineStarted;
1176
1161
  private changeTransientPop;
1177
1162
  private deleteTransientPipeline;
1178
- private pipelineIdFromSession;
1179
1163
  protected authorizationHeader(): Promise<string>;
1180
1164
  private computeAuthorizationHeader;
1181
- private setComputeSessionAccessToken;
1182
1165
  private setTransientPipelinePop;
1183
- private sessionCreateBody;
1184
1166
  }
1185
1167
 
1186
1168
  interface DataOptions extends Options {
@@ -1343,7 +1325,20 @@ declare class EyepopLineDecoder {
1343
1325
  flush(): string[];
1344
1326
  }
1345
1327
  declare function readableStreamFromString(s: string): ReadableStream<Uint8Array>;
1328
+ type MultipartContent = ReadableStream<Uint8Array> | Blob | BufferSource | string;
1329
+ interface MultipartPart {
1330
+ name: string;
1331
+ contentType?: string | null;
1332
+ content: MultipartContent;
1333
+ }
1334
+ declare function randomMultipartBoundary(): string;
1335
+ /**
1336
+ * Streams a multipart/form-data body part by part, piping each part's bytes through as they
1337
+ * become available instead of buffering any part's full content in memory first.
1338
+ */
1339
+ declare function encodeMultipartFormData(parts: MultipartPart[], boundary: string): ReadableStream<Uint8Array>;
1346
1340
 
1341
+ type UploadBody = ReadableStream<Uint8Array> | Blob | BufferSource;
1347
1342
  declare class AbstractJob implements ResultStream {
1348
1343
  protected _getSession: () => Promise<WorkerSession>;
1349
1344
  protected _params: ProcessParams;
@@ -1362,12 +1357,14 @@ declare class AbstractJob implements ResultStream {
1362
1357
  }
1363
1358
  declare class UploadJob extends AbstractJob {
1364
1359
  private readonly _uploadStream;
1360
+ private readonly _uploadBodyFactory;
1365
1361
  private readonly _mimeType;
1366
1362
  private readonly _size;
1367
1363
  private readonly _needsFullDuplex;
1368
1364
  private readonly _videoMode;
1369
1365
  get [Symbol.toStringTag](): string;
1370
- constructor(stream: ReadableStream<Uint8Array> | Blob | BufferSource, mimeType: string, size: number | undefined, videoMode: VideoMode | undefined, params: ProcessParams, getSession: () => Promise<WorkerSession>, client: HttpClient, requestLogger: Logger);
1366
+ constructor(stream: UploadBody, mimeType: string, size: number | undefined, videoMode: VideoMode | undefined, params: ProcessParams, getSession: () => Promise<WorkerSession>, client: HttpClient, requestLogger: Logger, uploadBodyFactory?: () => Promise<UploadBody>);
1367
+ private uploadBody;
1371
1368
  protected onEvent(event: StreamEvent): Promise<void>;
1372
1369
  protected startJob(): Promise<Response>;
1373
1370
  }
@@ -1377,6 +1374,22 @@ declare class LoadFromJob extends AbstractJob {
1377
1374
  get [Symbol.toStringTag](): string;
1378
1375
  protected startJob(): Promise<Response>;
1379
1376
  }
1377
+ interface UploadSource {
1378
+ readonly stream: ReadableStream<Uint8Array> | Blob | BufferSource;
1379
+ readonly mimeType: string | null;
1380
+ }
1381
+ declare class UploadGroupJob extends AbstractJob {
1382
+ private readonly _sources;
1383
+ get [Symbol.toStringTag](): string;
1384
+ constructor(sources: UploadSource[], params: ProcessParams, getSession: () => Promise<WorkerSession>, client: HttpClient, requestLogger: Logger);
1385
+ protected startJob(): Promise<Response>;
1386
+ }
1387
+ declare class LoadFromGroupJob extends AbstractJob {
1388
+ private readonly _urls;
1389
+ get [Symbol.toStringTag](): string;
1390
+ constructor(urls: string[], params: ProcessParams, getSession: () => Promise<WorkerSession>, client: HttpClient, requestLogger: Logger);
1391
+ protected startJob(): Promise<Response>;
1392
+ }
1380
1393
  declare class LoadFromAssetUuidJob extends AbstractJob {
1381
1394
  private readonly _assetUuid;
1382
1395
  constructor(assetUuid: string, params: ProcessParams, getSession: () => Promise<WorkerSession>, client: HttpClient, requestLogger: Logger);
@@ -1454,4 +1467,4 @@ declare namespace EyePop {
1454
1467
  function dataEndpoint(opts?: DataOptions): DataEndpoint;
1455
1468
  }
1456
1469
 
1457
- export { type AbilityAliasEntry, AbstractJob, type AliasResolution, type Annotation, AnnotationInclusionMode, AnnotationType, type ApiKeyAuth, type Area, AreaType, ArtifactType, type Asset, type AssetImport, AssetInclusionMode, AssetStatus, AssetUrlType, type AssetUuidSource, type Auth0Options, type Authentication, type AutoAnnotate, type AutoAnnotateParams, type AutoAnnotatePrompt, AutoAnnotateStatus, AutoAnnotateTask, type AutoPromptConfig, type AutoTask, type BaseArea, type BaseComponent, type BaseTask, type Box, type ChangeEvent, ChangeType, type ClassificationTask, type ComponentFinderComponent, type ComponentParams, type Contour, type ContourArea, type ContourFinderComponent, ContourType, type CreateWorkflow, type CreateWorkflowConfig, DEFAULT_PREDICTION_VERSION, DataApiType, DataEndpoint, type DataOptions, type DataSession, type Dataset, type DatasetAutoAnnotate, type DatasetAutoAnnotateCreate, type DatasetAutoAnnotateUpdate, type DatasetCreate, type DatasetHeroAssetUpdate, type DatasetParent, type DatasetUpdate, type DatasetVersion, type DatasetVersionAssetStats, type DownloadResponse, Endpoint, EndpointState, type EvaluateConfig, type EvaluateFilter, type EvaluateRequest, type EvaluateResponse, type EvaluateRunInfo, EvaluationStatus, ExportedBy, EyePop, EyepopLineDecoder, type FileSource, type ForwardComponent, ForwardOperatorType, type HttpClient, type InferRequest, type InferRunInfo, type InferRuntimeConfig, type InferenceComponent, InferenceType, type ListWorkFlowItem, type ListWorkFlowItemMetadata, type ListWorkflowItemMetadataLabels, LoadFromAssetUuidJob, LoadFromJob, LoadMediaStreamJob, type LocalAuth, type Mask, type MediaStreamSource, type Model, type ModelCreate, type ModelExport, ModelExportStatus, ModelFormat, type ModelMetrics, ModelPrecisionType, type ModelSample, ModelStatus, ModelTask, type ModelTrainingProgress, ModelTrainingStage, ModelType, type ModelUpdate, type MotionDetectConfig, MotionModel, type OAuth2Auth, type OnChangeEvent, type Options, type PathSource, type PlatformSupport, type Point2d, type Point3d, type Pop, type PopComponent, PopComponentType, type PopCrop, type PopForward, type PopForwardOperator, type PredictedClass, type PredictedEmbedding, type PredictedKeyPoint, type PredictedKeyPoints, type PredictedMesh, type PredictedMotion, type PredictedObject, type PredictedText, type Prediction, PredictionVersion, type ProcessParams, type ProcessRequest, type QcAiHubExportParams, type RectangleArea, type ResultStream, type Roi, Semaphore, type Session, type SessionAuth, SessionStatus, type Source, Stream, type StreamEvent, type StreamSource, type StreamTime, TaskMode, TaskType, type TimeSpan, type TrackingComponent, TranscodeMode, type TransformInto, TransientPopId, UploadJob, type UrlSource, UserReview, VideoMode, type VlmAbility, type VlmAbilityCreate, type VlmAbilityGroup, type VlmAbilityGroupCreate, type VlmAbilityGroupUpdate, VlmAbilityStatus, type VlmAbilityUpdate, WebrtcBase, WebrtcWhep, WebrtcWhip, WorkerEndpoint, type WorkerOptions, type WorkerSession, type Workflow, WorkflowPhase, EyePop as default, getBaseUrl, readableStreamFromString };
1470
+ export { type AbilityAliasEntry, AbstractJob, type AliasResolution, type Annotation, AnnotationInclusionMode, AnnotationType, type ApiKeyAuth, type Area, AreaType, ArtifactType, type Asset, type AssetImport, AssetInclusionMode, AssetStatus, AssetUrlType, type AssetUuidSource, type Auth0Options, type Authentication, type AutoAnnotate, type AutoAnnotateParams, type AutoAnnotatePrompt, AutoAnnotateStatus, AutoAnnotateTask, type AutoPromptConfig, type AutoTask, type BaseArea, type BaseComponent, type BaseTask, type Box, type ChangeEvent, ChangeType, type ClassificationTask, type ComponentFinderComponent, type ComponentParams, type Contour, type ContourArea, type ContourFinderComponent, ContourType, type CreateWorkflow, type CreateWorkflowConfig, DEFAULT_PREDICTION_VERSION, DataApiType, DataEndpoint, type DataOptions, type DataSession, type Dataset, type DatasetAutoAnnotate, type DatasetAutoAnnotateCreate, type DatasetAutoAnnotateUpdate, type DatasetCreate, type DatasetHeroAssetUpdate, type DatasetParent, type DatasetUpdate, type DatasetVersion, type DatasetVersionAssetStats, type DownloadResponse, Endpoint, EndpointState, type EvaluateConfig, type EvaluateFilter, type EvaluateRequest, type EvaluateResponse, type EvaluateRunInfo, EvaluationStatus, ExportedBy, EyePop, EyepopLineDecoder, type FileSource, type ForwardComponent, ForwardOperatorType, type HttpClient, type InferRequest, type InferRunInfo, type InferRuntimeConfig, type InferenceComponent, InferenceType, type ListWorkFlowItem, type ListWorkFlowItemMetadata, type ListWorkflowItemMetadataLabels, LoadFromAssetUuidJob, LoadFromGroupJob, LoadFromJob, LoadMediaStreamJob, type LocalAuth, type Mask, type MediaStreamSource, type Model, type ModelCreate, type ModelExport, ModelExportStatus, ModelFormat, type ModelMetrics, ModelPrecisionType, type ModelSample, ModelStatus, ModelTask, type ModelTrainingProgress, ModelTrainingStage, ModelType, type ModelUpdate, type MotionDetectConfig, MotionModel, type MultipartContent, type MultipartPart, type OAuth2Auth, type OnChangeEvent, type Options, type PathSource, type PlatformSupport, type Point2d, type Point3d, type Pop, type PopComponent, PopComponentType, type PopCrop, type PopForward, type PopForwardOperator, type PredictedClass, type PredictedEmbedding, type PredictedKeyPoint, type PredictedKeyPoints, type PredictedMesh, type PredictedMotion, type PredictedObject, type PredictedText, type Prediction, PredictionVersion, type ProcessParams, type ProcessRequest, type QcAiHubExportParams, type RectangleArea, type ResultStream, type Roi, Semaphore, type Session, type SessionAuth, type Source, Stream, type StreamEvent, type StreamSource, type StreamTime, TaskMode, TaskType, type TimeSpan, type TrackingComponent, TranscodeMode, type TransformInto, TransientPopId, UploadGroupJob, UploadJob, type UploadSource, type UrlSource, UserReview, VideoMode, type VlmAbility, type VlmAbilityCreate, type VlmAbilityGroup, type VlmAbilityGroupCreate, type VlmAbilityGroupUpdate, VlmAbilityStatus, type VlmAbilityUpdate, WebrtcBase, WebrtcWhep, WebrtcWhip, WorkerEndpoint, type WorkerOptions, type WorkerSession, type Workflow, WorkflowPhase, EyePop as default, encodeMultipartFormData, getBaseUrl, randomMultipartBoundary, readableStreamFromString };
@@ -1099,19 +1099,6 @@ interface WorkerOptions extends Options {
1099
1099
  isLocalMode?: boolean;
1100
1100
  }
1101
1101
 
1102
- declare enum SessionStatus {
1103
- UNKNOWN = "unknown",
1104
- PENDING = "pending",
1105
- RUNNING = "running",
1106
- STOPPED = "stopped",
1107
- FAILED = "failed",
1108
- ERROR = "error",
1109
- PIPELINE_CREATING = "pipeline_creating",
1110
- PIPELINE_OK = "pipeline_ok",
1111
- PIPELINE_CHECKING = "pipeline_checking",
1112
- PIPELINE_ERROR = "pipeline_error",
1113
- UPGRADING = "upgrading"
1114
- }
1115
1102
  declare class WorkerEndpoint extends Endpoint<WorkerEndpoint> {
1116
1103
  private _baseUrl;
1117
1104
  private _pipelineId;
@@ -1153,6 +1140,9 @@ declare class WorkerEndpoint extends Endpoint<WorkerEndpoint> {
1153
1140
  process({ source, componentParams, motionDetect, roi }: ProcessRequest): Promise<ResultStream>;
1154
1141
  private processV1;
1155
1142
  private processV2;
1143
+ uploadGroup(paths: string[], params?: ProcessParams): Promise<ResultStream>;
1144
+ uploadStreamGroup(streams: Array<ReadableStream<Uint8Array> | Blob | BufferSource>, mimeTypes?: string[], params?: ProcessParams): Promise<ResultStream>;
1145
+ loadFromGroup(urls: string[], params?: ProcessParams): Promise<ResultStream>;
1156
1146
  private uploadFile;
1157
1147
  private uploadStream;
1158
1148
  private uploadPath;
@@ -1163,24 +1153,16 @@ declare class WorkerEndpoint extends Endpoint<WorkerEndpoint> {
1163
1153
  private jobStatus;
1164
1154
  protected reconnect(): Promise<WorkerEndpoint>;
1165
1155
  private startWebApiSessionWithPopId;
1166
- private static SESSION_DEAD;
1167
1156
  private static WAIT_FOR_IS_READY;
1168
- private static CHECK_FOR_IS_READY_INTERVAL;
1169
1157
  private sessionReadyTimeoutMs;
1170
- private sessionHealthReady;
1171
1158
  private getComputeSession;
1172
- private getOnDemandComputeSession;
1173
- private getPermanentComputeSession;
1174
1159
  private startTransientPipeline;
1175
1160
  private ensureTransientPipelineStarted;
1176
1161
  private changeTransientPop;
1177
1162
  private deleteTransientPipeline;
1178
- private pipelineIdFromSession;
1179
1163
  protected authorizationHeader(): Promise<string>;
1180
1164
  private computeAuthorizationHeader;
1181
- private setComputeSessionAccessToken;
1182
1165
  private setTransientPipelinePop;
1183
- private sessionCreateBody;
1184
1166
  }
1185
1167
 
1186
1168
  interface DataOptions extends Options {
@@ -1343,7 +1325,20 @@ declare class EyepopLineDecoder {
1343
1325
  flush(): string[];
1344
1326
  }
1345
1327
  declare function readableStreamFromString(s: string): ReadableStream<Uint8Array>;
1328
+ type MultipartContent = ReadableStream<Uint8Array> | Blob | BufferSource | string;
1329
+ interface MultipartPart {
1330
+ name: string;
1331
+ contentType?: string | null;
1332
+ content: MultipartContent;
1333
+ }
1334
+ declare function randomMultipartBoundary(): string;
1335
+ /**
1336
+ * Streams a multipart/form-data body part by part, piping each part's bytes through as they
1337
+ * become available instead of buffering any part's full content in memory first.
1338
+ */
1339
+ declare function encodeMultipartFormData(parts: MultipartPart[], boundary: string): ReadableStream<Uint8Array>;
1346
1340
 
1341
+ type UploadBody = ReadableStream<Uint8Array> | Blob | BufferSource;
1347
1342
  declare class AbstractJob implements ResultStream {
1348
1343
  protected _getSession: () => Promise<WorkerSession>;
1349
1344
  protected _params: ProcessParams;
@@ -1362,12 +1357,14 @@ declare class AbstractJob implements ResultStream {
1362
1357
  }
1363
1358
  declare class UploadJob extends AbstractJob {
1364
1359
  private readonly _uploadStream;
1360
+ private readonly _uploadBodyFactory;
1365
1361
  private readonly _mimeType;
1366
1362
  private readonly _size;
1367
1363
  private readonly _needsFullDuplex;
1368
1364
  private readonly _videoMode;
1369
1365
  get [Symbol.toStringTag](): string;
1370
- constructor(stream: ReadableStream<Uint8Array> | Blob | BufferSource, mimeType: string, size: number | undefined, videoMode: VideoMode | undefined, params: ProcessParams, getSession: () => Promise<WorkerSession>, client: HttpClient, requestLogger: Logger);
1366
+ constructor(stream: UploadBody, mimeType: string, size: number | undefined, videoMode: VideoMode | undefined, params: ProcessParams, getSession: () => Promise<WorkerSession>, client: HttpClient, requestLogger: Logger, uploadBodyFactory?: () => Promise<UploadBody>);
1367
+ private uploadBody;
1371
1368
  protected onEvent(event: StreamEvent): Promise<void>;
1372
1369
  protected startJob(): Promise<Response>;
1373
1370
  }
@@ -1377,6 +1374,22 @@ declare class LoadFromJob extends AbstractJob {
1377
1374
  get [Symbol.toStringTag](): string;
1378
1375
  protected startJob(): Promise<Response>;
1379
1376
  }
1377
+ interface UploadSource {
1378
+ readonly stream: ReadableStream<Uint8Array> | Blob | BufferSource;
1379
+ readonly mimeType: string | null;
1380
+ }
1381
+ declare class UploadGroupJob extends AbstractJob {
1382
+ private readonly _sources;
1383
+ get [Symbol.toStringTag](): string;
1384
+ constructor(sources: UploadSource[], params: ProcessParams, getSession: () => Promise<WorkerSession>, client: HttpClient, requestLogger: Logger);
1385
+ protected startJob(): Promise<Response>;
1386
+ }
1387
+ declare class LoadFromGroupJob extends AbstractJob {
1388
+ private readonly _urls;
1389
+ get [Symbol.toStringTag](): string;
1390
+ constructor(urls: string[], params: ProcessParams, getSession: () => Promise<WorkerSession>, client: HttpClient, requestLogger: Logger);
1391
+ protected startJob(): Promise<Response>;
1392
+ }
1380
1393
  declare class LoadFromAssetUuidJob extends AbstractJob {
1381
1394
  private readonly _assetUuid;
1382
1395
  constructor(assetUuid: string, params: ProcessParams, getSession: () => Promise<WorkerSession>, client: HttpClient, requestLogger: Logger);
@@ -1454,4 +1467,4 @@ declare namespace EyePop {
1454
1467
  function dataEndpoint(opts?: DataOptions): DataEndpoint;
1455
1468
  }
1456
1469
 
1457
- export { type AbilityAliasEntry, AbstractJob, type AliasResolution, type Annotation, AnnotationInclusionMode, AnnotationType, type ApiKeyAuth, type Area, AreaType, ArtifactType, type Asset, type AssetImport, AssetInclusionMode, AssetStatus, AssetUrlType, type AssetUuidSource, type Auth0Options, type Authentication, type AutoAnnotate, type AutoAnnotateParams, type AutoAnnotatePrompt, AutoAnnotateStatus, AutoAnnotateTask, type AutoPromptConfig, type AutoTask, type BaseArea, type BaseComponent, type BaseTask, type Box, type ChangeEvent, ChangeType, type ClassificationTask, type ComponentFinderComponent, type ComponentParams, type Contour, type ContourArea, type ContourFinderComponent, ContourType, type CreateWorkflow, type CreateWorkflowConfig, DEFAULT_PREDICTION_VERSION, DataApiType, DataEndpoint, type DataOptions, type DataSession, type Dataset, type DatasetAutoAnnotate, type DatasetAutoAnnotateCreate, type DatasetAutoAnnotateUpdate, type DatasetCreate, type DatasetHeroAssetUpdate, type DatasetParent, type DatasetUpdate, type DatasetVersion, type DatasetVersionAssetStats, type DownloadResponse, Endpoint, EndpointState, type EvaluateConfig, type EvaluateFilter, type EvaluateRequest, type EvaluateResponse, type EvaluateRunInfo, EvaluationStatus, ExportedBy, EyePop, EyepopLineDecoder, type FileSource, type ForwardComponent, ForwardOperatorType, type HttpClient, type InferRequest, type InferRunInfo, type InferRuntimeConfig, type InferenceComponent, InferenceType, type ListWorkFlowItem, type ListWorkFlowItemMetadata, type ListWorkflowItemMetadataLabels, LoadFromAssetUuidJob, LoadFromJob, LoadMediaStreamJob, type LocalAuth, type Mask, type MediaStreamSource, type Model, type ModelCreate, type ModelExport, ModelExportStatus, ModelFormat, type ModelMetrics, ModelPrecisionType, type ModelSample, ModelStatus, ModelTask, type ModelTrainingProgress, ModelTrainingStage, ModelType, type ModelUpdate, type MotionDetectConfig, MotionModel, type OAuth2Auth, type OnChangeEvent, type Options, type PathSource, type PlatformSupport, type Point2d, type Point3d, type Pop, type PopComponent, PopComponentType, type PopCrop, type PopForward, type PopForwardOperator, type PredictedClass, type PredictedEmbedding, type PredictedKeyPoint, type PredictedKeyPoints, type PredictedMesh, type PredictedMotion, type PredictedObject, type PredictedText, type Prediction, PredictionVersion, type ProcessParams, type ProcessRequest, type QcAiHubExportParams, type RectangleArea, type ResultStream, type Roi, Semaphore, type Session, type SessionAuth, SessionStatus, type Source, Stream, type StreamEvent, type StreamSource, type StreamTime, TaskMode, TaskType, type TimeSpan, type TrackingComponent, TranscodeMode, type TransformInto, TransientPopId, UploadJob, type UrlSource, UserReview, VideoMode, type VlmAbility, type VlmAbilityCreate, type VlmAbilityGroup, type VlmAbilityGroupCreate, type VlmAbilityGroupUpdate, VlmAbilityStatus, type VlmAbilityUpdate, WebrtcBase, WebrtcWhep, WebrtcWhip, WorkerEndpoint, type WorkerOptions, type WorkerSession, type Workflow, WorkflowPhase, EyePop as default, getBaseUrl, readableStreamFromString };
1470
+ export { type AbilityAliasEntry, AbstractJob, type AliasResolution, type Annotation, AnnotationInclusionMode, AnnotationType, type ApiKeyAuth, type Area, AreaType, ArtifactType, type Asset, type AssetImport, AssetInclusionMode, AssetStatus, AssetUrlType, type AssetUuidSource, type Auth0Options, type Authentication, type AutoAnnotate, type AutoAnnotateParams, type AutoAnnotatePrompt, AutoAnnotateStatus, AutoAnnotateTask, type AutoPromptConfig, type AutoTask, type BaseArea, type BaseComponent, type BaseTask, type Box, type ChangeEvent, ChangeType, type ClassificationTask, type ComponentFinderComponent, type ComponentParams, type Contour, type ContourArea, type ContourFinderComponent, ContourType, type CreateWorkflow, type CreateWorkflowConfig, DEFAULT_PREDICTION_VERSION, DataApiType, DataEndpoint, type DataOptions, type DataSession, type Dataset, type DatasetAutoAnnotate, type DatasetAutoAnnotateCreate, type DatasetAutoAnnotateUpdate, type DatasetCreate, type DatasetHeroAssetUpdate, type DatasetParent, type DatasetUpdate, type DatasetVersion, type DatasetVersionAssetStats, type DownloadResponse, Endpoint, EndpointState, type EvaluateConfig, type EvaluateFilter, type EvaluateRequest, type EvaluateResponse, type EvaluateRunInfo, EvaluationStatus, ExportedBy, EyePop, EyepopLineDecoder, type FileSource, type ForwardComponent, ForwardOperatorType, type HttpClient, type InferRequest, type InferRunInfo, type InferRuntimeConfig, type InferenceComponent, InferenceType, type ListWorkFlowItem, type ListWorkFlowItemMetadata, type ListWorkflowItemMetadataLabels, LoadFromAssetUuidJob, LoadFromGroupJob, LoadFromJob, LoadMediaStreamJob, type LocalAuth, type Mask, type MediaStreamSource, type Model, type ModelCreate, type ModelExport, ModelExportStatus, ModelFormat, type ModelMetrics, ModelPrecisionType, type ModelSample, ModelStatus, ModelTask, type ModelTrainingProgress, ModelTrainingStage, ModelType, type ModelUpdate, type MotionDetectConfig, MotionModel, type MultipartContent, type MultipartPart, type OAuth2Auth, type OnChangeEvent, type Options, type PathSource, type PlatformSupport, type Point2d, type Point3d, type Pop, type PopComponent, PopComponentType, type PopCrop, type PopForward, type PopForwardOperator, type PredictedClass, type PredictedEmbedding, type PredictedKeyPoint, type PredictedKeyPoints, type PredictedMesh, type PredictedMotion, type PredictedObject, type PredictedText, type Prediction, PredictionVersion, type ProcessParams, type ProcessRequest, type QcAiHubExportParams, type RectangleArea, type ResultStream, type Roi, Semaphore, type Session, type SessionAuth, type Source, Stream, type StreamEvent, type StreamSource, type StreamTime, TaskMode, TaskType, type TimeSpan, type TrackingComponent, TranscodeMode, type TransformInto, TransientPopId, UploadGroupJob, UploadJob, type UploadSource, type UrlSource, UserReview, VideoMode, type VlmAbility, type VlmAbilityCreate, type VlmAbilityGroup, type VlmAbilityGroupCreate, type VlmAbilityGroupUpdate, VlmAbilityStatus, type VlmAbilityUpdate, WebrtcBase, WebrtcWhep, WebrtcWhip, WorkerEndpoint, type WorkerOptions, type WorkerSession, type Workflow, WorkflowPhase, EyePop as default, encodeMultipartFormData, getBaseUrl, randomMultipartBoundary, readableStreamFromString };