@query-farm/vgi-rpc 0.7.5 → 0.8.0
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 +1 -1
- package/dist/client/index.d.ts +1 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/tcp.d.ts +19 -0
- package/dist/client/tcp.d.ts.map +1 -0
- package/dist/client/types.d.ts +8 -0
- package/dist/client/types.d.ts.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1519 -1260
- package/dist/index.js.map +12 -10
- package/dist/launcher/index.d.ts +1 -0
- package/dist/launcher/index.d.ts.map +1 -1
- package/dist/launcher/serve-tcp.d.ts +66 -0
- package/dist/launcher/serve-tcp.d.ts.map +1 -0
- package/dist/types.d.ts +6 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/client/index.ts +1 -0
- package/src/client/tcp.ts +68 -0
- package/src/client/types.ts +8 -0
- package/src/index.ts +6 -0
- package/src/launcher/index.ts +1 -0
- package/src/launcher/serve-tcp.ts +382 -0
- package/src/types.ts +5 -0
package/dist/index.js.map
CHANGED
|
@@ -1,33 +1,34 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../node_modules/fzstd/esm/index.mjs", "../src/util/zstd.ts", "../src/
|
|
3
|
+
"sources": ["../node_modules/fzstd/esm/index.mjs", "../src/util/zstd.ts", "../src/client/tcp.ts", "../src/client/pipe.ts", "../src/constants.ts", "../src/errors.ts", "../src/arrow/impl-arrowjs/index.ts", "../src/arrow/predicates.ts", "../src/external.ts", "../src/wire/response.ts", "../src/http/common.ts", "../src/wire/reader.ts", "../src/client/introspect.ts", "../src/client/ipc.ts", "../src/access-log.ts", "../src/auth.ts", "../src/client/capabilities.ts", "../src/client/stream.ts", "../src/client/uploadUrl.ts", "../src/client/connect.ts", "../src/client/oauth.ts", "../src/http/auth.ts", "../src/util/web-crypto.ts", "../src/http/bearer.ts", "../src/util/schema.ts", "../src/dispatch/describe.ts", "../src/types.ts", "../src/util/gzip.ts", "../src/http/handler.ts", "../src/wire/opaque.ts", "../src/wire/request.ts", "../node_modules/@noble/ciphers/utils.js", "../node_modules/@noble/ciphers/_arx.js", "../node_modules/@noble/ciphers/_poly1305.js", "../node_modules/@noble/ciphers/chacha.js", "../src/crypto.ts", "../src/http/token.ts", "../src/http/dispatch.ts", "../src/http/pages.ts", "../src/http/oauth-pkce.ts", "../src/http/sticky.ts", "../src/http/types.ts", "../node_modules/oauth4webapi/build/index.js", "../src/http/jwt.ts", "../src/http/mtls.ts", "../src/schema.ts", "../src/protocol.ts", "../src/dispatch/stream.ts", "../src/dispatch/unary.ts", "../src/wire/writer.ts", "../src/server.ts", "../src/launcher/hash.ts", "../src/launcher/launch.ts", "../src/launcher/lock.ts", "../src/launcher/state.ts", "../src/launcher/serve-tcp.ts", "../src/launcher/serve-unix.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"// Some numerical data is initialized as -1 even when it doesn't need initialization to help the JIT infer types\n// aliases for shorter compressed code (most minifers don't do this)\nvar ab = ArrayBuffer, u8 = Uint8Array, u16 = Uint16Array, i16 = Int16Array, u32 = Uint32Array, i32 = Int32Array;\nvar slc = function (v, s, e) {\n if (u8.prototype.slice)\n return u8.prototype.slice.call(v, s, e);\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n var n = new u8(e - s);\n n.set(v.subarray(s, e));\n return n;\n};\nvar fill = function (v, n, s, e) {\n if (u8.prototype.fill)\n return u8.prototype.fill.call(v, n, s, e);\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n for (; s < e; ++s)\n v[s] = n;\n return v;\n};\nvar cpw = function (v, t, s, e) {\n if (u8.prototype.copyWithin)\n return u8.prototype.copyWithin.call(v, t, s, e);\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n while (s < e) {\n v[t++] = v[s++];\n }\n};\n/**\n * Codes for errors generated within this library\n */\nexport var ZstdErrorCode = {\n InvalidData: 0,\n WindowSizeTooLarge: 1,\n InvalidBlockType: 2,\n FSEAccuracyTooHigh: 3,\n DistanceTooFarBack: 4,\n UnexpectedEOF: 5\n};\n// error codes\nvar ec = [\n 'invalid zstd data',\n 'window size too large (>2046MB)',\n 'invalid block type',\n 'FSE accuracy too high',\n 'match distance too far back',\n 'unexpected EOF'\n];\nvar err = function (ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n};\nvar rb = function (d, b, n) {\n var i = 0, o = 0;\n for (; i < n; ++i)\n o |= d[b++] << (i << 3);\n return o;\n};\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\n// read Zstandard frame header\nvar rzfh = function (dat, w) {\n var n3 = dat[0] | (dat[1] << 8) | (dat[2] << 16);\n if (n3 == 0x2FB528 && dat[3] == 253) {\n // Zstandard\n var flg = dat[4];\n // single segment checksum dict flag frame content flag\n var ss = (flg >> 5) & 1, cc = (flg >> 2) & 1, df = flg & 3, fcf = flg >> 6;\n if (flg & 8)\n err(0);\n // byte\n var bt = 6 - ss;\n // dict bytes\n var db = df == 3 ? 4 : df;\n // dictionary id\n var di = rb(dat, bt, db);\n bt += db;\n // frame size bytes\n var fsb = fcf ? (1 << fcf) : ss;\n // frame source size\n var fss = rb(dat, bt, fsb) + ((fcf == 1) && 256);\n // window size\n var ws = fss;\n if (!ss) {\n // window descriptor\n var wb = 1 << (10 + (dat[5] >> 3));\n ws = wb + (wb >> 3) * (dat[5] & 7);\n }\n if (ws > 2145386496)\n err(1);\n var buf = new u8((w == 1 ? (fss || ws) : w ? 0 : ws) + 12);\n buf[0] = 1, buf[4] = 4, buf[8] = 8;\n return {\n b: bt + fsb,\n y: 0,\n l: 0,\n d: di,\n w: (w && w != 1) ? w : buf.subarray(12),\n e: ws,\n o: new i32(buf.buffer, 0, 3),\n u: fss,\n c: cc,\n m: Math.min(131072, ws)\n };\n }\n else if (((n3 >> 4) | (dat[3] << 20)) == 0x184D2A5) {\n // skippable\n return b4(dat, 4) + 8;\n }\n err(0);\n};\n// most significant bit for nonzero\nvar msb = function (val) {\n var bits = 0;\n for (; (1 << bits) <= val; ++bits)\n ;\n return bits - 1;\n};\n// read finite state entropy\nvar rfse = function (dat, bt, mal) {\n // table pos\n var tpos = (bt << 3) + 4;\n // accuracy log\n var al = (dat[bt] & 15) + 5;\n if (al > mal)\n err(3);\n // size\n var sz = 1 << al;\n // probabilities symbols repeat index high threshold\n var probs = sz, sym = -1, re = -1, i = -1, ht = sz;\n // optimization: single allocation is much faster\n var buf = new ab(512 + (sz << 2));\n var freq = new i16(buf, 0, 256);\n // same view as freq\n var dstate = new u16(buf, 0, 256);\n var nstate = new u16(buf, 512, sz);\n var bb1 = 512 + (sz << 1);\n var syms = new u8(buf, bb1, sz);\n var nbits = new u8(buf, bb1 + sz);\n while (sym < 255 && probs > 0) {\n var bits = msb(probs + 1);\n var cbt = tpos >> 3;\n // mask\n var msk = (1 << (bits + 1)) - 1;\n var val = ((dat[cbt] | (dat[cbt + 1] << 8) | (dat[cbt + 2] << 16)) >> (tpos & 7)) & msk;\n // mask (1 fewer bit)\n var msk1fb = (1 << bits) - 1;\n // max small value\n var msv = msk - probs - 1;\n // small value\n var sval = val & msk1fb;\n if (sval < msv)\n tpos += bits, val = sval;\n else {\n tpos += bits + 1;\n if (val > msk1fb)\n val -= msv;\n }\n freq[++sym] = --val;\n if (val == -1) {\n probs += val;\n syms[--ht] = sym;\n }\n else\n probs -= val;\n if (!val) {\n do {\n // repeat byte\n var rbt = tpos >> 3;\n re = ((dat[rbt] | (dat[rbt + 1] << 8)) >> (tpos & 7)) & 3;\n tpos += 2;\n sym += re;\n } while (re == 3);\n }\n }\n if (sym > 255 || probs)\n err(0);\n var sympos = 0;\n // sym step (coprime with sz - formula from zstd source)\n var sstep = (sz >> 1) + (sz >> 3) + 3;\n // sym mask\n var smask = sz - 1;\n for (var s = 0; s <= sym; ++s) {\n var sf = freq[s];\n if (sf < 1) {\n dstate[s] = -sf;\n continue;\n }\n // This is split into two loops in zstd to avoid branching, but as JS is higher-level that is unnecessary\n for (i = 0; i < sf; ++i) {\n syms[sympos] = s;\n do {\n sympos = (sympos + sstep) & smask;\n } while (sympos >= ht);\n }\n }\n // After spreading symbols, should be zero again\n if (sympos)\n err(0);\n for (i = 0; i < sz; ++i) {\n // next state\n var ns = dstate[syms[i]]++;\n // num bits\n var nb = nbits[i] = al - msb(ns);\n nstate[i] = (ns << nb) - sz;\n }\n return [(tpos + 7) >> 3, {\n b: al,\n s: syms,\n n: nbits,\n t: nstate\n }];\n};\n// read huffman\nvar rhu = function (dat, bt) {\n // index weight count\n var i = 0, wc = -1;\n // buffer header byte\n var buf = new u8(292), hb = dat[bt];\n // huffman weights\n var hw = buf.subarray(0, 256);\n // rank count\n var rc = buf.subarray(256, 268);\n // rank index\n var ri = new u16(buf.buffer, 268);\n // NOTE: at this point bt is 1 less than expected\n if (hb < 128) {\n // end byte, fse decode table\n var _a = rfse(dat, bt + 1, 6), ebt = _a[0], fdt = _a[1];\n bt += hb;\n var epos = ebt << 3;\n // last byte\n var lb = dat[bt];\n if (!lb)\n err(0);\n // state1 state2 state1 bits state2 bits\n var st1 = 0, st2 = 0, btr1 = fdt.b, btr2 = btr1;\n // fse pos\n // pre-increment to account for original deficit of 1\n var fpos = (++bt << 3) - 8 + msb(lb);\n for (;;) {\n fpos -= btr1;\n if (fpos < epos)\n break;\n var cbt = fpos >> 3;\n st1 += ((dat[cbt] | (dat[cbt + 1] << 8)) >> (fpos & 7)) & ((1 << btr1) - 1);\n hw[++wc] = fdt.s[st1];\n fpos -= btr2;\n if (fpos < epos)\n break;\n cbt = fpos >> 3;\n st2 += ((dat[cbt] | (dat[cbt + 1] << 8)) >> (fpos & 7)) & ((1 << btr2) - 1);\n hw[++wc] = fdt.s[st2];\n btr1 = fdt.n[st1];\n st1 = fdt.t[st1];\n btr2 = fdt.n[st2];\n st2 = fdt.t[st2];\n }\n if (++wc > 255)\n err(0);\n }\n else {\n wc = hb - 127;\n for (; i < wc; i += 2) {\n var byte = dat[++bt];\n hw[i] = byte >> 4;\n hw[i + 1] = byte & 15;\n }\n ++bt;\n }\n // weight exponential sum\n var wes = 0;\n for (i = 0; i < wc; ++i) {\n var wt = hw[i];\n // bits must be at most 11, same as weight\n if (wt > 11)\n err(0);\n wes += wt && (1 << (wt - 1));\n }\n // max bits\n var mb = msb(wes) + 1;\n // table size\n var ts = 1 << mb;\n // remaining sum\n var rem = ts - wes;\n // must be power of 2\n if (rem & (rem - 1))\n err(0);\n hw[wc++] = msb(rem) + 1;\n for (i = 0; i < wc; ++i) {\n var wt = hw[i];\n ++rc[hw[i] = wt && (mb + 1 - wt)];\n }\n // huf buf\n var hbuf = new u8(ts << 1);\n // symbols num bits\n var syms = hbuf.subarray(0, ts), nb = hbuf.subarray(ts);\n ri[mb] = 0;\n for (i = mb; i > 0; --i) {\n var pv = ri[i];\n fill(nb, i, pv, ri[i - 1] = pv + rc[i] * (1 << (mb - i)));\n }\n if (ri[0] != ts)\n err(0);\n for (i = 0; i < wc; ++i) {\n var bits = hw[i];\n if (bits) {\n var code = ri[bits];\n fill(syms, i, code, ri[bits] = code + (1 << (mb - bits)));\n }\n }\n return [bt, {\n n: nb,\n b: mb,\n s: syms\n }];\n};\n// Tables generated using this:\n// https://gist.github.com/101arrowz/a979452d4355992cbf8f257cbffc9edd\n// default literal length table\nvar dllt = /*#__PURE__*/ rfse(/*#__PURE__*/ new u8([\n 81, 16, 99, 140, 49, 198, 24, 99, 12, 33, 196, 24, 99, 102, 102, 134, 70, 146, 4\n]), 0, 6)[1];\n// default match length table\nvar dmlt = /*#__PURE__*/ rfse(/*#__PURE__*/ new u8([\n 33, 20, 196, 24, 99, 140, 33, 132, 16, 66, 8, 33, 132, 16, 66, 8, 33, 68, 68, 68, 68, 68, 68, 68, 68, 36, 9\n]), 0, 6)[1];\n// default offset code table\nvar doct = /*#__PURE__ */ rfse(/*#__PURE__*/ new u8([\n 32, 132, 16, 66, 102, 70, 68, 68, 68, 68, 36, 73, 2\n]), 0, 5)[1];\n// bits to baseline\nvar b2bl = function (b, s) {\n var len = b.length, bl = new i32(len);\n for (var i = 0; i < len; ++i) {\n bl[i] = s;\n s += 1 << b[i];\n }\n return bl;\n};\n// literal length bits\nvar llb = /*#__PURE__ */ new u8(( /*#__PURE__ */new i32([\n 0, 0, 0, 0, 16843009, 50528770, 134678020, 202050057, 269422093\n])).buffer, 0, 36);\n// literal length baseline\nvar llbl = /*#__PURE__ */ b2bl(llb, 0);\n// match length bits\nvar mlb = /*#__PURE__ */ new u8(( /*#__PURE__ */new i32([\n 0, 0, 0, 0, 0, 0, 0, 0, 16843009, 50528770, 117769220, 185207048, 252579084, 16\n])).buffer, 0, 53);\n// match length baseline\nvar mlbl = /*#__PURE__ */ b2bl(mlb, 3);\n// decode huffman stream\nvar dhu = function (dat, out, hu) {\n var len = dat.length, ss = out.length, lb = dat[len - 1], msk = (1 << hu.b) - 1, eb = -hu.b;\n if (!lb)\n err(0);\n var st = 0, btr = hu.b, pos = (len << 3) - 8 + msb(lb) - btr, i = -1;\n for (; pos > eb && i < ss;) {\n var cbt = pos >> 3;\n var val = (dat[cbt] | (dat[cbt + 1] << 8) | (dat[cbt + 2] << 16)) >> (pos & 7);\n st = ((st << btr) | val) & msk;\n out[++i] = hu.s[st];\n pos -= (btr = hu.n[st]);\n }\n if (pos != eb || i + 1 != ss)\n err(0);\n};\n// decode huffman stream 4x\n// TODO: use workers to parallelize\nvar dhu4 = function (dat, out, hu) {\n var bt = 6;\n var ss = out.length, sz1 = (ss + 3) >> 2, sz2 = sz1 << 1, sz3 = sz1 + sz2;\n dhu(dat.subarray(bt, bt += dat[0] | (dat[1] << 8)), out.subarray(0, sz1), hu);\n dhu(dat.subarray(bt, bt += dat[2] | (dat[3] << 8)), out.subarray(sz1, sz2), hu);\n dhu(dat.subarray(bt, bt += dat[4] | (dat[5] << 8)), out.subarray(sz2, sz3), hu);\n dhu(dat.subarray(bt), out.subarray(sz3), hu);\n};\n// read Zstandard block\nvar rzb = function (dat, st, out) {\n var _a;\n var bt = st.b;\n // byte 0 block type\n var b0 = dat[bt], btype = (b0 >> 1) & 3;\n st.l = b0 & 1;\n var sz = (b0 >> 3) | (dat[bt + 1] << 5) | (dat[bt + 2] << 13);\n // end byte for block\n var ebt = (bt += 3) + sz;\n if (btype == 1) {\n if (bt >= dat.length)\n return;\n st.b = bt + 1;\n if (out) {\n fill(out, dat[bt], st.y, st.y += sz);\n return out;\n }\n return fill(new u8(sz), dat[bt]);\n }\n if (ebt > dat.length)\n return;\n if (btype == 0) {\n st.b = ebt;\n if (out) {\n out.set(dat.subarray(bt, ebt), st.y);\n st.y += sz;\n return out;\n }\n return slc(dat, bt, ebt);\n }\n if (btype == 2) {\n // byte 3 lit btype size format\n var b3 = dat[bt], lbt = b3 & 3, sf = (b3 >> 2) & 3;\n // lit src size lit cmp sz 4 streams\n var lss = b3 >> 4, lcs = 0, s4 = 0;\n if (lbt < 2) {\n if (sf & 1)\n lss |= (dat[++bt] << 4) | ((sf & 2) && (dat[++bt] << 12));\n else\n lss = b3 >> 3;\n }\n else {\n s4 = sf;\n if (sf < 2)\n lss |= ((dat[++bt] & 63) << 4), lcs = (dat[bt] >> 6) | (dat[++bt] << 2);\n else if (sf == 2)\n lss |= (dat[++bt] << 4) | ((dat[++bt] & 3) << 12), lcs = (dat[bt] >> 2) | (dat[++bt] << 6);\n else\n lss |= (dat[++bt] << 4) | ((dat[++bt] & 63) << 12), lcs = (dat[bt] >> 6) | (dat[++bt] << 2) | (dat[++bt] << 10);\n }\n ++bt;\n // add literals to end - can never overlap with backreferences because unused literals always appended\n var buf = out ? out.subarray(st.y, st.y + st.m) : new u8(st.m);\n // starting point for literals\n var spl = buf.length - lss;\n if (lbt == 0)\n buf.set(dat.subarray(bt, bt += lss), spl);\n else if (lbt == 1)\n fill(buf, dat[bt++], spl);\n else {\n // huffman table\n var hu = st.h;\n if (lbt == 2) {\n var hud = rhu(dat, bt);\n // subtract description length\n lcs += bt - (bt = hud[0]);\n st.h = hu = hud[1];\n }\n else if (!hu)\n err(0);\n (s4 ? dhu4 : dhu)(dat.subarray(bt, bt += lcs), buf.subarray(spl), hu);\n }\n // num sequences\n var ns = dat[bt++];\n if (ns) {\n if (ns == 255)\n ns = (dat[bt++] | (dat[bt++] << 8)) + 0x7F00;\n else if (ns > 127)\n ns = ((ns - 128) << 8) | dat[bt++];\n // symbol compression modes\n var scm = dat[bt++];\n if (scm & 3)\n err(0);\n var dts = [dmlt, doct, dllt];\n for (var i = 2; i > -1; --i) {\n var md = (scm >> ((i << 1) + 2)) & 3;\n if (md == 1) {\n // rle buf\n var rbuf = new u8([0, 0, dat[bt++]]);\n dts[i] = {\n s: rbuf.subarray(2, 3),\n n: rbuf.subarray(0, 1),\n t: new u16(rbuf.buffer, 0, 1),\n b: 0\n };\n }\n else if (md == 2) {\n // accuracy log 8 for offsets, 9 for others\n _a = rfse(dat, bt, 9 - (i & 1)), bt = _a[0], dts[i] = _a[1];\n }\n else if (md == 3) {\n if (!st.t)\n err(0);\n dts[i] = st.t[i];\n }\n }\n var _b = st.t = dts, mlt = _b[0], oct = _b[1], llt = _b[2];\n var lb = dat[ebt - 1];\n if (!lb)\n err(0);\n var spos = (ebt << 3) - 8 + msb(lb) - llt.b, cbt = spos >> 3, oubt = 0;\n var lst = ((dat[cbt] | (dat[cbt + 1] << 8)) >> (spos & 7)) & ((1 << llt.b) - 1);\n cbt = (spos -= oct.b) >> 3;\n var ost = ((dat[cbt] | (dat[cbt + 1] << 8)) >> (spos & 7)) & ((1 << oct.b) - 1);\n cbt = (spos -= mlt.b) >> 3;\n var mst = ((dat[cbt] | (dat[cbt + 1] << 8)) >> (spos & 7)) & ((1 << mlt.b) - 1);\n for (++ns; --ns;) {\n var llc = llt.s[lst];\n var lbtr = llt.n[lst];\n var mlc = mlt.s[mst];\n var mbtr = mlt.n[mst];\n var ofc = oct.s[ost];\n var obtr = oct.n[ost];\n cbt = (spos -= ofc) >> 3;\n var ofp = 1 << ofc;\n var off = ofp + (((dat[cbt] | (dat[cbt + 1] << 8) | (dat[cbt + 2] << 16) | (dat[cbt + 3] << 24)) >>> (spos & 7)) & (ofp - 1));\n cbt = (spos -= mlb[mlc]) >> 3;\n var ml = mlbl[mlc] + (((dat[cbt] | (dat[cbt + 1] << 8) | (dat[cbt + 2] << 16)) >> (spos & 7)) & ((1 << mlb[mlc]) - 1));\n cbt = (spos -= llb[llc]) >> 3;\n var ll = llbl[llc] + (((dat[cbt] | (dat[cbt + 1] << 8) | (dat[cbt + 2] << 16)) >> (spos & 7)) & ((1 << llb[llc]) - 1));\n cbt = (spos -= lbtr) >> 3;\n lst = llt.t[lst] + (((dat[cbt] | (dat[cbt + 1] << 8)) >> (spos & 7)) & ((1 << lbtr) - 1));\n cbt = (spos -= mbtr) >> 3;\n mst = mlt.t[mst] + (((dat[cbt] | (dat[cbt + 1] << 8)) >> (spos & 7)) & ((1 << mbtr) - 1));\n cbt = (spos -= obtr) >> 3;\n ost = oct.t[ost] + (((dat[cbt] | (dat[cbt + 1] << 8)) >> (spos & 7)) & ((1 << obtr) - 1));\n if (off > 3) {\n st.o[2] = st.o[1];\n st.o[1] = st.o[0];\n st.o[0] = off -= 3;\n }\n else {\n var idx = off - (ll != 0);\n if (idx) {\n off = idx == 3 ? st.o[0] - 1 : st.o[idx];\n if (idx > 1)\n st.o[2] = st.o[1];\n st.o[1] = st.o[0];\n st.o[0] = off;\n }\n else\n off = st.o[0];\n }\n for (var i = 0; i < ll; ++i) {\n buf[oubt + i] = buf[spl + i];\n }\n oubt += ll, spl += ll;\n var stin = oubt - off;\n if (stin < 0) {\n var len = -stin;\n var bs = st.e + stin;\n if (len > ml)\n len = ml;\n for (var i = 0; i < len; ++i) {\n buf[oubt + i] = st.w[bs + i];\n }\n oubt += len, ml -= len, stin = 0;\n }\n for (var i = 0; i < ml; ++i) {\n buf[oubt + i] = buf[stin + i];\n }\n oubt += ml;\n }\n if (oubt != spl) {\n while (spl < buf.length) {\n buf[oubt++] = buf[spl++];\n }\n }\n else\n oubt = buf.length;\n if (out)\n st.y += oubt;\n else\n buf = slc(buf, 0, oubt);\n }\n else if (out) {\n st.y += lss;\n if (spl) {\n for (var i = 0; i < lss; ++i) {\n buf[i] = buf[spl + i];\n }\n }\n }\n else if (spl)\n buf = slc(buf, spl);\n st.b = ebt;\n return buf;\n }\n err(2);\n};\n// concat\nvar cct = function (bufs, ol) {\n if (bufs.length == 1)\n return bufs[0];\n var buf = new u8(ol);\n for (var i = 0, b = 0; i < bufs.length; ++i) {\n var chk = bufs[i];\n buf.set(chk, b);\n b += chk.length;\n }\n return buf;\n};\n/**\n * Decompresses Zstandard data\n * @param dat The input data\n * @param buf The output buffer. If unspecified, the function will allocate\n * exactly enough memory to fit the decompressed data. If your\n * data has multiple frames and you know the output size, specifying\n * it will yield better performance.\n * @returns The decompressed data\n */\nexport function decompress(dat, buf) {\n var bufs = [], nb = +!buf;\n var bt = 0, ol = 0;\n for (; dat.length;) {\n var st = rzfh(dat, nb || buf);\n if (typeof st == 'object') {\n if (nb) {\n buf = null;\n if (st.w.length == st.u) {\n bufs.push(buf = st.w);\n ol += st.u;\n }\n }\n else {\n bufs.push(buf);\n st.e = 0;\n }\n for (; !st.l;) {\n var blk = rzb(dat, st, buf);\n if (!blk)\n err(5);\n if (buf)\n st.e = st.y;\n else {\n bufs.push(blk);\n ol += blk.length;\n cpw(st.w, 0, blk.length);\n st.w.set(blk, st.w.length - blk.length);\n }\n }\n bt = st.b + (st.c * 4);\n }\n else\n bt = st;\n dat = dat.subarray(bt);\n }\n return cct(bufs, ol);\n}\n/**\n * Decompressor for Zstandard streamed data\n */\nvar Decompress = /*#__PURE__*/ (function () {\n /**\n * Creates a Zstandard decompressor\n * @param ondata The handler for stream data\n */\n function Decompress(ondata) {\n this.ondata = ondata;\n this.c = [];\n this.l = 0;\n this.z = 0;\n }\n /**\n * Pushes data to be decompressed\n * @param chunk The chunk of data to push\n * @param final Whether or not this is the last chunk in the stream\n */\n Decompress.prototype.push = function (chunk, final) {\n if (typeof this.s == 'number') {\n var sub = Math.min(chunk.length, this.s);\n chunk = chunk.subarray(sub);\n this.s -= sub;\n }\n var sl = chunk.length;\n var ncs = sl + this.l;\n if (!this.s) {\n if (final) {\n if (!ncs) {\n this.ondata(new u8(0), true);\n return;\n }\n // min for frame + one block\n if (ncs < 5)\n err(5);\n }\n else if (ncs < 18) {\n this.c.push(chunk);\n this.l = ncs;\n return;\n }\n if (this.l) {\n this.c.push(chunk);\n chunk = cct(this.c, ncs);\n this.c = [];\n this.l = 0;\n }\n if (typeof (this.s = rzfh(chunk)) == 'number')\n return this.push(chunk, final);\n }\n if (typeof this.s != 'number') {\n if (ncs < (this.z || 3)) {\n if (final)\n err(5);\n this.c.push(chunk);\n this.l = ncs;\n return;\n }\n if (this.l) {\n this.c.push(chunk);\n chunk = cct(this.c, ncs);\n this.c = [];\n this.l = 0;\n }\n if (!this.z && ncs < (this.z = (chunk[this.s.b] & 2) ? 4 : 3 + ((chunk[this.s.b] >> 3) | (chunk[this.s.b + 1] << 5) | (chunk[this.s.b + 2] << 13)))) {\n if (final)\n err(5);\n this.c.push(chunk);\n this.l = ncs;\n return;\n }\n else\n this.z = 0;\n for (;;) {\n var blk = rzb(chunk, this.s);\n if (!blk) {\n if (final)\n err(5);\n var adc = chunk.subarray(this.s.b);\n this.s.b = 0;\n this.c.push(adc), this.l += adc.length;\n return;\n }\n else {\n this.ondata(blk, false);\n cpw(this.s.w, 0, blk.length);\n this.s.w.set(blk, this.s.w.length - blk.length);\n }\n if (this.s.l) {\n var rest = chunk.subarray(this.s.b);\n this.s = this.s.c * 4;\n this.push(rest, final);\n return;\n }\n }\n }\n else if (final)\n err(5);\n };\n return Decompress;\n}());\nexport { Decompress };\n",
|
|
6
6
|
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Cross-runtime zstd compression/decompression.\n *\n * Decompression order of preference: Bun.zstd → node:zlib zstd (Node 22.15+,\n * Deno 2.6.9+) → fzstd pure-JS fallback. The fzstd fallback exists so\n * Cloudflare workerd — which has no native zstd — can still decode\n * `Content-Encoding: zstd` request bodies (the DuckDB VGI extension always\n * sends them). fzstd is decompression-only, so compression on workerd still\n * throws.\n */\n\nimport { decompress as fzstdDecompress } from \"fzstd\";\n\n// Resolve node:zlib via indirect-string require so esbuild/wrangler can't\n// trace it statically. On workerd we want the fzstd path, not a node:zlib\n// import that wouldn't have zstd anyway.\nconst _NODE_ZLIB_MOD = \"node:zlib\";\nconst isBun = typeof globalThis.Bun !== \"undefined\";\nfunction _loadZlibOrNull(): any | null {\n const req: any = (import.meta as any).require ?? (globalThis as any).require ?? null;\n if (!req) return null;\n try {\n return req(_NODE_ZLIB_MOD);\n } catch {\n return null;\n }\n}\n\n/** Return true when the current runtime can produce zstd-compressed output.\n *\n * Bun has `Bun.zstdCompressSync`; Node ≥22.15 / Deno ≥2.6.9 expose it via\n * `node:zlib`. Other runtimes (workerd, older Node) have no encoder. The\n * fzstd fallback is decompress-only so it doesn't count.\n */\nexport function isZstdCompressAvailable(): boolean {\n if (isBun) return true;\n const zlib = _loadZlibOrNull();\n return typeof zlib?.zstdCompressSync === \"function\";\n}\n\n/** Compress data with zstd at the given level (1-22). */\nexport async function zstdCompress(data: Uint8Array, level: number): Promise<Uint8Array<ArrayBuffer>> {\n if (isBun) {\n return new Uint8Array(Bun.zstdCompressSync(data, { level }));\n }\n const zlib = _loadZlibOrNull();\n const fn = zlib?.zstdCompressSync;\n if (typeof fn !== \"function\") {\n throw new Error(\n \"zstd compression is not available in this runtime. \" +\n \"Requires Bun or Node.js >= 22.15 / Deno >= 2.6.9. \" +\n \"(workerd has no native zstd encoder; fzstd is decompress-only.)\",\n );\n }\n return new Uint8Array(\n fn(data, {\n params: {\n [zlib.constants.ZSTD_c_compressionLevel]: level,\n },\n }),\n );\n}\n\n/**\n * Decompress zstd-compressed data, optionally bounding the output size.\n *\n * Zstd frames carry the decompressed size in the header and decompressors\n * trust it eagerly: a ~3 KB compressed body claiming 100 MB output would\n * allocate 100 MB. When `maxOutputSize` is supplied, this helper:\n *\n * 1. Reads `Frame_Content_Size` from the frame header. If declared and\n * above the cap, refuses *before* allocation with a clear error.\n * 2. Decompresses, then asserts the actual output size is also under the\n * cap (covers frames whose size is not in the header — a streaming\n * cap would be tighter, but neither Bun.zstdDecompressSync nor\n * node:zlib's sync API exposes one, so we use the post-check).\n *\n * Mirrors the Python server-side fix in `_decompress_body` and the\n * client-side fix in `external_fetch.fetch_url`.\n */\nexport async function zstdDecompress(data: Uint8Array, maxOutputSize?: number): Promise<Uint8Array<ArrayBuffer>> {\n if (maxOutputSize != null) {\n const declared = readZstdFrameContentSize(data);\n if (declared !== null && declared > maxOutputSize) {\n throw new Error(`zstd decompressed size (${declared}) would exceed cap (${maxOutputSize})`);\n }\n }\n\n let out: Uint8Array<ArrayBuffer>;\n if (isBun) {\n out = new Uint8Array(Bun.zstdDecompressSync(data));\n } else {\n const zlib = _loadZlibOrNull();\n const fn = zlib?.zstdDecompressSync;\n if (typeof fn === \"function\") {\n out = new Uint8Array(fn(data));\n } else {\n // workerd path: no native zstd, fall back to the pure-JS decoder.\n // fzstd is decompress-only and synchronous; cap-checking already ran\n // above against the frame header, but pure-JS decode of large inputs\n // is slow — keep the upstream maxOutputSize tight.\n //\n // CRITICAL: copy into a freshly-allocated ArrayBuffer so byteOffset is\n // 0. fzstd internally returns subarray views with arbitrary byteOffset\n // (often not 8-aligned), and downstream Arrow IPC readers create\n // BigInt64Array views relative to the buffer's byteOffset — those\n // throw `start offset of BigInt64Array should be a multiple of 8` if\n // the underlying offset isn't 8-aligned.\n const decoded = fzstdDecompress(data);\n out = new Uint8Array(decoded.byteLength);\n out.set(decoded);\n }\n }\n\n if (maxOutputSize != null && out.byteLength > maxOutputSize) {\n throw new Error(`zstd decompressed size (${out.byteLength}) exceeds cap (${maxOutputSize})`);\n }\n return out;\n}\n\n/**\n * Parse `Frame_Content_Size` from a zstd frame header.\n *\n * Returns the declared decompressed size, or `null` if the frame header\n * does not include it (frames may omit it for streaming compression) or\n * the input is too short / not a valid zstd frame magic.\n *\n * Frame format (RFC 8478): magic(4) | FHD(1) | window_desc(0|1) |\n * dict_id(0|1|2|4) | frame_content_size(0|1|2|4|8). FCS_size depends on\n * FCS_field_size (FHD bits 6-7) and Single_Segment_flag (FHD bit 5).\n */\nfunction readZstdFrameContentSize(data: Uint8Array): number | null {\n if (data.length < 6) return null;\n // Magic: 0xFD2FB528 little-endian.\n if (data[0] !== 0x28 || data[1] !== 0xb5 || data[2] !== 0x2f || data[3] !== 0xfd) {\n return null;\n }\n const fhd = data[4];\n const fcsFieldSize = (fhd >> 6) & 0x3;\n const singleSegment = ((fhd >> 5) & 0x1) === 1;\n const dictIdFlag = fhd & 0x3;\n // Per spec: FCS_size = 0 → 0 unless Single_Segment_flag is set, then 1.\n const fcsSize = fcsFieldSize === 0 ? (singleSegment ? 1 : 0) : fcsFieldSize === 1 ? 2 : fcsFieldSize === 2 ? 4 : 8;\n if (fcsSize === 0) return null;\n\n const windowDescSize = singleSegment ? 0 : 1;\n const dictIdSize = dictIdFlag === 0 ? 0 : dictIdFlag === 1 ? 1 : dictIdFlag === 2 ? 2 : 4;\n const fcsOffset = 5 + windowDescSize + dictIdSize;\n if (data.length < fcsOffset + fcsSize) return null;\n\n let fcs = 0n;\n for (let i = 0; i < fcsSize; i++) {\n fcs |= BigInt(data[fcsOffset + i]) << BigInt(i * 8);\n }\n // FCS_field_size == 1 (size 2) carries an offset of 256.\n if (fcsSize === 2) fcs += 256n;\n if (fcs > BigInt(Number.MAX_SAFE_INTEGER)) return Number.MAX_SAFE_INTEGER;\n return Number(fcs);\n}\n",
|
|
7
|
-
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n *
|
|
8
|
-
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\n/** Error thrown when the server encounters an RPC protocol error. */\nexport class RpcError extends Error {\n constructor(\n /** Remote error class name (e.g. `\"ValueError\"`). */\n public readonly errorType: string,\n /** Human-readable message from the remote error. */\n public readonly errorMessage: string,\n /** Remote stack-trace text, or an empty string when unavailable. */\n public readonly remoteTraceback: string,\n ) {\n super(`${errorType}: ${errorMessage}`);\n this.name = \"RpcError\";\n }\n}\n\n/** Error thrown when the client sends an unsupported request version. */\nexport class VersionError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"VersionError\";\n }\n}\n\n/** `vgi_rpc.error_kind` batch-metadata value for {@link MethodNotImplementedError}.\n * Mirrors Python's `vgi_rpc.metadata.ERROR_KIND_*` constants. */\nexport const ERROR_KIND_METHOD_NOT_IMPLEMENTED = \"method_not_implemented\";\n/** `vgi_rpc.error_kind` batch-metadata value for {@link SessionLostError}. */\nexport const ERROR_KIND_SESSION_LOST = \"session_lost\";\n/** `vgi_rpc.error_kind` batch-metadata value for {@link ServerDrainingError}. */\nexport const ERROR_KIND_SERVER_DRAINING = \"server_draining\";\nexport const ERROR_KIND_PROTOCOL_VERSION_MISMATCH = \"protocol_version_mismatch\";\n\n/** Raised when the client's declared `vgi_rpc.protocol_version` is\n * incompatible with the server's. Subclass of `VersionError` so existing\n * catch sites continue to write a typed error stream and keep serving.\n * Carries a directional message that tells the reader which side to\n * upgrade. Mirrors Python's `vgi_rpc.rpc.ProtocolVersionError`. */\nexport class ProtocolVersionError extends VersionError {\n static readonly errorKind = ERROR_KIND_PROTOCOL_VERSION_MISMATCH;\n readonly errorKind = ERROR_KIND_PROTOCOL_VERSION_MISMATCH;\n constructor(message: string) {\n super(message);\n this.name = \"ProtocolVersionError\";\n }\n}\n\nconst SEMVER_REGEX = /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$/;\n\n/** Parse a canonical semver string into `[major, minor, patch]`. Throws on\n * any input that isn't `MAJOR.MINOR.PATCH` with non-negative integers and\n * no leading zeros (except literal `0`). No prereleases, no build metadata.\n * Mirrors Python's `vgi_rpc.metadata.parse_version`. */\nexport function parseProtocolVersion(value: string): [number, number, number] {\n const m = SEMVER_REGEX.exec(value);\n if (!m) {\n throw new Error(\n `Invalid protocol version '${value}': expected canonical semver ` +\n \"MAJOR.MINOR.PATCH with non-negative integers and no leading zeros \" +\n \"(no prereleases or build metadata).\",\n );\n }\n return [Number(m[1]), Number(m[2]), Number(m[3])];\n}\n\n/** Raised when a client invokes a method the server does not implement.\n *\n * Mirrors Python's `vgi_rpc.rpc.MethodNotImplementedError`. The static\n * `errorKind` is hoisted onto the error batch metadata as\n * `vgi_rpc.error_kind` so clients can branch on the typed marker without\n * string-matching the message.\n */\nexport class MethodNotImplementedError extends Error {\n /** Typed `vgi_rpc.error_kind` marker for this error class. */\n static readonly errorKind = ERROR_KIND_METHOD_NOT_IMPLEMENTED;\n /** Typed `vgi_rpc.error_kind` marker hoisted onto the error batch metadata. */\n readonly errorKind = ERROR_KIND_METHOD_NOT_IMPLEMENTED;\n constructor(message: string) {\n super(message);\n this.name = \"MethodNotImplementedError\";\n }\n}\n\n/** Raised when a sticky session token is malformed, expired, evicted, or\n * bound to a different worker / principal. HTTP-only. */\nexport class SessionLostError extends Error {\n /** Typed `vgi_rpc.error_kind` marker for this error class. */\n static readonly errorKind = ERROR_KIND_SESSION_LOST;\n /** Typed `vgi_rpc.error_kind` marker hoisted onto the error batch metadata. */\n readonly errorKind = ERROR_KIND_SESSION_LOST;\n constructor(message: string) {\n super(message);\n this.name = \"SessionLostError\";\n }\n}\n\n/** Raised when `ctx.openSession` is called while the server is draining. */\nexport class ServerDrainingError extends Error {\n /** Typed `vgi_rpc.error_kind` marker for this error class. */\n static readonly errorKind = ERROR_KIND_SERVER_DRAINING;\n /** Typed `vgi_rpc.error_kind` marker hoisted onto the error batch metadata. */\n readonly errorKind = ERROR_KIND_SERVER_DRAINING;\n constructor(message: string) {\n super(message);\n this.name = \"ServerDrainingError\";\n }\n}\n",
|
|
9
|
-
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\nimport { RpcError } from \"./errors.js\";\n\n/** Authentication context available to RPC handlers. */\nexport class AuthContext {\n /** Authentication domain/realm that vouched for the principal; empty string\n * when anonymous. */\n readonly domain: string;\n /** True when the request carried valid credentials. */\n readonly authenticated: boolean;\n /** Authenticated principal identifier, or `null` when anonymous. */\n readonly principal: string | null;\n /** Arbitrary verified claims about the principal (e.g. decoded JWT claims). */\n readonly claims: Record<string, any>;\n\n constructor(domain: string, authenticated: boolean, principal: string | null, claims: Record<string, any> = {}) {\n this.domain = domain;\n this.authenticated = authenticated;\n this.principal = principal;\n this.claims = claims;\n }\n\n /** Create an unauthenticated (anonymous) context. */\n static anonymous(): AuthContext {\n return new AuthContext(\"\", false, null);\n }\n\n /** Throw an RpcError if this context is not authenticated. */\n requireAuthenticated(): void {\n if (!this.authenticated) {\n throw new RpcError(\"AuthenticationError\", \"Authentication required\", \"\");\n }\n }\n}\n",
|
|
7
|
+
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Raw-TCP RPC client.\n *\n * Node/Bun only — statically imports `node:net`, so this module is exported\n * exclusively from the node barrel (`src/index.ts`), never from the\n * runtime-agnostic core (which is re-exported into browser/workerd bundles).\n *\n * SECURITY: raw TCP carries no authentication or TLS — connect only to\n * trusted endpoints. Use `httpConnect` for untrusted networks.\n */\n\nimport { connect } from \"node:net\";\nimport type { RpcClient } from \"./connect.js\";\nimport { pipeConnect } from \"./pipe.js\";\nimport type { TcpConnectOptions } from \"./types.js\";\n\n/**\n * Connect to a vgi-rpc server over a raw TCP socket and wrap it with\n * {@link pipeConnect}. The network analog of `subprocessConnect`: identical\n * lockstep raw Arrow-IPC framing, only the transport differs. Nagle's\n * algorithm is disabled (`setNoDelay(true)`) so lockstep requests are not\n * delayed coalescing writes. The returned client's {@link RpcClient.close}\n * also destroys the socket.\n *\n * SECURITY: raw TCP carries **no authentication or TLS** — only connect to\n * trusted endpoints. Use `httpConnect` for untrusted networks.\n *\n * @param host Hostname or IP address of the TCP server.\n * @param port TCP port of the server.\n * @param options Optional log/external-location configuration.\n */\nexport function tcpConnect(host: string, port: number, options?: TcpConnectOptions): RpcClient {\n const socket = connect({ host, port });\n socket.setNoDelay(true);\n // Swallow socket errors so an EPIPE/ECONNRESET doesn't crash the process;\n // the in-flight call surfaces the failure as an EOF on the reader instead.\n socket.on(\"error\", () => {});\n\n const readable = socket as unknown as ReadableStream<Uint8Array>;\n const writable = {\n write(data: Uint8Array): void {\n socket.write(data);\n },\n end(): void {\n socket.end();\n },\n };\n\n const client = pipeConnect(readable, writable, {\n onLog: options?.onLog,\n externalLocation: options?.externalLocation,\n });\n\n const originalClose = client.close;\n client.close = () => {\n originalClose.call(client);\n try {\n socket.destroy();\n } catch {\n // Socket may already be closed\n }\n };\n\n return client;\n}\n",
|
|
8
|
+
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n Field,\n makeData,\n RecordBatch,\n RecordBatchStreamWriter,\n Schema,\n Struct,\n vectorFromArray,\n} from \"@query-farm/apache-arrow\";\nimport { DESCRIBE_METHOD_NAME } from \"../constants.js\";\nimport { RpcError } from \"../errors.js\";\nimport { type ExternalLocationConfig, isExternalLocationBatch, resolveExternalLocation } from \"../external.js\";\nimport { serializeIpcStream } from \"../http/common.js\";\nimport { IpcStreamReader } from \"../wire/reader.js\";\nimport type { RpcClient } from \"./connect.js\";\nimport { type MethodInfo, parseDescribeResponse, type ServiceDescription } from \"./introspect.js\";\nimport { buildRequestIpc, dispatchLogOrError, extractBatchRows, inferArrowType } from \"./ipc.js\";\nimport type { LogMessage, PipeConnectOptions, StreamSession, SubprocessConnectOptions } from \"./types.js\";\n\n// ---------------------------------------------------------------------------\n// Writable abstraction\n// ---------------------------------------------------------------------------\n\ninterface PipeWritable {\n write(data: Uint8Array): void;\n flush?(): void;\n end(): void;\n}\n\ntype WriteFn = (bytes: Uint8Array) => void;\n\n// ---------------------------------------------------------------------------\n// PipeIncrementalWriter — batch-by-batch IPC writing for lockstep streaming\n// ---------------------------------------------------------------------------\n\nclass PipeIncrementalWriter {\n private writer: RecordBatchStreamWriter;\n private writeFn: WriteFn;\n private closed = false;\n\n constructor(writeFn: WriteFn, schema: Schema) {\n this.writeFn = writeFn;\n this.writer = new RecordBatchStreamWriter();\n this.writer.reset(undefined, schema);\n this.drain(); // flushes schema message\n }\n\n write(batch: RecordBatch): void {\n if (this.closed) throw new Error(\"PipeIncrementalWriter already closed\");\n (this.writer as any)._writeRecordBatch(batch);\n this.drain();\n }\n\n close(): void {\n if (this.closed) return;\n this.closed = true;\n // EOS marker: continuation (0xFFFFFFFF) + metadata length (0x00000000)\n const eos = new Uint8Array(new Int32Array([-1, 0]).buffer);\n this.writeFn(eos);\n }\n\n private drain(): void {\n const values = (this.writer as any)._sink._values as Uint8Array[];\n for (const chunk of values) {\n this.writeFn(chunk);\n }\n values.length = 0;\n }\n}\n\n// ---------------------------------------------------------------------------\n// PipeStreamSession — lockstep streaming over pipes\n// ---------------------------------------------------------------------------\n\n/**\n * {@link StreamSession} implementation for the pipe/subprocess transport.\n * Drives lockstep streaming over a single bidirectional pipe: each\n * {@link PipeStreamSession.exchange} or iteration step writes one input batch\n * and reads one output batch. Holds the connection's single-threaded busy lock\n * until closed.\n */\nexport class PipeStreamSession implements StreamSession {\n private _reader: IpcStreamReader;\n private _writeFn: WriteFn;\n private _onLog?: (msg: LogMessage) => void;\n private _header: Record<string, any> | null;\n private _inputWriter: PipeIncrementalWriter | null = null;\n private _inputSchema: Schema | null = null;\n private _outputStreamOpened = false;\n private _closed = false;\n private _outputSchema: Schema;\n private _releaseBusy: () => void;\n private _setDrainPromise: (p: Promise<void>) => void;\n private _externalConfig?: ExternalLocationConfig;\n\n constructor(opts: {\n reader: IpcStreamReader;\n writeFn: WriteFn;\n onLog?: (msg: LogMessage) => void;\n header: Record<string, any> | null;\n outputSchema: Schema;\n releaseBusy: () => void;\n setDrainPromise: (p: Promise<void>) => void;\n externalConfig?: ExternalLocationConfig;\n }) {\n this._reader = opts.reader;\n this._writeFn = opts.writeFn;\n this._onLog = opts.onLog;\n this._header = opts.header;\n this._outputSchema = opts.outputSchema;\n this._releaseBusy = opts.releaseBusy;\n this._setDrainPromise = opts.setDrainPromise;\n this._externalConfig = opts.externalConfig;\n }\n\n /** The stream's one-time header row, or `null` if the method declares no header. */\n get header(): Record<string, any> | null {\n return this._header;\n }\n\n /**\n * Read output batches from the server until a data batch is found.\n * Dispatches log/error batches along the way.\n * Returns null when server closes output stream (EOS).\n */\n private async _readOutputBatch(): Promise<RecordBatch | null> {\n while (true) {\n const batch = await this._reader.readNextBatch();\n if (batch === null) return null; // Server closed output stream\n\n if (batch.numRows === 0) {\n // Check for external location pointer batch\n if (isExternalLocationBatch(batch as any)) {\n return (await resolveExternalLocation(batch as any, this._externalConfig)) as any;\n }\n // Check if it's a log/error batch. If so, dispatch and continue.\n // Otherwise it's a zero-row data batch — return it.\n if (dispatchLogOrError(batch as any, this._onLog)) {\n continue;\n }\n }\n\n return batch as any;\n }\n }\n\n /**\n * Ensure the server's output stream is opened for reading.\n * Must be called AFTER sending the first input batch, because\n * the server's output schema may not be flushed until it processes\n * the first input and writes the first output batch.\n */\n private async _ensureOutputStream(): Promise<void> {\n if (this._outputStreamOpened) return;\n this._outputStreamOpened = true;\n const schema = await this._reader.openNextStream();\n if (!schema) {\n throw new RpcError(\"ProtocolError\", \"Expected output stream but got EOF\", \"\");\n }\n }\n\n /**\n * Send an exchange request and return the data rows.\n */\n async exchange(input: Record<string, any>[]): Promise<Record<string, any>[]> {\n if (this._closed) {\n throw new RpcError(\"ProtocolError\", \"Stream session is closed\", \"\");\n }\n\n // Build input batch\n let inputSchema: Schema;\n let batch: RecordBatch;\n\n if (input.length === 0) {\n // Zero-row exchange: use cached input schema from a prior exchange,\n // then fall back to the output schema from describe. The cached\n // schema is preferred because input and output schemas may differ\n // (e.g. exchange_accumulate: input {value} → output {running_sum, exchange_count}).\n inputSchema = this._inputSchema ?? this._outputSchema;\n const children = inputSchema.fields.map((f) => {\n return makeData({ type: f.type, length: 0, nullCount: 0 });\n });\n const structType = new Struct(inputSchema.fields);\n const data = makeData({\n type: structType,\n length: 0,\n children,\n nullCount: 0,\n });\n batch = new RecordBatch(inputSchema, data);\n } else {\n // Infer schema from first row.\n // Always use nullable fields — the server validates input schemas\n // strictly and its schema typically uses nullable columns.\n const keys = Object.keys(input[0]);\n const fields = keys.map((key) => {\n let sample: any;\n for (const row of input) {\n if (row[key] != null) {\n sample = row[key];\n break;\n }\n }\n const arrowType = inferArrowType(sample);\n return new Field(key, arrowType, /* nullable */ true);\n });\n inputSchema = new Schema(fields);\n\n // Validate schema consistency: all exchanges on the same pipe session\n // share a single IPC stream, so the schema is locked to the first call.\n if (this._inputSchema) {\n const cached = this._inputSchema;\n if (\n cached.fields.length !== inputSchema.fields.length ||\n cached.fields.some((f, i) => f.name !== inputSchema.fields[i].name)\n ) {\n throw new RpcError(\n \"ProtocolError\",\n `Exchange input schema changed: expected [${cached.fields.map((f) => f.name).join(\", \")}] ` +\n `but got [${inputSchema.fields.map((f) => f.name).join(\", \")}]`,\n \"\",\n );\n }\n } else {\n this._inputSchema = inputSchema;\n }\n\n const children = inputSchema.fields.map((f) => {\n const values = input.map((row) => row[f.name]);\n return vectorFromArray(values, f.type).data[0];\n });\n const structType = new Struct(inputSchema.fields);\n const data = makeData({\n type: structType,\n length: input.length,\n children,\n nullCount: 0,\n });\n batch = new RecordBatch(inputSchema, data);\n }\n\n // Lazy-open input writer on first exchange\n if (!this._inputWriter) {\n this._inputWriter = new PipeIncrementalWriter(this._writeFn, inputSchema);\n }\n\n // Write one input batch FIRST, then open output stream.\n // The server may not flush the output schema until it processes the\n // first input batch and writes the first output batch.\n this._inputWriter.write(batch);\n await this._ensureOutputStream();\n\n // Read output batch(es) from server\n try {\n const outputBatch = await this._readOutputBatch();\n if (outputBatch === null) {\n return [];\n }\n return extractBatchRows(outputBatch);\n } catch (e) {\n // On error, clean up the pipe so it's ready for the next request\n await this._cleanup();\n throw e;\n }\n }\n\n /**\n * Clean up after an error: close input, drain output, release busy.\n */\n private async _cleanup(): Promise<void> {\n if (this._closed) return;\n this._closed = true;\n if (this._inputWriter) {\n this._inputWriter.close();\n this._inputWriter = null;\n }\n try {\n if (this._outputStreamOpened) {\n while ((await this._reader.readNextBatch()) !== null) {}\n }\n } catch {\n // Suppress errors during drain\n }\n this._releaseBusy();\n }\n\n /**\n * Iterate over producer stream batches (lockstep).\n */\n async *[Symbol.asyncIterator](): AsyncIterableIterator<Record<string, any>[]> {\n if (this._closed) return;\n\n try {\n // Open input writer with empty schema for tick batches\n const tickSchema = new Schema([]);\n this._inputWriter = new PipeIncrementalWriter(this._writeFn, tickSchema);\n\n // Build a zero-row tick batch\n const structType = new Struct(tickSchema.fields);\n const tickData = makeData({\n type: structType,\n length: 0,\n children: [],\n nullCount: 0,\n });\n const tickBatch = new RecordBatch(tickSchema, tickData);\n\n while (true) {\n // Send one tick FIRST, then open output stream on first iteration.\n // The server may not flush the output schema until it processes the\n // first tick and writes the first output batch.\n this._inputWriter.write(tickBatch);\n await this._ensureOutputStream();\n\n // Read output batch(es)\n const outputBatch = await this._readOutputBatch();\n if (outputBatch === null) {\n // Server finished — EOS on output stream\n break;\n }\n\n yield extractBatchRows(outputBatch);\n }\n } finally {\n // Close input stream if still open\n if (this._inputWriter) {\n this._inputWriter.close();\n this._inputWriter = null;\n }\n // Drain any remaining output batches\n try {\n if (this._outputStreamOpened) {\n while ((await this._reader.readNextBatch()) !== null) {}\n }\n } catch {\n // Suppress errors during drain\n }\n this._closed = true;\n this._releaseBusy();\n }\n }\n\n /**\n * End the stream: close the input side (or send an empty stream if nothing\n * was sent yet) and drain the server's remaining output in the background,\n * releasing the connection's busy lock once the drain completes.\n */\n close(): void {\n if (this._closed) return;\n this._closed = true;\n\n if (this._inputWriter) {\n // Close the input stream (EOS)\n this._inputWriter.close();\n this._inputWriter = null;\n } else {\n // Never iterated/exchanged — send empty schema stream so server unblocks.\n // Server is blocked at reader.openNextStream() waiting for client's input.\n const emptySchema = new Schema([]);\n const ipc = serializeIpcStream(emptySchema, []);\n this._writeFn(ipc);\n }\n\n // Drain remaining output batches asynchronously. Register the drain\n // promise so that the next acquireBusy() waits for it to complete.\n const drainPromise = (async () => {\n try {\n if (!this._outputStreamOpened) {\n const schema = await this._reader.openNextStream();\n if (schema) {\n while ((await this._reader.readNextBatch()) !== null) {}\n }\n } else {\n while ((await this._reader.readNextBatch()) !== null) {}\n }\n } catch {\n // Suppress errors during drain\n } finally {\n this._releaseBusy();\n }\n })();\n this._setDrainPromise(drainPromise);\n }\n}\n\n// ---------------------------------------------------------------------------\n// pipeConnect — create an RpcClient over raw readable/writable streams\n// ---------------------------------------------------------------------------\n\n/**\n * Connect to a vgi-rpc server over a raw bidirectional pipe (a readable stream\n * of server output plus a writable for client input). The connection is\n * single-threaded: only one call or stream may be in flight at a time. The\n * `__describe__` handshake is sent before the reader is opened to avoid deadlock.\n */\nexport function pipeConnect(\n readable: ReadableStream<Uint8Array>,\n writable: PipeWritable,\n options?: PipeConnectOptions,\n): RpcClient {\n const onLog = options?.onLog;\n const externalConfig = options?.externalLocation;\n\n let reader: IpcStreamReader | null = null;\n let readerPromise: Promise<IpcStreamReader> | null = null;\n let methodCache: Map<string, MethodInfo> | null = null;\n let protocolName = \"\";\n let serverProtocolVersion = \"\";\n let _busy = false;\n let _drainPromise: Promise<void> | null = null;\n let closed = false;\n\n const writeFn: WriteFn = (bytes: Uint8Array) => {\n writable.write(bytes);\n writable.flush?.();\n };\n\n // The IpcStreamReader.create() blocks until the first IPC schema arrives\n // on the readable. To avoid deadlock, we must send our first request\n // (the __describe__ call) BEFORE opening the reader. After that, the\n // response bytes are in the pipe buffer and the reader can consume them.\n async function ensureReader(): Promise<IpcStreamReader> {\n if (reader) return reader;\n if (!readerPromise) {\n readerPromise = IpcStreamReader.create(readable);\n }\n reader = await readerPromise;\n return reader;\n }\n\n async function acquireBusy(): Promise<void> {\n // Wait for any pending drain from a previous close()\n if (_drainPromise) {\n await _drainPromise;\n _drainPromise = null;\n }\n if (_busy) {\n throw new Error(\n \"Pipe transport is busy — another call or stream is in progress. \" +\n \"Pipe connections are single-threaded; wait for the current operation to complete.\",\n );\n }\n _busy = true;\n }\n\n function releaseBusy(): void {\n _busy = false;\n }\n\n function setDrainPromise(p: Promise<void>): void {\n _drainPromise = p;\n }\n\n async function ensureMethodCache(): Promise<Map<string, MethodInfo>> {\n if (methodCache) return methodCache;\n\n await acquireBusy();\n try {\n // Send __describe__ request BEFORE opening the reader.\n // IpcStreamReader.create() blocks on reader.open() which reads the\n // first schema message. The server won't write anything until it\n // receives a request. Sending first avoids deadlock.\n const emptySchema = new Schema([]);\n const body = buildRequestIpc(emptySchema, {}, DESCRIBE_METHOD_NAME);\n writeFn(body);\n\n const r = await ensureReader();\n\n // Read response (first IPC stream = describe response schema + batches)\n // ensureReader() consumed the schema via open(). Use readStream()\n // which — on the first call (initialized=false) — returns the current\n // stream without calling reset().\n const response = await r.readStream();\n if (!response) {\n throw new Error(\"EOF reading __describe__ response\");\n }\n\n const desc = await parseDescribeResponse(response.batches as any, onLog);\n protocolName = desc.protocolName;\n serverProtocolVersion = desc.protocolVersion;\n methodCache = new Map(desc.methods.map((m) => [m.name, m]));\n return methodCache;\n } finally {\n releaseBusy();\n }\n }\n\n return {\n async call(method: string, params?: Record<string, any>): Promise<Record<string, any> | null> {\n const methods = await ensureMethodCache();\n await acquireBusy();\n try {\n const info = methods.get(method);\n if (!info) {\n throw new Error(`Unknown method: '${method}'`);\n }\n\n const r = await ensureReader();\n\n // Apply defaults\n const fullParams = { ...(info.defaults ?? {}), ...(params ?? {}) };\n\n // Send request\n const body = buildRequestIpc(info.paramsSchema, fullParams, method, { protocolVersion: serverProtocolVersion });\n writeFn(body);\n\n // Read response\n const response = await r.readStream();\n if (!response) {\n throw new Error(\"EOF reading response\");\n }\n\n // Process batches: dispatch logs, resolve external pointers, find result\n let resultBatch: RecordBatch | null = null;\n for (let batch of response.batches as any[]) {\n if (batch.numRows === 0) {\n if (isExternalLocationBatch(batch)) {\n batch = await resolveExternalLocation(batch, externalConfig);\n } else {\n dispatchLogOrError(batch, onLog);\n continue;\n }\n }\n resultBatch = batch;\n }\n\n if (!resultBatch) {\n return null;\n }\n\n const rows = extractBatchRows(resultBatch);\n if (rows.length === 0) return null;\n\n if (info.resultSchema.fields.length === 0) return null;\n\n return rows[0];\n } finally {\n releaseBusy();\n }\n },\n\n async stream(method: string, params?: Record<string, any>): Promise<StreamSession> {\n const methods = await ensureMethodCache();\n await acquireBusy();\n\n try {\n const info = methods.get(method);\n if (!info) {\n throw new Error(`Unknown method: '${method}'`);\n }\n\n const r = await ensureReader();\n\n // Apply defaults\n const fullParams = { ...(info.defaults ?? {}), ...(params ?? {}) };\n\n // Send init request (params as a complete IPC stream)\n const body = buildRequestIpc(info.paramsSchema, fullParams, method, { protocolVersion: serverProtocolVersion });\n writeFn(body);\n\n // Read header if method has headerSchema\n let header: Record<string, any> | null = null;\n if (info.headerSchema) {\n const headerStream = await r.readStream();\n if (headerStream) {\n for (const batch of headerStream.batches as any[]) {\n if (batch.numRows === 0) {\n dispatchLogOrError(batch, onLog);\n continue;\n }\n const rows = extractBatchRows(batch);\n if (rows.length > 0) {\n header = rows[0];\n }\n }\n }\n }\n\n const outputSchema = info.outputSchema ?? info.resultSchema;\n\n // Don't release busy here — PipeStreamSession owns the lock\n // and will release it when done\n return new PipeStreamSession({\n reader: r,\n writeFn,\n onLog,\n header,\n outputSchema,\n releaseBusy,\n setDrainPromise,\n externalConfig,\n });\n } catch (e) {\n // Init error (e.g., server raised exception during init).\n // Send empty input stream so server's drain unblocks, then\n // drain the server's output stream if needed.\n try {\n const r = await ensureReader();\n const emptySchema = new Schema([]);\n const ipc = serializeIpcStream(emptySchema, []);\n writeFn(ipc);\n // Drain server's output stream (error response + EOS)\n const outStream = await r.readStream();\n // outStream may be null or contain remaining batches — just consume\n void outStream;\n } catch {\n // Suppress errors during cleanup\n }\n releaseBusy();\n throw e;\n }\n },\n\n async describe(): Promise<ServiceDescription> {\n const methods = await ensureMethodCache();\n return {\n protocolName,\n protocolVersion: serverProtocolVersion,\n methods: [...methods.values()],\n };\n },\n\n close(): void {\n if (closed) return;\n closed = true;\n writable.end();\n },\n };\n}\n\n// ---------------------------------------------------------------------------\n// subprocessConnect — spawn a process and wrap with pipeConnect\n// ---------------------------------------------------------------------------\n\n/**\n * Spawn a server process (via `Bun.spawn`) and connect to it over its\n * stdin/stdout using {@link pipeConnect}. The returned client's\n * {@link RpcClient.close} also kills the subprocess.\n */\nexport function subprocessConnect(cmd: string[], options?: SubprocessConnectOptions): RpcClient {\n const proc = Bun.spawn(cmd, {\n stdin: \"pipe\",\n stdout: \"pipe\",\n stderr: options?.stderr ?? \"ignore\",\n cwd: options?.cwd,\n env: options?.env ? { ...process.env, ...options.env } : undefined,\n });\n\n const stdout = proc.stdout as ReadableStream<Uint8Array>;\n\n const writable: PipeWritable = {\n write(data: Uint8Array) {\n (proc.stdin as any).write(data);\n },\n flush() {\n (proc.stdin as any).flush();\n },\n end() {\n (proc.stdin as any).end();\n },\n };\n\n const client = pipeConnect(stdout, writable, {\n onLog: options?.onLog,\n externalLocation: options?.externalLocation,\n });\n\n // Wrap close to also kill the subprocess\n const originalClose = client.close;\n client.close = () => {\n originalClose.call(client);\n try {\n proc.kill();\n } catch {\n // Process may have already exited\n }\n };\n\n return client;\n}\n",
|
|
10
9
|
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\n// Well-known metadata keys matching Python's metadata.py.\n\n/** Batch-metadata key carrying the invoked RPC method name. */\nexport const RPC_METHOD_KEY = \"vgi_rpc.method\";\n/** Batch-metadata key carrying a log batch's severity level. */\nexport const LOG_LEVEL_KEY = \"vgi_rpc.log_level\";\n/** Batch-metadata key carrying a log batch's message text. */\nexport const LOG_MESSAGE_KEY = \"vgi_rpc.log_message\";\n/** Batch-metadata key carrying a log batch's structured extra fields. */\nexport const LOG_EXTRA_KEY = \"vgi_rpc.log_extra\";\n/** Batch-metadata key carrying the wire request-framing version. */\nexport const REQUEST_VERSION_KEY = \"vgi_rpc.request_version\";\n/** Current wire request-framing version. Distinct from the application-level\n * {@link PROTOCOL_VERSION_KEY protocol version}. */\nexport const REQUEST_VERSION = \"1\";\n\n/** Batch-metadata key identifying the server instance that produced a batch. */\nexport const SERVER_ID_KEY = \"vgi_rpc.server_id\";\n/** Batch-metadata key carrying the client-supplied request id. */\nexport const REQUEST_ID_KEY = \"vgi_rpc.request_id\";\n\n/** Batch-metadata key carrying the service / protocol name. */\nexport const PROTOCOL_NAME_KEY = \"vgi_rpc.protocol_name\";\n/** Batch-metadata key carrying the `__describe__` response schema version. */\nexport const DESCRIBE_VERSION_KEY = \"vgi_rpc.describe_version\";\nexport const PROTOCOL_HASH_KEY = \"vgi_rpc.protocol_hash\";\n/** Current `__describe__` response schema version (the slim 8-column schema). */\nexport const DESCRIBE_VERSION = \"4\";\n\n/** Application protocol surface version. Carried on every request batch from\n * a client bound to a Protocol that declares `protocolVersion`; also emitted\n * in the __describe__ response metadata. Format: canonical semver\n * MAJOR.MINOR.PATCH. Enforced at the dispatch boundary on the server: exact\n * major+minor match required, patch ignored. Distinct from `REQUEST_VERSION`\n * (wire framing). Mirrors Python's `PROTOCOL_VERSION_KEY`. */\nexport const PROTOCOL_VERSION_KEY = \"vgi_rpc.protocol_version\";\n\n/** Reserved method name for the introspection (`__describe__`) call. */\nexport const DESCRIBE_METHOD_NAME = \"__describe__\";\n\n/** Batch-metadata key carrying the base64-encoded stream continuation/state token. */\nexport const STATE_KEY = \"vgi_rpc.stream_state#b64\";\nexport const CANCEL_KEY = \"vgi_rpc.cancel\";\n\nexport const LOCATION_KEY = \"vgi_rpc.location\";\nexport const LOCATION_SHA256_KEY = \"vgi_rpc.location.sha256\";\n\n/** HTTP response header set when an RPC error is returned over the HTTP transport. */\nexport const RPC_ERROR_HEADER = \"X-VGI-RPC-Error\";\n\n/** Top-level metadata key on an EXCEPTION batch identifying the error category.\n * Hoisted by `buildErrorBatch` when the thrown error has a static or instance\n * `errorKind` property. Mirrors Python's `vgi_rpc.metadata.ERROR_KIND_KEY`. */\nexport const ERROR_KIND_KEY = \"vgi_rpc.error_kind\";\n",
|
|
10
|
+
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\n/** Error thrown when the server encounters an RPC protocol error. */\nexport class RpcError extends Error {\n constructor(\n /** Remote error class name (e.g. `\"ValueError\"`). */\n public readonly errorType: string,\n /** Human-readable message from the remote error. */\n public readonly errorMessage: string,\n /** Remote stack-trace text, or an empty string when unavailable. */\n public readonly remoteTraceback: string,\n ) {\n super(`${errorType}: ${errorMessage}`);\n this.name = \"RpcError\";\n }\n}\n\n/** Error thrown when the client sends an unsupported request version. */\nexport class VersionError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"VersionError\";\n }\n}\n\n/** `vgi_rpc.error_kind` batch-metadata value for {@link MethodNotImplementedError}.\n * Mirrors Python's `vgi_rpc.metadata.ERROR_KIND_*` constants. */\nexport const ERROR_KIND_METHOD_NOT_IMPLEMENTED = \"method_not_implemented\";\n/** `vgi_rpc.error_kind` batch-metadata value for {@link SessionLostError}. */\nexport const ERROR_KIND_SESSION_LOST = \"session_lost\";\n/** `vgi_rpc.error_kind` batch-metadata value for {@link ServerDrainingError}. */\nexport const ERROR_KIND_SERVER_DRAINING = \"server_draining\";\nexport const ERROR_KIND_PROTOCOL_VERSION_MISMATCH = \"protocol_version_mismatch\";\n\n/** Raised when the client's declared `vgi_rpc.protocol_version` is\n * incompatible with the server's. Subclass of `VersionError` so existing\n * catch sites continue to write a typed error stream and keep serving.\n * Carries a directional message that tells the reader which side to\n * upgrade. Mirrors Python's `vgi_rpc.rpc.ProtocolVersionError`. */\nexport class ProtocolVersionError extends VersionError {\n static readonly errorKind = ERROR_KIND_PROTOCOL_VERSION_MISMATCH;\n readonly errorKind = ERROR_KIND_PROTOCOL_VERSION_MISMATCH;\n constructor(message: string) {\n super(message);\n this.name = \"ProtocolVersionError\";\n }\n}\n\nconst SEMVER_REGEX = /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$/;\n\n/** Parse a canonical semver string into `[major, minor, patch]`. Throws on\n * any input that isn't `MAJOR.MINOR.PATCH` with non-negative integers and\n * no leading zeros (except literal `0`). No prereleases, no build metadata.\n * Mirrors Python's `vgi_rpc.metadata.parse_version`. */\nexport function parseProtocolVersion(value: string): [number, number, number] {\n const m = SEMVER_REGEX.exec(value);\n if (!m) {\n throw new Error(\n `Invalid protocol version '${value}': expected canonical semver ` +\n \"MAJOR.MINOR.PATCH with non-negative integers and no leading zeros \" +\n \"(no prereleases or build metadata).\",\n );\n }\n return [Number(m[1]), Number(m[2]), Number(m[3])];\n}\n\n/** Raised when a client invokes a method the server does not implement.\n *\n * Mirrors Python's `vgi_rpc.rpc.MethodNotImplementedError`. The static\n * `errorKind` is hoisted onto the error batch metadata as\n * `vgi_rpc.error_kind` so clients can branch on the typed marker without\n * string-matching the message.\n */\nexport class MethodNotImplementedError extends Error {\n /** Typed `vgi_rpc.error_kind` marker for this error class. */\n static readonly errorKind = ERROR_KIND_METHOD_NOT_IMPLEMENTED;\n /** Typed `vgi_rpc.error_kind` marker hoisted onto the error batch metadata. */\n readonly errorKind = ERROR_KIND_METHOD_NOT_IMPLEMENTED;\n constructor(message: string) {\n super(message);\n this.name = \"MethodNotImplementedError\";\n }\n}\n\n/** Raised when a sticky session token is malformed, expired, evicted, or\n * bound to a different worker / principal. HTTP-only. */\nexport class SessionLostError extends Error {\n /** Typed `vgi_rpc.error_kind` marker for this error class. */\n static readonly errorKind = ERROR_KIND_SESSION_LOST;\n /** Typed `vgi_rpc.error_kind` marker hoisted onto the error batch metadata. */\n readonly errorKind = ERROR_KIND_SESSION_LOST;\n constructor(message: string) {\n super(message);\n this.name = \"SessionLostError\";\n }\n}\n\n/** Raised when `ctx.openSession` is called while the server is draining. */\nexport class ServerDrainingError extends Error {\n /** Typed `vgi_rpc.error_kind` marker for this error class. */\n static readonly errorKind = ERROR_KIND_SERVER_DRAINING;\n /** Typed `vgi_rpc.error_kind` marker hoisted onto the error batch metadata. */\n readonly errorKind = ERROR_KIND_SERVER_DRAINING;\n constructor(message: string) {\n super(message);\n this.name = \"ServerDrainingError\";\n }\n}\n",
|
|
11
11
|
"// arrow-js backend for vgi-rpc-typescript's Arrow facade.\n\nimport {\n Binary as A_Binary,\n Bool as A_Bool,\n Data as A_Data,\n type DataType as A_DataType,\n DataType as A_DataTypeNS,\n DateDay as A_DateDay,\n Decimal as A_Decimal,\n Dictionary as A_Dictionary,\n DurationMicrosecond as A_DurationMicrosecond,\n Field as A_Field,\n FixedSizeBinary as A_FixedSizeBinary,\n Float32 as A_Float32,\n Float64 as A_Float64,\n Int8 as A_Int8,\n Int16 as A_Int16,\n Int32 as A_Int32,\n Int64 as A_Int64,\n LargeBinary as A_LargeBinary,\n LargeUtf8 as A_LargeUtf8,\n List as A_List,\n Map_ as A_Map,\n Null as A_Null,\n RecordBatch as A_RecordBatch,\n Schema as A_Schema,\n Struct as A_Struct,\n TimeMicrosecond as A_TimeMicrosecond,\n Timestamp as A_Timestamp,\n TimeUnit as A_TimeUnit,\n Type as A_Type,\n Uint8 as A_Uint8,\n Uint16 as A_Uint16,\n Uint32 as A_Uint32,\n Uint64 as A_Uint64,\n Utf8 as A_Utf8,\n makeData as a_makeData,\n vectorFromArray as a_vectorFromArray,\n RecordBatchReader,\n RecordBatchStreamWriter,\n} from \"@query-farm/apache-arrow\";\n\n// Local type-only helpers used by conformBatchToSchema.\ntype _NeedsCast = (src: A_DataType, dst: A_DataType) => boolean;\n\nimport type {\n IncrementalEncoder,\n VgiBackendInfo,\n VgiBatch,\n VgiColumnData,\n VgiDataType,\n VgiField,\n VgiSchema,\n} from \"../types.js\";\n\nexport const backend: VgiBackendInfo = { name: \"arrow-js\", opaquePassthrough: true };\n\n// ----- Type factories ------------------------------------------------------\n\nexport const nullType = (): VgiDataType => new A_Null() as unknown as VgiDataType;\nexport const bool = (): VgiDataType => new A_Bool() as unknown as VgiDataType;\nexport const int8 = (): VgiDataType => new A_Int8() as unknown as VgiDataType;\nexport const int16 = (): VgiDataType => new A_Int16() as unknown as VgiDataType;\nexport const int32 = (): VgiDataType => new A_Int32() as unknown as VgiDataType;\nexport const int64 = (): VgiDataType => new A_Int64() as unknown as VgiDataType;\nexport const uint8 = (): VgiDataType => new A_Uint8() as unknown as VgiDataType;\nexport const uint16 = (): VgiDataType => new A_Uint16() as unknown as VgiDataType;\nexport const uint32 = (): VgiDataType => new A_Uint32() as unknown as VgiDataType;\nexport const uint64 = (): VgiDataType => new A_Uint64() as unknown as VgiDataType;\nexport const float32 = (): VgiDataType => new A_Float32() as unknown as VgiDataType;\nexport const float64 = (): VgiDataType => new A_Float64() as unknown as VgiDataType;\nexport const utf8 = (): VgiDataType => new A_Utf8() as unknown as VgiDataType;\nexport const binary = (): VgiDataType => new A_Binary() as unknown as VgiDataType;\n\n/** Microsecond Timestamp with optional timezone. */\nexport const timestampMicro = (timezone: string | null = null): VgiDataType =>\n new A_Timestamp(A_TimeUnit.MICROSECOND, timezone) as unknown as VgiDataType;\n\n/** Date32 with day resolution. */\nexport const dateDay = (): VgiDataType => new A_DateDay() as unknown as VgiDataType;\n/** Time64 with microsecond resolution. */\nexport const timeMicro = (): VgiDataType => new A_TimeMicrosecond() as unknown as VgiDataType;\n/** Duration with microsecond resolution. */\nexport const durationMicro = (): VgiDataType => new A_DurationMicrosecond() as unknown as VgiDataType;\n/** Decimal128 by default; pass bitWidth=256 for Decimal256. */\nexport const decimal = (precision: number, scale: number, bitWidth: 128 | 256 = 128): VgiDataType =>\n new A_Decimal(scale, precision, bitWidth) as unknown as VgiDataType;\n/** FixedSizeBinary with the given byte width. */\nexport const fixedSizeBinary = (byteWidth: number): VgiDataType =>\n new A_FixedSizeBinary(byteWidth) as unknown as VgiDataType;\n/** LargeUtf8 — 64-bit-offset UTF-8 string. */\nexport const largeUtf8 = (): VgiDataType => new A_LargeUtf8() as unknown as VgiDataType;\n/** LargeBinary — 64-bit-offset binary blob. */\nexport const largeBinary = (): VgiDataType => new A_LargeBinary() as unknown as VgiDataType;\n/** List of `child` items. The child field carries name + nullability + type. */\nexport const list = (child: VgiField): VgiDataType => new A_List(child as unknown as A_Field) as unknown as VgiDataType;\n/** Struct of `fields`. */\nexport const struct = (fields: readonly VgiField[]): VgiDataType =>\n new A_Struct(fields as unknown as A_Field[]) as unknown as VgiDataType;\n/** Map (key → value) carried as a List<Struct<key,value>>. arrow-js's Map_\n * constructor takes a child Field whose type is a Struct of [key, value]. */\nexport const map = (keyField: VgiField, valueField: VgiField, keysSorted = false): VgiDataType => {\n const k = keyField as unknown as A_Field;\n const v = valueField as unknown as A_Field;\n const entriesField = new A_Field(\"entries\", new A_Struct([k, v]), /* nullable */ false);\n return new A_Map(entriesField, keysSorted) as unknown as VgiDataType;\n};\n/** Dictionary-encoded type. `indices` must be an integer type.\n *\n * `id` is left undefined by default so arrow-js's internal `getId()`\n * counter assigns a fresh unique id per Dictionary instance. Passing\n * `-1` (or any concrete number) here would short-circuit that counter\n * and produce id collisions when multiple Dictionary types are used. */\nexport const dictionary = (indices: VgiDataType, values: VgiDataType, id?: number, ordered = false): VgiDataType =>\n new A_Dictionary(values as A_DataType, indices as any, id, ordered) as unknown as VgiDataType;\n\nexport function field(name: string, type: VgiDataType, nullable = true, metadata?: Map<string, string>): VgiField {\n return new A_Field(name, type as A_DataType, nullable, metadata ?? new Map()) as unknown as VgiField;\n}\n\nexport function schema(fields: readonly VgiField[], metadata?: Map<string, string>): VgiSchema {\n return new A_Schema(fields as A_Field[], metadata ?? new Map()) as unknown as VgiSchema;\n}\n\n// ----- IPC -----------------------------------------------------------------\n\nexport function serializeSchema(s: VgiSchema): Uint8Array {\n const writer = new RecordBatchStreamWriter();\n writer.reset(undefined, s as unknown as A_Schema);\n writer.close();\n return writer.toUint8Array(true);\n}\n\nexport function deserializeSchema(bytes: Uint8Array): VgiSchema {\n const reader = RecordBatchReader.from(bytes);\n const batches = [...reader];\n if (batches.length > 0) return batches[0].schema as unknown as VgiSchema;\n if (reader.schema) return reader.schema as unknown as VgiSchema;\n throw new Error(\"Cannot deserialize schema from empty IPC stream\");\n}\n\nexport function serializeBatch(batch: VgiBatch): Uint8Array {\n const a = batch as unknown as A_RecordBatch;\n const writer = new RecordBatchStreamWriter();\n writer.reset(undefined, a.schema);\n (writer as any)._writeRecordBatch(a);\n writer.close();\n return writer.toUint8Array(true);\n}\n\n/**\n * Incremental IPC encoder over arrow-js's `RecordBatchStreamWriter`. Each\n * call drains the writer's internal sink queue and returns the new bytes,\n * so the caller can flush them synchronously between lockstep turns.\n *\n * `_writeRecordBatch` is called directly (rather than the public `write`)\n * to bypass arrow-js's schema comparison, which would auto-close the\n * writer and silently drop a batch whose schema differs only in\n * nullability — our output schema is fixed at open time and all batches\n * are structurally compatible.\n */\nexport function createIncrementalEncoder(s: VgiSchema): IncrementalEncoder {\n const writer = new RecordBatchStreamWriter();\n writer.reset(undefined, s as unknown as A_Schema);\n const drain = (): Uint8Array => {\n const values = (writer as any)._sink._values as Uint8Array[];\n const total = values.reduce((n, c) => n + c.length, 0);\n const out = new Uint8Array(total);\n let off = 0;\n for (const c of values) {\n out.set(c, off);\n off += c.length;\n }\n values.length = 0;\n return out;\n };\n return {\n start: () => drain(),\n writeBatch(batch: VgiBatch): Uint8Array {\n (writer as any)._writeRecordBatch(batch as unknown as A_RecordBatch);\n return drain();\n },\n // EOS marker: continuation (0xFFFFFFFF) + metadata length (0x00000000).\n finish: () => new Uint8Array(new Int32Array([-1, 0]).buffer),\n };\n}\n\nexport function deserializeBatch(bytes: Uint8Array): VgiBatch {\n const reader = RecordBatchReader.from(bytes);\n const batches = [...reader];\n if (batches.length === 0) {\n const sch = reader.schema ?? new A_Schema([]);\n // Build an empty batch matching the schema. arrow-js quirk: empty IPC\n // streams may not give us a Schema; default to no fields.\n const structType = new A_Struct(sch.fields);\n const data = a_makeData({ type: structType, length: 0, children: [], nullCount: 0 });\n return new A_RecordBatch(sch, data) as unknown as VgiBatch;\n }\n return batches[0] as unknown as VgiBatch;\n}\n\n// ----- Construction --------------------------------------------------------\n\nexport function columnFromArray(values: any[], type: VgiDataType): VgiColumnData {\n return a_vectorFromArray(values, type as A_DataType).data[0] as VgiColumnData;\n}\n\n/** Build a 1-row batch from {colName: value} dict (Int64 numbers auto-coerced). */\nexport function singleRowBatch(s: VgiSchema, values: Record<string, any>): VgiBatch {\n const a = s as unknown as A_Schema;\n const children = a.fields.map((f) => {\n let val = values[f.name];\n if (f.type.typeId === A_Type.Int && (f.type as any).bitWidth === 64) {\n if (typeof val === \"number\") val = BigInt(val);\n }\n return a_vectorFromArray([val], f.type).data[0];\n });\n const structType = new A_Struct(a.fields);\n const data = a_makeData({ type: structType, length: 1, children, nullCount: 0 });\n return new A_RecordBatch(a, data) as unknown as VgiBatch;\n}\n\n/** Build an N-row batch from columnar arrays. */\nexport function batchFromColumns(s: VgiSchema, columns: Record<string, any[]>): VgiBatch {\n const a = s as unknown as A_Schema;\n const numRows = a.fields.length > 0 ? (columns[a.fields[0].name]?.length ?? 0) : 0;\n const children = a.fields.map((f) => {\n const vals = columns[f.name];\n if (!vals) return a_makeData({ type: f.type, length: numRows, nullCount: numRows });\n return a_vectorFromArray(vals, f.type).data[0];\n });\n const structType = new A_Struct(a.fields);\n const data = a_makeData({ type: structType, length: numRows, children, nullCount: 0 });\n return new A_RecordBatch(a, data) as unknown as VgiBatch;\n}\n\n/** Build a batch from pre-built column-data handles + schema. */\nexport function batchFromColumnData(\n s: VgiSchema,\n numRows: number,\n columnData: VgiColumnData[],\n metadata?: Map<string, string>,\n): VgiBatch {\n const a = s as unknown as A_Schema;\n const structType = new A_Struct(a.fields);\n const data = a_makeData({\n type: structType,\n length: numRows,\n children: columnData as any[],\n nullCount: 0,\n });\n // arrow-js Schema doesn't carry batch-level metadata; attach it when present\n // by cloning with a fresh metadata map.\n const finalSchema = metadata && metadata.size > 0 ? new A_Schema(a.fields, metadata) : a;\n return new A_RecordBatch(finalSchema, data) as unknown as VgiBatch;\n}\n\n/** Empty-Data builder used when assembling batches with pre-built children. */\nexport function emptyColumnData(type: VgiDataType): VgiColumnData {\n return makeEmptyDataRecursive(type as A_DataType) as VgiColumnData;\n}\n\n/**\n * 0-row batch with optional batch-level metadata (used for log/error/empty\n * tombstone batches by the wire layer).\n */\nexport function emptyBatchWithMetadata(s: VgiSchema, metadata?: Map<string, string>): VgiBatch {\n const a = s as unknown as A_Schema;\n const children = a.fields.map((f) => makeEmptyDataRecursive(f.type));\n const structType = new A_Struct(a.fields);\n const data = a_makeData({ type: structType, length: 0, children, nullCount: 0 });\n return new A_RecordBatch(a, data, metadata) as unknown as VgiBatch;\n}\n\n/** Recursive empty-Data builder — needed for nested types so arrow-js's\n * IPC writer doesn't crash on List/Map/Struct/Union with absent children. */\nfunction makeEmptyDataRecursive(type: A_DataType): any {\n const M = { DataType: A_DataTypeNS, Data: A_Data };\n if (M.DataType.isStruct(type)) {\n const children = (type as any).children.map((f: any) => makeEmptyDataRecursive(f.type));\n return a_makeData({ type, length: 0, children, nullCount: 0 } as any);\n }\n if (M.DataType.isList(type)) {\n const childData = makeEmptyDataRecursive((type as any).children[0].type);\n return a_makeData({ type, length: 0, child: childData, nullCount: 0, valueOffsets: new Int32Array([0]) } as any);\n }\n if (M.DataType.isFixedSizeList(type)) {\n const childData = makeEmptyDataRecursive((type as any).children[0].type);\n return a_makeData({ type, length: 0, child: childData, nullCount: 0 } as any);\n }\n if (M.DataType.isMap(type)) {\n const entryType = (type as any).children[0]?.type;\n const entryData = entryType\n ? makeEmptyDataRecursive(entryType)\n : a_makeData({ type: new A_Struct([]), length: 0, children: [], nullCount: 0 });\n return a_makeData({ type, length: 0, child: entryData, nullCount: 0, valueOffsets: new Int32Array([0]) } as any);\n }\n if (M.DataType.isUnion(type)) {\n const children = (type as any).children.map((f: any) => makeEmptyDataRecursive(f.type));\n if (M.DataType.isDenseUnion(type)) {\n return a_makeData({\n type,\n length: 0,\n typeIds: new Int8Array(0),\n valueOffsets: new Int32Array(0),\n children,\n nullCount: 0,\n } as any);\n }\n return a_makeData({\n type,\n length: 0,\n typeIds: new Int8Array(0),\n children,\n nullCount: 0,\n } as any);\n }\n return a_makeData({ type, length: 0, nullCount: 0 });\n}\n\n/** 1-row result batch: vectorFromArray each value, support raw Data\n * passthrough (for Map/opaque types whose .get(0) is unreliable). */\nexport function singleRowBatchWithMetadata(\n s: VgiSchema,\n values: Record<string, any>,\n metadata?: Map<string, string>,\n): VgiBatch {\n const a = s as unknown as A_Schema;\n const M = { DataType: A_DataTypeNS, Data: A_Data };\n const children = a.fields.map((f) => {\n const val = values[f.name];\n if (val instanceof M.Data) return val;\n return a_vectorFromArray([val], f.type).data[0];\n });\n const structType = new A_Struct(a.fields);\n const data = a_makeData({ type: structType, length: 1, children, nullCount: 0 });\n return new A_RecordBatch(a, data, metadata) as unknown as VgiBatch;\n}\n\n/** Tag a value as a raw Data passthrough. arrow-js: returns true if the\n * value is an arrow-js Data instance. flechette: always false (the\n * flechette backend doesn't surface this opaque-type quirk). */\nexport function isOpaqueData(val: unknown): boolean {\n const M = { DataType: A_DataTypeNS, Data: A_Data };\n return val instanceof M.Data;\n}\n\n/** Re-emit a batch with a different metadata map (same schema + data). */\nexport function withBatchMetadata(batch: VgiBatch, metadata: Map<string, string>): VgiBatch {\n const a = batch as unknown as A_RecordBatch;\n return new A_RecordBatch(a.schema, a.data, metadata) as unknown as VgiBatch;\n}\n\n/**\n * Serialize a sequence of batches into a single multi-batch IPC stream.\n * arrow-js's `RecordBatchStreamWriter` writes schema + N batches + EOS\n * incrementally — exactly what consumers expect for a producer/exchange\n * response that emits more than one batch.\n */\nexport function serializeBatches(schema: VgiSchema, batches: VgiBatch[]): Uint8Array {\n const writer = new RecordBatchStreamWriter();\n writer.reset(undefined, schema as unknown as A_Schema);\n for (const batch of batches) {\n (writer as any)._writeRecordBatch(batch as unknown as A_RecordBatch);\n }\n writer.close();\n return writer.toUint8Array(true);\n}\n\n/**\n * Rebuild a batch's data to match a target schema's field types.\n *\n * Lives on the backend because every line touches arrow-js internals\n * (Data.children, Data.clone, vectorFromArray, makeData with nullBitmap\n * passthrough). flechette's IPC reader produces specific types upfront, so\n * its `conformBatchToSchema` is a no-op — keeping this code out of the\n * shared util/ tree is what lets the worker-cf bundle drop arrow-js.\n */\nconst _needsValueCast: _NeedsCast = (src, dst) => {\n if (src.typeId === dst.typeId) return false;\n if (src.constructor === dst.constructor) return false;\n return true;\n};\n\nconst _isNumeric = (t: A_DataType): boolean => t.typeId === A_Type.Int || t.typeId === A_Type.Float;\n\nexport function conformBatchToSchema(batch: VgiBatch, schema: VgiSchema): VgiBatch {\n const a = batch as unknown as A_RecordBatch;\n if (a.numRows === 0) return batch;\n const s = schema as unknown as A_Schema;\n\n if (a.schema.fields.length !== s.fields.length) {\n throw new TypeError(`Field count mismatch: expected ${s.fields.length}, got ${a.schema.fields.length}`);\n }\n for (let i = 0; i < s.fields.length; i++) {\n if (a.schema.fields[i].name !== s.fields[i].name) {\n throw new TypeError(\n `Field name mismatch at index ${i}: expected '${s.fields[i].name}', got '${a.schema.fields[i].name}'`,\n );\n }\n }\n\n const children = s.fields.map((f, i) => {\n const srcChild = a.data.children[i];\n const srcType = srcChild.type;\n const dstType = f.type;\n\n if (!_needsValueCast(srcType, dstType)) {\n return srcChild.clone(dstType);\n }\n if (_isNumeric(srcType) && _isNumeric(dstType)) {\n const col = a.getChildAt(i)!;\n const values: number[] = [];\n for (let r = 0; r < a.numRows; r++) {\n const v = col.get(r);\n values.push(typeof v === \"bigint\" ? Number(v) : (v as number));\n }\n return a_vectorFromArray(values, dstType).data[0];\n }\n return srcChild.clone(dstType);\n });\n\n const structType = new A_Struct(s.fields);\n const data = a_makeData({\n type: structType,\n length: a.numRows,\n children,\n nullCount: a.data.nullCount,\n nullBitmap: a.data.nullBitmap,\n });\n return new A_RecordBatch(s, data, a.metadata) as unknown as VgiBatch;\n}\n",
|
|
12
12
|
"// Backend-agnostic Arrow type predicates. typeId values match the Arrow Type\n// enum and agree across arrow-js and flechette.\n\nimport type { VgiDataType } from \"./types.js\";\n\nexport const TypeId = {\n Null: 1,\n Int: 2,\n Float: 3,\n Binary: 4,\n Utf8: 5,\n Bool: 6,\n Decimal: 7,\n Date: 8,\n Time: 9,\n Timestamp: 10,\n Interval: 11,\n List: 12,\n Struct: 13,\n Union: 14,\n FixedSizeBinary: 15,\n FixedSizeList: 16,\n Map: 17,\n Duration: 18,\n LargeBinary: 19,\n LargeUtf8: 20,\n Dictionary: -1,\n} as const;\n\nexport const isNull = (t: VgiDataType): boolean => t.typeId === TypeId.Null;\nexport const isInt = (t: VgiDataType): boolean => t.typeId === TypeId.Int;\nexport const isFloat = (t: VgiDataType): boolean => t.typeId === TypeId.Float;\nexport const isBinary = (t: VgiDataType): boolean => t.typeId === TypeId.Binary || t.typeId === TypeId.LargeBinary;\nexport const isUtf8 = (t: VgiDataType): boolean => t.typeId === TypeId.Utf8 || t.typeId === TypeId.LargeUtf8;\nexport const isLargeUtf8 = (t: VgiDataType): boolean => t.typeId === TypeId.LargeUtf8;\nexport const isLargeBinary = (t: VgiDataType): boolean => t.typeId === TypeId.LargeBinary;\nexport const isBool = (t: VgiDataType): boolean => t.typeId === TypeId.Bool;\nexport const isDecimal = (t: VgiDataType): boolean => t.typeId === TypeId.Decimal;\nexport const isDate = (t: VgiDataType): boolean => t.typeId === TypeId.Date;\nexport const isTime = (t: VgiDataType): boolean => t.typeId === TypeId.Time;\nexport const isTimestamp = (t: VgiDataType): boolean => t.typeId === TypeId.Timestamp;\nexport const isDuration = (t: VgiDataType): boolean => t.typeId === TypeId.Duration;\nexport const isList = (t: VgiDataType): boolean => t.typeId === TypeId.List;\nexport const isStruct = (t: VgiDataType): boolean => t.typeId === TypeId.Struct;\nexport const isMap = (t: VgiDataType): boolean => t.typeId === TypeId.Map;\nexport const isFixedSizeBinary = (t: VgiDataType): boolean => t.typeId === TypeId.FixedSizeBinary;\nexport const isDictionary = (t: VgiDataType): boolean => t.typeId === TypeId.Dictionary;\n\nexport function isBatch(x: unknown): x is import(\"./types.js\").VgiBatch {\n return (\n x != null &&\n typeof (x as any).numRows === \"number\" &&\n (x as any).schema != null &&\n Array.isArray((x as any).schema.fields)\n );\n}\n",
|
|
13
13
|
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * External storage support for large Arrow IPC batches.\n *\n * When a batch exceeds a configurable threshold, it is serialized to IPC,\n * optionally compressed with zstd, and uploaded to pluggable storage.\n * The batch is replaced with a zero-row \"pointer batch\" containing the\n * download URL and SHA-256 checksum in metadata.\n */\n\nimport { deserializeBatch, serializeBatch, type VgiBatch, type VgiSchema } from \"./arrow/index.js\";\nimport { LOCATION_KEY, LOCATION_SHA256_KEY, LOG_LEVEL_KEY } from \"./constants.js\";\nimport { zstdCompress, zstdDecompress } from \"./util/zstd.js\";\nimport { buildEmptyBatch } from \"./wire/response.js\";\n\n// ---------------------------------------------------------------------------\n// Interfaces and configuration\n// ---------------------------------------------------------------------------\n\n/** Pluggable storage backend for uploading large batches. */\nexport interface ExternalStorage {\n /** Upload IPC data and return a URL for retrieval. */\n upload(data: Uint8Array, contentEncoding: string): Promise<string>;\n}\n\n/** A pre-signed PUT/GET URL pair for client-side data upload. */\nexport interface UploadUrl {\n /** Pre-signed PUT URL the client uploads to. */\n uploadUrl: string;\n /** Pre-signed GET URL the server fetches from. */\n downloadUrl: string;\n /** Expiration time (UTC) for the URL pair. */\n expiresAt: Date;\n}\n\n/**\n * Generates pre-signed upload URL pairs for client-vended externalization.\n *\n * Implementations must be safe to call from multiple concurrent requests.\n * Object lifecycle is the operator's responsibility — uploaded objects are\n * not automatically deleted by vgi-rpc.\n */\nexport interface UploadUrlProvider {\n /** Allocate one upload/download URL pair. */\n generateUploadUrl(): Promise<UploadUrl> | UploadUrl;\n}\n\n/** Configuration for external storage of large batches. */\nexport interface ExternalLocationConfig {\n /** Storage backend for uploading. */\n storage: ExternalStorage;\n /** Minimum batch byte size to trigger externalization. Default: 1MB. */\n externalizeThresholdBytes?: number;\n /** Optional zstd compression for uploaded data. */\n compression?: {\n /** Compression algorithm; only `\"zstd\"` is currently supported. */\n algorithm: \"zstd\";\n /** zstd compression level. Default: 3. */\n level?: number;\n };\n /** URL validator called before fetching. Throw to reject. Default: HTTPS-only. */\n urlValidator?: ((url: string) => void) | null;\n}\n\nconst DEFAULT_THRESHOLD = 1_048_576; // 1 MB\n\n// ---------------------------------------------------------------------------\n// URL validation\n// ---------------------------------------------------------------------------\n\n/** Default validator that rejects non-HTTPS URLs. */\nexport function httpsOnlyValidator(url: string): void {\n const parsed = new URL(url);\n if (parsed.protocol !== \"https:\") {\n throw new Error(`External location URL must use HTTPS, got \"${parsed.protocol}\"`);\n }\n}\n\n// ---------------------------------------------------------------------------\n// SHA-256 helpers\n// ---------------------------------------------------------------------------\n\nasync function sha256Hex(data: Uint8Array): Promise<string> {\n // Copy to a plain ArrayBuffer to satisfy Web Crypto API type requirements\n const buf = new ArrayBuffer(data.byteLength);\n new Uint8Array(buf).set(data);\n const hash = await crypto.subtle.digest(\"SHA-256\", buf);\n return Array.from(new Uint8Array(hash))\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n\n// ---------------------------------------------------------------------------\n// Detection\n// ---------------------------------------------------------------------------\n\n/** Returns true if the batch is a zero-row pointer to external data. */\nexport function isExternalLocationBatch(batch: VgiBatch): boolean {\n if (batch.numRows !== 0) return false;\n const meta = batch.metadata;\n if (!meta) return false;\n return meta.has(LOCATION_KEY) && !meta.has(LOG_LEVEL_KEY);\n}\n\n// ---------------------------------------------------------------------------\n// Pointer batch creation\n// ---------------------------------------------------------------------------\n\n/** Create a zero-row pointer batch with location URL and optional SHA-256. */\nexport function makeExternalLocationBatch(schema: VgiSchema, url: string, sha256?: string): VgiBatch {\n const metadata = new Map<string, string>();\n metadata.set(LOCATION_KEY, url);\n if (sha256) {\n metadata.set(LOCATION_SHA256_KEY, sha256);\n }\n return buildEmptyBatch(schema, metadata);\n}\n\n// ---------------------------------------------------------------------------\n// IPC serialization helpers\n// ---------------------------------------------------------------------------\n\nfunction serializeBatchToIpc(batch: VgiBatch): Uint8Array {\n return serializeBatch(batch);\n}\n\nfunction batchByteSize(batch: VgiBatch): number {\n // Estimate from IPC serialization size for threshold check.\n return serializeBatch(batch).byteLength;\n}\n\n// ---------------------------------------------------------------------------\n// Write path: externalization\n// ---------------------------------------------------------------------------\n\n/**\n * Maybe externalize a batch if it exceeds the threshold.\n * Returns the original batch unchanged if below threshold or no config.\n */\nexport async function maybeExternalizeBatch(\n batch: VgiBatch,\n config?: ExternalLocationConfig | null,\n): Promise<VgiBatch> {\n if (!config?.storage) return batch;\n if (batch.numRows === 0) return batch;\n\n const threshold = config.externalizeThresholdBytes ?? DEFAULT_THRESHOLD;\n if (batchByteSize(batch) < threshold) return batch;\n\n // Serialize to IPC\n let ipcData = serializeBatchToIpc(batch);\n\n // Compute SHA-256 of raw IPC bytes (pre-compression)\n const checksum = await sha256Hex(ipcData);\n\n // Optionally compress\n let contentEncoding = \"\";\n if (config.compression?.algorithm === \"zstd\") {\n ipcData = (await zstdCompress(ipcData, config.compression.level ?? 3)) as Uint8Array;\n contentEncoding = \"zstd\";\n }\n\n // Upload\n const url = await config.storage.upload(ipcData, contentEncoding);\n\n // Return pointer batch\n return makeExternalLocationBatch(batch.schema, url, checksum);\n}\n\n// ---------------------------------------------------------------------------\n// Read path: resolution\n// ---------------------------------------------------------------------------\n\n/**\n * Resolve an external pointer batch by fetching the data from the URL.\n * Returns the original batch unchanged if not a pointer or no config.\n */\nexport async function resolveExternalLocation(\n batch: VgiBatch,\n config?: ExternalLocationConfig | null,\n): Promise<VgiBatch> {\n if (!config) return batch;\n if (!isExternalLocationBatch(batch)) return batch;\n\n const url = batch.metadata?.get(LOCATION_KEY);\n if (!url) return batch;\n\n // Validate URL\n const validator = config.urlValidator === null ? undefined : (config.urlValidator ?? httpsOnlyValidator);\n if (validator) {\n validator(url);\n }\n\n // Fetch\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`External location fetch failed: ${response.status} ${response.statusText} [url: ${url}]`);\n }\n let data = new Uint8Array(await response.arrayBuffer());\n\n // Decompress if needed. Cap the decompressed size at 16x the\n // compressed body — generous for typical Arrow IPC zstd ratios but\n // tight enough that a tiny response cannot inflate to multi-GB.\n // Mirrors Python's external_fetch.fetch_url.\n const contentEncoding = response.headers.get(\"Content-Encoding\");\n if (contentEncoding === \"zstd\") {\n const cap = data.byteLength * 16;\n data = new Uint8Array(await zstdDecompress(data, cap));\n }\n\n // Verify SHA-256 if present\n const expectedSha256 = batch.metadata?.get(LOCATION_SHA256_KEY);\n if (expectedSha256) {\n const actualSha256 = await sha256Hex(data);\n if (actualSha256 !== expectedSha256) {\n throw new Error(`SHA-256 checksum mismatch for ${url}: expected ${expectedSha256}, got ${actualSha256}`);\n }\n }\n\n // Parse IPC stream\n const resolved = deserializeBatch(data);\n if (resolved.numRows === 0 && resolved.schema.fields.length === 0) {\n throw new Error(`No data batch found in external IPC stream from ${url}`);\n }\n return resolved;\n}\n",
|
|
14
14
|
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n emptyBatchWithMetadata,\n isInt,\n singleRowBatchWithMetadata,\n type VgiBatch,\n type VgiSchema,\n} from \"../arrow/index.js\";\nimport {\n ERROR_KIND_KEY,\n LOG_EXTRA_KEY,\n LOG_LEVEL_KEY,\n LOG_MESSAGE_KEY,\n REQUEST_ID_KEY,\n SERVER_ID_KEY,\n} from \"../constants.js\";\n\n/**\n * Coerce values for Int64 schema fields from Number to BigInt.\n * Handles both single values and arrays. Returns a new record with coerced values.\n */\nexport function coerceInt64(schema: VgiSchema, values: Record<string, any>): Record<string, any> {\n const result: Record<string, any> = { ...values };\n for (const f of schema.fields) {\n const val = result[f.name];\n if (val === undefined) continue;\n if (!isInt(f.type) || (f.type as any).bitWidth !== 64) continue;\n\n if (Array.isArray(val)) {\n result[f.name] = val.map((v: any) => (typeof v === \"number\" ? BigInt(v) : v));\n } else if (typeof val === \"number\") {\n result[f.name] = BigInt(val);\n }\n }\n return result;\n}\n\n/**\n * Build a 1-row result batch with optional metadata.\n * For unary methods, `values` maps field names to single values.\n */\nexport function buildResultBatch(\n schema: VgiSchema,\n values: Record<string, any>,\n serverId: string,\n requestId: string | null,\n): VgiBatch {\n const metadata = new Map<string, string>();\n metadata.set(SERVER_ID_KEY, serverId);\n if (requestId !== null) {\n metadata.set(REQUEST_ID_KEY, requestId);\n }\n\n if (schema.fields.length === 0) {\n return buildEmptyBatch(schema, metadata);\n }\n\n // Validate required fields\n for (const f of schema.fields) {\n if (values[f.name] === undefined && !f.nullable) {\n const got = Object.keys(values);\n throw new TypeError(`Handler result missing required field '${f.name}'. Got keys: [${got.join(\", \")}]`);\n }\n }\n\n const coerced = coerceInt64(schema, values);\n return singleRowBatchWithMetadata(schema, coerced, metadata);\n}\n\n/**\n * Build a 0-row error batch with EXCEPTION metadata matching Python's Message.from_exception().\n */\nexport function buildErrorBatch(schema: VgiSchema, error: Error, serverId: string, requestId: string | null): VgiBatch {\n const metadata = new Map<string, string>();\n metadata.set(LOG_LEVEL_KEY, \"EXCEPTION\");\n // Prefer the standard `error.name` property (which user classes can set\n // via `this.name = \"Foo\"` even after a bundler renames the class) over\n // `constructor.name`, which is fragile under minification.\n const exceptionType = typeof error.name === \"string\" && error.name !== \"Error\" ? error.name : error.constructor.name;\n metadata.set(LOG_MESSAGE_KEY, `${exceptionType}: ${error.message}`);\n\n // Hoist `errorKind` (typed-exception marker) into the EXCEPTION batch\n // metadata as a top-level `vgi_rpc.error_kind` field so clients can\n // branch on the kind without parsing the log_extra JSON blob. Mirrors\n // Python's `Message.from_exception()` + `add_to_metadata()` hoisting.\n const errorKind =\n (error as { errorKind?: unknown }).errorKind ??\n ((error.constructor as { errorKind?: unknown }).errorKind as unknown);\n if (typeof errorKind === \"string\" && errorKind.length > 0) {\n metadata.set(ERROR_KIND_KEY, errorKind);\n }\n\n const extra: Record<string, any> = {\n exception_type: exceptionType,\n exception_message: error.message,\n traceback: error.stack ?? \"\",\n };\n if (typeof errorKind === \"string\" && errorKind.length > 0) {\n extra.error_kind = errorKind;\n }\n metadata.set(LOG_EXTRA_KEY, JSON.stringify(extra));\n metadata.set(SERVER_ID_KEY, serverId);\n if (requestId !== null) {\n metadata.set(REQUEST_ID_KEY, requestId);\n }\n\n return buildEmptyBatch(schema, metadata);\n}\n\n/**\n * Build a 0-row log batch.\n */\nexport function buildLogBatch(\n schema: VgiSchema,\n level: string,\n message: string,\n extra?: Record<string, any>,\n serverId?: string,\n requestId?: string | null,\n): VgiBatch {\n const metadata = new Map<string, string>();\n metadata.set(LOG_LEVEL_KEY, level);\n metadata.set(LOG_MESSAGE_KEY, message);\n if (extra) {\n metadata.set(LOG_EXTRA_KEY, JSON.stringify(extra));\n }\n if (serverId != null) {\n metadata.set(SERVER_ID_KEY, serverId);\n }\n if (requestId != null) {\n metadata.set(REQUEST_ID_KEY, requestId);\n }\n\n return buildEmptyBatch(schema, metadata);\n}\n\n/**\n * Build a 0-row batch from a schema with metadata.\n * Used for error/log batches.\n */\nexport function buildEmptyBatch(schema: VgiSchema, metadata?: Map<string, string>): VgiBatch {\n return emptyBatchWithMetadata(schema, metadata);\n}\n",
|
|
15
15
|
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n conformBatchToSchema,\n deserializeBatch,\n serializeBatches,\n type VgiBatch,\n type VgiSchema,\n} from \"../arrow/index.js\";\nimport { RPC_ERROR_HEADER } from \"../constants.js\";\nimport type { CookieSpec } from \"../types.js\";\n\n/** MIME type for Arrow IPC stream request and response bodies. */\nexport const ARROW_CONTENT_TYPE = \"application/vnd.apache.arrow.stream\";\n\n// Sticky session header conventions (HTTP-only). Mirrors Python's\n// `vgi_rpc.http._common`. Headers — not cookies — so multiple concurrent\n// sessions to one host from a single client multiplex correctly.\nexport const SESSION_HEADER = \"VGI-Session\";\nexport const SESSION_ACCEPT_HEADER = \"VGI-Session-Accept\";\nexport const SESSION_CLOSE_HEADER = \"VGI-Session-Close\";\nexport const STICKY_ENABLED_HEADER = \"VGI-Sticky-Enabled\";\nexport const STICKY_DEFAULT_TTL_HEADER = \"VGI-Sticky-Default-TTL\";\nexport const STICKY_ECHO_HEADERS_HEADER = \"VGI-Sticky-Echo-Headers\";\n\n/** Prefix the server uses to tell the client \"echo this header on subsequent\n * requests in this session\". Clients capture and replay\n * `VGI-Echo-<name>: <value>` as plain `<name>: <value>` for the session\n * lifetime — used for client-driven routing (e.g. `fly-force-instance-id`). */\nexport const ECHO_HEADER_PREFIX = \"VGI-Echo-\";\n\n/** Framework-managed sticky session teardown endpoint path component.\n * `DELETE {prefix}/__session__` idempotently closes the session referenced\n * by the request's `VGI-Session` header. */\nexport const SESSION_ENDPOINT = \"__session__\";\n\n/** Serialize a CookieSpec into a Set-Cookie header value. */\nexport function formatSetCookieHeader(c: CookieSpec): string {\n const parts: string[] = [];\n if (c.delete) {\n parts.push(`${c.name}=`);\n parts.push(\"Max-Age=0\");\n } else {\n parts.push(`${c.name}=${c.value}`);\n if (c.maxAge !== undefined) parts.push(`Max-Age=${c.maxAge}`);\n if (c.expires) parts.push(`Expires=${c.expires.toUTCString()}`);\n }\n if (c.path) parts.push(`Path=${c.path}`);\n if (c.domain) parts.push(`Domain=${c.domain}`);\n if (c.secure) parts.push(\"Secure\");\n if (c.httpOnly) parts.push(\"HttpOnly\");\n if (c.sameSite) parts.push(`SameSite=${c.sameSite}`);\n if (c.partitioned) parts.push(\"Partitioned\");\n return parts.join(\"; \");\n}\n\n/** Append Set-Cookie headers for each queued CookieSpec onto an existing Headers object. */\nexport function appendCookieHeaders(headers: Headers, cookies: readonly CookieSpec[]): void {\n for (const c of cookies) {\n headers.append(\"Set-Cookie\", formatSetCookieHeader(c));\n }\n}\n\nexport class HttpRpcError extends Error {\n constructor(\n message: string,\n public readonly statusCode: number,\n ) {\n super(message);\n this.name = \"HttpRpcError\";\n }\n}\n\n/**\n * Serialize a schema + batches into a complete IPC stream as Uint8Array.\n *\n * A single IPC stream is `[schema_msg, batch_msg, batch_msg, ..., EOS]`.\n * Each backend implements `serializeBatches` to write that atomically —\n * arrow-js via `RecordBatchStreamWriter`, flechette via `tablesToIPC`\n * (added in our flechette fork). Naive concatenation of per-batch streams\n * produces multiple EOS markers and breaks readers.\n */\nexport function serializeIpcStream(schema: VgiSchema, batches: VgiBatch[]): Uint8Array {\n const conformed = batches.map((b) => conformBatchToSchema(b, schema));\n return serializeBatches(schema, conformed);\n}\n\n/**\n * Create a Response with Arrow IPC content type.\n *\n * Server errors (status 500) are translated to HTTP 200 with an\n * ``X-VGI-RPC-Error: true`` header so that clients which discard\n * response bodies on 5xx still receive the Arrow IPC error metadata.\n * Client errors (400, 401, 404, 415) are passed through unchanged.\n */\nexport function arrowResponse(body: Uint8Array, status = 200, extraHeaders?: Headers): Response {\n const headers = extraHeaders ?? new Headers();\n headers.set(\"Content-Type\", ARROW_CONTENT_TYPE);\n if (status === 500) {\n headers.set(RPC_ERROR_HEADER, \"true\");\n return new Response(body as unknown as BodyInit, { status: 200, headers });\n }\n return new Response(body as unknown as BodyInit, { status, headers });\n}\n\n/** Read schema + first batch from an IPC stream body via the facade. */\nexport async function readRequestFromBody(body: Uint8Array): Promise<{ schema: VgiSchema; batch: VgiBatch }> {\n const batch = deserializeBatch(body);\n // Reject only truly empty bodies. A zero-field, zero-row batch with batch\n // metadata is a legal exchange/cancel/continuation signal — the state\n // token rides on `batch.metadata` and downstream code (cancel detection,\n // schema conformance gating) is built to handle it.\n if (batch.schema.fields.length === 0 && batch.numRows === 0 && (batch.metadata?.size ?? 0) === 0) {\n throw new HttpRpcError(\"Empty IPC stream: no schema\", 400);\n }\n return { schema: batch.schema, batch };\n}\n",
|
|
16
|
-
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\
|
|
16
|
+
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\nimport { type RecordBatch, RecordBatchReader, type Schema } from \"@query-farm/apache-arrow\";\nimport type { VgiBatch, VgiSchema } from \"../arrow/index.js\";\n\nexport interface StreamMessage {\n schema: VgiSchema;\n batches: VgiBatch[];\n}\n\n/**\n * Reads sequential IPC streams from a byte source (e.g., process.stdin).\n * Uses autoDestroy: false + reset/open pattern to read multiple streams\n * from the same underlying byte source.\n */\nexport class IpcStreamReader {\n private reader: RecordBatchReader;\n private initialized = false;\n /** True once readNextBatch() returns null (EOS reached for current stream). */\n private streamEnded = false;\n\n private constructor(reader: RecordBatchReader) {\n this.reader = reader;\n }\n\n static async create(input: ReadableStream<Uint8Array> | NodeJS.ReadableStream): Promise<IpcStreamReader> {\n const reader = await RecordBatchReader.from(input as any);\n await reader.open({ autoDestroy: false });\n if (reader.closed) {\n throw new Error(\"Input stream closed before first IPC message\");\n }\n return new IpcStreamReader(reader);\n }\n\n /**\n * Read one complete IPC stream (schema + all batches).\n * Returns null on EOF (no more streams).\n */\n async readStream(): Promise<StreamMessage | null> {\n if (this.initialized) {\n // Advance to next stream\n await this.reader.reset().open();\n if (this.reader.closed) {\n return null;\n }\n }\n this.initialized = true;\n\n const schema = this.reader.schema;\n if (!schema) {\n return null;\n }\n\n const batches: RecordBatch[] = [];\n while (true) {\n const result = await this.reader.next();\n if (result.done) break;\n // Skip Arrow-JS synthetic placeholder for empty streams\n if (result.value.constructor.name === \"_InternalEmptyPlaceholderRecordBatch\") break;\n batches.push(result.value);\n }\n\n return { schema, batches };\n }\n\n /**\n * Open the next IPC stream and return its schema.\n * Use readNextBatch() to read batches one at a time.\n * Returns null on EOF.\n */\n async openNextStream(): Promise<VgiSchema | null> {\n if (this.initialized) {\n await this.reader.reset().open();\n if (this.reader.closed) {\n return null;\n }\n }\n this.initialized = true;\n this.streamEnded = false;\n return this.reader.schema ?? null;\n }\n\n /**\n * Read the next batch from the currently open IPC stream.\n * Returns null when the stream ends (EOS).\n *\n * Once EOS is reached, subsequent calls return null immediately without\n * reading from the underlying byte source. This prevents the Arrow-JS\n * reader from consuming bytes that belong to the next IPC stream.\n */\n async readNextBatch(): Promise<VgiBatch | null> {\n if (this.streamEnded) return null;\n const result = await this.reader.next();\n if (result.done) {\n this.streamEnded = true;\n return null;\n }\n // Arrow-JS synthesizes a placeholder batch for streams with a schema but\n // zero real batches. Treat it as EOS so callers don't block trying to\n // read more bytes from a stream that has already ended.\n if (result.value.constructor.name === \"_InternalEmptyPlaceholderRecordBatch\") {\n this.streamEnded = true;\n return null;\n }\n return result.value;\n }\n\n async cancel(): Promise<void> {\n await this.reader.cancel();\n }\n}\n",
|
|
17
17
|
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Schema as ArrowSchema, type RecordBatch, type Schema } from \"@query-farm/apache-arrow\";\nimport { deserializeSchema as deserializeSchemaImpl } from \"#vgi-rpc-arrow\";\nimport { DESCRIBE_METHOD_NAME, PROTOCOL_NAME_KEY, PROTOCOL_VERSION_KEY } from \"../constants.js\";\nimport { RpcError } from \"../errors.js\";\nimport { ARROW_CONTENT_TYPE } from \"../http/common.js\";\nimport { buildRequestIpc, dispatchLogOrError, readResponseBatches } from \"./ipc.js\";\nimport type { LogMessage } from \"./types.js\";\n\n/** Describes a single RPC method as reported by the server's `__describe__` response. */\nexport interface MethodInfo {\n /** The method name as invoked by {@link RpcClient.call} / {@link RpcClient.stream}. */\n name: string;\n /** Whether the method is a single request/response (`unary`) or a streaming method (`stream`). */\n type: \"unary\" | \"stream\";\n /** Arrow schema of the call parameters. */\n paramsSchema: Schema;\n /** Arrow schema of a unary result; for stream methods this holds the per-batch output schema. */\n resultSchema: Schema;\n /** Arrow schema of the per-batch input rows for exchange streams, when available. */\n inputSchema?: Schema;\n /** Arrow schema of the per-batch output rows for stream methods, when available. */\n outputSchema?: Schema;\n /** Arrow schema of the stream's one-time header row, when the method declares one. */\n headerSchema?: Schema;\n /** Human-readable documentation for the method, if the server provides it. */\n doc?: string;\n /** Per-parameter human-readable type names, if the server provides them. */\n paramTypes?: Record<string, string>;\n /** Default values applied to omitted parameters before a call is sent. */\n defaults?: Record<string, any>;\n}\n\n/** The full set of methods and protocol metadata reported by a server's `__describe__`. */\nexport interface ServiceDescription {\n /** The server's declared protocol/service name. */\n protocolName: string;\n /** Application protocol surface version surfaced by the server's\n * __describe__ response. Empty string when the server did not declare\n * a `protocolVersion`. */\n protocolVersion: string;\n /** Every method the server exposes (excluding the built-in `__describe__`). */\n methods: MethodInfo[];\n}\n\n/**\n * Deserialize a schema from IPC bytes (schema message + EOS).\n *\n * Must dispatch via `#vgi-rpc-arrow` so the resulting type instances are\n * the same impl (apache-arrow / flechette) as the rest of the active\n * backend. Using apache-arrow's `RecordBatchReader` directly here used to\n * silently mix impls: in browser builds the backend is flechette, and a\n * flechette builder receiving an apache-arrow `Binary` type defaults to\n * the wrong offsets buffer (Uint8Array instead of Int32Array) and emits\n * a 0-byte value where a populated binary column was expected. The\n * downstream symptom is \"Tried reading schema message, was null or\n * length 0\" from the server when it tries to open the (empty) binary\n * column as a nested IPC stream. See test/client/ipc-cross-impl.test.ts.\n */\nfunction deserializeSchema(bytes: Uint8Array): Schema {\n return deserializeSchemaImpl(bytes) as unknown as Schema;\n}\n\n/**\n * Parse a __describe__ response from batches into a ServiceDescription.\n * Reusable across transports (HTTP, pipe, subprocess).\n */\nexport async function parseDescribeResponse(\n batches: RecordBatch[],\n onLog?: (msg: LogMessage) => void,\n): Promise<ServiceDescription> {\n // Find the data batch (skip log/error batches)\n let dataBatch = null;\n for (const batch of batches) {\n if (batch.numRows === 0) {\n dispatchLogOrError(batch, onLog);\n continue;\n }\n dataBatch = batch;\n }\n\n if (!dataBatch) {\n throw new Error(\"Empty __describe__ response\");\n }\n\n // Extract metadata from batch\n const meta = dataBatch.metadata;\n const protocolName = meta?.get(PROTOCOL_NAME_KEY) ?? \"\";\n const protocolVersion = meta?.get(PROTOCOL_VERSION_KEY) ?? \"\";\n\n // Slim DESCRIBE_VERSION 4 wire format (see dispatch/describe.ts):\n // 0:name 1:method_type 2:has_return 3:params_schema_ipc\n // 4:result_schema_ipc 5:has_header 6:header_schema_ipc 7:is_exchange\n const methods: MethodInfo[] = [];\n for (let i = 0; i < dataBatch.numRows; i++) {\n const name = dataBatch.getChildAt(0)!.get(i) as string;\n const methodType = dataBatch.getChildAt(1)!.get(i) as string;\n const _hasReturn = dataBatch.getChildAt(2)!.get(i) as boolean;\n const paramsIpc = dataBatch.getChildAt(3)!.get(i) as Uint8Array;\n const resultIpc = dataBatch.getChildAt(4)!.get(i) as Uint8Array;\n const hasHeader = dataBatch.getChildAt(5)!.get(i) as boolean;\n const headerIpc = dataBatch.getChildAt(6)?.get(i) as Uint8Array | null;\n // is_exchange (index 7) currently unused on the client side.\n\n const paramsSchema = await deserializeSchema(paramsIpc);\n const resultSchema = await deserializeSchema(resultIpc);\n\n const info: MethodInfo = {\n name,\n type: methodType as \"unary\" | \"stream\",\n paramsSchema,\n resultSchema,\n };\n\n // For stream methods, result_schema_ipc actually holds the output schema\n if (methodType === \"stream\") {\n info.outputSchema = resultSchema;\n }\n\n if (hasHeader && headerIpc) {\n info.headerSchema = await deserializeSchema(headerIpc);\n }\n\n methods.push(info);\n }\n\n return { protocolName, protocolVersion, methods };\n}\n\n/**\n * Send a __describe__ request and return a ServiceDescription.\n */\nexport async function httpIntrospect(\n baseUrl: string,\n options?: {\n prefix?: string;\n authorization?: string;\n compressionLevel?: number;\n compressFn?: (data: Uint8Array, level: number) => Promise<Uint8Array>;\n decompressFn?: (data: Uint8Array) => Promise<Uint8Array>;\n },\n): Promise<ServiceDescription> {\n const prefix = options?.prefix ?? \"\";\n const emptySchema = new ArrowSchema([]);\n const body = buildRequestIpc(emptySchema, {}, DESCRIBE_METHOD_NAME);\n\n const headers: Record<string, string> = { \"Content-Type\": ARROW_CONTENT_TYPE };\n if (options?.authorization) {\n headers.Authorization = options.authorization;\n }\n\n const level = options?.compressionLevel;\n const compressFn = options?.compressFn;\n const decompressFn = options?.decompressFn;\n let sendBody: Uint8Array = body;\n if (level != null && compressFn) {\n headers[\"Content-Encoding\"] = \"zstd\";\n sendBody = await compressFn(body, level);\n }\n if (level != null && decompressFn) {\n headers[\"Accept-Encoding\"] = \"zstd\";\n }\n\n const response = await fetch(`${baseUrl}${prefix}/${DESCRIBE_METHOD_NAME}`, {\n method: \"POST\",\n headers,\n body: sendBody as unknown as BodyInit,\n });\n if (response.status === 401) {\n throw new RpcError(\"AuthenticationError\", \"Authentication required\", \"\");\n }\n\n let responseBody = new Uint8Array(await response.arrayBuffer());\n if (response.headers.get(\"Content-Encoding\") === \"zstd\" && decompressFn) {\n responseBody = new Uint8Array(await decompressFn(responseBody));\n }\n const { batches } = await readResponseBatches(responseBody);\n\n return parseDescribeResponse(batches);\n}\n",
|
|
18
18
|
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n Binary,\n Bool,\n DataType,\n Float64,\n Int64,\n type RecordBatch,\n RecordBatchReader,\n type Schema,\n Utf8,\n} from \"@query-farm/apache-arrow\";\nimport { emptyBatchWithMetadata, singleRowBatchWithMetadata } from \"#vgi-rpc-arrow\";\nimport {\n LOG_EXTRA_KEY,\n LOG_LEVEL_KEY,\n LOG_MESSAGE_KEY,\n PROTOCOL_VERSION_KEY,\n REQUEST_VERSION,\n REQUEST_VERSION_KEY,\n RPC_METHOD_KEY,\n} from \"../constants.js\";\nimport { RpcError } from \"../errors.js\";\nimport { serializeIpcStream } from \"../http/common.js\";\nimport { IpcStreamReader } from \"../wire/reader.js\";\nimport type { LogMessage } from \"./types.js\";\n\n/** Infer an Arrow DataType from a JS value. */\nexport function inferArrowType(value: any): DataType {\n if (typeof value === \"string\") return new Utf8();\n if (typeof value === \"boolean\") return new Bool();\n if (typeof value === \"bigint\") return new Int64();\n if (typeof value === \"number\") return new Float64();\n if (value instanceof Uint8Array) return new Binary();\n return new Utf8(); // fallback\n}\n\n/**\n * Recursively coerce JS values to match Arrow type expectations.\n * Converts numbers to BigInt for Int64 fields, and recurses into Map/List types.\n */\nfunction coerceForArrow(type: DataType, value: any): any {\n if (value == null) return value;\n\n // Int64: convert number → BigInt\n if (DataType.isInt(type) && (type as any).bitWidth === 64) {\n if (typeof value === \"number\") return BigInt(value);\n return value;\n }\n\n // Map_: coerce map values recursively\n if (DataType.isMap(type)) {\n if (value instanceof Map) {\n const entriesField = (type as any).children[0];\n const valueType = entriesField.type.children[1].type;\n const coerced = new Map();\n for (const [k, v] of value) {\n coerced.set(k, coerceForArrow(valueType, v));\n }\n return coerced;\n }\n return value;\n }\n\n // List: coerce elements recursively\n if (DataType.isList(type)) {\n if (Array.isArray(value)) {\n const elemType = (type as any).children[0].type;\n return value.map((v: any) => coerceForArrow(elemType, v));\n }\n return value;\n }\n\n return value;\n}\n\n/**\n * Build a 1-row Arrow IPC request batch with method metadata.\n *\n * When `options.protocolVersion` is non-empty, the value is emitted as\n * `vgi_rpc.protocol_version` so servers that declare a Protocol-level\n * version validate the request at the dispatch boundary.\n */\nexport function buildRequestIpc(\n schema: Schema,\n params: Record<string, any>,\n method: string,\n options?: { protocolVersion?: string },\n): Uint8Array {\n const metadata = new Map<string, string>();\n metadata.set(RPC_METHOD_KEY, method);\n metadata.set(REQUEST_VERSION_KEY, REQUEST_VERSION);\n if (options?.protocolVersion) {\n metadata.set(PROTOCOL_VERSION_KEY, options.protocolVersion);\n }\n\n // Build the batch through the impl-agnostic #vgi-rpc-arrow layer so this\n // works under both backends. `buildRequestIpc` previously constructed an\n // apache-arrow RecordBatch directly and handed it to `serializeIpcStream`,\n // which then dispatched to the backend's `serializeBatches`. Under the\n // browser/worker condition that backend is flechette, and flechette's\n // `tablesToIPC` cannot read apache-arrow's RecordBatch shape — the cross-\n // impl mixing was silently broken (no browser tests cover this path; see\n // test/client/ipc-cross-impl.test.ts). The abstract helpers produce a\n // 0-row metadata-bearing batch for the empty-schema case (which servers\n // accept identically to a 1-row × 0-col batch) and a 1-row batch with\n // coerced field values otherwise.\n if (schema.fields.length === 0) {\n const batch = emptyBatchWithMetadata(schema, metadata);\n return serializeIpcStream(schema, [batch]);\n }\n\n const coerced: Record<string, any> = {};\n for (const f of schema.fields) {\n const raw = params[f.name];\n // Missing values must be sent as null. arrow-js's typed-array builders\n // throw \"Invalid argument type in ToBigInt\" when handed `undefined` for\n // an Int64 column; null builds a proper validity bitmap entry instead.\n coerced[f.name] = raw === undefined ? null : coerceForArrow(f.type, raw);\n }\n const batch = singleRowBatchWithMetadata(schema, coerced, metadata);\n return serializeIpcStream(schema, [batch]);\n}\n\n/**\n * Read schema + all batches from an IPC stream body.\n */\nexport async function readResponseBatches(body: Uint8Array): Promise<{ schema: Schema; batches: RecordBatch[] }> {\n const reader = await RecordBatchReader.from(body);\n await reader.open();\n const schema = reader.schema;\n if (!schema) {\n throw new RpcError(\"ProtocolError\", \"Empty IPC stream: no schema\", \"\");\n }\n const batches = reader.readAll();\n return { schema, batches };\n}\n\n/**\n * Check if a zero-row batch carries log/error metadata.\n * If EXCEPTION → throw RpcError.\n * If other level → call onLog.\n * Returns true if the batch was consumed as a log/error.\n */\nexport function dispatchLogOrError(batch: RecordBatch, onLog?: (msg: LogMessage) => void): boolean {\n const meta = batch.metadata;\n if (!meta) return false;\n\n const level = meta.get(LOG_LEVEL_KEY);\n if (!level) return false;\n\n const message = meta.get(LOG_MESSAGE_KEY) ?? \"\";\n\n if (level === \"EXCEPTION\") {\n const extraStr = meta.get(LOG_EXTRA_KEY);\n let errorType = \"RpcError\";\n let errorMessage = message;\n let traceback = \"\";\n if (extraStr) {\n try {\n const extra = JSON.parse(extraStr);\n errorType = extra.exception_type ?? \"RpcError\";\n errorMessage = extra.exception_message ?? message;\n traceback = extra.traceback ?? \"\";\n } catch {}\n }\n throw new RpcError(errorType, errorMessage, traceback);\n }\n\n if (onLog) {\n const extraStr = meta.get(LOG_EXTRA_KEY);\n let extra: Record<string, any> | undefined;\n if (extraStr) {\n try {\n extra = JSON.parse(extraStr);\n } catch {}\n }\n onLog({ level, message, extra });\n }\n\n return true;\n}\n\n/**\n * Extract all rows from a batch as Record<string, any>[].\n * Converts BigInt to Number when safe.\n */\nexport function extractBatchRows(batch: RecordBatch): Record<string, any>[] {\n const rows: Record<string, any>[] = [];\n for (let r = 0; r < batch.numRows; r++) {\n const row: Record<string, any> = {};\n for (let i = 0; i < batch.schema.fields.length; i++) {\n const field = batch.schema.fields[i];\n let value = batch.getChildAt(i)?.get(r);\n if (typeof value === \"bigint\") {\n if (value >= BigInt(Number.MIN_SAFE_INTEGER) && value <= BigInt(Number.MAX_SAFE_INTEGER)) {\n value = Number(value);\n }\n }\n row[field.name] = value;\n }\n rows.push(row);\n }\n return rows;\n}\n\n/**\n * Read sequential IPC streams from a response body.\n * Returns an IpcStreamReader for reading header + data streams.\n */\nexport async function readSequentialStreams(body: Uint8Array): Promise<IpcStreamReader> {\n const stream = new ReadableStream<Uint8Array>({\n start(controller) {\n controller.enqueue(body);\n controller.close();\n },\n });\n return IpcStreamReader.create(stream);\n}\n",
|
|
19
|
-
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\
|
|
19
|
+
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Cross-language conformance access-log hook.\n *\n * Emits one JSON record per RPC dispatch to a {@link Sink} (typically a file\n * descriptor opened in append mode). The record shape conforms to the\n * vgi-rpc access-log specification (`docs/access-log-spec.md` and\n * `vgi_rpc/access_log.schema.json` in the Python reference repo).\n *\n * Use {@link AccessLogHook} to align this implementation with `vgi-rpc-test\n * --access-log` so worker behaviour is checked across language ports by the\n * same tool that gates the conformance suite.\n */\n\nimport type { CallStatistics, DispatchHook, DispatchInfo, HookToken } from \"./types.js\";\n\n/** Where the hook writes formatted JSON lines. */\nexport interface AccessLogSink {\n /** Write one access-log line. The trailing newline is included by the caller. */\n write(line: string): void;\n}\n\n// Indirect-string require so esbuild can't pull node:fs into the bundle.\n// Workers should use a custom sink (e.g., one backed by `console.log`).\nconst _NODE_FS_MOD = \"node:fs\";\nfunction _loadWriteSync(): (fd: number, data: Uint8Array, offset?: number, len?: number) => number {\n const req: any = (import.meta as any).require ?? (globalThis as any).require ?? null;\n if (!req) {\n throw new Error(\n \"FdSink requires Node.js or Bun (node:fs.writeSync). For other runtimes, \" +\n \"supply a custom AccessLogSink that wraps console.log or your logger.\",\n );\n }\n return req(_NODE_FS_MOD).writeSync;\n}\n\n/** A sink backed by a file descriptor; uses synchronous writes for ordering. */\nexport class FdSink implements AccessLogSink {\n private readonly _writeSync = _loadWriteSync();\n constructor(private readonly fd: number) {}\n /** Write `line` to the file descriptor, looping until the buffer is fully flushed. */\n write(line: string): void {\n const buf = new TextEncoder().encode(line);\n let offset = 0;\n while (offset < buf.length) {\n const n = this._writeSync(this.fd, buf, offset, buf.length - offset);\n if (n <= 0) throw new Error(`access-log writeSync returned ${n}`);\n offset += n;\n }\n }\n}\n\ninterface StartToken {\n startNs: bigint;\n}\n\nfunction rfc3339Utc(): string {\n const d = new Date();\n const yyyy = d.getUTCFullYear().toString().padStart(4, \"0\");\n const mm = (d.getUTCMonth() + 1).toString().padStart(2, \"0\");\n const dd = d.getUTCDate().toString().padStart(2, \"0\");\n const hh = d.getUTCHours().toString().padStart(2, \"0\");\n const mi = d.getUTCMinutes().toString().padStart(2, \"0\");\n const ss = d.getUTCSeconds().toString().padStart(2, \"0\");\n const ms = d.getUTCMilliseconds().toString().padStart(3, \"0\");\n return `${yyyy}-${mm}-${dd}T${hh}:${mi}:${ss}.${ms}Z`;\n}\n\nfunction base64(bytes: Uint8Array): string {\n return Buffer.from(bytes).toString(\"base64\");\n}\n\n/** Round to 2 decimal places. */\nfunction roundTo2(f: number): number {\n return Math.round(f * 100) / 100;\n}\n\n/**\n * Options for {@link AccessLogHook}.\n *\n * `level` matches Python's logger-level gating in `_emit_access_log`:\n * at \"INFO\" the heavy `request_data` field (a base64 of the full\n * request batch — typically 8+ KiB per init RPC) is replaced with a\n * `truncated: true` marker plus `original_request_bytes`, so the\n * access-log schema's \"unary requires request_data unless truncated\"\n * invariant still holds. Bump to \"DEBUG\" to capture full payloads for\n * replay/audit.\n */\nexport interface AccessLogOptions {\n /** Server version string (optional). */\n serverVersion?: string;\n /** Verbosity for heavy fields. Default: \"INFO\". */\n level?: \"INFO\" | \"DEBUG\";\n}\n\nexport class AccessLogHook implements DispatchHook {\n private readonly serverVersion: string;\n private readonly level: \"INFO\" | \"DEBUG\";\n\n constructor(\n private readonly sink: AccessLogSink,\n options: AccessLogOptions | string = {},\n ) {\n // Backward compatibility: the original signature accepted a bare\n // serverVersion string as the second arg.\n if (typeof options === \"string\") {\n this.serverVersion = options;\n this.level = \"INFO\";\n } else {\n this.serverVersion = options.serverVersion ?? \"\";\n this.level = options.level ?? \"INFO\";\n }\n }\n\n /** Capture a high-resolution start timestamp; returned token feeds {@link onDispatchEnd}. */\n onDispatchStart(_info: DispatchInfo): HookToken {\n const token: StartToken = { startNs: process.hrtime.bigint() };\n return token;\n }\n\n /** Emit one access-log JSON record for the completed dispatch (best-effort;\n * write errors are swallowed so logging never breaks a request). */\n onDispatchEnd(token: HookToken, info: DispatchInfo, stats: CallStatistics, error?: Error): void {\n const t = token as StartToken | undefined;\n const durationMs = t ? roundTo2(Number(process.hrtime.bigint() - t.startNs) / 1_000_000) : 0;\n\n const status = error ? \"error\" : \"ok\";\n const errType = error ? ((error as Error & { type?: string }).type ?? error.constructor.name) : \"\";\n const errMsg = error?.message ?? \"\";\n\n const protocol = info.protocol ?? \"\";\n const rec: Record<string, unknown> = {\n timestamp: rfc3339Utc(),\n level: \"INFO\",\n logger: \"vgi_rpc.access\",\n message: `${protocol}.${info.method} ${status}`,\n server_id: info.serverId,\n protocol,\n protocol_hash: info.protocolHash ?? \"\",\n method: info.method,\n method_type: info.methodType,\n principal: info.principal ?? \"\",\n auth_domain: info.authDomain ?? \"\",\n authenticated: info.authenticated ?? false,\n remote_addr: info.remoteAddr ?? \"\",\n duration_ms: durationMs,\n status,\n error_type: errType,\n };\n\n if (errMsg) rec.error_message = errMsg;\n if (this.serverVersion) rec.server_version = this.serverVersion;\n if (info.protocolVersion) rec.protocol_version = info.protocolVersion;\n if (info.requestId) rec.request_id = info.requestId;\n if (info.requestData && info.requestData.length > 0) {\n // At INFO, the per-request base64 payload dominates record size\n // (an init RPC commonly logs 8+ KiB of base64 per call) and audit\n // consumers rarely need the bytes — they care about who/what/when.\n // Replace with a `truncated: true` marker so the access-log schema's\n // \"unary requires request_data unless truncated\" invariant holds.\n // Bump level to DEBUG to re-enable the full payload.\n const encoded = base64(info.requestData);\n if (this.level === \"DEBUG\") {\n rec.request_data = encoded;\n } else {\n rec.original_request_bytes = encoded.length;\n rec.truncated = true;\n }\n }\n if (info.methodType === \"stream\") {\n rec.stream_id = info.streamId ?? \"00000000000000000000000000000000\";\n }\n if (info.cancelled) rec.cancelled = true;\n\n if (\n stats.inputBatches +\n stats.outputBatches +\n stats.inputRows +\n stats.outputRows +\n stats.inputBytes +\n stats.outputBytes !==\n 0\n ) {\n rec.input_batches = stats.inputBatches;\n rec.output_batches = stats.outputBatches;\n rec.input_rows = stats.inputRows;\n rec.output_rows = stats.outputRows;\n rec.input_bytes = stats.inputBytes;\n rec.output_bytes = stats.outputBytes;\n }\n\n try {\n this.sink.write(`${JSON.stringify(rec)}\\n`);\n } catch {\n // best-effort\n }\n }\n}\n",
|
|
20
|
+
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\nimport { RpcError } from \"./errors.js\";\n\n/** Authentication context available to RPC handlers. */\nexport class AuthContext {\n /** Authentication domain/realm that vouched for the principal; empty string\n * when anonymous. */\n readonly domain: string;\n /** True when the request carried valid credentials. */\n readonly authenticated: boolean;\n /** Authenticated principal identifier, or `null` when anonymous. */\n readonly principal: string | null;\n /** Arbitrary verified claims about the principal (e.g. decoded JWT claims). */\n readonly claims: Record<string, any>;\n\n constructor(domain: string, authenticated: boolean, principal: string | null, claims: Record<string, any> = {}) {\n this.domain = domain;\n this.authenticated = authenticated;\n this.principal = principal;\n this.claims = claims;\n }\n\n /** Create an unauthenticated (anonymous) context. */\n static anonymous(): AuthContext {\n return new AuthContext(\"\", false, null);\n }\n\n /** Throw an RpcError if this context is not authenticated. */\n requireAuthenticated(): void {\n if (!this.authenticated) {\n throw new RpcError(\"AuthenticationError\", \"Authentication required\", \"\");\n }\n }\n}\n",
|
|
21
|
+
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * HTTP server capability discovery.\n *\n * Mirrors Python's `http_capabilities()`: probes `OPTIONS {prefix}/health`\n * and reads three response headers:\n * - `VGI-Max-Request-Bytes` — server-enforced inline request cap\n * - `VGI-Upload-URL-Support` — \"true\" when the server vends upload URLs\n * - `VGI-Max-Upload-Bytes` — cap on out-of-band upload size\n *\n * Honours `Cache-Control: max-age=N` for refresh scheduling.\n */\n\nexport interface HttpServerCapabilities {\n /** Server's advertised max inline request body size (bytes). */\n maxRequestBytes: number | null;\n /** Whether the server vends upload URLs via `__upload_url__/init`. */\n uploadUrlSupport: boolean;\n /** Cap on the size of an externalized upload (bytes). */\n maxUploadBytes: number | null;\n /** Monotonic-time-ish epoch (ms) at which this snapshot should be re-probed. */\n cacheExpiresAt: number | null;\n}\n\nconst MAX_REQUEST_BYTES_HEADER = \"VGI-Max-Request-Bytes\";\nconst UPLOAD_URL_HEADER = \"VGI-Upload-URL-Support\";\nconst MAX_UPLOAD_BYTES_HEADER = \"VGI-Max-Upload-Bytes\";\n\nfunction parseHeaderInt(headers: Headers, name: string): number | null {\n const raw = headers.get(name) ?? headers.get(name.toLowerCase());\n if (raw == null) return null;\n const parsed = Number.parseInt(raw, 10);\n return Number.isFinite(parsed) ? parsed : null;\n}\n\nexport function parseCapabilitiesFromHeaders(headers: Headers): HttpServerCapabilities {\n const uploadRaw = headers.get(UPLOAD_URL_HEADER) ?? headers.get(UPLOAD_URL_HEADER.toLowerCase());\n const uploadUrlSupport = uploadRaw === \"true\";\n\n let cacheExpiresAt: number | null = null;\n const cc = headers.get(\"Cache-Control\") ?? headers.get(\"cache-control\");\n if (cc) {\n for (const token of cc.split(\",\")) {\n const t = token.trim().toLowerCase();\n if (t.startsWith(\"max-age=\")) {\n const seconds = Number.parseFloat(t.slice(\"max-age=\".length));\n if (Number.isFinite(seconds)) {\n cacheExpiresAt = Date.now() + seconds * 1000;\n }\n break;\n }\n }\n }\n\n return {\n maxRequestBytes: parseHeaderInt(headers, MAX_REQUEST_BYTES_HEADER),\n uploadUrlSupport,\n maxUploadBytes: parseHeaderInt(headers, MAX_UPLOAD_BYTES_HEADER),\n cacheExpiresAt,\n };\n}\n\nexport async function discoverHttpCapabilities(\n baseUrl: string,\n prefix: string,\n authorization?: string,\n): Promise<HttpServerCapabilities> {\n const headers: Record<string, string> = {};\n if (authorization) headers.Authorization = authorization;\n const resp = await fetch(`${baseUrl}${prefix}/health`, {\n method: \"OPTIONS\",\n headers,\n });\n // Capability headers are advertised on every response; we don't require 200.\n return parseCapabilitiesFromHeaders(resp.headers);\n}\n\nexport function isCapabilitySnapshotFresh(snapshot: HttpServerCapabilities | null): boolean {\n if (!snapshot) return false;\n if (snapshot.cacheExpiresAt == null) return true;\n return Date.now() < snapshot.cacheExpiresAt;\n}\n",
|
|
20
22
|
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Field, makeData, RecordBatch, Schema, Struct, vectorFromArray } from \"@query-farm/apache-arrow\";\nimport { STATE_KEY } from \"../constants.js\";\nimport { RpcError } from \"../errors.js\";\nimport { type ExternalLocationConfig, isExternalLocationBatch, resolveExternalLocation } from \"../external.js\";\nimport { ARROW_CONTENT_TYPE, serializeIpcStream } from \"../http/common.js\";\nimport { dispatchLogOrError, extractBatchRows, inferArrowType, readResponseBatches } from \"./ipc.js\";\nimport type { LogMessage, StreamSession } from \"./types.js\";\n\ntype CompressFn = (data: Uint8Array, level: number) => Promise<Uint8Array>;\ntype DecompressFn = (data: Uint8Array) => Promise<Uint8Array>;\n\n/**\n * Posts an Arrow IPC request body to *url*, transparently handling\n * client-vended request externalization. Provided by the parent connection\n * so a single capability cache can drive both unary and stream call paths.\n */\nexport type PostFn = (url: string, body: Uint8Array) => Promise<Response>;\n\n/**\n * {@link StreamSession} implementation for the HTTP transport. Stream state is\n * carried statelessly across requests via an HMAC state token: each\n * {@link HttpStreamSession.exchange} or producer-continuation POST sends the\n * current token and receives the next one in the response metadata.\n */\nexport class HttpStreamSession implements StreamSession {\n private _baseUrl: string;\n private _prefix: string;\n private _method: string;\n private _stateToken: string | null;\n private _outputSchema: Schema;\n private _inputSchema?: Schema;\n private _onLog?: (msg: LogMessage) => void;\n private _pendingBatches: RecordBatch[];\n private _finished: boolean;\n private _header: Record<string, any> | null;\n private _compressionLevel?: number;\n private _compressFn?: CompressFn;\n private _decompressFn?: DecompressFn;\n private _authorization?: string;\n private _externalConfig?: ExternalLocationConfig;\n private _postFn?: PostFn;\n\n constructor(opts: {\n baseUrl: string;\n prefix: string;\n method: string;\n stateToken: string | null;\n outputSchema: Schema;\n inputSchema?: Schema;\n onLog?: (msg: LogMessage) => void;\n pendingBatches: RecordBatch[];\n finished: boolean;\n header: Record<string, any> | null;\n compressionLevel?: number;\n compressFn?: CompressFn;\n decompressFn?: DecompressFn;\n authorization?: string;\n externalConfig?: ExternalLocationConfig;\n postFn?: PostFn;\n }) {\n this._baseUrl = opts.baseUrl;\n this._prefix = opts.prefix;\n this._method = opts.method;\n this._stateToken = opts.stateToken;\n this._outputSchema = opts.outputSchema;\n this._inputSchema = opts.inputSchema;\n this._onLog = opts.onLog;\n this._pendingBatches = opts.pendingBatches;\n this._finished = opts.finished;\n this._header = opts.header;\n this._compressionLevel = opts.compressionLevel;\n this._compressFn = opts.compressFn;\n this._decompressFn = opts.decompressFn;\n this._authorization = opts.authorization;\n this._externalConfig = opts.externalConfig;\n this._postFn = opts.postFn;\n }\n\n private async _post(url: string, body: Uint8Array): Promise<Response> {\n if (this._postFn) return this._postFn(url, body);\n return fetch(url, {\n method: \"POST\",\n headers: this._buildHeaders(),\n body: (await this._prepareBody(body)) as unknown as BodyInit,\n });\n }\n\n /** The stream's one-time header row, or `null` if the method declares no header. */\n get header(): Record<string, any> | null {\n return this._header;\n }\n\n private _buildHeaders(): Record<string, string> {\n const headers: Record<string, string> = {\n \"Content-Type\": ARROW_CONTENT_TYPE,\n };\n if (this._compressionLevel != null && this._compressFn) {\n headers[\"Content-Encoding\"] = \"zstd\";\n }\n if (this._compressionLevel != null && this._decompressFn) {\n headers[\"Accept-Encoding\"] = \"zstd\";\n }\n if (this._authorization) {\n headers.Authorization = this._authorization;\n }\n return headers;\n }\n\n private async _prepareBody(content: Uint8Array): Promise<Uint8Array> {\n if (this._compressionLevel != null && this._compressFn) {\n return await this._compressFn(content, this._compressionLevel);\n }\n return content;\n }\n\n private async _readResponse(resp: Response): Promise<Uint8Array<ArrayBuffer>> {\n let body = new Uint8Array(await resp.arrayBuffer());\n if (resp.headers.get(\"Content-Encoding\") === \"zstd\" && this._decompressFn) {\n body = new Uint8Array(await this._decompressFn(body));\n }\n return body;\n }\n\n /**\n * Send an exchange request and return the data rows.\n */\n async exchange(input: Record<string, any>[]): Promise<Record<string, any>[]> {\n if (this._stateToken === null) {\n throw new RpcError(\"ProtocolError\", \"Stream has finished \\u2014 no state token available\", \"\");\n }\n\n // We need to determine the input schema from the data.\n // Build a batch from the input rows using the output schema's field types.\n // For exchange, the input schema matches what the server expects.\n // We'll use the keys from input[0] to figure out columns.\n if (input.length === 0) {\n // Zero-row exchange: build an empty batch with state token.\n // Use inputSchema from __describe__ if available; fall back to\n // outputSchema so the server sees the correct column names.\n const zeroSchema = this._inputSchema ?? this._outputSchema;\n const emptyBatch = this._buildEmptyBatch(zeroSchema);\n const metadata = new Map<string, string>();\n metadata.set(STATE_KEY, this._stateToken);\n const batchWithMeta = new RecordBatch(zeroSchema, emptyBatch.data, metadata);\n return this._doExchange(zeroSchema, [batchWithMeta]);\n }\n\n // Infer schema from first row values (input schema may differ from output).\n const keys = Object.keys(input[0]);\n const fields = keys.map((key) => {\n // Find first non-null value to infer type\n let sample: any;\n for (const row of input) {\n if (row[key] != null) {\n sample = row[key];\n break;\n }\n }\n const arrowType = inferArrowType(sample);\n const nullable = input.some((row) => row[key] == null);\n return new Field(key, arrowType, nullable);\n });\n\n const inputSchema = new Schema(fields);\n const children = inputSchema.fields.map((f) => {\n const values = input.map((row) => row[f.name]);\n return vectorFromArray(values, f.type).data[0];\n });\n\n const structType = new Struct(inputSchema.fields);\n const data = makeData({\n type: structType,\n length: input.length,\n children,\n nullCount: 0,\n });\n\n const metadata = new Map<string, string>();\n metadata.set(STATE_KEY, this._stateToken);\n const batch = new RecordBatch(inputSchema, data, metadata);\n\n return this._doExchange(inputSchema, [batch]);\n }\n\n private async _doExchange(schema: Schema, batches: RecordBatch[]): Promise<Record<string, any>[]> {\n const body = serializeIpcStream(schema, batches);\n const resp = await this._post(`${this._baseUrl}${this._prefix}/${this._method}/exchange`, body);\n if (resp.status === 401) {\n throw new RpcError(\"AuthenticationError\", \"Authentication required\", \"\");\n }\n\n const responseBody = await this._readResponse(resp);\n const { batches: responseBatches } = await readResponseBatches(responseBody);\n\n let resultRows: Record<string, any>[] = [];\n for (const batch of responseBatches) {\n if (batch.numRows === 0) {\n // Could be log/error or state token\n dispatchLogOrError(batch, this._onLog);\n // Check for state token\n const token = batch.metadata?.get(STATE_KEY);\n if (token) {\n this._stateToken = token;\n }\n continue;\n }\n\n // Data batch — extract state token from metadata\n const token = batch.metadata?.get(STATE_KEY);\n if (token) {\n this._stateToken = token;\n }\n\n resultRows = extractBatchRows(batch);\n }\n\n return resultRows;\n }\n\n private _buildEmptyBatch(schema: Schema): RecordBatch {\n const children = schema.fields.map((f) => {\n return makeData({ type: f.type, length: 0, nullCount: 0 });\n });\n const structType = new Struct(schema.fields);\n const data = makeData({\n type: structType,\n length: 0,\n children,\n nullCount: 0,\n });\n return new RecordBatch(schema, data);\n }\n\n /**\n * Iterate over producer stream batches.\n */\n async *[Symbol.asyncIterator](): AsyncIterableIterator<Record<string, any>[]> {\n // Yield pre-loaded batches from init\n for (let batch of this._pendingBatches) {\n if (batch.numRows === 0) {\n if (isExternalLocationBatch(batch)) {\n batch = (await resolveExternalLocation(batch as any, this._externalConfig)) as any;\n } else {\n dispatchLogOrError(batch, this._onLog);\n continue;\n }\n }\n yield extractBatchRows(batch);\n }\n this._pendingBatches = [];\n\n if (this._finished) return;\n if (this._stateToken === null) return;\n\n // Follow continuation tokens\n while (true) {\n const stateToken = this._stateToken;\n if (stateToken === null) return;\n const responseBody = await this._sendContinuation(stateToken);\n const { batches } = await readResponseBatches(responseBody);\n\n let gotContinuation = false;\n for (let batch of batches) {\n if (batch.numRows === 0) {\n // Check for continuation token\n const token = batch.metadata?.get(STATE_KEY);\n if (token) {\n this._stateToken = token;\n gotContinuation = true;\n continue;\n }\n // Check for external location pointer\n if (isExternalLocationBatch(batch)) {\n batch = (await resolveExternalLocation(batch as any, this._externalConfig)) as any;\n } else {\n // Log/error batch\n dispatchLogOrError(batch, this._onLog);\n continue;\n }\n }\n\n yield extractBatchRows(batch);\n }\n\n if (!gotContinuation) break;\n }\n }\n\n private async _sendContinuation(token: string): Promise<Uint8Array> {\n const emptySchema = new Schema([]);\n const metadata = new Map<string, string>();\n metadata.set(STATE_KEY, token);\n\n const structType = new Struct(emptySchema.fields);\n const data = makeData({\n type: structType,\n length: 1,\n children: [],\n nullCount: 0,\n });\n const batch = new RecordBatch(emptySchema, data, metadata);\n const body = serializeIpcStream(emptySchema, [batch]);\n\n const resp = await this._post(`${this._baseUrl}${this._prefix}/${this._method}/exchange`, body);\n if (resp.status === 401) {\n throw new RpcError(\"AuthenticationError\", \"Authentication required\", \"\");\n }\n\n return this._readResponse(resp);\n }\n\n /** No-op: the HTTP transport is stateless, so there is nothing to tear down. */\n close(): void {\n // No-op for HTTP (stateless)\n }\n}\n",
|
|
21
23
|
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Client-side request-body externalization.\n *\n * When a request body would exceed the server-advertised `maxRequestBytes`,\n * we (1) call `{prefix}/__upload_url__/init` to get a pre-signed upload URL,\n * (2) PUT the body to that URL, and (3) replace the inline body with a\n * zero-row \"pointer\" IPC stream that carries the original RPC dispatch\n * metadata plus `vgi_rpc.location: <download-url>`. The server then resolves\n * the pointer and dispatches normally.\n *\n * Mirrors Python's `_externalize_via_upload_url()` and `request_upload_urls()`.\n */\n\nimport { Field, Int64, RecordBatchReader, Schema } from \"@query-farm/apache-arrow\";\nimport { REQUEST_VERSION, REQUEST_VERSION_KEY, RPC_METHOD_KEY } from \"../constants.js\";\nimport { RpcError } from \"../errors.js\";\nimport { makeExternalLocationBatch } from \"../external.js\";\nimport { ARROW_CONTENT_TYPE, serializeIpcStream } from \"../http/common.js\";\nimport { buildRequestIpc } from \"./ipc.js\";\n\nconst UPLOAD_URL_METHOD = \"__upload_url__\";\nconst UPLOAD_URL_PARAMS_SCHEMA = new Schema([new Field(\"count\", new Int64(), false)]);\n\nexport interface UploadUrlPair {\n uploadUrl: string;\n downloadUrl: string;\n expiresAt: Date;\n}\n\n/**\n * POST `__upload_url__/init` and return the requested number of pre-signed\n * URL pairs. Server must have an `uploadUrlProvider` configured; otherwise\n * the route returns 404 and we surface that as `RpcError(\"NotSupported\")`.\n */\nexport async function requestUploadUrls(\n baseUrl: string,\n prefix: string,\n count: number,\n authorization?: string,\n): Promise<UploadUrlPair[]> {\n const body = buildRequestIpc(UPLOAD_URL_PARAMS_SCHEMA, { count: BigInt(count) }, UPLOAD_URL_METHOD);\n const headers: Record<string, string> = { \"Content-Type\": ARROW_CONTENT_TYPE };\n if (authorization) headers.Authorization = authorization;\n\n const resp = await fetch(`${baseUrl}${prefix}/${UPLOAD_URL_METHOD}/init`, {\n method: \"POST\",\n headers,\n body: body as unknown as BodyInit,\n });\n if (resp.status === 404) {\n throw new RpcError(\"NotSupported\", \"Server does not support upload URLs\", \"\");\n }\n if (resp.status === 401) {\n throw new RpcError(\"AuthenticationError\", \"Authentication required\", \"\");\n }\n if (!resp.ok) {\n throw new RpcError(\"HttpError\", `__upload_url__/init failed: HTTP ${resp.status}`, \"\");\n }\n\n const respBody = new Uint8Array(await resp.arrayBuffer());\n const reader = await RecordBatchReader.from(respBody);\n await reader.open();\n\n const pairs: UploadUrlPair[] = [];\n for (const batch of reader.readAll()) {\n if (batch.numRows === 0) continue;\n for (let r = 0; r < batch.numRows; r++) {\n const uploadUrl = batch.getChildAt(0)?.get(r) as string;\n const downloadUrl = batch.getChildAt(1)?.get(r) as string;\n const expiresRaw = batch.getChildAt(2)?.get(r);\n // Timestamp(us) → either a Date, a number (ms), or a bigint (us)\n let expiresAt: Date;\n if (expiresRaw instanceof Date) {\n expiresAt = expiresRaw;\n } else if (typeof expiresRaw === \"bigint\") {\n expiresAt = new Date(Number(expiresRaw / 1000n));\n } else if (typeof expiresRaw === \"number\") {\n expiresAt = new Date(expiresRaw);\n } else {\n expiresAt = new Date();\n }\n pairs.push({ uploadUrl, downloadUrl, expiresAt });\n }\n }\n\n if (pairs.length === 0) {\n throw new RpcError(\"ProtocolError\", \"Server returned no upload URLs\", \"\");\n }\n return pairs;\n}\n\n/**\n * Build the externalized pointer body to send in place of *originalBody*.\n *\n * The pointer is a zero-row IPC stream whose first batch carries:\n * - same schema as the original request batch\n * - merged custom_metadata: original RPC dispatch keys + `vgi_rpc.location`\n *\n * The server's request reader honours the dispatch keys for routing, then\n * resolves the pointer to fetch the inline batch for parameter extraction.\n */\nasync function buildPointerRequestBody(originalBody: Uint8Array, downloadUrl: string): Promise<Uint8Array> {\n const reader = await RecordBatchReader.from(originalBody);\n await reader.open();\n const schema = reader.schema;\n if (!schema) {\n throw new RpcError(\"ProtocolError\", \"Original request body has no schema\", \"\");\n }\n const batches = reader.readAll();\n if (batches.length === 0) {\n throw new RpcError(\"ProtocolError\", \"Original request body has no batches\", \"\");\n }\n const original = batches[0];\n const originalMeta = original.metadata ?? new Map<string, string>();\n\n const pointer = makeExternalLocationBatch(schema, downloadUrl);\n const merged = new Map<string, string>(pointer.metadata ?? new Map());\n // Preserve the original RPC dispatch metadata so the server can route.\n const method = originalMeta.get(RPC_METHOD_KEY);\n const version = originalMeta.get(REQUEST_VERSION_KEY) ?? REQUEST_VERSION;\n if (method) merged.set(RPC_METHOD_KEY, method);\n merged.set(REQUEST_VERSION_KEY, version);\n // Carry over any other keys (request id, state token for exchange, etc).\n for (const [k, v] of originalMeta) {\n if (!merged.has(k)) merged.set(k, v);\n }\n\n // Re-emit the pointer batch with merged metadata.\n const { RecordBatch } = await import(\"@query-farm/apache-arrow\");\n const pointerWithMeta = new RecordBatch(schema as any, (pointer as any).data, merged);\n return serializeIpcStream(schema, [pointerWithMeta]);\n}\n\nexport interface ExternalizeOptions {\n baseUrl: string;\n prefix: string;\n authorization?: string;\n /** Optional per-URL validator; throw to reject. */\n urlValidator?: ((url: string) => void) | null;\n}\n\n/**\n * Upload *body* via a server-vended URL and return the pointer-batch body\n * that should be sent in place of the original. Throws if the server does\n * not advertise upload-URL support or the upload fails.\n */\nexport async function externalizeRequestBody(body: Uint8Array, opts: ExternalizeOptions): Promise<Uint8Array> {\n const pairs = await requestUploadUrls(opts.baseUrl, opts.prefix, 1, opts.authorization);\n const pair = pairs[0];\n\n if (opts.urlValidator) {\n opts.urlValidator(pair.uploadUrl);\n opts.urlValidator(pair.downloadUrl);\n }\n\n const putResp = await fetch(pair.uploadUrl, {\n method: \"PUT\",\n headers: { \"Content-Type\": ARROW_CONTENT_TYPE },\n body: body as unknown as BodyInit,\n });\n if (!putResp.ok) {\n throw new RpcError(\"ExternalUploadFailed\", `PUT to upload URL failed: HTTP ${putResp.status}`, \"\");\n }\n\n return buildPointerRequestBody(body, pair.downloadUrl);\n}\n",
|
|
22
24
|
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { RecordBatch, Schema } from \"@query-farm/apache-arrow\";\nimport { LOG_LEVEL_KEY, STATE_KEY } from \"../constants.js\";\nimport { RpcError } from \"../errors.js\";\nimport { isExternalLocationBatch, resolveExternalLocation } from \"../external.js\";\nimport { ARROW_CONTENT_TYPE } from \"../http/common.js\";\nimport {\n type HttpServerCapabilities,\n isCapabilitySnapshotFresh,\n parseCapabilitiesFromHeaders,\n} from \"./capabilities.js\";\nimport { httpIntrospect, type MethodInfo, type ServiceDescription } from \"./introspect.js\";\nimport {\n buildRequestIpc,\n dispatchLogOrError,\n extractBatchRows,\n readResponseBatches,\n readSequentialStreams,\n} from \"./ipc.js\";\nimport { HttpStreamSession } from \"./stream.js\";\nimport type { HttpConnectOptions, StreamSession } from \"./types.js\";\nimport { externalizeRequestBody } from \"./uploadUrl.js\";\n\ntype CompressFn = (data: Uint8Array, level: number) => Promise<Uint8Array>;\ntype DecompressFn = (data: Uint8Array) => Promise<Uint8Array>;\n\n/** A connected RPC client, returned by {@link httpConnect}, {@link pipeConnect}, and {@link subprocessConnect}. */\nexport interface RpcClient {\n /** Invoke a unary method. Returns the single result row, or `null` for void methods. Parameter defaults from `__describe__` are applied automatically. */\n call(method: string, params?: Record<string, any>): Promise<Record<string, any> | null>;\n /** Open a streaming method, returning a {@link StreamSession} for exchange or producer iteration. */\n stream(method: string, params?: Record<string, any>): Promise<StreamSession>;\n /** Fetch the server's method/protocol description (cached after the first call). */\n describe(): Promise<ServiceDescription>;\n /** Release transport resources; for subprocess clients this also terminates the child process. */\n close(): void;\n}\n\n/**\n * Connect to a vgi-rpc server over HTTP. The returned client lazily introspects\n * the server (caching `__describe__`) on the first call and transparently handles\n * zstd compression, authorization, and 413 request externalization.\n */\nexport function httpConnect(baseUrl: string, options?: HttpConnectOptions): RpcClient {\n const prefix = (options?.prefix ?? \"\").replace(/\\/+$/, \"\");\n const onLog = options?.onLog;\n const compressionLevel = options?.compressionLevel;\n const authorization = options?.authorization;\n const externalConfig = options?.externalLocation;\n\n let methodCache: Map<string, MethodInfo> | null = null;\n /** Application protocol surface version discovered via __describe__. When\n * non-empty, the client emits it on every request as\n * `vgi_rpc.protocol_version` so a versioned server can validate at the\n * dispatch boundary. */\n let serverProtocolVersion = \"\";\n let compressFn: CompressFn | undefined;\n let decompressFn: DecompressFn | undefined;\n let compressionLoaded = false;\n let capabilities: HttpServerCapabilities | null = null;\n\n function updateCapabilitiesFromResponse(resp: Response): void {\n const next = parseCapabilitiesFromHeaders(resp.headers);\n // Only treat the snapshot as authoritative when the server actually\n // emitted capability hints. Otherwise leave any prior cache in place.\n if (next.maxRequestBytes != null || next.uploadUrlSupport) {\n capabilities = next;\n }\n }\n\n async function maybeExternalize(body: Uint8Array): Promise<Uint8Array> {\n const caps = isCapabilitySnapshotFresh(capabilities) ? capabilities : null;\n if (!caps) return body;\n if (!caps.uploadUrlSupport) return body;\n if (caps.maxRequestBytes == null || body.byteLength <= caps.maxRequestBytes) return body;\n return externalizeRequestBody(body, {\n baseUrl,\n prefix,\n authorization,\n urlValidator: externalConfig?.urlValidator ?? null,\n });\n }\n\n /**\n * Send a POST request, transparently retrying with externalization if\n * the server returns 413 (Payload Too Large) and advertises upload-URL\n * support. Mirrors Python's 413 fallback in `_HttpProxy._post_with_externalization`.\n */\n async function postWithExternalization(url: string, body: Uint8Array): Promise<Response> {\n const sendBody = await maybeExternalize(body);\n let resp = await fetch(url, {\n method: \"POST\",\n headers: buildHeaders(),\n body: (await prepareBody(sendBody)) as unknown as BodyInit,\n });\n updateCapabilitiesFromResponse(resp);\n\n if (resp.status === 413 && capabilities?.uploadUrlSupport && body.byteLength > 0) {\n // Refresh-and-retry: caps tell us we can externalize.\n const externalized = await externalizeRequestBody(body, {\n baseUrl,\n prefix,\n authorization,\n urlValidator: externalConfig?.urlValidator ?? null,\n });\n resp = await fetch(url, {\n method: \"POST\",\n headers: buildHeaders(),\n body: (await prepareBody(externalized)) as unknown as BodyInit,\n });\n updateCapabilitiesFromResponse(resp);\n }\n\n return resp;\n }\n\n async function ensureCompression(): Promise<void> {\n if (compressionLoaded || compressionLevel == null) return;\n try {\n const mod = await import(\"../util/zstd.js\");\n compressFn = mod.zstdCompress;\n decompressFn = mod.zstdDecompress;\n } catch {\n // zstd not available in this runtime\n }\n compressionLoaded = true;\n }\n\n function buildHeaders(): Record<string, string> {\n const headers: Record<string, string> = {\n \"Content-Type\": ARROW_CONTENT_TYPE,\n };\n if (compressionLevel != null && compressFn) {\n headers[\"Content-Encoding\"] = \"zstd\";\n }\n if (compressionLevel != null && decompressFn) {\n headers[\"Accept-Encoding\"] = \"zstd\";\n }\n if (authorization) {\n headers.Authorization = authorization;\n }\n return headers;\n }\n\n async function prepareBody(content: Uint8Array): Promise<Uint8Array> {\n if (compressionLevel != null && compressFn) {\n return await compressFn(content, compressionLevel);\n }\n return content;\n }\n\n function checkAuth(resp: Response): void {\n if (resp.status === 401) {\n throw new RpcError(\"AuthenticationError\", \"Authentication required\", \"\");\n }\n }\n\n async function readResponse(resp: Response): Promise<Uint8Array<ArrayBuffer>> {\n let body = new Uint8Array(await resp.arrayBuffer());\n if (resp.headers.get(\"Content-Encoding\") === \"zstd\" && decompressFn) {\n body = new Uint8Array(await decompressFn(body));\n }\n return body;\n }\n\n async function ensureMethodCache(): Promise<Map<string, MethodInfo>> {\n if (methodCache) return methodCache;\n await ensureCompression();\n const desc = await httpIntrospect(baseUrl, {\n prefix,\n authorization,\n compressionLevel,\n compressFn,\n decompressFn,\n });\n methodCache = new Map(desc.methods.map((m) => [m.name, m]));\n serverProtocolVersion = desc.protocolVersion;\n return methodCache;\n }\n\n return {\n async call(method: string, params?: Record<string, any>): Promise<Record<string, any> | null> {\n await ensureCompression();\n const methods = await ensureMethodCache();\n const info = methods.get(method);\n if (!info) {\n throw new Error(`Unknown method: '${method}'`);\n }\n\n // Apply defaults\n const fullParams = { ...(info.defaults ?? {}), ...(params ?? {}) };\n\n const body = buildRequestIpc(info.paramsSchema, fullParams, method, { protocolVersion: serverProtocolVersion });\n const resp = await postWithExternalization(`${baseUrl}${prefix}/${method}`, body);\n checkAuth(resp);\n\n const responseBody = await readResponse(resp);\n const { batches } = await readResponseBatches(responseBody);\n\n // Process batches: dispatch logs, resolve external pointers, find result\n let resultBatch: RecordBatch | null = null;\n for (let batch of batches) {\n if (batch.numRows === 0) {\n // Check for external location pointer batch\n if (isExternalLocationBatch(batch as any)) {\n batch = (await resolveExternalLocation(batch as any, externalConfig)) as any;\n } else {\n dispatchLogOrError(batch, onLog);\n continue;\n }\n }\n resultBatch = batch;\n }\n\n if (!resultBatch) {\n // Void return (result schema has no fields)\n return null;\n }\n\n // Extract single-row result\n const rows = extractBatchRows(resultBatch);\n if (rows.length === 0) return null;\n\n const result = rows[0];\n // For void methods (empty result schema), return null\n if (info.resultSchema.fields.length === 0) return null;\n\n // For single-field results, return the whole object\n return result;\n },\n\n async stream(method: string, params?: Record<string, any>): Promise<HttpStreamSession> {\n await ensureCompression();\n const methods = await ensureMethodCache();\n const info = methods.get(method);\n if (!info) {\n throw new Error(`Unknown method: '${method}'`);\n }\n\n // Apply defaults\n const fullParams = { ...(info.defaults ?? {}), ...(params ?? {}) };\n\n const body = buildRequestIpc(info.paramsSchema, fullParams, method, { protocolVersion: serverProtocolVersion });\n const resp = await postWithExternalization(`${baseUrl}${prefix}/${method}/init`, body);\n checkAuth(resp);\n\n const responseBody = await readResponse(resp);\n\n // Parse the response: may contain header stream + data stream\n let header: Record<string, any> | null = null;\n let stateToken: string | null = null;\n const pendingBatches: RecordBatch[] = [];\n let finished = false;\n let streamSchema: Schema | null = null;\n\n if (info.headerSchema) {\n // Response may contain two concatenated IPC streams:\n // 1. Header stream\n // 2. Data stream (with state token and/or data batches)\n const reader = await readSequentialStreams(responseBody);\n\n // First stream: header\n const headerStream = await reader.readStream();\n if (headerStream) {\n for (const batch of headerStream.batches as any[]) {\n if (batch.numRows === 0) {\n dispatchLogOrError(batch, onLog);\n continue;\n }\n const rows = extractBatchRows(batch);\n if (rows.length > 0) {\n header = rows[0];\n }\n }\n }\n\n // Second stream: data/state\n const dataStream = await reader.readStream();\n if (dataStream) {\n streamSchema = dataStream.schema as any;\n }\n const headerErrorBatches: RecordBatch[] = [];\n if (dataStream) {\n for (const batch of dataStream.batches as any[]) {\n if (batch.numRows === 0) {\n // Check for state token\n const token = batch.metadata?.get(STATE_KEY);\n if (token) {\n stateToken = token;\n continue;\n }\n const level = batch.metadata?.get(LOG_LEVEL_KEY);\n if (level === \"EXCEPTION\") {\n headerErrorBatches.push(batch);\n continue;\n }\n dispatchLogOrError(batch, onLog);\n continue;\n }\n pendingBatches.push(batch);\n }\n }\n\n if (headerErrorBatches.length > 0) {\n if (pendingBatches.length > 0 || stateToken !== null) {\n pendingBatches.push(...headerErrorBatches);\n } else {\n for (const batch of headerErrorBatches) {\n dispatchLogOrError(batch, onLog);\n }\n }\n }\n\n if (!dataStream && !stateToken) {\n finished = true;\n }\n } else {\n // Single IPC stream: data/state (no header)\n const { schema: responseSchema, batches } = await readResponseBatches(responseBody);\n streamSchema = responseSchema;\n\n // Collect error batches separately — only defer them if there are\n // data batches or state tokens (mid-stream errors). Otherwise throw\n // immediately (init-only errors like exchange_error_on_init).\n const errorBatches: RecordBatch[] = [];\n\n for (const batch of batches) {\n if (batch.numRows === 0) {\n // Check for state token\n const token = batch.metadata?.get(STATE_KEY);\n if (token) {\n stateToken = token;\n continue;\n }\n // Collect EXCEPTION batches for deferred dispatch\n const level = batch.metadata?.get(LOG_LEVEL_KEY);\n if (level === \"EXCEPTION\") {\n errorBatches.push(batch);\n continue;\n }\n dispatchLogOrError(batch, onLog);\n continue;\n }\n pendingBatches.push(batch);\n }\n\n // If we have data batches or a state token, defer errors to iteration.\n // Otherwise throw immediately (error on init).\n if (errorBatches.length > 0) {\n if (pendingBatches.length > 0 || stateToken !== null) {\n pendingBatches.push(...errorBatches);\n } else {\n // No data, no state — this is a pure init error. Throw now.\n for (const batch of errorBatches) {\n dispatchLogOrError(batch, onLog);\n }\n }\n }\n }\n\n if (pendingBatches.length === 0 && stateToken === null) {\n finished = true;\n }\n\n // Determine output schema: prefer the IPC stream schema from the init\n // response (it carries the server's actual output schema even for\n // zero-row token batches), then pending batch schemas, then describe info.\n const outputSchema =\n (streamSchema && streamSchema.fields.length > 0 ? streamSchema : null) ??\n (pendingBatches.length > 0 ? pendingBatches[0].schema : null) ??\n info.outputSchema ??\n info.resultSchema;\n\n return new HttpStreamSession({\n baseUrl,\n prefix,\n method,\n stateToken,\n outputSchema,\n inputSchema: info.inputSchema,\n onLog,\n pendingBatches,\n finished,\n header,\n compressionLevel,\n compressFn,\n decompressFn,\n authorization,\n externalConfig,\n postFn: postWithExternalization,\n });\n },\n\n async describe(): Promise<ServiceDescription> {\n await ensureCompression();\n return httpIntrospect(baseUrl, {\n prefix,\n authorization,\n compressionLevel,\n compressFn,\n decompressFn,\n });\n },\n\n close(): void {\n // No-op (HTTP stateless)\n },\n };\n}\n",
|
|
23
25
|
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\n/** RFC 9728 OAuth Protected Resource Metadata (client-side response). */\nexport interface OAuthResourceMetadataResponse {\n /** The protected resource's canonical URL (`resource`). */\n resource: string;\n /** Authorization-server issuer URLs; the first is used for OIDC discovery (`authorization_servers`). */\n authorizationServers: string[];\n /** Scopes the resource advertises (`scopes_supported`). */\n scopesSupported?: string[];\n /** Advertised bearer methods, e.g. `[\"header\"]` (`bearer_methods_supported`). */\n bearerMethodsSupported?: string[];\n /** JWS algorithms the resource accepts (`resource_signing_alg_values_supported`). */\n resourceSigningAlgValuesSupported?: string[];\n /** Human-readable resource name (`resource_name`). */\n resourceName?: string;\n /** Documentation URL for the resource (`resource_documentation`). */\n resourceDocumentation?: string;\n /** Policy URL for the resource (`resource_policy_uri`). */\n resourcePolicyUri?: string;\n /** Terms-of-service URL for the resource (`resource_tos_uri`). */\n resourceTosUri?: string;\n /** OAuth client_id advertised by the server. */\n clientId?: string;\n /** OAuth client_secret advertised by the server. */\n clientSecret?: string;\n /** When true, use the OIDC id_token as the Bearer token instead of access_token. */\n useIdTokenAsBearer?: boolean;\n /** OAuth client_id for device code flow. */\n deviceCodeClientId?: string;\n /** OAuth client_secret for device code flow. */\n deviceCodeClientSecret?: string;\n}\n\nfunction parseMetadataJson(json: Record<string, any>): OAuthResourceMetadataResponse {\n const result: OAuthResourceMetadataResponse = {\n resource: json.resource,\n authorizationServers: json.authorization_servers,\n };\n if (json.scopes_supported) result.scopesSupported = json.scopes_supported;\n if (json.bearer_methods_supported) result.bearerMethodsSupported = json.bearer_methods_supported;\n if (json.resource_signing_alg_values_supported)\n result.resourceSigningAlgValuesSupported = json.resource_signing_alg_values_supported;\n if (json.resource_name) result.resourceName = json.resource_name;\n if (json.resource_documentation) result.resourceDocumentation = json.resource_documentation;\n if (json.resource_policy_uri) result.resourcePolicyUri = json.resource_policy_uri;\n if (json.resource_tos_uri) result.resourceTosUri = json.resource_tos_uri;\n if (json.client_id) result.clientId = json.client_id;\n if (json.client_secret) result.clientSecret = json.client_secret;\n if (json.use_id_token_as_bearer) result.useIdTokenAsBearer = json.use_id_token_as_bearer;\n if (json.device_code_client_id) result.deviceCodeClientId = json.device_code_client_id;\n if (json.device_code_client_secret) result.deviceCodeClientSecret = json.device_code_client_secret;\n return result;\n}\n\n/**\n * Discover OAuth Protected Resource Metadata (RFC 9728) from a vgi-rpc server.\n * Returns `null` if the server does not serve the well-known endpoint.\n */\nexport async function httpOAuthMetadata(\n baseUrl: string,\n prefix?: string,\n): Promise<OAuthResourceMetadataResponse | null> {\n const effectivePrefix = (prefix ?? \"\").replace(/\\/+$/, \"\");\n const metadataUrl = `${baseUrl.replace(/\\/+$/, \"\")}/.well-known/oauth-protected-resource${effectivePrefix}`;\n\n try {\n return await fetchOAuthMetadata(metadataUrl);\n } catch {\n return null;\n }\n}\n\n/**\n * Fetch OAuth Protected Resource Metadata from an explicit metadata URL.\n */\nexport async function fetchOAuthMetadata(metadataUrl: string): Promise<OAuthResourceMetadataResponse> {\n const response = await fetch(metadataUrl);\n if (!response.ok) {\n throw new Error(`Failed to fetch OAuth metadata from ${metadataUrl}: ${response.status}`);\n }\n const json = await response.json();\n return parseMetadataJson(json);\n}\n\n/**\n * Extract the `resource_metadata` URL from a WWW-Authenticate Bearer challenge.\n * Returns `null` if no resource_metadata parameter is found.\n */\nexport function parseResourceMetadataUrl(wwwAuthenticate: string): string | null {\n // Parse Bearer challenge parameters per RFC 6750\n const bearerMatch = wwwAuthenticate.match(/^Bearer\\s+(.*)/i);\n if (!bearerMatch) return null;\n\n const params = bearerMatch[1];\n const metadataMatch = params.match(/resource_metadata=\"([^\"]+)\"/);\n if (!metadataMatch) return null;\n\n return metadataMatch[1];\n}\n\n/**\n * Extract the `client_id` from a WWW-Authenticate Bearer challenge.\n * Returns `null` if no client_id parameter is found.\n */\nexport function parseClientId(wwwAuthenticate: string): string | null {\n const bearerMatch = wwwAuthenticate.match(/^Bearer\\s+(.*)/i);\n if (!bearerMatch) return null;\n\n const params = bearerMatch[1];\n const clientIdMatch = params.match(/client_id=\"([^\"]+)\"/);\n if (!clientIdMatch) return null;\n\n return clientIdMatch[1];\n}\n\n/**\n * Extract the `client_secret` from a WWW-Authenticate Bearer challenge.\n * Returns `null` if no client_secret parameter is found.\n */\nexport function parseClientSecret(wwwAuthenticate: string): string | null {\n const bearerMatch = wwwAuthenticate.match(/^Bearer\\s+(.*)/i);\n if (!bearerMatch) return null;\n\n const params = bearerMatch[1];\n const match = params.match(/client_secret=\"([^\"]+)\"/);\n if (!match) return null;\n\n return match[1];\n}\n\n/**\n * Extract the `use_id_token_as_bearer` flag from a WWW-Authenticate Bearer challenge.\n * Returns `true` if the parameter is present and set to \"true\", `false` otherwise.\n */\nexport function parseUseIdTokenAsBearer(wwwAuthenticate: string): boolean {\n const bearerMatch = wwwAuthenticate.match(/^Bearer\\s+(.*)/i);\n if (!bearerMatch) return false;\n\n const params = bearerMatch[1];\n const match = params.match(/use_id_token_as_bearer=\"([^\"]+)\"/);\n if (!match) return false;\n\n return match[1] === \"true\";\n}\n\n/**\n * Extract the `device_code_client_id` from a WWW-Authenticate Bearer challenge.\n * Returns `null` if no device_code_client_id parameter is found.\n */\nexport function parseDeviceCodeClientId(wwwAuthenticate: string): string | null {\n const bearerMatch = wwwAuthenticate.match(/^Bearer\\s+(.*)/i);\n if (!bearerMatch) return null;\n\n const params = bearerMatch[1];\n const match = params.match(/device_code_client_id=\"([^\"]+)\"/);\n if (!match) return null;\n\n return match[1];\n}\n\n/**\n * Extract the `device_code_client_secret` from a WWW-Authenticate Bearer challenge.\n * Returns `null` if no device_code_client_secret parameter is found.\n */\nexport function parseDeviceCodeClientSecret(wwwAuthenticate: string): string | null {\n const bearerMatch = wwwAuthenticate.match(/^Bearer\\s+(.*)/i);\n if (!bearerMatch) return null;\n\n const params = bearerMatch[1];\n const match = params.match(/device_code_client_secret=\"([^\"]+)\"/);\n if (!match) return null;\n\n return match[1];\n}\n",
|
|
24
|
-
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n Field,\n makeData,\n RecordBatch,\n RecordBatchStreamWriter,\n Schema,\n Struct,\n vectorFromArray,\n} from \"@query-farm/apache-arrow\";\nimport { DESCRIBE_METHOD_NAME } from \"../constants.js\";\nimport { RpcError } from \"../errors.js\";\nimport { type ExternalLocationConfig, isExternalLocationBatch, resolveExternalLocation } from \"../external.js\";\nimport { serializeIpcStream } from \"../http/common.js\";\nimport { IpcStreamReader } from \"../wire/reader.js\";\nimport type { RpcClient } from \"./connect.js\";\nimport { type MethodInfo, parseDescribeResponse, type ServiceDescription } from \"./introspect.js\";\nimport { buildRequestIpc, dispatchLogOrError, extractBatchRows, inferArrowType } from \"./ipc.js\";\nimport type { LogMessage, PipeConnectOptions, StreamSession, SubprocessConnectOptions } from \"./types.js\";\n\n// ---------------------------------------------------------------------------\n// Writable abstraction\n// ---------------------------------------------------------------------------\n\ninterface PipeWritable {\n write(data: Uint8Array): void;\n flush?(): void;\n end(): void;\n}\n\ntype WriteFn = (bytes: Uint8Array) => void;\n\n// ---------------------------------------------------------------------------\n// PipeIncrementalWriter — batch-by-batch IPC writing for lockstep streaming\n// ---------------------------------------------------------------------------\n\nclass PipeIncrementalWriter {\n private writer: RecordBatchStreamWriter;\n private writeFn: WriteFn;\n private closed = false;\n\n constructor(writeFn: WriteFn, schema: Schema) {\n this.writeFn = writeFn;\n this.writer = new RecordBatchStreamWriter();\n this.writer.reset(undefined, schema);\n this.drain(); // flushes schema message\n }\n\n write(batch: RecordBatch): void {\n if (this.closed) throw new Error(\"PipeIncrementalWriter already closed\");\n (this.writer as any)._writeRecordBatch(batch);\n this.drain();\n }\n\n close(): void {\n if (this.closed) return;\n this.closed = true;\n // EOS marker: continuation (0xFFFFFFFF) + metadata length (0x00000000)\n const eos = new Uint8Array(new Int32Array([-1, 0]).buffer);\n this.writeFn(eos);\n }\n\n private drain(): void {\n const values = (this.writer as any)._sink._values as Uint8Array[];\n for (const chunk of values) {\n this.writeFn(chunk);\n }\n values.length = 0;\n }\n}\n\n// ---------------------------------------------------------------------------\n// PipeStreamSession — lockstep streaming over pipes\n// ---------------------------------------------------------------------------\n\n/**\n * {@link StreamSession} implementation for the pipe/subprocess transport.\n * Drives lockstep streaming over a single bidirectional pipe: each\n * {@link PipeStreamSession.exchange} or iteration step writes one input batch\n * and reads one output batch. Holds the connection's single-threaded busy lock\n * until closed.\n */\nexport class PipeStreamSession implements StreamSession {\n private _reader: IpcStreamReader;\n private _writeFn: WriteFn;\n private _onLog?: (msg: LogMessage) => void;\n private _header: Record<string, any> | null;\n private _inputWriter: PipeIncrementalWriter | null = null;\n private _inputSchema: Schema | null = null;\n private _outputStreamOpened = false;\n private _closed = false;\n private _outputSchema: Schema;\n private _releaseBusy: () => void;\n private _setDrainPromise: (p: Promise<void>) => void;\n private _externalConfig?: ExternalLocationConfig;\n\n constructor(opts: {\n reader: IpcStreamReader;\n writeFn: WriteFn;\n onLog?: (msg: LogMessage) => void;\n header: Record<string, any> | null;\n outputSchema: Schema;\n releaseBusy: () => void;\n setDrainPromise: (p: Promise<void>) => void;\n externalConfig?: ExternalLocationConfig;\n }) {\n this._reader = opts.reader;\n this._writeFn = opts.writeFn;\n this._onLog = opts.onLog;\n this._header = opts.header;\n this._outputSchema = opts.outputSchema;\n this._releaseBusy = opts.releaseBusy;\n this._setDrainPromise = opts.setDrainPromise;\n this._externalConfig = opts.externalConfig;\n }\n\n /** The stream's one-time header row, or `null` if the method declares no header. */\n get header(): Record<string, any> | null {\n return this._header;\n }\n\n /**\n * Read output batches from the server until a data batch is found.\n * Dispatches log/error batches along the way.\n * Returns null when server closes output stream (EOS).\n */\n private async _readOutputBatch(): Promise<RecordBatch | null> {\n while (true) {\n const batch = await this._reader.readNextBatch();\n if (batch === null) return null; // Server closed output stream\n\n if (batch.numRows === 0) {\n // Check for external location pointer batch\n if (isExternalLocationBatch(batch as any)) {\n return (await resolveExternalLocation(batch as any, this._externalConfig)) as any;\n }\n // Check if it's a log/error batch. If so, dispatch and continue.\n // Otherwise it's a zero-row data batch — return it.\n if (dispatchLogOrError(batch as any, this._onLog)) {\n continue;\n }\n }\n\n return batch as any;\n }\n }\n\n /**\n * Ensure the server's output stream is opened for reading.\n * Must be called AFTER sending the first input batch, because\n * the server's output schema may not be flushed until it processes\n * the first input and writes the first output batch.\n */\n private async _ensureOutputStream(): Promise<void> {\n if (this._outputStreamOpened) return;\n this._outputStreamOpened = true;\n const schema = await this._reader.openNextStream();\n if (!schema) {\n throw new RpcError(\"ProtocolError\", \"Expected output stream but got EOF\", \"\");\n }\n }\n\n /**\n * Send an exchange request and return the data rows.\n */\n async exchange(input: Record<string, any>[]): Promise<Record<string, any>[]> {\n if (this._closed) {\n throw new RpcError(\"ProtocolError\", \"Stream session is closed\", \"\");\n }\n\n // Build input batch\n let inputSchema: Schema;\n let batch: RecordBatch;\n\n if (input.length === 0) {\n // Zero-row exchange: use cached input schema from a prior exchange,\n // then fall back to the output schema from describe. The cached\n // schema is preferred because input and output schemas may differ\n // (e.g. exchange_accumulate: input {value} → output {running_sum, exchange_count}).\n inputSchema = this._inputSchema ?? this._outputSchema;\n const children = inputSchema.fields.map((f) => {\n return makeData({ type: f.type, length: 0, nullCount: 0 });\n });\n const structType = new Struct(inputSchema.fields);\n const data = makeData({\n type: structType,\n length: 0,\n children,\n nullCount: 0,\n });\n batch = new RecordBatch(inputSchema, data);\n } else {\n // Infer schema from first row.\n // Always use nullable fields — the server validates input schemas\n // strictly and its schema typically uses nullable columns.\n const keys = Object.keys(input[0]);\n const fields = keys.map((key) => {\n let sample: any;\n for (const row of input) {\n if (row[key] != null) {\n sample = row[key];\n break;\n }\n }\n const arrowType = inferArrowType(sample);\n return new Field(key, arrowType, /* nullable */ true);\n });\n inputSchema = new Schema(fields);\n\n // Validate schema consistency: all exchanges on the same pipe session\n // share a single IPC stream, so the schema is locked to the first call.\n if (this._inputSchema) {\n const cached = this._inputSchema;\n if (\n cached.fields.length !== inputSchema.fields.length ||\n cached.fields.some((f, i) => f.name !== inputSchema.fields[i].name)\n ) {\n throw new RpcError(\n \"ProtocolError\",\n `Exchange input schema changed: expected [${cached.fields.map((f) => f.name).join(\", \")}] ` +\n `but got [${inputSchema.fields.map((f) => f.name).join(\", \")}]`,\n \"\",\n );\n }\n } else {\n this._inputSchema = inputSchema;\n }\n\n const children = inputSchema.fields.map((f) => {\n const values = input.map((row) => row[f.name]);\n return vectorFromArray(values, f.type).data[0];\n });\n const structType = new Struct(inputSchema.fields);\n const data = makeData({\n type: structType,\n length: input.length,\n children,\n nullCount: 0,\n });\n batch = new RecordBatch(inputSchema, data);\n }\n\n // Lazy-open input writer on first exchange\n if (!this._inputWriter) {\n this._inputWriter = new PipeIncrementalWriter(this._writeFn, inputSchema);\n }\n\n // Write one input batch FIRST, then open output stream.\n // The server may not flush the output schema until it processes the\n // first input batch and writes the first output batch.\n this._inputWriter.write(batch);\n await this._ensureOutputStream();\n\n // Read output batch(es) from server\n try {\n const outputBatch = await this._readOutputBatch();\n if (outputBatch === null) {\n return [];\n }\n return extractBatchRows(outputBatch);\n } catch (e) {\n // On error, clean up the pipe so it's ready for the next request\n await this._cleanup();\n throw e;\n }\n }\n\n /**\n * Clean up after an error: close input, drain output, release busy.\n */\n private async _cleanup(): Promise<void> {\n if (this._closed) return;\n this._closed = true;\n if (this._inputWriter) {\n this._inputWriter.close();\n this._inputWriter = null;\n }\n try {\n if (this._outputStreamOpened) {\n while ((await this._reader.readNextBatch()) !== null) {}\n }\n } catch {\n // Suppress errors during drain\n }\n this._releaseBusy();\n }\n\n /**\n * Iterate over producer stream batches (lockstep).\n */\n async *[Symbol.asyncIterator](): AsyncIterableIterator<Record<string, any>[]> {\n if (this._closed) return;\n\n try {\n // Open input writer with empty schema for tick batches\n const tickSchema = new Schema([]);\n this._inputWriter = new PipeIncrementalWriter(this._writeFn, tickSchema);\n\n // Build a zero-row tick batch\n const structType = new Struct(tickSchema.fields);\n const tickData = makeData({\n type: structType,\n length: 0,\n children: [],\n nullCount: 0,\n });\n const tickBatch = new RecordBatch(tickSchema, tickData);\n\n while (true) {\n // Send one tick FIRST, then open output stream on first iteration.\n // The server may not flush the output schema until it processes the\n // first tick and writes the first output batch.\n this._inputWriter.write(tickBatch);\n await this._ensureOutputStream();\n\n // Read output batch(es)\n const outputBatch = await this._readOutputBatch();\n if (outputBatch === null) {\n // Server finished — EOS on output stream\n break;\n }\n\n yield extractBatchRows(outputBatch);\n }\n } finally {\n // Close input stream if still open\n if (this._inputWriter) {\n this._inputWriter.close();\n this._inputWriter = null;\n }\n // Drain any remaining output batches\n try {\n if (this._outputStreamOpened) {\n while ((await this._reader.readNextBatch()) !== null) {}\n }\n } catch {\n // Suppress errors during drain\n }\n this._closed = true;\n this._releaseBusy();\n }\n }\n\n /**\n * End the stream: close the input side (or send an empty stream if nothing\n * was sent yet) and drain the server's remaining output in the background,\n * releasing the connection's busy lock once the drain completes.\n */\n close(): void {\n if (this._closed) return;\n this._closed = true;\n\n if (this._inputWriter) {\n // Close the input stream (EOS)\n this._inputWriter.close();\n this._inputWriter = null;\n } else {\n // Never iterated/exchanged — send empty schema stream so server unblocks.\n // Server is blocked at reader.openNextStream() waiting for client's input.\n const emptySchema = new Schema([]);\n const ipc = serializeIpcStream(emptySchema, []);\n this._writeFn(ipc);\n }\n\n // Drain remaining output batches asynchronously. Register the drain\n // promise so that the next acquireBusy() waits for it to complete.\n const drainPromise = (async () => {\n try {\n if (!this._outputStreamOpened) {\n const schema = await this._reader.openNextStream();\n if (schema) {\n while ((await this._reader.readNextBatch()) !== null) {}\n }\n } else {\n while ((await this._reader.readNextBatch()) !== null) {}\n }\n } catch {\n // Suppress errors during drain\n } finally {\n this._releaseBusy();\n }\n })();\n this._setDrainPromise(drainPromise);\n }\n}\n\n// ---------------------------------------------------------------------------\n// pipeConnect — create an RpcClient over raw readable/writable streams\n// ---------------------------------------------------------------------------\n\n/**\n * Connect to a vgi-rpc server over a raw bidirectional pipe (a readable stream\n * of server output plus a writable for client input). The connection is\n * single-threaded: only one call or stream may be in flight at a time. The\n * `__describe__` handshake is sent before the reader is opened to avoid deadlock.\n */\nexport function pipeConnect(\n readable: ReadableStream<Uint8Array>,\n writable: PipeWritable,\n options?: PipeConnectOptions,\n): RpcClient {\n const onLog = options?.onLog;\n const externalConfig = options?.externalLocation;\n\n let reader: IpcStreamReader | null = null;\n let readerPromise: Promise<IpcStreamReader> | null = null;\n let methodCache: Map<string, MethodInfo> | null = null;\n let protocolName = \"\";\n let serverProtocolVersion = \"\";\n let _busy = false;\n let _drainPromise: Promise<void> | null = null;\n let closed = false;\n\n const writeFn: WriteFn = (bytes: Uint8Array) => {\n writable.write(bytes);\n writable.flush?.();\n };\n\n // The IpcStreamReader.create() blocks until the first IPC schema arrives\n // on the readable. To avoid deadlock, we must send our first request\n // (the __describe__ call) BEFORE opening the reader. After that, the\n // response bytes are in the pipe buffer and the reader can consume them.\n async function ensureReader(): Promise<IpcStreamReader> {\n if (reader) return reader;\n if (!readerPromise) {\n readerPromise = IpcStreamReader.create(readable);\n }\n reader = await readerPromise;\n return reader;\n }\n\n async function acquireBusy(): Promise<void> {\n // Wait for any pending drain from a previous close()\n if (_drainPromise) {\n await _drainPromise;\n _drainPromise = null;\n }\n if (_busy) {\n throw new Error(\n \"Pipe transport is busy — another call or stream is in progress. \" +\n \"Pipe connections are single-threaded; wait for the current operation to complete.\",\n );\n }\n _busy = true;\n }\n\n function releaseBusy(): void {\n _busy = false;\n }\n\n function setDrainPromise(p: Promise<void>): void {\n _drainPromise = p;\n }\n\n async function ensureMethodCache(): Promise<Map<string, MethodInfo>> {\n if (methodCache) return methodCache;\n\n await acquireBusy();\n try {\n // Send __describe__ request BEFORE opening the reader.\n // IpcStreamReader.create() blocks on reader.open() which reads the\n // first schema message. The server won't write anything until it\n // receives a request. Sending first avoids deadlock.\n const emptySchema = new Schema([]);\n const body = buildRequestIpc(emptySchema, {}, DESCRIBE_METHOD_NAME);\n writeFn(body);\n\n const r = await ensureReader();\n\n // Read response (first IPC stream = describe response schema + batches)\n // ensureReader() consumed the schema via open(). Use readStream()\n // which — on the first call (initialized=false) — returns the current\n // stream without calling reset().\n const response = await r.readStream();\n if (!response) {\n throw new Error(\"EOF reading __describe__ response\");\n }\n\n const desc = await parseDescribeResponse(response.batches as any, onLog);\n protocolName = desc.protocolName;\n serverProtocolVersion = desc.protocolVersion;\n methodCache = new Map(desc.methods.map((m) => [m.name, m]));\n return methodCache;\n } finally {\n releaseBusy();\n }\n }\n\n return {\n async call(method: string, params?: Record<string, any>): Promise<Record<string, any> | null> {\n const methods = await ensureMethodCache();\n await acquireBusy();\n try {\n const info = methods.get(method);\n if (!info) {\n throw new Error(`Unknown method: '${method}'`);\n }\n\n const r = await ensureReader();\n\n // Apply defaults\n const fullParams = { ...(info.defaults ?? {}), ...(params ?? {}) };\n\n // Send request\n const body = buildRequestIpc(info.paramsSchema, fullParams, method, { protocolVersion: serverProtocolVersion });\n writeFn(body);\n\n // Read response\n const response = await r.readStream();\n if (!response) {\n throw new Error(\"EOF reading response\");\n }\n\n // Process batches: dispatch logs, resolve external pointers, find result\n let resultBatch: RecordBatch | null = null;\n for (let batch of response.batches as any[]) {\n if (batch.numRows === 0) {\n if (isExternalLocationBatch(batch)) {\n batch = await resolveExternalLocation(batch, externalConfig);\n } else {\n dispatchLogOrError(batch, onLog);\n continue;\n }\n }\n resultBatch = batch;\n }\n\n if (!resultBatch) {\n return null;\n }\n\n const rows = extractBatchRows(resultBatch);\n if (rows.length === 0) return null;\n\n if (info.resultSchema.fields.length === 0) return null;\n\n return rows[0];\n } finally {\n releaseBusy();\n }\n },\n\n async stream(method: string, params?: Record<string, any>): Promise<StreamSession> {\n const methods = await ensureMethodCache();\n await acquireBusy();\n\n try {\n const info = methods.get(method);\n if (!info) {\n throw new Error(`Unknown method: '${method}'`);\n }\n\n const r = await ensureReader();\n\n // Apply defaults\n const fullParams = { ...(info.defaults ?? {}), ...(params ?? {}) };\n\n // Send init request (params as a complete IPC stream)\n const body = buildRequestIpc(info.paramsSchema, fullParams, method, { protocolVersion: serverProtocolVersion });\n writeFn(body);\n\n // Read header if method has headerSchema\n let header: Record<string, any> | null = null;\n if (info.headerSchema) {\n const headerStream = await r.readStream();\n if (headerStream) {\n for (const batch of headerStream.batches as any[]) {\n if (batch.numRows === 0) {\n dispatchLogOrError(batch, onLog);\n continue;\n }\n const rows = extractBatchRows(batch);\n if (rows.length > 0) {\n header = rows[0];\n }\n }\n }\n }\n\n const outputSchema = info.outputSchema ?? info.resultSchema;\n\n // Don't release busy here — PipeStreamSession owns the lock\n // and will release it when done\n return new PipeStreamSession({\n reader: r,\n writeFn,\n onLog,\n header,\n outputSchema,\n releaseBusy,\n setDrainPromise,\n externalConfig,\n });\n } catch (e) {\n // Init error (e.g., server raised exception during init).\n // Send empty input stream so server's drain unblocks, then\n // drain the server's output stream if needed.\n try {\n const r = await ensureReader();\n const emptySchema = new Schema([]);\n const ipc = serializeIpcStream(emptySchema, []);\n writeFn(ipc);\n // Drain server's output stream (error response + EOS)\n const outStream = await r.readStream();\n // outStream may be null or contain remaining batches — just consume\n void outStream;\n } catch {\n // Suppress errors during cleanup\n }\n releaseBusy();\n throw e;\n }\n },\n\n async describe(): Promise<ServiceDescription> {\n const methods = await ensureMethodCache();\n return {\n protocolName,\n protocolVersion: serverProtocolVersion,\n methods: [...methods.values()],\n };\n },\n\n close(): void {\n if (closed) return;\n closed = true;\n writable.end();\n },\n };\n}\n\n// ---------------------------------------------------------------------------\n// subprocessConnect — spawn a process and wrap with pipeConnect\n// ---------------------------------------------------------------------------\n\n/**\n * Spawn a server process (via `Bun.spawn`) and connect to it over its\n * stdin/stdout using {@link pipeConnect}. The returned client's\n * {@link RpcClient.close} also kills the subprocess.\n */\nexport function subprocessConnect(cmd: string[], options?: SubprocessConnectOptions): RpcClient {\n const proc = Bun.spawn(cmd, {\n stdin: \"pipe\",\n stdout: \"pipe\",\n stderr: options?.stderr ?? \"ignore\",\n cwd: options?.cwd,\n env: options?.env ? { ...process.env, ...options.env } : undefined,\n });\n\n const stdout = proc.stdout as ReadableStream<Uint8Array>;\n\n const writable: PipeWritable = {\n write(data: Uint8Array) {\n (proc.stdin as any).write(data);\n },\n flush() {\n (proc.stdin as any).flush();\n },\n end() {\n (proc.stdin as any).end();\n },\n };\n\n const client = pipeConnect(stdout, writable, {\n onLog: options?.onLog,\n externalLocation: options?.externalLocation,\n });\n\n // Wrap close to also kill the subprocess\n const originalClose = client.close;\n client.close = () => {\n originalClose.call(client);\n try {\n proc.kill();\n } catch {\n // Process may have already exited\n }\n };\n\n return client;\n}\n",
|
|
25
26
|
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { AuthContext } from \"../auth.js\";\n\n/** Async function that authenticates an incoming HTTP request. */\nexport type AuthenticateFn = (request: Request) => AuthContext | Promise<AuthContext>;\n\n/** RFC 9728 OAuth Protected Resource Metadata. */\nexport interface OAuthResourceMetadata {\n /** The protected resource's canonical URL. Doubles as the base for the\n * `/_oauth/callback` redirect URI. */\n resource: string;\n /** Authorization-server issuer URLs. The PKCE flow uses\n * `authorizationServers[0]` for OIDC discovery. */\n authorizationServers: string[];\n /** Scopes the resource advertises. When non-empty these become the PKCE\n * authorization request's space-joined `scope`, taking precedence over\n * {@link HttpHandlerOptions.oauthPkceScope}. */\n scopesSupported?: string[];\n /** Advertised bearer methods (e.g. `[\"header\"]`). */\n bearerMethodsSupported?: string[];\n /** JWS algorithms the resource accepts. */\n resourceSigningAlgValuesSupported?: string[];\n /** Human-readable resource name. */\n resourceName?: string;\n /** Documentation URL for the resource. */\n resourceDocumentation?: string;\n /** Policy URL for the resource. */\n resourcePolicyUri?: string;\n /** Terms-of-service URL for the resource. */\n resourceTosUri?: string;\n /** OAuth client_id that clients should use with the authorization server. */\n clientId?: string;\n /** OAuth client_secret that clients should use with the authorization server. */\n clientSecret?: string;\n /** OAuth client_id for device code flow. */\n deviceCodeClientId?: string;\n /** OAuth client_secret for device code flow. */\n deviceCodeClientSecret?: string;\n /** When true, clients should use the OIDC id_token as the Bearer token instead of access_token. */\n useIdTokenAsBearer?: boolean;\n}\n\n/** Convert OAuthResourceMetadata to RFC 9728 snake_case JSON object. */\nexport function oauthResourceMetadataToJson(metadata: OAuthResourceMetadata): Record<string, any> {\n const json: Record<string, any> = {\n resource: metadata.resource,\n authorization_servers: metadata.authorizationServers,\n };\n if (metadata.scopesSupported) json.scopes_supported = metadata.scopesSupported;\n if (metadata.bearerMethodsSupported) json.bearer_methods_supported = metadata.bearerMethodsSupported;\n if (metadata.resourceSigningAlgValuesSupported)\n json.resource_signing_alg_values_supported = metadata.resourceSigningAlgValuesSupported;\n if (metadata.resourceName) json.resource_name = metadata.resourceName;\n if (metadata.resourceDocumentation) json.resource_documentation = metadata.resourceDocumentation;\n if (metadata.resourcePolicyUri) json.resource_policy_uri = metadata.resourcePolicyUri;\n if (metadata.resourceTosUri) json.resource_tos_uri = metadata.resourceTosUri;\n if (metadata.clientId) {\n if (!/^[A-Za-z0-9\\-._~]+$/.test(metadata.clientId)) {\n throw new Error(`Invalid client_id: must contain only URL-safe characters [A-Za-z0-9\\\\-._~]`);\n }\n json.client_id = metadata.clientId;\n }\n if (metadata.clientSecret) {\n if (!/^[A-Za-z0-9\\-._~]+$/.test(metadata.clientSecret)) {\n throw new Error(`Invalid client_secret: must contain only URL-safe characters [A-Za-z0-9\\\\-._~]`);\n }\n json.client_secret = metadata.clientSecret;\n }\n if (metadata.deviceCodeClientId) {\n if (!/^[A-Za-z0-9\\-._~]+$/.test(metadata.deviceCodeClientId)) {\n throw new Error(`Invalid device_code_client_id: must contain only URL-safe characters [A-Za-z0-9\\\\-._~]`);\n }\n json.device_code_client_id = metadata.deviceCodeClientId;\n }\n if (metadata.deviceCodeClientSecret) {\n if (!/^[A-Za-z0-9\\-._~]+$/.test(metadata.deviceCodeClientSecret)) {\n throw new Error(`Invalid device_code_client_secret: must contain only URL-safe characters [A-Za-z0-9\\\\-._~]`);\n }\n json.device_code_client_secret = metadata.deviceCodeClientSecret;\n }\n if (metadata.useIdTokenAsBearer) {\n json.use_id_token_as_bearer = true;\n }\n return json;\n}\n\n/** Compute the well-known path for OAuth Protected Resource Metadata. */\nexport function wellKnownPath(prefix: string): string {\n return `/.well-known/oauth-protected-resource${prefix}`;\n}\n\n/** Build a WWW-Authenticate header value with optional resource_metadata URL, client_id, client_secret, device_code_client_id, device_code_client_secret, and use_id_token_as_bearer. */\nexport function buildWwwAuthenticateHeader(\n metadataUrl?: string,\n clientId?: string,\n clientSecret?: string,\n useIdTokenAsBearer?: boolean,\n deviceCodeClientId?: string,\n deviceCodeClientSecret?: string,\n): string {\n let header = \"Bearer\";\n if (metadataUrl) {\n header += ` resource_metadata=\"${metadataUrl}\"`;\n }\n if (clientId) {\n header += `, client_id=\"${clientId}\"`;\n }\n if (clientSecret) {\n header += `, client_secret=\"${clientSecret}\"`;\n }\n if (deviceCodeClientId) {\n header += `, device_code_client_id=\"${deviceCodeClientId}\"`;\n }\n if (deviceCodeClientSecret) {\n header += `, device_code_client_secret=\"${deviceCodeClientSecret}\"`;\n }\n if (useIdTokenAsBearer) {\n header += `, use_id_token_as_bearer=\"true\"`;\n }\n return header;\n}\n",
|
|
26
27
|
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\n// Web Crypto helpers — universal across Node 18+, Bun, Cloudflare workerd,\n// Deno, and modern browsers. Used in place of node:crypto (`createHmac`,\n// `createHash`, `randomBytes`, `timingSafeEqual`) so the wire-protocol code\n// bundles cleanly for workerd without requiring `nodejs_compat`.\n//\n// All HMAC/digest operations are async because `crypto.subtle` is async-only.\n// Callers that previously had sync signatures should await the result.\n\n/** Cryptographically-strong random bytes. */\nexport function randomBytes(length: number): Uint8Array {\n const buf = new Uint8Array(length);\n crypto.getRandomValues(buf);\n return buf;\n}\n\n/**\n * Constant-time byte-array comparison. Returns false fast on length mismatch\n * (the length itself is not a secret), and otherwise XOR-accumulates without\n * an early return so the comparison takes the same wall time regardless of\n * which byte differs.\n */\nexport function constantTimeEqual(a: Uint8Array, b: Uint8Array): boolean {\n if (a.length !== b.length) return false;\n let diff = 0;\n for (let i = 0; i < a.length; i++) diff |= a[i] ^ b[i];\n return diff === 0;\n}\n\n/**\n * Cache imported `CryptoKey` per (raw key bytes, usage) so that repeated\n * sign/verify calls don't re-import. The key bytes are fingerprinted with a\n * stable string (base64 of the raw bytes); the WeakRef-friendly Map keeps the\n * cache bounded by typical key turnover (one or two signing keys per process).\n */\nconst _hmacKeyCache = new Map<string, Promise<CryptoKey>>();\n\nfunction _hmacKeyCacheKey(rawKey: Uint8Array, usage: \"sign\" | \"verify\"): string {\n // Cheap stable fingerprint — collisions only matter for the cache hit/miss,\n // not security. Use a string concat of byte values; for typical 32-byte\n // signing keys this is ~70 chars.\n let s = usage + \":\";\n for (let i = 0; i < rawKey.length; i++) s += rawKey[i].toString(16);\n return s;\n}\n\nasync function _importHmacKey(rawKey: Uint8Array, usage: \"sign\" | \"verify\"): Promise<CryptoKey> {\n const cacheKey = _hmacKeyCacheKey(rawKey, usage);\n let promise = _hmacKeyCache.get(cacheKey);\n if (!promise) {\n promise = crypto.subtle.importKey(\n \"raw\",\n // Copy into a fresh ArrayBuffer — importKey requires an ArrayBuffer or\n // ArrayBufferView; passing a SharedArrayBuffer view (or one whose\n // underlying buffer outlives this caller) can be rejected on some\n // runtimes. The copy is cheap (≤32 bytes typical).\n rawKey.slice().buffer as ArrayBuffer,\n { name: \"HMAC\", hash: \"SHA-256\" },\n false,\n [usage],\n );\n _hmacKeyCache.set(cacheKey, promise);\n }\n return promise;\n}\n\n/** HMAC-SHA256 over `data` with `key`. Returns a 32-byte tag. */\nexport async function hmacSha256(key: Uint8Array, data: Uint8Array): Promise<Uint8Array> {\n const cryptoKey = await _importHmacKey(key, \"sign\");\n const sig = await crypto.subtle.sign(\"HMAC\", cryptoKey, data as BufferSource);\n return new Uint8Array(sig);\n}\n\n/**\n * Verify an HMAC-SHA256 tag in constant time. Equivalent to\n * `constantTimeEqual(await hmacSha256(key, data), tag)`, but routes through\n * `crypto.subtle.verify` which is also constant-time on conforming runtimes.\n */\nexport async function hmacSha256Verify(key: Uint8Array, data: Uint8Array, tag: Uint8Array): Promise<boolean> {\n const cryptoKey = await _importHmacKey(key, \"verify\");\n return crypto.subtle.verify(\"HMAC\", cryptoKey, tag as BufferSource, data as BufferSource);\n}\n\n/** SHA-256 of `data` as raw bytes. */\nexport async function sha256(data: Uint8Array): Promise<Uint8Array> {\n const digest = await crypto.subtle.digest(\"SHA-256\", data as BufferSource);\n return new Uint8Array(digest);\n}\n\n/** SHA-256 of `data` as lower-case hex. */\nexport async function sha256Hex(data: Uint8Array): Promise<string> {\n const bytes = await sha256(data);\n let s = \"\";\n for (let i = 0; i < bytes.length; i++) s += bytes[i].toString(16).padStart(2, \"0\");\n return s;\n}\n",
|
|
27
28
|
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { AuthContext } from \"../auth.js\";\nimport { constantTimeEqual } from \"../util/web-crypto.js\";\nimport type { AuthenticateFn } from \"./auth.js\";\n\n/** Receives the raw bearer token string, returns an AuthContext on success. Must throw on failure. */\nexport type BearerValidateFn = (token: string) => AuthContext | Promise<AuthContext>;\n\n/**\n * Create a bearer-token authenticate callback.\n *\n * Extracts the `Authorization: Bearer <token>` header and delegates\n * validation to the user-supplied `validate` callback.\n */\nexport function bearerAuthenticate(options: { validate: BearerValidateFn }): AuthenticateFn {\n const { validate } = options;\n\n return async function authenticate(request: Request): Promise<AuthContext> {\n const authHeader = request.headers.get(\"Authorization\") ?? \"\";\n if (!authHeader.startsWith(\"Bearer \")) {\n throw new Error(\"Missing or invalid Authorization header\");\n }\n const token = authHeader.slice(7);\n return validate(token);\n };\n}\n\n/** Constant-time string comparison to prevent timing attacks on token lookup. */\nfunction safeEqual(a: string, b: string): boolean {\n const enc = new TextEncoder();\n return constantTimeEqual(enc.encode(a), enc.encode(b));\n}\n\n/**\n * Create a bearer-token authenticate callback from a static token map.\n *\n * Convenience wrapper around `bearerAuthenticate` that looks up the\n * token in a pre-built mapping using constant-time comparison.\n */\nexport function bearerAuthenticateStatic(options: {\n tokens: ReadonlyMap<string, AuthContext> | Record<string, AuthContext>;\n}): AuthenticateFn {\n const entries: [string, AuthContext][] =\n options.tokens instanceof Map ? [...options.tokens.entries()] : Object.entries(options.tokens);\n\n function validate(token: string): AuthContext {\n for (const [key, ctx] of entries) {\n if (safeEqual(token, key)) return ctx;\n }\n throw new Error(\"Unknown bearer token\");\n }\n\n return bearerAuthenticate({ validate });\n}\n\n/**\n * Check whether an error represents a credential rejection (should be\n * caught by the chain) vs a bug or authorization failure (should propagate).\n *\n * Mirrors Python's semantics where only `ValueError` is caught:\n * - Plain `Error` (constructor === Error) without `PermissionError` name → credential rejection\n * - `TypeError`, `RangeError`, etc. (Error subclasses) → bug, propagate\n * - `PermissionError` name → authorization failure, propagate\n * - Non-Error throws → propagate\n */\nfunction isCredentialError(err: unknown): err is Error {\n return err instanceof Error && err.constructor === Error && err.name !== \"PermissionError\";\n}\n\n/**\n * Chain multiple authenticate callbacks, trying each in order.\n *\n * Each authenticator is called in sequence. Plain `Error` (credential\n * rejection) causes the next authenticator to be tried. Error subclasses\n * (`TypeError`, `RangeError`, etc.), `PermissionError`-named errors, and\n * non-Error throws propagate immediately.\n *\n * @throws Error if no authenticators are provided.\n */\nexport function chainAuthenticate(...authenticators: AuthenticateFn[]): AuthenticateFn {\n if (authenticators.length === 0) {\n throw new Error(\"chainAuthenticate requires at least one authenticator\");\n }\n\n return async function authenticate(request: Request): Promise<AuthContext> {\n let lastError: Error | null = null;\n for (const authFn of authenticators) {\n try {\n return await authFn(request);\n } catch (err) {\n if (isCredentialError(err)) {\n lastError = err;\n continue;\n }\n throw err;\n }\n }\n const error = new Error(\"No authenticator accepted the request\");\n if (lastError) error.cause = lastError;\n throw error;\n };\n}\n",
|
|
28
29
|
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\nimport { serializeSchema as facadeSerializeSchema, type VgiSchema } from \"../arrow/index.js\";\n\n/**\n * Serialize a Schema to the Arrow IPC Schema message format.\n * This produces bytes compatible with Python's `pa.ipc.read_schema()`.\n * Equivalent to writing an empty-batch IPC stream — schema message + EOS marker.\n */\nexport function serializeSchema(schema: VgiSchema): Uint8Array {\n return facadeSerializeSchema(schema);\n}\n",
|
|
29
30
|
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n batchFromColumns,\n binary,\n bool,\n field,\n schema as makeSchema,\n utf8,\n type VgiBatch,\n withBatchMetadata,\n} from \"../arrow/index.js\";\nimport {\n DESCRIBE_VERSION,\n DESCRIBE_VERSION_KEY,\n PROTOCOL_HASH_KEY,\n PROTOCOL_NAME_KEY,\n PROTOCOL_VERSION_KEY,\n REQUEST_VERSION,\n REQUEST_VERSION_KEY,\n SERVER_ID_KEY,\n} from \"../constants.js\";\nimport type { MethodDefinition } from \"../types.js\";\nimport { serializeSchema } from \"../util/schema.js\";\nimport { sha256Hex } from \"../util/web-crypto.js\";\n\n/**\n * Slim DESCRIBE_VERSION 4 schema. Python-flavoured fields (doc,\n * param_types_json, param_defaults_json, param_docs_json) are not on the\n * wire — Arrow IPC schema bytes are the authoritative type information;\n * everything else is source-level metadata that callers should consult the\n * Protocol class for.\n */\nexport const DESCRIBE_SCHEMA = makeSchema([\n field(\"name\", utf8(), false),\n field(\"method_type\", utf8(), false),\n field(\"has_return\", bool(), false),\n field(\"params_schema_ipc\", binary(), false),\n field(\"result_schema_ipc\", binary(), false),\n field(\"has_header\", bool(), false),\n field(\"header_schema_ipc\", binary(), true),\n field(\"is_exchange\", bool(), true),\n]);\n\n/**\n * Compute the SHA-256 hex digest of the canonical describe payload. Mirrors\n * Python's vgi_rpc.introspect.compute_protocol_hash byte-for-byte, so two\n * implementations of the same Protocol that produce identical Arrow IPC\n * schema bytes for params/result/header will hash to the same value.\n */\nasync function computeProtocolHash(\n protocolName: string,\n rows: ReadonlyArray<{\n name: string;\n methodType: string;\n hasReturn: boolean;\n hasHeader: boolean;\n isExchange: boolean | null;\n paramsIpc: Uint8Array;\n resultIpc: Uint8Array;\n headerIpc: Uint8Array | null;\n }>,\n): Promise<string> {\n // Web Crypto's `subtle.digest` takes a single buffer, so we accumulate the\n // canonical byte stream into a single Uint8Array and hash once. The byte\n // sequence below must remain byte-for-byte identical to the Python\n // implementation in vgi_rpc.introspect.compute_protocol_hash.\n const enc = new TextEncoder();\n const parts: Uint8Array[] = [];\n const push = (v: string | Uint8Array) => parts.push(typeof v === \"string\" ? enc.encode(v) : v);\n\n push(\"vgi_rpc.describe.v\");\n push(DESCRIBE_VERSION);\n push(\"|\");\n push(REQUEST_VERSION);\n push(\"|\");\n push(protocolName);\n push(\"|\");\n for (const r of rows) {\n push(Uint8Array.of(0x1f));\n push(r.name);\n push(Uint8Array.of(0x1e));\n push(r.methodType);\n push(Uint8Array.of(0x1e));\n push(r.hasReturn ? \"1\" : \"0\");\n push(Uint8Array.of(0x1e));\n push(r.hasHeader ? \"1\" : \"0\");\n push(Uint8Array.of(0x1e));\n push(r.isExchange === null ? \"-\" : r.isExchange ? \"1\" : \"0\");\n push(Uint8Array.of(0x1e));\n push(r.paramsIpc);\n push(Uint8Array.of(0x1e));\n push(r.resultIpc);\n push(Uint8Array.of(0x1e));\n if (r.headerIpc) push(r.headerIpc);\n }\n\n let total = 0;\n for (const p of parts) total += p.length;\n const buf = new Uint8Array(total);\n let off = 0;\n for (const p of parts) {\n buf.set(p, off);\n off += p.length;\n }\n return sha256Hex(buf);\n}\n\n/**\n * Build the __describe__ response batch and metadata.\n */\nexport async function buildDescribeBatch(\n protocolName: string,\n methods: Map<string, MethodDefinition>,\n serverId: string,\n protocolVersion?: string,\n): Promise<{ batch: VgiBatch; metadata: Map<string, string> }> {\n // Sort methods by name for consistent ordering\n const sortedEntries = [...methods.entries()].sort(([a], [b]) => a.localeCompare(b));\n\n const names: (string | null)[] = [];\n const methodTypes: (string | null)[] = [];\n const hasReturns: boolean[] = [];\n const paramsSchemas: (Uint8Array | null)[] = [];\n const resultSchemas: (Uint8Array | null)[] = [];\n const hasHeaders: boolean[] = [];\n const headerSchemas: (Uint8Array | null)[] = [];\n const isExchanges: (boolean | null)[] = [];\n\n const hashRows: Array<{\n name: string;\n methodType: string;\n hasReturn: boolean;\n hasHeader: boolean;\n isExchange: boolean | null;\n paramsIpc: Uint8Array;\n resultIpc: Uint8Array;\n headerIpc: Uint8Array | null;\n }> = [];\n\n for (const [name, method] of sortedEntries) {\n names.push(name);\n methodTypes.push(method.type);\n\n const hasReturn = method.type === \"unary\" && method.resultSchema.fields.length > 0;\n hasReturns.push(hasReturn);\n\n const paramsIpc = serializeSchema(method.paramsSchema);\n const resultIpc = serializeSchema(method.resultSchema);\n paramsSchemas.push(paramsIpc);\n resultSchemas.push(resultIpc);\n\n const hasHeader = !!method.headerSchema;\n hasHeaders.push(hasHeader);\n const headerIpc = method.headerSchema ? serializeSchema(method.headerSchema) : null;\n headerSchemas.push(headerIpc);\n\n // v4 slim schema: `is_exchange` is vestigial and always null — producer\n // vs exchange is already derivable from `method_type` + the presence of an\n // input/params schema. The cross-language describe spec asserts null for\n // every stream method (and the Python reference emits null for all), so we\n // never populate it. See vgi-rpc conformance describe_stream_properties.\n const isExchange: boolean | null = null;\n isExchanges.push(isExchange);\n\n hashRows.push({\n name,\n methodType: method.type,\n hasReturn,\n hasHeader,\n isExchange,\n paramsIpc,\n resultIpc,\n headerIpc,\n });\n }\n\n const baseBatch = batchFromColumns(DESCRIBE_SCHEMA, {\n name: names,\n method_type: methodTypes,\n has_return: hasReturns,\n params_schema_ipc: paramsSchemas,\n result_schema_ipc: resultSchemas,\n has_header: hasHeaders,\n header_schema_ipc: headerSchemas,\n is_exchange: isExchanges,\n });\n\n const protocolHash = await computeProtocolHash(protocolName, hashRows);\n\n const metadata = new Map<string, string>();\n metadata.set(PROTOCOL_NAME_KEY, protocolName);\n metadata.set(REQUEST_VERSION_KEY, REQUEST_VERSION);\n metadata.set(DESCRIBE_VERSION_KEY, DESCRIBE_VERSION);\n metadata.set(PROTOCOL_HASH_KEY, protocolHash);\n metadata.set(SERVER_ID_KEY, serverId);\n if (protocolVersion) {\n metadata.set(PROTOCOL_VERSION_KEY, protocolVersion);\n }\n\n const batch = withBatchMetadata(baseBatch, metadata);\n return { batch, metadata };\n}\n",
|
|
30
|
-
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\nimport { batchFromColumns, isBatch, type VgiBatch, type VgiSchema } from \"./arrow/index.js\";\nimport { AuthContext } from \"./auth.js\";\nimport { buildLogBatch, coerceInt64 } from \"./wire/response.js\";\n\n/**\n * Whether an RPC method is request/response or streaming. Mirrors Python's\n * `MethodType` and is carried in the `__describe__` payload.\n */\nexport enum MethodType {\n /** Single request batch in, single result batch out. */\n UNARY = \"unary\",\n /** Streamed batches — either a producer or an exchange stream. */\n STREAM = \"stream\",\n}\n\n/**\n * Coarse identifier of the transport binding a {@link VgiRpcServer} or\n * HTTP handler. Workers (RPC implementations) read this via\n * {@link CallContext.kind} or the {@link ServeStartHook} lifecycle hook\n * to tailor startup behaviour (skip HTTP-only caching, enable\n * transport-specific metrics, etc.).\n *\n * Values are wire/log-friendly strings to match Python's `TransportKind`\n * StrEnum byte-for-byte across language boundaries.\n *\n * - `PIPE` — Stdio worker (the standalone {@link VgiRpcServer} loop).\n * - `HTTP` — Fetch-style HTTP handler (`createHttpHandler`).\n * - `UNIX` — AF_UNIX socket handler (the launcher path).\n */\nexport enum TransportKind {\n /** Stdio worker — the standalone {@link VgiRpcServer} loop. */\n PIPE = \"pipe\",\n /** Fetch-style HTTP handler (`createHttpHandler`). */\n HTTP = \"http\",\n /** AF_UNIX socket handler (the launcher path). */\n UNIX = \"unix\",\n}\n\n/**\n * Optional lifecycle hook fired once per process before the first\n * dispatched request.\n *\n * For the stdio server, fires inside `VgiRpcServer.run()` before the\n * first read. For HTTP, fires lazily on the first request handled\n * (fork-safe for pre-fork servers).\n *\n * If the hook raises, the server logs the exception and propagates it,\n * leaving the bind state unset so the next attempt re-fires the hook\n * rather than silently skipping it.\n */\nexport type ServeStartHook = (kind: TransportKind) => void | Promise<void>;\n\n/** Logging interface available to handlers. */\nexport interface LogContext {\n /** Emit a client-directed log message (sent as a zero-row log batch on the\n * wire). `level` is a severity label such as `\"info\"`, `\"warning\"`, or\n * `\"error\"`; `extra` carries optional structured string key/value pairs. */\n clientLog(level: string, message: string, extra?: Record<string, string>): void;\n}\n\n/**\n * Attributes for a Set-Cookie directive queued via {@link CallContext.setCookie}.\n * All fields are optional; omitted attributes are not serialized onto the header.\n */\nexport interface CookieAttrs {\n expires?: Date;\n maxAge?: number;\n domain?: string;\n path?: string;\n secure?: boolean;\n httpOnly?: boolean;\n sameSite?: \"Strict\" | \"Lax\" | \"None\";\n partitioned?: boolean;\n}\n\n/**\n * A queued cookie mutation for the HTTP response. Internal — callers\n * interact through {@link CallContext.setCookie} / {@link CallContext.deleteCookie}.\n */\nexport interface CookieSpec extends CookieAttrs {\n name: string;\n value: string;\n delete: boolean;\n}\n\n/** Per-request sticky-session sink. Internal — populated by the HTTP handler\n * when sticky sessions are enabled, read/mutated by {@link CallContext}'s\n * `openSession` / `closeSession` / `session` getters. */\nexport interface StickyContext {\n readonly acceptOpens: boolean;\n state: unknown | null;\n sessionId: string | null;\n mintToken: string | null;\n closed: boolean;\n action: \"none\" | \"resume\" | \"open\" | \"close\";\n _open(state: unknown, ttl: number | undefined): void;\n _close(): void;\n}\n\n/** Extended context with authentication info, available to handlers. */\nexport interface CallContext extends LogContext {\n /** Authenticated principal for this call; {@link AuthContext.anonymous} when\n * the request was not authenticated. */\n readonly auth: AuthContext;\n /** Coarse identifier of the bound transport, or `undefined` until the\n * server begins serving (the value is committed by the lifecycle hook\n * on the very first request). */\n readonly kind?: TransportKind;\n /**\n * Wire body bytes the framework will accept this iteration before\n * triggering a continuation token (producer streams) or strict-fail\n * with an EXCEPTION batch (unary / stream-exchange). Snapshot at\n * collector construction; not live. `undefined` when no cap is\n * configured or the transport doesn't expose one (stdio).\n */\n readonly remainingResponseBytes?: number;\n /**\n * External-channel bytes left this iteration. Always a hard cap —\n * externalised uploads have no escape valve like producer\n * continuation tokens. Undefined when no cap is configured or\n * externalisation is disabled.\n */\n readonly remainingExternalizedResponseBytes?: number;\n /** True iff the server has an externalisation backend wired up. */\n readonly externalizationEnabled?: boolean;\n /**\n * Incoming request cookies. Empty for non-HTTP transports.\n */\n readonly cookies: ReadonlyMap<string, string>;\n /**\n * Queue a Set-Cookie header on the HTTP response. Only valid inside a\n * unary RPC method served over HTTP; throws otherwise.\n */\n setCookie(name: string, value: string, attrs?: CookieAttrs): void;\n /**\n * Queue an unset-cookie directive on the HTTP response. Only valid\n * inside a unary RPC method served over HTTP; throws otherwise.\n */\n deleteCookie(name: string, opts?: { path?: string; domain?: string }): void;\n\n /**\n * Live sticky-session state object, or `null` when no session is bound to\n * this request. HTTP-only — other transports always return `null`.\n */\n readonly session: unknown | null;\n\n /**\n * Opaque 24-char-hex session ID, or `null` when no session is bound.\n * Survives {@link closeSession} so post-close access-log records still\n * carry the id.\n */\n readonly sessionId: string | null;\n\n /**\n * Register a sticky session holding *state* for subsequent requests on\n * this transport. HTTP-only — throws on other transports, on calls\n * without the `VGI-Session-Accept: true` opt-in header, or when a\n * session is already bound to this request.\n */\n openSession(state: unknown, ttl?: number): void;\n\n /** Invalidate the sticky session bound to this request. Idempotent. */\n closeSession(): void;\n}\n\nconst EMPTY_COOKIES: ReadonlyMap<string, string> = new Map();\n\nfunction cookieNotUnaryHttpError(): Error {\n return new Error(\"setCookie/deleteCookie is only supported inside unary RPC methods served over HTTP\");\n}\n\n/** Surface as `exception_type: \"RuntimeError\"` on the EXCEPTION batch — the\n * wire serializer reads `error.constructor.name`, so we need a real subclass\n * rather than just `err.name = \"RuntimeError\"`. Matches Python's pattern of\n * raising `RuntimeError` from the runtime API methods. */\nclass RuntimeError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"RuntimeError\";\n }\n}\n\nfunction runtimeError(message: string): Error {\n return new RuntimeError(message);\n}\n\n/** Handler for unary (request-response) RPC methods. */\nexport type UnaryHandler = (\n params: Record<string, any>,\n ctx: LogContext,\n) => Promise<Record<string, any>> | Record<string, any>;\n\n/** Initialization function for producer streams. Returns the initial state object. */\nexport type ProducerInit<S = any> = (params: Record<string, any>) => Promise<S> | S;\n/** Called repeatedly to produce output batches. Call `out.finish()` to end the stream. */\nexport type ProducerFn<S = any> = (state: S, out: OutputCollector) => Promise<void> | void;\n\n/** Initialization function for exchange streams. Returns the initial state object. */\nexport type ExchangeInit<S = any> = (params: Record<string, any>) => Promise<S> | S;\n/** Called once per input batch. Must emit exactly one output batch per call. */\nexport type ExchangeFn<S = any> = (state: S, input: VgiBatch, out: OutputCollector) => Promise<void> | void;\n\n/** Produces a header batch sent before the first output batch in a stream. */\nexport type HeaderInit = (params: Record<string, any>, state: any, ctx: LogContext) => Record<string, any>;\n\n/**\n * Optional handler invoked when the client signals cancellation by writing an\n * input batch carrying the ``vgi_rpc.cancel`` metadata key. The server runs\n * this hook once, before breaking out of the streaming loop, giving state\n * objects a chance to release resources. Errors are logged and swallowed.\n */\nexport type OnCancelFn<S = any> = (state: S) => Promise<void> | void;\n\n/**\n * In-memory definition of one registered RPC method, produced by the\n * {@link Protocol} builder and consumed by the dispatch layer. Which optional\n * fields are populated depends on the method {@link type}: `handler` for unary\n * methods, `producerInit`/`producerFn` for producer streams, and\n * `exchangeInit`/`exchangeFn` for exchange streams.\n */\nexport interface MethodDefinition {\n /** Method name as registered on the protocol. */\n name: string;\n /** Whether the method is unary or streaming. */\n type: MethodType;\n /** Schema of the request parameters batch. */\n paramsSchema: VgiSchema;\n /** Schema of the unary result batch (unused for streams). */\n resultSchema: VgiSchema;\n /** Schema of streamed output batches (producer and exchange streams). */\n outputSchema?: VgiSchema;\n /** Schema of streamed input batches (exchange streams only). */\n inputSchema?: VgiSchema;\n /** Implementation for unary methods. */\n handler?: UnaryHandler;\n /** Builds the initial state object for a producer stream. */\n producerInit?: ProducerInit;\n /** Produces output batches for a producer stream. */\n producerFn?: ProducerFn;\n /** Builds the initial state object for an exchange stream. */\n exchangeInit?: ExchangeInit;\n /** Handles each input batch of an exchange stream. */\n exchangeFn?: ExchangeFn;\n /** Schema of the optional per-stream header batch. */\n headerSchema?: VgiSchema;\n /** Builds the optional header batch emitted before the first output batch. */\n headerInit?: HeaderInit;\n /** Optional hook run when the client cancels a stream. */\n onCancel?: OnCancelFn;\n /** Human-readable method documentation, surfaced via introspection. */\n doc?: string;\n /** Default values applied to omitted request parameters. */\n defaults?: Record<string, any>;\n /** Human-readable parameter type names, surfaced via introspection. */\n paramTypes?: Record<string, string>;\n}\n\n/** Metadata passed to dispatch hooks before and after RPC method execution. */\nexport interface DispatchInfo {\n /** RPC method name. */\n method: string;\n /** \"unary\" or \"stream\". */\n methodType: string;\n /** Server identifier. */\n serverId: string;\n /** Client-supplied request identifier, or null. */\n requestId: string | null;\n /** Coarse transport identifier — `pipe` for stdio, `http` for fetch\n * handlers, `unix` for AF_UNIX. */\n kind?: TransportKind;\n /** Logical service / protocol name. */\n protocol?: string;\n /** SHA-256 hex of the canonical __describe__ payload (always required in access log). */\n protocolHash?: string;\n /** Operator-supplied protocol-contract version label (optional). */\n protocolVersion?: string;\n /** Authenticated principal, empty string when anonymous. */\n principal?: string;\n /** Authentication domain, empty string when anonymous. */\n authDomain?: string;\n /** True when the call was authenticated. */\n authenticated?: boolean;\n /** HTTP transport: remote IP:port. */\n remoteAddr?: string;\n /** Self-contained Arrow IPC stream of the request batch (unary + stream init only). */\n requestData?: Uint8Array;\n /** Stream lifecycle identifier (32-char lowercase hex); empty on unary. */\n streamId?: string;\n /** True when a stream was cancelled by the client. */\n cancelled?: boolean;\n /** Sticky session ID (24-char hex). Present only when the request was bound\n * to a sticky session or the method opened/closed one. */\n sessionId?: string;\n /** Sticky-session lifecycle action observed during dispatch — one of\n * `\"none\"` / `\"resume\"` / `\"open\"` / `\"close\"`. Omitted when sticky is\n * disabled or the request never touched the sticky middleware. */\n sessionAction?: \"none\" | \"resume\" | \"open\" | \"close\";\n}\n\n/** Per-call I/O counters, matching Python's CallStatistics. */\nexport interface CallStatistics {\n /** Number of input batches read from the client. */\n inputBatches: number;\n /** Number of output batches written to the client. */\n outputBatches: number;\n /** Total rows across all input batches. */\n inputRows: number;\n /** Total rows across all output batches. */\n outputRows: number;\n /** Total serialized bytes of all input batches. */\n inputBytes: number;\n /** Total serialized bytes of all output batches. */\n outputBytes: number;\n}\n\n/** Opaque token returned by onDispatchStart, passed back to onDispatchEnd. */\nexport type HookToken = unknown;\n\n/**\n * Observability hook called around RPC dispatch.\n * Implementations must be safe for concurrent use (HTTP transport is concurrent).\n */\nexport interface DispatchHook {\n /** Invoked before the method runs. The returned {@link HookToken} is opaque\n * to the framework and passed back to {@link onDispatchEnd}. */\n onDispatchStart(info: DispatchInfo): HookToken;\n /** Invoked after the method completes or throws. `stats` carries the per-call\n * I/O counters; `error` is set only when the dispatch failed. */\n onDispatchEnd(token: HookToken, info: DispatchInfo, stats: CallStatistics, error?: Error): void;\n}\n\nexport interface EmittedBatch {\n batch: VgiBatch;\n metadata?: Map<string, string>;\n}\n\n/**\n * Accumulates output batches during a produce/exchange call.\n * Enforces that exactly one data batch is emitted per call (plus any number of log batches).\n */\nexport class OutputCollector implements CallContext {\n private _batches: EmittedBatch[] = [];\n private _dataBatchIdx: number | null = null;\n private _finished = false;\n private _producerMode: boolean;\n private _outputSchema: VgiSchema;\n private _serverId: string;\n private _requestId: string | null;\n private _cookieSinkEnabled = false;\n private _responseCookies: CookieSpec[] = [];\n private _stickyContext: StickyContext | null = null;\n /** Authenticated principal for this call; {@link AuthContext.anonymous} when\n * the request was not authenticated. */\n readonly auth: AuthContext;\n readonly cookies: ReadonlyMap<string, string>;\n readonly kind?: TransportKind;\n readonly remainingResponseBytes?: number;\n readonly remainingExternalizedResponseBytes?: number;\n readonly externalizationEnabled?: boolean;\n\n constructor(\n outputSchema: VgiSchema,\n producerMode = true,\n serverId = \"\",\n requestId: string | null = null,\n authContext?: AuthContext,\n cookies?: ReadonlyMap<string, string>,\n kind?: TransportKind,\n /** Snapshot budget fields exposed to worker code via {@link CallContext}.\n * Optional — non-HTTP transports omit them and existing call sites\n * remain source-compatible. */\n budgets?: {\n remainingResponseBytes?: number;\n remainingExternalizedResponseBytes?: number;\n externalizationEnabled?: boolean;\n },\n ) {\n this._outputSchema = outputSchema;\n this._producerMode = producerMode;\n this._serverId = serverId;\n this._requestId = requestId;\n this.auth = authContext ?? AuthContext.anonymous();\n this.cookies = cookies ?? EMPTY_COOKIES;\n this.kind = kind;\n this.remainingResponseBytes = budgets?.remainingResponseBytes;\n this.remainingExternalizedResponseBytes = budgets?.remainingExternalizedResponseBytes;\n this.externalizationEnabled = budgets?.externalizationEnabled;\n }\n\n /**\n * Mark this collector as able to accept Set-Cookie directives. Called\n * by the unary HTTP dispatcher only; streaming and non-HTTP paths leave\n * the sink disabled so setCookie/deleteCookie throw.\n * @internal\n */\n enableCookieSink(): void {\n this._cookieSinkEnabled = true;\n }\n\n /**\n * Return and clear all queued cookie mutations.\n * @internal\n */\n drainResponseCookies(): CookieSpec[] {\n const cookies = this._responseCookies;\n this._responseCookies = [];\n return cookies;\n }\n\n setCookie(name: string, value: string, attrs?: CookieAttrs): void {\n if (!this._cookieSinkEnabled) throw cookieNotUnaryHttpError();\n this._responseCookies.push({\n name,\n value,\n delete: false,\n ...(attrs ?? {}),\n });\n }\n\n deleteCookie(name: string, opts?: { path?: string; domain?: string }): void {\n if (!this._cookieSinkEnabled) throw cookieNotUnaryHttpError();\n this._responseCookies.push({\n name,\n value: \"\",\n delete: true,\n path: opts?.path,\n domain: opts?.domain,\n });\n }\n\n /** Attach the sticky-session sink the HTTP handler built for this request.\n * @internal */\n attachStickyContext(ctx: StickyContext): void {\n this._stickyContext = ctx;\n }\n\n get session(): unknown | null {\n return this._stickyContext?.state ?? null;\n }\n\n get sessionId(): string | null {\n return this._stickyContext?.sessionId ?? null;\n }\n\n openSession(state: unknown, ttl?: number): void {\n const sink = this._stickyContext;\n if (!sink) {\n throw runtimeError(\"sticky sessions not available on this transport\");\n }\n if (!sink.acceptOpens) {\n throw runtimeError(\n \"client did not opt in to sticky sessions \" +\n \"(missing VGI-Session-Accept: true header — open the call inside \" +\n \"an HttpConnection.with_session_token() block)\",\n );\n }\n if (sink.state !== null) {\n throw runtimeError(\"a sticky session is already active for this request\");\n }\n sink._open(state, ttl);\n sink.action = \"open\";\n }\n\n closeSession(): void {\n const sink = this._stickyContext;\n if (!sink) {\n throw runtimeError(\"sticky sessions not available on this transport\");\n }\n sink._close();\n sink.action = \"close\";\n }\n\n /** Schema of the data batches this collector emits. */\n get outputSchema(): VgiSchema {\n return this._outputSchema;\n }\n\n /** True once {@link finish} has been called (producer streams only). */\n get finished(): boolean {\n return this._finished;\n }\n\n /** Batches emitted so far this call — the single data batch plus any log\n * batches, in emission order. Consumed by the dispatch layer. */\n get batches(): EmittedBatch[] {\n return this._batches;\n }\n\n /** Emit a pre-built batch as the data batch for this call. */\n emit(batch: VgiBatch, metadata?: Map<string, string>): void;\n /** Emit a data batch from column arrays keyed by field name. Int64 Number values are coerced to BigInt. */\n emit(columns: Record<string, any[]>): void;\n emit(batchOrColumns: VgiBatch | Record<string, any[]>, metadata?: Map<string, string>): void {\n let batch: VgiBatch;\n if (isBatch(batchOrColumns)) {\n batch = batchOrColumns;\n } else {\n const coerced = coerceInt64(this._outputSchema, batchOrColumns as Record<string, any[]>);\n // Build columns dict ensuring each field has an array (vectorFromArray-equivalent under the hood).\n const cols: Record<string, any[]> = {};\n for (const f of this._outputSchema.fields) {\n const v = coerced[f.name];\n cols[f.name] = Array.isArray(v) ? v : [v];\n }\n batch = batchFromColumns(this._outputSchema, cols);\n }\n if (this._dataBatchIdx !== null) {\n throw new Error(\"Only one data batch may be emitted per call\");\n }\n this._dataBatchIdx = this._batches.length;\n this._batches.push({ batch, metadata });\n }\n\n /** Single-row convenience. Wraps each value in `[value]` then calls `emit()`. */\n emitRow(values: Record<string, any>): void {\n const columns: Record<string, any[]> = {};\n for (const [key, value] of Object.entries(values)) {\n columns[key] = [value];\n }\n this.emit(columns);\n }\n\n /** Signal stream completion for producer streams. Throws if called on exchange streams. */\n finish(): void {\n if (!this._producerMode) {\n throw new Error(\n \"finish() is not allowed on exchange streams; \" + \"exchange streams must emit exactly one data batch per call\",\n );\n }\n this._finished = true;\n }\n\n /** Emit a zero-row client-directed log batch. */\n clientLog(level: string, message: string, extra?: Record<string, string>): void {\n const batch = buildLogBatch(this._outputSchema, level, message, extra, this._serverId, this._requestId);\n this._batches.push({ batch });\n }\n}\n",
|
|
31
|
+
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\nimport { batchFromColumns, isBatch, type VgiBatch, type VgiSchema } from \"./arrow/index.js\";\nimport { AuthContext } from \"./auth.js\";\nimport { buildLogBatch, coerceInt64 } from \"./wire/response.js\";\n\n/**\n * Whether an RPC method is request/response or streaming. Mirrors Python's\n * `MethodType` and is carried in the `__describe__` payload.\n */\nexport enum MethodType {\n /** Single request batch in, single result batch out. */\n UNARY = \"unary\",\n /** Streamed batches — either a producer or an exchange stream. */\n STREAM = \"stream\",\n}\n\n/**\n * Coarse identifier of the transport binding a {@link VgiRpcServer} or\n * HTTP handler. Workers (RPC implementations) read this via\n * {@link CallContext.kind} or the {@link ServeStartHook} lifecycle hook\n * to tailor startup behaviour (skip HTTP-only caching, enable\n * transport-specific metrics, etc.).\n *\n * Values are wire/log-friendly strings to match Python's `TransportKind`\n * StrEnum byte-for-byte across language boundaries.\n *\n * - `PIPE` — Stdio worker (the standalone {@link VgiRpcServer} loop).\n * - `HTTP` — Fetch-style HTTP handler (`createHttpHandler`).\n * - `UNIX` — AF_UNIX socket handler (the launcher path).\n * - `TCP` — AF_INET socket handler. Raw Arrow-IPC framing over a bare TCP\n * socket — no auth/TLS; use `HTTP` for untrusted networks.\n */\nexport enum TransportKind {\n /** Stdio worker — the standalone {@link VgiRpcServer} loop. */\n PIPE = \"pipe\",\n /** Fetch-style HTTP handler (`createHttpHandler`). */\n HTTP = \"http\",\n /** AF_UNIX socket handler (the launcher path). */\n UNIX = \"unix\",\n /** AF_INET (TCP) socket handler. Raw Arrow-IPC framing over a bare TCP\n * socket — no authentication or TLS; trusted networks only. */\n TCP = \"tcp\",\n}\n\n/**\n * Optional lifecycle hook fired once per process before the first\n * dispatched request.\n *\n * For the stdio server, fires inside `VgiRpcServer.run()` before the\n * first read. For HTTP, fires lazily on the first request handled\n * (fork-safe for pre-fork servers).\n *\n * If the hook raises, the server logs the exception and propagates it,\n * leaving the bind state unset so the next attempt re-fires the hook\n * rather than silently skipping it.\n */\nexport type ServeStartHook = (kind: TransportKind) => void | Promise<void>;\n\n/** Logging interface available to handlers. */\nexport interface LogContext {\n /** Emit a client-directed log message (sent as a zero-row log batch on the\n * wire). `level` is a severity label such as `\"info\"`, `\"warning\"`, or\n * `\"error\"`; `extra` carries optional structured string key/value pairs. */\n clientLog(level: string, message: string, extra?: Record<string, string>): void;\n}\n\n/**\n * Attributes for a Set-Cookie directive queued via {@link CallContext.setCookie}.\n * All fields are optional; omitted attributes are not serialized onto the header.\n */\nexport interface CookieAttrs {\n expires?: Date;\n maxAge?: number;\n domain?: string;\n path?: string;\n secure?: boolean;\n httpOnly?: boolean;\n sameSite?: \"Strict\" | \"Lax\" | \"None\";\n partitioned?: boolean;\n}\n\n/**\n * A queued cookie mutation for the HTTP response. Internal — callers\n * interact through {@link CallContext.setCookie} / {@link CallContext.deleteCookie}.\n */\nexport interface CookieSpec extends CookieAttrs {\n name: string;\n value: string;\n delete: boolean;\n}\n\n/** Per-request sticky-session sink. Internal — populated by the HTTP handler\n * when sticky sessions are enabled, read/mutated by {@link CallContext}'s\n * `openSession` / `closeSession` / `session` getters. */\nexport interface StickyContext {\n readonly acceptOpens: boolean;\n state: unknown | null;\n sessionId: string | null;\n mintToken: string | null;\n closed: boolean;\n action: \"none\" | \"resume\" | \"open\" | \"close\";\n _open(state: unknown, ttl: number | undefined): void;\n _close(): void;\n}\n\n/** Extended context with authentication info, available to handlers. */\nexport interface CallContext extends LogContext {\n /** Authenticated principal for this call; {@link AuthContext.anonymous} when\n * the request was not authenticated. */\n readonly auth: AuthContext;\n /** Coarse identifier of the bound transport, or `undefined` until the\n * server begins serving (the value is committed by the lifecycle hook\n * on the very first request). */\n readonly kind?: TransportKind;\n /**\n * Wire body bytes the framework will accept this iteration before\n * triggering a continuation token (producer streams) or strict-fail\n * with an EXCEPTION batch (unary / stream-exchange). Snapshot at\n * collector construction; not live. `undefined` when no cap is\n * configured or the transport doesn't expose one (stdio).\n */\n readonly remainingResponseBytes?: number;\n /**\n * External-channel bytes left this iteration. Always a hard cap —\n * externalised uploads have no escape valve like producer\n * continuation tokens. Undefined when no cap is configured or\n * externalisation is disabled.\n */\n readonly remainingExternalizedResponseBytes?: number;\n /** True iff the server has an externalisation backend wired up. */\n readonly externalizationEnabled?: boolean;\n /**\n * Incoming request cookies. Empty for non-HTTP transports.\n */\n readonly cookies: ReadonlyMap<string, string>;\n /**\n * Queue a Set-Cookie header on the HTTP response. Only valid inside a\n * unary RPC method served over HTTP; throws otherwise.\n */\n setCookie(name: string, value: string, attrs?: CookieAttrs): void;\n /**\n * Queue an unset-cookie directive on the HTTP response. Only valid\n * inside a unary RPC method served over HTTP; throws otherwise.\n */\n deleteCookie(name: string, opts?: { path?: string; domain?: string }): void;\n\n /**\n * Live sticky-session state object, or `null` when no session is bound to\n * this request. HTTP-only — other transports always return `null`.\n */\n readonly session: unknown | null;\n\n /**\n * Opaque 24-char-hex session ID, or `null` when no session is bound.\n * Survives {@link closeSession} so post-close access-log records still\n * carry the id.\n */\n readonly sessionId: string | null;\n\n /**\n * Register a sticky session holding *state* for subsequent requests on\n * this transport. HTTP-only — throws on other transports, on calls\n * without the `VGI-Session-Accept: true` opt-in header, or when a\n * session is already bound to this request.\n */\n openSession(state: unknown, ttl?: number): void;\n\n /** Invalidate the sticky session bound to this request. Idempotent. */\n closeSession(): void;\n}\n\nconst EMPTY_COOKIES: ReadonlyMap<string, string> = new Map();\n\nfunction cookieNotUnaryHttpError(): Error {\n return new Error(\"setCookie/deleteCookie is only supported inside unary RPC methods served over HTTP\");\n}\n\n/** Surface as `exception_type: \"RuntimeError\"` on the EXCEPTION batch — the\n * wire serializer reads `error.constructor.name`, so we need a real subclass\n * rather than just `err.name = \"RuntimeError\"`. Matches Python's pattern of\n * raising `RuntimeError` from the runtime API methods. */\nclass RuntimeError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"RuntimeError\";\n }\n}\n\nfunction runtimeError(message: string): Error {\n return new RuntimeError(message);\n}\n\n/** Handler for unary (request-response) RPC methods. */\nexport type UnaryHandler = (\n params: Record<string, any>,\n ctx: LogContext,\n) => Promise<Record<string, any>> | Record<string, any>;\n\n/** Initialization function for producer streams. Returns the initial state object. */\nexport type ProducerInit<S = any> = (params: Record<string, any>) => Promise<S> | S;\n/** Called repeatedly to produce output batches. Call `out.finish()` to end the stream. */\nexport type ProducerFn<S = any> = (state: S, out: OutputCollector) => Promise<void> | void;\n\n/** Initialization function for exchange streams. Returns the initial state object. */\nexport type ExchangeInit<S = any> = (params: Record<string, any>) => Promise<S> | S;\n/** Called once per input batch. Must emit exactly one output batch per call. */\nexport type ExchangeFn<S = any> = (state: S, input: VgiBatch, out: OutputCollector) => Promise<void> | void;\n\n/** Produces a header batch sent before the first output batch in a stream. */\nexport type HeaderInit = (params: Record<string, any>, state: any, ctx: LogContext) => Record<string, any>;\n\n/**\n * Optional handler invoked when the client signals cancellation by writing an\n * input batch carrying the ``vgi_rpc.cancel`` metadata key. The server runs\n * this hook once, before breaking out of the streaming loop, giving state\n * objects a chance to release resources. Errors are logged and swallowed.\n */\nexport type OnCancelFn<S = any> = (state: S) => Promise<void> | void;\n\n/**\n * In-memory definition of one registered RPC method, produced by the\n * {@link Protocol} builder and consumed by the dispatch layer. Which optional\n * fields are populated depends on the method {@link type}: `handler` for unary\n * methods, `producerInit`/`producerFn` for producer streams, and\n * `exchangeInit`/`exchangeFn` for exchange streams.\n */\nexport interface MethodDefinition {\n /** Method name as registered on the protocol. */\n name: string;\n /** Whether the method is unary or streaming. */\n type: MethodType;\n /** Schema of the request parameters batch. */\n paramsSchema: VgiSchema;\n /** Schema of the unary result batch (unused for streams). */\n resultSchema: VgiSchema;\n /** Schema of streamed output batches (producer and exchange streams). */\n outputSchema?: VgiSchema;\n /** Schema of streamed input batches (exchange streams only). */\n inputSchema?: VgiSchema;\n /** Implementation for unary methods. */\n handler?: UnaryHandler;\n /** Builds the initial state object for a producer stream. */\n producerInit?: ProducerInit;\n /** Produces output batches for a producer stream. */\n producerFn?: ProducerFn;\n /** Builds the initial state object for an exchange stream. */\n exchangeInit?: ExchangeInit;\n /** Handles each input batch of an exchange stream. */\n exchangeFn?: ExchangeFn;\n /** Schema of the optional per-stream header batch. */\n headerSchema?: VgiSchema;\n /** Builds the optional header batch emitted before the first output batch. */\n headerInit?: HeaderInit;\n /** Optional hook run when the client cancels a stream. */\n onCancel?: OnCancelFn;\n /** Human-readable method documentation, surfaced via introspection. */\n doc?: string;\n /** Default values applied to omitted request parameters. */\n defaults?: Record<string, any>;\n /** Human-readable parameter type names, surfaced via introspection. */\n paramTypes?: Record<string, string>;\n}\n\n/** Metadata passed to dispatch hooks before and after RPC method execution. */\nexport interface DispatchInfo {\n /** RPC method name. */\n method: string;\n /** \"unary\" or \"stream\". */\n methodType: string;\n /** Server identifier. */\n serverId: string;\n /** Client-supplied request identifier, or null. */\n requestId: string | null;\n /** Coarse transport identifier — `pipe` for stdio, `http` for fetch\n * handlers, `unix` for AF_UNIX. */\n kind?: TransportKind;\n /** Logical service / protocol name. */\n protocol?: string;\n /** SHA-256 hex of the canonical __describe__ payload (always required in access log). */\n protocolHash?: string;\n /** Operator-supplied protocol-contract version label (optional). */\n protocolVersion?: string;\n /** Authenticated principal, empty string when anonymous. */\n principal?: string;\n /** Authentication domain, empty string when anonymous. */\n authDomain?: string;\n /** True when the call was authenticated. */\n authenticated?: boolean;\n /** HTTP transport: remote IP:port. */\n remoteAddr?: string;\n /** Self-contained Arrow IPC stream of the request batch (unary + stream init only). */\n requestData?: Uint8Array;\n /** Stream lifecycle identifier (32-char lowercase hex); empty on unary. */\n streamId?: string;\n /** True when a stream was cancelled by the client. */\n cancelled?: boolean;\n /** Sticky session ID (24-char hex). Present only when the request was bound\n * to a sticky session or the method opened/closed one. */\n sessionId?: string;\n /** Sticky-session lifecycle action observed during dispatch — one of\n * `\"none\"` / `\"resume\"` / `\"open\"` / `\"close\"`. Omitted when sticky is\n * disabled or the request never touched the sticky middleware. */\n sessionAction?: \"none\" | \"resume\" | \"open\" | \"close\";\n}\n\n/** Per-call I/O counters, matching Python's CallStatistics. */\nexport interface CallStatistics {\n /** Number of input batches read from the client. */\n inputBatches: number;\n /** Number of output batches written to the client. */\n outputBatches: number;\n /** Total rows across all input batches. */\n inputRows: number;\n /** Total rows across all output batches. */\n outputRows: number;\n /** Total serialized bytes of all input batches. */\n inputBytes: number;\n /** Total serialized bytes of all output batches. */\n outputBytes: number;\n}\n\n/** Opaque token returned by onDispatchStart, passed back to onDispatchEnd. */\nexport type HookToken = unknown;\n\n/**\n * Observability hook called around RPC dispatch.\n * Implementations must be safe for concurrent use (HTTP transport is concurrent).\n */\nexport interface DispatchHook {\n /** Invoked before the method runs. The returned {@link HookToken} is opaque\n * to the framework and passed back to {@link onDispatchEnd}. */\n onDispatchStart(info: DispatchInfo): HookToken;\n /** Invoked after the method completes or throws. `stats` carries the per-call\n * I/O counters; `error` is set only when the dispatch failed. */\n onDispatchEnd(token: HookToken, info: DispatchInfo, stats: CallStatistics, error?: Error): void;\n}\n\nexport interface EmittedBatch {\n batch: VgiBatch;\n metadata?: Map<string, string>;\n}\n\n/**\n * Accumulates output batches during a produce/exchange call.\n * Enforces that exactly one data batch is emitted per call (plus any number of log batches).\n */\nexport class OutputCollector implements CallContext {\n private _batches: EmittedBatch[] = [];\n private _dataBatchIdx: number | null = null;\n private _finished = false;\n private _producerMode: boolean;\n private _outputSchema: VgiSchema;\n private _serverId: string;\n private _requestId: string | null;\n private _cookieSinkEnabled = false;\n private _responseCookies: CookieSpec[] = [];\n private _stickyContext: StickyContext | null = null;\n /** Authenticated principal for this call; {@link AuthContext.anonymous} when\n * the request was not authenticated. */\n readonly auth: AuthContext;\n readonly cookies: ReadonlyMap<string, string>;\n readonly kind?: TransportKind;\n readonly remainingResponseBytes?: number;\n readonly remainingExternalizedResponseBytes?: number;\n readonly externalizationEnabled?: boolean;\n\n constructor(\n outputSchema: VgiSchema,\n producerMode = true,\n serverId = \"\",\n requestId: string | null = null,\n authContext?: AuthContext,\n cookies?: ReadonlyMap<string, string>,\n kind?: TransportKind,\n /** Snapshot budget fields exposed to worker code via {@link CallContext}.\n * Optional — non-HTTP transports omit them and existing call sites\n * remain source-compatible. */\n budgets?: {\n remainingResponseBytes?: number;\n remainingExternalizedResponseBytes?: number;\n externalizationEnabled?: boolean;\n },\n ) {\n this._outputSchema = outputSchema;\n this._producerMode = producerMode;\n this._serverId = serverId;\n this._requestId = requestId;\n this.auth = authContext ?? AuthContext.anonymous();\n this.cookies = cookies ?? EMPTY_COOKIES;\n this.kind = kind;\n this.remainingResponseBytes = budgets?.remainingResponseBytes;\n this.remainingExternalizedResponseBytes = budgets?.remainingExternalizedResponseBytes;\n this.externalizationEnabled = budgets?.externalizationEnabled;\n }\n\n /**\n * Mark this collector as able to accept Set-Cookie directives. Called\n * by the unary HTTP dispatcher only; streaming and non-HTTP paths leave\n * the sink disabled so setCookie/deleteCookie throw.\n * @internal\n */\n enableCookieSink(): void {\n this._cookieSinkEnabled = true;\n }\n\n /**\n * Return and clear all queued cookie mutations.\n * @internal\n */\n drainResponseCookies(): CookieSpec[] {\n const cookies = this._responseCookies;\n this._responseCookies = [];\n return cookies;\n }\n\n setCookie(name: string, value: string, attrs?: CookieAttrs): void {\n if (!this._cookieSinkEnabled) throw cookieNotUnaryHttpError();\n this._responseCookies.push({\n name,\n value,\n delete: false,\n ...(attrs ?? {}),\n });\n }\n\n deleteCookie(name: string, opts?: { path?: string; domain?: string }): void {\n if (!this._cookieSinkEnabled) throw cookieNotUnaryHttpError();\n this._responseCookies.push({\n name,\n value: \"\",\n delete: true,\n path: opts?.path,\n domain: opts?.domain,\n });\n }\n\n /** Attach the sticky-session sink the HTTP handler built for this request.\n * @internal */\n attachStickyContext(ctx: StickyContext): void {\n this._stickyContext = ctx;\n }\n\n get session(): unknown | null {\n return this._stickyContext?.state ?? null;\n }\n\n get sessionId(): string | null {\n return this._stickyContext?.sessionId ?? null;\n }\n\n openSession(state: unknown, ttl?: number): void {\n const sink = this._stickyContext;\n if (!sink) {\n throw runtimeError(\"sticky sessions not available on this transport\");\n }\n if (!sink.acceptOpens) {\n throw runtimeError(\n \"client did not opt in to sticky sessions \" +\n \"(missing VGI-Session-Accept: true header — open the call inside \" +\n \"an HttpConnection.with_session_token() block)\",\n );\n }\n if (sink.state !== null) {\n throw runtimeError(\"a sticky session is already active for this request\");\n }\n sink._open(state, ttl);\n sink.action = \"open\";\n }\n\n closeSession(): void {\n const sink = this._stickyContext;\n if (!sink) {\n throw runtimeError(\"sticky sessions not available on this transport\");\n }\n sink._close();\n sink.action = \"close\";\n }\n\n /** Schema of the data batches this collector emits. */\n get outputSchema(): VgiSchema {\n return this._outputSchema;\n }\n\n /** True once {@link finish} has been called (producer streams only). */\n get finished(): boolean {\n return this._finished;\n }\n\n /** Batches emitted so far this call — the single data batch plus any log\n * batches, in emission order. Consumed by the dispatch layer. */\n get batches(): EmittedBatch[] {\n return this._batches;\n }\n\n /** Emit a pre-built batch as the data batch for this call. */\n emit(batch: VgiBatch, metadata?: Map<string, string>): void;\n /** Emit a data batch from column arrays keyed by field name. Int64 Number values are coerced to BigInt. */\n emit(columns: Record<string, any[]>): void;\n emit(batchOrColumns: VgiBatch | Record<string, any[]>, metadata?: Map<string, string>): void {\n let batch: VgiBatch;\n if (isBatch(batchOrColumns)) {\n batch = batchOrColumns;\n } else {\n const coerced = coerceInt64(this._outputSchema, batchOrColumns as Record<string, any[]>);\n // Build columns dict ensuring each field has an array (vectorFromArray-equivalent under the hood).\n const cols: Record<string, any[]> = {};\n for (const f of this._outputSchema.fields) {\n const v = coerced[f.name];\n cols[f.name] = Array.isArray(v) ? v : [v];\n }\n batch = batchFromColumns(this._outputSchema, cols);\n }\n if (this._dataBatchIdx !== null) {\n throw new Error(\"Only one data batch may be emitted per call\");\n }\n this._dataBatchIdx = this._batches.length;\n this._batches.push({ batch, metadata });\n }\n\n /** Single-row convenience. Wraps each value in `[value]` then calls `emit()`. */\n emitRow(values: Record<string, any>): void {\n const columns: Record<string, any[]> = {};\n for (const [key, value] of Object.entries(values)) {\n columns[key] = [value];\n }\n this.emit(columns);\n }\n\n /** Signal stream completion for producer streams. Throws if called on exchange streams. */\n finish(): void {\n if (!this._producerMode) {\n throw new Error(\n \"finish() is not allowed on exchange streams; \" + \"exchange streams must emit exactly one data batch per call\",\n );\n }\n this._finished = true;\n }\n\n /** Emit a zero-row client-directed log batch. */\n clientLog(level: string, message: string, extra?: Record<string, string>): void {\n const batch = buildLogBatch(this._outputSchema, level, message, extra, this._serverId, this._requestId);\n this._batches.push({ batch });\n }\n}\n",
|
|
31
32
|
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Cross-runtime gzip compression/decompression.\n *\n * The Python `vgi-rpc[http]` client now defaults to `Content-Encoding: gzip`\n * on every request, so every HTTP server in the framework must decode it.\n * We use the Web platform `DecompressionStream`/`CompressionStream` APIs,\n * which Bun, Node 18+, Deno, and Cloudflare workerd all expose.\n */\n\nasync function streamThrough(\n data: Uint8Array,\n transform: ReadableWritablePair<Uint8Array, BufferSource>,\n maxOutputSize?: number,\n): Promise<Uint8Array<ArrayBuffer>> {\n const ws = transform.writable.getWriter();\n const rs = transform.readable.getReader();\n // Copy into a freshly-allocated ArrayBuffer-backed view to satisfy TS lib\n // BufferSource narrowing (rules out SharedArrayBuffer-backed Uint8Array).\n const view = new Uint8Array(data.byteLength);\n view.set(data);\n const writePromise = (async () => {\n await ws.write(view as BufferSource);\n await ws.close();\n })();\n const chunks: Uint8Array[] = [];\n let total = 0;\n while (true) {\n const { value, done } = await rs.read();\n if (done) break;\n const chunk = value as Uint8Array;\n total += chunk.byteLength;\n if (maxOutputSize != null && total > maxOutputSize) {\n throw new Error(`gzip decompressed size (${total}) exceeds cap (${maxOutputSize})`);\n }\n chunks.push(chunk);\n }\n await writePromise;\n const out = new Uint8Array(total);\n let offset = 0;\n for (const c of chunks) {\n out.set(c, offset);\n offset += c.byteLength;\n }\n return out;\n}\n\n/**\n * Decompress gzip-encoded data, optionally bounded by `maxOutputSize`.\n *\n * The gzip footer's ISIZE field is mod 2^32 so it can't be trusted for a\n * pre-check — we bound output incrementally during streaming decode.\n */\nexport async function gzipDecompress(data: Uint8Array, maxOutputSize?: number): Promise<Uint8Array<ArrayBuffer>> {\n return streamThrough(data, new DecompressionStream(\"gzip\"), maxOutputSize);\n}\n\n/** Compress data with gzip. `level` is accepted for API parity with zstd but ignored — the Web API doesn't expose a level. */\nexport async function gzipCompress(data: Uint8Array, _level?: number): Promise<Uint8Array<ArrayBuffer>> {\n return streamThrough(data, new CompressionStream(\"gzip\"));\n}\n",
|
|
32
33
|
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n batchFromColumns,\n deserializeBatch,\n field,\n schema as makeSchema,\n timestampMicro,\n utf8,\n type VgiSchema,\n} from \"../arrow/index.js\";\nimport type { AuthContext } from \"../auth.js\";\nimport { DESCRIBE_METHOD_NAME, PROTOCOL_HASH_KEY, PROTOCOL_VERSION_KEY, RPC_ERROR_HEADER } from \"../constants.js\";\nimport { buildDescribeBatch } from \"../dispatch/describe.js\";\nimport { MethodNotImplementedError, ProtocolVersionError, parseProtocolVersion, SessionLostError } from \"../errors.js\";\nimport type { Protocol } from \"../protocol.js\";\nimport { type CallStatistics, type DispatchInfo, MethodType, type ServeStartHook, TransportKind } from \"../types.js\";\nimport { gzipCompress, gzipDecompress } from \"../util/gzip.js\";\nimport { randomBytes } from \"../util/web-crypto.js\";\nimport { isZstdCompressAvailable, zstdCompress, zstdDecompress } from \"../util/zstd.js\";\nimport { parseRequest } from \"../wire/request.js\";\nimport { buildErrorBatch } from \"../wire/response.js\";\nimport { buildWwwAuthenticateHeader, oauthResourceMetadataToJson, wellKnownPath } from \"./auth.js\";\nimport { chainAuthenticate } from \"./bearer.js\";\nimport {\n ARROW_CONTENT_TYPE,\n arrowResponse,\n ECHO_HEADER_PREFIX,\n HttpRpcError,\n readRequestFromBody as readRequestFromBodyImported,\n SESSION_ACCEPT_HEADER,\n SESSION_CLOSE_HEADER,\n SESSION_ENDPOINT,\n SESSION_HEADER,\n STICKY_DEFAULT_TTL_HEADER,\n STICKY_ECHO_HEADERS_HEADER,\n STICKY_ENABLED_HEADER,\n serializeIpcStream,\n} from \"./common.js\";\nimport {\n httpDispatchDescribe,\n httpDispatchStreamExchange,\n httpDispatchStreamInit,\n httpDispatchUnary,\n} from \"./dispatch.js\";\nimport {\n configureOAuthPkce,\n handleBrowserGetRedirect,\n handleEarlyReturnTo,\n handleOAuthCallback,\n handleOAuthLogout,\n handleOAuthTokenProxy,\n type OAuthPkceConfig,\n resolvePkceScope,\n} from \"./oauth-pkce.js\";\nimport { buildDescribePage, buildLandingPage, buildNotFoundPage } from \"./pages.js\";\nimport {\n makeDrainHandle,\n openSessionToken,\n SessionRegistry,\n type StickySink,\n sealSessionToken,\n sessionIdHex,\n sessionPrincipalKey,\n startSessionReaper,\n} from \"./sticky.js\";\nimport { computeAad } from \"./token.js\";\nimport { type HttpHandlerOptions, jsonStateSerializer } from \"./types.js\";\n\nconst EMPTY_SCHEMA: VgiSchema = makeSchema([]);\n\nconst EMPTY_COOKIES: ReadonlyMap<string, string> = new Map();\n\n/**\n * Parse the Cookie request header into a Map. Returns an empty map when\n * the header is absent.\n */\nfunction parseRequestCookies(request: Request): ReadonlyMap<string, string> {\n const header = request.headers.get(\"cookie\");\n if (!header) return EMPTY_COOKIES;\n const out = new Map<string, string>();\n for (const part of header.split(\";\")) {\n const pair = part.trim();\n if (!pair) continue;\n const eq = pair.indexOf(\"=\");\n if (eq < 0) continue;\n out.set(pair.slice(0, eq).trim(), pair.slice(eq + 1).trim());\n }\n return out;\n}\n\n/**\n * Create a fetch-compatible HTTP handler for a vgi-rpc Protocol.\n *\n * Compatible with Bun.serve(), Deno.serve(), Cloudflare Workers, and any\n * Web API runtime that uses the standard Request/Response types.\n *\n * @example\n * ```typescript\n * const handler = createHttpHandler(protocol);\n * Bun.serve({ port: 8080, fetch: handler });\n * ```\n */\nexport function createHttpHandler(\n protocol: Protocol,\n options?: HttpHandlerOptions,\n): (request: Request) => Response | Promise<Response> {\n const prefix = (options?.prefix ?? \"\").replace(/\\/+$/, \"\");\n const tokenKey = options?.tokenKey ?? randomBytes(32);\n const tokenTtl = options?.tokenTtl ?? 3600;\n const corsOrigins = options?.corsOrigins;\n const corsMaxAge = options?.corsMaxAge === undefined ? 7200 : options.corsMaxAge;\n const maxRequestBytes = options?.maxRequestBytes;\n // Bomb-cap on `Content-Encoding: zstd` decompression. Default to\n // 16x maxRequestBytes when the operator set one — generous for normal\n // Arrow IPC zstd ratios on legitimate payloads, tight enough that a\n // tiny compressed body cannot inflate to hundreds of MB. When\n // maxRequestBytes is unset the cap stays unbounded (operator-chosen,\n // explicit). Mirrors Python's make_wsgi_app default.\n const maxDecompressedRequestBytes =\n options?.maxDecompressedRequestBytes ??\n (options?.maxRequestBytes != null ? options.maxRequestBytes * 16 : undefined);\n // ``maxStreamResponseBytes`` was the producer-only soft cap. Keep it\n // distinct from ``maxResponseBytes`` (the new hard cap that also applies\n // to unary/exchange) — falling one through to the other would turn the\n // producer hack into an unintended hard cap on every response.\n const maxStreamResponseBytes = options?.maxStreamResponseBytes;\n const maxResponseBytes = options?.maxResponseBytes;\n const maxExternalizedResponseBytes = options?.maxExternalizedResponseBytes;\n const serverId = options?.serverId ?? crypto.randomUUID().replace(/-/g, \"\").slice(0, 12);\n\n let authenticate = options?.authenticate;\n const oauthMetadata = options?.oauthResourceMetadata;\n\n // PKCE setup: when both authenticate and oauthMetadata.clientId are present\n let pkceConfig: OAuthPkceConfig | null = null;\n if (authenticate && oauthMetadata?.clientId) {\n const resourceUrl = new URL(oauthMetadata.resource);\n const secureCookie = resourceUrl.protocol === \"https:\";\n const redirectUri = `${oauthMetadata.resource.replace(/\\/+$/, \"\")}${prefix}/_oauth/callback`;\n const issuer = oauthMetadata.authorizationServers[0];\n if (issuer) {\n const originalAuth = authenticate;\n pkceConfig = configureOAuthPkce(\n {\n signingKey: tokenKey,\n issuer,\n clientId: oauthMetadata.clientId,\n clientSecret: oauthMetadata.clientSecret,\n useIdToken: oauthMetadata.useIdTokenAsBearer,\n prefix,\n secureCookie,\n redirectUri,\n scope: resolvePkceScope(oauthMetadata.scopesSupported, options?.oauthPkceScope),\n allowedReturnOrigins: options?.allowedReturnOrigins,\n },\n originalAuth,\n );\n authenticate = chainAuthenticate(originalAuth, pkceConfig.cookieAuthenticate);\n }\n }\n\n const methods = protocol.getMethods();\n\n // Lazily compute the protocol hash once; it's the SHA-256 over the\n // canonical __describe__ payload and is derived from buildDescribeBatch's\n // metadata. Async because Web Crypto digests are async. Used to stamp\n // every dispatched access-log record with `protocol_hash`.\n let protocolHashPromise: Promise<string> | null = null;\n function getProtocolHash(): Promise<string> {\n if (!protocolHashPromise) {\n protocolHashPromise = buildDescribeBatch(\n protocol.name,\n methods,\n serverId,\n protocol.protocolVersion || undefined,\n ).then(({ metadata }) => metadata.get(PROTOCOL_HASH_KEY) ?? \"\");\n }\n return protocolHashPromise;\n }\n const protocolVersion = protocol.protocolVersion || options?.protocolVersion || \"\";\n\n // Dispatch-boundary protocol_version check, fires only when the Protocol\n // declares a `protocolVersion`. Mirrors Python's HTTP _app_unary /\n // _app_stream gate added after the dispatch-loop bypass was caught in\n // review. Throws ProtocolVersionError so the existing catch turns it into\n // a buffered error stream rather than a raw HTTP 500.\n function enforceProtocolVersion(reqBatchMeta: ReadonlyMap<string, string> | undefined): void {\n const parts = protocol.protocolVersionParts;\n if (parts === null) return;\n const serverVersion = protocol.protocolVersion;\n const clientVersion = reqBatchMeta?.get(PROTOCOL_VERSION_KEY);\n if (clientVersion === undefined) {\n throw new ProtocolVersionError(\n \"VGI client/worker protocol_version mismatch.\\n\" +\n \" Client: <not declared>\\n\" +\n ` Server: ${serverVersion}\\n` +\n \" Direction: the client did not send a vgi_rpc.protocol_version \" +\n \"metadata key. This is either a vgi-rpc framework bug or a \" +\n \"non-VGI client connecting to a VGI worker.\",\n );\n }\n let clientParts: readonly [number, number, number];\n try {\n clientParts = parseProtocolVersion(clientVersion);\n } catch {\n throw new ProtocolVersionError(\n \"VGI client/worker protocol_version mismatch.\\n\" +\n ` Client: ${clientVersion}\\n` +\n ` Server: ${serverVersion}\\n` +\n \" Direction: client sent a malformed protocol_version. \" +\n \"Expected canonical semver MAJOR.MINOR.PATCH.\",\n );\n }\n if (clientParts[0] === parts[0] && clientParts[1] === parts[1]) return;\n const clientOlder = clientParts[0] < parts[0] || (clientParts[0] === parts[0] && clientParts[1] < parts[1]);\n const direction = clientOlder\n ? `client is too old; upgrade the VGI extension/client to a version supporting protocol_version ${serverVersion}.`\n : `server is too old; upgrade the VGI worker to a version supporting protocol_version ${clientVersion}.`;\n throw new ProtocolVersionError(\n \"VGI client/worker protocol_version mismatch.\\n\" +\n ` Client: ${clientVersion}\\n` +\n ` Server: ${serverVersion}\\n` +\n ` Direction: ${direction}`,\n );\n }\n\n const compressionLevel = options?.compressionLevel;\n const stateSerializer = options?.stateSerializer ?? jsonStateSerializer;\n const dispatchHook = options?.dispatchHook;\n\n // Lazy on_serve_start firing — mirrors Python's middleware shape.\n // The bind is committed only after the hook returns successfully so a\n // transient failure on the first request leaves it un-fired and the\n // next request retries (matches Python 7b3999c). Multiple\n // simultaneous first-callers serialize on the in-flight promise.\n const onServeStart: ServeStartHook | null = options?.onServeStart ?? null;\n let serveStartFired = false;\n let serveStartInFlight: Promise<void> | null = null;\n // The transport kind reported to access-log + dispatch hooks. Default\n // to HTTP; the launcher path (createUnixHandler) overrides this in a\n // future commit.\n const transportKind: TransportKind =\n (options as { _transportKind?: TransportKind })?._transportKind ?? TransportKind.HTTP;\n async function notifyTransport(kind: TransportKind): Promise<void> {\n if (serveStartFired) return;\n if (serveStartInFlight) {\n await serveStartInFlight;\n return;\n }\n if (!onServeStart) {\n serveStartFired = true;\n return;\n }\n serveStartInFlight = (async () => {\n try {\n await onServeStart(kind);\n serveStartFired = true;\n } finally {\n serveStartInFlight = null;\n }\n })();\n await serveStartInFlight;\n }\n\n // HTML page configuration\n const enableLandingPage = options?.enableLandingPage ?? true;\n const enableDescribePage = options?.enableDescribePage ?? true;\n const enableNotFoundPage = options?.enableNotFoundPage ?? true;\n const displayName = options?.protocolName ?? protocol.name;\n const repoUrl = options?.repositoryUrl ?? null;\n\n // Pre-render HTML pages for zero per-request overhead\n let landingHtml = enableLandingPage\n ? buildLandingPage(displayName, serverId, enableDescribePage ? `${prefix}/describe` : null, repoUrl)\n : null;\n let describeHtml = enableDescribePage ? buildDescribePage(displayName, serverId, methods, repoUrl) : null;\n const notFoundHtml = enableNotFoundPage ? buildNotFoundPage(prefix, displayName) : null;\n\n // Inject user-info HTML snippet when PKCE is active\n if (pkceConfig) {\n const snippet = pkceConfig.userInfoHtml;\n if (landingHtml) {\n landingHtml = landingHtml.replace(\"</body>\", `${snippet}\\n</body>`);\n }\n if (describeHtml) {\n describeHtml = describeHtml.replace(\"</body>\", `${snippet}\\n</body>`);\n }\n }\n\n const externalLocation = options?.externalLocation;\n const uploadUrlProvider = options?.uploadUrlProvider;\n const maxUploadBytes = options?.maxUploadBytes;\n\n // Pre-built response schema for the synthetic __upload_url__ endpoint.\n const UPLOAD_URL_RESPONSE_SCHEMA = makeSchema([\n field(\"upload_url\", utf8(), false),\n field(\"download_url\", utf8(), false),\n field(\"expires_at\", timestampMicro(\"UTC\"), false),\n ]);\n const UPLOAD_URL_METHOD = \"__upload_url__\";\n const MAX_UPLOAD_URL_COUNT = 100;\n\n // -------- Sticky session machinery --------\n const stickyEnabled = options?.enableSticky === true;\n const stickyDefaultTtl = options?.stickyDefaultTtl ?? 300;\n // Frozen snapshot so per-response emission doesn't re-read a mutable\n // operator dict mid-request.\n const stickyEchoHeadersArr: Array<[string, string]> = stickyEnabled\n ? Object.entries(options?.stickyEchoHeaders ?? {})\n : [];\n const sessionRegistry = stickyEnabled ? new SessionRegistry(stickyDefaultTtl) : null;\n // Reaper interval is unref'd (won't block process exit) but is still a live\n // resource — `DrainHandle.shutdown()` clears it via this stop fn so callers\n // that drain explicitly (tests, worker-exit hooks) don't leak the interval.\n const stopReaper = sessionRegistry ? startSessionReaper(sessionRegistry) : null;\n if (options?._onStickyHandle && sessionRegistry) {\n options._onStickyHandle(makeDrainHandle(sessionRegistry, stopReaper ?? undefined));\n }\n\n // Encodings the server can produce on the response side. Mirrors\n // Python's `VGI-Supported-Encodings` header from `_codec.py`.\n // `compressionLevel` gates response compression overall; zstd is only\n // advertised when the runtime can actually encode it (Bun, Node ≥22.15,\n // Deno ≥2.6.9 — workerd lacks an encoder). gzip is always available via\n // Web `CompressionStream`.\n const supportedResponseEncodings: string[] = [];\n const zstdResponseAvailable = compressionLevel != null && isZstdCompressAvailable();\n if (zstdResponseAvailable) {\n supportedResponseEncodings.push(\"zstd\");\n }\n if (compressionLevel != null) {\n supportedResponseEncodings.push(\"gzip\");\n }\n\n /** Append capability headers (advertised on every response when configured). */\n function addCapabilityHeaders(headers: Headers, isOptions = false): void {\n if (supportedResponseEncodings.length) {\n headers.set(\"VGI-Supported-Encodings\", supportedResponseEncodings.join(\", \"));\n }\n if (maxRequestBytes != null) {\n headers.set(\"VGI-Max-Request-Bytes\", String(maxRequestBytes));\n }\n if (maxResponseBytes != null) {\n headers.set(\"VGI-Max-Response-Bytes\", String(maxResponseBytes));\n }\n if (maxExternalizedResponseBytes != null) {\n headers.set(\"VGI-Max-Externalized-Response-Bytes\", String(maxExternalizedResponseBytes));\n }\n // Always present so capability-aware clients can decide whether to\n // expect externalised payloads.\n headers.set(\"VGI-Externalization-Enabled\", externalLocation?.storage ? \"true\" : \"false\");\n if (uploadUrlProvider) {\n headers.set(\"VGI-Upload-URL-Support\", \"true\");\n if (maxUploadBytes != null) {\n headers.set(\"VGI-Max-Upload-Bytes\", String(maxUploadBytes));\n }\n }\n if (stickyEnabled) {\n headers.set(STICKY_ENABLED_HEADER, \"true\");\n headers.set(STICKY_DEFAULT_TTL_HEADER, String(Math.floor(stickyDefaultTtl)));\n if (stickyEchoHeadersArr.length > 0) {\n headers.set(STICKY_ECHO_HEADERS_HEADER, stickyEchoHeadersArr.map(([k]) => k).join(\", \"));\n }\n }\n if (isOptions && (maxRequestBytes != null || uploadUrlProvider || stickyEnabled)) {\n // Match Python: cache discovery results for 5 minutes.\n if (!headers.has(\"Cache-Control\")) {\n headers.set(\"Cache-Control\", \"public, max-age=300\");\n }\n }\n }\n\n // ctx is built per-request to include authContext; base fields set here\n const baseCtx = {\n tokenKey,\n tokenTtl,\n serverId,\n maxStreamResponseBytes,\n maxResponseBytes,\n maxExternalizedResponseBytes,\n stateSerializer,\n externalLocation,\n kind: transportKind,\n };\n\n function addCorsHeaders(headers: Headers, isOptions = false, requestedHeaders?: string | null): void {\n if (corsOrigins) {\n headers.set(\"Access-Control-Allow-Origin\", corsOrigins);\n headers.set(\"Access-Control-Allow-Methods\", \"POST, OPTIONS\");\n // Reflect the preflight's requested headers so clients may send custom\n // VGI request headers (e.g. x-vgi-accept-encoding, VGI-Session) without a\n // hard-coded allow-list. Mirrors the Python framework, whose preflight\n // echoes Access-Control-Request-Headers. Falls back to the common pair.\n headers.set(\n \"Access-Control-Allow-Headers\",\n requestedHeaders && requestedHeaders.length > 0 ? requestedHeaders : \"Content-Type, Authorization\",\n );\n headers.set(\n \"Access-Control-Expose-Headers\",\n `WWW-Authenticate, X-Request-ID, X-VGI-Content-Encoding, ${RPC_ERROR_HEADER}, VGI-Max-Response-Bytes, VGI-Max-Externalized-Response-Bytes, VGI-Externalization-Enabled`,\n );\n if (isOptions && corsMaxAge != null) {\n headers.set(\"Access-Control-Max-Age\", String(corsMaxAge));\n }\n }\n }\n\n async function compressIfAccepted(\n response: Response,\n clientAcceptsZstd: boolean,\n clientAcceptsGzip: boolean,\n ): Promise<Response> {\n if (compressionLevel == null) return response;\n // Honour client preference: zstd preferred over gzip when the runtime\n // can actually produce zstd. Fall through to gzip otherwise.\n const codec = clientAcceptsZstd && zstdResponseAvailable ? \"zstd\" : clientAcceptsGzip ? \"gzip\" : null;\n if (!codec) return response;\n const responseBody = new Uint8Array(await response.arrayBuffer());\n const compressed =\n codec === \"zstd\" ? await zstdCompress(responseBody, compressionLevel) : await gzipCompress(responseBody);\n const headers = new Headers(response.headers);\n headers.set(\"Content-Encoding\", codec);\n return new Response(compressed as unknown as BodyInit, {\n status: response.status,\n headers,\n });\n }\n\n function makeErrorResponse(error: Error, statusCode: number, schema: VgiSchema = EMPTY_SCHEMA): Response {\n const errBatch = buildErrorBatch(schema, error, serverId, null);\n const body = serializeIpcStream(schema, [errBatch]);\n const resp = arrowResponse(body, statusCode);\n addCorsHeaders(resp.headers);\n return resp;\n }\n\n const enableHealthEndpoint = options?.enableHealthEndpoint ?? true;\n const healthPath = `${prefix}/health`;\n const healthBody = enableHealthEndpoint\n ? JSON.stringify({ status: \"ok\", server_id: serverId, protocol: displayName })\n : null;\n\n return async function handler(request: Request): Promise<Response> {\n const url = new URL(request.url);\n const path = url.pathname;\n\n // OAuth token-exchange proxy — exempt from auth (it's the mechanism by\n // which a client *gets* an auth token). Handled before the global OPTIONS\n // catch-all so the proxy can apply its own Origin-allowlist CORS.\n if (\n pkceConfig &&\n path === `${prefix}/_oauth/token` &&\n (request.method === \"POST\" || request.method === \"OPTIONS\")\n ) {\n return handleOAuthTokenProxy(request, pkceConfig);\n }\n\n // Health endpoint — exempt from authentication so orchestrators / load\n // balancers can probe even when every RPC endpoint requires auth.\n if (healthBody !== null && request.method === \"GET\" && path === healthPath) {\n const headers = new Headers({ \"Content-Type\": \"application/json\" });\n addCorsHeaders(headers);\n addCapabilityHeaders(headers);\n return new Response(healthBody, { status: 200, headers });\n }\n\n // Well-known endpoint: RFC 9728 OAuth Protected Resource Metadata\n if (oauthMetadata && path === wellKnownPath(prefix)) {\n if (request.method !== \"GET\") {\n return new Response(\"Method Not Allowed\", { status: 405 });\n }\n const metaJson = oauthResourceMetadataToJson(oauthMetadata);\n // When PKCE + a server-side client_secret are configured, advertise the\n // token-proxy URL so SPA PKCE clients can complete token exchanges\n // without holding the secret themselves.\n if (pkceConfig && oauthMetadata.clientSecret) {\n const resourceUrl = new URL(oauthMetadata.resource);\n metaJson.token_endpoint = `${resourceUrl.protocol}//${resourceUrl.host}${prefix}/_oauth/token`;\n }\n const body = JSON.stringify(metaJson);\n const headers = new Headers({\n \"Content-Type\": \"application/json\",\n \"Cache-Control\": \"public, max-age=60\",\n });\n addCorsHeaders(headers);\n return new Response(body, { status: 200, headers });\n }\n\n // CORS preflight + capability discovery\n if (request.method === \"OPTIONS\") {\n const headers = new Headers();\n addCorsHeaders(headers, true, request.headers.get(\"Access-Control-Request-Headers\"));\n addCapabilityHeaders(headers, true);\n // Always answer OPTIONS so capability discovery via OPTIONS /health (or\n // any other path) works even when CORS isn't enabled. Falls back to\n // 405 only if no capability/CORS configuration exists.\n if (\n corsOrigins ||\n maxRequestBytes != null ||\n maxResponseBytes != null ||\n maxExternalizedResponseBytes != null ||\n uploadUrlProvider ||\n stickyEnabled ||\n path === `${prefix}/__capabilities__`\n ) {\n return new Response(null, { status: 204, headers });\n }\n return new Response(null, { status: 405 });\n }\n\n // HTML pages for GET requests\n if (request.method === \"GET\") {\n // OAuth callback and logout routes (exempt from auth)\n if (pkceConfig) {\n if (path === `${prefix}/_oauth/callback`) {\n return handleOAuthCallback(request, pkceConfig);\n }\n if (path === `${prefix}/_oauth/logout`) {\n return handleOAuthLogout(request, pkceConfig);\n }\n\n // Early return-to redirect for already-authenticated users\n const earlyRedirect = handleEarlyReturnTo(request, pkceConfig);\n if (earlyRedirect) return earlyRedirect;\n }\n\n // If authenticate is configured, try to authenticate GET requests for pages\n // On auth failure with PKCE, redirect browsers to OAuth instead of 401\n if (authenticate && pkceConfig) {\n try {\n await authenticate(request);\n } catch {\n // Auth failed — redirect browser GETs to OAuth authorization\n const redirect = await handleBrowserGetRedirect(request, pkceConfig);\n if (redirect) return redirect;\n // Not a browser or OIDC discovery failed — fall through to normal page serving\n }\n }\n\n // Landing page: GET {prefix}/ or GET {prefix}\n if (landingHtml && (path === prefix || path === `${prefix}/`)) {\n const headers = new Headers({ \"Content-Type\": \"text/html; charset=utf-8\" });\n addCorsHeaders(headers);\n return new Response(landingHtml, { status: 200, headers });\n }\n\n // Describe page: GET {prefix}/describe\n if (describeHtml && path === `${prefix}/describe`) {\n const headers = new Headers({ \"Content-Type\": \"text/html; charset=utf-8\" });\n addCorsHeaders(headers);\n return new Response(describeHtml, { status: 200, headers });\n }\n\n // 404 page for any other GET\n if (notFoundHtml) {\n const headers = new Headers({ \"Content-Type\": \"text/html; charset=utf-8\" });\n addCorsHeaders(headers);\n return new Response(notFoundHtml, { status: 404, headers });\n }\n\n return new Response(\"Not Found\", { status: 404 });\n }\n\n // DELETE {prefix}/__session__ — idempotent sticky-session teardown.\n // Mirrors Python's `_SessionResource.on_delete`: missing token /\n // malformed / wrong server_id / wrong principal / registry miss all\n // return 200 (so the endpoint cannot be used to probe for live\n // sessions); a successful close returns 204 + VGI-Session-Close: true.\n if (request.method === \"DELETE\" && stickyEnabled && sessionRegistry && path === `${prefix}/${SESSION_ENDPOINT}`) {\n const headers = new Headers();\n addCorsHeaders(headers);\n addCapabilityHeaders(headers);\n const tokenHeader = (request.headers.get(SESSION_HEADER) ?? \"\").trim();\n if (!tokenHeader) {\n return new Response(null, { status: 200, headers });\n }\n // Optional auth — re-uses the same authenticate path so principal\n // binding is consistent with the dispatch flow. AAD uses only the\n // authenticated principal (matching `computeAad` in `token.ts`);\n // the registry's principalKey compounds domain+principal as\n // defense-in-depth.\n let principalKey = sessionPrincipalKey(false, null, null);\n let aadPrincipal: string | null = null;\n if (authenticate) {\n try {\n const auth = await authenticate(request);\n if (auth?.authenticated) {\n aadPrincipal = auth.principal ?? \"\";\n principalKey = sessionPrincipalKey(true, auth.domain, auth.principal);\n }\n } catch {\n // Anonymous principal — stale / forged tokens already won't\n // decrypt under a real principal's AAD, so the auth failure\n // here is harmless; treat as anonymous and let the next steps\n // 200 out idempotently.\n }\n }\n const aad = computeAad(aadPrincipal);\n let opened: { serverId: string; sessionId: Uint8Array };\n try {\n opened = openSessionToken(tokenHeader, tokenKey, aad);\n } catch {\n return new Response(null, { status: 200, headers });\n }\n if (opened.serverId !== serverId) {\n return new Response(null, { status: 200, headers });\n }\n const entry = sessionRegistry.get(opened.sessionId, principalKey);\n if (!entry) {\n return new Response(null, { status: 200, headers });\n }\n const release = await entry.lock.acquire();\n try {\n sessionRegistry.close(opened.sessionId);\n } finally {\n release();\n }\n headers.set(SESSION_CLOSE_HEADER, \"true\");\n return new Response(null, { status: 204, headers });\n }\n\n if (request.method !== \"POST\") {\n return new Response(\"Method Not Allowed\", { status: 405 });\n }\n\n // Build per-request dispatch context\n const ctx = { ...baseCtx, cookies: parseRequestCookies(request) } as typeof baseCtx & {\n authContext?: AuthContext;\n cookies: ReadonlyMap<string, string>;\n stickyContext?: StickySink;\n };\n\n // Authentication — run before content-type validation so unauthenticated\n // requests get 401 regardless of body shape.\n if (authenticate) {\n try {\n ctx.authContext = await authenticate(request);\n } catch (error: any) {\n const headers = new Headers({ \"Content-Type\": \"text/plain\" });\n addCorsHeaders(headers);\n if (oauthMetadata) {\n const metadataUrl = new URL(request.url);\n metadataUrl.pathname = wellKnownPath(prefix);\n metadataUrl.search = \"\";\n headers.set(\n \"WWW-Authenticate\",\n buildWwwAuthenticateHeader(\n metadataUrl.toString(),\n oauthMetadata.clientId,\n oauthMetadata.clientSecret,\n oauthMetadata.useIdTokenAsBearer,\n oauthMetadata.deviceCodeClientId,\n oauthMetadata.deviceCodeClientSecret,\n ),\n );\n }\n return new Response(error.message || \"Unauthorized\", { status: 401, headers });\n }\n }\n\n // Hoisted ahead of sticky resolution so the SessionLost path's\n // `compressIfAccepted` call can see them.\n const acceptEncodingEarly = (request.headers.get(\"Accept-Encoding\") ?? \"\").toLowerCase();\n const clientAcceptsZstdEarly = acceptEncodingEarly.includes(\"zstd\");\n const clientAcceptsGzipEarly = acceptEncodingEarly.includes(\"gzip\");\n\n // -------- Sticky session resolution --------\n // Mirrors `_StickyMiddleware.process_request` in Python: read\n // VGI-Session-Accept + VGI-Session, decrypt the token (AAD-bound to\n // the request's principal), look up the registry entry, and acquire\n // the per-session lock so concurrent calls on the same session\n // serialize. On any failure we surface a typed SessionLostError as\n // a 500 + EXCEPTION-batch response (the same wire shape a\n // dispatch-time throw would produce).\n let stickyLockRelease: (() => void) | null = null;\n let stickySink: StickySink | null = null;\n if (stickyEnabled && sessionRegistry) {\n const auth = ctx.authContext;\n const aadPrincipal = auth?.authenticated ? (auth.principal ?? \"\") : null;\n const principalKey = sessionPrincipalKey(!!auth?.authenticated, auth?.domain, auth?.principal);\n const aad = computeAad(aadPrincipal);\n const acceptOpens = (request.headers.get(SESSION_ACCEPT_HEADER) ?? \"\").trim().toLowerCase() === \"true\";\n const sessionHeader = (request.headers.get(SESSION_HEADER) ?? \"\").trim();\n\n let resumeState: unknown | null = null;\n let resumeSessionId: string | null = null;\n\n if (sessionHeader) {\n let opened: { serverId: string; sessionId: Uint8Array };\n try {\n opened = openSessionToken(sessionHeader, tokenKey, aad);\n if (opened.serverId !== serverId) {\n throw new SessionLostError(\"session token was issued by a different worker (server_id mismatch)\");\n }\n } catch (err) {\n // Wrong-AAD / wrong-key / malformed → SessionLostError.\n const e = err instanceof Error ? err : new Error(String(err));\n const r = makeErrorResponse(e, 500);\n addCapabilityHeaders(r.headers);\n return compressIfAccepted(r, clientAcceptsZstdEarly, clientAcceptsGzipEarly);\n }\n const entry = sessionRegistry.get(opened.sessionId, principalKey);\n if (!entry) {\n const r = makeErrorResponse(new SessionLostError(\"session not found, expired, or principal mismatch\"), 500);\n addCapabilityHeaders(r.headers);\n return compressIfAccepted(r, clientAcceptsZstdEarly, clientAcceptsGzipEarly);\n }\n stickyLockRelease = await entry.lock.acquire();\n resumeState = entry.state;\n resumeSessionId = sessionIdHex(opened.sessionId);\n }\n\n // Build the sink. Captures `principalKey` and `aad` so `_open`\n // can register a new entry and mint a token bound to the same\n // principal as the request.\n const sink: StickySink = {\n acceptOpens,\n state: resumeState,\n sessionId: resumeSessionId,\n mintToken: null,\n closed: false,\n action: sessionHeader ? \"resume\" : \"none\",\n _open(state: unknown, ttl?: number) {\n const { sessionId, expiresAt } = sessionRegistry!.open(state, ttl, principalKey);\n sink.sessionId = sessionIdHex(sessionId);\n sink.state = state;\n sink.mintToken = sealSessionToken(serverId, sessionId, expiresAt, tokenKey, aad);\n },\n _close() {\n if (sink.closed) return;\n const sid = sink.sessionId;\n if (!sid) return;\n // Decode hex back to bytes for registry lookup.\n const bytes = new Uint8Array(sid.length / 2);\n for (let i = 0; i < bytes.length; i++) bytes[i] = parseInt(sid.slice(i * 2, i * 2 + 2), 16);\n // Release the lock before close so the resource isn't held\n // while close() runs.\n if (stickyLockRelease) {\n stickyLockRelease();\n stickyLockRelease = null;\n }\n sessionRegistry!.close(bytes);\n sink.state = null;\n sink.closed = true;\n },\n };\n stickySink = sink;\n ctx.stickyContext = sink;\n }\n\n // Validate Content-Type\n const contentType = request.headers.get(\"Content-Type\");\n if (!contentType || !contentType.includes(ARROW_CONTENT_TYPE)) {\n if (stickyLockRelease) stickyLockRelease();\n return new Response(`Unsupported Media Type: expected ${ARROW_CONTENT_TYPE}`, { status: 415 });\n }\n\n // Check request body size (exempt the upload-URL and health endpoints —\n // their payloads are intrinsically tiny, and __upload_url__ exists\n // precisely to escape this limit).\n const exemptFromMaxBytes =\n path === healthPath || path === `${prefix}/${UPLOAD_URL_METHOD}/init` || path === `${prefix}/__capabilities__`;\n if (maxRequestBytes != null && !exemptFromMaxBytes) {\n const contentLength = request.headers.get(\"Content-Length\");\n if (contentLength && parseInt(contentLength, 10) > maxRequestBytes) {\n return new Response(\"Request body too large\", { status: 413 });\n }\n }\n\n const clientAcceptsZstd = clientAcceptsZstdEarly;\n const clientAcceptsGzip = clientAcceptsGzipEarly;\n\n // Read body, decompressing if needed\n let body = new Uint8Array(await request.arrayBuffer());\n if (maxRequestBytes != null && !exemptFromMaxBytes && body.byteLength > maxRequestBytes) {\n return new Response(\"Request body too large\", { status: 413 });\n }\n const contentEncoding = (request.headers.get(\"Content-Encoding\") ?? \"\").trim().toLowerCase();\n if (contentEncoding === \"zstd\" || contentEncoding === \"gzip\") {\n try {\n body =\n contentEncoding === \"zstd\"\n ? await zstdDecompress(body, maxDecompressedRequestBytes)\n : await gzipDecompress(body, maxDecompressedRequestBytes);\n } catch (error: any) {\n // Decompression-bomb refusal surfaces as 413 (the wire-cap\n // sibling of maxRequestBytes); other decode errors are 400.\n const message = error?.message ?? `${contentEncoding} decompression failed`;\n const status = message.includes(\"exceed\") || message.includes(\"cap\") ? 413 : 400;\n const headers = new Headers({ \"Content-Type\": \"text/plain\" });\n addCorsHeaders(headers);\n addCapabilityHeaders(headers);\n return new Response(message, { status, headers });\n }\n } else if (contentEncoding) {\n const headers = new Headers({ \"Content-Type\": \"text/plain\" });\n addCorsHeaders(headers);\n addCapabilityHeaders(headers);\n return new Response(`Unsupported Content-Encoding: ${contentEncoding}`, { status: 415, headers });\n }\n\n // Route: {prefix}/__upload_url__/init — vend pre-signed upload URL pairs\n if (path === `${prefix}/${UPLOAD_URL_METHOD}/init`) {\n if (!uploadUrlProvider) {\n return new Response(\"Not Found\", { status: 404 });\n }\n try {\n const { schema: reqSchema, batch: reqBatch } = await readRequestFromBodyImported(body);\n const parsed = parseRequest(reqSchema, reqBatch);\n if (parsed.methodName !== UPLOAD_URL_METHOD) {\n throw new HttpRpcError(\n `Method name in request '${parsed.methodName}' does not match URL '${UPLOAD_URL_METHOD}'`,\n 400,\n );\n }\n const rawCount = parsed.params.count;\n let count = typeof rawCount === \"bigint\" ? Number(rawCount) : Number(rawCount ?? 1);\n if (!Number.isFinite(count) || count < 1) count = 1;\n if (count > MAX_UPLOAD_URL_COUNT) count = MAX_UPLOAD_URL_COUNT;\n\n const urls: { uploadUrl: string; downloadUrl: string; expiresAt: Date }[] = [];\n for (let i = 0; i < count; i++) {\n urls.push(await uploadUrlProvider.generateUploadUrl());\n }\n\n // Timestamp(MICROSECOND) — arrow-js's `setTimestampMicrosecond`\n // visitor internally does `BigInt(value * 1000)`, so we have to\n // pass a Number of milliseconds. Passing a BigInt of microseconds\n // would trip \"Invalid mix of BigInt and other type in\n // multiplication\". The Date.getTime() ms value fits in Number\n // safely for the next ~285k years.\n const expiresAt = urls.map((u) => u.expiresAt.getTime());\n const resultBatch = batchFromColumns(UPLOAD_URL_RESPONSE_SCHEMA, {\n upload_url: urls.map((u) => u.uploadUrl),\n download_url: urls.map((u) => u.downloadUrl),\n expires_at: expiresAt,\n });\n const responseBody = serializeIpcStream(UPLOAD_URL_RESPONSE_SCHEMA, [resultBatch]);\n const response = arrowResponse(responseBody);\n addCorsHeaders(response.headers);\n addCapabilityHeaders(response.headers);\n return compressIfAccepted(response, clientAcceptsZstd, clientAcceptsGzip);\n } catch (error: any) {\n if (error instanceof HttpRpcError) {\n const r = makeErrorResponse(error, error.statusCode, UPLOAD_URL_RESPONSE_SCHEMA);\n addCapabilityHeaders(r.headers);\n return compressIfAccepted(r, clientAcceptsZstd, clientAcceptsGzip);\n }\n const r = makeErrorResponse(error, 500, UPLOAD_URL_RESPONSE_SCHEMA);\n addCapabilityHeaders(r.headers);\n return compressIfAccepted(r, clientAcceptsZstd, clientAcceptsGzip);\n }\n }\n\n // Route: {prefix}/__describe__\n if (path === `${prefix}/${DESCRIBE_METHOD_NAME}`) {\n try {\n const response = await httpDispatchDescribe(\n protocol.name,\n methods,\n serverId,\n protocol.protocolVersion || undefined,\n );\n addCorsHeaders(response.headers);\n return compressIfAccepted(response, clientAcceptsZstd, clientAcceptsGzip);\n } catch (error: any) {\n return compressIfAccepted(makeErrorResponse(error, 500), clientAcceptsZstd, clientAcceptsGzip);\n }\n }\n\n // Parse method name and sub-path from URL\n if (!path.startsWith(`${prefix}/`)) {\n return new Response(\"Not Found\", { status: 404 });\n }\n\n const subPath = path.slice(prefix.length + 1);\n let methodName: string;\n let action: \"call\" | \"init\" | \"exchange\";\n\n if (subPath.endsWith(\"/init\")) {\n methodName = subPath.slice(0, -5);\n action = \"init\";\n } else if (subPath.endsWith(\"/exchange\")) {\n methodName = subPath.slice(0, -9);\n action = \"exchange\";\n } else {\n methodName = subPath;\n action = \"call\";\n }\n\n // Look up method\n const method = methods.get(methodName);\n if (!method) {\n const available = [...methods.keys()].sort();\n const err = new MethodNotImplementedError(\n `Unknown method: '${methodName}'. Available methods: [${available.join(\", \")}]`,\n );\n return compressIfAccepted(makeErrorResponse(err, 404), clientAcceptsZstd, clientAcceptsGzip);\n }\n\n // Application-protocol-version gate (HTTP dispatch path). Fires only\n // when the Protocol declared a `protocolVersion`, on unary calls and\n // stream init. `/exchange` continuations skip the gate — the Python\n // client (and parity TS client) only emits `vgi_rpc.protocol_version`\n // on the dispatch-entry request, not on follow-up exchange batches.\n // `__describe__` is exempt — diagnostic path for mismatched clients to\n // discover the server's version. Mirrors Python's _app_unary /\n // _app_stream gate.\n if (protocol.protocolVersionParts !== null && methodName !== DESCRIBE_METHOD_NAME && action !== \"exchange\") {\n try {\n // Peek at request batch metadata without consuming the body — the\n // dispatch helpers re-deserialize. Cost is one extra deserialize\n // per protocol-versioned dispatch; acceptable for a typed gate.\n let reqMeta: ReadonlyMap<string, string> | undefined;\n try {\n const peeked = deserializeBatch(body);\n reqMeta = peeked.metadata ?? undefined;\n } catch {\n // Malformed body — fall through to the dispatch helper, which\n // will surface the parse error properly.\n }\n enforceProtocolVersion(reqMeta);\n } catch (exc) {\n const errSchema = method.type === MethodType.UNARY ? method.resultSchema : EMPTY_SCHEMA;\n const errBatch = buildErrorBatch(errSchema, exc as Error, serverId, null);\n const errBody = serializeIpcStream(errSchema, [errBatch]);\n const response = arrowResponse(errBody, 400);\n addCorsHeaders(response.headers);\n addCapabilityHeaders(response.headers);\n return compressIfAccepted(response, clientAcceptsZstd, clientAcceptsGzip);\n }\n }\n\n // Fire on_serve_start lazily (idempotent on success). A failure here\n // propagates as a 500 to the client, leaves the bind un-fired, and\n // the next request retries.\n await notifyTransport(transportKind);\n\n const methodType = method.type === MethodType.UNARY ? \"unary\" : \"stream\";\n const protocolHash = await getProtocolHash();\n const auth = ctx.authContext;\n const info: DispatchInfo = {\n method: methodName,\n methodType,\n serverId,\n requestId: null,\n protocol: protocol.name,\n protocolHash,\n protocolVersion,\n kind: transportKind,\n principal: auth?.principal ?? \"\",\n authDomain: auth?.domain ?? \"\",\n authenticated: auth?.authenticated ?? false,\n // Self-contained Arrow IPC stream of the request batch — the body\n // we already buffered. Best-effort: the access-log can still emit\n // even if we couldn't capture it.\n requestData: action === \"call\" ? body : undefined,\n };\n const stats: CallStatistics = {\n inputBatches: 0,\n outputBatches: 0,\n inputRows: 0,\n outputRows: 0,\n inputBytes: 0,\n outputBytes: 0,\n };\n\n const hookToken = dispatchHook?.onDispatchStart(info);\n let dispatchError: Error | undefined;\n\n try {\n let response: Response;\n\n if (action === \"call\") {\n if (method.type !== MethodType.UNARY) {\n throw new HttpRpcError(`Method '${methodName}' is a stream method. Use /init and /exchange endpoints.`, 400);\n }\n response = await httpDispatchUnary(method, body, ctx);\n } else if (action === \"init\") {\n if (method.type !== MethodType.STREAM) {\n throw new HttpRpcError(\n `Method '${methodName}' is a unary method. Use POST ${prefix}/${methodName} instead.`,\n 400,\n );\n }\n response = await httpDispatchStreamInit(method, body, ctx);\n } else {\n if (method.type !== MethodType.STREAM) {\n throw new HttpRpcError(\n `Method '${methodName}' is a unary method. Use POST ${prefix}/${methodName} instead.`,\n 400,\n );\n }\n response = await httpDispatchStreamExchange(method, body, ctx);\n }\n\n // Check if the dispatch function caught an error internally\n const internalError = (response as any).__dispatchError;\n if (internalError) {\n dispatchError = internalError instanceof Error ? internalError : new Error(String(internalError));\n }\n addCorsHeaders(response.headers);\n addCapabilityHeaders(response.headers);\n applyStickyResponseHeaders(response.headers, stickySink);\n return compressIfAccepted(response, clientAcceptsZstd, clientAcceptsGzip);\n } catch (error: any) {\n dispatchError = error instanceof Error ? error : new Error(String(error));\n if (error instanceof HttpRpcError) {\n const r = makeErrorResponse(error, error.statusCode);\n addCapabilityHeaders(r.headers);\n applyStickyResponseHeaders(r.headers, stickySink);\n return compressIfAccepted(r, clientAcceptsZstd, clientAcceptsGzip);\n }\n const r = makeErrorResponse(error, 500);\n addCapabilityHeaders(r.headers);\n applyStickyResponseHeaders(r.headers, stickySink);\n return compressIfAccepted(r, clientAcceptsZstd, clientAcceptsGzip);\n } finally {\n // Surface sticky lifecycle on the access log.\n if (stickySink) {\n if (stickySink.sessionId) info.sessionId = stickySink.sessionId;\n info.sessionAction = stickySink.action;\n }\n dispatchHook?.onDispatchEnd(hookToken, info, stats, dispatchError);\n // Release the per-session lock if dispatch held it and the handler\n // didn't already release it via close_session.\n if (stickyLockRelease) {\n try {\n stickyLockRelease();\n } catch {\n // ignore — mutex release is best-effort\n }\n stickyLockRelease = null;\n }\n }\n };\n\n /** Emit sticky-session response headers based on the sink's per-request state. */\n function applyStickyResponseHeaders(headers: Headers, sink: StickySink | null): void {\n if (!sink) return;\n if (sink.mintToken !== null) {\n headers.set(SESSION_HEADER, sink.mintToken);\n // Echo headers — emitted only on the session-opening response. The\n // client captures `VGI-Echo-<name>` and replays `<name>` for the\n // remainder of the session view.\n for (const [name, value] of stickyEchoHeadersArr) {\n headers.set(`${ECHO_HEADER_PREFIX}${name}`, value);\n }\n }\n if (sink.closed) {\n headers.set(SESSION_CLOSE_HEADER, \"true\");\n }\n }\n}\n",
|
|
33
34
|
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n isDate,\n isDecimal,\n isDictionary,\n isDuration,\n isFixedSizeBinary,\n isLargeBinary,\n isLargeUtf8,\n isTime,\n isTimestamp,\n type VgiDataType,\n} from \"../arrow/index.js\";\n\n/**\n * Arrow types whose `.get(0)` / `vectorFromArray` round-trips are unreliable\n * in arrow-js. For these we extract and re-emit the underlying `Data` object\n * directly (passthrough), like we already do for Map_.\n *\n * Covers Date/Time/Timestamp/Duration/Decimal/LargeUtf8/LargeBinary/\n * FixedSizeBinary/Dictionary.\n */\nexport function isOpaquePassthroughType(type: VgiDataType): boolean {\n return (\n isDate(type) ||\n isTime(type) ||\n isTimestamp(type) ||\n isDuration(type) ||\n isDecimal(type) ||\n isLargeUtf8(type) ||\n isLargeBinary(type) ||\n isFixedSizeBinary(type) ||\n isDictionary(type)\n );\n}\n",
|
|
@@ -56,9 +57,10 @@
|
|
|
56
57
|
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Generic Unix-socket worker launcher — TypeScript port of\n * `vgi_rpc.launcher.launch`.\n *\n * Coordinates spawn-or-reuse of long-running worker processes that serve\n * RPC over `AF_UNIX` sockets. Designed for clients that want a warm\n * worker without managing its lifecycle themselves.\n *\n * Architecture (cross-language identical to the Python implementation):\n *\n * - The launcher derives a deterministic socket path from a hash of the\n * worker command tuple (cmd + args + cwd + `VGI_RPC_*` env), so the\n * same worker is reused across unrelated callers.\n * - Concurrent first-callers serialise on a per-hash lockfile.\n * - Each spawned worker self-terminates after `idleTimeout` seconds with\n * zero connected clients (the worker side enforces this — see the\n * `serveUnix` runner in the same module for TS workers, or\n * `vgi_rpc.rpc.serve_unix` for Python).\n *\n * Worker contract — across language ports:\n *\n * - Accept `--unix PATH` and `--idle-timeout SEC` on the command line.\n * - Emit exactly one line `UNIX:<absolute-path>\\n` on **stdout** (flushed)\n * once bind+listen succeed. Write nothing further to stdout afterward.\n * - Tolerate (or suppress) stdout noise *before* the bind line — the\n * launcher skips non-`UNIX:` prefix lines for resilience.\n */\n\nimport { type ChildProcessWithoutNullStreams, spawn } from \"node:child_process\";\nimport { createWriteStream, unlinkSync } from \"node:fs\";\n\nimport { computeHash } from \"./hash.js\";\nimport { acquireLock, tryAcquireLock } from \"./lock.js\";\nimport { defaultStateDir, gcStateDir, probeSocket, socketPaths, writeMeta } from \"./state.js\";\n\n/** Maximum number of stale entries the opportunistic in-launch GC scans. */\nconst DEFAULT_GC_LIMIT = 16;\n\n/** Inputs to {@link launch}. */\nexport interface LaunchConfig {\n /** The worker command and its arguments. Must be non-empty. */\n workerArgv: readonly string[];\n /** Explicit socket path; when omitted, derived from the hash of the tuple. */\n socketPath?: string;\n /** Worker self-shutdown after this many seconds idle. Forwarded as\n * `--idle-timeout SEC`. Default: 300. */\n idleTimeout?: number;\n /** Maximum seconds to block waiting for the per-hash file lock. Default: 30. */\n connectTimeout?: number;\n /** Maximum seconds to wait for the worker to print `UNIX:<path>`. Default: 60. */\n workerStartupTimeout?: number;\n /** If set, worker stderr is appended to this file; otherwise discarded. */\n workerStderr?: string;\n /** Override the default state directory. */\n stateDir?: string;\n}\n\n/**\n * Ensure a worker is running and return its socket path.\n *\n * Either the existing worker for this hash is reused (probe succeeds) or\n * a fresh one is spawned under flock. Throws on any failure to bring up\n * a worker.\n */\nexport async function launch(config: LaunchConfig): Promise<string> {\n if (!config.workerArgv || config.workerArgv.length === 0) {\n throw new Error(\"workerArgv must be non-empty\");\n }\n const stateDir = config.stateDir ?? defaultStateDir();\n const idleTimeout = config.idleTimeout ?? 300;\n const connectTimeoutMs = (config.connectTimeout ?? 30) * 1000;\n const startupTimeoutMs = (config.workerStartupTimeout ?? 60) * 1000;\n\n let lockPath: string;\n let sockPath: string;\n let metaPath: string | null;\n let hashId: string | null;\n\n if (config.socketPath !== undefined) {\n const { resolve } = await import(\"node:path\");\n sockPath = resolve(config.socketPath);\n // Explicit paths get a sibling lock, no .meta, skipped by status/gc.\n lockPath = `${sockPath}.lock`;\n metaPath = null;\n hashId = null;\n } else {\n hashId = await computeHash(config.workerArgv);\n const paths = socketPaths(stateDir, hashId);\n lockPath = paths.lockPath;\n sockPath = paths.sockPath;\n metaPath = paths.metaPath;\n }\n\n const handle = await acquireLock(lockPath, connectTimeoutMs);\n try {\n // Probe — maybe a worker is already serving for this hash.\n if (await probeSocket(sockPath)) {\n return sockPath;\n }\n // Stale socket cleanup.\n try {\n unlinkSync(sockPath);\n } catch {\n // ENOENT is normal; anything else is broadened away (matches Python's\n // OSError suppression for Windows ERROR_SHARING_VIOLATION).\n }\n if (metaPath !== null) {\n writeMeta(metaPath, config.workerArgv, process.cwd(), sockPath);\n }\n await spawnWorker(config.workerArgv, sockPath, idleTimeout, config.workerStderr ?? null, startupTimeoutMs);\n return sockPath;\n } finally {\n handle.release();\n // Opportunistic GC after release — bounded so it can't dominate runtime.\n if (hashId !== null) {\n try {\n await gcStateDir(\n stateDir,\n async (p) => {\n const h = tryAcquireLock(p);\n return h ? () => h.release() : null;\n },\n { limit: DEFAULT_GC_LIMIT, excludeHash: hashId },\n );\n } catch {\n // GC is best-effort.\n }\n }\n }\n}\n\n/** Spawn the worker, wait for `UNIX:<path>` on stdout, return when ready. */\nasync function spawnWorker(\n workerArgv: readonly string[],\n sockPath: string,\n idleTimeout: number,\n workerStderr: string | null,\n startupTimeoutMs: number,\n): Promise<void> {\n const fullArgv = [...workerArgv, \"--unix\", sockPath, \"--idle-timeout\", String(idleTimeout)];\n const [cmd, ...rest] = fullArgv;\n\n const stderrTarget = workerStderr === null ? \"ignore\" : \"pipe\";\n\n const proc = spawn(cmd, rest, {\n stdio: [\"ignore\", \"pipe\", stderrTarget],\n detached: false,\n }) as ChildProcessWithoutNullStreams;\n\n if (workerStderr !== null && proc.stderr) {\n // Append mode so multiple worker generations share one log file.\n const sink = createWriteStream(workerStderr, { flags: \"a\" });\n proc.stderr.pipe(sink);\n }\n\n const expectedPrefix = `UNIX:${sockPath}`;\n\n // Read line-by-line from stdout until we see the bind announcement.\n const reader = lineReader(proc.stdout);\n const deadline = Date.now() + startupTimeoutMs;\n\n while (Date.now() < deadline) {\n // Race the next stdout line against the worker's exit and the deadline.\n const remaining = deadline - Date.now();\n const result = await Promise.race([\n reader.next().then((r) => ({ kind: \"line\" as const, value: r })),\n onceExit(proc).then((rc) => ({ kind: \"exit\" as const, rc })),\n delay(remaining).then(() => ({ kind: \"timeout\" as const })),\n ]);\n\n if (result.kind === \"exit\") {\n throw new Error(`worker exited before readiness (rc=${result.rc})`);\n }\n if (result.kind === \"timeout\") {\n proc.kill(\"SIGTERM\");\n throw new Error(`worker did not emit UNIX:<path> within ${startupTimeoutMs}ms`);\n }\n if (result.value.done) {\n // stdout closed without the announcement.\n const rc = await onceExit(proc);\n throw new Error(`worker exited before readiness (rc=${rc})`);\n }\n const line = result.value.value;\n if (line.startsWith(\"UNIX:\")) {\n if (line !== expectedPrefix) {\n proc.kill(\"SIGTERM\");\n throw new Error(\n `worker bound to unexpected path: ${JSON.stringify(line)} (expected ${JSON.stringify(expectedPrefix)})`,\n );\n }\n // Drain remaining stdout so a buffer-full doesn't deadlock the worker.\n reader.drainAndDiscard();\n return;\n }\n // Non-matching prefix — third-party noise; log at debug and keep reading.\n process.env.VGI_RPC_LAUNCHER_DEBUG &&\n process.stderr.write(`launcher: skipping pre-bind stdout line: ${JSON.stringify(line)}\\n`);\n }\n proc.kill(\"SIGTERM\");\n throw new Error(`worker did not emit UNIX:<path> within ${startupTimeoutMs}ms`);\n}\n\n// ---------------------------------------------------------------------------\n// Internal helpers\n// ---------------------------------------------------------------------------\n\ninterface LineReader {\n next(): Promise<{ done: boolean; value: string }>;\n drainAndDiscard(): void;\n}\n\n/** Newline-delimited line reader over a Node Readable stream. */\nfunction lineReader(stream: NodeJS.ReadableStream): LineReader {\n let buffer = \"\";\n let ended = false;\n const queued: string[] = [];\n const waiters: Array<(line: { done: boolean; value: string }) => void> = [];\n let discardMode = false;\n\n const flushWaiter = () => {\n if (waiters.length === 0) return;\n if (queued.length > 0) {\n const w = waiters.shift();\n w?.({ done: false, value: queued.shift() ?? \"\" });\n } else if (ended) {\n const w = waiters.shift();\n w?.({ done: true, value: \"\" });\n }\n };\n\n stream.setEncoding?.(\"utf8\");\n stream.on(\"data\", (chunk) => {\n if (discardMode) return;\n buffer += String(chunk);\n for (;;) {\n const nl = buffer.indexOf(\"\\n\");\n if (nl < 0) break;\n const line = buffer.slice(0, nl).replace(/\\r$/, \"\");\n buffer = buffer.slice(nl + 1);\n queued.push(line);\n }\n flushWaiter();\n });\n stream.on(\"end\", () => {\n ended = true;\n if (buffer.length > 0) {\n queued.push(buffer.replace(/\\r$/, \"\"));\n buffer = \"\";\n }\n flushWaiter();\n });\n stream.on(\"error\", () => {\n ended = true;\n flushWaiter();\n });\n\n return {\n next() {\n return new Promise((resolve) => {\n waiters.push(resolve);\n flushWaiter();\n });\n },\n drainAndDiscard() {\n discardMode = true;\n // Drop any queued lines and let the stream flow into the void.\n queued.length = 0;\n stream.resume?.();\n },\n };\n}\n\nfunction onceExit(proc: ChildProcessWithoutNullStreams): Promise<number | null> {\n return new Promise((resolve) => {\n proc.once(\"exit\", (code) => resolve(code));\n });\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((r) => setTimeout(r, Math.max(0, ms)));\n}\n",
|
|
57
58
|
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Cross-process file lock with PID-stamp fallback.\n *\n * Python's launcher uses `filelock` (POSIX `flock(2)` / Windows\n * `LockFileEx`), which auto-releases on process death. Node has no\n * equivalent in its standard library, so we approximate it with a\n * persistent PID-stamp protocol:\n *\n * - File exists, empty content → unlocked (slot marker)\n * - File exists, content `<PID>`, PID alive → held by that PID\n * - File exists, content `<PID>`, PID dead → stale, treat as unlocked\n * - File doesn't exist → unlocked (slot never used)\n *\n * The lockfile **persists** after release (we truncate to zero bytes\n * rather than unlinking) so cross-language scanners — `statusRows` /\n * `gcStateDir` here and Python's `gc_state_dir` — can use lockfile\n * presence as a \"this hash slot has been used at some point\" marker\n * even when no launcher is currently coordinating.\n *\n * The acquire path has a small race window: between reading the stamp\n * and writing ours, another process can interleave. Mitigations:\n *\n * 1. After writing our PID we re-read and verify; on mismatch we\n * retry up to a small bound, then back off.\n * 2. The launcher's bind() step is itself a kernel mutex — two\n * workers racing past the lock will see exactly one bind()\n * succeed; the other fails fast with EADDRINUSE and the second\n * launcher's spawnWorker() surfaces the error.\n *\n * That's looser than `flock`-based mutual exclusion but adequate for\n * the launcher's use case: the protected critical section is short\n * (probe + spawn).\n */\n\nimport { closeSync, constants as FS, openSync, readSync, statSync, writeSync } from \"node:fs\";\n\n/** Result of a successful lock acquisition. */\nexport interface FileLockHandle {\n /** Path to the lockfile (informational). */\n readonly path: string;\n /** Release the lock — truncates the file to zero bytes; the file\n * itself persists as a slot marker. Idempotent. */\n release(): void;\n}\n\nconst POLL_MS = 50;\n/** Max retries for the post-write verify step. */\nconst VERIFY_RETRIES = 5;\n\nfunction pidAlive(pid: number): boolean {\n if (!Number.isInteger(pid) || pid <= 0) return false;\n try {\n process.kill(pid, 0);\n return true;\n } catch (err) {\n return (err as { code?: string })?.code === \"EPERM\";\n }\n}\n\nfunction readPid(path: string): number {\n try {\n const fd = openSync(path, FS.O_RDONLY);\n try {\n const buf = Buffer.alloc(64);\n const n = readSync(fd, buf, 0, buf.length, 0);\n const text = buf.subarray(0, n).toString(\"utf8\").trim();\n if (text === \"\") return 0;\n const parsed = Number(text);\n return Number.isInteger(parsed) ? parsed : 0;\n } finally {\n closeSync(fd);\n }\n } catch {\n return 0;\n }\n}\n\nfunction tryStampPid(path: string): boolean {\n // Open r/w, creating if missing. Truncate to zero, write our PID.\n // The natural race here is mitigated by the post-write verify in the\n // caller.\n const fd = openSync(path, FS.O_RDWR | FS.O_CREAT, 0o600);\n try {\n // Truncate via ftruncateSync — Node's fs has it but only on the fd.\n // Use a fresh write at offset 0 with the full string and re-stat to\n // confirm the file is our PID's worth of bytes.\n const stamp = Buffer.from(String(process.pid), \"utf8\");\n // Truncate by reopening with O_TRUNC would re-create; instead use ftruncateSync.\n // Node 18+ has `fs.ftruncateSync`.\n const { ftruncateSync } = require(\"node:fs\");\n ftruncateSync(fd, 0);\n let written = 0;\n while (written < stamp.length) {\n const n = writeSync(fd, stamp, written, stamp.length - written, 0 + written);\n if (n <= 0) throw new Error(`writeSync returned ${n}`);\n written += n;\n }\n // Sanity stat — confirm the file is our stamp's size (lossy check\n // for the basic interleave race).\n const st = statSync(path);\n if (st.size !== stamp.length) return false;\n return true;\n } finally {\n closeSync(fd);\n }\n}\n\nfunction clearStamp(path: string): void {\n try {\n const fd = openSync(path, FS.O_RDWR);\n try {\n const { ftruncateSync } = require(\"node:fs\");\n ftruncateSync(fd, 0);\n } finally {\n closeSync(fd);\n }\n } catch {\n // already gone\n }\n}\n\n/**\n * Try to acquire the lock once, non-blocking.\n *\n * Returns a release callback on success, or `null` when the lock is\n * held by another live process. Stale stamps (PID not alive) are\n * cleared and the call retries.\n */\nexport function tryAcquireLock(lockPath: string): FileLockHandle | null {\n for (let attempt = 0; attempt < VERIFY_RETRIES; attempt++) {\n const existingPid = readPid(lockPath);\n if (existingPid > 0 && pidAlive(existingPid)) {\n // Held by a live process (possibly even ourselves on a different\n // call site — match Python's filelock semantics: not reentrant).\n return null;\n }\n // Stale, empty, or missing — try to claim the slot.\n if (!tryStampPid(lockPath)) continue;\n const verifyPid = readPid(lockPath);\n if (verifyPid !== process.pid) {\n // Lost the race to a peer that wrote after our truncate.\n continue;\n }\n let released = false;\n return {\n path: lockPath,\n release() {\n if (released) return;\n released = true;\n clearStamp(lockPath);\n },\n };\n }\n return null;\n}\n\n/** Async version that polls until the lock is acquired or the timeout fires. */\nexport async function acquireLock(lockPath: string, timeoutMs: number): Promise<FileLockHandle> {\n const deadline = Date.now() + Math.max(0, timeoutMs);\n for (;;) {\n const handle = tryAcquireLock(lockPath);\n if (handle) return handle;\n if (Date.now() >= deadline) {\n throw new Error(`failed to acquire ${lockPath} within ${timeoutMs}ms`);\n }\n await new Promise((r) => setTimeout(r, POLL_MS));\n }\n}\n",
|
|
58
59
|
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * State directory + lock/sock/meta path layout for the AF_UNIX worker\n * launcher. Mirrors `vgi_rpc.launcher` so cross-language tooling\n * resolves to identical filesystem locations.\n */\n\nimport { existsSync, mkdirSync, readFileSync, statSync, unlinkSync, writeFileSync } from \"node:fs\";\nimport { tmpdir } from \"node:os\";\nimport * as path from \"node:path\";\n\nimport { computeHash } from \"./hash.js\";\n\n/** Filesystem layout for one worker tuple: `<state_dir>/<hash>.{lock,sock,meta}`. */\nexport interface SocketPaths {\n /** Advisory lockfile path (`<hash>.lock`) guarding launch + liveness. */\n lockPath: string;\n /** AF_UNIX socket path (`<hash>.sock`) the worker binds. */\n sockPath: string;\n /** Launch-metadata JSON path (`<hash>.meta`) read by `--status`. */\n metaPath: string;\n}\n\n/** Derive the lock/sock/meta path triple for a worker `hashId` under `stateDir`. */\nexport function socketPaths(stateDir: string, hashId: string): SocketPaths {\n return {\n lockPath: path.join(stateDir, `${hashId}.lock`),\n sockPath: path.join(stateDir, `${hashId}.sock`),\n metaPath: path.join(stateDir, `${hashId}.meta`),\n };\n}\n\n/**\n * Resolve the per-user state directory used for lockfiles + sockets.\n *\n * - Linux: `$XDG_RUNTIME_DIR/vgi-rpc/` when set (systemd-managed,\n * auto-cleaned on logout); otherwise `$TMPDIR/vgi-rpc-$UID/`.\n * - macOS / BSD: `$TMPDIR/vgi-rpc-$UID/`.\n * - Windows: `$TMP/vgi-rpc/`.\n *\n * The directory is created mode 0700 if missing. On POSIX, we refuse to\n * operate on a directory not owned by the current user — defends against\n * a hijacked `/tmp/vgi-rpc-$UID` left by an attacker.\n */\nexport function defaultStateDir(): string {\n let base: string;\n if (process.platform === \"win32\") {\n base = path.join(tmpdir(), \"vgi-rpc\");\n } else {\n const xdg = process.env.XDG_RUNTIME_DIR;\n if (xdg) {\n base = path.join(xdg, \"vgi-rpc\");\n } else {\n const uid = typeof process.geteuid === \"function\" ? process.geteuid() : 0;\n base = path.join(tmpdir(), `vgi-rpc-${uid}`);\n }\n }\n mkdirSync(base, { recursive: true, mode: 0o700 });\n if (process.platform !== \"win32\" && typeof process.geteuid === \"function\") {\n // Tighten mode every call (cheap + idempotent) and refuse a hijacked dir.\n try {\n // chmodSync is in node:fs; using statSync is enough to read the owner.\n const st = statSync(base);\n if (st.uid !== process.geteuid()) {\n throw new Error(`state directory ${base} is not owned by current user`);\n }\n } catch (err) {\n if ((err as { code?: string })?.code === \"ENOENT\") {\n // Race with the mkdirSync above — leave it to the next caller.\n } else {\n throw err;\n }\n }\n }\n return base;\n}\n\n// ---------------------------------------------------------------------------\n// Meta file\n// ---------------------------------------------------------------------------\n\n/** Best-effort write of human-readable launch metadata. Used by `--status`. */\nexport function writeMeta(metaPath: string, workerArgv: readonly string[], cwd: string, sockPath: string): void {\n const payload = {\n cmd: [...workerArgv],\n cwd,\n socket: sockPath,\n started_at: Date.now() / 1000,\n launcher_pid: process.pid,\n };\n try {\n writeFileSync(metaPath, JSON.stringify(payload, null, 2), { encoding: \"utf8\", mode: 0o600 });\n } catch {\n // observability is best-effort\n }\n}\n\n// ---------------------------------------------------------------------------\n// Status / GC\n// ---------------------------------------------------------------------------\n\n/** One row of `--status` output describing a launched worker tuple. */\nexport interface StatusRow {\n /** Canonical hash identifying the worker tuple (the `<hash>` filename stem). */\n hashId: string;\n /** Worker argv recorded at launch, or `[]` when the meta file is missing. */\n cmd: string[];\n /** Working directory recorded at launch, or `\"\"` when unknown. */\n cwd: string;\n /** AF_UNIX socket path the worker binds. */\n socket: string;\n /** Unix epoch seconds the worker was launched, or `null` when unknown. */\n startedAt: number | null;\n /** Whether a probe connection to {@link StatusRow.socket} currently succeeds. */\n alive: boolean;\n}\n\n/** Outcome of a {@link gcStateDir} sweep. */\nexport interface GcResult {\n /** Hash IDs of stale entries that were removed. */\n cleaned: string[];\n /** Hash IDs whose lockfile is currently held (a launch is in flight or the\n * worker is alive). */\n skippedInUse: string[];\n}\n\n/** Probe whether anyone is currently accepting on `sockPath`. */\nexport async function probeSocket(sockPath: string, timeoutMs = 2000): Promise<boolean> {\n if (!existsSync(sockPath)) return false;\n // Lazy require so workerd / browser bundles that never call probeSocket\n // don't trip on `node:net`.\n const net = await import(\"node:net\");\n return new Promise<boolean>((resolve) => {\n const sock = net.createConnection({ path: sockPath });\n const timer = setTimeout(() => {\n sock.destroy();\n resolve(false);\n }, timeoutMs);\n sock.once(\"connect\", () => {\n clearTimeout(timer);\n sock.end();\n resolve(true);\n });\n sock.once(\"error\", () => {\n clearTimeout(timer);\n resolve(false);\n });\n });\n}\n\nfunction tryReadMeta(metaPath: string): { cmd: string[]; cwd: string; startedAt: number | null } {\n try {\n const raw = readFileSync(metaPath, \"utf8\");\n const meta = JSON.parse(raw);\n return {\n cmd: Array.isArray(meta.cmd) ? meta.cmd.map(String) : [],\n cwd: typeof meta.cwd === \"string\" ? meta.cwd : \"\",\n startedAt: typeof meta.started_at === \"number\" ? meta.started_at : null,\n };\n } catch {\n return { cmd: [], cwd: \"\", startedAt: null };\n }\n}\n\n/** List one row per `<hash>.lock` in `stateDir`. Read-only; takes no locks. */\nexport async function statusRows(stateDir: string): Promise<StatusRow[]> {\n const { readdirSync } = await import(\"node:fs\");\n const rows: StatusRow[] = [];\n let entries: string[];\n try {\n entries = readdirSync(stateDir);\n } catch {\n return rows;\n }\n for (const name of entries.sort()) {\n if (!name.endsWith(\".lock\")) continue;\n const hashId = name.slice(0, -5);\n const { sockPath, metaPath } = socketPaths(stateDir, hashId);\n const meta = tryReadMeta(metaPath);\n rows.push({\n hashId,\n cmd: meta.cmd,\n cwd: meta.cwd,\n socket: sockPath,\n startedAt: meta.startedAt,\n alive: await probeSocket(sockPath),\n });\n }\n return rows;\n}\n\n/**\n * Remove `<hash>.lock`/`.sock`/`.meta` triples whose worker is no longer\n * accepting connections.\n *\n * @param tryAcquire Function provided by the lock module so we don't pull\n * the lock implementation into a circular import. Returns a release\n * callback when the lock can be acquired non-blocking, or `null` when\n * it's already held (the worker is alive or another launch is in flight).\n */\nexport async function gcStateDir(\n stateDir: string,\n tryAcquire: (lockPath: string) => Promise<(() => void) | null>,\n options?: { limit?: number; excludeHash?: string },\n): Promise<GcResult> {\n const { readdirSync } = await import(\"node:fs\");\n const cleaned: string[] = [];\n const skipped: string[] = [];\n const limit = options?.limit ?? null;\n const excludeHash = options?.excludeHash ?? null;\n\n let entries: string[];\n try {\n entries = readdirSync(stateDir);\n } catch {\n return { cleaned, skippedInUse: skipped };\n }\n\n let seen = 0;\n for (const name of entries.sort()) {\n if (!name.endsWith(\".lock\")) continue;\n if (limit !== null && seen >= limit) break;\n seen += 1;\n const hashId = name.slice(0, -5);\n if (excludeHash !== null && hashId === excludeHash) continue;\n\n const { lockPath, sockPath, metaPath } = socketPaths(stateDir, hashId);\n const release = await tryAcquire(lockPath);\n if (release === null) {\n skipped.push(hashId);\n continue;\n }\n try {\n if (await probeSocket(sockPath)) {\n // Worker is alive but didn't hold its own lock — odd, but leave it.\n continue;\n }\n for (const p of [sockPath, metaPath, lockPath]) {\n try {\n unlinkSync(p);\n } catch {\n // best-effort\n }\n }\n cleaned.push(hashId);\n } finally {\n release();\n }\n }\n return { cleaned, skippedInUse: skipped };\n}\n\n/** Re-export for callers that want canonical hashing without going through the\n * launch entry point. */\nexport { computeHash };\n",
|
|
60
|
+
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * AF_INET (raw TCP) worker runner for vgi-rpc TypeScript.\n *\n * Bind a TCP socket on `(host, port)`, accept connections, and dispatch\n * each via the same per-connection IPC-stream loop as {@link serveUnix}.\n * This is the network analog of the AF_UNIX runner — identical raw\n * Arrow-IPC framing, only the listening socket differs. Implements the\n * cross-language launcher contract:\n *\n * - Accept `[HOST:]PORT` (host defaults to `127.0.0.1`, port `0` lets the\n * OS pick a free port) and `--idle-timeout SEC`.\n * - Emit `TCP:<host>:<port>\\n` to stdout once bind+listen succeed, where\n * `<port>` is the *actual* bound port (resolved when `port=0`).\n * - Self-terminate after `idleTimeout` seconds with zero connected\n * clients; the timer starts ticking only after a `startupGrace` window\n * so a slow first caller doesn't see the server vanish.\n *\n * SECURITY: raw TCP carries **no authentication or TLS** — it is the bare\n * framing protocol on a socket. The default host is loopback-only\n * (`127.0.0.1`). Binding a routable address (e.g. `0.0.0.0`) exposes the\n * unauthenticated protocol on the network and must only be done on a\n * trusted network; use the HTTP transport otherwise.\n */\n\nimport { createServer, type Server, type Socket } from \"node:net\";\nimport { schema as makeSchema, serializeBatch } from \"../arrow/index.js\";\nimport { DESCRIBE_METHOD_NAME } from \"../constants.js\";\nimport { buildDescribeBatch } from \"../dispatch/describe.js\";\nimport { dispatchStream } from \"../dispatch/stream.js\";\nimport { dispatchUnary } from \"../dispatch/unary.js\";\nimport { RpcError, VersionError } from \"../errors.js\";\nimport type { ExternalLocationConfig } from \"../external.js\";\nimport type { Protocol } from \"../protocol.js\";\nimport {\n type CallStatistics,\n type DispatchHook,\n type DispatchInfo,\n MethodType,\n type ServeStartHook,\n TransportKind,\n} from \"../types.js\";\nimport { IpcStreamReader } from \"../wire/reader.js\";\nimport { applyDefaults, parseRequest } from \"../wire/request.js\";\nimport { buildErrorBatch } from \"../wire/response.js\";\nimport { IpcStreamWriter } from \"../wire/writer.js\";\n\nconst EMPTY_SCHEMA = makeSchema([]);\n\n/** Configuration for {@link serveTcp}. */\nexport interface ServeTcpOptions {\n /** Interface to bind. Defaults to `127.0.0.1` (loopback only). Binding a\n * routable address exposes the unauthenticated framing on the network. */\n host?: string;\n /** TCP port to bind. Defaults to `0`, which lets the OS pick a free port\n * (reported via the `TCP:<host>:<port>` line and {@link onBound}). */\n port?: number;\n /** Self-terminate after this many seconds with zero connected clients.\n * Default: 300. `0` disables the timer (server runs until killed). */\n idleTimeout?: number;\n /** Grace period after `listen()` succeeds before the idle timer starts\n * ticking. Default: 5 — gives the first launcher caller a chance to\n * connect after the `TCP:<host>:<port>` announcement. */\n startupGraceSeconds?: number;\n /** Optional logical-service / protocol-contract version label. */\n protocolVersion?: string;\n /** Custom server identifier. */\n serverId?: string;\n /** Enable __describe__ method. Default: true. */\n enableDescribe?: boolean;\n /** Optional dispatch hook for observability. */\n dispatchHook?: DispatchHook;\n /** Optional external-storage config for large-batch externalisation. */\n externalLocation?: ExternalLocationConfig;\n /** Lifecycle hook fired once before the first dispatched request. */\n onServeStart?: ServeStartHook;\n /** Maximum listen backlog. Default: 128. */\n backlog?: number;\n /** Called *after* `listen()` returns successfully but *before*\n * `TCP:<host>:<port>` is printed. Invoked with the bound host and the\n * *actual* bound port (resolved when `port=0`). */\n onBound?: (host: string, port: number) => void;\n /** Override the stream used for the `TCP:<host>:<port>` line. Defaults to\n * `process.stdout`. */\n announcementSink?: NodeJS.WritableStream;\n}\n\n/** Handle returned by {@link serveTcp} for callers that want to stop the server. */\nexport interface ServeTcpHandle {\n /** Host the server is listening on. */\n readonly host: string;\n /** Actual bound TCP port (resolved from `0` when the OS auto-selects). */\n readonly port: number;\n /** Shut down the listener. */\n stop(): Promise<void>;\n /** Promise that resolves when the server has stopped (idle timeout, stop(),\n * or a fatal error). Mirrors Python's blocking `serve()` return. */\n readonly done: Promise<void>;\n}\n\n/**\n * Bind a TCP socket and serve `protocol` over per-connection IPC streams.\n *\n * The network analog of {@link serveUnix}: same raw Arrow-IPC framing, only\n * the listening socket differs. Nagle's algorithm is disabled\n * (`setNoDelay(true)`) on each connection so the lockstep request/response\n * framing is not delayed waiting to coalesce writes.\n *\n * SECURITY: no authentication or TLS — trusted networks only; the default\n * host is loopback (`127.0.0.1`). Use the HTTP transport for untrusted\n * networks.\n */\nexport async function serveTcp(protocol: Protocol, options: ServeTcpOptions = {}): Promise<ServeTcpHandle> {\n const host = options.host ?? \"127.0.0.1\";\n const requestedPort = options.port ?? 0;\n const idleTimeoutS = options.idleTimeout ?? 300;\n const startupGraceS = options.startupGraceSeconds ?? 5;\n const protocolVersion = options.protocolVersion ?? \"\";\n const serverId = options.serverId ?? crypto.randomUUID().replace(/-/g, \"\").slice(0, 12);\n const enableDescribe = options.enableDescribe ?? true;\n const dispatchHook = options.dispatchHook ?? null;\n const externalConfig = options.externalLocation;\n const onServeStart = options.onServeStart ?? null;\n const backlog = options.backlog ?? 128;\n const announcementSink = options.announcementSink ?? process.stdout;\n\n // Cache for __describe__ — Web-Crypto digest is async, so memoise.\n let describePromise: Promise<{ batch: import(\"../arrow/index.js\").VgiBatch; protocolHash: string }> | null = null;\n function describeInfo(): Promise<{ batch: import(\"../arrow/index.js\").VgiBatch; protocolHash: string }> {\n if (!describePromise) {\n describePromise = buildDescribeBatch(protocol.name, protocol.getMethods(), serverId).then(\n ({ batch, metadata }) => ({\n batch,\n protocolHash: metadata.get(\"vgi_rpc.protocol_hash\") ?? \"\",\n }),\n );\n }\n return describePromise;\n }\n\n // Lifecycle: only commit `serveStartFired` after the hook returns successfully.\n let serveStartFired = false;\n async function notifyTransport(): Promise<void> {\n if (serveStartFired) return;\n if (onServeStart) {\n await onServeStart(TransportKind.TCP);\n }\n serveStartFired = true;\n }\n\n const server: Server = createServer({ allowHalfOpen: false });\n\n let activeConnections = 0;\n let idleTimer: ReturnType<typeof setTimeout> | null = null;\n let resolveDone: () => void = () => {};\n let rejectDone: (err: unknown) => void = () => {};\n const done = new Promise<void>((resolve, reject) => {\n resolveDone = resolve;\n rejectDone = reject;\n });\n let stopped = false;\n\n function armIdleTimer(): void {\n if (idleTimeoutS <= 0) return;\n if (idleTimer) clearTimeout(idleTimer);\n idleTimer = setTimeout(() => {\n if (activeConnections === 0 && !stopped) {\n void shutdown();\n }\n }, idleTimeoutS * 1000);\n }\n\n function disarmIdleTimer(): void {\n if (idleTimer) {\n clearTimeout(idleTimer);\n idleTimer = null;\n }\n }\n\n async function shutdown(): Promise<void> {\n if (stopped) return;\n stopped = true;\n disarmIdleTimer();\n await new Promise<void>((resolve) => {\n server.close(() => resolve());\n });\n resolveDone();\n }\n\n server.on(\"connection\", (socket) => {\n // Disable Nagle so the lockstep framing is not delayed coalescing writes.\n try {\n socket.setNoDelay(true);\n } catch {\n // best-effort\n }\n activeConnections += 1;\n disarmIdleTimer();\n handleConnection(socket)\n .catch((err) => {\n // Per-connection errors must not take down the server — log to stderr\n // and let the next connection proceed.\n process.stderr.write(`vgi-rpc/tcp: connection failed: ${(err as Error)?.message ?? err}\\n`);\n })\n .finally(() => {\n activeConnections -= 1;\n socket.destroy();\n if (activeConnections === 0 && !stopped) {\n armIdleTimer();\n }\n });\n });\n\n server.on(\"error\", (err) => {\n if (stopped) return;\n rejectDone(err);\n });\n\n async function handleConnection(socket: Socket): Promise<void> {\n // The reader takes any Node Readable; sockets are duplex Readables.\n const reader = await IpcStreamReader.create(socket);\n // Build the writer over the Socket itself, not its raw fd, so we go\n // through `socket.write` + `'drain'` and yield the event loop while the\n // kernel send buffer drains (see serve-unix.ts for the rationale).\n const writer = new IpcStreamWriter(socket);\n\n try {\n // Fire on_serve_start lazily — first request retries on hook failure.\n await notifyTransport();\n\n while (true) {\n try {\n await serveOnce(reader, writer);\n } catch (e: unknown) {\n const err = e as { code?: string; message?: string };\n // EOF/closed client → end this connection cleanly.\n if (\n err?.message?.includes(\"closed\") ||\n err?.message?.includes(\"Expected Schema Message\") ||\n err?.message?.includes(\"null or length 0\") ||\n err?.message?.includes(\"EOF\") ||\n err?.code === \"EPIPE\" ||\n err?.code === \"ERR_STREAM_PREMATURE_CLOSE\" ||\n err?.code === \"ERR_STREAM_DESTROYED\"\n ) {\n return;\n }\n throw e;\n }\n }\n } finally {\n try {\n await reader.cancel();\n } catch {\n // already closed\n }\n }\n }\n\n async function serveOnce(reader: IpcStreamReader, writer: IpcStreamWriter): Promise<void> {\n const stream = await reader.readStream();\n if (!stream) {\n throw new Error(\"EOF\");\n }\n const { schema, batches } = stream;\n if (batches.length === 0) {\n const err = new RpcError(\"ProtocolError\", \"Request stream contains no batches\", \"\");\n const errBatch = buildErrorBatch(EMPTY_SCHEMA, err, serverId, null);\n await writer.writeStream(EMPTY_SCHEMA, [errBatch]);\n return;\n }\n const batch = batches[0];\n let methodName: string;\n let params: Record<string, unknown>;\n let requestId: string | null;\n try {\n const parsed = parseRequest(schema, batch);\n methodName = parsed.methodName;\n params = parsed.params;\n requestId = parsed.requestId;\n } catch (e: unknown) {\n const errBatch = buildErrorBatch(EMPTY_SCHEMA, e as Error, serverId, null);\n await writer.writeStream(EMPTY_SCHEMA, [errBatch]);\n if (e instanceof VersionError || e instanceof RpcError) return;\n throw e;\n }\n\n if (methodName === DESCRIBE_METHOD_NAME && enableDescribe) {\n const { batch: descBatch } = await describeInfo();\n await writer.writeStream(descBatch.schema, [descBatch]);\n return;\n }\n\n const methods = protocol.getMethods();\n const method = methods.get(methodName);\n if (!method) {\n const available = [...methods.keys()].sort();\n const err = new Error(`Unknown method: '${methodName}'. Available methods: [${available.join(\", \")}]`);\n const errBatch = buildErrorBatch(EMPTY_SCHEMA, err, serverId, requestId);\n await writer.writeStream(EMPTY_SCHEMA, [errBatch]);\n return;\n }\n\n const methodType = method.type === MethodType.UNARY ? \"unary\" : \"stream\";\n let requestData: Uint8Array | undefined;\n try {\n requestData = serializeBatch(batch);\n } catch {\n // best-effort\n }\n const { protocolHash } = await describeInfo();\n const info: DispatchInfo = {\n method: methodName,\n methodType,\n serverId,\n requestId,\n protocol: protocol.name,\n protocolHash,\n protocolVersion,\n kind: TransportKind.TCP,\n principal: \"\",\n authDomain: \"\",\n authenticated: false,\n remoteAddr: \"\",\n requestData,\n };\n const stats: CallStatistics = {\n inputBatches: 0,\n outputBatches: 0,\n inputRows: 0,\n outputRows: 0,\n inputBytes: 0,\n outputBytes: 0,\n };\n\n const token = dispatchHook?.onDispatchStart(info);\n let dispatchError: Error | undefined;\n applyDefaults(params, method.defaults);\n try {\n if (method.type === MethodType.UNARY) {\n await dispatchUnary(method, params, writer, serverId, requestId, externalConfig, TransportKind.TCP);\n } else {\n await dispatchStream(method, params, writer, reader, serverId, requestId, externalConfig, TransportKind.TCP);\n }\n } catch (e) {\n dispatchError = e instanceof Error ? e : new Error(String(e));\n throw e;\n } finally {\n dispatchHook?.onDispatchEnd(token, info, stats, dispatchError);\n }\n }\n\n // bind + listen\n await new Promise<void>((resolve, reject) => {\n server.listen({ host, port: requestedPort, backlog }, () => resolve());\n server.once(\"error\", (err) => reject(err));\n });\n\n const address = server.address();\n const boundPort = typeof address === \"object\" && address ? address.port : requestedPort;\n\n options.onBound?.(host, boundPort);\n // Cross-language launcher contract: announce on stdout, then write nothing\n // more to stdout for the rest of the process lifetime.\n announcementSink.write(`TCP:${host}:${boundPort}\\n`);\n\n // Start the idle timer with a startup grace window.\n if (idleTimeoutS > 0) {\n setTimeout(() => {\n if (activeConnections === 0 && !stopped) armIdleTimer();\n }, startupGraceS * 1000).unref?.();\n }\n\n return {\n host,\n port: boundPort,\n stop: shutdown,\n done,\n };\n}\n",
|
|
59
61
|
"// © Copyright 2025-2026, Query.Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * AF_UNIX worker runner for vgi-rpc TypeScript.\n *\n * Bind a deterministic Unix-domain socket, accept connections one at a\n * time (sequential listen, matching Python's `serve_unix`), and dispatch\n * each via the existing {@link VgiRpcServer.serveOne} loop. Implements\n * the cross-language launcher contract:\n *\n * - Accept `--unix PATH` and `--idle-timeout SEC` (parsed by callers).\n * - Emit `UNIX:<absolute-path>\\n` to stdout once bind+listen succeed.\n * - Self-terminate after `idleTimeout` seconds with zero connected\n * clients; the timer starts ticking only after a `startupGrace`\n * window so a slow first caller doesn't see the server vanish.\n */\n\nimport { existsSync, unlinkSync } from \"node:fs\";\nimport { createServer, type Server, type Socket } from \"node:net\";\nimport * as path from \"node:path\";\nimport { schema as makeSchema, serializeBatch } from \"../arrow/index.js\";\nimport { DESCRIBE_METHOD_NAME } from \"../constants.js\";\nimport { buildDescribeBatch } from \"../dispatch/describe.js\";\nimport { dispatchStream } from \"../dispatch/stream.js\";\nimport { dispatchUnary } from \"../dispatch/unary.js\";\nimport { RpcError, VersionError } from \"../errors.js\";\nimport type { ExternalLocationConfig } from \"../external.js\";\nimport type { Protocol } from \"../protocol.js\";\nimport {\n type CallStatistics,\n type DispatchHook,\n type DispatchInfo,\n MethodType,\n type ServeStartHook,\n TransportKind,\n} from \"../types.js\";\nimport { IpcStreamReader } from \"../wire/reader.js\";\nimport { applyDefaults, parseRequest } from \"../wire/request.js\";\nimport { buildErrorBatch } from \"../wire/response.js\";\nimport { IpcStreamWriter } from \"../wire/writer.js\";\n\nconst EMPTY_SCHEMA = makeSchema([]);\n\n/** Configuration for {@link serveUnix}. */\nexport interface ServeUnixOptions {\n /** Absolute path to the Unix socket file the worker should bind. */\n unixPath: string;\n /** Self-terminate after this many seconds with zero connected clients.\n * Default: 300. `0` disables the timer (server runs until killed). */\n idleTimeout?: number;\n /** Grace period after `listen()` succeeds before the idle timer starts\n * ticking. Default: 5 — gives the first launcher caller a chance to\n * connect after the `UNIX:<path>` announcement. */\n startupGraceSeconds?: number;\n /** Optional logical-service / protocol-contract version label. */\n protocolVersion?: string;\n /** Custom server identifier. */\n serverId?: string;\n /** Enable __describe__ method. Default: true. */\n enableDescribe?: boolean;\n /** Optional dispatch hook for observability. */\n dispatchHook?: DispatchHook;\n /** Optional external-storage config for large-batch externalisation. */\n externalLocation?: ExternalLocationConfig;\n /** Lifecycle hook fired once before the first dispatched request. */\n onServeStart?: ServeStartHook;\n /** Maximum sequential listen backlog. Mirrors Python's `serve_unix`\n * (`backlog=16`). Default: 16. */\n backlog?: number;\n /** Called *after* `listen()` returns successfully but *before*\n * `UNIX:<path>` is printed. The launcher uses this hook to write the\n * announcement only after we're sure the bind took. */\n onBound?: (sockPath: string) => void;\n /** Override the stream used for the `UNIX:<path>` line. Defaults to\n * `process.stdout`. */\n announcementSink?: NodeJS.WritableStream;\n}\n\n/** Handle returned by {@link serveUnix} for callers that want to stop the server. */\nexport interface ServeUnixHandle {\n /** Absolute path of the bound AF_UNIX socket the server is listening on. */\n readonly socketPath: string;\n /** Shut down the listener and unlink the socket file. */\n stop(): Promise<void>;\n /** Promise that resolves when the server has stopped (idle timeout, stop(),\n * or a fatal error). Mirrors Python's blocking `serve()` return. */\n readonly done: Promise<void>;\n}\n\n/**\n * Bind an AF_UNIX socket and serve `protocol` over per-connection IPC streams.\n *\n * Sequential listen — one client at a time, just like Python's `serve_unix`.\n * Each connection gets its own dispatch loop and shares the protocol.\n */\nexport async function serveUnix(protocol: Protocol, options: ServeUnixOptions): Promise<ServeUnixHandle> {\n const sockPath = path.resolve(options.unixPath);\n const idleTimeoutS = options.idleTimeout ?? 300;\n const startupGraceS = options.startupGraceSeconds ?? 5;\n const protocolVersion = options.protocolVersion ?? \"\";\n const serverId = options.serverId ?? crypto.randomUUID().replace(/-/g, \"\").slice(0, 12);\n const enableDescribe = options.enableDescribe ?? true;\n const dispatchHook = options.dispatchHook ?? null;\n const externalConfig = options.externalLocation;\n const onServeStart = options.onServeStart ?? null;\n const backlog = options.backlog ?? 16;\n const announcementSink = options.announcementSink ?? process.stdout;\n\n // Defensive probe-then-bind: an existing live worker on this path means a\n // peer launcher already won the race. Refuse to bind so we don't take\n // its connections. (A stale path with no listener was unlinked by the\n // launcher before spawning us, but a leftover from a co-launcher right\n // now is possible.)\n if (existsSync(sockPath)) {\n try {\n // Best-effort cleanup; bind below will surface any real conflict.\n unlinkSync(sockPath);\n } catch {\n // ignore — let listen() fail with EADDRINUSE.\n }\n }\n\n // Cache for __describe__ — Web-Crypto digest is async, so memoise.\n let describePromise: Promise<{ batch: import(\"../arrow/index.js\").VgiBatch; protocolHash: string }> | null = null;\n function describeInfo(): Promise<{ batch: import(\"../arrow/index.js\").VgiBatch; protocolHash: string }> {\n if (!describePromise) {\n describePromise = buildDescribeBatch(protocol.name, protocol.getMethods(), serverId).then(\n ({ batch, metadata }) => ({\n batch,\n protocolHash: metadata.get(\"vgi_rpc.protocol_hash\") ?? \"\",\n }),\n );\n }\n return describePromise;\n }\n\n // Lifecycle: only commit `serveStartFired` after the hook returns successfully.\n let serveStartFired = false;\n async function notifyTransport(): Promise<void> {\n if (serveStartFired) return;\n if (onServeStart) {\n await onServeStart(TransportKind.UNIX);\n }\n serveStartFired = true;\n }\n\n const server: Server = createServer({ allowHalfOpen: false });\n\n let activeConnections = 0;\n let idleTimer: ReturnType<typeof setTimeout> | null = null;\n let resolveDone: () => void = () => {};\n let rejectDone: (err: unknown) => void = () => {};\n const done = new Promise<void>((resolve, reject) => {\n resolveDone = resolve;\n rejectDone = reject;\n });\n let stopped = false;\n\n function armIdleTimer(): void {\n if (idleTimeoutS <= 0) return;\n if (idleTimer) clearTimeout(idleTimer);\n idleTimer = setTimeout(() => {\n if (activeConnections === 0 && !stopped) {\n void shutdown();\n }\n }, idleTimeoutS * 1000);\n }\n\n function disarmIdleTimer(): void {\n if (idleTimer) {\n clearTimeout(idleTimer);\n idleTimer = null;\n }\n }\n\n async function shutdown(): Promise<void> {\n if (stopped) return;\n stopped = true;\n disarmIdleTimer();\n await new Promise<void>((resolve) => {\n server.close(() => resolve());\n });\n try {\n unlinkSync(sockPath);\n } catch {\n // already gone\n }\n resolveDone();\n }\n\n server.on(\"connection\", (socket) => {\n activeConnections += 1;\n disarmIdleTimer();\n handleConnection(socket)\n .catch((err) => {\n // Per-connection errors must not take down the server — log to stderr\n // and let the next connection proceed.\n process.stderr.write(`vgi-rpc/unix: connection failed: ${(err as Error)?.message ?? err}\\n`);\n })\n .finally(() => {\n activeConnections -= 1;\n socket.destroy();\n if (activeConnections === 0 && !stopped) {\n armIdleTimer();\n }\n });\n });\n\n server.on(\"error\", (err) => {\n if (stopped) return;\n rejectDone(err);\n });\n\n async function handleConnection(socket: Socket): Promise<void> {\n // The reader takes any Node Readable; sockets are duplex Readables.\n const reader = await IpcStreamReader.create(socket);\n // Build the writer over the Socket itself, not its raw fd. AF_UNIX\n // sockets in Node are non-blocking; a fd-based writer would do\n // `fs.writeSync` and busy-wait on EAGAIN whenever the ~8 KB kernel send\n // buffer fills (trivial for any Arrow batch of meaningful size). That\n // synchronous wait freezes the shared event loop and starves every\n // *other* connection's handler — observed as 30 s `catalog_attach`\n // timeouts from co-running unittest processes. Going through\n // `socket.write` + `'drain'` lets the JS thread yield while the kernel\n // drains the buffer.\n const writer = new IpcStreamWriter(socket);\n\n try {\n // Fire on_serve_start lazily — first request retries on hook failure.\n await notifyTransport();\n\n while (true) {\n try {\n await serveOnce(reader, writer);\n } catch (e: unknown) {\n const err = e as { code?: string; message?: string };\n // EOF/closed client → end this connection cleanly.\n if (\n err?.message?.includes(\"closed\") ||\n err?.message?.includes(\"Expected Schema Message\") ||\n err?.message?.includes(\"null or length 0\") ||\n err?.message?.includes(\"EOF\") ||\n err?.code === \"EPIPE\" ||\n err?.code === \"ERR_STREAM_PREMATURE_CLOSE\" ||\n err?.code === \"ERR_STREAM_DESTROYED\"\n ) {\n return;\n }\n throw e;\n }\n }\n } finally {\n try {\n await reader.cancel();\n } catch {\n // already closed\n }\n }\n }\n\n async function serveOnce(reader: IpcStreamReader, writer: IpcStreamWriter): Promise<void> {\n const stream = await reader.readStream();\n if (!stream) {\n throw new Error(\"EOF\");\n }\n const { schema, batches } = stream;\n if (batches.length === 0) {\n const err = new RpcError(\"ProtocolError\", \"Request stream contains no batches\", \"\");\n const errBatch = buildErrorBatch(EMPTY_SCHEMA, err, serverId, null);\n await writer.writeStream(EMPTY_SCHEMA, [errBatch]);\n return;\n }\n const batch = batches[0];\n let methodName: string;\n let params: Record<string, unknown>;\n let requestId: string | null;\n try {\n const parsed = parseRequest(schema, batch);\n methodName = parsed.methodName;\n params = parsed.params;\n requestId = parsed.requestId;\n } catch (e: unknown) {\n const errBatch = buildErrorBatch(EMPTY_SCHEMA, e as Error, serverId, null);\n await writer.writeStream(EMPTY_SCHEMA, [errBatch]);\n if (e instanceof VersionError || e instanceof RpcError) return;\n throw e;\n }\n\n if (methodName === DESCRIBE_METHOD_NAME && enableDescribe) {\n const { batch: descBatch } = await describeInfo();\n await writer.writeStream(descBatch.schema, [descBatch]);\n return;\n }\n\n const methods = protocol.getMethods();\n const method = methods.get(methodName);\n if (!method) {\n const available = [...methods.keys()].sort();\n const err = new Error(`Unknown method: '${methodName}'. Available methods: [${available.join(\", \")}]`);\n const errBatch = buildErrorBatch(EMPTY_SCHEMA, err, serverId, requestId);\n await writer.writeStream(EMPTY_SCHEMA, [errBatch]);\n return;\n }\n\n const methodType = method.type === MethodType.UNARY ? \"unary\" : \"stream\";\n let requestData: Uint8Array | undefined;\n try {\n requestData = serializeBatch(batch);\n } catch {\n // best-effort\n }\n const { protocolHash } = await describeInfo();\n const info: DispatchInfo = {\n method: methodName,\n methodType,\n serverId,\n requestId,\n protocol: protocol.name,\n protocolHash,\n protocolVersion,\n kind: TransportKind.UNIX,\n principal: \"\",\n authDomain: \"\",\n authenticated: false,\n remoteAddr: \"\",\n requestData,\n };\n const stats: CallStatistics = {\n inputBatches: 0,\n outputBatches: 0,\n inputRows: 0,\n outputRows: 0,\n inputBytes: 0,\n outputBytes: 0,\n };\n\n const token = dispatchHook?.onDispatchStart(info);\n let dispatchError: Error | undefined;\n applyDefaults(params, method.defaults);\n try {\n if (method.type === MethodType.UNARY) {\n await dispatchUnary(method, params, writer, serverId, requestId, externalConfig, TransportKind.UNIX);\n } else {\n await dispatchStream(method, params, writer, reader, serverId, requestId, externalConfig, TransportKind.UNIX);\n }\n } catch (e) {\n dispatchError = e instanceof Error ? e : new Error(String(e));\n throw e;\n } finally {\n dispatchHook?.onDispatchEnd(token, info, stats, dispatchError);\n }\n }\n\n // bind + listen\n await new Promise<void>((resolve, reject) => {\n server.listen({ path: sockPath, backlog }, () => resolve());\n server.once(\"error\", (err) => reject(err));\n });\n\n // Set a tight mode on the bound socket so peers from other UIDs can't\n // even initiate a connection.\n try {\n const { chmodSync } = await import(\"node:fs\");\n chmodSync(sockPath, 0o600);\n } catch {\n // best-effort — operator-managed dirs may already be 0700\n }\n\n options.onBound?.(sockPath);\n // Cross-language launcher contract: announce on stdout.\n announcementSink.write(`UNIX:${sockPath}\\n`);\n\n // Start the idle timer with a startup grace window.\n if (idleTimeoutS > 0) {\n setTimeout(() => {\n if (activeConnections === 0 && !stopped) armIdleTimer();\n }, startupGraceS * 1000).unref?.();\n }\n\n return {\n socketPath: sockPath,\n stop: shutdown,\n done,\n };\n}\n"
|
|
60
62
|
],
|
|
61
|
-
"mappings": "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KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,M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",
|
|
62
|
-
"debugId": "
|
|
63
|
+
"mappings": "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AC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAA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",
|
|
64
|
+
"debugId": "EB2D2F8879345A8964756E2164756E21",
|
|
63
65
|
"names": []
|
|
64
66
|
}
|