ds-harness-remote 0.4.17 → 0.4.18

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 (56) hide show
  1. package/dist/client-runtime.d.ts.map +1 -1
  2. package/dist/client-runtime.js +2 -2
  3. package/dist/client-runtime.js.map +1 -1
  4. package/dist/client.github.js +20 -18
  5. package/dist/client.js +20 -18
  6. package/dist/client.js.map +1 -1
  7. package/dist/codex/codex-image-codec.d.ts +7 -0
  8. package/dist/codex/codex-image-codec.d.ts.map +1 -0
  9. package/dist/codex/codex-image-codec.js +288 -0
  10. package/dist/codex/codex-image-codec.js.map +1 -0
  11. package/dist/codex/virtual-harness.d.ts.map +1 -1
  12. package/dist/codex/virtual-harness.js +1 -267
  13. package/dist/codex/virtual-harness.js.map +1 -1
  14. package/dist/codex-workspace-bridge.d.ts.map +1 -1
  15. package/dist/codex-workspace-bridge.js +31 -5
  16. package/dist/codex-workspace-bridge.js.map +1 -1
  17. package/dist/config.d.ts +13 -2
  18. package/dist/config.d.ts.map +1 -1
  19. package/dist/config.js +22 -2
  20. package/dist/config.js.map +1 -1
  21. package/dist/control-runtime.d.ts +17 -3
  22. package/dist/control-runtime.d.ts.map +1 -1
  23. package/dist/control-runtime.js +4 -2
  24. package/dist/control-runtime.js.map +1 -1
  25. package/dist/harness-api-bridge.d.ts.map +1 -1
  26. package/dist/harness-api-bridge.js +2 -53
  27. package/dist/harness-api-bridge.js.map +1 -1
  28. package/dist/harness-api-history.d.ts +3 -0
  29. package/dist/harness-api-history.d.ts.map +1 -0
  30. package/dist/harness-api-history.js +55 -0
  31. package/dist/harness-api-history.js.map +1 -0
  32. package/dist/harness-remote-bridge.d.ts.map +1 -1
  33. package/dist/harness-remote-bridge.js +40 -2
  34. package/dist/harness-remote-bridge.js.map +1 -1
  35. package/dist/index.d.ts +24 -4
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +835 -583
  38. package/dist/index.js.map +4 -4
  39. package/dist/remote-api-proxy.d.ts +5 -1
  40. package/dist/remote-api-proxy.d.ts.map +1 -1
  41. package/dist/remote-api-proxy.js +74 -2
  42. package/dist/remote-api-proxy.js.map +1 -1
  43. package/dist/remote-typert-gateway.d.ts +6 -1
  44. package/dist/remote-typert-gateway.d.ts.map +1 -1
  45. package/dist/remote-typert-gateway.js +58 -1
  46. package/dist/remote-typert-gateway.js.map +1 -1
  47. package/dist/typert-gateway-contract.d.ts +11 -1
  48. package/dist/typert-gateway-contract.d.ts.map +1 -1
  49. package/dist/typert-gateway-switch.d.ts.map +1 -1
  50. package/dist/typert-gateway-switch.js +65 -4
  51. package/dist/typert-gateway-switch.js.map +1 -1
  52. package/dist/version.d.ts +1 -1
  53. package/dist/version.js +1 -1
  54. package/dsh-plugin.json +1 -1
  55. package/package.json +18 -18
  56. package/public.d.ts +2 -2
@@ -0,0 +1,288 @@
1
+ const CODEX_IMAGE_MEDIA_TYPES = new Set(['image/png', 'image/jpeg', 'image/webp', 'image/gif']);
2
+ const CODEX_IMAGE_ATTACHMENT_PREFIX = 'codex-image:';
3
+ const MAX_CODEX_IMAGE_BASE64 = 288 * 1024 * 1024;
4
+ const DATA_IMAGE_URL = /^data:(image\/(?:png|jpeg|webp|gif));base64,([A-Za-z0-9+/]+={0,2})$/u;
5
+ function string(value) {
6
+ return typeof value === 'string' ? value : undefined;
7
+ }
8
+ function isRecord(value) {
9
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
10
+ }
11
+ function record(value) {
12
+ return isRecord(value) ? value : {};
13
+ }
14
+ export function toolOutputImageBlocks(item) {
15
+ const candidates = [
16
+ record(item.result).content,
17
+ record(item.output).content,
18
+ item.contentItems,
19
+ Array.isArray(item.output) ? item.output : undefined,
20
+ ];
21
+ for (const candidate of candidates) {
22
+ if (!Array.isArray(candidate))
23
+ continue;
24
+ const images = candidate.flatMap(value => {
25
+ const block = record(value);
26
+ return isImageContent(block) && parseImageBlock(block) !== undefined ? [block] : [];
27
+ });
28
+ if (images.length > 0)
29
+ return images;
30
+ }
31
+ return [];
32
+ }
33
+ export function contentBlocks(value, attachmentSeed) {
34
+ if (typeof value === 'string')
35
+ return [{ type: 'text', text: value }];
36
+ if (!Array.isArray(value))
37
+ return [];
38
+ const blocks = [];
39
+ let imageIndex = 0;
40
+ for (const raw of value) {
41
+ if (typeof raw === 'string') {
42
+ blocks.push({ type: 'text', text: raw });
43
+ continue;
44
+ }
45
+ const block = record(raw);
46
+ const image = imageContentBlock(block, attachmentSeed, imageIndex);
47
+ if (image !== undefined) {
48
+ imageIndex += 1;
49
+ blocks.push(image);
50
+ continue;
51
+ }
52
+ const text = string(block.text) ?? string(block.content);
53
+ if (text !== undefined)
54
+ blocks.push({ type: block.type === 'reasoning' ? 'reasoning' : 'text', text });
55
+ }
56
+ return blocks;
57
+ }
58
+ function imageContentBlock(block, attachmentSeed, index) {
59
+ if (!isImageContent(block))
60
+ return undefined;
61
+ const image = parseImageBlock(block);
62
+ if (image === undefined)
63
+ return undefined;
64
+ const dimensions = imageDimensions(image.mediaType, image.data);
65
+ const name = string(block.name);
66
+ const attachment = {
67
+ attachmentId: `${CODEX_IMAGE_ATTACHMENT_PREFIX}${hashString(`${attachmentSeed}:${index}`)}:${index}`,
68
+ mediaType: image.mediaType,
69
+ bytes: base64ByteLength(image.data),
70
+ width: dimensions.width,
71
+ height: dimensions.height,
72
+ ...(name === undefined ? {} : { name }),
73
+ };
74
+ return {
75
+ type: 'image',
76
+ attachment,
77
+ mediaType: image.mediaType,
78
+ data: image.data,
79
+ url: image.url,
80
+ ...(name === undefined ? {} : { name }),
81
+ };
82
+ }
83
+ function isImageContent(block) {
84
+ return block.type === 'image' || block.type === 'input_image';
85
+ }
86
+ function parseImageBlock(block) {
87
+ const url = string(block.url)
88
+ ?? string(block.image_url)
89
+ ?? string(record(block.image_url).url);
90
+ const parsed = url === undefined ? undefined : parseDataImageUrl(url);
91
+ if (parsed !== undefined)
92
+ return parsed;
93
+ const data = string(block.data);
94
+ if (data === undefined || !isCanonicalBase64(data))
95
+ return undefined;
96
+ if (data.length > MAX_CODEX_IMAGE_BASE64)
97
+ return undefined;
98
+ const mediaType = string(block.mediaType) ?? string(block.mimeType) ?? sniffImageMediaType(data);
99
+ return mediaType !== undefined && CODEX_IMAGE_MEDIA_TYPES.has(mediaType)
100
+ ? { mediaType, data, url: `data:${mediaType};base64,${data}` }
101
+ : undefined;
102
+ }
103
+ function parseDataImageUrl(value) {
104
+ const match = DATA_IMAGE_URL.exec(value);
105
+ if (match === null)
106
+ return undefined;
107
+ const mediaType = match[1];
108
+ const data = match[2];
109
+ if (!CODEX_IMAGE_MEDIA_TYPES.has(mediaType) || !isCanonicalBase64(data))
110
+ return undefined;
111
+ return { mediaType, data, url: `data:${mediaType};base64,${data}` };
112
+ }
113
+ export function collectImageBlocks(value, output = []) {
114
+ if (Array.isArray(value)) {
115
+ for (const item of value)
116
+ collectImageBlocks(item, output);
117
+ return output;
118
+ }
119
+ if (!isRecord(value))
120
+ return output;
121
+ if (value.type === 'image')
122
+ output.push(value);
123
+ for (const [key, child] of Object.entries(value)) {
124
+ if (key === 'attachment')
125
+ continue;
126
+ if (key === 'content' || key === 'message' || key === 'inserted' || key === 'chunk' || key === 'block') {
127
+ collectImageBlocks(child, output);
128
+ }
129
+ }
130
+ return output;
131
+ }
132
+ function base64ByteLength(value) {
133
+ const padding = value.endsWith('==') ? 2 : value.endsWith('=') ? 1 : 0;
134
+ return Math.max(1, Math.floor(value.length * 3 / 4) - padding);
135
+ }
136
+ function imageDimensions(mediaType, data) {
137
+ const bytes = base64PrefixBytes(data, 256 * 1024);
138
+ const parsed = mediaType === 'image/png'
139
+ ? pngDimensions(bytes)
140
+ : mediaType === 'image/jpeg'
141
+ ? jpegDimensions(bytes)
142
+ : mediaType === 'image/gif'
143
+ ? gifDimensions(bytes)
144
+ : mediaType === 'image/webp'
145
+ ? webpDimensions(bytes)
146
+ : undefined;
147
+ return parsed ?? { width: 1, height: 1 };
148
+ }
149
+ function pngDimensions(bytes) {
150
+ if (bytes.length < 24
151
+ || bytes[0] !== 0x89
152
+ || bytes[1] !== 0x50
153
+ || bytes[2] !== 0x4e
154
+ || bytes[3] !== 0x47
155
+ || bytes[4] !== 0x0d
156
+ || bytes[5] !== 0x0a
157
+ || bytes[6] !== 0x1a
158
+ || bytes[7] !== 0x0a)
159
+ return undefined;
160
+ return positiveDimensions(readUint32BE(bytes, 16), readUint32BE(bytes, 20));
161
+ }
162
+ function jpegDimensions(bytes) {
163
+ if (bytes.length < 4 || bytes[0] !== 0xff || bytes[1] !== 0xd8)
164
+ return undefined;
165
+ let offset = 2;
166
+ while (offset + 9 < bytes.length) {
167
+ if (bytes[offset] !== 0xff) {
168
+ offset += 1;
169
+ continue;
170
+ }
171
+ const marker = bytes[offset + 1];
172
+ offset += 2;
173
+ if (marker === 0xd8 || marker === 0xd9)
174
+ continue;
175
+ if (offset + 2 > bytes.length)
176
+ return undefined;
177
+ const length = readUint16BE(bytes, offset);
178
+ if (length < 2 || offset + length > bytes.length)
179
+ return undefined;
180
+ if (isJpegSof(marker) && length >= 7) {
181
+ return positiveDimensions(readUint16BE(bytes, offset + 5), readUint16BE(bytes, offset + 3));
182
+ }
183
+ offset += length;
184
+ }
185
+ return undefined;
186
+ }
187
+ function gifDimensions(bytes) {
188
+ if (bytes.length < 10
189
+ || bytes[0] !== 0x47
190
+ || bytes[1] !== 0x49
191
+ || bytes[2] !== 0x46
192
+ || bytes[3] !== 0x38
193
+ || (bytes[4] !== 0x37 && bytes[4] !== 0x39)
194
+ || bytes[5] !== 0x61)
195
+ return undefined;
196
+ return positiveDimensions(readUint16LE(bytes, 6), readUint16LE(bytes, 8));
197
+ }
198
+ function webpDimensions(bytes) {
199
+ if (bytes.length < 30
200
+ || stringFromBytes(bytes, 0, 4) !== 'RIFF'
201
+ || stringFromBytes(bytes, 8, 12) !== 'WEBP')
202
+ return undefined;
203
+ const chunk = stringFromBytes(bytes, 12, 16);
204
+ if (chunk === 'VP8X') {
205
+ return positiveDimensions(1 + readUint24LE(bytes, 24), 1 + readUint24LE(bytes, 27));
206
+ }
207
+ if (chunk === 'VP8L' && bytes[20] === 0x2f) {
208
+ const b0 = bytes[21];
209
+ const b1 = bytes[22];
210
+ const b2 = bytes[23];
211
+ const b3 = bytes[24];
212
+ const width = 1 + b0 + ((b1 & 0x3f) << 8);
213
+ const height = 1 + ((b1 & 0xc0) >> 6) + (b2 << 2) + ((b3 & 0x0f) << 10);
214
+ return positiveDimensions(width, height);
215
+ }
216
+ if (chunk === 'VP8 ' && bytes[23] === 0x9d && bytes[24] === 0x01 && bytes[25] === 0x2a) {
217
+ return positiveDimensions(readUint16LE(bytes, 26) & 0x3fff, readUint16LE(bytes, 28) & 0x3fff);
218
+ }
219
+ return undefined;
220
+ }
221
+ function sniffImageMediaType(data) {
222
+ const bytes = base64PrefixBytes(data, 32);
223
+ if (pngDimensions(bytes) !== undefined)
224
+ return 'image/png';
225
+ if (bytes.length >= 3 && bytes[0] === 0xff && bytes[1] === 0xd8 && bytes[2] === 0xff)
226
+ return 'image/jpeg';
227
+ if (gifDimensions(bytes) !== undefined)
228
+ return 'image/gif';
229
+ if (bytes.length >= 12 && stringFromBytes(bytes, 0, 4) === 'RIFF' && stringFromBytes(bytes, 8, 12) === 'WEBP')
230
+ return 'image/webp';
231
+ return undefined;
232
+ }
233
+ function base64PrefixBytes(value, maxBytes) {
234
+ const chars = value.slice(0, Math.ceil(maxBytes / 3) * 4);
235
+ let binary;
236
+ try {
237
+ binary = atob(chars);
238
+ }
239
+ catch {
240
+ return new Uint8Array();
241
+ }
242
+ const bytes = new Uint8Array(Math.min(binary.length, maxBytes));
243
+ for (let index = 0; index < bytes.length; index += 1)
244
+ bytes[index] = binary.charCodeAt(index);
245
+ return bytes;
246
+ }
247
+ function readUint16BE(bytes, offset) {
248
+ return (bytes[offset] << 8) + bytes[offset + 1];
249
+ }
250
+ function readUint16LE(bytes, offset) {
251
+ return bytes[offset] + (bytes[offset + 1] << 8);
252
+ }
253
+ function readUint24LE(bytes, offset) {
254
+ return bytes[offset] + (bytes[offset + 1] << 8) + (bytes[offset + 2] << 16);
255
+ }
256
+ function readUint32BE(bytes, offset) {
257
+ return (bytes[offset] * 0x1000000) + (bytes[offset + 1] * 0x10000) + (bytes[offset + 2] * 0x100) + bytes[offset + 3];
258
+ }
259
+ function positiveDimensions(width, height) {
260
+ return width > 0 && height > 0 ? { width, height } : undefined;
261
+ }
262
+ function isJpegSof(marker) {
263
+ return (marker >= 0xc0 && marker <= 0xc3)
264
+ || (marker >= 0xc5 && marker <= 0xc7)
265
+ || (marker >= 0xc9 && marker <= 0xcb)
266
+ || (marker >= 0xcd && marker <= 0xcf);
267
+ }
268
+ function stringFromBytes(bytes, start, end) {
269
+ if (bytes.length < end)
270
+ return '';
271
+ let output = '';
272
+ for (let index = start; index < end; index += 1)
273
+ output += String.fromCharCode(bytes[index]);
274
+ return output;
275
+ }
276
+ export function isCanonicalBase64(value) {
277
+ return value.length >= 4 && value.length % 4 === 0
278
+ && /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/u.test(value);
279
+ }
280
+ function hashString(value) {
281
+ let hash = 2166136261;
282
+ for (let index = 0; index < value.length; index += 1) {
283
+ hash ^= value.charCodeAt(index);
284
+ hash = Math.imul(hash, 16777619);
285
+ }
286
+ return (hash >>> 0).toString(16).padStart(8, '0');
287
+ }
288
+ //# sourceMappingURL=codex-image-codec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-image-codec.js","sourceRoot":"","sources":["../../src/codex/codex-image-codec.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"virtual-harness.d.ts","sourceRoot":"","sources":["../../src/codex/virtual-harness.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"virtual-harness.d.ts","sourceRoot":"","sources":["../../src/codex/virtual-harness.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { CodexRemoteClient, deriveCodexCwdWorkspaces, projectCodexThread, } from '@dsh-remote/client-core';
2
2
  import { codexPermissionPresetFromResponse } from './permissions.js';
3
+ import { collectImageBlocks, contentBlocks, isCanonicalBase64, toolOutputImageBlocks, } from './codex-image-codec.js';
3
4
  const CODEX_SESSION_PREFIX = 'codex:';
4
5
  const CODEX_WORKSPACE_PREFIX = 'codex-workspace:';
5
6
  const CODEX_PROVIDER = 'codex';
@@ -16,7 +17,6 @@ const MAX_CODEX_PROMPT_TEXT = 256 * 1024;
16
17
  const MAX_CODEX_IMAGE_BASE64 = 288 * 1024 * 1024;
17
18
  const CODEX_IMAGE_MEDIA_TYPES = new Set(['image/png', 'image/jpeg', 'image/webp', 'image/gif']);
18
19
  const CODEX_IMAGE_ATTACHMENT_PREFIX = 'codex-image:';
19
- const DATA_IMAGE_URL = /^data:(image\/(?:png|jpeg|webp|gif));base64,([A-Za-z0-9+/]+={0,2})$/u;
20
20
  const HOST_WORKSPACE_ENDPOINTS = new Set([
21
21
  'workspaceFiles/list', 'workspaceFiles/stat', 'workspaceFiles/read', 'workspaceFiles/readBytes',
22
22
  'workspaceFiles/readAll', 'workspaceFiles/readRelated', 'terminal/environment', 'terminal/shells',
@@ -1845,268 +1845,6 @@ function messageContent(item, attachmentSeed, fallbackType, fallbackText, supple
1845
1845
  }
1846
1846
  return [{ type: fallbackType, text: fallbackText ?? '' }];
1847
1847
  }
1848
- function toolOutputImageBlocks(item) {
1849
- const candidates = [
1850
- record(item.result).content,
1851
- record(item.output).content,
1852
- item.contentItems,
1853
- Array.isArray(item.output) ? item.output : undefined,
1854
- ];
1855
- for (const candidate of candidates) {
1856
- if (!Array.isArray(candidate))
1857
- continue;
1858
- const images = candidate.flatMap(value => {
1859
- const block = record(value);
1860
- return isImageContent(block) && parseImageBlock(block) !== undefined ? [block] : [];
1861
- });
1862
- if (images.length > 0)
1863
- return images;
1864
- }
1865
- return [];
1866
- }
1867
- function contentBlocks(value, attachmentSeed) {
1868
- if (typeof value === 'string')
1869
- return [{ type: 'text', text: value }];
1870
- if (!Array.isArray(value))
1871
- return [];
1872
- const blocks = [];
1873
- let imageIndex = 0;
1874
- for (const raw of value) {
1875
- if (typeof raw === 'string') {
1876
- blocks.push({ type: 'text', text: raw });
1877
- continue;
1878
- }
1879
- const block = record(raw);
1880
- const image = imageContentBlock(block, attachmentSeed, imageIndex);
1881
- if (image !== undefined) {
1882
- imageIndex += 1;
1883
- blocks.push(image);
1884
- continue;
1885
- }
1886
- const text = string(block.text) ?? string(block.content);
1887
- if (text !== undefined)
1888
- blocks.push({ type: block.type === 'reasoning' ? 'reasoning' : 'text', text });
1889
- }
1890
- return blocks;
1891
- }
1892
- function imageContentBlock(block, attachmentSeed, index) {
1893
- if (!isImageContent(block))
1894
- return undefined;
1895
- const image = parseImageBlock(block);
1896
- if (image === undefined)
1897
- return undefined;
1898
- const dimensions = imageDimensions(image.mediaType, image.data);
1899
- const name = string(block.name);
1900
- const attachment = {
1901
- attachmentId: `${CODEX_IMAGE_ATTACHMENT_PREFIX}${hashString(`${attachmentSeed}:${index}`)}:${index}`,
1902
- mediaType: image.mediaType,
1903
- bytes: base64ByteLength(image.data),
1904
- width: dimensions.width,
1905
- height: dimensions.height,
1906
- ...(name === undefined ? {} : { name }),
1907
- };
1908
- return {
1909
- type: 'image',
1910
- attachment,
1911
- mediaType: image.mediaType,
1912
- data: image.data,
1913
- url: image.url,
1914
- ...(name === undefined ? {} : { name }),
1915
- };
1916
- }
1917
- function isImageContent(block) {
1918
- return block.type === 'image' || block.type === 'input_image';
1919
- }
1920
- function parseImageBlock(block) {
1921
- const url = string(block.url)
1922
- ?? string(block.image_url)
1923
- ?? string(record(block.image_url).url);
1924
- const parsed = url === undefined ? undefined : parseDataImageUrl(url);
1925
- if (parsed !== undefined)
1926
- return parsed;
1927
- const data = string(block.data);
1928
- if (data === undefined || !isCanonicalBase64(data))
1929
- return undefined;
1930
- if (data.length > MAX_CODEX_IMAGE_BASE64)
1931
- return undefined;
1932
- const mediaType = string(block.mediaType) ?? string(block.mimeType) ?? sniffImageMediaType(data);
1933
- return mediaType !== undefined && CODEX_IMAGE_MEDIA_TYPES.has(mediaType)
1934
- ? { mediaType, data, url: `data:${mediaType};base64,${data}` }
1935
- : undefined;
1936
- }
1937
- function parseDataImageUrl(value) {
1938
- const match = DATA_IMAGE_URL.exec(value);
1939
- if (match === null)
1940
- return undefined;
1941
- const mediaType = match[1];
1942
- const data = match[2];
1943
- if (!CODEX_IMAGE_MEDIA_TYPES.has(mediaType) || !isCanonicalBase64(data))
1944
- return undefined;
1945
- return { mediaType, data, url: `data:${mediaType};base64,${data}` };
1946
- }
1947
- function collectImageBlocks(value, output = []) {
1948
- if (Array.isArray(value)) {
1949
- for (const item of value)
1950
- collectImageBlocks(item, output);
1951
- return output;
1952
- }
1953
- if (!isRecord(value))
1954
- return output;
1955
- if (value.type === 'image')
1956
- output.push(value);
1957
- for (const [key, child] of Object.entries(value)) {
1958
- if (key === 'attachment')
1959
- continue;
1960
- if (key === 'content' || key === 'message' || key === 'inserted' || key === 'chunk' || key === 'block') {
1961
- collectImageBlocks(child, output);
1962
- }
1963
- }
1964
- return output;
1965
- }
1966
- function base64ByteLength(value) {
1967
- const padding = value.endsWith('==') ? 2 : value.endsWith('=') ? 1 : 0;
1968
- return Math.max(1, Math.floor(value.length * 3 / 4) - padding);
1969
- }
1970
- function imageDimensions(mediaType, data) {
1971
- const bytes = base64PrefixBytes(data, 256 * 1024);
1972
- const parsed = mediaType === 'image/png'
1973
- ? pngDimensions(bytes)
1974
- : mediaType === 'image/jpeg'
1975
- ? jpegDimensions(bytes)
1976
- : mediaType === 'image/gif'
1977
- ? gifDimensions(bytes)
1978
- : mediaType === 'image/webp'
1979
- ? webpDimensions(bytes)
1980
- : undefined;
1981
- return parsed ?? { width: 1, height: 1 };
1982
- }
1983
- function pngDimensions(bytes) {
1984
- if (bytes.length < 24
1985
- || bytes[0] !== 0x89
1986
- || bytes[1] !== 0x50
1987
- || bytes[2] !== 0x4e
1988
- || bytes[3] !== 0x47
1989
- || bytes[4] !== 0x0d
1990
- || bytes[5] !== 0x0a
1991
- || bytes[6] !== 0x1a
1992
- || bytes[7] !== 0x0a)
1993
- return undefined;
1994
- return positiveDimensions(readUint32BE(bytes, 16), readUint32BE(bytes, 20));
1995
- }
1996
- function jpegDimensions(bytes) {
1997
- if (bytes.length < 4 || bytes[0] !== 0xff || bytes[1] !== 0xd8)
1998
- return undefined;
1999
- let offset = 2;
2000
- while (offset + 9 < bytes.length) {
2001
- if (bytes[offset] !== 0xff) {
2002
- offset += 1;
2003
- continue;
2004
- }
2005
- const marker = bytes[offset + 1];
2006
- offset += 2;
2007
- if (marker === 0xd8 || marker === 0xd9)
2008
- continue;
2009
- if (offset + 2 > bytes.length)
2010
- return undefined;
2011
- const length = readUint16BE(bytes, offset);
2012
- if (length < 2 || offset + length > bytes.length)
2013
- return undefined;
2014
- if (isJpegSof(marker) && length >= 7) {
2015
- return positiveDimensions(readUint16BE(bytes, offset + 5), readUint16BE(bytes, offset + 3));
2016
- }
2017
- offset += length;
2018
- }
2019
- return undefined;
2020
- }
2021
- function gifDimensions(bytes) {
2022
- if (bytes.length < 10
2023
- || bytes[0] !== 0x47
2024
- || bytes[1] !== 0x49
2025
- || bytes[2] !== 0x46
2026
- || bytes[3] !== 0x38
2027
- || (bytes[4] !== 0x37 && bytes[4] !== 0x39)
2028
- || bytes[5] !== 0x61)
2029
- return undefined;
2030
- return positiveDimensions(readUint16LE(bytes, 6), readUint16LE(bytes, 8));
2031
- }
2032
- function webpDimensions(bytes) {
2033
- if (bytes.length < 30
2034
- || stringFromBytes(bytes, 0, 4) !== 'RIFF'
2035
- || stringFromBytes(bytes, 8, 12) !== 'WEBP')
2036
- return undefined;
2037
- const chunk = stringFromBytes(bytes, 12, 16);
2038
- if (chunk === 'VP8X') {
2039
- return positiveDimensions(1 + readUint24LE(bytes, 24), 1 + readUint24LE(bytes, 27));
2040
- }
2041
- if (chunk === 'VP8L' && bytes[20] === 0x2f) {
2042
- const b0 = bytes[21];
2043
- const b1 = bytes[22];
2044
- const b2 = bytes[23];
2045
- const b3 = bytes[24];
2046
- const width = 1 + b0 + ((b1 & 0x3f) << 8);
2047
- const height = 1 + ((b1 & 0xc0) >> 6) + (b2 << 2) + ((b3 & 0x0f) << 10);
2048
- return positiveDimensions(width, height);
2049
- }
2050
- if (chunk === 'VP8 ' && bytes[23] === 0x9d && bytes[24] === 0x01 && bytes[25] === 0x2a) {
2051
- return positiveDimensions(readUint16LE(bytes, 26) & 0x3fff, readUint16LE(bytes, 28) & 0x3fff);
2052
- }
2053
- return undefined;
2054
- }
2055
- function sniffImageMediaType(data) {
2056
- const bytes = base64PrefixBytes(data, 32);
2057
- if (pngDimensions(bytes) !== undefined)
2058
- return 'image/png';
2059
- if (bytes.length >= 3 && bytes[0] === 0xff && bytes[1] === 0xd8 && bytes[2] === 0xff)
2060
- return 'image/jpeg';
2061
- if (gifDimensions(bytes) !== undefined)
2062
- return 'image/gif';
2063
- if (bytes.length >= 12 && stringFromBytes(bytes, 0, 4) === 'RIFF' && stringFromBytes(bytes, 8, 12) === 'WEBP')
2064
- return 'image/webp';
2065
- return undefined;
2066
- }
2067
- function base64PrefixBytes(value, maxBytes) {
2068
- const chars = value.slice(0, Math.ceil(maxBytes / 3) * 4);
2069
- let binary;
2070
- try {
2071
- binary = atob(chars);
2072
- }
2073
- catch {
2074
- return new Uint8Array();
2075
- }
2076
- const bytes = new Uint8Array(Math.min(binary.length, maxBytes));
2077
- for (let index = 0; index < bytes.length; index += 1)
2078
- bytes[index] = binary.charCodeAt(index);
2079
- return bytes;
2080
- }
2081
- function readUint16BE(bytes, offset) {
2082
- return (bytes[offset] << 8) + bytes[offset + 1];
2083
- }
2084
- function readUint16LE(bytes, offset) {
2085
- return bytes[offset] + (bytes[offset + 1] << 8);
2086
- }
2087
- function readUint24LE(bytes, offset) {
2088
- return bytes[offset] + (bytes[offset + 1] << 8) + (bytes[offset + 2] << 16);
2089
- }
2090
- function readUint32BE(bytes, offset) {
2091
- return (bytes[offset] * 0x1000000) + (bytes[offset + 1] * 0x10000) + (bytes[offset + 2] * 0x100) + bytes[offset + 3];
2092
- }
2093
- function positiveDimensions(width, height) {
2094
- return width > 0 && height > 0 ? { width, height } : undefined;
2095
- }
2096
- function isJpegSof(marker) {
2097
- return (marker >= 0xc0 && marker <= 0xc3)
2098
- || (marker >= 0xc5 && marker <= 0xc7)
2099
- || (marker >= 0xc9 && marker <= 0xcb)
2100
- || (marker >= 0xcd && marker <= 0xcf);
2101
- }
2102
- function stringFromBytes(bytes, start, end) {
2103
- if (bytes.length < end)
2104
- return '';
2105
- let output = '';
2106
- for (let index = start; index < end; index += 1)
2107
- output += String.fromCharCode(bytes[index]);
2108
- return output;
2109
- }
2110
1848
  function toolResultEvent(item, turn, step, id, resultText) {
2111
1849
  const type = string(item.type) ?? 'unknown';
2112
1850
  return {
@@ -2404,10 +2142,6 @@ function codexPromptInput(content) {
2404
2142
  }
2405
2143
  return input;
2406
2144
  }
2407
- function isCanonicalBase64(value) {
2408
- return value.length >= 4 && value.length % 4 === 0
2409
- && /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/u.test(value);
2410
- }
2411
2145
  function modelSelectionProjection(selection) {
2412
2146
  return { lastUsed: selection, next: selection };
2413
2147
  }