@yu_robotics/remote-cli 1.6.169 → 1.6.173
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 +21 -2
- package/dist/client/GoalCommand.d.ts +15 -0
- package/dist/client/GoalCommand.d.ts.map +1 -0
- package/dist/client/GoalCommand.js +59 -0
- package/dist/client/GoalCommand.js.map +1 -0
- package/dist/client/MessageHandler.d.ts +3 -0
- package/dist/client/MessageHandler.d.ts.map +1 -1
- package/dist/client/MessageHandler.js +167 -43
- package/dist/client/MessageHandler.js.map +1 -1
- package/dist/client/TaskRecovery.d.ts +3 -1
- package/dist/client/TaskRecovery.d.ts.map +1 -1
- package/dist/client/TaskRecovery.js +9 -4
- package/dist/client/TaskRecovery.js.map +1 -1
- package/dist/client/WebSocketClient.d.ts +2 -1
- package/dist/client/WebSocketClient.d.ts.map +1 -1
- package/dist/client/WebSocketClient.js +8 -1
- package/dist/client/WebSocketClient.js.map +1 -1
- package/dist/executor/CodexAppServerClient.d.ts +1 -0
- package/dist/executor/CodexAppServerClient.d.ts.map +1 -1
- package/dist/executor/CodexAppServerClient.js +12 -4
- package/dist/executor/CodexAppServerClient.js.map +1 -1
- package/dist/executor/CodexAppServerExecutor.d.ts +28 -2
- package/dist/executor/CodexAppServerExecutor.d.ts.map +1 -1
- package/dist/executor/CodexAppServerExecutor.js +517 -30
- package/dist/executor/CodexAppServerExecutor.js.map +1 -1
- package/dist/executor/IExecutor.d.ts +24 -0
- package/dist/executor/IExecutor.d.ts.map +1 -1
- package/dist/executor/codex/CodexGoals.d.ts +6 -0
- package/dist/executor/codex/CodexGoals.d.ts.map +1 -0
- package/dist/executor/codex/CodexGoals.js +49 -0
- package/dist/executor/codex/CodexGoals.js.map +1 -0
- package/dist/executor/codex/CodexImages.d.ts +22 -0
- package/dist/executor/codex/CodexImages.d.ts.map +1 -0
- package/dist/executor/codex/CodexImages.js +201 -0
- package/dist/executor/codex/CodexImages.js.map +1 -0
- package/dist/maintenance/release-notes.json +1 -1
- package/dist/utils/ImageDelivery.d.ts +67 -0
- package/dist/utils/ImageDelivery.d.ts.map +1 -0
- package/dist/utils/ImageDelivery.js +270 -0
- package/dist/utils/ImageDelivery.js.map +1 -0
- package/dist/utils/ImageValidation.d.ts +11 -0
- package/dist/utils/ImageValidation.d.ts.map +1 -0
- package/dist/utils/ImageValidation.js +62 -0
- package/dist/utils/ImageValidation.js.map +1 -0
- package/dist/utils/LocalImageDetector.d.ts +12 -3
- package/dist/utils/LocalImageDetector.d.ts.map +1 -1
- package/dist/utils/LocalImageDetector.js +153 -55
- package/dist/utils/LocalImageDetector.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.CodexImages = void 0;
|
|
37
|
+
exports.validateCodexImageBlock = validateCodexImageBlock;
|
|
38
|
+
exports.codexToolResultText = codexToolResultText;
|
|
39
|
+
const path = __importStar(require("path"));
|
|
40
|
+
const ImageValidation_1 = require("../../utils/ImageValidation");
|
|
41
|
+
const MAX_ENCODED_LENGTH = Math.ceil(ImageValidation_1.MAX_IMAGE_BYTES / 3) * 4;
|
|
42
|
+
const MAX_ATTEMPTS = 32;
|
|
43
|
+
const OMITTED_NOTICE = '\nSome generated images could not be attached automatically (invalid, unsupported, or over the delivery limit).\n';
|
|
44
|
+
const record = (value) => value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
45
|
+
/** Infer absent provider MIME hints, then apply the shared wire-image validator. */
|
|
46
|
+
function validateCodexImageBlock(image) {
|
|
47
|
+
const data = image.data;
|
|
48
|
+
if (typeof data !== 'string' || !data.length || data.length > MAX_ENCODED_LENGTH
|
|
49
|
+
|| data.length % 4 !== 0 || !/^[A-Za-z0-9+/]+={0,2}$/.test(data))
|
|
50
|
+
return null;
|
|
51
|
+
const bytes = Buffer.from(data, 'base64');
|
|
52
|
+
if (bytes.length > ImageValidation_1.MAX_IMAGE_BYTES || bytes.toString('base64') !== data)
|
|
53
|
+
return null;
|
|
54
|
+
const mimeType = (0, ImageValidation_1.sniffImageMime)(bytes);
|
|
55
|
+
return mimeType ? (0, ImageValidation_1.validateImageBlock)({ type: 'image', data, mimeType }) : null;
|
|
56
|
+
}
|
|
57
|
+
function inlineImage(value, requireDataUri = false) {
|
|
58
|
+
if (typeof value !== 'string' || value.length > MAX_ENCODED_LENGTH + 100)
|
|
59
|
+
return null;
|
|
60
|
+
let data = value;
|
|
61
|
+
if (value.startsWith('data:')) {
|
|
62
|
+
const comma = value.indexOf(',');
|
|
63
|
+
if (comma < 0 || comma > 100 || !/^data:image\/[a-z0-9.+-]+;base64,$/i.test(value.slice(0, comma + 1)))
|
|
64
|
+
return null;
|
|
65
|
+
data = value.slice(comma + 1);
|
|
66
|
+
}
|
|
67
|
+
else if (requireDataUri)
|
|
68
|
+
return null;
|
|
69
|
+
// Bytes, rather than an absent or incorrect provider MIME hint, determine the format.
|
|
70
|
+
return validateCodexImageBlock({ type: 'image', data, mimeType: 'image/png' });
|
|
71
|
+
}
|
|
72
|
+
/** One instance belongs to one execute call, including all native goal continuations. */
|
|
73
|
+
class CodexImages {
|
|
74
|
+
attempts = 0;
|
|
75
|
+
seen = new Set();
|
|
76
|
+
warned = false;
|
|
77
|
+
extract(item, turnId) {
|
|
78
|
+
const artifacts = [];
|
|
79
|
+
let omitted = false;
|
|
80
|
+
if (!record(item) || item.status !== 'completed' || item.success === false || item.error || item.failure)
|
|
81
|
+
return { artifacts };
|
|
82
|
+
if (!['imageGeneration', 'mcpToolCall', 'dynamicToolCall'].includes(String(item.type)))
|
|
83
|
+
return { artifacts };
|
|
84
|
+
if (item.type === 'dynamicToolCall' && item.success !== true)
|
|
85
|
+
return { artifacts };
|
|
86
|
+
if (typeof item.id !== 'string' || item.id.length > 1024 || (turnId !== null && turnId.length > 1024)) {
|
|
87
|
+
this.attempts = Math.min(this.attempts + 1, MAX_ATTEMPTS);
|
|
88
|
+
return this.result(artifacts, true);
|
|
89
|
+
}
|
|
90
|
+
const keyPrefix = JSON.stringify([turnId, item.id]);
|
|
91
|
+
const admit = (ordinal) => {
|
|
92
|
+
// Replays and malformed candidates consume the same finite validation budget.
|
|
93
|
+
if (this.attempts >= MAX_ATTEMPTS) {
|
|
94
|
+
omitted = true;
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
this.attempts++;
|
|
98
|
+
const key = `${keyPrefix}:${ordinal}`;
|
|
99
|
+
if (this.seen.has(key))
|
|
100
|
+
return false;
|
|
101
|
+
this.seen.add(key);
|
|
102
|
+
return true;
|
|
103
|
+
};
|
|
104
|
+
const accept = (image) => {
|
|
105
|
+
// The collector owns content deduplication and delivery quota. Parsing a
|
|
106
|
+
// candidate does not prove its callback was publishable or accepted.
|
|
107
|
+
artifacts.push({ image });
|
|
108
|
+
};
|
|
109
|
+
if (item.type === 'imageGeneration') {
|
|
110
|
+
if (admit(0)) {
|
|
111
|
+
const image = inlineImage(item.result);
|
|
112
|
+
if (image)
|
|
113
|
+
accept(image);
|
|
114
|
+
else if (typeof item.savedPath === 'string' && item.savedPath.length > 0 && item.savedPath.length <= 4096
|
|
115
|
+
&& !/[\x00-\x1f\x7f]/.test(item.savedPath) && path.isAbsolute(item.savedPath)) {
|
|
116
|
+
artifacts.push({ path: item.savedPath });
|
|
117
|
+
}
|
|
118
|
+
else
|
|
119
|
+
omitted = true;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
const content = item.type === 'mcpToolCall' ? (record(item.result) ? item.result.content : undefined) : item.contentItems;
|
|
124
|
+
if (Array.isArray(content)) {
|
|
125
|
+
// Bound inspection even when a tool returns many non-image content blocks.
|
|
126
|
+
const length = Math.min(content.length, MAX_ATTEMPTS);
|
|
127
|
+
for (let i = 0; i < length; i++) {
|
|
128
|
+
const block = content[i];
|
|
129
|
+
if (!record(block) || block.type !== (item.type === 'mcpToolCall' ? 'image' : 'inputImage'))
|
|
130
|
+
continue;
|
|
131
|
+
if (!admit(i))
|
|
132
|
+
continue;
|
|
133
|
+
const image = item.type === 'mcpToolCall'
|
|
134
|
+
? (typeof block.mimeType === 'string' && block.mimeType.length <= 80 && /^image\/[a-z0-9.+-]+$/i.test(block.mimeType)
|
|
135
|
+
? inlineImage(block.data) : null)
|
|
136
|
+
: inlineImage(block.imageUrl, true);
|
|
137
|
+
if (image)
|
|
138
|
+
accept(image);
|
|
139
|
+
else
|
|
140
|
+
omitted = true;
|
|
141
|
+
}
|
|
142
|
+
if (content.length > length)
|
|
143
|
+
omitted = true;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return this.result(artifacts, omitted);
|
|
147
|
+
}
|
|
148
|
+
result(artifacts, omitted) {
|
|
149
|
+
if (!omitted || this.warned)
|
|
150
|
+
return { artifacts };
|
|
151
|
+
this.warned = true;
|
|
152
|
+
return { artifacts, notice: OMITTED_NOTICE };
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
exports.CodexImages = CodexImages;
|
|
156
|
+
/** Bounded diagnostic copy: never stringify original media payloads or call toJSON. */
|
|
157
|
+
function codexToolResultText(value) {
|
|
158
|
+
let nodes = 0;
|
|
159
|
+
let remaining = 2000;
|
|
160
|
+
const visited = new Set();
|
|
161
|
+
const copy = (input, depth) => {
|
|
162
|
+
if (++nodes > 64 || depth > 6 || remaining <= 0)
|
|
163
|
+
return '[omitted]';
|
|
164
|
+
if (typeof input === 'string') {
|
|
165
|
+
const prefix = input.slice(0, remaining);
|
|
166
|
+
const text = prefix.replace(/data:(?:image|audio)\/[^\s"'<>]*/gi, '[media omitted]');
|
|
167
|
+
remaining -= prefix.length;
|
|
168
|
+
return text;
|
|
169
|
+
}
|
|
170
|
+
if (input === null || typeof input === 'number' || typeof input === 'boolean')
|
|
171
|
+
return input;
|
|
172
|
+
if (typeof input !== 'object')
|
|
173
|
+
return '[unsupported]';
|
|
174
|
+
if (visited.has(input))
|
|
175
|
+
return '[circular]';
|
|
176
|
+
visited.add(input);
|
|
177
|
+
if (record(input) && ['image', 'inputImage', 'audio', 'inputAudio'].includes(String(input.type)))
|
|
178
|
+
return '[media omitted]';
|
|
179
|
+
if (Array.isArray(input)) {
|
|
180
|
+
const output = [];
|
|
181
|
+
for (let i = 0; i < Math.min(input.length, 32) && nodes < 64 && remaining > 0; i++)
|
|
182
|
+
output.push(copy(input[i], depth + 1));
|
|
183
|
+
return output;
|
|
184
|
+
}
|
|
185
|
+
const output = Object.create(null);
|
|
186
|
+
let keys = 0;
|
|
187
|
+
for (const key in input) {
|
|
188
|
+
if (!Object.prototype.hasOwnProperty.call(input, key))
|
|
189
|
+
continue;
|
|
190
|
+
if (++keys > 32 || nodes >= 64 || remaining <= 0)
|
|
191
|
+
break;
|
|
192
|
+
const name = key.slice(0, 80);
|
|
193
|
+
remaining -= name.length;
|
|
194
|
+
output[name] = ['imageUrl', 'audioUrl'].includes(key) ? '[media omitted]' : copy(input[key], depth + 1);
|
|
195
|
+
}
|
|
196
|
+
return output;
|
|
197
|
+
};
|
|
198
|
+
const safe = copy(value, 0);
|
|
199
|
+
return (typeof safe === 'string' ? safe : JSON.stringify(safe)).slice(0, 2000);
|
|
200
|
+
}
|
|
201
|
+
//# sourceMappingURL=CodexImages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodexImages.js","sourceRoot":"","sources":["../../../src/executor/codex/CodexImages.ts"],"names":[],"mappings":"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"}
|