@poe-platform/safe-bash 0.1.825 → 0.1.827
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/dist/image-ast/index.js +39 -18
- package/dist/pdf-ast/image.js +1 -1
- package/dist/pdf-ast/index.js +1 -1
- package/dist/pdf-ast/vendor/pdfjs-fonts.mjs +9 -3
- package/dist/safe-bash/chunks/{chunk-AGHV53VF.js → chunk-M6XFU6LQ.js} +3 -1
- package/dist/safe-bash/chunks/{chunk-363QOIDR.js → chunk-T6FHWSHM.js} +3 -1
- package/dist/safe-bash/command-chunks/{chunk-ZPBL7TYJ.js → chunk-2JRHCVMQ.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-FMGNXOMV.js → chunk-2L3NMRLG.js} +7 -3
- package/dist/safe-bash/command-chunks/{chunk-DAQO64WC.js → chunk-2YKOJPIW.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-EPYJSPOY.js → chunk-3QCW4VQF.js} +12 -8
- package/dist/safe-bash/command-chunks/{chunk-YRBFNT5B.js → chunk-3YL2TMLA.js} +10 -1
- package/dist/safe-bash/command-chunks/{chunk-5H7ZHP7F.js → chunk-43NDRBKY.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-BBOYR6LV.js → chunk-46GA576V.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-WPT2FCHH.js → chunk-4SLPM2WM.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-7ZQVMPSB.js → chunk-5CAXR62E.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-3DTHX5UU.js → chunk-66653AEZ.js} +40 -14
- package/dist/safe-bash/command-chunks/{chunk-ETFJ4L7F.js → chunk-6OLE6CLV.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-ZIDESNHW.js → chunk-7M3M6FKC.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-2KMNVJB7.js → chunk-A7PKUIJT.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-AVSINNZ6.js → chunk-DEQ47SBQ.js} +5 -5
- package/dist/safe-bash/command-chunks/{chunk-EV7A5FNN.js → chunk-FFFRLPXU.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-4MVQE6CT.js → chunk-FYTBEGSY.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-LFTGMUAV.js → chunk-HQIZR6EU.js} +192 -489
- package/dist/safe-bash/command-chunks/chunk-HS2L7I4N.js +219 -0
- package/dist/safe-bash/command-chunks/{chunk-WKS2PAZL.js → chunk-HUGKO4ZE.js} +10 -1
- package/dist/safe-bash/command-chunks/chunk-IGXH5W5Z.js +111 -0
- package/dist/safe-bash/command-chunks/{chunk-CMJBRGU2.js → chunk-IHQZKUBS.js} +1 -1
- package/dist/safe-bash/command-chunks/chunk-JADJ4BMN.js +1519 -0
- package/dist/safe-bash/command-chunks/{chunk-5AQAWIYK.js → chunk-JEZC5V3B.js} +4 -0
- package/dist/safe-bash/command-chunks/{chunk-YB5TNDY6.js → chunk-K5VJ4NNL.js} +39 -5
- package/dist/safe-bash/command-chunks/{chunk-7RQGRFHJ.js → chunk-KHWDEAE4.js} +2 -2
- package/dist/safe-bash/command-chunks/chunk-L54KVUSY.js +604 -0
- package/dist/safe-bash/command-chunks/{chunk-3NJETNC2.js → chunk-MBXNG6C3.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-HCPEYQKT.js → chunk-N4SH6QY5.js} +285 -302
- package/dist/safe-bash/command-chunks/{chunk-3DID6MQY.js → chunk-OWTQYLID.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-4EA7WI3L.js → chunk-QOOQD6BD.js} +42 -33
- package/dist/safe-bash/command-chunks/{chunk-RQTFK7AV.js → chunk-QZYEI4N6.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-R3SLT3ZX.js → chunk-R6GON4H3.js} +11 -1
- package/dist/safe-bash/command-chunks/{chunk-2GILUQJY.js → chunk-R7ZGDHME.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-HNEWGADJ.js → chunk-RUXOFW5G.js} +7 -6
- package/dist/safe-bash/command-chunks/{chunk-LKAFLJ5L.js → chunk-RWQKX44L.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-PKH57OIC.js → chunk-SG2KOOD4.js} +2 -2
- package/dist/safe-bash/command-chunks/chunk-T4TGJYFV.js +60 -0
- package/dist/safe-bash/command-chunks/chunk-TGSNVLFZ.js +105 -0
- package/dist/safe-bash/command-chunks/{chunk-NXCJNPL3.js → chunk-UCE77LYV.js} +2 -1
- package/dist/safe-bash/command-chunks/{chunk-EWECMOQ5.js → chunk-UIHPHIKI.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-XSZNL3GV.js → chunk-UJPWPRVB.js} +191 -146
- package/dist/safe-bash/command-chunks/{chunk-E5CDHXFA.js → chunk-VOR6YDZC.js} +26 -1
- package/dist/safe-bash/command-chunks/chunk-VSNVYOK2.js +30 -0
- package/dist/safe-bash/command-chunks/{chunk-4XYGJB24.js → chunk-VTH4AORO.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-W5LH7D23.js → chunk-WKKJJBJQ.js} +8 -8
- package/dist/safe-bash/command-chunks/{chunk-OLXMWQJ5.js → chunk-WRO3PB2M.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-RUAGHZNF.js → chunk-X5ODTF3E.js} +7 -5
- package/dist/safe-bash/command-chunks/{chunk-LH4VBNF6.js → chunk-XGTSP2CP.js} +84 -16
- package/dist/safe-bash/command-chunks/{chunk-K576GZED.js → chunk-XTHKXCF2.js} +2 -2
- package/dist/safe-bash/command-chunks/{chunk-J3VS55K4.js → chunk-YHRESVJ7.js} +9 -3
- package/dist/safe-bash/command-chunks/{chunk-UWIDPTOB.js → chunk-YSCKOUQP.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-UYNJF5QN.js → chunk-ZALAWNOE.js} +76 -122
- package/dist/safe-bash/command-chunks/{chunk-OT75C5YS.js → chunk-ZYXKW2K7.js} +1 -1
- package/dist/safe-bash/command-chunks/{pdf-renderer-346WYKSZ.js → pdf-renderer-5QWOVFA4.js} +1 -1
- package/dist/safe-bash/command-chunks/{prompt-tool-debug-3POFNRYP.js → prompt-tool-debug-G7ATE7D5.js} +6 -4
- package/dist/safe-bash/commands/llm/index.browser.js +5 -1
- package/dist/safe-bash/commands/llm/index.js +1 -1
- package/dist/safe-bash/commands/python/executor.browser.js +3 -1
- package/dist/safe-bash/commands/python/executor.js +1 -1
- package/dist/safe-bash/commands/python/index.browser.js +5 -1
- package/dist/safe-bash/commands/python/index.js +1 -1
- package/dist/safe-bash/core.browser.js +2 -2
- package/dist/safe-bash/full-core.browser.js +10 -2
- package/dist/safe-bash-command-awk/awk-runtime.js +2 -2
- package/dist/safe-bash-command-awk/awk-syntax.js +1 -1
- package/dist/safe-bash-command-awk/awk.js +3 -3
- package/dist/safe-bash-command-awk/index.js +3 -3
- package/dist/safe-bash-command-gpg/index.js +11 -3
- package/dist/safe-bash-command-imagemagick/index.js +2 -2
- package/dist/safe-bash-command-llm/collections.js +6 -4
- package/dist/safe-bash-command-llm/command.js +4 -4
- package/dist/safe-bash-command-llm/import-json-document.d.ts +9 -2
- package/dist/safe-bash-command-llm/index.d.ts +2 -1
- package/dist/safe-bash-command-llm/index.js +10 -4
- package/dist/safe-bash-command-llm/loader-provider.d.ts +5 -0
- package/dist/safe-bash-command-mcp/index.js +10 -13
- package/dist/safe-bash-command-pdftoppm/index.js +2 -2
- package/dist/safe-bash-command-playwright-cli/index.js +2 -2
- package/dist/safe-bash-command-playwright-cli/playwright/ability-execution.d.ts +1 -0
- package/dist/safe-bash-command-playwright-cli/playwright/ability-execution.js +1 -1
- package/dist/safe-bash-command-playwright-cli/playwright/controller.d.ts +2 -0
- package/dist/safe-bash-command-playwright-cli/playwright/controller.js +2 -2
- package/dist/safe-bash-command-playwright-cli/playwright/index.js +2 -2
- package/dist/safe-bash-command-python/build-backend.d.ts +2 -0
- package/dist/safe-bash-command-python/cache.d.ts +1 -1
- package/dist/safe-bash-command-python/executor.d.ts +5 -2
- package/dist/safe-bash-command-python/executor.js +11 -6
- package/dist/safe-bash-command-python/host-capabilities.js +1 -1
- package/dist/safe-bash-command-python/index.js +11 -6
- package/dist/safe-bash-command-python/jspi.js +5 -3
- package/dist/safe-bash-command-python/manifest-file.d.ts +44 -0
- package/dist/safe-bash-command-python/manifest.d.ts +45 -0
- package/dist/safe-bash-command-python/provisioning.d.ts +20 -1
- package/dist/safe-bash-command-python/provisioning.js +3 -2
- package/dist/safe-bash-command-python/reply.js +7 -11
- package/dist/safe-bash-command-python/source-archive.js +2 -2
- package/dist/safe-bash-command-python/source-zip.js +2 -2
- package/dist/safe-bash-command-python/worker.js +34 -21
- package/dist/safe-bash-command-sqlite3/engine.d.ts +4 -0
- package/dist/safe-bash-command-sqlite3/index.js +174 -18
- package/dist/safe-bash-command-svgo/index.js +1 -1
- package/dist/safe-bash-command-tar/create.js +3 -3
- package/dist/safe-bash-command-tar/extract.js +3 -3
- package/dist/safe-bash-command-tar/index.js +5 -5
- package/dist/safe-bash-command-tar/modes.js +5 -5
- package/dist/safe-bash-command-tar/options.d.ts +1 -1
- package/dist/safe-bash-command-tar/options.js +1 -1
- package/dist/safe-bash-command-tar/stream.js +1 -1
- package/dist/safe-bash-command-wkhtmltopdf/index.js +1 -1
- package/dist/safe-bash-command-xan/argv.js +1 -1
- package/dist/safe-bash-command-xan/commands.js +3 -3
- package/dist/safe-bash-command-xan/index.js +3 -3
- package/dist/safe-bash-command-xan/io.js +2 -2
- package/dist/safe-bash-compression-engine/bounded-codec.js +3 -3
- package/dist/safe-bash-compression-engine/codec-loader.js +2 -2
- package/dist/safe-bash-compression-engine/files.js +6 -6
- package/dist/safe-bash-compression-engine/index.js +5 -5
- package/dist/safe-bash-compression-engine/operand.js +6 -6
- package/dist/safe-bash-compression-engine/options.js +1 -1
- package/dist/safe-bash-compression-engine/stream.js +5 -5
- package/dist/safe-bash-compression-engine/zstd-decode.js +4 -4
- package/dist/safe-bash-contracts/filesystem-descriptor.js +1 -1
- package/dist/safe-bash-contracts/filesystem-output.js +1 -1
- package/dist/safe-bash-csv-engine/index.js +6 -6
- package/dist/safe-bash-csv-engine/python-codec-aliases.js +1 -1
- package/dist/safe-bash-csv-engine/python-codepages.js +3 -3
- package/dist/safe-bash-csv-engine/python-file-codepages.js +2 -2
- package/dist/safe-bash-csv-engine/python-utf16.js +4 -4
- package/dist/safe-bash-csv-engine/text-decoder.js +6 -6
- package/dist/safe-bash-graphviz-engine/index.js +1 -1
- package/dist/safe-bash-pager-engine/index.js +2 -2
- package/dist/safe-bash-query-engine/capture.js +3 -3
- package/dist/safe-bash-query-engine/delpaths.js +3 -3
- package/dist/safe-bash-query-engine/formats.js +2 -2
- package/dist/safe-bash-query-engine/index.js +10 -10
- package/dist/safe-bash-query-engine/indices.js +3 -3
- package/dist/safe-bash-query-engine/input.d.ts +3 -3
- package/dist/safe-bash-query-engine/input.js +1 -1
- package/dist/safe-bash-query-engine/interpreter.js +9 -9
- package/dist/safe-bash-query-engine/query-core.js +10 -10
- package/dist/safe-bash-query-engine/regex.js +4 -4
- package/dist/safe-bash-query-engine/splits.js +5 -5
- package/dist/safe-bash-query-engine/values.js +2 -2
- package/package.json +2 -2
- package/dist/safe-bash/command-chunks/chunk-OOYVZAWL.js +0 -90
- package/dist/safe-bash/command-chunks/chunk-RZOHZGEZ.js +0 -772
- package/dist/safe-bash/command-chunks/chunk-WIUEM7HP.js +0 -58
- package/dist/safe-bash/command-chunks/chunk-WY6THI6J.js +0 -673
- package/dist/safe-bash/command-chunks/chunk-ZERCTWUI.js +0 -467
package/dist/image-ast/index.js
CHANGED
|
@@ -3791,6 +3791,21 @@ var EntropyWindow = class {
|
|
|
3791
3791
|
let page = await this.cache.page(this, offset);
|
|
3792
3792
|
page.bytes[offset % 4096] = value, page.dirty = !0;
|
|
3793
3793
|
}
|
|
3794
|
+
/** Own bounded spans; never retain a borrowed backing page across cache I/O. */
|
|
3795
|
+
async read(offset, length) {
|
|
3796
|
+
let bytes = new Uint8Array(Number.isInteger(offset) && offset >= 0 ? Math.max(0, Math.min(length, this.length - offset)) : 0);
|
|
3797
|
+
for (let used = 0; used < bytes.length; ) {
|
|
3798
|
+
let page = await this.cache.page(this, offset + used), local = (offset + used) % 4096, count = Math.min(bytes.length - used, page.bytes.length - local);
|
|
3799
|
+
bytes.set(page.bytes.subarray(local, local + count), used), used += count;
|
|
3800
|
+
}
|
|
3801
|
+
return bytes;
|
|
3802
|
+
}
|
|
3803
|
+
async write(offset, bytes) {
|
|
3804
|
+
for (let used = 0; used < bytes.length; ) {
|
|
3805
|
+
let page = await this.cache.page(this, offset + used), local = (offset + used) % 4096, count = Math.min(bytes.length - used, page.bytes.length - local);
|
|
3806
|
+
page.bytes.set(bytes.subarray(used, used + count), local), page.dirty = !0, used += count;
|
|
3807
|
+
}
|
|
3808
|
+
}
|
|
3794
3809
|
async coefficients(offset) {
|
|
3795
3810
|
let block = new Int16Array(Math.max(0, Math.min(64, (this.length - offset) / 2)));
|
|
3796
3811
|
for (let i = 0; i < block.length; i++)
|
|
@@ -3942,8 +3957,7 @@ async function decodeJpegToStorage(source, storage, signal, options) {
|
|
|
3942
3957
|
let stride = comp.blocksX * blockStep, dst = useStripDecode ? comp.stripPixels : comp.pixels, baseRow = (useStripDecode ? stripVy : by) * blockStep, baseCol = bx * blockStep;
|
|
3943
3958
|
for (let y = 0; y < blockStep; y++) {
|
|
3944
3959
|
let dstOff = (baseRow + y) * stride + baseCol, srcOff = y * blockStep;
|
|
3945
|
-
|
|
3946
|
-
await dst.set(dstOff + x, blockOut[srcOff + x]);
|
|
3960
|
+
await dst.write(dstOff, blockOut.subarray(srcOff, srcOff + blockStep));
|
|
3947
3961
|
}
|
|
3948
3962
|
}, mcuCounter = 0, restartCounter = 0, consumeRestart = async () => {
|
|
3949
3963
|
let scanPos = scan.position;
|
|
@@ -3988,24 +4002,31 @@ async function decodeJpegToStorage(source, storage, signal, options) {
|
|
|
3988
4002
|
mcuCounter++;
|
|
3989
4003
|
}
|
|
3990
4004
|
if (useStripDecode && outRgba) {
|
|
3991
|
-
let yStart = my * mcuRowH, yEnd = Math.min(outHeight, yStart + mcuRowH),
|
|
3992
|
-
|
|
3993
|
-
let
|
|
3994
|
-
for (let
|
|
3995
|
-
let
|
|
3996
|
-
for (let
|
|
3997
|
-
let
|
|
3998
|
-
|
|
4005
|
+
let yStart = my * mcuRowH, yEnd = Math.min(outHeight, yStart + mcuRowH), row = new Uint8Array(4096), count = components.length === 1 ? 1 : components.length === 4 ? 4 : components.length >= 3 ? 3 : 0, work = 0;
|
|
4006
|
+
for (let y = yStart; y < yEnd; y++) {
|
|
4007
|
+
let ly = y - yStart;
|
|
4008
|
+
for (let xStart = 0; xStart < outWidth; xStart += 1024) {
|
|
4009
|
+
let xEnd = Math.min(outWidth, xStart + 1024), planes = [];
|
|
4010
|
+
for (let plane = 0; plane < count; plane++) {
|
|
4011
|
+
let comp = components[plane], start = comp.h === maxH ? xStart : Math.floor(xStart * comp.h / maxH), end = comp.h === maxH ? xEnd - 1 : Math.floor((xEnd - 1) * comp.h / maxH), rowIndex = comp.v === maxV ? ly : Math.floor(ly * comp.v / maxV);
|
|
4012
|
+
planes.push({ bytes: await comp.stripPixels.read(rowIndex * comp.blocksX * blockStep + start, end - start + 1), start, h: comp.h });
|
|
3999
4013
|
}
|
|
4000
|
-
|
|
4001
|
-
|
|
4002
|
-
|
|
4003
|
-
|
|
4004
|
-
|
|
4005
|
-
|
|
4006
|
-
|
|
4007
|
-
|
|
4014
|
+
let sample = (plane, x) => {
|
|
4015
|
+
let entry = planes[plane];
|
|
4016
|
+
return entry.bytes[(entry.h === maxH ? x : Math.floor(x * entry.h / maxH)) - entry.start] ?? NaN;
|
|
4017
|
+
};
|
|
4018
|
+
for (let x = xStart; x < xEnd; x++) {
|
|
4019
|
+
let at = (x - xStart) * 4;
|
|
4020
|
+
if (components.length === 1) {
|
|
4021
|
+
let g = sample(0, x);
|
|
4022
|
+
row[at] = g, row[at + 1] = g, row[at + 2] = g;
|
|
4023
|
+
} else if (components.length >= 3) {
|
|
4024
|
+
let rgb = jpegColor(sample(0, x), sample(1, x) - 128, sample(2, x) - 128, components.length === 4 ? sample(3, x) : void 0, !0);
|
|
4025
|
+
row[at] = rgb & 255, row[at + 1] = rgb >>> 8 & 255, row[at + 2] = rgb >>> 16;
|
|
4026
|
+
}
|
|
4027
|
+
row[at + 3] = 255;
|
|
4008
4028
|
}
|
|
4029
|
+
(components.length === 1 || components.length >= 3) && await outRgba.write((y * outWidth + xStart) * 4, row.subarray(0, (xEnd - xStart) * 4)), work += xEnd - xStart, work >= 16384 && (await defaultRuntime.yieldTurn(signal), work = 0);
|
|
4009
4030
|
}
|
|
4010
4031
|
}
|
|
4011
4032
|
}
|
package/dist/pdf-ast/image.js
CHANGED
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
PdfRetainedReader,
|
|
6
6
|
renderPdfPageToPng,
|
|
7
7
|
renderRetainedPagePixels
|
|
8
|
-
} from "../safe-bash/command-chunks/chunk-
|
|
8
|
+
} from "../safe-bash/command-chunks/chunk-YHRESVJ7.js";
|
|
9
9
|
import "../safe-bash/command-chunks/chunk-E6SK3OU2.js";
|
|
10
10
|
import "../safe-bash/command-chunks/chunk-NUGQQDGE.js";
|
|
11
11
|
import "../safe-bash/command-chunks/chunk-65DS4IOB.js";
|
package/dist/pdf-ast/index.js
CHANGED
|
@@ -257,7 +257,7 @@ import {
|
|
|
257
257
|
transformNodeStringsAndStreamsSteps,
|
|
258
258
|
transformPathSegment,
|
|
259
259
|
transformPoint
|
|
260
|
-
} from "../safe-bash/command-chunks/chunk-
|
|
260
|
+
} from "../safe-bash/command-chunks/chunk-YHRESVJ7.js";
|
|
261
261
|
import "../safe-bash/command-chunks/chunk-E6SK3OU2.js";
|
|
262
262
|
import "../safe-bash/command-chunks/chunk-NUGQQDGE.js";
|
|
263
263
|
import "../safe-bash/command-chunks/chunk-65DS4IOB.js";
|
|
@@ -10733,11 +10733,13 @@ var Commands = class {
|
|
|
10733
10733
|
this.onAllocation = onAllocation;
|
|
10734
10734
|
}
|
|
10735
10735
|
cmds = [];
|
|
10736
|
+
hasPoints = false;
|
|
10736
10737
|
transformStack = [];
|
|
10737
10738
|
currentTransform = [1, 0, 0, 1, 0, 0];
|
|
10738
10739
|
add(cmd, args) {
|
|
10739
10740
|
this.onAllocation?.(64 + (args?.length ?? 0) * 16);
|
|
10740
10741
|
if (args) {
|
|
10742
|
+
this.hasPoints = true;
|
|
10741
10743
|
const { currentTransform } = this;
|
|
10742
10744
|
for (let i = 0, ii = args.length; i < ii; i += 2) {
|
|
10743
10745
|
Util.applyTransform(args, currentTransform, i);
|
|
@@ -10822,7 +10824,9 @@ var CompiledFont = class _CompiledFont {
|
|
|
10822
10824
|
const cmds = new Commands(onAllocation);
|
|
10823
10825
|
cmds.transform(fontMatrix.slice());
|
|
10824
10826
|
this.compileGlyphImpl(code, cmds, glyphId);
|
|
10825
|
-
cmds.
|
|
10827
|
+
if (cmds.hasPoints) {
|
|
10828
|
+
cmds.add(DrawOPS.closePath);
|
|
10829
|
+
}
|
|
10826
10830
|
return cmds.getPath();
|
|
10827
10831
|
}
|
|
10828
10832
|
compileGlyphImpl() {
|
|
@@ -10862,8 +10866,10 @@ var Type2Compiled = class extends CompiledFont {
|
|
|
10862
10866
|
cmds.onFrameAllocation = onAllocation;
|
|
10863
10867
|
cmds.transform(matrix.slice());
|
|
10864
10868
|
yield* compileCharString(code, cmds, this, glyphId);
|
|
10865
|
-
cmds.
|
|
10866
|
-
|
|
10869
|
+
if (cmds.hasPoints) {
|
|
10870
|
+
cmds.add(DrawOPS.closePath);
|
|
10871
|
+
yield cmds.getPath();
|
|
10872
|
+
}
|
|
10867
10873
|
}
|
|
10868
10874
|
compileGlyphImpl(code, cmds, glyphId) {
|
|
10869
10875
|
for (const ignored of compileCharString(code, cmds, this, glyphId)) { /* synchronous collector */ }
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// packages/safe-bash/src/commands/python/index.ts
|
|
2
|
-
import { PythonFailure, PythonPackageConflictError, createPythonBuildBackend, createPythonBuildDependencies, createPythonBuildEnvironment, createPythonCommands, createPythonExecutorCommands, createPythonExecutorPool, createPythonHostBridge, createPythonJspiAssets, createPythonJspiExecutor, createPythonJspiNativeCall, createPythonJspiStatResult, createPythonJspiTrampoline, createPythonLlmCapability, createPythonLlmFragmentLoader, createPythonLlmLoaderDiscovery, createPythonLlmLoaderProvider, createPythonLlmPackageManager, createPythonLlmTemplateLoader, createPythonLlmToolLoader, createPythonPackageCache, createPythonPackageEnvironment, createPythonPackageManifestStore, createPythonShellCapability, createPythonSourcePackageEnvironment, createPythonSourceSnapshot, inspectPythonCapabilities, installPythonLlmDependencies, installPythonLlmPackages, publishPythonBuildWheel, pythonCommands, pythonDocumentPackages, pythonExecutorCommands, pythonHostFailureCode, pythonLlmDependencies, pythonLlmPackages } from "../../safe-bash-command-python/index.js";
|
|
2
|
+
import { PythonFailure, PythonPackageConflictError, createPythonBuildBackend, createPythonBuildDependencies, createPythonBuildEnvironment, createPythonCommands, createPythonExecutorCommands, createPythonExecutorPool, createPythonHostBridge, createPythonJspiAssets, createPythonJspiExecutor, createPythonJspiNativeCall, createPythonJspiStatResult, createPythonJspiTrampoline, createPythonLlmCapability, createPythonLlmFragmentLoader, createPythonLlmLoaderDiscovery, createPythonLlmLoaderProvider, createPythonLlmPackageManager, createPythonLlmTemplateLoader, createPythonLlmToolLoader, createPythonPackageCache, createPythonPackageEnvironment, createPythonPackageFileManifestStore, createPythonPackageManifestStore, createPythonPackageStreamingManifestStore, createPythonShellCapability, createPythonSourcePackageEnvironment, createPythonSourceSnapshot, inspectPythonCapabilities, installPythonLlmDependencies, installPythonLlmPackages, publishPythonBuildWheel, pythonCommands, pythonDocumentPackages, pythonExecutorCommands, pythonHostFailureCode, pythonLlmDependencies, pythonLlmPackages } from "../../safe-bash-command-python/index.js";
|
|
3
3
|
|
|
4
4
|
export {
|
|
5
5
|
PythonFailure,
|
|
@@ -25,7 +25,9 @@ export {
|
|
|
25
25
|
createPythonLlmToolLoader,
|
|
26
26
|
createPythonPackageCache,
|
|
27
27
|
createPythonPackageEnvironment,
|
|
28
|
+
createPythonPackageFileManifestStore,
|
|
28
29
|
createPythonPackageManifestStore,
|
|
30
|
+
createPythonPackageStreamingManifestStore,
|
|
29
31
|
createPythonShellCapability,
|
|
30
32
|
createPythonSourcePackageEnvironment,
|
|
31
33
|
createPythonSourceSnapshot,
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
// packages/safe-bash/src/commands/llm/index.ts
|
|
2
|
-
import { LlmCancelToolCall, LlmLoaderLookupError, createElevenLabsProvider, createLlmCommand, createLlmCommands, createLlmConfiguration, createLlmFragmentLoaders, createLlmFragmentSource, createLlmInputBudget, createLlmService, createLlmSpool, createLlmTemplateStore, createLlmToolRegistry, createLlmUrlFragmentSource, createLlmUrlSource, createOpenAiProvider, encodeLlmBase64, evaluateLlmTemplate, executeLlmToolCalls, findExtractedRange, getLlmAttachmentUrlId, getLlmFragmentPrefix, getLlmModelAliases, llmCommands, llmReferenceVersion, llmTemplateUsesInput, loadLlmPluginFragments, openAiChatOptions, parseLlmSchemaDsl, resolveLlmSchemaInput, resolveLlmUrlAttachment, selectLlmModelByQuery, selectLlmTools, serializeLlmJsonString, serializeLlmJsonValue, serializeLlmTokenUsage, serializeOpenAiChatRequest, streamLlmToolChain, templateYaml, validateLlmTemplateParameters, validateModelOptions } from "../../safe-bash-command-llm/index.js";
|
|
2
|
+
import { LlmCancelToolCall, LlmLoaderLookupError, LlmPluginExit, createElevenLabsProvider, createLlmCommand, createLlmCommands, createLlmConfiguration, createLlmFragmentLoaders, createLlmFragmentSource, createLlmInputBudget, createLlmService, createLlmSpool, createLlmTemplateStore, createLlmToolRegistry, createLlmUrlFragmentSource, createLlmUrlSource, createOpenAiProvider, encodeLlmBase64, evaluateLlmTemplate, executeLlmToolCalls, findExtractedRange, getLlmAttachmentUrlId, getLlmFragmentPrefix, getLlmModelAliases, llmCommands, llmReferenceVersion, llmTemplateUsesInput, loadLlmPluginFragments, openAiChatOptions, openLlmJsonDocument, parseLlmSchemaDsl, resolveLlmSchemaInput, resolveLlmUrlAttachment, selectLlmModelByQuery, selectLlmTools, serializeLlmJsonString, serializeLlmJsonValue, serializeLlmTokenUsage, serializeOpenAiChatRequest, streamLlmToolChain, templateYaml, validateLlmTemplateParameters, validateModelOptions } from "../../safe-bash-command-llm/index.js";
|
|
3
3
|
|
|
4
4
|
export {
|
|
5
5
|
LlmCancelToolCall,
|
|
6
6
|
LlmLoaderLookupError,
|
|
7
|
+
LlmPluginExit,
|
|
7
8
|
createElevenLabsProvider,
|
|
8
9
|
createLlmCommand,
|
|
9
10
|
createLlmCommands,
|
|
@@ -30,6 +31,7 @@ export {
|
|
|
30
31
|
llmTemplateUsesInput,
|
|
31
32
|
loadLlmPluginFragments,
|
|
32
33
|
openAiChatOptions,
|
|
34
|
+
openLlmJsonDocument,
|
|
33
35
|
parseLlmSchemaDsl,
|
|
34
36
|
resolveLlmSchemaInput,
|
|
35
37
|
resolveLlmUrlAttachment,
|
|
@@ -117,8 +117,9 @@ var builtinArities = {
|
|
|
117
117
|
length: [0, 1],
|
|
118
118
|
substr: [2, 3],
|
|
119
119
|
index: [2, 2],
|
|
120
|
-
split: [2,
|
|
121
|
-
match: [2,
|
|
120
|
+
split: [2, 4],
|
|
121
|
+
match: [2, 3],
|
|
122
|
+
strtonum: [1, 1],
|
|
122
123
|
sub: [2, 3],
|
|
123
124
|
gsub: [2, 3],
|
|
124
125
|
sprintf: [1, Infinity],
|
|
@@ -271,7 +272,8 @@ var AwkParser = class {
|
|
|
271
272
|
const arity = Object.hasOwn(this.arities, call.expression.name) ? this.arities[call.expression.name] : definition ? [0, definition.parameters.length] : void 0;
|
|
272
273
|
if (!arity) throw new ProgramError(`unsupported function '${call.expression.name}'`);
|
|
273
274
|
if (call.expression.args.length < arity[0] || call.expression.args.length > arity[1]) throw new ProgramError(`invalid argument count for '${call.expression.name}'`);
|
|
274
|
-
if (call.expression.name === "split" && call.expression.args[1]?.kind !== "variable") throw new ProgramError("split requires an array variable as its second argument");
|
|
275
|
+
if (call.expression.name === "split" && (call.expression.args[1]?.kind !== "variable" || call.expression.args[3] && call.expression.args[3].kind !== "variable")) throw new ProgramError("split requires an array variable as its second argument");
|
|
276
|
+
if (call.expression.name === "match" && call.expression.args[2] && call.expression.args[2].kind !== "variable") throw new ProgramError("match requires an array variable as its third argument");
|
|
275
277
|
if ((call.expression.name === "asort" || call.expression.name === "asorti") && call.expression.args.some((arg) => arg.kind !== "variable")) throw new ProgramError("asort/asorti requires array variables");
|
|
276
278
|
if ((call.expression.name === "sub" || call.expression.name === "gsub") && call.expression.args[2] && !isLvalue(call.expression.args[2])) throw new ProgramError("sub/gsub target must be assignable");
|
|
277
279
|
if (call.expression.name === "sprintf" && call.expression.args[0]?.kind === "string") validateFormat(call.expression.args[0].value);
|
|
@@ -514,6 +516,8 @@ var AwkParser = class {
|
|
|
514
516
|
const expression = { kind: "call", name, args };
|
|
515
517
|
this.calls.push({ expression, owner: this.currentFunction });
|
|
516
518
|
if (name === "split" && args[1]?.kind === "variable") this.arrays.add(args[1].name);
|
|
519
|
+
if (name === "split" && args[3]?.kind === "variable") this.arrays.add(args[3].name);
|
|
520
|
+
if (name === "match" && args[2]?.kind === "variable") this.arrays.add(args[2].name);
|
|
517
521
|
if (name === "asort" || name === "asorti") {
|
|
518
522
|
for (const arg of args) if (arg.kind === "variable") this.arrays.add(arg.name);
|
|
519
523
|
}
|
|
@@ -235,7 +235,7 @@ function serializeDot(graph) {
|
|
|
235
235
|
return reference(statement.node) + attributes(statement.attributes) + ";\n";
|
|
236
236
|
if (statement.kind === "edge")
|
|
237
237
|
return statement.endpoints.map((endpoint) => "kind" in endpoint ? sub(endpoint) : reference(endpoint)).join(graph.directed ? " -> " : " -- ") + attributes(statement.attributes) + ";\n";
|
|
238
|
-
return statement.target + attributes(statement.attributes) + ";\n";
|
|
238
|
+
return Object.keys(statement.attributes).length ? statement.target + attributes(statement.attributes) + ";\n" : "";
|
|
239
239
|
}).join("");
|
|
240
240
|
return (graph.strict ? "strict " : "") + (graph.directed ? "digraph" : "graph") + (graph.id !== void 0 ? " " + quote(graph.id) : "") + " {\n" + body(graph.statements) + "}\n";
|
|
241
241
|
}
|
|
@@ -13,6 +13,9 @@ function createPythonHostBridge(capabilities, options) {
|
|
|
13
13
|
for (const limit of [maxMessageBytes, maxMessageDepth, maxConcurrentCalls, maxStreams, maxStreamBytes]) {
|
|
14
14
|
if (limit !== Infinity && (!Number.isSafeInteger(limit) || limit < 1)) throw new RangeError("Invalid Python host capability limit");
|
|
15
15
|
}
|
|
16
|
+
const checkMessageLimit = (size, maximum = maxMessageBytes) => {
|
|
17
|
+
if (size > maximum) throw new RangeError("Python host message limit exceeded");
|
|
18
|
+
};
|
|
16
19
|
const registry = new Map(Object.entries(capabilities));
|
|
17
20
|
const controller = new AbortController();
|
|
18
21
|
const signal = AbortSignal.any([options.signal, controller.signal]);
|
|
@@ -31,20 +34,21 @@ function createPythonHostBridge(capabilities, options) {
|
|
|
31
34
|
let nodes = 0;
|
|
32
35
|
let estimatedBytes = 0;
|
|
33
36
|
const inspect = (item, depth) => {
|
|
34
|
-
|
|
37
|
+
checkMessageLimit(++nodes);
|
|
38
|
+
checkMessageLimit(depth, maxMessageDepth);
|
|
35
39
|
if (item === null || typeof item === "boolean" || typeof item === "number" && Number.isFinite(item)) {
|
|
36
40
|
estimatedBytes += JSON.stringify(item).length;
|
|
37
|
-
|
|
41
|
+
checkMessageLimit(estimatedBytes);
|
|
38
42
|
return;
|
|
39
43
|
}
|
|
40
44
|
if (typeof item === "string") {
|
|
41
|
-
|
|
45
|
+
checkMessageLimit(item.length);
|
|
42
46
|
estimatedBytes += new TextEncoder().encode(JSON.stringify(item)).length;
|
|
43
|
-
|
|
47
|
+
checkMessageLimit(estimatedBytes);
|
|
44
48
|
return;
|
|
45
49
|
}
|
|
46
50
|
if (typeof item !== "object" || item === null || !Array.isArray(item) && Object.getPrototypeOf(item) !== Object.prototype && Object.getPrototypeOf(item) !== null) throw new TypeError("Python host messages must contain data only");
|
|
47
|
-
if (Array.isArray(item)
|
|
51
|
+
if (Array.isArray(item)) checkMessageLimit(item.length);
|
|
48
52
|
if (ancestors.has(item)) throw new TypeError("Python host messages must not contain cycles");
|
|
49
53
|
ancestors.add(item);
|
|
50
54
|
estimatedBytes += 2;
|
|
@@ -52,7 +56,7 @@ function createPythonHostBridge(capabilities, options) {
|
|
|
52
56
|
for (const key in item) {
|
|
53
57
|
if (!Object.hasOwn(item, key)) continue;
|
|
54
58
|
estimatedBytes += 2;
|
|
55
|
-
|
|
59
|
+
checkMessageLimit(estimatedBytes);
|
|
56
60
|
if (Array.isArray(item) && key === "length") continue;
|
|
57
61
|
if (typeof key !== "string") throw new TypeError("Python host messages must contain data only");
|
|
58
62
|
const descriptor = Object.getOwnPropertyDescriptor(item, key);
|
|
@@ -64,7 +68,7 @@ function createPythonHostBridge(capabilities, options) {
|
|
|
64
68
|
};
|
|
65
69
|
inspect(value, 0);
|
|
66
70
|
const encoded = JSON.stringify(value);
|
|
67
|
-
|
|
71
|
+
checkMessageLimit(new TextEncoder().encode(encoded).length);
|
|
68
72
|
return JSON.parse(encoded);
|
|
69
73
|
};
|
|
70
74
|
const assertLive = () => {
|
|
@@ -101,7 +105,7 @@ function createPythonHostBridge(capabilities, options) {
|
|
|
101
105
|
if (chunkBytes > maxStreamBytes - stream.bytes) throw new RangeError("Python host stream byte limit exceeded");
|
|
102
106
|
stream.bytes += chunkBytes;
|
|
103
107
|
const value = result.value instanceof Uint8Array ? (() => {
|
|
104
|
-
|
|
108
|
+
checkMessageLimit(result.value.length, maxMessageBytes / 4);
|
|
105
109
|
return { type: "bytes", bytes: Array.from(result.value) };
|
|
106
110
|
})() : typeof result.value === "string" ? { type: "text", text: result.value } : { type: "data", value: result.value };
|
|
107
111
|
return data({ done: false, value });
|
|
@@ -91,6 +91,7 @@ async function openCommandFile(context, path, options) {
|
|
|
91
91
|
signal?.throwIfAborted();
|
|
92
92
|
};
|
|
93
93
|
let defaultFsOptions;
|
|
94
|
+
const callerOptions = /* @__PURE__ */ new WeakMap();
|
|
94
95
|
const run = (syscall, forwarded, action) => {
|
|
95
96
|
const signal = forwarded.signal;
|
|
96
97
|
try {
|
|
@@ -101,7 +102,15 @@ async function openCommandFile(context, path, options) {
|
|
|
101
102
|
}
|
|
102
103
|
const operation = work.then(async () => {
|
|
103
104
|
check(signal);
|
|
104
|
-
|
|
105
|
+
let supplied = defaultFsOptions;
|
|
106
|
+
if (signal && signal !== scope) {
|
|
107
|
+
const cached = callerOptions.get(signal);
|
|
108
|
+
if (cached) supplied = cached;
|
|
109
|
+
else {
|
|
110
|
+
supplied = { signal: AbortSignal.any([scope, signal]) };
|
|
111
|
+
callerOptions.set(signal, supplied);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
105
114
|
try {
|
|
106
115
|
const result = await action(descriptor, supplied);
|
|
107
116
|
if (syscall !== "write" || !context.preserveWriteReceipt) check(signal);
|
|
@@ -60,7 +60,7 @@ async function* autodetected(source, signal, limits) {
|
|
|
60
60
|
if (next.value.length) yield next.value;
|
|
61
61
|
}
|
|
62
62
|
})();
|
|
63
|
-
const format = size >= 2 && prefix[0] === 31 && prefix[1] === 139 ? "gzip" : size >= 3 && prefix[0] === 66 && prefix[1] === 90 && prefix[2] === 104 ? "bzip2" : size === 6 && [253, 55, 122, 88, 90, 0].every((byte, index) => prefix[index] === byte) ? "xz" : void 0;
|
|
63
|
+
const format = size >= 2 && prefix[0] === 31 && prefix[1] === 139 ? "gzip" : size >= 3 && prefix[0] === 66 && prefix[1] === 90 && prefix[2] === 104 ? "bzip2" : size >= 4 && prefix[0] === 40 && prefix[1] === 181 && prefix[2] === 47 && prefix[3] === 253 ? "zstd" : size === 6 && [253, 55, 122, 88, 90, 0].every((byte, index) => prefix[index] === byte) ? "xz" : void 0;
|
|
64
64
|
yield* format ? compressed(replay, true, signal, limits, format) : replay;
|
|
65
65
|
} finally {
|
|
66
66
|
if (iterator.return) await iterator.return(void 0);
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createArchive,
|
|
3
3
|
manifest
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-MBXNG6C3.js";
|
|
5
5
|
import {
|
|
6
6
|
readArchive
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-SG2KOOD4.js";
|
|
8
8
|
import {
|
|
9
9
|
quoteName
|
|
10
10
|
} from "./chunk-PYIG32ZI.js";
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
autodetected,
|
|
14
14
|
compressed,
|
|
15
15
|
recordPadding
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-43NDRBKY.js";
|
|
17
17
|
|
|
18
18
|
// packages/safe-bash-command-tar/src/modes.ts
|
|
19
19
|
import { dirname, retainFileSystemCleanup } from "@poe-platform/safe-fs/core";
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
outputOperation,
|
|
4
4
|
preflight,
|
|
5
5
|
publish
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-4SLPM2WM.js";
|
|
7
7
|
import {
|
|
8
8
|
Scanner
|
|
9
9
|
} from "./chunk-DSX7SPN5.js";
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
checkedAdd,
|
|
19
19
|
inferDelimiter,
|
|
20
20
|
unsigned
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-R6GON4H3.js";
|
|
22
22
|
import {
|
|
23
23
|
boundedSort
|
|
24
24
|
} from "./chunk-6ZMUR3LT.js";
|
|
@@ -142,7 +142,7 @@ async function aggregates(text, header, args, budget) {
|
|
|
142
142
|
const begin = at;
|
|
143
143
|
while (at < text.length && text[at] !== "(") at++;
|
|
144
144
|
const name = text.slice(begin, at).trim().toLowerCase();
|
|
145
|
-
if (!["count", "sum", "mean", "avg", "min", "max", "first", "last"].includes(name) || at === text.length) throw new XanError("expected an aggregate call");
|
|
145
|
+
if (!["count", "sum", "mean", "avg", "min", "max", "median", "first", "last"].includes(name) || at === text.length) throw new XanError("expected an aggregate call");
|
|
146
146
|
const start = ++at;
|
|
147
147
|
let quote = "";
|
|
148
148
|
while (at < text.length) {
|
|
@@ -262,7 +262,7 @@ async function* extendedRows(args, scope, budget, writer) {
|
|
|
262
262
|
const bytes = row.cells[index].decoded.view();
|
|
263
263
|
budget.hold(bytes.length);
|
|
264
264
|
return bytes.slice();
|
|
265
|
-
}), states: specs.map(() => ({ count: 0, sum: 0, min: Infinity, max: -Infinity })) };
|
|
265
|
+
}), states: specs.map(() => ({ count: 0, sum: 0, min: Infinity, max: -Infinity, values: [] })) };
|
|
266
266
|
};
|
|
267
267
|
if (args.command === "agg") groups.set("", make());
|
|
268
268
|
yield* textRow([...selected.map((index) => args.noHeaders ? String(index) : header.cells[index].decoded.view()), ...specs.map((spec) => spec.label)], writer, budget);
|
|
@@ -303,6 +303,10 @@ async function* extendedRows(args, scope, budget, writer) {
|
|
|
303
303
|
state.sum += value;
|
|
304
304
|
state.min = Math.min(state.min, value);
|
|
305
305
|
state.max = Math.max(state.max, value);
|
|
306
|
+
if (spec.name === "median") {
|
|
307
|
+
budget.hold(8);
|
|
308
|
+
state.values.push(value);
|
|
309
|
+
}
|
|
306
310
|
}
|
|
307
311
|
}
|
|
308
312
|
} finally {
|
|
@@ -316,6 +320,11 @@ async function* extendedRows(args, scope, budget, writer) {
|
|
|
316
320
|
if (spec.name === "count") return String(state.count);
|
|
317
321
|
if (spec.name === "sum") return String(state.sum);
|
|
318
322
|
if (!state.count) return "";
|
|
323
|
+
if (spec.name === "median") {
|
|
324
|
+
const sorted = [...state.values].sort((a, b) => a - b);
|
|
325
|
+
const mid = Math.floor(sorted.length / 2);
|
|
326
|
+
return String(sorted.length % 2 === 1 ? sorted[mid] : (sorted[mid - 1] + sorted[mid]) / 2);
|
|
327
|
+
}
|
|
319
328
|
return String(spec.name === "min" ? state.min : spec.name === "max" ? state.max : state.sum / state.count);
|
|
320
329
|
})], writer, budget);
|
|
321
330
|
return;
|
|
@@ -571,16 +580,30 @@ async function expressions(text, header, noHeaders, budget) {
|
|
|
571
580
|
} else {
|
|
572
581
|
const name = identifier();
|
|
573
582
|
if (!name) throw new XanError("expected expression");
|
|
574
|
-
|
|
575
|
-
if (
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
583
|
+
space();
|
|
584
|
+
if (text[offset] === "(") {
|
|
585
|
+
offset++;
|
|
586
|
+
const inner = parse(0, depth + 1);
|
|
587
|
+
space();
|
|
588
|
+
if (text[offset++] !== ")") throw new XanError("expected closing parenthesis");
|
|
589
|
+
const fnName = name.toLowerCase();
|
|
590
|
+
if (fnName === "upper") left = (row) => String(inner(row)).toUpperCase();
|
|
591
|
+
else if (fnName === "lower") left = (row) => String(inner(row)).toLowerCase();
|
|
592
|
+
else if (fnName === "trim") left = (row) => String(inner(row)).trim();
|
|
593
|
+
else if (fnName === "len") left = (row) => String(inner(row)).length;
|
|
594
|
+
else throw new XanError(`unknown expression column: ${name}`);
|
|
595
|
+
} else {
|
|
596
|
+
let column = -1;
|
|
597
|
+
if (!noHeaders) for (let i = 0; i < (header?.width ?? 0); i++) {
|
|
598
|
+
budget.work();
|
|
599
|
+
if (cellText(header.cells[i].decoded.view(), budget) === name) {
|
|
600
|
+
column = i;
|
|
601
|
+
break;
|
|
602
|
+
}
|
|
580
603
|
}
|
|
604
|
+
if (column < 0) throw new XanError(`unknown expression column: ${name}`);
|
|
605
|
+
left = (row) => cellText(row.cells[column].decoded.view(), budget);
|
|
581
606
|
}
|
|
582
|
-
if (column < 0) throw new XanError(`unknown expression column: ${name}`);
|
|
583
|
-
left = (row) => cellText(row.cells[column].decoded.view(), budget);
|
|
584
607
|
}
|
|
585
608
|
let chainDepth = depth;
|
|
586
609
|
while (true) {
|
|
@@ -634,7 +657,7 @@ async function presentationRows(args, scope, budget, writer) {
|
|
|
634
657
|
const table = args.command === "table";
|
|
635
658
|
const source = args.command === "map" ? args.operand : args.evaluateFile ? await scope.expression(args.selection) : args.selection;
|
|
636
659
|
const projections = table ? [] : await expressions(source, first, args.noHeaders, budget);
|
|
637
|
-
if (args.command === "map" && projections.length !== 1) throw new XanError("map requires one expression");
|
|
660
|
+
if (args.command === "map" && args.rightSelection !== "__INLINE_MULTI__" && projections.length !== 1) throw new XanError("map requires one expression");
|
|
638
661
|
budget.hold((first?.width ?? 0) * 32);
|
|
639
662
|
const selected = table ? await resolveSelection(await parseSelection(args.selection, budget), first?.cells.map((cell) => cell.decoded.view()) ?? [], args.noHeaders, budget) : [];
|
|
640
663
|
const lines = [], widths = selected.map(() => 0);
|
|
@@ -647,7 +670,10 @@ async function presentationRows(args, scope, budget, writer) {
|
|
|
647
670
|
return (async function* () {
|
|
648
671
|
try {
|
|
649
672
|
if (!table && !args.noHeaders) {
|
|
650
|
-
yield* textRow(args.command === "map" ? [
|
|
673
|
+
yield* textRow(args.command === "map" ? [
|
|
674
|
+
...first?.cells.map((cell) => cell.decoded.view()) ?? [],
|
|
675
|
+
...args.rightSelection === "__INLINE_MULTI__" ? projections.map((p) => p.name) : [args.rightSelection]
|
|
676
|
+
] : projections.map((projection) => projection.name), writer, budget);
|
|
651
677
|
first?.free();
|
|
652
678
|
row = await scanner.next();
|
|
653
679
|
}
|
|
@@ -166,7 +166,7 @@ async function executePlaywrightAbility(ability, parsed, invocation, context) {
|
|
|
166
166
|
if (bytes.byteLength > context.maxArtifactBytes) throw new PlaywrightResourceLimitError("Artifact byte limit exceeded");
|
|
167
167
|
if (filename !== void 0) filenameCheck(filename);
|
|
168
168
|
if (!invocation.writeArtifact) throw new Error("Artifact byte destination unsupported");
|
|
169
|
-
budget.admit(bytes.byteLength);
|
|
169
|
+
(context.artifactBudget ?? budget).admit(bytes.byteLength);
|
|
170
170
|
const owned = new Uint8Array(bytes);
|
|
171
171
|
return track(async () => {
|
|
172
172
|
context.check();
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
import {
|
|
2
2
|
PythonTextEncodingError,
|
|
3
3
|
PythonUtf16Decoder
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-WRO3PB2M.js";
|
|
5
5
|
import {
|
|
6
6
|
PythonTextDecodeError,
|
|
7
7
|
decodePythonSingleByte,
|
|
8
8
|
pythonSingleByteCodepages
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-IGXH5W5Z.js";
|
|
10
10
|
import {
|
|
11
11
|
normalizeEncoding,
|
|
12
12
|
pythonCodecAliases
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-VSNVYOK2.js";
|
|
14
14
|
import {
|
|
15
15
|
pythonFileCodepages
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-TGSNVLFZ.js";
|
|
17
17
|
import {
|
|
18
18
|
decodeBase64Latin1,
|
|
19
19
|
encodeBase64Latin1
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-RUXOFW5G.js";
|
|
21
21
|
|
|
22
22
|
// packages/safe-bash-csv-engine/src/python-utf7.ts
|
|
23
23
|
var PythonUtf7EncodingError = class extends TypeError {
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-52DDLGBS.js";
|
|
4
4
|
import {
|
|
5
5
|
boundedCodec
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-IHQZKUBS.js";
|
|
7
7
|
|
|
8
8
|
// packages/safe-bash-compression-engine/src/zstd-decode.ts
|
|
9
9
|
import { PublicDiagnostic } from "../../safe-bash-contracts/diagnostics.js";
|