@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.
- package/README.md +11 -70
- package/README.zh.md +11 -69
- package/lib/client.js +107 -6
- package/lib/client.js.map +1 -1
- package/lib/config.js +35 -0
- package/lib/config.js.map +1 -1
- package/lib/object-storage.js +141 -0
- package/lib/object-storage.js.map +1 -0
- package/lib/runtime.js +139 -26
- package/lib/runtime.js.map +1 -1
- package/lib/types/client/index.d.ts +39 -1
- package/lib/types/client/index.d.ts.map +1 -1
- package/lib/types/config.d.ts +33 -0
- package/lib/types/config.d.ts.map +1 -1
- package/lib/types/object-storage.d.ts +54 -0
- package/lib/types/object-storage.d.ts.map +1 -0
- package/lib/types/runtime.d.ts +12 -0
- package/lib/types/runtime.d.ts.map +1 -1
- package/lib/types/upstream.d.ts +1 -0
- package/lib/types/upstream.d.ts.map +1 -1
- package/lib/types/web.d.ts +7 -0
- package/lib/types/web.d.ts.map +1 -1
- package/lib/upstream.js +3 -0
- package/lib/upstream.js.map +1 -1
- package/lib/web.js +35 -6
- package/lib/web.js.map +1 -1
- package/package.json +3 -1
- package/src/client/index.tsx +151 -6
- package/src/config.ts +67 -0
- package/src/object-storage.ts +174 -0
- package/src/runtime.ts +136 -25
- package/src/upstream.ts +4 -0
- package/src/web.ts +45 -7
- package/vendor/agent-vision-toolkit/UPSTREAM_MANIFEST.json +11 -11
- package/vendor/agent-vision-toolkit/__pycache__/detect.cpython-314.pyc +0 -0
- package/vendor/agent-vision-toolkit/__pycache__/ground.cpython-314.pyc +0 -0
- package/vendor/agent-vision-toolkit/__pycache__/vision_client.cpython-314.pyc +0 -0
- package/vendor/agent-vision-toolkit/bin/__pycache__/glancecpython-314.pyc +0 -0
- package/vendor/agent-vision-toolkit/bin/glance +8 -1
- package/vendor/agent-vision-toolkit/detect.py +13 -7
- package/vendor/agent-vision-toolkit/ground.py +43 -18
- package/vendor/agent-vision-toolkit/tests/test_vision_client.py +88 -0
- package/vendor/agent-vision-toolkit/vision_client.py +84 -6
- package/assets/community-group-qr.png +0 -0
- package/assets/logo_aihubmix.png +0 -0
- package/assets/logo_eapi_dark.png +0 -0
- 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
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
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
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
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) {
|