@mengruo/dsh-vision-toolkit 0.1.4 → 0.1.5

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 (47) hide show
  1. package/README.md +11 -70
  2. package/README.zh.md +11 -69
  3. package/lib/client.js +107 -6
  4. package/lib/client.js.map +1 -1
  5. package/lib/config.js +35 -0
  6. package/lib/config.js.map +1 -1
  7. package/lib/object-storage.js +141 -0
  8. package/lib/object-storage.js.map +1 -0
  9. package/lib/runtime.js +139 -26
  10. package/lib/runtime.js.map +1 -1
  11. package/lib/types/client/index.d.ts +39 -1
  12. package/lib/types/client/index.d.ts.map +1 -1
  13. package/lib/types/config.d.ts +33 -0
  14. package/lib/types/config.d.ts.map +1 -1
  15. package/lib/types/object-storage.d.ts +54 -0
  16. package/lib/types/object-storage.d.ts.map +1 -0
  17. package/lib/types/runtime.d.ts +12 -0
  18. package/lib/types/runtime.d.ts.map +1 -1
  19. package/lib/types/upstream.d.ts +1 -0
  20. package/lib/types/upstream.d.ts.map +1 -1
  21. package/lib/types/web.d.ts +7 -0
  22. package/lib/types/web.d.ts.map +1 -1
  23. package/lib/upstream.js +3 -0
  24. package/lib/upstream.js.map +1 -1
  25. package/lib/web.js +35 -6
  26. package/lib/web.js.map +1 -1
  27. package/package.json +3 -1
  28. package/src/client/index.tsx +151 -6
  29. package/src/config.ts +67 -0
  30. package/src/object-storage.ts +174 -0
  31. package/src/runtime.ts +136 -25
  32. package/src/upstream.ts +4 -0
  33. package/src/web.ts +45 -7
  34. package/vendor/agent-vision-toolkit/UPSTREAM_MANIFEST.json +11 -11
  35. package/vendor/agent-vision-toolkit/__pycache__/detect.cpython-314.pyc +0 -0
  36. package/vendor/agent-vision-toolkit/__pycache__/ground.cpython-314.pyc +0 -0
  37. package/vendor/agent-vision-toolkit/__pycache__/vision_client.cpython-314.pyc +0 -0
  38. package/vendor/agent-vision-toolkit/bin/__pycache__/glancecpython-314.pyc +0 -0
  39. package/vendor/agent-vision-toolkit/bin/glance +8 -1
  40. package/vendor/agent-vision-toolkit/detect.py +13 -7
  41. package/vendor/agent-vision-toolkit/ground.py +43 -18
  42. package/vendor/agent-vision-toolkit/tests/test_vision_client.py +88 -0
  43. package/vendor/agent-vision-toolkit/vision_client.py +84 -6
  44. package/assets/community-group-qr.png +0 -0
  45. package/assets/logo_aihubmix.png +0 -0
  46. package/assets/logo_eapi_dark.png +0 -0
  47. package/assets/wechat-reward.png +0 -0
package/lib/config.js CHANGED
@@ -47,6 +47,7 @@ export const Config = z.object({
47
47
  protocol: z.union(['openai', 'anthropic']).default('openai'),
48
48
  anthropicThinking: z.union(['omit', 'disabled', 'adaptive']).default('omit'),
49
49
  userAgent: z.string().default(DEFAULT_VISION_USER_AGENT),
50
+ stream: z.boolean().default(false),
50
51
  }),
51
52
  providers: z.array(z.object({
52
53
  name: z.string(),
@@ -58,6 +59,8 @@ export const Config = z.object({
58
59
  protocol: z.union(['openai', 'anthropic']).default('openai'),
59
60
  anthropicThinking: z.union(['omit', 'disabled', 'adaptive']).default('omit'),
60
61
  userAgent: z.string(),
62
+ stream: z.boolean().default(false),
63
+ uploadViaUrl: z.boolean().default(false),
61
64
  t1Seconds: z.number(),
62
65
  t2Seconds: z.number(),
63
66
  maxImageBytes: z.number(),
@@ -72,6 +75,12 @@ export const Config = z.object({
72
75
  maxImageBytes: z.number().default(4194304),
73
76
  maxImagePixels: z.number().default(20000000),
74
77
  concurrency: z.number().default(4),
78
+ objectStorage: z.object({
79
+ endpoint: z.string().default(''),
80
+ bucket: z.string().default(''),
81
+ credential: z.string().default(''),
82
+ publicBase: z.string().default(''),
83
+ }),
75
84
  runtime: z.object({
76
85
  mode: z.union(['managed', 'external']).default('managed'),
77
86
  agentVisionToolkitPath: z.string(),
@@ -166,6 +175,8 @@ function resolveProvider(input, defaults, label, mode) {
166
175
  if (userAgent.length === 0) {
167
176
  throw new VisionToolkitError('config', `${label}.userAgent must not be empty`);
168
177
  }
178
+ const stream = input.stream === true;
179
+ const uploadViaUrl = input.uploadViaUrl === true;
169
180
  const t1Seconds = input.t1Seconds ?? 90;
170
181
  if (!Number.isInteger(t1Seconds) || t1Seconds < 1 || t1Seconds > MAX_TIMEOUT_SECONDS) {
171
182
  throw new VisionToolkitError('config', `${label}.t1Seconds must be an integer between 1 and ${MAX_TIMEOUT_SECONDS}`);
@@ -202,6 +213,8 @@ function resolveProvider(input, defaults, label, mode) {
202
213
  protocol,
203
214
  anthropicThinking,
204
215
  userAgent,
216
+ stream,
217
+ uploadViaUrl,
205
218
  t1Seconds,
206
219
  t2Seconds,
207
220
  maxImageBytes,
@@ -271,6 +284,20 @@ export function resolveConfig(config = {}) {
271
284
  .map(dir => dir.trim())
272
285
  .filter(dir => dir.length > 0 && dir !== storageDir))];
273
286
  const allowedDirs = (config.allowedDirs ?? []).map(dir => dir.trim()).filter(dir => dir.length > 0);
287
+ const objectStorageInput = config.objectStorage ?? {};
288
+ const objectStorageEndpoint = objectStorageInput.endpoint?.trim() ?? '';
289
+ const objectStorageBucket = objectStorageInput.bucket?.trim() ?? '';
290
+ const objectStoragePublicBase = objectStorageInput.publicBase?.trim();
291
+ let objectStorageCredential;
292
+ const objectStorageCredentialSource = objectStorageInput.credential?.trim();
293
+ if (objectStorageCredentialSource !== undefined && objectStorageCredentialSource.length > 0) {
294
+ try {
295
+ objectStorageCredential = credentialRef(objectStorageCredentialSource);
296
+ }
297
+ catch (error) {
298
+ throw new VisionToolkitError('config', `objectStorage.credential "${objectStorageCredentialSource}" is not a valid credential reference`, { cause: error });
299
+ }
300
+ }
274
301
  const imageInputVariants = config.imageInputVariants ?? {};
275
302
  const variantProviders = (imageInputVariants.providers ?? [])
276
303
  .map(provider => provider.trim())
@@ -292,6 +319,8 @@ export function resolveConfig(config = {}) {
292
319
  protocol: primary.protocol,
293
320
  anthropicThinking: primary.anthropicThinking,
294
321
  userAgent: primary.userAgent,
322
+ stream: primary.stream,
323
+ uploadViaUrl: primary.uploadViaUrl,
295
324
  },
296
325
  providers,
297
326
  language,
@@ -301,6 +330,12 @@ export function resolveConfig(config = {}) {
301
330
  maxImageBytes,
302
331
  maxImagePixels,
303
332
  concurrency,
333
+ objectStorage: {
334
+ endpoint: objectStorageEndpoint,
335
+ bucket: objectStorageBucket,
336
+ ...(objectStorageCredential === undefined ? {} : { credential: objectStorageCredential }),
337
+ ...(objectStoragePublicBase === undefined || objectStoragePublicBase.length === 0 ? {} : { publicBase: objectStoragePublicBase }),
338
+ },
304
339
  runtime: {
305
340
  mode,
306
341
  ...(toolkitPath !== undefined ? { agentVisionToolkitPath: toolkitPath } : {}),
package/lib/config.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * Minimal S3-compatible object storage bridge used by the URL image-transfer
3
+ * path. It uploads one image, resolves a model-reachable URL (a configured
4
+ * public base URL or a temporary presigned URL), and deletes the object after
5
+ * the vision operation settles. It also provides the Settings "test storage"
6
+ * probe (upload → head → delete).
7
+ * @module dsh-vision-toolkit/object-storage
8
+ */
9
+ import { createHash, randomUUID } from 'node:crypto';
10
+ import { readFile } from 'node:fs/promises';
11
+ import { basename } from 'node:path';
12
+ import { DeleteObjectCommand, GetObjectCommand, HeadObjectCommand, PutObjectCommand, S3Client, } from '@aws-sdk/client-s3';
13
+ import { getSignedUrl } from '@aws-sdk/s3-request-presigner';
14
+ import { VisionToolkitError } from "./errors.js";
15
+ /** Whether the required connection fields are present enough to attempt a request. */
16
+ export function isObjectStorageConfigured(settings) {
17
+ return settings.endpoint.length > 0
18
+ && settings.bucket.length > 0
19
+ && settings.accessKeyId.length > 0
20
+ && settings.secretAccessKey.length > 0;
21
+ }
22
+ /** Stable object-key prefix so every upload lives under one deletable namespace. */
23
+ const OBJECT_KEY_PREFIX = 'dsh-vision-toolkit';
24
+ function encodeKey(key) {
25
+ return key.split('/').map(encodeURIComponent).join('/');
26
+ }
27
+ function clientFor(settings) {
28
+ const config = {
29
+ region: 'auto',
30
+ forcePathStyle: true,
31
+ credentials: {
32
+ accessKeyId: settings.accessKeyId,
33
+ secretAccessKey: settings.secretAccessKey,
34
+ },
35
+ };
36
+ if (settings.endpoint.length > 0)
37
+ config.endpoint = settings.endpoint;
38
+ return new S3Client(config);
39
+ }
40
+ function publicError(error) {
41
+ if (error instanceof Error)
42
+ return error.message;
43
+ return String(error);
44
+ }
45
+ /** A small S3-compatible object store bound to one bucket and credential. */
46
+ export class ObjectStorageClient {
47
+ settings;
48
+ client;
49
+ constructor(settings) {
50
+ this.settings = settings;
51
+ }
52
+ requireClient() {
53
+ if (this.client === undefined)
54
+ this.client = clientFor(this.settings);
55
+ return this.client;
56
+ }
57
+ /** Upload one local image file and resolve its model-reachable URL. */
58
+ async uploadImage(localPath, contentType) {
59
+ const body = await readFile(localPath);
60
+ const digest = createHash('sha256').update(body).digest('hex').slice(0, 12);
61
+ const name = basename(localPath).replace(/[^A-Za-z0-9._-]/g, '_');
62
+ const key = `${OBJECT_KEY_PREFIX}/${randomUUID()}-${digest}-${name}`;
63
+ try {
64
+ await this.requireClient().send(new PutObjectCommand({
65
+ Bucket: this.settings.bucket,
66
+ Key: key,
67
+ Body: body,
68
+ ContentType: contentType,
69
+ }));
70
+ }
71
+ catch (error) {
72
+ throw new VisionToolkitError('service', `object storage upload failed: ${publicError(error)}`, { cause: error });
73
+ }
74
+ return { key, url: await this.urlFor(key) };
75
+ }
76
+ /** Resolve the model-reachable URL: public base URL when set, else presigned. */
77
+ async urlFor(key) {
78
+ if (this.settings.publicBase !== undefined && this.settings.publicBase.length > 0) {
79
+ return `${this.settings.publicBase}/${encodeKey(key)}`;
80
+ }
81
+ try {
82
+ return await getSignedUrl(this.requireClient(), new GetObjectCommand({ Bucket: this.settings.bucket, Key: key }), { expiresIn: 3600 });
83
+ }
84
+ catch (error) {
85
+ throw new VisionToolkitError('service', `object storage presign failed: ${publicError(error)}`, { cause: error });
86
+ }
87
+ }
88
+ /** Delete one uploaded object; failures are logged, never fatal to the call. */
89
+ async deleteObject(key) {
90
+ try {
91
+ await this.requireClient().send(new DeleteObjectCommand({
92
+ Bucket: this.settings.bucket,
93
+ Key: key,
94
+ }));
95
+ }
96
+ catch {
97
+ // Best-effort cleanup: a failed delete must not mask the vision result.
98
+ }
99
+ }
100
+ /** Settings "test storage" probe: upload a tiny object, head it, then delete it. */
101
+ async test() {
102
+ if (!isObjectStorageConfigured(this.settings)) {
103
+ throw new VisionToolkitError('config', 'object storage is not fully configured (endpoint, bucket, access key id, and secret access key are required)');
104
+ }
105
+ const key = `${OBJECT_KEY_PREFIX}/.connection-test-${randomUUID()}`;
106
+ const marker = `dsh-vision-toolkit object storage test ${Date.now()}`;
107
+ try {
108
+ await this.requireClient().send(new PutObjectCommand({
109
+ Bucket: this.settings.bucket,
110
+ Key: key,
111
+ Body: marker,
112
+ ContentType: 'text/plain',
113
+ }));
114
+ await this.requireClient().send(new HeadObjectCommand({ Bucket: this.settings.bucket, Key: key }));
115
+ await this.requireClient().send(new DeleteObjectCommand({ Bucket: this.settings.bucket, Key: key }));
116
+ }
117
+ catch (error) {
118
+ throw new VisionToolkitError('service', `object storage test failed: ${publicError(error)}`, { cause: error });
119
+ }
120
+ const urlMode = this.settings.publicBase !== undefined && this.settings.publicBase.length > 0
121
+ ? `public base ${this.settings.publicBase}`
122
+ : 'presigned URL';
123
+ return { detail: `bucket ${this.settings.bucket} reachable; model URLs will use ${urlMode}` };
124
+ }
125
+ }
126
+ /**
127
+ * Split a credential value of the form `accessKeyId:secretAccessKey` into its
128
+ * two parts. The access key id never contains a colon, so splitting on the
129
+ * first colon is safe.
130
+ */
131
+ export function splitObjectStorageCredential(value) {
132
+ const index = value.indexOf(':');
133
+ if (index <= 0) {
134
+ throw new VisionToolkitError('config', 'object storage credential must be "accessKeyId:secretAccessKey"');
135
+ }
136
+ return {
137
+ accessKeyId: value.slice(0, index),
138
+ secretAccessKey: value.slice(index + 1),
139
+ };
140
+ }
141
+ //# sourceMappingURL=object-storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object-storage.js","sourceRoot":"","sources":["../src/object-storage.ts"],"names":[],"mappings":"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"}
package/lib/runtime.js CHANGED
@@ -15,6 +15,7 @@ import { isBuiltInFreeVisionProvider } from "./config.js";
15
15
  import { BUILT_IN_FREE_VISION_KEY } from "./defaults.js";
16
16
  import { evidenceRuntimeFingerprint } from "./evidence-cache.js";
17
17
  import { VisionToolkitError } from "./errors.js";
18
+ import { ObjectStorageClient, splitObjectStorageCredential } from "./object-storage.js";
18
19
  import { assertDistinctOutput, commitStagedDirectory, commitStagedOutput, createPathPolicy, createStagedDirectory, createStagedOutput, isWithin, resolveHtmlFile, resolveInputFile, resolveOutputDirectory, resolveOutputFile, seedStagedDirectory, } from "./paths.js";
19
20
  import { parseCropOutput, parseDominantColorsOutput, parseExtractForegroundOutput, parseHtmlScreenshotOutput, parseLocationOutput, parsePixelDiffOutput, parseTraceOutput, UpstreamAdapter, } from "./upstream.js";
20
21
  import { PLUGIN_VERSION } from "./version.js";
@@ -174,6 +175,16 @@ const FORMAT_BY_EXTENSION = new Map([
174
175
  ['.webp', 'webp'],
175
176
  ]);
176
177
  const HEX_COLOR_PATTERN = /^#[0-9A-F]{6}$/;
178
+ /** MIME type for one analyzed image format, used when uploading to object storage. */
179
+ function imageMimeType(format) {
180
+ switch (format) {
181
+ case 'png': return 'image/png';
182
+ case 'jpeg': return 'image/jpeg';
183
+ case 'gif': return 'image/gif';
184
+ case 'webp': return 'image/webp';
185
+ default: return 'application/octet-stream';
186
+ }
187
+ }
177
188
  /**
178
189
  * Error codes a provider retries against the SAME provider within its
179
190
  * `attempts` budget. Only transient failures are worth re-requesting: a
@@ -491,6 +502,7 @@ export class VisionToolkitRuntime {
491
502
  VISION_API_PROTOCOL: provider.protocol === 'anthropic' ? 'anthropic' : 'chat_completions',
492
503
  VISION_ANTHROPIC_THINKING: provider.anthropicThinking,
493
504
  ...(sslVerify === undefined ? {} : { VISION_SSL_VERIFY: sslVerify }),
505
+ ...(provider.stream ? { VISION_STREAM: '1' } : {}),
494
506
  VISION_USER_AGENT: provider.userAgent,
495
507
  LANG: this.config.language,
496
508
  };
@@ -506,6 +518,8 @@ export class VisionToolkitRuntime {
506
518
  protocol: provider.protocol,
507
519
  anthropicThinking: provider.anthropicThinking,
508
520
  userAgent: provider.userAgent,
521
+ stream: provider.stream,
522
+ uploadViaUrl: provider.uploadViaUrl,
509
523
  })
510
524
  ? { value: BUILT_IN_FREE_VISION_KEY, source: 'built-in' }
511
525
  : await this.ctx.credentials.resolve(provider.credential);
@@ -759,6 +773,83 @@ export class VisionToolkitRuntime {
759
773
  operation.metrics.imageBytes += image.bytes;
760
774
  operation.metrics.imagePixels += image.width * image.height;
761
775
  }
776
+ /** Resolve the configured object storage into a usable client, or undefined. */
777
+ async resolveObjectStorageClient() {
778
+ const objectStorage = this.config.objectStorage;
779
+ if (objectStorage.credential === undefined || objectStorage.endpoint.length === 0 || objectStorage.bucket.length === 0) {
780
+ return undefined;
781
+ }
782
+ let resolved;
783
+ try {
784
+ resolved = await this.ctx.credentials.resolve(objectStorage.credential);
785
+ }
786
+ catch {
787
+ resolved = undefined;
788
+ }
789
+ if (resolved === undefined)
790
+ return undefined;
791
+ let accessKeyId;
792
+ let secretAccessKey;
793
+ try {
794
+ const split = splitObjectStorageCredential(resolved.value);
795
+ accessKeyId = split.accessKeyId;
796
+ secretAccessKey = split.secretAccessKey;
797
+ }
798
+ catch (error) {
799
+ throw new VisionToolkitError('config', 'object storage credential is malformed', { cause: error });
800
+ }
801
+ const settings = {
802
+ endpoint: objectStorage.endpoint,
803
+ bucket: objectStorage.bucket,
804
+ accessKeyId,
805
+ secretAccessKey,
806
+ ...(objectStorage.publicBase === undefined ? {} : { publicBase: objectStorage.publicBase }),
807
+ };
808
+ return new ObjectStorageClient(settings);
809
+ }
810
+ /**
811
+ * Upload the prepared images to object storage and return their URLs plus a
812
+ * cleanup callback, when the primary provider opts into URL transfer and
813
+ * object storage is configured. Returns undefined otherwise (base64 path).
814
+ */
815
+ async maybeTransferImages(pool, images, operation) {
816
+ const primary = pool[0];
817
+ if (primary === undefined || primary.provider.uploadViaUrl !== true)
818
+ return undefined;
819
+ const client = await this.resolveObjectStorageClient();
820
+ if (client === undefined) {
821
+ throw new VisionToolkitError('config', 'uploadViaUrl is enabled but object storage is not configured');
822
+ }
823
+ const keys = [];
824
+ const urls = [];
825
+ try {
826
+ for (const image of images) {
827
+ if (operation.signal.aborted)
828
+ throw new VisionToolkitError('cancelled', 'vision image upload cancelled');
829
+ const uploaded = await client.uploadImage(image.path, imageMimeType(image.format));
830
+ keys.push(uploaded.key);
831
+ urls.push(uploaded.url);
832
+ }
833
+ }
834
+ catch (error) {
835
+ await Promise.allSettled(keys.map(key => client.deleteObject(key)));
836
+ throw error;
837
+ }
838
+ return {
839
+ urls,
840
+ cleanup: async () => {
841
+ await Promise.allSettled(keys.map(key => client.deleteObject(key)));
842
+ },
843
+ };
844
+ }
845
+ /** Settings "test storage" probe: upload → head → delete a tiny marker object. */
846
+ async testObjectStorage() {
847
+ const client = await this.resolveObjectStorageClient();
848
+ if (client === undefined) {
849
+ throw new VisionToolkitError('config', 'object storage is not configured (endpoint, bucket, and credential are required)');
850
+ }
851
+ return client.test();
852
+ }
762
853
  /** Stable gate key for one provider's in-flight request cap. */
763
854
  providerGate(provider) {
764
855
  const key = `${provider.baseUrl}\u0000${provider.model}\u0000${String(provider.credential)}`;
@@ -1091,6 +1182,8 @@ export class VisionToolkitRuntime {
1091
1182
  protocol: env.VISION_API_PROTOCOL,
1092
1183
  anthropicThinking: env.VISION_ANTHROPIC_THINKING,
1093
1184
  sslVerify: env.VISION_SSL_VERIFY ?? null,
1185
+ stream: env.VISION_STREAM === '1',
1186
+ uploadViaUrl: provider.uploadViaUrl,
1094
1187
  userAgent: env.VISION_USER_AGENT,
1095
1188
  credentialSha256: createHash('sha256').update(env.VISION_API_KEY).digest('hex'),
1096
1189
  maxImageBytes: provider.maxImageBytes,
@@ -1203,25 +1296,34 @@ export class VisionToolkitRuntime {
1203
1296
  return cached.result;
1204
1297
  }
1205
1298
  }
1206
- const result = await this.runVisionHedge('glance', [
1207
- ...images.map(image => image.path),
1208
- ...(request.region !== undefined ? ['--region', request.region] : []),
1209
- ...(request.ocr === true ? ['--ocr'] : []),
1210
- ...(request.query !== undefined ? ['-q', request.query] : []),
1211
- ], images, operation, pool);
1212
- const answer = result.stdout.trim();
1213
- if (answer.length === 0)
1214
- throw new VisionToolkitError('output', 'glance: vision API returned an empty description');
1215
- const value = {
1216
- images,
1217
- mode: request.ocr === true ? 'ocr' : request.query !== undefined ? 'qa' : 'describe',
1218
- answer,
1219
- truncated: false,
1220
- };
1221
- if (options.sessionScope !== undefined && cacheKey !== undefined && !operation.signal.aborted) {
1222
- this.glanceCache.set(options.sessionScope, { key: cacheKey, result: value });
1299
+ const transfer = request.region === undefined
1300
+ ? await this.maybeTransferImages(pool, images, operation)
1301
+ : undefined;
1302
+ try {
1303
+ const result = await this.runVisionHedge('glance', [
1304
+ ...(transfer !== undefined ? transfer.urls : images.map(image => image.path)),
1305
+ ...(transfer === undefined && request.region !== undefined ? ['--region', request.region] : []),
1306
+ ...(request.ocr === true ? ['--ocr'] : []),
1307
+ ...(request.query !== undefined ? ['-q', request.query] : []),
1308
+ ], images, operation, pool);
1309
+ const answer = result.stdout.trim();
1310
+ if (answer.length === 0)
1311
+ throw new VisionToolkitError('output', 'glance: vision API returned an empty description');
1312
+ const value = {
1313
+ images,
1314
+ mode: request.ocr === true ? 'ocr' : request.query !== undefined ? 'qa' : 'describe',
1315
+ answer,
1316
+ truncated: false,
1317
+ };
1318
+ if (options.sessionScope !== undefined && cacheKey !== undefined && !operation.signal.aborted) {
1319
+ this.glanceCache.set(options.sessionScope, { key: cacheKey, result: value });
1320
+ }
1321
+ return value;
1322
+ }
1323
+ finally {
1324
+ if (transfer !== undefined)
1325
+ await transfer.cleanup();
1223
1326
  }
1224
- return value;
1225
1327
  });
1226
1328
  }
1227
1329
  validateLocations(elements, width, height) {
@@ -1250,14 +1352,25 @@ export class VisionToolkitRuntime {
1250
1352
  }
1251
1353
  const image = await this.prepareVisionImage(request.image, pool.map(entry => entry.provider), policy, operation);
1252
1354
  this.accountImage(image, operation);
1253
- const result = await this.runVisionHedge(tool, [
1254
- image.path,
1255
- request.target,
1256
- ...(request.region !== undefined ? ['--region', request.region] : []),
1257
- ], [image], operation, pool);
1258
- const elements = parseLocationOutput(result.stdout);
1259
- this.validateLocations(elements, image.width, image.height);
1260
- return { image, elements };
1355
+ const transfer = request.region === undefined
1356
+ ? await this.maybeTransferImages(pool, [image], operation)
1357
+ : undefined;
1358
+ try {
1359
+ const result = await this.runVisionHedge(tool, transfer !== undefined
1360
+ ? [transfer.urls[0], request.target, '--size', `${image.width}x${image.height}`]
1361
+ : [
1362
+ image.path,
1363
+ request.target,
1364
+ ...(request.region !== undefined ? ['--region', request.region] : []),
1365
+ ], [image], operation, pool);
1366
+ const elements = parseLocationOutput(result.stdout);
1367
+ this.validateLocations(elements, image.width, image.height);
1368
+ return { image, elements };
1369
+ }
1370
+ finally {
1371
+ if (transfer !== undefined)
1372
+ await transfer.cleanup();
1373
+ }
1261
1374
  }
1262
1375
  /** ground: locate one named target and return pixel boxes. */
1263
1376
  async ground(request, options) {